why do you say that transfers >4k don't work? Is your assertion based on the value of request.wLength on return from the DeviceRequest call?
On the bus you show a failure after 321 packets of 64B each - that's 20,544 bytes, a lot more than 4k. I'm not aware of any such limitation, although most of the devices I've worked with use a pipe other than 0 for large transfers so perhaps I've just never run into it. Stuart On 3/24/15, 12:00 PM, "[email protected]" <[email protected]> wrote: >Date: Tue, 24 Mar 2015 17:43:08 +0100 >From: Eric Gorouben <[email protected]> >To: "[email protected] at Apple" <[email protected]> >Subject: Re: Failing USB vendor request >Message-ID: <[email protected]> >Content-Type: text/plain; charset="utf-8" > >Hi Again > >It looks like there is a problem transferring more than 4k over the >default control pipe using DeviceRequest (in both directions). If I try >to read 32k, the OS stops reading after 4k. >Is there a way to transfer bigger data amounts in one request? > >Thanks >Eric Gorouben >>Le 23 mars 2015 à 15:50, Eric Gorouben <[email protected]> a écrit : >>Hi There >>I'm trying to issue a 32k transfer over endpoint 0. >>My request is >> UInt8 *pData; // Allocated, filled with correct data... >> IOUSBDeviceInterface **deviceIntf; // Successfully passed all >>rituals to become a good IOUSBDeviceInterface... >> IOUSBDevRequest request; >> kern_return_t kernResult; >> request.bmRequestType = ((kUSBOut << kUSBRqDirnShift)| (kUSBVendor >><< kUSBRqTypeShift) | kUSBDevice); >> request.bRequest = 0x55; >> request.wValue = 0; >> request.wIndex = 0; >> request.wLength = 0x8000; >> request.pData = pData; >> kernResult=(*deviceIntf)->DeviceRequest(deviceIntf,&request); >>The transfer starts on the bus, split in 64B packets as expected... >>8 B SETUP txn 40 55 00 00 00 00 00 80 >>64 B OUT txn (NAK) 01 FF FD FD BC BC ... >>64 B OUT txn [65 POLL] 01 FF FD FD BC BC F9 A8 ... >>64 B OUT txn 8F CC BF 87 52 A9 BB 3C 40 DE 41 01... >>64 B OUT txn 2D D3 7E 2D 74 2B 6A 19 99 A5 54 56 ... >>64 B OUT txn 5B CD E4 E5 54 94 3B 36 A9 ED 55 ... >>64 B OUT txn 43 AE 04 1C FC 05 0D 09 FF 02 97 ... >>... >>But at the 321st packet, I have a strange 55bytes packet, >>64 B OUT txn F2 F6 1E 6B E8 A4 12 21 D8 03... >>55 B OUT txn 90 D8 F8 0D C2 1C A3 6A 4A 43... >>64 B OUT txn (NAK) 7E CB 9C 65 57 EC A3 FF... >>...that stalls the pipe. >>Is there a known limitation in the transfer size? What can make the OS >>(Mavericks in this case) suddenly send 55 bytes instead of 64? >>Thanks in advance >>Eric Gorouben > >-------------- next part -------------- _______________________________________________ Do not post admin requests to the list. They will be ignored. Usb mailing list ([email protected]) Help/Unsubscribe/Update your Subscription: https://lists.apple.com/mailman/options/usb/archive%40mail-archive.com This email sent to [email protected]
