Aravissrc with LucidLabs PHX089, write_memory timeout

Hello,
I’ve been using aravissrc with blackfly cameras with much success, it works great. I have now changed to a LucidLabs PHX089S camera, and am having a failure when using it with aravissrc.

(1) With AravisViewer, I can access the PHX camera, and acquire from it, using any of the available pixel formats. No issues here with acquisition.

(2) Attempts to open the camera and play with a gstreamer pipeline, using aravissrc, results in an ERROR while setting up the stream. See picture below. Also, see Gstreamer pipeline that I’m attempting to open the camera with (just a simple start). I believe the default pixelformat if none specified for aravissrc is GRAY8, so that should work (Mono8 for the camera). At this point I’m not sure if the problem is with aravis or with the camera, so I’m just trying to dig in and get to the bottom, any help is appreciated, thanks.

gst-launch-1.0 -v aravissrc ! fakesink

Hi,

Are you using the latest release of Aravis ? If not, could you retry after the update ?

The error probably happens when the gstreamer plugin tries to set the value of an unavailable feature. The latest version of Aravis should display the name of the node in the error message.

Hey Emmanuel,

I’m on 0.8.20, I will try the latest and get back with you. Thanks.
Matt

Curious, what does the 0x008f answer mean? Some gige vision 2.0 thing?

I’m really not sure, I’ve contacted the camera manufacturer to see what they think and have not heard back.

No, it is just a generic error code. Which was not handled in arvgvdevice by the way.

I have pushed a fix for that.

But it will not help with your issue, we still have to find which feature is not available in your device.

Emmanuel,

I have updated to the latest Aravis release. Now I can’t get anything to work with the lucidlabs camera, whenever I try to play in Viewer (or use aravissrc) the computer completely crashes. I watched the syslog and before crash I get “Error: cant initialize nvrm channel” and “stack smashing detected terminated”. I don’t see anything useful in the ARVDEBUG output.

The blackfly camera I have works fine with the new aravis, I can play and use aravissrc without issue.

Any ideas what I can look at? I made sure my MTU is good (9000), I changed the RX buffer size to 1MB, and verified reverse path filtering is off.

Hey Emmanuel, a little more info. I modified the arvdevicetest example to see at what point the crashing is induced. Basically, crash happens when we try to execute acquisition start. see the two lines below. The top one runs fine, its the 2nd one that executes that causes the crash. I’ll keep digging.

node = arv_gc_get_node (genicam, "AcquisitionStart");
arv_gc_command_execute (ARV_GC_COMMAND (node), NULL);

Hi All - update. I figured out my initial problem with acquiring via Aravis and LucidLabs camera.

LucidLabs by default have “AutoNegotiatePacketSize” on, and “StreamPacketSize” set to 1400. So that, mismatching the ethernet adapter MTU, was causing my crashing issues. Using LucidLabs ArenaSDK I am able to disable auto-negotiation, and set the packet size manually. I can now acquire normally with Aravis Viewer.

Now, I have an unrelated problem to deal with. I’ll list it here but I don’t expect any help. Using aravissrc, and a gstreamer pipeline, I can get video to display with autovideosink, however the full frame is red. I think I have a processing issue or bit alignment issue or something.

Hi:)
I run into the same problem with PHX023 camera. I set AutoNegotiate off, and StreamPacketSize to 9000, and it still was not working for me. What values should I set them to? And is it possinble there are other values to set?

Hi,

Could you post the output of arv-camera-test-0.8 --duration 10 -d all ?

I’m seeing this error frequently with a similar camera which is connected with 100 Mbit ethernet. I only trigger a capture every 10 seconds, so my slow connection doesn’t matter much (though surely could contribute to timeouts).

I’ve uploaded the requested output, from Aravis 0.8.27, here:

My camera doesn’t have AutoNegotiatePacketSize and StreamPacketSize.

I think a couple of things are going on here:

  1. The Lucid camera seems to take a very long time—over 30 seconds sometimes—to acknowledge some commands, like AcquisitionStart. But, I found there is a setting GevGVCPPendingAck=true which causes the camera to report that it’s still working on the previous command. This prevents Aravis from timing out the command.

  2. If there’s any packet loss on your connection, a write_memory command may go through but the return ack could be lost.

    After the default timeout of 500ms, Aravis will submit the command again. But if this second write is not allowed, you can get an access denied error.

    I’ve thought about hacking up _send_cmd_and_receive_ack to add some logic here: If a write_memory or write_register command times out, and on a subsequent retry you get an ARV_GVCP_ERROR_ACCESS_DENIED or similar error, then pretend it was really acknowledged. This is definitely bad but would smooth over this glitch.

(Also, if anyone runs into this thread in the future: Run Aravis >= 0.8.27, not 0.8.0 that Ubuntu 22.04 packages. There are bug fixes that are necessary to use this camera reliably.)