After a bit of debugging it seems the problems are not related to firecapture for the QHY5III462C camera:
- cam freeze after a short period of time
- only 30 fps
- Lenovo T480 laptop on usb3 ports without hub
- Linux Kernel 5.10
- libusb package version 2:1.0.24-3
- Distribution: Debian amd64
Tested with the following qhyccd sdk versions:
sdk_linux64_21.02.01
sdk_linux64_21.03.13
This helped to make it work for more than a few frames, though still breaks down after a few seconds:
echo 200 >/sys/module/usbcore/parameters/usbfs_memory_mb
Though, after a single stalled libusb transfer the only thing to get the camera working again is plugging it in again. This means it's "dead"
QHYCCD|LIBUSBIO.CPP|asyImageDataCallBack|LIBUSB_TRANSFER_STALL
I debugged it via modifying the testapp/LiveFrameMode example from the SDK to compile on a modern linux and make it actually show more than one frame. (I've uploaded the code for people who need it here: https://gist.github.com/gebi/f85de8444d81961fb432d3fa1f23ddeb )
Then set debug output to true in qhyccd.ini
[debug]
debugOutPut = true
Partial log (full log attached)
QHYCCDRD|CMOSDLL.CPP|QCamImageParsing|RawDataLen =================================>3.1.0 14020 >= 4 sig=-755884904 sigLen=4
QHYCCDRD|CMOSDLL.CPP|QCamImageParsing|sigDetected = true the usb pack length =14020
QHYCCDRD|CMOSDLL.CPP|QCamImageParsing|RawDataLen = 2143940 2143940
QHYCCDRD|CMOSDLL.CPP|QCamImageParsing|RawDataLen =================================>2.1.0 2143940 = (4+2143936+0) =2143940
QHYCCDRD|CMOSDLL.CPP|QCamImageParsing|RawDataLen =================================>2.1.1 2143940 = (4+2143936+0) =2143940
QHYCCDRD|CMOSDLL.CPP|QCamImageParsing|*RawDataLen = 2143940
QHYCCDRD|CMOSDLL.CPP|QCamImageParsing|frameLen = 2143936
QHYCCDRD|CMOSDLL.CPP|QCamImageParsing|cydev[index].rawFrameHeight = 1112
QHYCCDRD|CMOSDLL.CPP|QCamImageParsing|cydev[index].rawFrameWidth = 1928
QHYCCDRD|CMOSDLL.CPP|QCamImageParsing|imagequeue.GetDataLen() 2143936 frameLen 2143936
QHYCCDRD|CMOSDLL.CPP|QCamImageParsing|RawDataLen =================================>2.1.3
QHYCCDRD|CMOSDLL.CPP|QCamImageParsing|imagequeue.GetDataLen() 2143936 frameLen 2143936
QHYCCD|UNLOCKIMAGEQUEUE.CPP|Put.1|f len 20b6c0 2143936 m_nSize = 16777216 m_nIn = 57886272 m_nOut = 55742336
QHYCCD|UNLOCKIMAGEQUEUE.CPP|Put.2| len 20b6c0 2143936 m_nSize = 16777216 m_nIn = 60030208 m_nOut = 55742336
QHYCCDRD|CMOSDLL.CPP|QCamImageParsing|put image data to imagequeue
QHYCCDRD|CMOSDLL.CPP|QCamImageParsing|RawDataLen =================================>2.1.5
QHYCCDRD|CMOSDLL.CPP|QCamImageParsing|RawDataLen =================================>3.1.0 4 >= 4 sig=-755884904 sigLen=4
QHYCCDRD|CMOSDLL.CPP|QCamImageParsing|sigDetected = true the usb pack length =4
QHYCCDRD|CMOSDLL.CPP|QCamImageParsing|RawDataLen = 4 2143940
QHYCCDRD|CMOSDLL.CPP|QCamImageParsing|RawDataLen =================================>2.1.0 4 = (4+2143936+0) =2143940
QHYCCDRD|CMOSDLL.CPP|QCamImageParsing|RawDataLen = 16384 2143940
QHYCCDRD|CMOSDLL.CPP|QCamImageParsing|RawDataLen = 32768 2143940
QHYCCDRD|CMOSDLL.CPP|QCamImageParsing|RawDataLen = 49152 2143940
QHYCCDRD|CMOSDLL.CPP|QCamImageParsing|RawDataLen = 65536 2143940
QHYCCD|LIBUSBIO.CPP|asyImageDataCallBack|LIBUSB_TRANSFER_STALL
QHYCCD|QHY5IIIBASE.CPP|GetLiveFrame|*pW,*pH,*bBpp,*pChannels 1920 1080 8 1
QHYCCD|CMOSDLL.CPP|ReadAsyQCamLiveFrame 4287872 >= 2143936
QHYCCD|CMOSDLL.CPP|ReadAsyQCamLiveFrame| END SUCCESS
QHYCCD|UNLOCKIMAGEQUEUE.CPP|Put|Get len 20b6c0
QHYCCD|QHY5IIIBASE.CPP|GetLiveFrame|GetLiveFrame ret=2143936 chipoutputsizex * chipoutputsizey * chipoutputbits_t / 8=137211904
QHYCCD|3A QHY5IIIBASE.CPP|GetLiveFrame|readnum,badframenum 1 0
QHYCCD|QHY5IIIBASE.CPP|GetLiveFrame|no debayer
QHYCCD|QHY5IIIBASE.CPP|GetLiveFrame|GetLiveFrame pW=1920 pH=1080 pBpp=8 pChannels=1
QHYCCD|LIBUSBIO.CPP|asyImageDataCallBack|LIBUSB_TRANSFER_ERROR
QHYCCD|LIBUSBIO.CPP|asyImageDataCallBack|LIBUSB_TRANSFER_ERROR
QHYCCD|LIBUSBIO.CPP|asyImageDataCallBack|LIBUSB_TRANSFER_ERROR
QHYCCD|LIBUSBIO.CPP|asyImageDataCallBack|LIBUSB_TRANSFER_ERROR
QHYCCD|LIBUSBIO.CPP|asyImageDataCallBack|LIBUSB_TRANSFER_ERROR
QHYCCD|LIBUSBIO.CPP|asyImageDataCallBack|LIBUSB_TRANSFER_ERROR
QHYCCD|LIBUSBIO.CPP|asyImageDataCallBack|LIBUSB_TRANSFER_ERROR
QHYCCD|LIBUSBIO.CPP|asyImageDataCallBack|LIBUSB_TRANSFER_ERROR
QHYCCD|LIBUSBIO.CPP|asyImageDataCallBack|LIBUSB_TRANSFER_ERROR
QHYCCD|QHY5IIIBASE.CPP|GetLiveFrame|*pW,*pH,*bBpp,*pChannels 1920 1080 8 1
QHYCCD|CMOSDLL.CPP|ReadAsyQCamLiveFrame 2143936 >= 2143936
QHYCCD|CMOSDLL.CPP|ReadAsyQCamLiveFrame| END SUCCESS
QHYCCD|UNLOCKIMAGEQUEUE.CPP|Put|Get len 20b6c0
I'm at a bit of a loss here, seems really like some problem with the transfer, then the camera does not recognize the cmd and then there is the error recovering missing in the lib and possible cam firmware to get it working again