Table of Contents

USB Information

HOWTO: Replace SIM reader with USB connector

Instructions to install a USB type A connector in the WRTU54G-TM

1 - Lift pin 21 of the SimPro chip
2 - remove R651, R652 and R653
3 - pin 1 (V+) of the USB type-A connector to pin 22 and/or 23 of the SimPro chip
4 - pin 4 (GND) of the USB type-A connector to pin 2 and/or 3 of the SimPro chip
5 - pin 2 (D-) of the USB type-A connector goes to the pad of R652 that's farthest from the Simpro chip
5 - pin 3 (D+) of the USB type-A connector goes to the pad of R653 that is farthest from the Simpro chip

- Thanks to this post by ccase.

Original patch

Since it didn't work for me, I did not submit the code to OpenWRT. The patch I originally made can be found at http://wrt.scottn.us/adm8668_ehci.patch but is probably missing some Makefile entries.. It's the meat of it though and a good starting point if someone decides to try this. I think now the resistors probably need to stay on the board and maybe it'll work?

Older findings

The power bus is 5V, but the signal levels at Low-speed/Full-speed are for 3.3V rail
(min = 2.8V and max = 3.6V for high level). See Table 19-2, page 518 in
USB Complete, 3rd Edition.

I looked at the table and again at my connections and only thing I can think of to increase success with USB is using a powered hub.
[Edit 1oct2010]: I tried my powered USB2 hub and it's still flaky.. After a hard long search I found a USB1.1 hub (Belkin F5U021). Disk access seems greatly improved (ie. it doesn't crash the kernel!). Maybe I should just force 1.1 in software …?
[Edit: 10nov2010]: Maybe only USB2 storage is at fault, and I think I traced it to a function in transport.c when using “Scatter Gather” (A SCSI feature), since our USB driver is a non-PCI device and Linksys's hack on the USB driver sets device to NULL since it's expecting a PCI device… Well, later down the road the USB-storage driver wants to access that data structure only if using USB2.0… Haven't pinned down a successful work-around. Seemed to work once but I haven't been able to reproduce.

root@OpenWrt:/mnt# time dd if=100mb.test of=100mb.test2 bs=1k
102400+0 records in
102400+0 records out
real	4m 6.99s
user	0m 1.49s
sys	0m 23.95s

What's that, about 415kbyte/sec? It's reading and writing to same disk, to be more fair:

root@OpenWrt:/mnt# time dd if=/dev/zero of=test bs=512 count=204800

204800+0 records in
204800+0 records out
real	1m 41.51s
user	0m 2.33s
sys	0m 21.66s