Si vi más allá de los demás, fue porque estaba parado sobre los hombros de gigantes.
I. Newton
Creo que mucha gente conoce el pequeño enrutador chino Hame A15 (o, mejor dicho, sus copias masivas, con TTX mejorado en comparación con el original, está igualmente bien googleado por las palabras clave 3g / 4g enrutador tanto en eBay como en AliExpress ). Hoy quería contarles cómo recordé un enrutador de $ 6.5 y gasté $ 20 en él. Por qué Y por la misma razón por la cual las pulseras están tejidas con cuentas, para entrenar la micromotricidad y la vista (los cuerpos componentes son principalmente 0402 :) En su mayor parte por interés deportivo, aunque también es importante que este enrutador sea hoy mi base favorita para varios proyectos (incluso a pesar de la dificultad de acceder al GPIO), en lugar de los "populares" NEXX WT3020F, TP-Link TL-MR3020, TP-Link TL-WR703N y otros. La razón de esto es principalmente su tamaño y la forma de la placa de circuito impreso, conveniente para incrustar en cualquier lugar (en la foto puede estimar el tamaño). En el futuro, para evitar la confusión de la terminología, nombraré el dispositivo que se muestra a continuación como lo llama la wiki openwrt : A5-V11 .

El corazón de este dispositivo es el SoC Ralink RT5350F de 360 MHz, a bordo hay un host USB completo, 4 MB de memoria flash y 32 MB de SDRAM con una frecuencia de 166 MHz (esto es extraño por cierto, porque incluso el antiguo D-link DIR-320 a bordo tenía un DDR más rápido). Algunos clones de clones tienen 16 MB de memoria y no son adecuados sin aumentar la RAM para las manipulaciones descritas en este artículo.
Como de costumbre, la siguiente imagen muestra el enrutador original Hame A15.
Y aquí está su copia china mejorada (al final del artículo puede ver otra copia de la copia, pero 10 veces más cara :).
Los componentes internos del firmware ya estaban iluminados en el concentrador, por lo que no me detendré en las características del marcado. Detalles de problemas y soluciones se describen en w3bsit3-dns.com . Hay mucha información, pero está increíblemente dispersa. Espero reunir puntos clave en este artículo, basados en la experiencia de los chicos: "gigantes de la producción de enrutadores" :)
La respuesta a la pregunta "¿por qué este (enrutador) necesita un usuario sin experiencia" cita al usuario ded1971 :
Propiedades de consumo: enrutador 3G-WiFi versátil y compacto. Es conveniente hacer viajes, conectar un módem 3G / 4G, organizar su red WiFi o usarlo como repetidor para mejorar WiFi, conecte Internet a un televisor inteligente si no hay WiFi incorporado. En general, un montón de características útiles para el dinero ridículo.
Bueno, una comparación con el omnipresente y popularmente querido ES8266 Primera parte, preparatoria
Mientras el enrutador estaba en el correo, hubo tiempo para estudiar las críticas de los felices propietarios. Los principales problemas a los que se enfrentaron la mayoría son los problemas de sobrecalentamiento del enrutador (y, en consecuencia, del "chip blade") y la inestabilidad de la alimentación, cuando el enrutador no puede iniciarse durante mucho tiempo ("indicador": dos LED están tenuemente iluminados, es imposible conectarse al dispositivo a través de Ethernet).
Para combatir el primer problema, se decidió instalar un radiador en el chip. Para hacer esto, pedí pequeños radiadores de aluminio de tamaño 12x12x3 mm (exactamente el tamaño del chip). Se eligió la altura de 3 mm porque quería que el radiador que sobresalía no se aferrara a los objetos (en una bolsa, por ejemplo) y el enrutador pudiera descansar establemente sobre la mesa.
Así son los colocadores de radiadores ... Para arreglar el radiador, decidí usar adhesivo termofusible. De los disponibles en nuestra área, solo había un Alsil-5 “único”, que, a pesar de la conductividad térmica bastante buena, no significa en absoluto almacenamiento a largo plazo. Se seca en un par de días (y si tiene suerte, puede comprar ya seco). Por lo tanto, en el mismo aliexpress, se ordenaron dos tipos de adhesivo termofusible para radiadores LED de alta potencia: Halnziye HY910 y Hcbonyx HC-910 .
Adhesivo de fusión en caliente vigoroso chino Las opiniones sobre ellos en foros especializados no son malas, aunque los expertos aún recomiendan el uso de adhesivos de fusión en caliente epoxídicos de dos componentes, como Thermopox 85CT, para tareas serias. Pero ve a buscarlo todavía ...
Por si acaso, a continuación daré características comparativas de las conductividades térmicas del termofusible utilizado por mí, que se encuentra en Internet.
Hot Melt Halnziye HY910 - Conductividad térmica 0.975W / mK
Adhesivo termofusible Alsil-5 - conductividad térmica 1.4-1.6W / mK
Adhesivo termofusible Hcbonyx HC-910 - conductividad térmica 1.7W / mK
Para instalar el radiador, tuve que cortar la carcasa (incluso para mejorar la transferencia de calor). Para hacer todo con la mayor precisión posible, lo primero que hice fue dibujar las dimensiones del tablero en papel grueso, cortar un agujero para el chip y luego poner esta plantilla de cartón en la caja. Entonces todo es simple: dibuja los contornos del agujero con un lápiz, córtalo con un cuchillo de oficina y muele el archivo.

Marcado y recorte de la carcasa de plástico para el radiador 12x12 Paralelamente a la instalación del radiador, es necesario soldar el condensador SMD de cerámica faltante 10 uF 6.3 V al enrutador en el circuito convertidor de 3.3V. (por recomendación del usuario return1 ). La ubicación de instalación se muestra en la imagen:

Y aquí hay una placa con un condensador de 10 microfaradios de 6.3 V ya instalado Según las revisiones, el consumo actual del dispositivo disminuye y se vuelve más estable. Presumiblemente, en el convertidor de 3.3V, aparecen ondas en la salida que desactivan el procesador. El condensador suaviza estas ondas.
Importante! Intente instalar el radiador y suelde el condensador ANTES de iniciar y operar el enrutador. De lo contrario, puede resultar que Borjomi sea demasiado tarde para beber ...
Las personas resuelven el problema con la energía instalando chips de monitor de energía especializados, en lugar de la cadena RC estándar del enrutador, por ejemplo, KR1171SP28 , DS1816 o MAX809TTR . Inmediatamente me gustó la opción de usar los supervisores de potencia Maxim. Las dos tareas principales que los supervisores pueden resolver son mantener el controlador en el estado de reinicio hasta que el voltaje de suministro alcance el valor establecido y se estabilice, o reiniciar el controlador cuando el voltaje de suministro cae por debajo de un nivel crítico o cuando el voltaje cae de repente. Además de las ventajas de este tipo de supervisor, se puede observar que no se requieren componentes adicionales para instalar el microcircuito, y en términos de tamaño, este dispositivo semiconductor se coloca en el lugar de los elementos eliminados (sí, primero debe quitar las resistencias y condensadores que ya no son necesarios, y luego pasar por encima trenza sobre almohadillas).

La búsqueda en aliexpress no arrojó nada, pero sí hizo una búsqueda en el catálogo de CHIPiDIP, donde se encontraron los moldeadores de pulso MAX809TEUR + T (con un voltaje de reinicio de 3.08 voltios), uno de los cuales fue soldado con éxito al enrutador.

Configuración del modelador de pulsos (reinicio) MAX809TEUR + T Por cierto, no puedo dejar de mencionar el soldador USB chino, sin el cual nunca hubiera convertido este procedimiento (incluso con un microondas elogiado ...).
Para no desperdiciar un soldador, al mismo tiempo decidí soldar un bloque de contacto a las almohadillas de contacto de la consola UART (talones) para simplificar la conexión con los cables Dupont de los diseñadores de Arduino. Las almohadillas de las almohadillas se combinan idealmente con un paso de contacto de 2 mm (el estándar extendido de 2,54 mm ya es ancho) Estos son , por ejemplo. Para que sea más conveniente soldar, con la ayuda de unas pinzas, doblé los extremos de los contactos con la letra G y estañé los puntos en la placa del enrutador.
Preparando la consola UART Luego fue suficiente para instalar el bloque en los talones y calentar ligeramente la unión hasta que la soldadura se derrita. Es importante no exagerar (lo cual es fácil de hacer con un soldador potente), de lo contrario, los lechones simplemente pueden caerse por sobrecalentamiento. En este caso, la imagen muestra los puntos de prueba de respaldo donde puede soldar.

Por cierto, puede soldar los contactos con otro método, pero el caso no se puede cerrar así como así.

Sobre esto, la parte preparatoria terminó y la parte principal comenzó.
Segunda parte, "Programador"
Como mencioné al principio del artículo, el enrutador tiene poca memoria, solo 4 MB. Por supuesto, alguien puede recordar el hecho de que "640 KB deberían ser suficientes para todos". Pero después de pasar una semana tratando de meter todos los paquetes necesarios (¡y hay 8 MB (!)) En el openwrt autoensamblado para D-Link DIR-320, ahora sé con certeza que no vale la pena guardarlo en la memoria. Por lo tanto, se decidió cambiar el flash a uno más potente y al mismo tiempo tener un costo razonable (para no ser más costoso que el enrutador). Para el reemplazo se requieren chips con una frecuencia efectiva (velocidad de reloj SPI) de al menos 100 MHz y un voltaje de suministro de 3.3 V. De los fabricantes: Winbond o cualquier otro (En = Eon, Mx = Macronix, Pm = PMC, At = Atmel). De lo que openwrt.org aconseja son W25Q128BV , MX25L128 (35F), S25FL128P, S25FL129P, GD25Q128C, GD25Q128CSIG. El número 128 en la marca nos dice que el volumen de la unidad flash es de 16 MB (128Mbit = 16Mb). La elección del tamaño nominal se debe al hecho de que un programador chino barato de 24/25 chips de memoria CH341A (más abajo) puede funcionar con ese volumen sin bailar con una pandereta. Para los fanáticos, puedo decir que se pueden soldar 32 MB (por ejemplo, W25Q256FV, MX25L25635F, N25Q256A, MX25L25645GM2I-10G e incluso 64 MB (MX25L51245G, MT25QL512AB). Sin embargo, me gustaría señalar que las etiquetas de precio para la memoria están lejos de ser humanas para los módulos de 64 MB. Noto que hablando de chips de memoria SOLAMENTE en el paquete SOP8, como el más conveniente para soldar, por supuesto, puede tomar chips en casos WSON8 con almohadillas de contacto en lugar de patas, pero la soldadura lleva demasiado tiempo y el resultado puede no cumplir con las expectativas.
Puede actualizar un chip de memoria de varias maneras diferentes, según lo que esté disponible:
a) Hay un diodo / condensador y un puerto paralelo (el programador más simple): miramos las instrucciones del firmware en el sitio web checo o en ruso .
Así que este programador más simple de un conector LPT y un par de detalles se parecen en la vida b) Hay cualquier Arduino (Pro, Micro, Nano, etc.): prepararemos un programador para nuestras unidades flash SPI de acuerdo con la siguiente receta .
c) Si hay una Raspberry Pi, mira aquí
d) Hay un programador USBASP "popular" (que una vez fue escrito en Habré) - lo estamos preparando de acuerdo con la receta No. 2 .
e) Solo hay un deseo y un poco de dinero: compramos en aliexpress un programador chino CH341A para flash SPI 24/25 y comenzamos a trabajar en silencio.
La unidad flash en sí está conectada a los programadores de la siguiente manera:
Pinout de chip de memoria La unidad flash se puede soldar y conectar a las almohadillas / adaptadores del programador, o puede soldar los cables dupont ya mencionados de Arduino y conectar los cables al programador. El "funcionamiento" del flash son los contactos MISO , MOSI , CLK , CS , VCC y GND . Si la programación se lleva a cabo sin quitar el microcircuito de la placa, lo mejor es soldar y elevar ligeramente el contacto VCC sobre el plano de la placa durante un tiempo. Después de terminar el trabajo, presione el pie contra la placa y suelde.
Como no tenía ganas de buscar un puerto LPT, decidí tomar la última opción e) y comprar una pieza de hierro adicional en mi parque. Esta cosa se llama CH341A y, curiosamente, es un programador basado en el chip CH341, detrás de la autoría de la megacorporación china "ampliamente conocida" Jiangsu QinHeng Ltd. :)
Diagrama de circuito del programador Cuando ordene solo un programador, le recomiendo que compre adicionalmente un adaptador de cajas SOP8 / SOIC8 a cajas DIP y un clip para trabajar con microcircuitos.
No puede perseguir pequeños ahorros, pero compre un kit listo de inmediato, que consta de un programador y todos los adaptadores necesarios, luego, además de los dos adaptadores mencionados anteriormente, también obtendrá un adaptador para programar chips de 1.8 V.
Parece un kit listo para usar Según mi propia experiencia, diré que el clip de pinza para la ropa funciona cada dos veces y lo más probable es que el chip tenga que soldarse y colocarse en el adaptador SOP8-DIP o incluso soldarse a las almohadillas en el programador.
Además : finalmente llegó mi adaptador, o como se llama correctamente el adaptador ZIF SOP8-DIP8 150 mil . Este adaptador es adecuado para microcircuitos con un ancho de carcasa de 150mil, un paso de clavijas de 1.27 mm. Además de 150 mil, puede haber 200 mil, por lo que es importante prestar atención a esto cuando ordene en subastas (tengo microchips y lo mismo, por lo tanto, hay dos adaptadores).
Cómo distinguir visualmente entre el adaptador ZIF 150 y 200 mil La pieza es increíblemente conveniente, el microcircuito se sujeta fácilmente, de forma natural y muy clara (el sistema se parece a los alicates). Para hacer esto, simplemente haga clic en la parte superior elástica de la caja, coloque el chip en las áreas expuestas y libere esta parte de la caja. Los contactos superiores con resorte se extienden cuando se sueltan y el microcircuito se sujeta automáticamente (foto para mayor claridad, porque el microcircuito de 200 mil se encuentra en el adaptador de 150 mil, así que no lo pateé, lo pegué a la mano). Luego lo instalamos en el programador, mirando donde tenemos el pie 1 (un círculo en el chip). Resulta así:

Más bellas imágenes de SOIC8 SOP8 en el adaptador DIP8 Disparé un chip de memoria nativo usando una estación de soldadura de aire caliente, y para aquellos que no tienen dicho equipo, recomiendo encarecidamente usar el método de aleación Rose . Después del trabajo, asegúrese de quitar los restos de la aleación Rose con una trenza del tablero y los microcircuitos, lejos del pecado.
Conectamos el microcircuito eliminado al programador (para quién cómo y cómo resulta). Era demasiado flojo para soldar, honestamente intenté pellizcar el clip, como resultado, las patas estaban muy planas por el resorte del clip. Pero no tenía la intención de volver a soldar el flash de 4 MB, pero un buen contacto debería garantizar una lectura fluida. Y así sucedió. Nota bene para aquellos que sueldan el microcircuito: mire cuidadosamente los números en las tarjetas adaptadoras y suelde de acuerdo con ellas. En el caso de un clip, el cable rojo en el bucle de la llave está en la pata número 1.

Capturado y exitosamente de ... Habiendo lidiado con el hierro, tienes que lidiar con el software. Como ya escribí, en un centro este programador aparece periódicamente en artículos . Está claro que funciona sin problemas con todos los sistemas operativos modernos (por ejemplo, en Windows 10, los controladores se extraen automáticamente de la red, y en Linux han estado en el núcleo durante varios años). Pero, pero nunca se sabe lo que sucede, aquí puede encontrar controladores (para el modo Serie / Paralelo) como archivos separados por si acaso. Para la programación en Windows, la autoría de software chino de un determinado SkyGz se usa con mayor frecuencia. Para Linux, hay proyectos abiertos ch341prog (SPI) y ch341eepromtool (I2C), puede usar el flashrom "folk". Como uso Windows, y las revisiones sobre el "programa de China" para la mayoría de los usuarios no son muy positivas (especialmente sobre las nuevas versiones 1.28 ... 1.30), de modo que el destino no se vea tentado, el chip se leyó usando un programador ruso simple y confiable, AsProgrammer. versión 1.4.0 . Por cierto, si algo repentinamente no le gustó / no está claro, o por ejemplo, necesita agregar un nuevo microcircuito, puede escribir fácilmente en el tema de "soporte técnico" y obtener comentarios rápidos.
Por qué NO vale la pena comprar memoria flash de más de 16 MBMe permitiré una ligera digresión y explicaré mi renuencia a instalar una unidad flash de 32 MB (la diferencia de precio de 16 MB no es crítica). El hecho es que ni en los programas chinos (versiones 1.29 o 1.30), ni en el mencionado soporte AsProgrammer para microchips ala W25Q256FV, MX25L25635F, N25Q256A, MX25L25645GM2I-10G. Quizás la razón de esto es que para un flash SPI, la cantidad máxima es de 128 MBit (el máximo que se puede abordar con el modo de direccionamiento de 3 bytes adoptado por JEDEC). Y aquí no hay tantas opciones. Por ejemplo, puede escribir con el flash modificado desde la primera mitad del chip w25q256 (16 MB de tamaño), como el chip w25q128 familiar para este programa de 16 MB y poner el cargador de arranque correcto (Breed, por ejemplo) y las secciones de fábrica con información de "servicio" en este volumen (mac Dirección del enrutador, calibración de wi-fi, etc.). Y después de haber arrancado en modo de gestor de arranque (en caso de que él reconozca con éxito el volumen completo del microcircuito), sería posible actualizar un firmware precompilado. En general, puede comprar unidades flash para el futuro y esperar hasta que aparezca la compatibilidad con dichos volúmenes en versiones rotas de software chino para ch341a o cuando termine flashrom. Para resumir, es mejor tomar 16 MB :) porque "cansado de alcanzar las estrellas, recoge lo que está debajo de tus pies".
Trabajar con AsProgrammer es extremadamente simple, primero seleccione su microchip en el menú "Chip" y luego haga clic en el botón "Leer". Un par de minutos y un tugurio en nuestro bolsillo :)
Leer volcado del chip de fábrica de 4 MB El flash completo de fábrica consta de un gestor de arranque, un par de secciones para almacenar diferentes configuraciones y el firmware en sí.
Estructura de firmware de fábrica de 4 MB0x00000000-0x00030000: "gestor de arranque"
0x00030000-0x00040000: "Config"
0x00040000-0x00050000: "Fábrica"
0x00050000-0x0011282a: "Kernel"
El archivo de volcado guardado debe abrirse en cualquier editor HEX (estoy acostumbrado a usar WinHex ) y en la dirección 105720 (la dirección en decimal, en hexadecimal será 00019CF8) cambiamos 40 00 a 00 01 por un flash de 16 MB (bueno, o 80 00 si de repente decides ahorrar un centavo y comprar un chip de 8 MB). Guardamos el firmware modificado para uso futuro. Por cierto, la dirección 105720 no es un punto de algún tipo de archivo adjunto y es posible que se encuentren otros números allí, especialmente si ya ha intentado desbloquear el gestor de arranque para el firmware openwrt, etc. Por lo tanto, si de repente no sucede nada, y el querido "40 00 "en la dirección 105720 no está visible, buscamos en el menú del editor hexadecimal una búsqueda por valores HEX y dirigimos la combinación de bytes clave" 00 00 16 40 "allí. Conducirá a los números / dirección deseados.
Encontrar la codiciada combinación 00 00 16 40 ¿Por qué se necesitaba esto? Y luego, para que el gestor de arranque modificado le permita actualizar el enrutador a través de UART a través de TFTP, utilizando un firmware más grande.
Luego, llene el firmware guardado en una unidad flash más grande precomprada comenzando en la dirección 0 (desde el principio). En caso de una programación exitosa, suelde el chip de memoria en su lugar y continúe con el siguiente paso. Por cierto, al programar un microcircuito comprado, sentí pena por pellizcarlo con un clip y tuve que soldarlo al bloque :)
Tercera parte, openwrt-shnaya
El siguiente paso es crear su propia versión de openwrt. Si no necesito ciertos paquetes específicos que no se pueden encontrar en el firmware oficial actual (y "de los entusiastas"), puede descargar la primera versión disponible del firmware para su modelo de enrutador y cargarlo a través de microcircuitos de memoria grande modificados YA gestor de arranque o de la manera antigua para usar el programador anterior. Pero necesito incorporar algunos paquetes poco característicos en el firmware de mi enrutador, así que tuve que ir por un camino más complicado y construir openwrt para mí. Este procedimiento está bastante bien descrito para muchos modelos de enrutadores (por ejemplo, para Tp-Link TL-WR741ND en Habré, Tp-Link TL-MR3020 , D-Link DIR320A1 , miles de ellos ...), por lo tanto me limitaré a una breve lista de los pasos principales (se pueden obtener más detalles) mira aquí y aquí ).
Si no hay una máquina * nix en casa, entonces lo primero que instalamos en VirtualBox es Ubuntu x64 (o algo así).
Actualización de información sobre paquetes instalados
sudo apt-get update
Instala lo necesario. Para Ubuntu 16.04 LTS, se ve así:
sudo apt-get install build-essential subversion mercurial libncurses5-dev zlib1g-dev gawk gcc-multilib flex git-core gettext libssl-dev descomprimir
Copie el código fuente del firmware seleccionado a su computadora usando el comando git clone . Debajo del spoiler: enlaces a las fuentes de diferentes versiones de openwrt.
Repositorios Git de proyectos OpenWrt y LEDE18/06/1
git clone git: //github.com/openwrt/openwrt.git -b v18.06.1
18/06/0
git clone git: //github.com/openwrt/openwrt.git -b v18.06.0
1 / 17.5
git clone git: //github.com/openwrt/openwrt.git -b v17.01.5
17/01/4
git clone git: //github.com/openwrt/openwrt.git -b v17.01.4
17/01/3
git clone git: //github.com/openwrt/openwrt.git -b v17.01.3
17/01/2
git clone git: //github.com/openwrt/openwrt.git -b v17.01.2
17/01/1
git clone git: //github.com/openwrt/openwrt.git -b v17.01.1
17/01
git clone git: //github.com/openwrt/openwrt.git -b v17.01.0
15/05/1
git clone git: //github.com/openwrt/archive.git -b v15.05.1
15.05
git clone git: //github.com/openwrt/archive.git -b v15.05
14/07
git clone git: //github.com/openwrt/archive.git -b v14.07
12.09
git clone git: //github.com/openwrt/archive.git -b v12.09
El bien descargado se implementará en el directorio openwrt. Entramos con el comando cd , intercambiamos y actualizamos componentes adicionales con el comando
./scripts/feeds update -a && ./scripts/feeds install –a
Ahora es el momento de arreglar los "archivos importantes" para que el compilador pueda ensamblar correctamente el firmware para nuestra unidad flash ampliada, y no detenerse si de repente excede los 4 MB prescritos . Para hacer esto, haga lo siguiente. En el directorio descargado con fuentes openwrt en el archivo target / linux / ramips / dts / A5-V11.dts, reemplazamos con los valores indicados en la imagen a continuación (utilicé el nano editor, también es posible a través de F4 en mc).

Guarde el archivo, ejecútelo en la consola
hacer defconfig
y aplique la configuración estándar para el perfil, luego configure menuconfig . Aquí el punto clave principal es elegir el perfil correcto:
Sistema de destino: Ralink RT288x / RT3xxx
Subtarget: placas basadas en RT3x5x / RT5350
Perfil de destino: A5-V11
y luego, por analogía con el ensamblado openwrt para otros enrutadores (proporcioné los enlaces anteriores), modificamos el conjunto de paquetes de la manera que necesitamos y guardamos la configuración (en el archivo .config ). Por cierto, si planea cambiar las configuraciones con frecuencia, puede hacer una copia de seguridad del comando scripts / diffconfig.sh> mydiffconfig cada vez, por lo que guardaremos nuestros cambios de configuración en el archivo mydiffconfig cada vez. Después de realizar la configuración necesaria (y seleccionar todos los paquetes necesarios), comenzamos la compilación con el comando make .
Debido a la autocompilación del núcleo, es posible que muchos paquetes de repositorios oficiales no sean adecuados para la instalación. Esto debe tenerse en cuenta y, con mayor frecuencia, establecer el indicador "M" delante del paquete deseado. Luego, estos paquetes se pueden encontrar en la carpeta openwrt / bin / ramips / packages y se cargan en algún servidor HTTP para crear su propio repositorio personal de blackjack y ... para OpenWRT :).
Por cierto, recordé que es muy conveniente ejecutar el comando make de la siguiente forma:
hacer V = 99 2> & 1 | tee build.log | grep -i error
En este caso, el compilador guarda una copia detallada completa de la información de depuración sobre el ensamblado en el archivo build.log en el directorio openwrt y muestra solo errores en la pantalla. Luego, este registro se adjunta convenientemente a los foros para encontrar la causa del error o hacer una pregunta. Además, es ideal para identificar paquetes en los que el compilador deja de funcionar. Puede encontrar el texto mencionado en el registro buscando en el directorio con el comando
grep –Hr "TEXTO" <ruta al directorio de búsqueda> | corte –d: -f1 | ordenar -u
Pero sinceramente espero que la compilación sea exitosa y no haya necesidad de buscar errores. Después de completar el proceso, puede encontrar los archivos de firmware en la carpeta bin del directorio openwrt, algo así como openwrt-ramips-rt305x-a5-v11-squashfs-sysupgrade.bin . Tomamos este archivo y vamos a la etapa final.
Cuarta parte, consola
Después de que el firmware se recopila en las entrañas de la máquina virtual, todo lo que queda es soltarlo en el enrutador. Me gusta la opción con UART (no es por nada que solde la almohadilla a las monedas de 5 centavos de contacto). Para conectarse, necesita un adaptador USB a TTL UART, o al menos un cable de datos de un viejo Siemens. Afortunadamente, tenía un adaptador de este tipo en el chip FT232 (CP2102 y el ubicuo CH340 también son adecuados). El pinout pinout se muestra en la foto.

Pinouts primarios y de respaldo para la consola UART Conectamos los contactos al adaptador de la siguiente manera:
Enrutador GND → Adaptador GND
Enrutador RX → Resistencia 470 Ohm-1 kOhm → Adaptador TX
Enrutador TX → Adaptador RX
Explicaré por qué se necesita una resistencia. Cuando encendí el enrutador conectado al adaptador, se colgó y comenzó a calentarse.
Entonces todo está conectado ... Al mismo tiempo, algo como
ϟr▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒1▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒A▒▒ (0▒▒▒▒▒
? ▒▒▒ {▒F▒▒▒▒▒ ^ ▒▒B▒▒▒KӉSP @ ▒ (Y <0▒0▒ $ ▒ @ ▒▒▒ ▒▒▒ 怘 ▒▒ff▒▒▒▒▒`▒▒ ▒▒▒▒▒▒▒▒▒x▒▒x▒▒▒▒▒x ~ `▒▒ 怘 ▒▒▒▒▒x▒▒f▒▒▒▒▒f▒▒`ff▒▒▒▒▒▒▒ ▒▒fx▒▒▒f ~ f▒f▒▒`fxf▒▒▒▒`fx▒▒ ~ ▒x▒f▒▒f ~ f▒`▒f▒fx▒ ~ ▒f▒xf▒ ~ ▒▒fx ▒▒x▒▒▒xx▒▒▒▒xx▒▒▒▒x▒▒▒xf▒▒`x▒▒▒▒▒▒fxf▒x▒▒`▒▒▒f▒▒f▒▒f▒fxx▒ x▒ 枘 ▒x▒f▒▒
La resistencia (puede conectar cualquiera, en el rango de 470 ohmios a 1 kOhm) solucionó todo. Y aquí , por ejemplo, el autor generalmente recomienda usar el chip aislador de señal digital AduM1201 para conectarse al UART para el desacoplamiento. Pero la resistencia fue suficiente para mí, lo que también deseo para ti.
Recibimos la señal del enrutador utilizando el programa de terminal en la PC. De alguna manera no tuve éxito con el favorito de Putty, y uso el excelente programa Terminal . Seleccione el puerto COM virtual deseado (en el que se encuentra nuestro USB-UART), establezca los parámetros:
Velocidad: 57600
Bits de datos: 8
Paridad: ninguna
Bits de parada: 1
Y haz clic en Conectar. Ahora, cuando se suministra energía al enrutador, veremos los registros del cargador en la consola:
El cargador de arranque registra A5-V11 como estáU-Boot 1.1.3 (11 de abril de 2013 - 00:10:51)
Tarjeta: Ralink APSoC DRAM: 32 MB
puntero de relocate_code en: 81fb4000
spi_wait_nsec: 42
ID del dispositivo spi: ef 40 18 0 0 (40180000)
Advertencia: ID de chip no reconocido, ¡actualice el gestor de arranque!
raspi_read: desde: 30000 len: 1000
. *** Advertencia: CRC incorrecto, con entorno predeterminado
==============================================
Versión Ralink UBoot: 3.6.0.0
ASIC 5350_MP (Puerto 5 <-> Ninguno)
DRAM_CONF_FROM: Arranque de fleje
DRAM_TYPE: SDRAM
DRAM_SIZE: 256 Mbits
DRAM_WIDTH: 16 bits
DRAM_TOTAL_WIDTH: 16 bits
TOTAL_MEMORY_SIZE: 32 MBytes
Componente Flash: SPI Flash
Fecha: 11 de abril de 2013 Hora: 00: 10: 51
==============================================
icache: conjuntos: 256, formas: 4, líneasz: 32, total: 32768
dcache: sets: 128, maneras: 4, linesz: 32, total: 16384
La frecuencia de la CPU = 360 MHZ
tamaño de memoria estimado = 32 Mbytes
Por favor, elija la operación:
1: Cargue el código del sistema en SDRAM a través de TFTP.
2: Cargue el código del sistema y luego escriba en Flash a través de TFTP.
3: Arranque del código del sistema a través de Flash (predeterminado).
4: interfaz de línea de comando de inicio Entr.
7: Cargue el código del cargador de arranque y luego escriba en Flash a través de serie.
9: Cargue el código del cargador de arranque y luego escriba en Flash a través de TFTP.
4 3 2 1
Elegiste 3
0 0
3: Código del sistema de arranque del sistema a través de Flash.
Imagen de arranque en bc050000 ...
raspi_read: desde: 50,000 len: 40
. Nombre de imagen: MIPS OpenWrt Linux-3.7.5
Creado: 2013-04-11 14:41:22 UTC
Tipo de imagen: MIPS Linux Kernel Image (lzma comprimido)
Tamaño de datos: 915849 Bytes = 894.4 kB
Dirección de carga: 80000000
Punto de entrada: 80,000,000
raspi_read: desde: 50040 len: df989
... Verificando suma de comprobación ... OK
Descomprimiendo la imagen del kernel ... OK
Sin initrd
Transferencia de control a Linux (en la dirección 80000000) ...
Dando Linux memsize en MB, 32
Iniciando kernel ...
[0.000000] Linux versión 3.7.5 (lich @ lich-pc) (gcc versión 4.6.4 20121210 (prelanzamiento) (Linaro GCC 4.6-2012.12)) # 2 jue 11 de abril 22:41:02 CST 2013
[0.000000] bootconsole [early0] habilitado
[0.000000] La revisión de la CPU es: 0001964c (MIPS 24KEc)
[0.000000] Identificación de Ralink RT5350: 1 rev: 3 funcionando a 360.00 MHz
[0.000000] Mapa RAM físico determinado:
[0.000000] memoria: 02000000 @ 00000000 (utilizable)
[0.000000] Mapa de RAM física definida por el usuario:
[0.000000] memoria: 02000000 @ 00000000 (utilizable)
[0.000000] Initrd no encontrado o vacío - deshabilitando initrd
[0.000000] Rangos de zona:
[0.000000] Normal [mem 0x00000000-0x01ffffff]
[0.000000] Inicio de zona móvil para cada nodo
[0.000000] Rangos de nodos de memoria temprana
[0.000000] nodo 0: [mem 0x00000000-0x01ffffff]
[0.000000] Caché de instrucciones primarias 32kB, VIPT, 4 vías, tamaño de línea 32 bytes.
[0.000000] Caché de datos primarios 16kB, 4 vías, VIPT, sin alias, tamaño de línea 32 bytes
[0.000000] Construyó 1 listas de zonas en orden de Zona, agrupando la movilidad. Páginas totales: 8128
[0.000000] Línea de comando del núcleo: placa = consola MPR-A1 = ttyS1,57600 mtdparts = spi0.0: 192k (u-boot) ro, 64k (u-boot-env) ro, 64k (factory) ro, 896k (kernel ), 2880k (rootfs), 3776k @ 0x50000 (firmware) rootfstype = squashfs, jffs2 mem = 32M
[0.000000] Entradas de tabla hash PID: 128 (orden: -3, 512 bytes)
[0.000000] Entradas de la tabla hash de caché de dentry: 4096 (orden: 2, 16384 bytes)
[0.000000] Entradas de la tabla hash de Inode-cache: 2048 (orden: 1, 8192 bytes)
[0.000000] __ex_table ya ordenada, omitiendo la ordenación
[0.000000] Escribiendo el registro ErrCtl = 00023ff6
[0.000000] Readback ErrCtl register = 00023ff6
[0.000000] Memoria: 29632k / 32768k disponible (1969k código del núcleo, 3136k reservado, 473k datos, 180k init, 0k highmem)
[0.000000] SLUB: Genslabs = 9, HWalign = 32, Order = 0-3, MinObjects = 0, CPUs = 1, Nodes = 1
[0.000000] NR_IRQS: 48
[0.000000] consola [ttyS1] habilitada, consola de arranque deshabilitada
[0.000000] consola [ttyS1] habilitada, consola de arranque deshabilitada
[0.010000] Calibración del bucle de retardo ... 239.61 BogoMIPS (lpj = 1198080)
[0.080000] pid_max: predeterminado: 32768 mínimo: 301
[0.080000] Entradas de la tabla hash Mount-cache: 512
[0.090000] NET: protocolo registrado familia 16
[0.100000] MIPS: la máquina es HAME MPR-A1
[0.130000] bio: crear losa <bio-0> en 0
[0.140000] Cambiando a clocksource MIPS
[0.150000] NET: protocolo registrado familia 2
[0.160000] TCP estableció entradas de tabla hash: 1024 (orden: 1, 8192 bytes)
[0.180000] Entradas de tabla hash de enlace TCP: 1024 (orden: 0, 4096 bytes)
[0.190000] TCP: Tablas hash configuradas (establecido 1024 enlace 1024)
[0.200000] TCP: reno registrado
[0.210000] Entradas de tabla hash UDP: 256 (orden: 0, 4096 bytes)
[0.220000] Entradas de tabla hash UDP-Lite: 256 (orden: 0, 4096 bytes)
[0.230000] NET: protocolo registrado familia 1
[0.280000] squashfs: versión 4.0 (31/01/2009) Phillip Lougher
[0.290000] jffs2: versión 2.2 (NAND) (RESUMEN) (LZMA) (RTIME) (CMODE_PRIORITY) © 2001-2006 Red Hat, Inc.
[0.320000] msgmni se ha establecido en 57
[0.320000] io planificador noop registrado
[0.330000] Fecha límite del planificador io registrada (predeterminado)
[0.340000] Serie: controlador 8250/16550, 2 puertos, uso compartido de IRQ deshabilitado
[0.360000] serial8250: ttyS0 en MMIO 0x10000500 (irq = 13) es un 16550A
[0.370000] serial8250: ttyS1 en MMIO 0x10000c00 (irq = 20) es un 16550A
[0.390000] ramips-spi ramips-spi.0: el maestro no está en cola, esto está en desuso
[0.410000] m25p80 spi0.0: encontrado w25q128, esperado pm25lq032
[0.420000] m25p80 spi0.0: w25q128 (16384 Kbytes)
[0.430000] 6 cmdlineparticiones encontradas en el dispositivo MTD spi0.0
[0.440000] Creando 6 particiones MTD en "spi0.0":
[0.450000] 0x000000000000-0x000000030000: "u-boot"
[0.460000] 0x000000030000-0x000000040000: "u-boot-env"
[0.480000] 0x000000040000-0x000000050000: "fábrica"
[0.490000] 0x000000050000-0x000000130000: "núcleo"
[0.500000] 0x000000130000-0x000000400000: "rootfs"
[0.520000] mtd: partición "rootfs" configurada como sistema de archivos raíz
[0.530000] mtd: partición "rootfs_data" creada automáticamente, ofs = 380000, len = 80000
[0.550000] 0x000000380000-0x000000400000: "rootfs_data"
[0.560000] 0x000000050000-0x000000400000: "firmware"
[0.580000] ramips-wdt ramips-wdt: el valor del tiempo de espera debe ser 0 <tiempo de espera <= 35, utilizando 35
[0.600000] TCP: cúbico registrado
[0.610000] NET: familia de protocolos registrada 17
[0.620000] 8021q: Soporte de VLAN 802.1Q v1.8
[0.650000] VFS: raíz montada (sistema de archivos squashfs) de solo lectura en el dispositivo 31: 4.
[0.660000] Liberando memoria del núcleo no utilizada: 180k liberados
[5.100000] input: gpio-keys-polled como / devices / platform / gpio-keys-polled / input / input0
[5.210000] Botón Hotplug driver versión 0.4.1
- preinit - Presione la tecla [f] y presione [enter] para ingresar al modo a prueba de fallas
Al leer y mirar a través de los registros, es importante no perder el momento y cuándo habrá una línea de este tipo:
Por favor, elija la operación:
1: Cargue el código del sistema en SDRAM a través de TFTP.
2: Cargue el código del sistema y luego escriba en Flash a través de TFTP.
3: Arranque del código del sistema a través de Flash (predeterminado).
4: interfaz de línea de comando de inicio Entr.
7: Cargue el código del cargador de arranque y luego escriba en Flash a través de serie.
9: Cargue el código del cargador de arranque y luego escriba en Flash a través de TFTP.
Necesita tener tiempo rápidamente para presionar el número "2". Luego veremos lo siguiente:
Elegiste 2
2: System Load Linux Kernel luego escribe en Flash a través de TFTP.
Advertencia !!! Borre Linux en Flash y luego queme uno nuevo. ¿Estás seguro? (S / N)
Ingrese los nuevos / o Ctrl-C para descartar
IP del dispositivo de entrada (10.10.10.123) ==: 10.10.10.123
IP del servidor de entrada (10.10.10.3) ==: 10.10.10.3
Ingrese el nombre de archivo del kernel de Linux () ==: openwrt-ramips-rt305x-a5-v11-squashfs-sysupgrade.bin
Presione "Y" secuencialmente, ingrese, ingrese, "openwrt-ramips-rt305x-a5-v11-squashfs-sysupgrade.bin". En este último caso, será necesario registrar manualmente el nombre de nuestro firmware, que deberá cargarse en el servidor tftp lanzado anteriormente. Usé el programa TFTPD64 para este propósito. Después de activar la descarga del firmware de la consola, debe conectar nuestro A5-V11 a una computadora cuya dirección IP coincida con la especificada en la consola. Por cierto, para conectarme directamente (ala "unidad flash usb"), hice los adaptadores RJ45-RJ45. Son muy convenientes para usar con un enrutador.

Adaptadores RJ45-RJ45 y su circuito El enrutador se coserá y después del reinicio estará listo para realizar nuevas misiones de combate. Por cierto, si no fue posible flashear con la consola, volvemos a la parte del "programa" del artículo y flasheamos el firmware openwrt-ramips-rt305x-a5-v11-squashfs-sysupgrade.bin a través del antiguo AsProgrammer, pero no desde la dirección 0, sino desde 327680 ( !).
Adición: no puede jugar con la búsqueda de bytes y modificar el firmware nativo, pero llene el programador con un microchip chino Breed de un amigo Hackpascal en el nuevo chip, para nuestro V5 la última opción encontrada es breed-rt5350-hame-a5-r1163.bin . Y ya desde este mejor (en mi humilde opinión) hasta la fecha, el gestor de arranque para flashear todo lo que necesita. Todavía hay todo tipo de cosas dignas de un artículo separado, PERO, pero maldita sea, el firmware no tiene localizaciones, en chino. Parece que los términos técnicos son claros ... Pero el "sedimento permaneció". Los chinos, en principio, no hacen contacto :(
Quinta parte, información ("Nota")
Al final de la historia, me gustaría decir algunas palabras sobre los dispositivos que hacen que el uso de nuestro A5-V11 sea más cómodo.
En primer lugar, este es un adaptador en forma de U para un puerto USB. Un dispositivo indispensable, cuando se comparte un enrutador con una unidad flash USB / lector de tarjetas / módem 3G-4g / sintonizador SDR finalmente :)

Entonces los adaptadores se ven en vivo El segundo "hito" importante cuando se trabaja con el mini enrutador descrito es un concentrador USB. Sí, con un diseño muy complicado de puertos USB. El diseño vertical de este centro pasivo está presionando para la compra de " hongos " Bluetooth en algunos CSR8510 . Desde pequeño, me gusta el concepto de PC industriales de Octagon ( MicroPC ) y sus “ sandwiches ” verticales de PC / 104. Con el centro mencionado, existe la oportunidad de hacer algo similar (por cierto, si uno de los lectores encuentra algo similar interesante en la extensión de las subastas en línea, por favor comparta en los comentarios).

Genesys Logic Inc. GL8506 Chip a bordo

En principio, en lugar de un puerto USB vertical, es bastante posible colocar el pequeño llavero USB-Bluetooth descrito anteriormente o un lector de tarjetas microSD en miniatura .

Y parece un "sándwich de microrouter" ya preparado :)

Más sándwiches de micro habr Y finalmente, lo más delicioso. Existe una oficina en Nueva Zelanda CloudStore en el mundo que es conocida por sus productos bajo la marca Airconsole . Estos dispositivos son buenos, entre otras cosas, y el hecho de que son los únicos legalmente y por un precio razonable para conectar todo tipo de registradores RS232 a iOS. , , RS232. .
:)
COM/USB , Moxa*, Perle* Opengear*? AirConsole , .
, . . " 10 " :)
Airconsole Mini (69$) Hame A15 (6.9$) Airconsole Standart (79$) Hame MPR-A1 (7.9$) Airconsole XL (139$) Hame MPR-A3 (13.9$) , , . :) . " . . , . . ".
" A5-V11 Airconsole". Ham 6$ Airconsole 69$. , Zyxel Keenetic 4G II .
Por cierto, si de repente entre los lectores hay propietarios del AirConsol original que ya los abrió, con gusto aceptaré tableros de fotos como regalo y completaré el artículo :)
Bueno, en principio, todo lo que quería decir. Gran parte de lo que está escrito aquí es aplicable a otro hardware (compacto) y espero que sea útil para el "amplio público" :)
ps Para los propietarios de NEXX WT3020F, TP-Link TL-MR3020, TP-Link TL-WR703N (es decir, todos los enrutadores con una carcasa bastante espaciosa) mencionados al comienzo del artículo, un concentrador de bajo costo en el chip HS8836 que se muestra a continuación puede ser una opción muy conveniente para incrustar :
Por si acaso, el circuito que se encuentra aquí se muestra debajo del spoiler.
Diagrama esquemático de un hub chino de 3 puertos en el HS8836 La ventaja principal, en mi opinión, además del tamaño en miniatura y el mínimo de piezas, es el montaje de la placa con el controlador y los puertos USB a través de cables. Para incrustar en el enrutador: un mínimo de movimientos del cuerpo, aunque aún puede instalar una placa de radiador de aluminio en el chip.
Actualización de 2019 : tenemos en nuestras manos la refrigeración de Walti . Detalles debajo del spoiler
Placa de enfriamiento externaEn primer lugar, encontré y corté una placa de aluminio adecuada con un grosor de 1 mm.
Taladré agujeros para los tornillos M1 y corté el hilo en la placa (estaba esperando especialmente el toque en el M1)
Intenté apretar más las tuercas M1. Aferrado a mi bolsillo, no me gustó, así que rechacé esta idea y simplemente afilé los extremos sobresalientes de los tornillos.
( ) 1,5 .
—
( - ) .
— :).
Adición de artem_kramov con respecto a wifi roto al reemplazar flash. Moral: mantenga un volcado completo y transfiera la sección de configuración con la configuración del módulo wifi
Más detalles: - Wi-Fi . 4 , , 8 Wi-Fi ( ). , , .
: , Config ( ), Wi-Fi. Breed, . , Ethernet, Config Wi-Fi . - , , - .
Ubicación GPIO en el enrutador (tomada de aquí )
A5-V11 GPIO (foto en la que se puede hacer clic)Cableado GPIO en A5-V11
Un ejemplo:
22- - gpio 22 está vinculado a Gnd
25+ - gpio 25 está vinculado a + 3.3V
sda, scl es mejor usar en 21 y 26 (reemplace las resistencias con Gnd, ponga 10kΩ). Solo en estos, con el LCD 1602, 2004 conectado y la fuente de alimentación, el enrutador se inicia normalmente, en otros gpios es necesario conectar la alimentación del módulo un poco más tarde, de lo contrario el enrutador no se inicia.
A los 25 (w1) use el sensor ds1820, porque ya está vinculado a + 3.3V a través de 4.7kOhm.
Gpio 21 calculó primero que iba a salir por el pistón, soldado al pistón (nano), pero luego resultó que estaba sentado en el suelo a través de un ohmio de 1k por alguna razón. Luego fue a este hilo y lo reemplazó con gpio 26 con 10kOhm.
Fuentes utilizadas- http://skproj.ru/hame-mpr-a1-proshivka-openwrt-i-apgrejd-fleshki-na-16-ili-8-megabajt/?doing_wp_cron=1472313516.0620179176330566406250
- http://w3bsit3-dns.com/forum/index.php?showtopic=884713&
- https://github.com/nofeletru/UsbAsp-flash/releases/
- http://forum.easyelectronics.ru/viewtopic.php?f=17&t=10947
- http://my-embedded.blogspot.com/2013/12/mini-4g-router-rt5350f.html
- http://eko.one.pl/?p=openwrt-gpio2
- https://habr.com/post/238713/
- https://nm-projects.de/2017/09/analysis-of-mini-3g4g-wifi-wireless-router-a5-v11/
- https://tuxotronic.org/wiki/tools/flashrom/
- http://srr.cherkessk.ru/owrt/help-owrt.html
- https://tuxotronic.org/wiki/openwrt/rt5350/build-firmware/
- https://mysku.ru/blog/aliexpress/27796.html
- https://habr.com/post/247513/
Importante! Todas las actualizaciones y notas provisionales a partir de las cuales los artículos habr se forman sin problemas ahora se pueden ver en mi canal de telegramas lab66 . Suscríbete para no esperar el próximo artículo, sino para estar inmediatamente informado sobre toda la investigación :)