BandaAncha.eu

Comunidad de usuarios
de fibra, móvil y ADSL

Habilitar puerto telefónico RJ11 en router Huawei HG556a con OpenWrt

Nixie

Tengo un router Huawei HG556a como router 3G y últimamente creo que se le saturaba la tabla NAT o algo que empezaba a ir muy lento todo y al poco quedaba sin conexión. Comprobado que era el router ya que el USB 3G en el PC con Mobile Partner funciona perfectamente. Así que he instalado OpenWrt a ver si funciona mejor, la versión 21.02.3 que es la que hay en la página de OpenWrt para este router.

Con algo de trabajo se configura todo y funciona, lo he podido hacer todo mediante la interface web Luci, no he necesitado teclear ningún comando. De paso comento algunas cosillas que me he encontrado para que otros no tengan que dedicar horas a rebuscar soluciones.

  • La versión actual no admite telnet, solo ssh
  • El DHCP solo asignaba IPv6 pero no IPv4. Esto es debido a haber puesto una IP en la interfaz LAN apartado Default gateway (puerta de enlace predeterminada). Se debe borrar la IP y guardar dejando el campo en blanco y ya vuelve a funcionar el DHCP. Esto pasa porque para instalar paquetes se debe dar acceso a internet conectando a otro router y se debe cambiar la IP para que no sea la misma que el router al que se conecta y poner la IP del otro router en ese campo. Parece que eso lo asume como que las IPs las asigna el otro router y deja de asignarlas él.

Edito: no sé si me tengo que retractar del punto anterior, creo que OpenWrt o Luci aún tienen algún bug. Resulta que al quitar esa IP y ponerse a funcionar el DHCP notaba la navegación muy lenta, concretamente cada vez que le daba a un link tardaba unos 15-20 segundos en empezar a cargar, luego ya cargaba rápido pero esa espera inicial no la veía normal (pensé mala cobertura 3G o algo puntual pero hoy seguía igual). Así que he empezado a tocar y deshacer todo lo que toqué ayer y he descubierto que volviendo a poner como Default gateway la IP del router que ya no está conectado, vuelve a funcionar bien y además sigue funcionando el DHCP. Así que no está claro ni qué pasaba con el DHCP ni qué pasaba con esa espera, que era algo así como si intentara enviar los datos a otro sitio y al no obtener respuesta tras un tiempo los mandara por la salida de internet.

En la página de OpenWrt se indica la existencia de un driver no oficial para habilitar el puerto telefónico con algunos comentarios de que funciona.

Pensaba que sería más fácil instalar ese driver pero ya veo que no, no aparece en el repositorio de OpenWrt ni encuentro una versión compilada. ¿Cómo es que nadie se le ha ocurrido colgar el módulo compilado listo para cargar?

Yo no estoy por la labor ni tengo el tiempo de instalar un Linux en un PC para compilar ese módulo (porque me parece entender que eso se compila en un PC y no en el propio router ¿no?).

Luego otra duda que tenía es, suponiendo que llega a funcionar ese módulo, se habla de configurar a Asterisk, que deduzco sirve para manejar conexiones VoIP, pero lo que yo quería es utilizar la línea móvil de la SIM tal como hacía el firmware original. ¿Eso sería posible?

bancho
2

¿Como es que nadie se le ha ocurrido colgar el módulo compilado listo para cargar?

Porque es un follón de tres pares de narices para un modelo de router de hace más de 10 años, básicamente.

pero lo que yo quería es utilizar la línea móvil de la SIM tal como hacía el firmware original. ¿Eso sería posible?

No, esto sólo te activa el uso del puerto telefónico, no el que use el audio desde un módem 3G para lo cuál necesitarás algo como github.com/wdoekes/asterisk-chan-dongle, instalar Asterisk o algún equivalente en el propio router y empalmar todo el invento. Todo esto probablemente teniendo que compilar el módulo del kernel que probablemente ni sea compatible con kernel reciente, con un cross-compiler para la arquitectura que lleva el router…

En definitiva, depende del tiempo libre que tengas y cuánto quieras aprender, si no tienes conocimientos ni tiempo para hacerlo (esto es bastante avanzado y vas a estar en tierra de nadie) yo tiraría a un router con 4G actual estilo el Huawei B310 que hacen ya lo que quieres hacer porque el tiempo que le vas a tener que echar te va a costar más de los 50 euros que vale. O eso, o volver al firmware original.

🗨️ 1
Weikis336

El modem en el Router que utiliza es extraño le y puede cambiarlo.

vukits

hay que compilar uno cada vez que sale una versión de Linux ;)

vukits

Yo no estoy por la labor ni tengo el tiempo de instalar un Linux en un PC para compilar ese módulo…

Es que OpenWrt es Linux . creo que es buen momento para aprender.

lhacc
2

Compilar OpenWrt es muy fácil y se puede hacer con WSL2 desde Windows.

Con respecto a que no hay telnet, telnet es inseguro y ya no se usa.

Nixie

Gracias por las aportaciones. Contesto a todos aqui.

Porque es un follón de tres pares de narices

Pero el autor del módulo lo tuvo que compilar para probarlo, podría haber hecho disponible su compilación indicando la versión para la que lo compiló. A mi me da igual usar una versión anterior de OpenWrt, solo quiero que el router funcione bien.

No, esto sólo te activa el uso del puerto telefónico, no el que use el audio desde un módem 3G para lo cuál necesitarás algo como github.com/wdoekes/asterisk-chan-dongle, instalar Asterisk o algún equivalente en el propio router y empalmar todo el invento.

Ya, me refería a si Asterisk u otro podrán acceder a la línea móvil, ya veo que sí, el que indicas está en el repositorio de OpenWrt, gracias por la referencia:

asterisk-chan-dongle 2021-10-06-3d046f7d-1 89.2 KB Asterisk channel driver for Huawei UMTS 3G dongle.

Entiendo que se trata de un wrapper que hace accesible la línea móvil del pincho USB a asterisk y por lo tanto no tendría problema. Asterisk también está, así como muchos paquetes variopintos para otros usos.

Por cierto, el kernel es el 5.4.188, no parece muy anticuado.

hay que compilar uno cada vez que sale una versión de Linux ;)

Pero este módulo es solo para OpenWrt y solo para este router. O sea, distribuyendo el binario debería funcionar en la versión de OpenWrt con la que se compiló y luego podría funcionar o no con futuras versiones dependiendo del grado de compatibilidad binaria que hayan mantenido.

Lo de no poner el binario por si en las futuras versiones de OpenWrt rompen la compatibilidad binaria me parece a mi ser muy purista y nada práctico. Deja fuera mucha gente que no sabe o no tiene ganas de ponerse a montar el entorno para compilarlo.

Compilar OpenWrt es muy fácil y se puede hacer con WSL2 desde Windows.

Gracias, lo reviso. Pero en la escueta descripción del módulo no indica nada de integrarlo en el kernel, dice que se compila en forma de módulo insertable (fichero .ko) y se instala con insmod. Esto yo entiendo que no implica recompilar el kernel. Otra cosa es desactivar el SPI integrado del kernel, que hay que ver si se puede hacer tocando un fichero de configuración.

Con respecto a que no hay telnet, telnet es inseguro y ya no se usa.

En la propia página donde bajas esta versión de OpenWrt indica en los pasos de instalación que para empezar puedes conectar por telnet, ssh o web. Estuve 1 hora intentando conectar por telnet probando IPs, puertos, conectores, hasta que se me ocurrió buscar en Google, solo lo indicaba para que otro no pierda el tiempo así. Aunque me parecería raro a día de hoy usar telnet en internet, no me parece tan raro usarlo en una red local doméstica.

Es que OpenWrt es Linux . creo que es buen momento para aprender.

Sin duda, pero no ando muy sobrado de tiempo. Sería interesante especialmente si se pudieran usar pinchos USB 4G, que me permitirían alargar la vida de estos routers (tengo dos) más allá del apagado del 3G. Lo tengo que investigar un poco pero no me sorprendería viendo la cantidad de paquetes disponibles que haya controladores para otros dongles más modernos.

Yo me peleé con Linux hace 20 años y lo tengo todo bastante olvidado. Aquella vez aprovechando un Pentium I monté un servidor con Red Hat 7.2 instalado sin interfaz gráfica, linmodem para conectar con un winmodem (época de 56k), con iptables lo convertí en un router y con una tarjeta de red y un switch daba internet a un par de ordenadores. Además configuré un servidor de correo (tenía mi propio correo con no-IP que cuando hotmail daba 2mb de espacio yo tenia un par de gb), carpetas compartidas con samba y el emule con mlnet que ese sí lo compilaba. Creo que hoy en día a eso lo llamáis NAS.

Para reducir al máximo el consumo una vez funcionando todo le quité teclado, ratón y tarjeta gráfica y lo gestionaba por ssh. El día que tenía que tocar alguna regla de iptables como me equivocara en algo (que me pasó) me quedaba bloqueado fuera y tenia que apagarlo, volverle a poner teclado y tarjeta gráfica para solucionarlo. Pronto aprendí a no poner el guardado permanente dentro del script, así solo reiniciando podía volver a intentar.

Ahora usando OpenWrt me ha recordado un poco a aquello, claro que ahora muchas cosas ya me han venido puestas y configuradas.

🗨️ 5
vukits
1

dependiendo del grado de compatibilidad binaria que hayan mantenido.

has tocado ahí un tema muy sensible con el kernel de Linux… hay ríos de tinta que se han escrito sobre el ABI de Linux … es super cambiante…

y es que un módulo que te funciona con una versión 4.3.4 p.e, del kernel ( y me refiero a nivel de código fuente), en la 4.3.5 no está garantizado funcionar, (al menos que sea parte del árbol principal de código del kernel).

ahora ando pegandome con un deco OHD80, sino probaba a compilar el módulo (calculo que en tres meses habré acabado).

tengo un hg556a en casa, y un dongle 3G…

🗨️ 1
Nixie
1

¡Gracias! Tampoco pretendía que me hicierais el trabajo.

Antes de nada tengo que investigar la forma de desactivar el SPI integrado del kernel, si aún lo tiene, ya que colisiona con el control SPI que hace este módulo directamente. El autor lo hace tocando una configuración del fuente del kernel y recompilándolo pero debería existir una forma mejor.

lhacc
2

Gracias, lo reviso. Pero en la escueta descripción del módulo no indica nada de integrarlo en el kernel, dice que se compila en forma de módulo insertable (fichero .ko) y se instala con insmod.

Yo no he visto eso. Te dicen que bajes el repo de OpenWrt, añadas este módulo a los feeds, y compiles el firmware entero. github.com/pgid69/bcm63xx-phone#compilation

El repo ya tiene cuatro años, así es que es posible que ni siquiera compile con las versiones recientes del kernel.

🗨️ 2
Nixie

Vale, ya veo. Me he confundido con esta "issue":

github.com/pgid69/bcm63xx-phone/issues/15

Aqui este usuario dice que inserta el módulo con insmod, no sé si está reportando indirectamente otra forma de ponerlo.

🗨️ 1
lhacc

Da igual porque según eso tienes que compilar una versión de OpenWrt con SPI desactivado.

esteveli
1

La cuestión por la que no se ofrecen archivos compilados directamente en OpenWrt es que hay muchos paquetes que dependen directamente del hash del kernel que tienes en ese momento, que sucede, que si te doy un paquete compilado y este depende del kernel, no lo podrás instalar a no ser que hagas una build completa.

Por la naturaleza del paquete, diría que si altera directamente el kernel, yo creo que lo mejor es que te busques un Huawei B310 o similar en walapop.

🗨️ 2
Nixie

Si esto es así, se diría que al recompilar el kernel con este módulo, ¿dejaría de ser compatible con todos los módulos disponibles en OpenWrt, al tener el nuevo kernel otro hash?

🗨️ 1
esteveli
1

Correcto, para instalar ese paquete tendrás que recompilar