¿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 --tx 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
indica que debe utilizar el servidor de audio ALSA en lugar de
PulseAudio, lo cual produce menos clics y evita errores de transmisión,
y os recomiendo en Ubuntu.


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 el "modo en recepción" y
la velocidad. En el caso del ejemplo anterior podremos operar con:

minimodem --rx 100 -A


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
comunicarno, 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 y el receptor una velocidad de transmisión extremadamente baja de
50 baudios por segundo:

minimodem --tx 50 -A


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 --rx 1200 -A -q

(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 utilisa 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.


Tambien 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 --rx -a 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 --tx rtty -a -A --tx-carrier

...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 radial).

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.