USB Devices

USB

Permissions

By default, USB devices permissions may not be sufficient to allow any user to access the USB3 cameras. These permissions can be changed by using an udev rule file. There is a file example in Aravis sources. This file must be placed in /etc/udev/rules.d directory (The exact location may depend on the distribution you are using). This file only contains declarations for a couple of vendors. If you want to add an entry with the vendor of your camera, the output of lsusb command will give you the vendor id, which is the first 4 digits of the ID field.

Alternatively, you can give read/write access to all USB3Vision devices using the following rule:

# Read write access for all USB3Vision devices
SUBSYSTEM=="usb", ATTRS{bDeviceClass}=="ef", ATTRS{bDeviceSubClass}=="02", ATTRS{bDeviceProtocol}=="01",
        ENV{ID_USB_INTERFACES}=="*:ef0500:*", MODE="0666"

Performance

Aravis uses by default the synchronous libusb API. But it can be told to use the asynchronous API for better performances, especially on embedded platform like RapsberryPi or Nvidia Jetson boards. The function to use is arv_camera_uv_set_usb_mode().

arv-viewer and arv-camera-test can use the asynchronous API if usb-mode option is set to async. Similarly, the GStreamer plugin is using the asynchronous API if usb-mode property is set to async.