Hacking the dacal DC300
Why?
A colleague of mine has two of these dacal systems:

Because of the lousy software to control these things,
he asked me if I could hack them and create an application so that
he can control them with PHP and a database.
The solution
The application runs in the system notification area and functions as a TCP/IP server.
To debug the app, I simply let the program listen at port 23:

It support the commands:
"scan" to show a list with devices their ID and an index number,
"pos" to control the disc at a certain position,
e.g. pos 5:20 opens or closes (depending on the current status) position 20 of device 5.
The picture above shows index 5 because it was defined in the .ini file.
The normal application can only handle up to five devices.
But if I can implement multiple device support, why would I limit it to five?
Therefore my application can support up to twenty devices which can easily expanded to more.
The php part
Internals
Some people still are experiencing problems with programming USB, so does this manufacturer.
Controlling the position is done in a strange way. Normally a USB device has a couple of
string descriptors which says what device it is ,
who the manufacturer is etc. There is not
quite a limit to the number of string descriptor. What the manufacturer did , was giving each
position it's own string descriptor. All descriptors are saying "ACK", when one of these
descriptors is requested, the firmware notices which descriptor is requested and the corresponding
position is selected and the string is send to the host. Since the string holds "ACK", the
host software receives a sort of acknowledge.
The most likely method would be to send sort of command to the device, but this was propably
to diffucult, so this funny method has been used.