JeVois  1.9
JeVois Smart Embedded Machine Vision Toolkit
Share this page:
Connecting to JeVois using serial-over-USB: Linux host

Finding the serial-over-USB device on Linux host

On Linux, first look for the port that was created when you plugged in your JeVois smart camera. Most likely it will be /dev/ttyACM0 unless you already have some other modem device connected to your host computer. To find out, inspect messages displayed when you type dmesg in a Linux terminal after you have connected your JeVois smart camera. Allow at least 10 seconds for the smart camera to boot up and to be detected by your host computer. The output of the dmesg command should contain some messages about detection of your JeVois smart camera, both its video component and its serial port component:

[...]
[4768736.704777] usb 1-1.3: new high-speed USB device number 13 using xhci_hcd
[4768736.809464] usb 1-1.3: New USB device found, idVendor=1d6b, idProduct=0102
[4768736.809470] usb 1-1.3: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[4768736.809473] usb 1-1.3: Product: JeVois-A33 Smart Camera
[4768736.809476] usb 1-1.3: Manufacturer: JeVois Inc
[4768736.847915] uvcvideo: Found UVC 1.00 device JeVois-A33 Smart Camera (1d6b:0102)
[4768736.849892] input: JeVois-A33 Smart Camera as /devices/pci0000:00/0000:00:1c.6/0000:09:00.0/usb1/1-1/1-1.3/1-1.3:1.0/input/input29
[4768736.851499] cdc_acm 1-1.3:1.2: ttyACM0: USB ACM device

In the above example, the JeVois smart camera was detected as a UVC (USB Video Class) device and a corresponding video device entry was created in /devices/pci... which typically would then also be aliased to /dev/video0 for easier access. In addition, the serial-over-USB port of the JeVois camera was detected as a CDC-ACM serial port, and was assigned device name ttyACM0 in this example.

To connect to your JeVois smart camera using the serial-over-USB link, start a terminal program. Default configuration is 115200 8N1.

Permission issues

On Ubuntu, a program called ModemManager is installed and runs by default. It will try to connect to any new serial-over-USB device and to probe it by sending it modem configuration commands. JeVois will ignore these commands, but ModemManager will keep sending strings to JeVois for up to a minute after JeVois is connected. So, it is better to just get rid of ModemManager:

sudo apt purge modemmanager # to get rid of it entirely, you can always re-install it later if ever needed

On Linux, by default, you may not have permission to access the JeVois serial-over-USB port. You can fix this in two ways:

  • add your user to the dialout group, by issuing
      sudo usermod -aG dialout $USER
      groups $USER # check that you are now in the dialout group
    and reboot your machine for the settings to take effect.
  • or just change the access permissions of the port (but note that you will have to do this each time you plugin your JeVois camera):
      sudo chmod 777 /dev/ttyACM0

To test the connection, the best is to use JeVois Inventor graphical user interface

Using the screen command

sudo apt-get install screen       # if not already installed
sudo screen /dev/ttyACM0 115200
Note
The screen program does not (as far as we know) provide an option for command echo (to see what you are typing). Hence, as you type, you will not see what you type. This is normal.
To scroll up while using screen, type CTRL-A ESC and you can then use the arrow keys or mouse wheel to scroll up. Type RETURN twice when you are ready to go back to interactive mode.

Using the minicom software

You can also use minicom or other serial communication software. Minicom is nice because it allows you to enable local echo (so you can see what you type):

sudo apt-get install minicom       # if not already installed
sudo minicom -D /dev/ttyACM0

To enable local echo, type the following keystrokes: CTRL-A Z (for configuration menu), then E (local echo on/off). Note that even though minicom makes it look like you can corect typos, you still cannot; for example, typing helx then BACKSPACE and then p (to correct from helx to help) will transmit the message helx followed by a BACKSPACE character followed by p and this will still be an incorrect command for JeVois.

Beware of ModemManager or similar on Linux

Many Linux distributions, including Ubuntu, monitor the connection of modems, so that they can be detected in a plug-and-play manner. Because the JeVois serial-over-USB port looks to a host computer like a new modem (this is so that no driver is required), your host computer may try to send modem configuration commands to JeVois as you connect it.

JeVois will safely ignore these commands, but it may take a few minutes for your host computer to give up on trying to initialize JeVois as a modem that can dial out over telephone lines. While your host computer is trying to configure JeVois as a modem, the commands it sends will interfere with any commands you may type. To avoid this and to allow you to use the serial-over-USB port as soon as it is detected by your host, turn off the modem manager feature of your Linux host. For example, on Ubuntu:

sudo killall ModemManager

Using shortcut shell command jevois-cmd

JeVois v1.3

Under Linux, the jevois package provides the command jevois-cmd in /usr/bin of the host computer (source in ~/jevois/scripts), which can be executed directly in any terminal on the host computer (as opposed to being run in the JeVois command-line interface after opening some serial terminal to it). Use it as follows:

jevois-cmd help

Connects to JeVois using the serial-over-USB port, issues the command help to jevois, collects an displays the results returned by JeVois.

Any valid JeVois command-line command can be sent. For example:

jevois-cmd setpar cpumax 1200

should return

OK

and a subsequent

jevois-cmd info

should show the updated CPU frequency of 1200 MHz as follows:

INFO: JeVois 1.3.0
INFO: Linux version 3.4.39
INFO: CPU: 1200MHz, 28C, load: 0.98 0.53 0.22 1/59 86
INFO: MemTotal: 238452 kB, MemFree: 170188 kB
INFO: OUT: YUYV 640x300 @ 60fps CAM: YUYV 320x240 @ 60fps MOD: JeVois:DemoSaliency
OK
Note
If JeVois complains about errors but you know that your command is correct, maybe the Linux ModemManager is running on your host computer and is trying to configure JeVois as a modem, sending it all kinds of commands that JeVois is not interested in. See above.