×

INDI Library v2.0.6 is Released (02 Feb 2024)

Bi-monthly release with minor bug fixes and improvements

Meade DSIPro III connection error

  • Posts: 3
  • Thank you received: 0
Hello,

I'm trying to use my DSIPro III with indi and I'm running into the following issue :
# indiserver -v indi_dsi_ccd
...
2020-09-20T07:07:29: Driver indi_dsi_ccd:     00000000: 03 50 36                                      GET_EXP_TIME
2020-09-20T07:07:29: Driver indi_dsi_ccd: r 81 40                                 [dt=1]
2020-09-20T07:07:29: Driver indi_dsi_ccd:     00000000: 07 50 06 01 00 00 00                          ACK 1
2020-09-20T07:07:29: Driver indi_dsi_ccd: w 1 3                                   [dt=0]
2020-09-20T07:07:29: Driver indi_dsi_ccd:     00000000: 03 51 03                                      TRIGGER
2020-09-20T07:07:29: Driver indi_dsi_ccd: r 81 40                                 [dt=0]
2020-09-20T07:07:29: Driver indi_dsi_ccd:     00000000: 03 51 06                                      ACK
2020-09-20T07:09:29: Driver indi_dsi_ccd: r 86 0                                  [dt=120006]
2020-09-20T07:09:29: Driver indi_dsi_ccd: read odd data, status = (-7) Argument list too long
2020-09-20T07:09:29: Driver indi_dsi_ccd:     requested 3225600 bytes 1536 x 1050 (odd pixels)
2020-09-20T07:09:29: Driver indi_dsi_ccd: terminate called after throwing an instance of 'DSI::device_read_error'
2020-09-20T07:09:29: Driver indi_dsi_ccd:   what():  read odd data, status = (-7) Argument list too long
2020-09-20T07:09:29: Driver indi_dsi_ccd: stderr EOF
<delProperty device="DSI"/>
Child process 307283 died
...

For this test, I ran indiserver manually and
indi_setprop "DSI.CONNECTION.CONNECT=On"

I investigated with tshark
  630   7.101698       1.29.1 → host         USB 67 URB_BULK in
  631   7.102230         host → 1.29.6       USB 64 URB_BULK in
  632 127.102188       1.29.6 → host         USB 3215936 URB_BULK in
And inside the last packet with wireshark:
Frame 803: 3215424 bytes on wire (25723392 bits), 245824 bytes captured (1966592 bits)
USB URB
 
    URB status: No such file or directory (-ENOENT) (-2)
    URB length [bytes]: 3215360
    Data length [bytes]: 245760
    [Request in: 802]
    [Time from request: 119.999720000 seconds]
    [bInterfaceClass: Vendor Specific (0xff)]
    Unused Setup Header
    Interval: 0
    Start frame: 0
    Copy of Transfer Flags: 0x00000200, Dir IN
    Number of ISO descriptors: 0
Leftover Capture Data: 0ad10aff0b290b8035b03660374d381c38e2399a3a583b1c…

As far as I understand, the bulk transfer times out because the camera only returns 245760 bytes

My environement:
Ubuntu 20.04
installation from PPA
ii  indi-bin                                                    1.8.6~202008211453~ubuntu20.04.1          amd64        INDI server, drivers and tools
ii  indi-dsi                                                    0.2~202008220022~ubuntu20.04.1            amd64        INDI Meade DSI Pro I/II Driver
ii  indi-full                                                   1.8.6~202008211453~ubuntu20.04.1          amd64        Instrument-Neutral Device Interface library - Full INDI
 
ii  libusb-1.0-0:amd64                                          2:1.0.23-2build1                          amd64        userspace USB programming library


I tested the camera with Envisage 7.10 on Windows10 and it's working fine.


Am I missing something or is it an issue with the driver ?
I attached the indiserver log. Let me know if the usb pcap can be useful.


Thanks for you help.
3 years 6 months ago #60275
Attachments:

Please Log in or Create an account to join the conversation.

  • Posts: 153
  • Thank you received: 29
It's possible that nobody has ever tried to use a DSI III Pro with the INDI driver before.

The data that you collected is excellent. After a little googling, it looks like the DSI III Pro uses the ICX285AL, which an active pixel array of 1360x1024. Even the total pixel array (1434x1050) doesn't quite match what the logs seem to indicate. I'll have to look at the code to be sure. But, I suspect that you're on the right track that the issue is the driver trying to download more data than is available.

I'll let you know what I find.

Thanks,
Ben
3 years 6 months ago #60298

Please Log in or Create an account to join the conversation.

  • Posts: 153
  • Thank you received: 29
If you have the pcap, could you please attach it? I'm trying to figure out exactly how many bytes are actually available from the camera. I don't understand why the driver is trying to download 1536x1050 pixels...even after looking at the code.

One thing that I did realize is that the ICX285 sensors are progressive scan CCDs rather than interlaced like the rest of the DSI families use. This is handled in the code by only using the "odd" field and setting the "even" field to 0.

The user that added support for the DSI III cameras had the Color version, not the Pro...though I would expect this aspect to remain the same between those two.

Thanks,
Ben
3 years 6 months ago #60352

Please Log in or Create an account to join the conversation.

  • Posts: 3
  • Thank you received: 0
Hi,

The indi driver seems to behave like the windows driver. The only differences I could detect are :
  • The init phase is done twice on linux.
  • A call to "SET_EXP_MODE 01" is missing before the SET_ROW_COUNT_EVEN 0.
  • The parameter for "SET_GAIN" is "0" on windows, "3F" on linux.
  • The parameter for "SET_OFFSET" is "0" on windows, "7F" on linux.

I managed to patch the driver to correct these differences but I got the same error in the end.
Could it be that the firmware is different ?


Attached are the usb pcaps:
linux_1.pcap : firmware upload on linux
linux_2.pcap : driver initialization
win_1.pcap : firmware upload on windows
win_2.pcap : driver initialization and captures on windows.
3 years 6 months ago #60374
Attachments:

Please Log in or Create an account to join the conversation.

  • Posts: 3
  • Thank you received: 0
Hi,

I managed to dump the firmware loaded by the windows driver (in a VM) using the dumper program from github.com/rumengb/libdsi.
If I replace the original firmware hex file with the one attached here, the driver works perfectly.

Could you test if this firmware works also with older and color models ?

Thanks.
3 years 6 months ago #60376
Attachments:

Please Log in or Create an account to join the conversation.

  • Posts: 153
  • Thank you received: 29
Awesome, that's great! I can try it on my DSI Pro (I) later tonight.

-Ben
The following user(s) said Thank You: gwen0
3 years 6 months ago #60379

Please Log in or Create an account to join the conversation.

  • Posts: 153
  • Thank you received: 29
I tried the newer firmware and it causes the image download to fail on my DSI Pro:
2020-09-22T02:28:01: Driver indi_dsi_ccd: read even data, status = (0) Success
2020-09-22T02:28:01: Driver indi_dsi_ccd:     requested 388608 bytes 768 x 253 (even pixels)
2020-09-22T02:30:01: Driver indi_dsi_ccd: r 86 0                                  [dt=120001]
2020-09-22T02:30:01: Driver indi_dsi_ccd: read odd data, status = (-7) Argument list too long
2020-09-22T02:30:01: Driver indi_dsi_ccd:     requested 387072 bytes 768 x 252 (odd pixels)
2020-09-22T02:30:01: Driver indi_dsi_ccd: terminate called after throwing an instance of 'DSI::device_read_error'
2020-09-22T02:30:01: Driver indi_dsi_ccd:   what():  read odd data, status = (-7) Argument list too long
2020-09-22T02:30:01: Driver indi_dsi_ccd: stderr EOF
<delProperty device="DSI"/>
Child process 235489 died

It looks like the same issue that you are seeing with the old firmware. I don't know if Envisage is able to determine what type is DSI is present in order to load the "correct" firmware or if the driver is the problem.

-Ben
3 years 6 months ago #60405

Please Log in or Create an account to join the conversation.

Time to create page: 0.500 seconds