Contents
Ampliación memoria
Se puede usar una minisd, y soldando el soporte de la minisd a la board, quedando así el soporte como socket para poner o remover la minisd. Los pines están descritos en el siguiente link http://wiki.openwrt.org/OpenWrtDocs/Customizing/Hardware/MMC. Es importante que hay que tener cuidado con qué versión de Linksys se está usando, las tarjetas de las versiones wrt54g, wrt54gl y wrt54gs son diferentes.
La siguiente información fue recopilada de las referencias dadas en la aparte de abajo los pasos generales para habilitar la memoria son:
- Abrir el WRT54GL
- Soldar puertos GPIO a la SD
- Compilar Modulo mmc o obtener el precompilado
- Levantar el modulo
- Montar partición
Abrir el WRT54GL
Se debe primero desatornillar las antenas para luego abrir el router. Para abrir el wrt simplemente se debe tomar por debajo y empujar hacia afuera la parte morada esto destapará la caja y luego se quita la parte superior negra que pertenece a la carcaza
Tomado desde http://www.hendlsofen.de/WRT54GL/eng/WRT54GL_SDMod.html
Soldar puertos GPIO a la SD
Se debe soldar como se indica a continuación desde el router a la sd, una buena idea es soldar un convertidor de SD ya sea para micro o mini SD con esto nos permitirá cambiar la sd de su capacidad, o tambien se puede comprar un socket para sd esta ultima opción es la mas recomendable.
GPIO
Esta tabla es brindada para mostrar como se encuentran configurados los GPIO's en el Linksys, puede revisar http://en.wikipedia.org/wiki/GPIO
Pin |
Direction |
Name |
GPIO 0 |
Output |
WLAN LED |
GPIO 1 |
Output |
POWER LED |
GPIO 2 |
Output |
ADM_EECS |
GPIO 3 |
Output |
ADM_EESK |
GPIO 4 |
Input |
ADM_EEDO |
GPIO 5 |
Output |
ADM_EEDI |
GPIO 6 |
Input |
Reset button |
GPIO 7 |
Output |
DMZ LED |
Información SD
Se debe tener claridad como se encuentra referenciada la Memoria para ello revisar la siguiente información
Description |
GPIO |
|
|
Pin 1 - CS, Chip select |
GPIO 7 |
||
Pin 2 - DI, Data in |
GPIO2 |
||
Pin 3 - VSS, Ground |
GND |
||
Pin 4 - VDD, 3.3v |
3.3v |
||
Pin 5 - CLK, Clock |
GPIO3 |
||
Pin 6 - VSS2, Ground |
GND |
||
Pin 7 - DO, Data out |
GPIO4 |
Soldar GPIO2 y GPIO3
lo que primero se debe hacer es soldar GPIO2 y GPIO3 estos van conectados al Pin2 y Pin5 de la SD respectivamente.
|
|
Soldar GPIO4 y GPIO7
Se soldará el GPIO4 al Pin7 de la SD y el GPIO7 el Pin1
|
|
Soldar Vcc y GND
Se debe soldar por último el VCC al Pin4 de la SD y el GND debe ir soldado a los Pines 3 y 6
|
|
Alguna otra información
También se puede soldar todos los puntos del Router por la parte de abajo con esto se puede cablear un poco más facil
Compilar Modulo mmc o obtener el precompilado
Existen varias formas para tener el módulo precompilado este se debe pasar al router y luego levantarlo y eventualmente no debe haber ningún problema, o se debe compilar y luego pasar el modulo al router.
Precompilado
La primera forma es instalar el paquete kmod-broadcom-mmc para ello se debe estar en el router y que este tenga conexión a internet
ipkg update ipkg install kmod-broadcom-mmc
la otra forma es buscarlo en http://www.frontiernet.net/~beakmyn/openwrt/mmc/ desde allí se entra a GPIO5 o GPIO2 según lo que se desee y se descarga el mmc.o este es el compilado para poder correrlo en la mmc. También puede encontrar otro módulo en http://programmingstuff.free.fr/files/openwrt/whiterussian/mmc/
Compilar el Modulo
Preparar la Compilación
Se descarga del svn la versión que se haya cargado al router en este caso se ha trabajado con la versión kamikaze 7.09
svn co https://svn.openwrt.org/openwrt/tags/kamikaze_7.09
luego de haber descargado se ejecuta make menuconfig y se escoge la opción Select all packages by default y por último make
make menuconfig make
Nota: si en algún momento llega a fallar el make ejecute make V=99
Editar el Makefile del Modulo
Se pueden encontrar dos módulos uno http://programmingstuff.free.fr/files/openwrt/whiterussian/mmc/src/ y http://www.frontiernet.net/~beakmyn/openwrt/mmc/ estos dos módulos son totalmente diferentes en su programación pero la forma de compilarlos es similar.
Descargue el módulo con todos los archivos anexos, (mmc.c, Makefile.... ) y luego edite el Makefile
TARGET := mmc
WARN := -W -Wall -Wstrict-prototypes -Wmissing-prototypes -fno-strict-aliasing -mips32 -save-temps
INCLUDE := -isystem /home/cyril/whiterussian/build_mipsel/linux-2.4-brcm/linux-2.4.30/include -isystem /home/cyril/whiterussian/build_mipsel/linux/arch/mips/bcm947xx/include/
CFLAGS := -O2 -DMODULE -D__KERNEL__ ${WARN} ${INCLUDE} -fno-pic -mno-abicalls -mlong-calls
CC := /home/cyril/whiterussian/staging_dir_mipsel/bin/mipsel-linux-uclibc-gcc
all:
$(CC) ${CFLAGS} -c -o ${TARGET}.o ${TARGET}.c
clean:
rm -f mmc.oEl Makefile es muy similar a este se debe editar y reemplazar las opciones INCLUDE y CC con las opciones del sistema y direccionando al repositorio del svn que con anterioridad se ha compilado y quedaría de la siguiente forma
TARGET := mmc
WARN := -W -Wall -Wstrict-prototypes -Wmissing-prototypes -fno-strict-aliasing -mips32 -save-temps
INCLUDE := -isystem /home/woakas/mig/wrt/svn_kamikaze_7.09/build_mipsel/linux-2.4-brcm/linux-2.4.34/include -isystem /home/woakas/mig/wrt/svn_kamikaze_7.09/build_mipsel/linux/arch/mips/bcm947xx/include/
CFLAGS := -O2 -DMODULE -D__KERNEL__ ${WARN} ${INCLUDE} -fno-pic -mno-abicalls -mlong-calls
CC := /home/woakas/mig/wrt/svn_kamikaze_7.09/staging_dir_mipsel/bin/mipsel-linux-uclibc-gcc
all:
$(CC) ${CFLAGS} -c -o ${TARGET}.o ${TARGET}.c
clean:
rm -f mmc.o
Compilando el Módulo
Por último se compila el módulo con make y se generará un archivo llamado mmc.o el cual será nuestro módulo para colocar en el router
make
Levantar el modulo
Para levantar el módulo se envia el modulo al router con scp y luego se levanta. Para este caso la dirección del router es la 192.168.1.1
scp mmc.o root@192.168.1.1:
luego de ello se levanta el módulo con insmod y para descargarlo con rmmod
ssh root@192.168.1.1 echo "0x9c" > /proc/diag/gpiomask echo "1" >/proc/diag/led/power insmod ./mmc.o
es muy importante colocar la opción echo "0x9c" > /proc/diag/gpiomask la explicación se debe a lo siguiente: Al realizar la modificación de la tarjeta SD, se están utilizando las líneas GPIO disponibles en el router. OpenWRT utiliza estas líneas para entrar en un estado denominado “failsafe mode”. Por lo tanto, se debe aplicar una máscara, que debe ser introducida en el archivo /proc/diag/gpiomask. Esta máscara define que líneas GPIO se están utilizando, y que no deben ser tenidas en cuenta para entrar al modo anteriormente mencionado. Se utilizó el hexadecimal 0x9C, debido a que se están utilizando las líneas GPIO 2, 3, 4, 7. Asumiendo un byte, se coloca un 1 a cada posición de línea GPIO que se vaya a utilizar, por lo tanto resulta 10011100, que en su equivalente hexadecimal es justamente 0x9C. Se menciona esto puesto que algunas modificaciones para utilizar la tarjeta SD, usan otras líneas GPIO, por lo tanto es común ver otras máscaras utilizadas. Tomado de http://nxbot.blogspot.com/2007/06/router-hack.html
se puede visualizar que ha pasado con el módulo colocando dmesg
dmesg
Se ha probado el módulo descargado desde http://programmingstuff.free.fr/files/openwrt/whiterussian/mmc/src/ y esto es lo que se debe ver al cargar el módulo.
[INFO] OEM/Application ID: TM [INFO] Product name : SD02G [INFO] Product revision : 3.5 [INFO] Product SN : a28fca97 [INFO] Product Date : 2007-6 [INFO] mmc_card_config: size = 1966080, hardsectsize = 1024, sectors = 1966080 [WARN] mmc_init: hd_sizes=1966080, hd[0].nr_sects=3932160 [INFO] mmc_card_init: set_blocklen (CMD16) succeeded ! Partition check: mmca: p1
Cargar de Forma Automática el Módulo
Nota:Esta información se realizó creando con anterioridad en la memoria una partición en ext2 y otra swap puede utilizar fdisk directamente en el WRT54GL para dicha labor.
Coloque el modulo en el directorio /lib/modules/2.4.34/
mv mmc.o /lib/modules/2.4.34/
Se debe agregar al archivo /etc/fstab con la opción del punto de montaje en el formato definido con anterioridad de la sd para este caso se utiliza ext2 y luego crear el archivo /etc/modules.d/21-mmc para cargar el módulo mmc al inicio del sistema.
echo "/dev/mmc/disc0/part1 /mnt/sd ext2 defaults 0 0" >> /etc/fstab echo "mmc" >> /etc/modules.d/21-mmc
Cree el archivo /etc/init.d/mmc con la siguiente información
echo "0x9c" > /proc/diag/gpiomask mount /mnt/sd
por último se realiza un enlace simbólico desde el archivo /etc/init.d/mmc creado con anterioridad al archivo /etc/rc.d/S25mmc
ln -s /etc/init.d/mmc /etc/rc.d/S25mmc
Posibles Errores
Estos dos errores se vieron con diferentes módulos se arreglaron con el módulo descargado desde acáhttp://programmingstuff.free.fr/files/openwrt/whiterussian/mmc/src/
Modulo GPIO2
mmc Hardware init mmc Card init mmc Card init *1* mmc Card init *2* Size = 1966080, hardsectsize = 1024, sectors = 1966080 Partition check: mmca: p1 Unable to handle kernel paging request at virtual address 0000000c, epc == 80017dd0, ra == 80017df0 Oops in fault.c::do_page_fault, line 206:
Modulo GPIO5
mmc Hardware init mmc Card init mmc Card init mmc: error in mmc_card_init (1) mmc: error in mmc_init (-1)
Referencias
Modificaciones Hardware
WRT54GL Mod para SD con imágenes utiles
Linksys Muy buena documentación para colcar la SD
Altred manual realizado por Altred para colocar la SD
CuntomizingMMC Información de openwrt para colocar una SD
documento se explica como adaptar una memoria sd usando un lector de tarjetas.
link se realiza la misma adaptación pero usando un bus para floppy de 5 1/4 "
WRT Información Extra sobre Router
Software Modulo MMC
Modulo 1 Modulo que se intentó compilar y produjo errores para levantar la SD
Modulo 2 Modulo encontrado el cual funciona perfecto con el WRT54GL
Compilar Openwrt Documentación para compilar Openwrt
Foro de Documentación foro donde se habla sobre el módulo para la mmc
DocumentaciónInformación Extra para el módulo
MMC modulo Openwrt Muy buena documentación de como hacer funcionar el módulo correctamente
Module para el WRT54GL Modulo con documentación eficiente.





