Using the TRUST Spacecam 380 as an USB 2.0 interface

I wanted to know if it would be possible to extract a ready made USB2 interface from some widely available consumer item, like a webcam.

By researching USB devices supported by the Linux version of the Cypress drivers, Pavle S57RA identified a candidate: the Trust "spacecam 380" webcamera.

We purchased two and took them apart, and to our delight, they're built on two PCB's. One contains the camera, and the outher a nice USB2 interface.

The two are connected via two pin headers, couldn't be better for our purposes!

This is how it looks:

Camera guts

USB2 interface, top

USB2 interface, bottom

Before it can be used as a general-purpose interface, it is necessary to disable the onboard firmware eeprom, to make it report itself as an unconfigured CY7C68013.
This is done simply by unsoldering and lifting pin 5 of the eeprom, marked by a red arrow in the photo below:

Disabling the EEPROM

Another mod, that might be required, is to connect the FIFOADR pins (44,45) and/or the SLOE (42) pin to logic high.
Originally, the FIFOADR pins are grounded, selecting endpoint 2 FIFO. In the default configuration, EP2 is configured as an output, so if you need inputs, these pins should be tied high (3.3V), to select endpoint 8.
For me, the easiest way of "desoldering" these pins was with a sharp pointy knife, just lifting them, without application of heat. Use of suitable magnification is highly recommended.
Then, solder a thin wire from the "hot" side of the 3.3V filter capacitor, to the lifted pins, see below:

Connecting the pins to logic high

Lifting the SLOE pin is not strictly necessary, it is just for making it compatible with my software for the UUUSB board.
(Note that I have made scratch marks at every fifth pin, this helps alot against going nuts!)

Pinout of the board

The pins of the headers go like this (bottom view):

pin header numbering

1  +5
2  GND
3  pa7/flagd/slcs (47)
4  nc???
5  ifclk (20)
6  I2C scl (22)
7  I2C sda (23)
8  pa0/int0 (40)
9  rdy1/slwr (9)
10 pa1/int1 (41)
11 pd7/fd15 (3)
12 pd6/fd14 (2)
13 pd5/fd13 (1)

14 pd4/fd12 (56)
15 pd3/fd11 (55)
16 pd2/fd10 (54)
17 pd1/fd9 (53)
18 pd0/fd8 (52)
19 pb7/fd7 (32)
20 pb6/fd6 (31)
21 pb5/fd5 (30)
22 pb4/fd4 (29)
23 pb3/fd3 (28)
24 pb2/fd2 (27)
25 pb1/fd1 (26)
26 pb0/fd0 (25)
Pins of the Cypress chip that are not brought out on the headers are:
5  clkout
8  ready/slrd*
36 ctl0/flaga*
37 ctl1/flagb*
38 ctl2/flagc*
42 pa2/sloe*
43 pa3/wu2*
44 pa4/fifoadr0
45 pa5/fifoadr1
46 pa6/pktend
51 wkup

The pin headers are double density (1.27mm spacing) but can be soldered into a standard 0.254 mm spacing protoboard by cutting a slit between two rows of holes and then soldering the pins alternately left and right:

Double-density pin header soldering, top view

Double-density pin header soldering, bottom view

Up to main UUUSB page

Copyright info