Charly
Charly

Reputation: 1352

USB - MTP/PTP without Interrupt Endpoint

Since we plan to use MTP (Media Transfer Protocol) for your next device, we evaluate the use of MTP as replacement for the current (unstable) USB drivers in the current released device.

The limitation on this device is, that its processor (Strong Arm) supports only up to 3 EndPoints:

"Serial port 0 is a universal serial bus device controller (UDC) that supports three endpoints and can operate half-duplex at a baud rate of 12 Mbps (slave only, not a host or hub controller)."

But according to the specification, MTP needs at least 4 endpoints (from the PTP spec):

"The device shall contain at least four endpoints: default, Data-In, Data-Out, and an Interrupt endpoint."

Now the question: Can we just skip the interrupt endpoint on the device? I know that it violates the specification - but what happens if we do?

From our current evaluation software I can see the following scenarios:

  1. The 'space available' is not updated - the user will see that there is 100Mb of free memory, but placing a 1Mb file gives the error "Not Enough Memory"
  2. Non-host driven actions are not visible on the host (so when on the device files are deleted, created or moved, the connected host does not know about it)

If we can live with it, is it advisable to implement it this way?


UPDATE: Damn... when I tested it last time, I ve just removed the code for interrupt-EP data transmission. Now I also removed the endpoint definition (I do not create the endpoint anymore) and from this point the MTP connection couldn't be established any more :(

It seems that the windows driver (wpd) requires the interrupt endpoint - even if it's not used. Bad luck...

Has anyone an idea, whether and how to get MTP working with 3 endpoints?

Upvotes: 2

Views: 1328

Answers (1)

Charly
Charly

Reputation: 1352

Finally I got an answer from Microsoft:

The 3-endpoints setup is not supported.

The interrupt endpoint is required so that the driver can receive MTP events from the device. These events are a notification mechanism that the driver relies on to relay events to applications (e.g. when an object is created, updated, or removed).

If your device does nothing with the endpoint (i.e. send no events), applications such as Explorer will not behave correctly whenever objects on your device are changed.

So we buried our plans... :(

Upvotes: 1

Related Questions