Delirios de un Informático

OpenWRT en un Asus WL-520GU con sporte USB

Recientemente me he hecho con un router Asus WL-520GU para reemplazar al viejo Linksys WRT54GL. Lo interesante de este dispositivo es su conexión USB 2.0, que al instalarle OpenWRT (o cualquier variante) multiplica sus posibilidades permitiendo usar impresoras en red, cámaras web o dispositivos de almacenamiento masivo.

Pero, ¿porqué OpenWRT y no DD-WRT u otras distribuciones derivadas?. Porque se parece mucho a Debian: la instalación es mínima, ligera y con lo imprescindible y porque dispone de un gestor de paquetes (opkg, al más puro estilo apt-get) que permite añadir software o módulos al kernel desde un repositorio. DD-WRT proporciona firmwares preconfigurados para tener soporte USB, VPN o VoIP, pero con muchas cosas extra que no se usan para nada. Con OpenWRT puede personalizarse por completo, teniendo únicamente lo que se necesita.

El primer paso es flashear el router. El firmware adecuado es la versión con el kernel 2.4 (con el 2.6 no funciona la wifi), concretamente openwrt-brcm-2.4-squashfs.trx. El flasheo se realiza con el comando tftp:

tftp 192.168.1.1
> binary
> put openwrt-brcm-2.4-squashfs.trx

Previamente, es necesario poner el router en modo actualización, desenchufándolo y enchufándolo teniendo pulsado el botón de reseteo hasta que parpadee el led de encendido. En algunos foros sugieren utilizar la utilidad de restauración oficial de Asus, pero no logré hacerlo funcionar.

Una vez actualizado el dispositivo, es necesario establecer la contraseña. Bastará con acceder a la interfaz web con cualquier contraseña para luego cambiarla desde System » Admin Password. Esto permitirá acceder via SSH con el usuario root para poder instalar lo necesario.

El siguiente paso es instalar los módulos del kernel que dan soporte para USB y para ello debemos usar opkg (antes conocido como ipkg). Accediendo via SSH, será necesario actualizar la lista de paquetes antes de instalar los módulos:

opkg update
opkg install kmod-usb-uhci kmod-usb-ohci kmod-usb2 kmod-usb-storage kmod-fs-ext3 swap-utils

Para comprobar que funciona, basta con enchufar un pinganillo USB formateado a ext3 (la instalación de software requiere ext2/ext3 para crear enlaces) y ejecutar:

mount -t ext3 /dev/scsi/host0/bus0/target0/lun0/part1 /mnt/usb

También es necesario tener una memoria swap disponible para las aplicaciones que no tengan memoria suficiente. Por ese motivo se instaló el paquete que añade los comandos mkswap y swapon. No es necesaria una partición swap como en Linux, basta con crear un archivo vacío en el dispositivo USB con el comando dd:

dd if=/dev/zero of=swap count=1024 bs=65536

Una vez testeado el funcionamiento, ha de crearse el archivo /etc/init.d/usbdrive (para montar la partición al iniciar el sistema) y enlazándolo a /etc/rc.d/S99usbdrive. El script es el siguiente:

#!/bin/sh /etc/rc.common
START=99
STOP=40
start()
{
        echo -n "Mounting USB drive: "
        mount -t ext3 -o noatime /dev/scsi/host0/bus0/target0/lun0/part1 /mnt/usb
        mkswap /mnt/usb/swap
        swapon /mnt/usb/swap
        echo "Done."
}
stop()
{
        echo -n "Umounting USB drive:  "
        sync
        sync
        umount /dev/scsi/host0/bus0/target0/lun0/part1
        echo "Done."
}
restart()
{
        stop
        start
}

El último paso es añadir crear el archivo /bin/opkg-link como se indica en el wiki de OpenWRT y añadir las siguientes líneas a /etc/opkg.conf:

dest usb /mnt/usb
option force_space

Con estos pasos tendremos listo el sistema. Para instalar un paquete, será necesario utilizar opkg y opkg-link del siguiente modo:

opkg -dest usb install vim
opkg-link add vim

El segundo comando enlaza todos los archivos del paquete a los directorios de sistema para así tener todo lo necesario como si estuviera instalado en la ROM.

12 comentarios en “OpenWRT en un Asus WL-520GU con sporte USB”

patoroco dice:

Yo aún ando con el Linksys WRT54GL que me subvencionó FON cuando molaba (me salió por 11€ portes incluidos ^^). Eso sí, no le he sacado tanto jugo como pensaba sacarlo en un principio, pero ya se sabe que el tiempo no es algo que sobre a nadie últimamente xD

admin dice:

Si te defiendes con un soldador, al WRT54GL es posible añadirle un lector MMC 🙂

admin dice:

Por cierto, en el wiki de OpenWRT hay cosas muy interesantes, como montar un servidor radius

raquel dice:

Hola, estoy intentando instalar bluetooth en el asus wl 500gp, tiene instalado el OpenWrt, me descargué los paquetes kmod-bluetooth_2.4.35.4-brcm-2.4-1_mipsel.ipk, bluez-hcidump_1.42-1_mipsel.ipk, bluez-libs_3.36-6_mipsel.ipk, luez-utils_3.36-6_mipsel.ipk. Los pasé al router mediante scp, intento instalarlos con la orden/,pkg kmod-bluetooth needs 212. Es importante y estoy un poco perdida, agradecería mucho que me ayudárais, gracias.

raquel dice:

quería decir:
intento instalarlos con la orden ipkg install kmod…, y me da el error: only have 0 available blocks on filesystem/,pkg kmod-bluetooth needs 212.

admin dice:

Hola raquel

Tuve el mismo problema. Para arreglarlo, edita el archivo /etc/opkg.conf y agrega al final lo siguiente:

option force_space

Eso evitará la comprobación del espacio yen disco 😉

RazaMetaL dice:

Hola,

Estuve leyendo tu post y es muy interesante.

Tengo dos inquietudes que me gustaría puedas iluminar:

1- Quiero saber si podré instalar OpenWRT en un ASUS WL-500g Premium, dado que he adquirido uno de estos cacharros para utilizarlo en mi casa.

2- De ser afirmativo, podré instalar apt-cacher-ng ?

De antemano mil gracias.

admin dice:

Hola RazaMetal

Sí podrás instalar OpenWRT en un Asus WL-500G Premium. Es de los mejores, ya que tiene 2 USB y 32 MB de RAM. Sobre apt-cacher-ng no he visto ningún paquete para OpenWRT, aunque quizás pueda compilarse…

mariel martinez dice:

buenas tardes, realmente no se mucho de estas configuraciones pero si quisiera saber como podria configurar la red wifi a traves de alguna clave que me permita restringir el acceso a las personas que se encuentran a mi alrededor gracias de ante mano mi producto es un wl-520gu