I succeeded in adding an SD card mod to a Motorola WR850Gv2. The biggest challenge was finding the solder points. I am using the standard "gpio2" layout and 1.3.4 (GPIO 2) driver from http://wiki.openwrt.org/oldwiki/OpenWrt R30; dware/MMC, running on kamikaze-8.09.2-brcm-2.4-wr850g (r18961).
CS - gpio 7 - bottom pad of RR155
DI - gpio 2 - bottom pad of RR35
CLK - gpio 3 - top pad of RR34
DO - gpio 4 - top pad of RR50
Orientation is looking at the LEDs, with lan ports at the top. RR155 is near the modem LED on the bottom front. The other three are near each other, in the middle on the BACK side of the main board.
These points are the same as described above, I believe, but RR34 and RR35 were described as 'below RC117'. Also when trying to solder the DO wire to the top of RR153 (gpio 4), I destroyed the pad, so I had to hunt for another point, and found RR50.
I suspect the swap of gpio 3 and 4 in the previous two comments was just a mistake. Testing with the gpio polling utility suggests that gpio 4 works both ways (suitable for "data out" from the card) but gpio 3 doesn't sense input. So I don't think gpio 3 can't work for DO.
I had trouble with the location of gpio 7 which was described as 'WAN LED(RED)'. First I connected my wire directly to the LED. But checking with a voltmeter showed showed a drop to only 1.4v instead of 0v when disabling gpio 7. So I searched for another point, the other side of the LED resistor. The spot I found still has 0.4v when 'off' but better than 1.4, and enough for the card to work. Maybe a better point would allow this gpio to be used for input also? But I like it this way because the red modem light acts as a 'disk busy' light.
I found only gpios 2 and 4 were good for input. I also found gpios 1 and 6 (power and other half of modem light) which could be good for output. So I may move them around to see if I can free up another one for input. But I haven't setup a proper compile environment yet. I want to test the new broadcom-sdhc driver.
Of course at this point there is the usual "echo 0x9c > /proc/diag/gpiomask", and "insmod mmc.o" followed by 'dmesg | tail' to check the output. And here it is:
dmesg wrote:
[INFO] mmc_hardware_init: initializing GPIOs
[INFO] mmc_card_init: the period of a 380KHz frequency lasts 524 CPU cycles
[INFO] mmc_card_init: powering card on. sending 80 CLK
[INFO] mmc_card_init: 80 CLK sent in 43626 CPU cycles
[INFO] mmc_card_init: resetting card (CMD0)
[FATAL] mmc_card_init: invalid response from card: 3f found, waiting for 01
[INFO] mmc_card_init: the period of a 380KHz frequency lasts 524 CPU cycles
[INFO] mmc_card_init: powering card on. sending 80 CLK
[INFO] mmc_card_init: 80 CLK sent in 43287 CPU cycles
[INFO] mmc_card_init: resetting card (CMD0)
[INFO] mmc_card_init: doing initialization loop
[INFO] mmc_card_init: card inited successfully in 124 tries (3790447 CPU cycles).
[INFO] mmc_init: MMC/SD Card ID:
03 53 44 53 44 30 31 47 80 10 5f ef ac 00 63 e1 [INFO] Manufacturer ID : 03
[INFO] OEM/Application ID: SD
[INFO] Product name : SD01G
[INFO] Product revision : 8.0
[INFO] Product SN : 105fefac
[INFO] Product Date : 2006-3
[INFO] mmc_card_config: size = 992000, hardsectsize = 512, sectors = 1984000
[WARN] mmc_init: hd_sizes=992000, hd[0].nr_sects=1984000
[INFO] mmc_card_init: set_blocklen (CMD16) succeeded !
Partition check:
mmca: p1
So far I've tested with a SanDisk SD/USB 1 GB card . Sorry it's not in the pictures but it's my only card and I needed it for the camera! I haven't done extensive read/write testing yet, but everything seems stable, and I got 300 kB/s range form the fat filesystem on the card, which I call pretty good. I used the 5 1/4" floppy connector hack for an SD card socket. Please excuse the poor soldering. I'm no expert with cheap tools, and some points were soldered multiple times!
Any questions, please send me a message as I probably won't be monitoring this forum.
Each red circle contains a contact point to which you solder a connection to the SD card or socket. The function and board designation for this model (WR850Gv2) is written in the circle, and SD card pin number and function is written next to the circle (except "4 - VDD" which is in the circle by mistake). The complete table is: