Como agregarle memoria al router inalambrico?

Este proyecto es la base de un proyecto anterior que se llama W:E:P:C (Historia y contrato) las siglas obedecen a Wireless.Embedded.Portable.Community (Splash screen del 2004 firmware EWRT). La idea nacio en un taller que se realizo en Estrasburgo bajo el nombre de OpenSourceCity, propuse usar un Access Point para la creacion de tuneles entre ciudades emplazandolos en callejones sin salida de las ciudades a conectar. Al entrar en el rango de alguno de estos "HotSpots" se estara comunicando con la gente que esta en el rango de cobertura de otro A.P instalado en otra latitud/longitud. Como siempre, mi propuesta consistia en conectar al menos via IRC los colegas de -MW- (MedellinWireless) con gente en Estrasburgo que monta la red libre

Info tecnica

Este documento se basa en lo que esta en estas 3 páginas:
http://www.the-mesh.org/tiki-index.php?page=LinksysSDCard#Starting_off
http://wiki.openwrt.org/OpenWrtDocs/Customizing/Hardware/MMC
http://wiki.openwrt.org/PackagesOnExternalMediaHowTo

De alli sale la información básica, le recomiendo las visite ya que las que yo realize fue completamente basado en ellas, las fotos que realice las hice mas por documentar el proceso que por tener la calidad y precisión que logran las del link de the-mesh.

lo que espero documentar aquí en altred sera el uso de la modificación bajo Freifunk (actualmente la modificación la uso bajo el firmware de Freifunk pero creo que me pasare al OpenWrt ya que me he acostumbrado mas a este último. Pero, primero lo primero!:

Una imagen de la distribucion de los conectores en una memoria SD:

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

La tabla corresponde a la distribucion de los GPIO (general purpose input/output) en el wrt54gl v1.1 (tenga en cuenta que dichos GPIOs cambian de lugar segun las versiones de los router inalambricos.

Para mapear cada uno de los conectores a usar, les recomiendo usar la ultildad gpio y asi con un multimetro asegurarnos de los puntos que usaremos. la utilidad se descarga de aca: http://downloads.openwrt.org/utils/gpio.tar.gz y se utiliza corriendo el siguiente comando (en mi caso solo la use para hacer la mediciones y no la agrege al PATH, por eso utilizo ./gpio de la siguiente manera:

while true; do ./gpio enable 1; sleep 1; ./gpio disable 1; sleep 1; done

Las siguientes imagenes describen los lugares que necesite soldar, corresponden a los diferentes GPIO (2,3,4,7) + GND (x2) + 3.3v = 7 conectores en la tarjeta SD.En la primera imagen se ven GPIO2 y GPIO3, estan justo debajo de un boton que no se para que sirve segun el manual del usuario politicamente correcto del router de linksys. En el caso del linksys modificado de ahi se controlan la entrada de datos y el reloj de funcionamiento.

449918960_d542c1b3ed 449961176_719748ab53

449918974_22eed964b1 457583128_34ad6e50d5

Utilice 7 pines para hacer el contacto y al mismo tiempo sostener la tarjeta, y si, aplique un poquito de estaño en cada punto para estar seguro de que soportaria alguna sacudida o vibracion.

457583122_e2d1b09fc8_o

Cuando ya la tarjeta esta en su lugar y hemos instalado via ipkg install kmod-etx2 kmod-ext2 y kmod-vfat procedemos a montar el driver mmc, estamos usando uno mejorado que permite velocidades de transferencia de datos mayores a 300kb/s, dice su desarrollador que 850KB/s for WRITE and 450KB/s for READ (desacrguelo de aca: http://programmingstuff.free.fr/files/openwrt/whiterussian/mmc/1_3_4/gpio2/mmc.o )

Luego procedemos a montarlo con el siguiente comando:

insmod mmc

si todo va bien veremos algo similar a los siguiente:

root@altred:~# insmod mmc
Using /lib/modules/2.4.30/mmc.o

cargado el driver! comprobamos via dmesg:

[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 43675 CPU cycles
[INFO] mmc_card_init: resetting card (CMD0)
[INFO] mmc_card_init: doing initialization loop
[INFO] mmc_card_init: card inited successfully in 567 tries (17492121 CPU cycles).
[INFO] mmc_init: MMC/SD Card ID:
18 49 4e 31 32 38 4d 42 02 30 04 d1 6d 00 51 c3 [INFO] Manufacturer ID   : 18
[INFO] OEM/Application ID: IN
[INFO] Product name      : 128MB
[INFO] Product revision  : 0.2
[INFO] Product SN        : 3004d16d
[INFO] Product Date      : 2005-1
[INFO] mmc_card_config: size = 122752, hardsectsize = 512, sectors = 245504
[WARN] mmc_init: hd_sizes=122752, hd[0].nr_sects=245504
[INFO] mmc_card_init: set_blocklen (CMD16) succeeded !
Partition check:
 mmca: p1 p2

creamos un directorio para montar en el la particion de la tarjeta SD que queremos usar:

root@altred:~# mkdir -p /mnt/sd

montamos la particion:

root@altred:~# mount /dev/mmc/disc0/part2 /mnt/sd/

vamos a la particion:

root@altred:~# cd /mnt/sd/

listamos sus contenidos:

root@altred:/mnt/sd# ls
bin                etc                lib                mnt                root               tmp
boot               gpe-ba.tar.bz.tar  lost+found         oldroot            sbin               usr
dev                home               media              proc               sys                var

luego comprobamos que espacio disponible tenemos:

root@altred:/mnt/sd# df -h
Filesystem                Size      Used Available Use% Mounted on
/dev/root                 1.0M      1.0M         0 100% /rom
/dev/mtdblock/4           2.2M    884.0k      1.3M  39% /
none                      7.0M     20.0k      7.0M   0% /tmp
/dev/mmc/disc0/part1    116.1M     13.0k    110.1M   0% /mnt/sd

Una vez instalada la tarjeta se deben agregar las siguientes dos lineas al env via el comando export:

export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/mnt/sd/bin:/mnt/sd/sbin:/mnt/sd/usr/bin:/mnt/sd/usr/sbin

export LD_LIBRARY_PATH=/lib:/usr/lib:/mnt/sd/lib:/mnt/sd/usr/lib

Y en /etc/ipkg.conf es necesario agregar:

dest sd /mnt/sd

asi se ve mi ipkg.conf

src whiterussian http://downloads.openwrt.org/whiterussian/packages
src non-free http://downloads.openwrt.org/whiterussian/packages/non-free
src mab_whiterussian http://www.comnets.uni-bremen.de/~mab/openwrt/whiterussian/packages
dest sd /mnt/sd
dest root /
dest ram /tmp

con esto nos aseguramos que los paquetes instalados en la memoria SD se puedan ejecutar normalmente. Para instalar un paquete en la memoria SD usamos la variable -d (destino) en el comando ipkg:

ipkg -d sd install lighttpd

Este seria el log de la instalacion de lighttpd:

root@altred:/mnt/sd# ipkg -d sd install lighttpd
The following package were previously requested but have not been installed:
lighttpd libopenssl libpcre
Install them now [Y/n] ? Y
Downloading http://downloads.openwrt.org/whiterussian/packages/libopenssl_0.9.8d-1_mipsel.ipk ...
Connecting to downloads.openwrt.org[195.56.146.238]:80
libopenssl_0.9.8d-1_ 100% |****************************************************************************|   434 KB    00:00 ETA
Done.
Unpacking libopenssl...Done.
Configuring libopenssl...Done.
Downloading http://styx.commando.de/sven-ola/ipkg/packages/libpcre_5.0-3_mipsel.ipk ...
Connecting to styx.commando.de[212.91.225.42]:80
libpcre_5.0-3_mipsel 100% |****************************************************************************| 29084       00:00 ETA
Done.
Unpacking libpcre...Done.
Configuring libpcre...Done.
Downloading http://downloads.openwrt.org/whiterussian/packages/lighttpd_1.4.11-2_mipsel.ipk ...
Connecting to downloads.openwrt.org[195.56.146.238]:80
lighttpd_1.4.11-2_mi 100% |****************************************************************************| 72618       00:00 ETA
Done.
Unpacking lighttpd...Done.
Configuring lighttpd...Done.
Downloading http://downloads.openwrt.org/whiterussian/packages/libopenssl_0.9.8d-1_mipsel.ipk ...
Connecting to downloads.openwrt.org[195.56.146.238]:80
libopenssl_0.9.8d-1_ 100% |****************************************************************************|   434 KB    00:00 ETA
Done.
Unpacking libopenssl...Done.
Configuring libopenssl...Done.
Downloading http://styx.commando.de/sven-ola/ipkg/packages/libpcre_5.0-3_mipsel.ipk ...
Connecting to styx.commando.de[212.91.225.42]:80
libpcre_5.0-3_mipsel 100% |****************************************************************************| 29084       00:00 ETA
Done.
Unpacking libpcre...Done.
Configuring libpcre...Done.
Downloading http://downloads.openwrt.org/whiterussian/packages/lighttpd_1.4.11-2_mipsel.ipk ...
Connecting to downloads.openwrt.org[195.56.146.238]:80
lighttpd_1.4.11-2_mi 100% |****************************************************************************| 72618       00:00 ETA
Done.
Unpacking lighttpd...Done.
Configuring lighttpd...Done.

corremos un df -h para saber que tanto espacio se utilizo con la anterior instalacion de el servidor web.

root@altred:/mnt/sd# df -h
/dev/mmc/disc0/part2     88.3M     67.7M     16.0M  81% /mnt/sd

comparandolo con lo que teniamos antes de instalarlo:

/dev/mmc/disc0/part2     88.3M     66.3M     17.4M  79% /mnt/sd

podemos ver que se uso 1.4megas de memoria, es muy poco cuando hablamos en terminos de discos duros o espacios de almacenamiento tradicionales pero para la capacidad limitada del wrt54gl que es de 4megas pues 1.4 megas es bastante y aunque seria posible instalarlo limitaria mucho la instalacion de otros paquetes. Por eso se justifica hacer la modificacion ;)

Paso a seguir? configurar el servidor web dentro del router inalambrico (todo)


[Description Libra]

ALTRED: SD MOD (last edited 2008-02-18 20:45:38 by dsl-189-162-31-124)