Hi, while trying to upgrade my Atik camera driver from version 1.13 to 1.26, it appears that there is a problem with the transfer of the image data from my camera to my laptop. When I run the atik_ccd_test program with the environment variable LIBUSB_DEBUG=9, I get the following output when the program tries to download the image data after a short exposure:
getImage
-> AtikCameraImpl::getImage(..., 10702697)
libusb: debug [libusb_alloc_transfer] transfer 0x13b7128
libusb: debug [libusb_submit_transfer] transfer 0x13b7128
libusb: debug [add_to_flying_list] arm timerfd for timeout in 30000ms (first in line)
libusb: debug [submit_bulk_transfer] need 1 urbs for new transfer with length 16
libusb: debug [libusb_handle_events_timeout_completed] doing our own event handling
libusb: debug [handle_events] poll() 3 fds with timeout in 60000ms
libusb: debug [handle_events] poll() returned 1
libusb: debug [reap_for_handle] urb type=3 status=0 transferred=16
libusb: debug [handle_bulk_completion] handling completion status 0 of bulk urb 1/1
libusb: debug [handle_bulk_completion] last URB in transfer --> complete!
libusb: debug [disarm_timerfd]
libusb: debug [usbi_handle_transfer_completion] transfer 0x13b7128 has callback 0x7fad7f3db520
libusb: debug [sync_transfer_cb] actual_length=16
libusb: debug [libusb_free_transfer] transfer 0x13b7128
libusb: debug [libusb_alloc_transfer] transfer 0x13a0768
libusb: debug [libusb_submit_transfer] transfer 0x13a0768
libusb: debug [add_to_flying_list] arm timerfd for timeout in 30000ms (first in line)
libusb: debug [submit_bulk_transfer] need 1 urbs for new transfer with length 21405395
libusb: error [submit_bulk_transfer] submiturb failed error -1 errno=12
libusb: debug [submit_bulk_transfer] first URB failed, easy peasy
libusb: debug [disarm_timerfd]
libusb: debug [libusb_free_transfer] transfer 0x13a0768
libusb_bulk_transfer -> LIBUSB_ERROR_IO
elapsed 0.024132 s
unlock()
<- AtikCameraImpl::getImage 0 [0x00 0x00 0x00 0x00...]
close
-> AtikCameraImpl::close()
libusb: debug [libusb_close]
libusb: debug [usbi_remove_pollfd] remove fd 9
<- AtikCameraImpl::close
Atik LF test failed: Failed to get image
With the test program included with version 1.13 I get:
getImage
-> AtikCameraImpl::getImage(..., 10702697)
libusb: debug [libusb_alloc_transfer] transfer 0xfee128
libusb: debug [libusb_submit_transfer] transfer 0xfee128
libusb: debug [add_to_flying_list] arm timerfd for timeout in 30000ms (first in line)
libusb: debug [submit_bulk_transfer] need 1 urbs for new transfer with length 16
libusb: debug [libusb_handle_events_timeout_completed] doing our own event handling
libusb: debug [handle_events] poll() 3 fds with timeout in 60000ms
libusb: debug [handle_events] poll() returned 1
libusb: debug [reap_for_handle] urb type=3 status=0 transferred=16
libusb: debug [handle_bulk_completion] handling completion status 0 of bulk urb 1/1
libusb: debug [handle_bulk_completion] last URB in transfer --> complete!
libusb: debug [disarm_timerfd]
libusb: debug [usbi_handle_transfer_completion] transfer 0xfee128 has callback 0x7f1b4bc0f520
libusb: debug [sync_transfer_cb] actual_length=16
libusb: debug [libusb_free_transfer] transfer 0xfee128
libusb: debug [libusb_alloc_transfer] transfer 0xfee128
libusb: debug [libusb_submit_transfer] transfer 0xfee128
libusb: debug [add_to_flying_list] arm timerfd for timeout in 30000ms (first in line)
libusb: debug [submit_bulk_transfer] need 1 urbs for new transfer with length 8388608
libusb: debug [libusb_handle_events_timeout_completed] doing our own event handling
libusb: debug [handle_events] poll() 3 fds with timeout in 60000ms
libusb: debug [handle_events] poll() returned 1
libusb: debug [reap_for_handle] urb type=3 status=0 transferred=8388608
libusb: debug [handle_bulk_completion] handling completion status 0 of bulk urb 1/1
libusb: debug [handle_bulk_completion] last URB in transfer --> complete!
libusb: debug [disarm_timerfd]
libusb: debug [usbi_handle_transfer_completion] transfer 0xfee128 has callback 0x7f1b4bc0f520
libusb: debug [sync_transfer_cb] actual_length=8388608
libusb: debug [libusb_free_transfer] transfer 0xfee128
libusb: debug [libusb_alloc_transfer] transfer 0xfee128
libusb: debug [libusb_submit_transfer] transfer 0xfee128
libusb: debug [add_to_flying_list] arm timerfd for timeout in 30000ms (first in line)
libusb: debug [submit_bulk_transfer] need 1 urbs for new transfer with length 8388608
libusb: debug [libusb_handle_events_timeout_completed] doing our own event handling
libusb: debug [handle_events] poll() 3 fds with timeout in 60000ms
libusb: debug [handle_events] poll() returned 1
libusb: debug [reap_for_handle] urb type=3 status=0 transferred=8388608
libusb: debug [handle_bulk_completion] handling completion status 0 of bulk urb 1/1
libusb: debug [handle_bulk_completion] last URB in transfer --> complete!
libusb: debug [disarm_timerfd]
libusb: debug [usbi_handle_transfer_completion] transfer 0xfee128 has callback 0x7f1b4bc0f520
libusb: debug [sync_transfer_cb] actual_length=8388608
libusb: debug [libusb_free_transfer] transfer 0xfee128
libusb: debug [libusb_alloc_transfer] transfer 0xfee128
libusb: debug [libusb_submit_transfer] transfer 0xfee128
libusb: debug [add_to_flying_list] arm timerfd for timeout in 30000ms (first in line)
libusb: debug [submit_bulk_transfer] need 1 urbs for new transfer with length 4628179
libusb: debug [libusb_handle_events_timeout_completed] doing our own event handling
libusb: debug [handle_events] poll() 3 fds with timeout in 60000ms
libusb: debug [handle_events] poll() returned 1
libusb: debug [reap_for_handle] urb type=3 status=0 transferred=4628179
libusb: debug [handle_bulk_completion] handling completion status 0 of bulk urb 1/1
libusb: debug [handle_bulk_completion] last URB in transfer --> complete!
libusb: debug [disarm_timerfd]
libusb: debug [usbi_handle_transfer_completion] transfer 0xfee128 has callback 0x7f1b4bc0f520
libusb: debug [sync_transfer_cb] actual_length=4628179
libusb: debug [libusb_free_transfer] transfer 0xfee128
elapsed 22.5149 s
unlock()
<- AtikCameraImpl::getImage 1 [0x1d 0x01 0x7b 0x01...]
sample data...
285 379 355 371 363 387 385 371 376 379
393 380 388 345 409 407 378 454 379 386
The problem seems to be that in version 1.26 the driver is trying to download the image in one chunk while the 1.13 version uses several chunks. Is it possible to fix this problem?
Best regards,
Camiel
getImage
-> AtikCameraImpl::getImage(..., 10702697)
libusb: debug [libusb_alloc_transfer] transfer 0x13b7128
libusb: debug [libusb_submit_transfer] transfer 0x13b7128
libusb: debug [add_to_flying_list] arm timerfd for timeout in 30000ms (first in line)
libusb: debug [submit_bulk_transfer] need 1 urbs for new transfer with length 16
libusb: debug [libusb_handle_events_timeout_completed] doing our own event handling
libusb: debug [handle_events] poll() 3 fds with timeout in 60000ms
libusb: debug [handle_events] poll() returned 1
libusb: debug [reap_for_handle] urb type=3 status=0 transferred=16
libusb: debug [handle_bulk_completion] handling completion status 0 of bulk urb 1/1
libusb: debug [handle_bulk_completion] last URB in transfer --> complete!
libusb: debug [disarm_timerfd]
libusb: debug [usbi_handle_transfer_completion] transfer 0x13b7128 has callback 0x7fad7f3db520
libusb: debug [sync_transfer_cb] actual_length=16
libusb: debug [libusb_free_transfer] transfer 0x13b7128
libusb: debug [libusb_alloc_transfer] transfer 0x13a0768
libusb: debug [libusb_submit_transfer] transfer 0x13a0768
libusb: debug [add_to_flying_list] arm timerfd for timeout in 30000ms (first in line)
libusb: debug [submit_bulk_transfer] need 1 urbs for new transfer with length 21405395
libusb: error [submit_bulk_transfer] submiturb failed error -1 errno=12
libusb: debug [submit_bulk_transfer] first URB failed, easy peasy
libusb: debug [disarm_timerfd]
libusb: debug [libusb_free_transfer] transfer 0x13a0768
libusb_bulk_transfer -> LIBUSB_ERROR_IO
elapsed 0.024132 s
unlock()
<- AtikCameraImpl::getImage 0 [0x00 0x00 0x00 0x00...]
close
-> AtikCameraImpl::close()
libusb: debug [libusb_close]
libusb: debug [usbi_remove_pollfd] remove fd 9
<- AtikCameraImpl::close
Atik LF test failed: Failed to get image
With the test program included with version 1.13 I get:
getImage
-> AtikCameraImpl::getImage(..., 10702697)
libusb: debug [libusb_alloc_transfer] transfer 0xfee128
libusb: debug [libusb_submit_transfer] transfer 0xfee128
libusb: debug [add_to_flying_list] arm timerfd for timeout in 30000ms (first in line)
libusb: debug [submit_bulk_transfer] need 1 urbs for new transfer with length 16
libusb: debug [libusb_handle_events_timeout_completed] doing our own event handling
libusb: debug [handle_events] poll() 3 fds with timeout in 60000ms
libusb: debug [handle_events] poll() returned 1
libusb: debug [reap_for_handle] urb type=3 status=0 transferred=16
libusb: debug [handle_bulk_completion] handling completion status 0 of bulk urb 1/1
libusb: debug [handle_bulk_completion] last URB in transfer --> complete!
libusb: debug [disarm_timerfd]
libusb: debug [usbi_handle_transfer_completion] transfer 0xfee128 has callback 0x7f1b4bc0f520
libusb: debug [sync_transfer_cb] actual_length=16
libusb: debug [libusb_free_transfer] transfer 0xfee128
libusb: debug [libusb_alloc_transfer] transfer 0xfee128
libusb: debug [libusb_submit_transfer] transfer 0xfee128
libusb: debug [add_to_flying_list] arm timerfd for timeout in 30000ms (first in line)
libusb: debug [submit_bulk_transfer] need 1 urbs for new transfer with length 8388608
libusb: debug [libusb_handle_events_timeout_completed] doing our own event handling
libusb: debug [handle_events] poll() 3 fds with timeout in 60000ms
libusb: debug [handle_events] poll() returned 1
libusb: debug [reap_for_handle] urb type=3 status=0 transferred=8388608
libusb: debug [handle_bulk_completion] handling completion status 0 of bulk urb 1/1
libusb: debug [handle_bulk_completion] last URB in transfer --> complete!
libusb: debug [disarm_timerfd]
libusb: debug [usbi_handle_transfer_completion] transfer 0xfee128 has callback 0x7f1b4bc0f520
libusb: debug [sync_transfer_cb] actual_length=8388608
libusb: debug [libusb_free_transfer] transfer 0xfee128
libusb: debug [libusb_alloc_transfer] transfer 0xfee128
libusb: debug [libusb_submit_transfer] transfer 0xfee128
libusb: debug [add_to_flying_list] arm timerfd for timeout in 30000ms (first in line)
libusb: debug [submit_bulk_transfer] need 1 urbs for new transfer with length 8388608
libusb: debug [libusb_handle_events_timeout_completed] doing our own event handling
libusb: debug [handle_events] poll() 3 fds with timeout in 60000ms
libusb: debug [handle_events] poll() returned 1
libusb: debug [reap_for_handle] urb type=3 status=0 transferred=8388608
libusb: debug [handle_bulk_completion] handling completion status 0 of bulk urb 1/1
libusb: debug [handle_bulk_completion] last URB in transfer --> complete!
libusb: debug [disarm_timerfd]
libusb: debug [usbi_handle_transfer_completion] transfer 0xfee128 has callback 0x7f1b4bc0f520
libusb: debug [sync_transfer_cb] actual_length=8388608
libusb: debug [libusb_free_transfer] transfer 0xfee128
libusb: debug [libusb_alloc_transfer] transfer 0xfee128
libusb: debug [libusb_submit_transfer] transfer 0xfee128
libusb: debug [add_to_flying_list] arm timerfd for timeout in 30000ms (first in line)
libusb: debug [submit_bulk_transfer] need 1 urbs for new transfer with length 4628179
libusb: debug [libusb_handle_events_timeout_completed] doing our own event handling
libusb: debug [handle_events] poll() 3 fds with timeout in 60000ms
libusb: debug [handle_events] poll() returned 1
libusb: debug [reap_for_handle] urb type=3 status=0 transferred=4628179
libusb: debug [handle_bulk_completion] handling completion status 0 of bulk urb 1/1
libusb: debug [handle_bulk_completion] last URB in transfer --> complete!
libusb: debug [disarm_timerfd]
libusb: debug [usbi_handle_transfer_completion] transfer 0xfee128 has callback 0x7f1b4bc0f520
libusb: debug [sync_transfer_cb] actual_length=4628179
libusb: debug [libusb_free_transfer] transfer 0xfee128
elapsed 22.5149 s
unlock()
<- AtikCameraImpl::getImage 1 [0x1d 0x01 0x7b 0x01...]
sample data...
285 379 355 371 363 387 385 371 376 379
393 380 388 345 409 407 378 454 379 386
The problem seems to be that in version 1.26 the driver is trying to download the image in one chunk while the 1.13 version uses several chunks. Is it possible to fix this problem?
Best regards,
Camiel