Table of Contents
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.
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?
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