Tabla de contenido:

NLDWRTG la placa de expansión ULTIMATE WRT54G: 8 pasos (con imágenes)
NLDWRTG la placa de expansión ULTIMATE WRT54G: 8 pasos (con imágenes)

Video: NLDWRTG la placa de expansión ULTIMATE WRT54G: 8 pasos (con imágenes)

Video: NLDWRTG la placa de expansión ULTIMATE WRT54G: 8 pasos (con imágenes)
Video: Mother Asrock 980DE3-U3S3 Socket AM3+ 2024, Mes de julio
Anonim
NLDWRTG la placa de expansión ULTIMATE WRT54G
NLDWRTG la placa de expansión ULTIMATE WRT54G
NLDWRTG la placa de expansión ULTIMATE WRT54G
NLDWRTG la placa de expansión ULTIMATE WRT54G

Estoy modificando enrutadores WRT54G desde 2006, pero nunca tuve tiempo de diseñar una placa dedicada para él hasta el año pasado. Este hardware sigue siendo uno de los enrutadores wifi más pirateados en el momento de escribir este artículo y merece mantenerse vivo.

Paso 1: Breve descripción general de la serie Linksys WRT54G

Breve descripción general de la serie Linksys WRT54G
Breve descripción general de la serie Linksys WRT54G

en.wikipedia.org/wiki/Linksys_WRT54G_serie…

Hay muchas versiones diferentes en el mercado, así que echemos un vistazo a las que se pueden modificar:

-WRT54G 2.0 / 2.1 / 2.2 -> Aunque todas las modificaciones son posibles, la gran placa base ocupa todo el espacio de la carcasa, si modificas esta serie tienes que mover tu circuito fuera de la caja o crear una carcasa completamente nueva (srsly no vale la pena el esfuerzo)

-WRT54G 4.0 Cambiado al nuevo SoC -> Esta fue la primera placa donde se introdujo la placa base en forma de L, por lo que esta es la primera versión en la que puedes aprovechar mi escudo e insertarlo en la carcasa

-WRT54GL 1.0 / 1.1 -> Linksys lanzó el WRT54GL (el enrutador más vendido de todos los tiempos) en 2005 para admitir firmware de terceros basado en Linux, después de que la línea WRT54G original se cambiara de Linux a VxWorks, comenzando con la versión 5. El WRT54GL es técnicamente una reedición de la versión 4 WRT54G. Este modelo es el REY de los WRTG. Hay muchos enrutadores de segunda mano en el mercado, por lo que si puede elegir qué tipo comprar, SIEMPRE compre el WRT54GL.

-WRT54G 5.0 y superior -> Utiliza VxWorks OS y memoria Flash reducida; no es compatible con la mayoría de los firmware de terceros, aunque la utilidad "VxWorks killer" permite que se carguen algunos firmware de código abierto de terceros en esta y futuras versiones. Linksys hizo un mal giro aquí y esencialmente arruinó un producto completamente bueno. Aunque es posible modificarlos, el espacio en el enrutador es tan pequeño (2 MB) que solo puede ajustarse al micro firmware DD-WRT que prácticamente no puede hacer nada más allá de la funcionalidad de enrutamiento normal (sin VPN, sin smbfs / cifs, sin NFS, sin mmc, sin ext2). Me las arreglé para crear núcleos para esta serie y exprimir el módulo requerido 1-1 sobre el costo de eliminar otros. NO vale la pena su tiempo y esfuerzo, NO compre estos enrutadores.

Con la última serie WRT, Linksys cambió a la arquitectura ARM, por ejemplo, el WRT1200 AC tiene una CPU ARM de doble núcleo a 1,3 GHz. Sin embargo, tengo una mala experiencia con estos enrutadores, incluso después de probar varias versiones de OpenWRT (ahora LEDE), los enrutadores pueden congelarse al azar. Espero más de 300 días de tiempo de actividad desde dispositivos Unix.

Paso 2: ampliar la funcionalidad

Ampliando la funcionalidad
Ampliando la funcionalidad

Ok, entonces, ¿qué trucos puedes hacer con este enrutador?

1, agregue 2x puertos seriales -> que pueden ser útiles si tiene otros servidores en una ubicación remota y desea conectarse a su BIOS a través de una línea serial u otros enrutadores, swtiches que permiten esto

2, agregue 1 puerto USB1.0 -> podría usarse para conectar la impresora, el disco duro externo, etc. (nunca hice este mod, por lo que no será parte de la escritura)

3, agregue una tarjeta SD externa para almacenamiento, esto puede extender la pequeña memoria de almacenamiento flash de 16 MB de su enrutador a 16/32 /… + GB. No tuve ningún problema con el uso de tarjetas SD de este tamaño y tampoco tuve problemas con el uso de tarjetas CLASS 10 nuevas y duraderas. Si ha experimentado con cuál es la limitación de las tarjetas según los modelos WRTG, deje un comentario a continuación.

4, agregue un arduino para controlar su hogar, relés, interruptores rcs

Agregar un arduino esencialmente abre una cantidad ilimitada de opciones: control de robot, control de dispositivos infrarrojos a la vista (televisores, VCR, DVD, proyectores, aire acondicionado), conexión de toneladas de dispositivos a interruptores inalámbricos baratos de 433 Mhz, comunicación con otros arduinos, raspis, agregando un Xbee, etc., etc.

Aunque todo esto podría hacerse con una Raspberry PI + Arduino y extensiones, considero que el enrutador WRT54G es más confiable que el raspis. Tengo estos enrutadores en configuraciones similares con más de 1 año (!) De tiempo de actividad, no podría decir lo mismo sobre los raspis donde mi mayor tiempo de actividad fue alrededor de 240 días en un raspi 1 y luego la tarjeta SD se rindió en el sistema, aunque el C El código de control de Arduino se cargó en la memoria, por lo que no tuve que apresurarme con el reemplazo ya que el nodo de control aún funcionaba perfectamente:))

Paso 3: Lista de hardware

Lista de hardware
Lista de hardware

Adjunto el diseño de la placa en formato SVG y EasyEda. Si desea construir el proyecto, necesitará los siguientes componentes: 1x Regulador de voltaje LM7805

2x tapas para vreg 1uF 10uF (10PCS Condensadores electrolíticos 25V 35V 50V 1uF ~ 1000uF Varios valores y voltaje)

1x cable de 4 pines desde el SDcar a la placa (10 piezas de cable de puente de 2/3/4/5/6/7 pines hembra a hembra Dupont Cable de 20 cm para Arduino)

2x relés de láminas DIP051A7212D

1 enchufe macho RS232 (20 piezas de 9 pines D-Sub DB9 conector de PCB de ángulo recto macho WT7n)

1x MAX 233 (10Pcs Max233 Max233cpp Rs232 Rs-232 Controlador / Receptores Ic New X)

1x cable conector de 10 pines (5 piezas de 2 mm de paso 2x5 pines 10 pines 10 cables IDC longitud del cable de cinta plana 10 CM)

1 zócalo de 10 pines (20 piezas 2,54 mm 2x5 pines 10 pines recto macho envuelto conector IDC de encabezado de caja de PCB)

1x encabezados de conector (10pc 1 * 40Pin Single Row Hembra 2.54mm Conector de encabezado rompible fr Arduino 2017)

1x tarjeta SD (puede ser una vieja SD grande o una nueva microsd con convertidor, de menos de 32 GB de tamaño deberían funcionar, por lo que no probé las tarjetas)

1x convertidor TTL 3v5v (5x Convertidor de nivel lógico 3.3V a 5V TTL bidireccional para Arduino Raspberry pi)

1x optoacoplador 4n35

1 lector de zócalo de ranura para módulo de tarjeta SD para lectura y escritura de Arduino ARM MCU

1x Arduino Promicro (5 piezas Leonardo Pro Micro ATmega32U4 16MHz 5V Reemplazo ATmega328 Arduino Pro Mini)

1x módulos RX y TX cómprelos como un paquete combinado (5 piezas 433Mhz kit de transmisor y receptor RF para control remoto inalámbrico Arduino)

Paso 4: Diseño de hardware

Diseño de hardware
Diseño de hardware
Diseño de hardware
Diseño de hardware
Diseño de hardware
Diseño de hardware

-Tornillos de la placa en la parte principal de la placa inferior de plástico negro

-MAX233 se eligió sobre el MAX232, por lo que no se requerirán tapas adicionales para el PC-> Convertidor en serie WRTG -Todos los componentes están en 1 línea, por lo que se puede cortar un rectángulo simple en la parte delantera en lugar de perforar múltiples orificios, alternativamente una bonita placa de cubierta (o una carcasa WRTG completamente nueva) podría diseñarse con makerbot

-La toma micro USB arduino promicros frente al panel frontal para programación externa.

-Basado en Arduino Promicro (arduino se alimenta desde la entrada de 12 V del enrutador WRT54G (a través de un regulador de voltaje), ¡el voltaje de circuito abierto del adaptador es de aproximadamente 16 V!)

-El Promicro tiene usb real, no es basura compartida, por lo que el / dev / tts / 1 de WRTG se puede conectar al hardware UART de Promicro

-Comunicación en serie a través de / dev / tts / 0 entre PC WRTG

-RF 433Mhz receptor + transmisor (el transmisor podría tomar 12V para un rango más alto)

-Se pueden agregar transmisor y receptor de infrarrojos al panel frontal

-Se pueden agregar LED adicionales al panel frontal (indique Rx / Tx para RF, IR, enrutador / indicador de comunicación ardu)

Podría haber diseñado la placa con un convertidor mini buck, pero tomé el enfoque del regulador de voltaje lineal ya que lo tenía en la mano. Encontré 5V en algún punto del circuito, pero al tocarlo, el enrutador quedó inutilizable (probablemente no podría proporcionar la cantidad de corriente que necesitaba la placa arduino), por lo tanto, opté por un enfoque de vreg adicional.

El convertidor TTL 3v5v está ahí para proporcionar la conversión de voltaje adecuada (estoy usando un modelo arduino promicro de 5V, que usa 5V en su puerto UART de hardware, por lo tanto, se requiere conversión de nivel de voltaje). Sin embargo, modifiqué enrutadores en el pasado agregando Arduino Nanos, Micros sin el convertidor y no tuve ningún problema ya que el puerto TTY del WRTG es tolerante a 5V, pero eso no significa que deba operarlo con este voltaje.

El 4n35 también se introdujo para eliminar algunos ruidos que se originan en el lado externo de la PC, no usé este componente en el pasado, pero también puede deberse a que la computadora portátil que usé durante las pruebas estaba defectuosa.

El cable conector de 10 pines se encarga de la mayoría de las conexiones, sin embargo, debe asegurarse de instalar los enchufes correctamente.

Como se muestra en la imagen en el puerto serie

Pin 1: 3.3V + Pin 2: 3.3V <= Los 2 pines del extremo derecho (más cerca de los LED) son las conexiones POSITIVAS al lado derecho del conector en el blindaje NLDWRTG (cerca del regulador de voltaje LM7805)

Pin 9: GND + Pin 10: GND <= El lado opuesto son las conexiones NEGATIVAS al lado izquierdo del conector en el blindaje NLDWRTG

Para conectar los cables entre el lector SDCARD y el WRTG, siga:

www.jbprojects.net/articles/wrt54gl_mods/

Los pines relevantes:

  • CS -> Punto 1
  • MOSI -> Punto 2
  • SCK -> Punto 5
  • MISO -> Punto 7

Paso 5: limitaciones

Limitaciones
Limitaciones

La CPU del WRT54GL no es la más fuerte (Broadcom BCM5352 @ 200 MHz), se puede overclockear a 250Mhz (no se recomienda:)) así que no espere ejecutar SETI @ HOME en él. El enrutador -sólo- tiene interfaces de 100mbit / sy, a diferencia de lo que puede encontrar en muchos lugares, este hardware * NO es compatible con las VLAN 802.1q *. Es solo una VLAN basada en un puerto simple, no coloque el WRTG en una red que transporte VLAN, no puede hacerlo.

Una aplicación particularmente útil es usar el enrutador como cliente VPN para conectarse a una ubicación central. Aunque es perfectamente utilizable para el servidor VPN, no espere mucho rendimiento de él.

Estos son algunos de mis resultados con un WRT54GL v1.1 usando OpenVPN como cliente.

Rendimiento máximo del túnel: 500 kbit / s abajo 50 kbit / s arriba

Rendimiento de enrutamiento máximo sin VPN desde WAN -> LAN 28 mbit / s

Rendimiento máximo de NAT (Masquerade) sin VPN desde WAN -> LAN 27 mbit / s

Todavía hay muchas ubicaciones con un ancho de banda general menor que estos (ISDN, Adsls, redes de cable, satélite, etc.) lo que este enrutador puede satisfacer perfectamente.

Por lo general, los problemas provienen de colocar demasiados clientes inalámbricos en estos enrutadores. Vi muchas configuraciones a lo largo de los años en cafés, hoteles, restaurantes donde arrojan un enrutador wifi en el mostrador y lo llaman un día, esperando que pueda servir a más de 10 personas. Todo lo que obtienen es una experiencia wifi completamente inutilizable al final, ya que el ancho de banda teórico general para este enrutador 802.11G es de 51 mbit / sy eso es para todos, digamos que el real es de alrededor de 30mbit / s. Para 10 personas, eso es 3mbit / s por usuario en el mejor de los casos, lo que no es suficiente para las aplicaciones de hoy en día hambrientas de ancho de banda (transmisión de video / audio, páginas web 2.0 llenas de imágenes grandes, etc.).

Como dije anteriormente, el objetivo de este truco es el control remoto y no usaría más de un par de kbit / s de tráfico a través de una VPN.

Paso 6: software WRTG

Software WRTG
Software WRTG

El firmware se basa en la mejor versión: DD-WRT v24-sp2 (12/08/10) std-nokaid (revisión SVN 14929) Hay otras imágenes como la VPN que sacrifica el módulo ext2 para ahorrar espacio y al mismo tiempo tener el mmc kernelmodul (LoL). Optware 2 es un paquete de utilidades descontinuado pero aún útil que amplía la funcionalidad básica de DD-WRT:

-Hace una distribución básica de Linux a partir de la instalación paralizada de busybox.

-Proporciona bash y otros shells.

-Proporciona muchos dioses como: htop, netcat, tcpdump, ngrep, mc

-Proporciona servicios de servidor como: samba, asterisk, vsftpd, jabber server

Sin embargo, los paquetes de software son antiguos, están plagados de errores y vulnerabilidades. Publicar una imagen aquí sería lo mismo que proporcionar una instalación de Windows por $ 98, por lo tanto, no publicaré nada todavía, pero anotaré paso a paso cómo configurar su OptWare 2 SDCard.

En el futuro, planeo hacer una nueva distribución de Linux (SnowGlobe Linux) con paquetes nuevos para este dispositivo y publicarlo.

1, JFFS2 debe estar habilitado, no importa que no tenga espacio libre:

/ dev / mtdblock / 4 128K 128K 0100% / jffs

2, partición SDCARD. Aquí hay un truco inteligente:

14GB o lo que queramos tener para la primera partición de datos para la segunda partición ddwrt 100-500mb (EXT2) para la recuperación

Por ejemplo:

Disco / dev / sde: 14,5 GiB, 15523119104 bytes, 30318592 sectores

Unidades: sectores de 1 * 512 = 512 bytes Tamaño del sector (lógico / físico): 512 bytes / 512 bytes Tamaño de E / S (mínimo / óptimo): 512 bytes / 512 bytes Tipo de etiqueta de disco: dos Identificador de disco: 0x6ad48986 Inicio de inicio de dispositivo Fin Sectores Tamaño Id Tipo / dev / sde1 2048 29362175 29360128 14G 83 Linux / dev / sde2 29362176 30318591 956416 467M 83 Linux

Crea sistemas de archivos:

mkfs.ext2 -L SnowGlobe-data / dev / sde1

mkfs.ext2 -L SnowGlobe-recovery / dev / sde2

Ajuste los sistemas de archivos:

tune2fs -c0 -i0 -m0 / dev / sde1

tune2fs -c0 -i0 -m0 / dev / sde2

¡Solo la primera partición será montada automáticamente por el sistema al inicio! La idea detrás de la partición de recuperación es que WRT54G no tiene espacio para guardar un fdisk en ningún otro lugar. Entonces, si hay un apagado no limpio y hay inconsistencias en el sistema de archivos, la única forma de repararlo es tener una copia de fdisk (y las bibliotecas requeridas para comenzar) en una segunda partición que solo se montará ocasionalmente como solo lectura para ejecutar fsck si necesario. De lo contrario, sería necesario sacar la tarjeta y colocarla en una computadora para su reparación …

3, montaje

Si coloca una tarjeta ya particionada y formateada y wrtg se inicia correctamente, lo más probable es que la primera partición se monte automáticamente:

/ dev / mmc / disc0 / part1 13,8G 59,6M 13,7G 0% / mmc

Opt debe estar montado en enlace ahora:

montar -o enlazar / mmc / / opt /

4, secuencia de comandos de instalación OWRT2

Antes de comenzar, compruebe si defgw, dns all good.

wget https://www.3iii.dk/linux/optware/optware-install-… -O - | tr -d '\ r'> /tmp/optware-install.sh

sh /tmp/optware-install.sh

Si no puede obtener el script, es porque el wget de busybox falla. Funcionará con wget de Owrt, pero oye, quieres instalar Owrt …

La salida debería verse así:

Comprobando la configuración del sistema…

Usando 192.168.1.1 como puerta de enlace predeterminada. Usando los siguientes servidores de nombres: servidor de nombres 192.168.1.30 Advertencia: ¡el servidor de nombres local es diferente a la puerta de enlace! Verifique la configuración o ingrese: sed -i s / 192.168. * / 192.168.1.1/ /tmp/resolv.conf para corregir esto. Instalando el paquete uclibc-opt_0.9.28-13_mipsel.ipk… Conectando a ipkg.nslu2-linux.org [140.211.166.82]: 80 uclibc-opt_0.9.28-12 100% | ************* ********************************** | 832 KB 00:00:00 Actualización de ETA /opt/etc/ld.so.cache / opt / sbin / ldconfig: no se puede crear /opt/etc/ld.so.cache~ (No existe ese archivo o directorio) Paquete de instalación ipkg-opt_0.99.163-9_mipsel.ipk… Conectando a ipkg.nslu2-linux.org [140.211.166.82]: 80 ipkg-opt_0.99.163-9_ 100% | *************** ******************************** | 75896 00:00:00 ETA Descargando https://ipkg.nslu2-linux.org/feeds/optware/ddwrt/c… Inflando https://ipkg.nslu2-linux.org/feeds/optware/ddwrt/c… Actualizado lista de paquetes disponibles en / opt / lib / ipkg / lists / optware Finalizado con éxito. Instalando uclibc-opt (0.9.28-12) en / opt /… Descargando https://ipkg.nslu2-linux.org/feeds/optware/ddwrt/c… paquete uclibc-opt sugiere instalar ipkg-opt Configurando uclibc-opt Actualizando /opt/etc/ld.so.cache Finalizado correctamente. Instalando ipkg-opt (0.99.163-9) en / opt /… Descargando https://ipkg.nslu2-linux.org/feeds/optware/ddwrt/c… Configurando ipkg-opt Terminado correctamente.

5, error de ruta:

DEBE exportar la ruta con:

export PATH = "/ opt / bin: / opt / sbin: / opt / usr / bin: / opt / usr / sbin: / bin: / usr / bin: / sbin: / usr / sbin: / jffs / sbin: / jffs / bin: / jffs / usr / sbin: / jffs / usr / bin: / mmc / sbin: / mmc / bin: / mmc / usr / sbin: / mmc / usr / bin"

de lo contrario, ipkg no hará nada.

6, verificar ipkg:

actualización de ipkg

Debería dar salida:

Descargando

Inflando https://ipkg.nslu2-linux.org/feeds/optware/ddwrt/c… Lista actualizada de paquetes disponibles en / opt / lib / ipkg / lists / optware Terminado con éxito.

7, instalar paquetes:

ipkg instalar bash htop mc openvpn tcpdump vim bzip2 bc e2fsprogs findutils gawk grep gzip menos hacer ntfs-3g openssl perl php psmisc psutils

samba36 sed tar unrar descomprimir vnstat vsftpd wget whois zip ncftp

8, lista de paquetes instalados:

ipkg-opt list_installed

No se recomienda crear paquetes en el enrutador debido a la falta de recursos. Configure un entorno de compilación cruzada de mips separado en Vmware / Vbox / KVM para este propósito.

Cosas necesarias:

-Sistema operativo Debbian 7 wheezy de 64 bits

-OpenWrt-SDK-Linux-x86_64-1.tar.bz2 ->

openwrt.org/docs/guide-developer/obtain.fi…

No pierda el tiempo para intentar compilar el SDK por su cuenta, el SDK binario proporcionado es lo suficientemente bueno.

Cree una aplicación simple de helloworld

#include int main (void) {printf ("¡Demonios! Oh mundo, ¿por qué no se compila mi código? / n / n"); return 0; }

./staging_dir_mipsel/mipsel-linux-uclibc/bin/gcc -lpthread hola.c -o hola

Si todo va bien, debería tener un ejecutable mips ahora:

hola: ELF ejecutable LSB de 32 bits, MIPS, MIPS32 versión 1 (SYSV), vinculado dinámicamente (usa bibliotecas compartidas), no eliminado

Paso 7: software Arduino

Puede descargar el código fuente completo a continuación. Es bastante simple, puede controlar los 2 relés y algunos enchufes RC a través de una radio de 433Mhz. Puede ampliarlo fácilmente, por ejemplo: agregue más conmutadores rc.

Paso 8: Cierre y lista de tareas pendientes

Cierre y lista de tareas pendientes
Cierre y lista de tareas pendientes

El WRT54G es un hardware excelente, por lo que todo el trabajo invertido en este proyecto bien vale la pena, además del escudo NLD Wrtg podría utilizarse con futuras versiones de hardware.

Dado que el consumo de energía de un WRTG es menor que el de los Raspberry PI, la alimentación solar del enrutador también puede ser una buena actualización y con el Arduino podemos monitorear cada detalle del proceso de carga solar (voltaje de la batería, voltaje del panel, consumo). Continuaré la serie WRTG con hacks solares más adelante.

Encontrar una manera de programar el Arduino directamente desde el WRTG sería genial (esto requeriría un método para reiniciar el Arduino).

Las personas con habilidades 3D, Makerbot son más que bienvenidas para diseñar una placa de cubierta personalizada (con los conectores de mi placa) para el frente o rediseñar la parte frontal de plástico completa del enrutador.

ACTUALIZACIÓN: Para celebrar que la arquitectura MIPS se convierta en código abierto, he actualizado el tutorial sobre cómo crear programas C simples de forma cruzada con WRTG.

¡Viva los MIPS!:)

tipo de sistema: Broadcom BCM5352 chip rev 0procesador: 0 modelo de cpu: BCM3302 V0.8 BogoMIPS: 199.47 instrucción de espera: no temporizadores de microsegundos: sí tlb_entries: 32 vector de interrupción adicional: no punto de observación de hardware: no excepciones VCED: no disponible excepciones VCEI: no disponible

Recomendado: