I had a strange issue with my Allied Mako U-130B camera. Both the Aravis viewer and my own program using the Aravis API would not get anything frames via the stream unless the camera was open at least once before using the Allied Vimba API. If the camera gets unplugged and replugged or if I simply set a reset command, then it wouldn't work until it is again opened by the proprietary API at least once.
Not wanting to deal with the proprietary API as its buggy as hell, I used Wireshark to sniff out whats wrong. Apparently there are a lot of these errors:
Status: U3V_STATUS_SI_PAYLOAD_SIZE_NOT_ALIGNED (0xa003)
Status: U3V_STATUS_SI_REGISTERS_INCONSISTENT (0xa004)
And the like. It seams that the Aravis API sets the registers SI_maximum_trailer_size and SI_maximum_leader_size to values 32 and 65, while the Vimba API sets them to 1024. If they were already set to 1024 by Vimba, the camera simply complains but doesn't seam to overwrite its settings, and the image acquisition with Aravis works.
My workaround is to add:
int32_t valx=1024;
arv_device_write_memory (dev,0x000000000002002c,4,&valx,NULL); //SI_maximum_trailer_size
arv_device_write_memory (dev,0x0000000000020018,4,&valx,NULL); //SI_maximum_leader_size
The camera still complains because the API tries to set it to a wrong value afterwards anyway, but at least I can use my camera without initializing it with the proprietary API.
Also, I found some unprotected Basler camera on my network, and again the Aravis API could not retrieve any images from it until I added the workaround, after which it worked fine.
I had a strange issue with my Allied Mako U-130B camera. Both the Aravis viewer and my own program using the Aravis API would not get anything frames via the stream unless the camera was open at least once before using the Allied Vimba API. If the camera gets unplugged and replugged or if I simply set a reset command, then it wouldn't work until it is again opened by the proprietary API at least once.
Not wanting to deal with the proprietary API as its buggy as hell, I used Wireshark to sniff out whats wrong. Apparently there are a lot of these errors: Status: U3V_STATUS_SI_PAYLOAD_SIZE_NOT_ALIGNED (0xa003) Status: U3V_STATUS_SI_REGISTERS_INCONSISTENT (0xa004) And the like. It seams that the Aravis API sets the registers SI_maximum_trailer_size and SI_maximum_leader_size to values 32 and 65, while the Vimba API sets them to 1024. If they were already set to 1024 by Vimba, the camera simply complains but doesn't seam to overwrite its settings, and the image acquisition with Aravis works.
My workaround is to add: int32_t valx=1024; arv_device_write_memory (dev,0x000000000002002c,4,&valx,NULL); //SI_maximum_trailer_size arv_device_write_memory (dev,0x0000000000020018,4,&valx,NULL); //SI_maximum_leader_size The camera still complains because the API tries to set it to a wrong value afterwards anyway, but at least I can use my camera without initializing it with the proprietary API.
Also, I found some unprotected Basler camera on my network, and again the Aravis API could not retrieve any images from it until I added the workaround, after which it worked fine.
Also thanks for the awesome API!