Interface language

Acer C110 pico projector with BeagleBone Black

I was having a hard time getting the Acer C110 USB pico projector work when connected to the BeagleBone Black, it wasn't showing up on the USB bus at all, no sign of it in the kernel messages and consequently no sign of it in lsusb.

The device comes with a Y-cable so it can receive additional power, but even connecting it to an external 5V power source it still wasn't working.

I thought that the USB port on the BeagleBone had some current limit the projector was exceeding: the current supplied was not enough to power the device, and maybe the power drawn by the device was also confusing the USB host controller.

I started cutting old USB cables from broken mice in order to build a custom cable without the VCC line to the device, but then a more elegant solution came to my mind: electrical tape; I would have never thought I'd use the words “elegant” and “electrical tape” in the same sentence but here we are.

Just isolating the VCC line on the USB connector was enough to make the device work with the BeagleBone, provided that the power was taken elsewhere using the Y-cable. I guess that ignoring the VCC line works around the “electrical stress” on the USB host controller, can anyone explain it with more technical details?

Now the device enumerates and works nicely with libam7xxx, the only trick to keep in mind in order for the device initialization to succeed is to connect first the “data” end of the USB Y-cable to the device and then connect the “power” end to the power source.

I am also attaching some pictures of the final setup.

BTW, there's also another lesson learned: don't trust color codes of cheap USB cables, always verify with a continuity test the correspondence between the cables and the pins on the connector.