Skip to content

Cannot open Alkeria cameras #1001

@psoftware

Description

@psoftware

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    1. bugProblems, incorrect behavior or appearance5. GenTLGenTL device issue

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions