Table of Contents

MMC/SD card over GPIO howto

This is a short guide to get an MMC/SD card working with OpenWrt Kamikaze 8.09 and an 2.6 Kernel. The driver can be configured using either UCI CLI or the LuCI WebUI.

GPIO Pinouts

Description                GPIO
------------------------------------
PIN 1, CS - Chip Select    GPIO 7
PIN 2, DI - Data In        GPIO 1
PIN 3, VSS - Ground        GND
PIN 4, VDD - 3.3 Volts     3.3 Volts
PIN 5, CLK - Clock         GPIO 3
PIN 7, DO - Data Out       GPIO 4

GPIO Solder Points

Images from PCB.

Configuration using UCI CLI

Install packages

Required packages:

opkg update
opkg install kmod-mmc-over-gpio kmod-fs-ext4 cfdisk e2fsprogs kmod-nls-base kmod-nls-cp437 kmod-nls-iso8859-1

Nice to have packages:

opkg install blkid

Configure GPIOs

uci set mmc_over_gpio.@mmc_over_gpio[0].enabled=1
uci set mmc_over_gpio.@mmc_over_gpio[0].DI_pin=1
uci set mmc_over_gpio.@mmc_over_gpio[0].DO_pin=4
uci set mmc_over_gpio.@mmc_over_gpio[0].CLK_pin=3
uci set mmc_over_gpio.@mmc_over_gpio[0].CS_pin=7
uci commit mmc_over_gpio
/etc/init.d/mmc_over_gpio enable
/etc/init.d/mmc_over_gpio start

If you ger an error saying “can't create /config/gpiommc/ directory” then first reboot the device.

Mount the MMC/SD card via fstab

To get partition mounted automatically you have to edit and change START=20 to START=98 in the /etc/init.d/fstab init script.

uci add fstab mount
uci set fstab.@mount[0].enabled=1
uci set fstab.@mount[0].fstype=ext3
uci set fstab.@mount[0].device=/dev/mmcblk0p1
uci set fstab.@mount[0].target=/mnt/mmc
uci set fstab.@mount[0].options=rw,sync,noatime
uci commit fstab
/etc/init.d/fstab restart