aravis icon indicating copy to clipboard operation
aravis copied to clipboard

Cannot open Alkeria cameras

Open psoftware opened this issue 7 months ago • 1 comments

Describe the bug Alkeria cameras cannot be opened by any tool offered by Aravis. Executing the viewer shows the camera correcly, but after selecting the camera the viewer will close with an error. These are the logs:

During enumeration:

[15:52:40.222] 🅸 interface> TLOpen: /opt/alkeria/genicam/libalkusb3-genicam.cti [15:52:40.223] 🅸 interface> TLOpenInterface 'AlkUSBInterface' [15:52:40.241] 🅸 interface> Device: SOMESERIAL [15:52:40.242] 🅸 interface> ID: SOMESERIAL [15:52:40.242] 🅸 interface> VENDOR: Alkeria [15:52:40.242] 🅸 interface> MODEL: CELERA C5S-MP [15:52:40.242] 🅸 interface> S/N: SOMESERIAL [15:52:40.242] 🅸 interface> IFClose 'AlkUSBInterface' [15:52:40.434] 🅸 interface> TLClose: /opt/alkeria/genicam/libalkusb3-genicam.cti

After selecting the camera:

[15:52:44.301] 🅸 interface> TLOpen: /opt/alkeria/genicam/libalkusb3-genicam.cti [15:52:44.301] 🅸 interface> TLOpenInterface 'AlkUSBInterface' [15:52:44.301] 🅸 interface> IFOpenDevice: 'SOMESERIAL' [15:52:44.302] 🆆 interface> IFOpenDevice: error -1007 [15:52:44.302] 🆆 interface> DevClose error -1006 [15:52:44.302] 🅸 interface> IFClose 'AlkUSBInterface' [15:52:44.302] 🅸 interface> TLClose: /opt/alkeria/genicam/libalkusb3-genicam.cti

Similar logs can be obtained by the other tools.

The issue is caused by a missing call to IFUpdateDeviceList before IFOpenDevice. Since the system and interface module have been closed with a TLClose, a IFUpdateDeviceList call is required before calling IFOpenDevice to update the producer internal device list.

To Reproduce Steps to reproduce the behavior:

  1. connect the camera
  2. execute any aravis tool
  3. an error will be reported during a call to IFOpenDevice

Expected behavior Camera should be opened without errors.

Camera description:

  • Manufacturer: Alkeria
  • Interface: Custom

Platform description:

  • Aravis version: both master and 0.9.0
  • OS: Ubuntu 20.04
  • Hardware: x86_64

Additional context The GenTL 1.6 specification states that:

In case the instantiation of a Device module is possible without having an internal device list, the IFOpenDevice may be called without calling IFUpdateDeviceList before.

The conditional statement implies that there are some producers which do not support calling IFOpenDevice without previously calling IFUpdateDeviceList, which is our case. So it should be sufficient to add this call to fix the issue, given that it will not affect other producer implementations.

psoftware avatar Mar 28 '25 15:03 psoftware