martes, 31 de marzo de 2020

¿Cómo uso Minimodem para simular un módem en Ubuntu?

En su Conducción Política, Juan Perón define la necesidad que un Conductor Político ha de tener, entre ellas comunicarse con la Masa. También explica cómo utilizar Minimodem para modular y demodular audio con datos digitales en Ubuntu.


(...)
¡Trabajadores!

Un Conductor es un hombre capaz de dirigir a las Masas, pero ello no lo separaría de un dirigente. Un Conductor en cambio presenta también la condición de ser un hombre evolucionado y previsor. Ha de conocer especialmente las condiciones de vulnerabilidad de la masa y poder operar en ellas llegado el caso.

Sólo un hombre que así lo sea podrá ser efectivo en el quehacer que le depara la Patria.

Podemos inducir que entre el Conductor y el Pueblo existe una conexión full dúplex. Esto significa que seremos capaces de recibir intuitivamente información del Pueblo a la vez que le instruímos. Este es el grado superior que ha de de alcanzar la comunicación, y la fundamental para conducir al Movimiento.
La conducción que he impreso a nuestro Movimiento sin duda haya su inspiración en la trasmisión telemática, que le puede servir de ejemplo. Vean señores, no era extraño que las computadoras contaran con redes de datos que les permitían compartir lo que hoy llamamos contenidos entre distintos sistemas. No se dejó pasar mucho tiempo antes que comenzaran a utilizar la infraestructura de líneas telefónicas del Estado para portar dichos datos. Lo hacían a través de una ignota modulación acústica de chirridos y pitidos. Para ello se hizo necesario emplear de nexo ciertos aparatos moduladores y demoduladores de datos, los acopladores acústicos, que se siguieron utilizando durante mucho tiempo.

Estos acopladores - si bien permitían la flexibilidad de tornar una infraestructura ya tendida y dispuesta - eran engorrosos. En principio solían ser específicos para cada arquitectura de sistema, y debía realizarse una serie de operaciones manuales para establecer en enlace telemático. Debía disponerse previamente la configuración técnica de la llamada en el software de la computadora local, levantar el tubo y oír tono de discado,  discar el número del sistema remoto, esperar su respuesta, y ajustar el tubo en las orejeras de de goma del acoplador a fin de que el aparato pudiese transmitir y recepcionar el sonido de la comunicación modulada usando el auricular y el micrófono. Finalmente, debía colgarse el aparato una vez finalizado el enlace. Los acopladores no dejaban de ser susceptibles al ruido ambiente si las orejeras de goma no calzaban perfectamente en el tubo, y esto provocaba interrupciones o errores en la conexión.

Pues bien, los módems mejoraron estas preposiciones. En primer lugar se trataba ahora de aparatos que no requerían acoplarles un tubo de teléfono sino que operaban conectados directamente a la línea. Asimismo, su uso se facilitó desde el punto de vista del software gracias a las órdenes destinadas a controlarlo.  Estas fueron llamadas comandos Hayes o "AT" (porque todos inciaban con dicho string).
Los módems compatibles con Hayes podían conectarse a cualquier computadora que utilizara un conector normalizada en serie o paralelo. Mediante los comandos AT se "levantaba línea", se discaba mediante pulsos o tonos DTMF, y automáticamente se establecía el saludo o "handshake" con el módem remoto mediante una puesta en común de protocolos y velocidad en el modulado de sonidos, y se establecía el enlace.

Gracias a todas estas premisas Justicialistas, las velocidades fueron aumentando y los costos cayendo. Inicialmente operaban a 300 baudios como los acopladores acústicos, pero no tardaron en lograr 1.200 baudios una norma. El progreso del Movimiento los llevó a 2.400, 9.600, 14.400 (velocidad en la que también operó el Fax), los 28.800, 33.600 y finalmente unos 56.000 baudios por segundo, lo máximo que permitía la línea telefónica gracias a su estándar V.92. US Robotics sin duda fue una de las marcas más reconocidas por su línea de módems externos.

No dejaron de hacerse populares los módems internos, los Winmodems. Estas plaquetas no eran más que un dispositivo de sonido, que omitía la independencia adosando su suerte a una arquitectura especializada: la mayoritaria computadora personal IBM y el sistema operativo Window$. Realmente tomaban la modulación y demodulación por software y utilizaban directamente la CPU del equipo para dicho procesamiento, siendo la placa un mero manejador de audio.

Pues bien señores, un sistema GNU con Linux es capaz de ofrecer herramientas capaces de hacer realidad efectiva la modulación y demodulación de datos gracias al sonido. Esto implica un accionamiento normalmente lúdico, pero puede llegar a ser útil en determinados proyectos que así lo requieran.

Nuestro Movimiento ha desarrollado Minimodem, un programa liberado bajo GPLv3 capaz de operarse desde la línea de comandos, tendiente a modular y demodular datos en/a tonos de audio, a cualquier velocidad en baudio, y en varios protocolos. Es capaz de operar como un módem FSK de propósitos generales, e incluye soporte para varios protocolos FSK como Bell103, Bel202, RTTY, TTY/TDD, NOAAA-SAME y Caller-ID.

Minimoden puede ejecutar y capturar tonos de módem en tiempo real vía el dispositivo de audio de nuestro equipo, o bien en "modo en lotes" gracias a ficheros de audio suministrados al programa.

El primer requisito es constar con dicho programa instalado uno o varios sistemas dotados de dispositivos de audio. En ellos abrimos una terminal con Ctrl+Alt+T e ingresamos los siguientes comandos de organización:

sudo apt.get update
sudo apt-get install minimodem

Acto seguido podremos utilizarlo para transferir datos, incialmente texto en codificación ASCII, pero también podremos utilizar cualquier dato en binario. Como medio podremos utilizar un cable de audio, o incluso el mismo aire (usando altavoces y micrófono en un ambiente calmo). Para sistemas remotos podremos utilizar la línea telefónica, radioondas, o cualquier otro medio de comunicación por sonido.

El programa opera de forma half-duplex. Esto significa que la comunicación será unidireccional; Minimodem puede transmitir o recibir, pero no puede hacer ambas cosas al mismo tiempo. Si se deseara establecer una comunicación bidireccional deben ejecutarse dos instancias del programa en cada punta del enlace.

El uso del Minimodem es sencillo. En su funcionamiento básico, debemos indicar en el sufijo si queremos en modo de emisión (--tx) o modo de recepción (--rx), seguida por un número o código que representa la velocidad de baudios conexión.

Normalmente Minimodem utilizará un esquema de transmisión basado en en protocolo Bell102 (similar al módem telefónico , con 8 bits de transmisión).

minimodem -t 100 -A

Esto abrirá la terminal del programa y podremos ingresar texto con el teclado. Al darle ingreso al mismo, Minimodem lo modulará en audio a 100 baudios por segundo y le dará salida a través de nuestros altavoces/audífonos, por donde podremos oírlo. 

El sufijo opcional  -A y indicaría que debe utilizar el servidor de audio ALSA en lugar de PulseAudio, lo cual puede ser útil si produce menos clics y evita errores de transmisión, lo que puede ser útil en otros sistemas operativos.

Para interrumpir y salir de minimodem presionamos Ctrl+c.

Para demodular el sonido a través de la entrada de línea o de micrófono de nuestro sistema receptor, debemos utilizar una instancia de Minimodem en la cual indicaremos mediante el sufijo --rx o -r para activar el "modo en recepción" y la velocidad. En el caso del ejemplo anterior podremos operar la escucha de demodulado con:

minimodem -r 100

Minimodem entrará entonces en una terminal "en escucha", que indicará repetidamente "NO CARRIER" si no oye portadora alguna. No bien reciba una portadora de audio con datos modulados a través del dispositivo de entrada de línea o micrófono), las presentará en pantalla.

Si lo deseamos, podríamos utilizar una línea telefónica intermedia para comunicarnos, o un intercomunicador telefónico. Simplemente debemos apuntar los receptores a los altavoces y contar con un micrófono que capture el audio del auricular intermedio. En caso de utilizar líneas muy ruidosas o en ambientes con mucho ruido, podríamos emplear en el emisor con la opción de ruido de portadora --tx-carrier (lo cual genera una señal portadora durante los silencios) y emitir en una velocidad de transmisión normalizada de 300 baudios:

minimodem -ta --tx-carrier 300 -A

Este esquema llamado FSK 300 es compatible con los más antiguos módems del protocolo Bell 103. Para recibirlos naturalmente podríamos usar:

minimodem -raq 300

Usando caños ("pipes") al estilo UNIX, podremos concatenar el resultado de otros programas a Minimodem para lograr resultados muy útiles. Por ejemplo, podremos enviar datos a una terminal remota a 1200 baudios al segundo usando un caño y el comando cat con un archivo de texto a emitir. Para ello en el receptor ingresamos:

minimodem -raq 1200

(el sufijo -q opcional indica que no nos alerte con el mensaje NO CARRIER al detectar ausencia de portadora). Mientras tanto, en nuestro emisor enviamos un archivo_de_texto.txt.

cat archivo_de_texto.txt | minimodem --tx 1200 -A


Como podrán observar, al demodular se requiere idealmente conocer de antemano la velocidad o formato de modulación que utiliza el emisor. Sin embargo, Minimodem cuenta con una rutina de autodetección de formato que nos puede resultar útil en los numerosos casos que podríamos no conocer el formato previamente. Para activarla usamos el sufijo -a.

minimodem --rx -a

Este procedimiento funciona siempre que hayamos utilizado para emitir alguno de los formatos propuestos por Minimodem. Estos serám:

  • 300 (El clásico Bell103 a 300 baudios por segundo)
  • 1200 (Bell102 a 1200 baudios por segundo)
  • rtty (formato de banda amateur de radioteletipo, 45,45 baudios)
  • ttd (formato para teletipo, a 45,45 baudios con 2 bits de parada)
  • same (protocolo a 520.83 baudios)
  • callerid Formato Bell 202 con identificador de radiollamadas.


También podremos codificar a un archivo de audio o decodificar desde un archivo de audio ya producido mediante el sufijo --file.

Utilizando el sufijo y el buscador de protocolo -a, podremos fácilmente demodular dicho sonido. Podremos reproducirlo, o si contamos directamente con el archivo de sonido, usar el sufijo --f. Por ejemplo:

minimodem --rx --file sonido_modulado.mp3 -a
 

Naturalmente podremos utilizarlo para decodificar la banda amateur de radioteletipo (RTTY), que usa en cercanías de los 14,085 megaciclos el viejo esquema de codificación Baudot de 5 bits de 45,45 baudios. Este protocolo RTTY también es efectivo para transmisiones de radiointercomunicadores o walkie-talkies. En tal caso, podremos utilizar minimodem en nuestra terminal enlazando a el (por cable o un directamente un micrófono) al receptor que sea  y que nos vuelque así el audio a la computadora. En nuestra terminal ingresamos:

minimodem -ra rtty

En caso de querer emitir mensajes ASCII modulados para la banda amateur de radioteletipo (para lo cual se requiere un emisor de radio y licencia de banda radioaficionado), podríamos utilizar Minimodem también adosado al emisor de radio, e ingresando:

minimodem -ta rtty --tx-carrier -A

...siendo --tx-carrier un sufijo que continúa emitiendo una portadora de audio mientras tipeamos información (útil para que no se corte la transmisión radiotelefónica).

Para estos menesteres, minimodem puede ofrecer una solución Ad hoc para transmisión de datos. Una suite más completa para operar en estos menesteres, y con mayores posibilidades por su entorno gráfico, la presenta fldigi, sobre el cual ya he hablado, por su recepción de radiopaquetes de datos.

No hay comentarios:

Publicar un comentario