Introducción
En AIknow, hemos tenido que gestionar conexiones 4G en numerosos dispositivos IoT basados en Linux a lo largo de los años, desde las soluciones más sencillas hasta complejas pasarelas industriales. Nuestra experiencia nos ha llevado a través de una evolución natural en el uso de herramientas de gestión de la conectividad: partiendo de la tradicionalwvdial
a NetworkManager
, y descubriendo ModemManager
como una herramienta fundamental para la depuración y monitorización.
Este artículo relata nuestro viaje, compartiendo los problemas que encontramos, las soluciones que desarrollamos y los criterios que utilizamos ahora para elegir la herramienta más adecuada para cada proyecto.
Los primeros pasos: wvdial y el enfoque directo
Porque empezamos con wvdial
En nuestros primeros proyectos con conectividad 4G, wvdial
parecía la opción más natural: una herramienta sencilla, ligera y directa que utilizaba el protocolo PPP para establecer conexiones a través de módems celulares. La configuración parecía sencilla y la documentación, aunque limitada, era clara.
Las ventajas que apreciamos
El uso de wvdial nos mostró de inmediato algunas ventajas significativas:
Ligereza extrema: El consumo de recursos fue mínimo, ideal para dispositivos con RAM limitada (64-128MB). En estos sistemas, wvdial dejaba espacio suficiente para la aplicación principal sin comprometer el rendimiento.
Simplicidad de configuración: Un único archivo /etc/wvdial.conf
contenía todo lo necesario para la conexión. La configuración era transparente y fácil de entender. A continuación se muestra un ejemplo:
[Dialer Defaults] Init1 = ATZ Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 Init3 = AT+CGDCONT=1,\"IP\",\"your.apn.here\",,0,0 Modem Type = Analog Modem ISDN = 0 Modem = /dev/ttyUSB0 Baud = 9600 Phone = *99# Username = your_username Password = your_password New PPPD = yes
Control directo: La posibilidad de intervenir directamente sobre los comandos AT enviados al módem nos daba un control total sobre el proceso de conexión.
Los temas que nos hicieron pensar
Sin embargo, al utilizar wvdial en proyectos reales, encontramos importantes limitaciones:
Gestión de las desconexiones: El punto más crítico. wvdial no disponía de mecanismos robustos para gestionar las desconexiones de forma automática. Cuando se caía la conexión -debido a problemas de señal, reinicios de la red del operador o simplemente tiempos de espera- teníamos que implementar scripts externos para detectar la situación y volver a conectar.
Falta de abstracción: Cada cambio de módem u operador requería cambios manuales de configuración. No existía una capa de abstracción que gestionara automáticamente las diferencias entre dispositivos.
Depuración compleja: cuando algo no funcionaba, teníamos que analizar manualmente los registros de PPP e interactuar directamente con el módem mediante comandos AT para entender qué estaba pasando.
Cuándo elegir wvdial
A pesar de sus limitaciones, wvdial sigue siendo nuestra elección en contextos específicos:
- Dispositivos con menos de 256 MB de RAM en los que cada recurso cuenta
- Proyectos con presupuestos de hardware muy reducidos
- Instalaciones en las que podemos tolerar breves interrupciones del servicio
- Situaciones en las que tenemos pleno control del entorno y podemos implantar sistemas de vigilancia personalizados
ModemManager para comprobar el estado del módem
El problema de la depuración
Uno de los mayores problemas de wvdial era la dificultad para diagnosticar problemas de conexión. A menudo teníamos que abrir una sesión serie directa con el módem y enviar comandos AT para obtener información básica como:
- Calidad de la señal (
AT+CSQ
) - Información del operador (
AT+COPS?
) - IMEI del dispositivo (
AT+CGSN
) - SIM ICCID (
AT+CCID
) - IMSI de la SIM (
AT+CIMI
) - APN configurado (
AT+CGDCONT?
) - Estado del PIN SIM (
AT+CPIN?
) - IP asignada a la conexión (
AT+CGPADDR
)
ModemManager como herramienta de diagnóstico
El descubrimiento de ModemManager revolucionó nuestra forma de depurar las conexiones 4G. A través de mmcli
, obtuvimos acceso instantáneo a toda la información del módem sin tener que interactuar directamente con comandos AT.
# Informazioni complete sul modem mmcli -m 0 # Qualità del segnale in tempo reale mmcli -m 0 --signal-get # Informazioni sulla SIM mmcli -m 0 --sim=0 # Stato della connessione mmcli -m 0 --bearer=0
Las ventajas de ModemManager
ModemManager nos proporcionó:
- Abstracción de los comandos AT: ya no teníamos que recordar la sintaxis específica de cada módem para obtener información básica.
- Información estructurada: los datos se presentaron en un formato legible y analizable, lo que facilitó la automatización del seguimiento.
- Compatibilidad ampliada: admite automáticamente una amplia gama de módems sin necesidad de configuración adicional.
- Integración con scripts: Podríamos integrar fácilmente la información de ModemManager en nuestros sistemas de monitorización.
El uso de comandos AT para casos específicos
Aunque ModemManager cubría la mayoría de nuestras necesidades, en algunos casos aún teníamos que recurrir a comandos AT directos:
# Accesso diretto al modem per comandi specifici echo "AT+COPS=?" > /dev/ttyUSB2 # Scansione operatori disponibili echo "AT+CGDCONT?" > /dev/ttyUSB2 # Verifica configurazione APN echo "AT+CREG?" > /dev/ttyUSB2 # Stato registrazione rete
Los comandos AT siguieron siendo útiles para:
- Configuraciones avanzadas específicas del módem
- Depuración de problemas particulares no cubiertos por ModemManager
- Optimizaciones específicas para determinados operadores
- Pruebas experimentales de funcionalidad
La evolución hacia NetworkManager: fiabilidad y robustez
Por qué dimos el salto
A medida que nuestros proyectos se hacían más complejos y necesitábamos conexiones más fiables, las limitaciones de wvdial se hacían cada vez más evidentes. NetworkManager prometía resolver muchos de los problemas que encontrábamos al ofrecer un sistema de gestión de conexiones más robusto y automatizado.
Las ventajas que apreciamos de inmediato
- Gestión automática de las conexiones: La ventaja más inmediata fue la gestión automática de las reconexiones. NetworkManager supervisa constantemente el estado de las conexiones y se reconecta automáticamente en caso de interrupción.
- Integración con ModemManager: La integración nativa con ModemManager nos dio acceso instantáneo a toda la información del módem sin necesidad de configuración adicional.
- Compatibilidad ampliada con hardware: ya no teníamos que preocuparnos de las particularidades de cada módem; NetworkManager gestionaba automáticamente las diferencias entre los distintos dispositivos.
- Configuración centralizada: todas las conexiones pueden gestionarse a través de una interfaz unificada, lo que simplifica el mantenimiento.
- Perfiles de conexión avanzados: Se pueden configurar conexiones múltiples, prioridad, conmutación por error y otras funciones avanzadas.
Los retos a los que nos enfrentamos
- Mayor consumo de recursos: NetworkManager requiere más RAM y CPU que wvdial. En dispositivos con 256 MB de RAM, notamos un impacto significativo en el rendimiento, especialmente durante los picos de actividad.
- Complejidad de la configuración: Para escenarios avanzados, la configuración se vuelve más compleja. La configuración de la conmutación por error entre diferentes conexiones o la integración con VPN requiere un conocimiento profundo de la arquitectura de NetworkManager.
- Depuración en más capas: Cuando algo no funciona, tenemos que investigar la interacción entre NetworkManager, ModemManager y el kernel. La depuración requiere el conocimiento de múltiples capas del sistema.
- Dependencias importantes: NetworkManager introduce más componentes en el sistema, lo que aumenta la superficie de posibles problemas y la complejidad de la implantación.
Cuando se utiliza NetworkManager
NetworkManager se ha convertido en nuestra elección estándar, en particular para:
- Instalaciones críticas: donde la fiabilidad de la conexión es prioritaria
- Sistemas complejos: requieren configuraciones de red avanzadas (failover, VPN, bridging)
- Entornos de producción: donde necesitamos herramientas sólidas de supervisión y gestión
Pros y contras de nuestra experiencia
wvdial – Ventajas:
- Consumo mínimo de recursos
- Configuración sencilla y transparente
- Control directo de los comandos enviados al módem
- Ideal para dispositivos con recursos limitados
- Depuración relativamente sencilla (una vez incluidos PPP y AT)
wvdial – Desventajas:
- Gestión manual de reconexiones
- Falta de abstracción del hardware
- Depuración compleja de problemas de conectividad
- Necesidad de guiones externos para mayor solidez
- No apto para entornos de producción críticos
NetworkManager – Ventajas:
- Gestión automática y robusta de las conexiones
- Soporte de hardware ampliado y automático
- Integración nativa con ModemManager
- Funciones avanzadas (conmutación por error, prioridad, perfiles)
- Herramientas integradas de depuración y supervisión
- Adecuado para entornos de producción
NetworkManager – Desventajas:
- Mayor consumo de recursos (RAM y CPU)
- Complejidad de configuración para escenarios avanzados
- Más componentes que gestionar y posibles puntos de fallo
- Curva de aprendizaje más pronunciada
- Excesivo para aplicaciones sencillas
Herramientas de apoyo y mejores prácticas
Nuestras herramientas de diagnóstico
Independientemente de la herramienta principal elegida, hemos desarrollado un conjunto de procedimientos de diagnóstico que utilizamos sistemáticamente en todos los proyectos:
Comprobación del estado del módem:
mmcli -L
para listar los módems detectados por el sistemammcli -m 0
para obtener información completa sobre el módem principalmmcli -m 0 --signal-get
para controlar la calidad de la señal en tiempo real
Control de la información SIM:
mmcli -m 0 --sim=0
verificar IMSI, ICCID y operador- Comandos AT directos
AT+CPIN?
para comprobar el estado del PIN AT+CIMI
yAT+CCID
para verificaciones alternativas de IMSI e ICCID.
Prueba de conectividad básica:
- Ping a DNS público (<
ping -c 3 8.8.8.8
yping -c 3 1.1.1.1
) - Comprobación de resolución DNS (
nslookup google.com
) - Pruebas de conectividad HTTP/HTTPS con
curl
Análisis de interfaces de red:
ip addr show
para mostrar todas las interfaces activasip route show
verificar las tablas de enrutamiento- Control específico de interfaces celulares (ppp, wwan, usb)
Control del tráfico de datos:
- Análisis de contadores en
/proc/net/dev
para interfaces celulares. ifconfig
para estadísticas detalladas de TX/RX- Control en tiempo real de la utilización del ancho de banda
Depuración avanzada con comandos AT:
AT+CSQ
para la calidad de la señal cuando ModemManager no está disponibleAT+CGDCONT?
para comprobar la configuración APNAT+CGPADDR
para comprobar la IP asignada a la conexiónAT+COPS?
para obtener información sobre el operador de red
Comprobación del estado de las conexiones:
nmcli connection show
para conocer el estado de los perfiles de NetworkManagernmcli device status
para comprobar el estado de los dispositivos- Análisis del registro del sistema (
journalctl -u NetworkManager
o/var/log/messages
)
Criterios de selección basados en nuestra experiencia
Tras años de proyectos, hemos definido criterios claros de selección:
Elige wvdial cuando:
- RAM disponibile < 256MB
- Presupuesto de hardware extremadamente limitado
- Conectividad sencilla sin requisitos de alta disponibilidad
- Equipo con experiencia en sistemas para gestionar guiones personalizados
- Tolerancia a las interrupciones breves del servicio
- Control total del entorno de implantación
Elija NetworkManager cuando:
- RAM disponible > 512 MB
- Altos requisitos de fiabilidad y disponibilidad
- Configuraciones de red complejas
- Entornos de producción críticos
- Necesidad de herramientas de supervisión integradas
- Equipo con competencias avanzadas en administración de sistemas
Otras alternativas: ConnMan como opción intermedia
Cabe mencionar que ConnMan también existe como alternativa intermedia.
Diseñado específicamente para sistemas embebidos, ofrece un interesante compromiso entre la ligereza de wvdial y la funcionalidad de NetworkManager.
Sin embargo, nuestra experiencia se ha centrado en las dos herramientas principales para la mayoría de nuestros casos de uso.
Conclusiones y recomendaciones
Nuestra evolución de wvdial a NetworkManager refleja la maduración de nuestras necesidades y la complejidad de los proyectos.
Ambas herramientas tienen su lugar en nuestra caja de herramientas, y la elección depende siempre de los requisitos específicos del proyecto.
ModemManager resultó crucial independientemente de la elección principal, ya que proporcionaba información esencial para la depuración y la supervisión sin tener que recurrir constantemente a comandos AT directos.
Los comandos AT siguen siendo una herramienta indispensable para situaciones específicas y depuración avanzada, aunque ModemManager ha reducido significativamente la necesidad de utilizarlos a diario.
La lección más importante que hemos aprendido es que no existe una solución única: la elección debe guiarse siempre por las limitaciones reales del proyecto, como los recursos de hardware, los requisitos de fiabilidad o la complejidad de la aplicación.
Para futuros proyectos, seguimos evaluando nuevas soluciones, pero la combinación de NetworkManager + ModemManager sigue siendo nuestro estándar para la mayoría de las implementaciones modernas de IoT que requieren una conectividad 4G fiable y robusta.
¿Ha tenido experiencias similares en la gestión de conexiones 4G en dispositivos IoT, o necesita apoyo para configurar la conectividad de su proyecto? Póngase en contacto con nosotros para compartir su experiencia o para recibir asistencia técnica especializada.