Go Down

Topic: USB HOST CANON EOS NAK (Read 930 times) previous topic - next topic

Camille29

My Canon EOS 1000D allways NAK (Negative AcKnowledge handshake) on "long"(62229 ((972*64+21) bytes and not multiple of the 64 packet!!) GetEvent request
with MAX3421E and Felis Code PTP
I Never had the Problem on PC with Gphoto2
I hope there is a solution to cancel this situation beceause:
NAK is proper response.
NAK is not an error response.

A) Trace Program:
    PTP_OC_CANON_EOS_GetEvent 0x9116    /* 9116: no args, data phase, no resp data. */
    FIRST STEP SEND COMMAND
     ------------Trace_ID:7-------------------
     WRITE OPERATION:
     code: CANON_EOS_GetEvent (0x9116)
     length: 12
     type: Command (0x1)
    ------------------------------------------
    SECOND STEP RESPONSE FROM CANON
    ------------Trace_ID:7-------------------
     READ OPERATION
     code: CANON_EOS_GetEvent (0x9116)
     length: 62229
     type: Data (0x2)
    ----------------------------------------
    LAST STEP (Normaly check RC code)
    ------------Trace_ID:7-------------------
     READ OPERATION
    NAK ERROR
    ----------------------------------------
B)Solution tested:(No success)
    1)Cancellation Code Event 0x4001 not supported on my EOS
    2) GetDeviceInfo    //PTP_OC_GetDeviceInfo 0x1001
          CloseSession() //PTP_OC_CloseSession 0x1003
          OpenSession()  //PTP_OC_OpenSession 0x1002
    3) Hardware Reset arduino board and MAX3421E ( So as is the code can't prevent that sort of bugging)
C)Question:
    1) Is somebody has a solution?
    2) Is somebody has the same problem?
    3) Is somebody has the same problem on a VDIP1 from FTDI ?
    4) Is somebody can explain me on PC with libusb
          I used function usb_bulk_read(usb_dev_handle *dev, int ep, char *bytes, int size, int timeout)
          size fixed to 130000 octets (very larger than the packet response data), and timeout=4000 (longer than embedded code)
          This function automatically return at the end of GetEvent READ OPERATION Data
          Even thought Last Step is a usb_bulk_read too (WRITE OPERATION CODE/READ DATA/READ RESPONSE)
          usb_bulk_read never catch the data packet and the response packet in the same time
          How usb_bulk_read done to know the send data packet is finish? Is there a USB Marker to flag end transmission?
    Is there a zero-length-packet EVENT to mark the end of a transmission?
    5) lenght bytes is not multiple of the 64 packet , is there a bug about MaxPktSize in Control Transfer (must be set in 8 bits)?
(Sorry for my bad english but it's not my first language)

Coding Badly


Is this something you're trying to do with an Arduino?

Camille29

Yes with arduino duemilanove ans HUSB HOST SCHIELD MAX3421E from circuit@home

Go Up