Hi,

I've been trying to get to grips with the USB support in the Empeg.
USB is presented as a device /dev/usb0 making control trivial by using ioctl(), read(), write() and poll()

ioctl( fd, 0, args) will get the state. args[0] is the endpoint you want to query and after the call args[1] contains the returned state.

ioctl( fd, 1, args) will set the state. args[0] is the endpoint you want to set, args[1] contains the state to set.

The Phillips PDIUSBD12 chip (used in MK2 and MK2a) provides 3 endpoint numbers:
0 control (endpoint indexes 0 and 1)
1 generic (endpoint indexes 2 and 3)
2 generic-main (endpoint indexes 4 and 5)
Endpoint numbers 0 and 1 have a 16 byte hardware buffer and 64 byte software buffer. Endpoint number 2 has a 64 byte hardware double buffer (allowing greater throughput than endpoint 1).

Now for those all-important questions...

1. Which endpoint numbers are used by Empeg (I think endpoint numbers 0 and 2, endpoint number 1 is unused)?

2. What is responsible for the player menus and navigation - is it the player itself, or some other process?

3. What is responsible for the file synchronisation on the Empeg (I think this is the player - so when the player isn't running, nothing has /dev/usb0 open)?
_________________________
Michael
Ex-owner of stolen empeg #030102741