martes, 4 de agosto de 2015

¿Cómo puedo controlar el tráfico de mi router con OpenWRT?

La Conducción es el Arte que como hombres de la política hemos de Ejercer. Esta nos permite interpretar los anhelos del pueblo, y hacer llegar a cada quien lo que necesita para hacer grande e inmortal a la Patria.

En un sistema telemático, esta acción es emulada por un Router: un aparato de comunicaciones capaz de otorgar a cada equipo de la red los paquetes que han solicitado, y encaminar los datos por la senda de la Liberación.


Gracias al Justicialismo, podemos dotar a nuestro router con un firmware libre mucho más potente que el firmware privativo original provisto por el fabricante. Esto nos permitirá ejecutar directamente una distribución Linux limitada pero funcional en el aparato, adecuada para afrontar situaciones que antes no nos eran posibles. A tal fin, ya he indicado cómo instalar OpenWRT en nuestro router TP-Link TL-WR941ND, y como realizar ciertos rudimentos con dicho entorno operativo.


Una de las condiciones favorables que nos presenta el sistema operativo de router OpenWRT, es la capacidad de ejecutar guiones de programación (scripts) o miniprogramas dentro del mismo router, para realizar diferentes acciones. Lejos de ser un sinsentido, vendrá de perillas para ciertas actividades avanzadas.

Por ejemplo, en este caso el router TL-WR941ND opera como un potente cortafuegos, cliente y servidor SSH, servidor DHCP programable, punto de acceso Wifi, y también como unidad de registro de actividad de red. Sin embargo, como la unidad permanece encendida 24x7, se encuentra en posición ideal para encargarle que registre el tráfico telemático de la red en Puerta de Hierro. En particular, se desea supervisar el tráfico parcial de varios equipos conectados por cable al mismo, el tráfico total en la red local (LAN) y en la red WAN (esto es, la conexión al cablemódem), y la cantidad de días en que el aparato está encendido sin reiniciarse.

Para esta tarea de registro automatizado, habremos de utilizar el sistema OpenWRT instalado en el router TP-Link WR-941ND para programar en su memoria una serie de scripts que se encargarán de cumplimentar dicha tarea luego de intervalos de tiempo determinados.

Lo primero será acceder al router a través de una terminal. Si ya hemos instalado OpenWRT correctamente y configurado las opciones de conexión, podremos conectarnos y operar en el router por medio de una sesión cifrada SSH. Lo haremos abriendo una terminal con Ctrl+Alt+T e ingresando el siguiente Comando de Organización:

ssh root@ip_del_router

Para ello podremos utilizar el editor Vi, el minúsculo editor de texto que se encuentra instalado en el mismo router. Para ello utilizamos el comando:

vi /root/upt

Se abrirá el editor Vi. Se trata de un editor que nos mostrará un archivo vacío. Para empezar a escribir debemos ingresar al modo de inserción de texto, mediante la tecla i. Una vez en modo inserción, podremos escribir o pegar texto. Podremos pegar el siguiente código:


#!/bin/sh
# Logueador en RAM del Uptime y Trafico del router peronista
# llamarlo con cron cada 15 min o algo asi
# 4ago2015 Ubuntu Peronista
# borra la version anterior
rm /tmp/log/uptime
# Genera el archivo
echo Archivo generado por el programa upt. > /tmp/log/uptime
date >> /tmp/log/uptime
uptime >> /tmp/log/uptime
echo TRAFICO TOTAL >> /tmp/log/uptime
echo Enlace puente LANx+WLAN0 y WAN >> /tmp/log/uptime
ifconfig br-lan >> /tmp/log/uptime
echo eth0 >> /tmp/log/uptime
echo TRAFICO DE LAN COMPLETO >> /tmp/log/uptime
ifconfig eth0 >> /tmp/log/uptime
echo Trafico desglosado por puertos LAN del Router: >> /tmp/log/uptime
ifconfig lan1 >> /tmp/log/uptime
ifconfig lan2 >> /tmp/log/uptime
ifconfig lan3 >> /tmp/log/uptime
ifconfig lan4 >> /tmp/log/uptime
echo TRAFICO AL MODEM - puerto WAN >> /tmp/log/uptime
echo resume datos de salida/entrada del puerto de red exterior. >> /tmp/log/uptime
ifconfig wan >> /tmp/log/uptime
echo TRAFICO AL PUNTO DE ACCESO WIFI - wlan0 >> /tmp/log/uptime
ifconfig wlan0 >> /tmp/log/uptime
echo CESIONES DHCP >> /tmp/log/uptime
cat /tmp/dhcp.leases >> /tmp/log/uptime
# mensaje para mostrar
echo Tiempo de uptime actualizado en el archivo /tmp/log/uptime
echo Viva el Justicialismo!

Luego guardaremos el archivo y salimos del editor. Para hacer esto en el editor Vi, debemos presionar la tecla Esc y a continuación ingresar :wq seguido de Enter.

Debemos darle permiso de ejecución al programa ingresado. Podremos hacerlo simplemente con:

chmod +x /root/upt

Dicho programa será capaz de crear en la memoria RAM del router (mas precisamente, en la carpeta /tmp/log/) un archivo llamado uptime que nos indicará el tiempo que lleva encendido el router, los datos de tráfico desglosados por puerto, wifi, y el puerto WAN (de Internet). También nos indicará qué máquinas tiene asociadas al router.

La finalidad es que este programa se ejecute automáticamente cada 10 minutos, lo que actualizará dicho registro con conteos parciales. El problema es que este archivo se borrará de la memoria toda vez que se apague o se reinicie el router.

Se preguntarán cual es el motivo de esto. Vean señores, notarán que no actualizamos este fichero cada 10 minutos en la memoria EEPROM del router sino en su memoria volátil, la RAM. Esto es así porque la memoria EEPROM, como toda memoria de tipo Flash, puede llegar a sufrir un proceso de deterioro si la estamos grabado (escribiendo) cada 10 minutos sin ton ni son. Por tal motivo crearemos un segundo script llamado uptflash, que no se ejecutará cada diez minutos sino una vez por día, y que simplemente copiará el archivo de registro desde la memoria volátil RAM a la memoria de masa EEPROM Flash. Una vez transferido el archivo, el dato total del día se almacenará de forma imperecedera.

Para poder ingresar este nuevo script, volvemos a usar el editor Vi:

vi /root/uptflash

ingresamos en modo inserción presionando i, y le pegamos el siguiente código:

#!/bin/sh
# Graba el log de uptime de la RAM a la memoria flash
# poner en cron una vez por dia, a las 12am o algo asi
# borra el archivo viejo
rm /root/uptime.log
# copia el archivo de la RAM a la FLASH del router
cp /tmp/log/uptime /root/uptime.log


...luego guardamos y salimos con Esc+:wq. No debemos darle permisos de ejecución al fichero, con el comando:

chmod +x /root/uptflash

Pues bien, para que ambos guiones funcionen de la manera recomendada, debemos hacer que el router los ejecute de forma programada y en intervalos. Para ello usaremos la funcionalidad Cron (el cronómetro) del router. Este nos permite ingresar una serie de acciones que dispararán los guiones.

Nuevamente, usaremos Vi:

vi /etc/crontabs/root

Esto nos permitirá crear un archivo de configuración de los guiones cronometrados. Ingreso en modo inserción mediante la tecla i, y le pegamos el siguiente código:

# Ejecuta este script upt cada 10 min
# para loguear uptime y trafico a la RAM
*/10 * * * * /root/upt
# ejecuta el script uptflash a las 12am
# para copiar el uptime de la RAM a la flash
# una vez por dia:
00 13 * * * /root/uptflash


Esta orden le indica al router que ejecute el script upt, el cual se encarga de reemplazar el archivo bitácora antiguo (si lo hubiese) por uno nuevo cada diez minutos, a toda hora, todos los días de la semana. Finalmente todos los días a las 13:00 horas, ejecutará uptflash, que transferirá la bitácora desde la memoria RAM volátil a la EEPROM estable del router (lo cual nos permitirá conocer nuestro "récord" de tiempo de encendido.

Ahora bien, para que los registros de bitácora se inicien según esta consigna, es necesario reiniciar el router. Una vez reiniciado, puedo dejarlo encendido todo el tiempo que sea necesario. El reinicio puede hacerse con el comando:

reboot

Para revisar si la orden de acción cronometrada está activa, podremos loguearnos al router e ingresar el siguiente comando:

logread | grep cron

Debería devolvernos dos instancias de Cron. En tanto, si queremos estudiar el registro parcial, podríamos ingresar la orden:

cat /tmp/log/uptime | less
Y si queremos ver el último registro almacenado en la memoria EEPROM no volátil, habremos de ordenar:

cat uptime.log | less

En el caso de requerir supervisar el tráfico en tiempo real, podremos instalar en el router el programa iftop, una potente aplicación pensada precisamente para ello. Lo haremos con:

opkg update
opkg install iftop

Y ejecutaremos el programa con

iftop:

En dicho programa, podremos activar la ayuda presionando h.

sábado, 1 de agosto de 2015

¿Cómo instalo Messenger for Desktop para Facebook y WhatsApp en Ubuntu?


Trabajadores!

La comunicación es primordial entre los hombres, como fuente de entendimiento en un lenguaje común de Paz, que sea el necesario para el bienestar en el Trabajo.
Toda labor humana puede realizarse mejor si nos mancomunamos, que es la acción de trabajar en pos de un objetivo común que no ha de ser más que positivo.

La técnica y la máquina han permitido hoy numerosas maneras de comunicarnos, pero siempre es mejor relizarlo bajo las banderas del Justicialismo.

La telemática nos ofrece innumerables maneras, y tal vez una muy extendida sea Facebook. Naturalmente que no hemos de utilizar dicha web, pero nada impide que chateemos utilizando el servicio que nos provee, si así lo creemos necesario. Al fin y al cabo, nuestra Doctrina no hace mas que buscar la Felicidad de Todos los Argentinos.

Por tal motivo, contamos con el cliente Messenger for Desktop, un cliente pensado para asociarse con Facebook y utilizar sus funcionalidades desde nuestro escritorio en nuestros sistema GNU con Linux, sobre todo los derivaros de Debian.


La web oficial nos permitirá conocer detalles del cliente de mensajería instantánea. No se trata de un cliente oficial, sino de un cliente multiplataforma, que cuenta también con recursos para sistemas GNU con Linux. Utilizando recursos y código del cliente web Messenger, nos permite contar con un cliente para nuestro escritorio GNU con Linux.

De momento la última versión es la 1.4.3, y funciona perfectamente. Nos permitirá integrarlo con el sistema operativo, de modo de usar las alertas de Ubuntu junto con dicho programa. Podremos utilizarlo también para enviar o recibir archivos, fotografías, etc, y poder abrirlas con los programas nativos de nuestro sistema GNU con Linux para cada tipo de fichero.

Para instalarlo, podremos utilizar Ctrl+Alt+T para abrir una Terminal, e ingresar los comandos de organización necesarios para su instalación.

  • Si uso Ubuntu de 64 bitios podría utilizar:
cd ~/Descargas/

wget https://github.com/Aluxian/Facebook-Messenger-Desktop/releases/download/v1.4.3/Messenger_linux64.deb

sudo dpkg -i Messenger_linux64.deb
  • Si en cambio, utilizo Ubuntu 14.04LTS de 32 bitios, he de emplear:

cd ~/Descargas/

wget https://github.com/Aluxian/Facebook-Messenger-Desktop/releases/download/v1.4.3/Messenger_linux32.deb

sudo dpkg -i Messenger_linux32.deb

Una vez que hayamos terminado de descargar el paquete e instalado el programa en nuestro sistema, podremos ejecutarlo desde Aplicaciones / Internet / Messenger.

El primer proceso a realizar es una tçípica acción de darnos de alta en nuestra cuenta de Facebook, con nuestro usuario de correo electrónico asociado a ella, y la contraseña de Facebook.

Una vez logueados con el servicio de chat de Facebook podremos chatear con nuestros contactos, enviar y recibir fotografías y mensajes de audio. Haciendo clic en el Engranaje, podremos configurar las opciones del programa para nuestro sistema operativo libre. Entre ellas, las posibilidades de comunicarnos a través de las alertas del mismo cuando recibamos un mensaje, o la posibilidad de reproducir un sonido ante tal evento.

En cuanto a clientes de mensajería para WhatsApp para GNU con Linux, también contaremos con clientes no oficiales pensados para nuestro escritorio, tanto en arquitectura de 32 y de 64 bitios. El cliente no oficial va por su versión 1.1.0. Para instalarlo, hemos de abrir nuestra consola Terminal e ingresar los siguientes Comandos de Organización:
  • Si tenemos Ubuntu 14.04LTS de 64 bits:
cd ~/Descargas/

wget https://github.com/Aluxian/WhatsApp-Desktop/releases/download/v1.1.0/UnofficialWhatsApp_linux64.deb


sudo dpkg -i UnofficialWhatsApp_linux64.deb
  • Si uso Ubuntu 14.04LTS de 32 bitios:
cd ~/Descargas/

wget https://github.com/Aluxian/WhatsApp-Desktop/releases/download/v1.1.0/UnofficialWhatsApp_linux32.deb

sudo dpkg -i UnofficialWhatsApp_linux32.deb

Para ejecutar el cliente no oficial de WhatsApp, vamos a Aplicaciones / Internet / Unnoficial WhatsApp.

La primer medida será asociar a nuestra cuenta de WhatsApp Web por medio del escaneo del código, o ingresando sus datos.

Una vez asociada la cuenta de WhatsApp, podremos utilizar el cliente de escritorio de forma satisfactoria.

miércoles, 22 de julio de 2015

¿Cómo puedo retransmitir IPTV con Ubuntu?

¡Trabajadores!

Los niños han de gozar de todos los privilegios de nuestro Movimiento, pues ellos son los destinatarios de nuestra felicidad y quienes tendrán para sí la tarea de hacer grande e inmortal a la Patria.

Para los niños hemos dado los derechos a la niñez, y les hemos preparado un camino venturoso para una vida colmada de dicha bajo las tres banderas del Justicialismo. Desde la Ciudad de los Niños a los caramelos Mu-mú.
Uno de los logros que mas acercan a toda la familia es el de la televisión: aquella conjunción técnica de imágenes en movimiento y sonido sincronizado, que es emitida a grandes distancias a través del éter.

La redistribución y retransmisión de una señal analógica - cualquiera sea - sufrió siempre un proceso de degradación y pérdida, pero esto normalmente no sucede con la información que opera de manera digitalizada. La TV digital moderna surge entonces como una expresión popular de poder contar con un gran avance tecnológico en lo que hace a la calidad y a las propiedades de difusión, pero permitiendo difundir las ideas del Pueblo Justicialista.
Normalmente, podremos recibir la TV digital por tres medios: uno de ellos es el cableado, lo cual involucra normalmente un servicio pago y excluyente. Lo evitaremos, en tanto el Justicialismo permite recibir gratuitamente la señal televisiva digitalizada "por aire", a través del servicio ISDB-T, receptando por medio de una antena UHF hogareña la señal emitida desde una torre distante a decenas de kilómetros . 
En tercer caso, podremos recibir la señal digitalizada en formato DVB-S2 retransmitida a decenas de miles de kilómetros por un satélite que orbite el globo, captándola a través de una antena parabólica hogareña.
Estos dos sistemas abiertos que avala el Justicialismo son altamente eficientes, y poco costosos. Sin embargo, existen situaciones donde aún estos procederes podrían resultar insuficientes: supongamos un sistema de recepción televisiva en un hotel o consorcio. El cable coaxial RG6 que transporta la señal desde la antena hogareña a los receptores de TV digital  no puede superar por mucho los 20 metros, sin correr el riesgo de que la señal digital se atenúe de manera inaceptable. En en caso de las antenas de TV digital terrestre o satelital, tampoco suele recomendarse encadenar más de dos receptores por cada antena. Es importante por ello contar con antenas colectivas (UHF o satelitales) de mayor ganancia, y esto no deja de ser un factor limitante en cuanto a la propagación de la señal en los edificios: debería instalarse cable coaxial en todos los hogares para distribuir la señal televisiva.

Afortunadamente nuestro Movimiento ha pensado en todo y ofrece una miríada de posibilidades: gracias a un servidor munido de Software Libre, podremos ahora redistribuir la señal televisiva digitalizada pero en forma de paquetes de datos TCP/IP. 

Esto se denomina IPTV. Una vez tornados paquetes TCP/IP, podremos transmitirlos fácilmente a través de a nuestra red de área local o si tomamos las previsiones con nuestro router, podremos emitirlas a través de una red WAN o Internet. Todo ello utilizando, por ejemplo, la infraestructura cableada o inalámbrica existente en un hogar u edificio para dotar de imagen y sonido a Smart TVs, tablets, y otras computadoras que carezcan de sintonizador digital o de conexión a una antena de la norma que tengamos.

Hardware a considerar


Podremos utilizar como servidor cualquier equipo GNU con Linux, siempre que esté dotado con uno o varios sintonizadores de TV digital terrestre o satelital. Para facilitar el uso de la red se puede emplear un router hogareño común. En cualquier caso, es importante que ya tengamos configurado el o los sintonizadores a utilizar.

En este caso en particular, para evaluar la máxima potencia del sistema IPTV a través de una red LAN Gigabit, utilizaremos en nuestro servidor ocho sintonizadores USB 2 de TV digital terrestre ISDB-Tb Geniatech MyGica S880, así como una plaqueta sintonizadora de TV digital satelital DVB-S2. Cada receptor USB recibirá un canal digital multiplexado (dotado de varias señales televisivas), y la plaqueta sintonizadora recibirá una señal satelital multiplexada, con unos quince canales.

La velocidad de transmisión de cada canal multiplexado ISDB-Tb o DVB-S2 puede variar entre 2,5 y los 12 megabytes por segundo dependiendo su compresión. Esta cantidad no es muy grande, y puede manejarse muy bien a través de una red cableada 10/100 o inalámbrica WiFi estándar "G". Pero en el caso de re-emitir ocho canales multiplexados de TV digital terrestre y cuatro canales multiplexados de TV digital satelital - como nos proponemos en este ejemplo IPTV extremo - nos veremos en la necesidad de utilizar WiFi estándar "N" y en lo posible hacer uso de red cableada LAN Gigabit (1000MBps). En este caso en particular de apilar ocho receptores USB, sin duda confiaremos en puertos USB 3.


La sintonizadora USB S880 en miniatura de Geniatech es un dispositivo receptor ISDB-Tb Full-Seg de muy bajo consumo y buena recepción, dotados con un conector hembra MCX al cual se le debe adaptar una antena retráctil. En lugar de utilizar dicha antena suministrada, hemos decidido conectarlo a una bajada de cable coaxial RG6 de 75 Ohmnios con conector F (y en consecuencia, en cada sintonizadora aplicamos un adaptador MCX macho a coaxial F hembra para conectarlos).


Una vez adaptado, cada sintonizador USB lo hemos colocado en un puerto USB 3.0 de un hub potenciado marca XCellon (totalmente compatible con GNU). Los otros dos receptores van conectados a los puertos USB3 del sistema.
La TBS6985 en tanto, es una plaqueta PCI-e para recepción de TV satelital FTA, dotada de cuatro sintonizadores. Está instalada en Ubuntu y conectada a cuatro antenas parabólicas, las cuales ha sido apuntadas previamente a la constelación de satélites compuesta por el Arsat-1, Amazonas, Hispasat y Galaxy 28.
Software Libre MuMuDVB: el streamer Justicialista de TV digital
El cometido de transferir paquetes sintonizados de TV digital a través de una red LAN queda a manos de MuMuDVB.
Si bien el sistema contempla en su empleo básico con el alistamiento de un adaptador dotado de un solo sintonizador, esto no implica que en un sistema con buena potencia podamos contar con varios sintonizadores al unísono, y correr múltiples instancias del mismo servicio.

Como primer medida, instalaremos los programas necesarios desde la Terminal. Para el servidor utilizaremos mumudvb y como cliente podremos emplear VLC. Abrimos una terminal con Ctrl+Alt+T e ingresamos el siguiente Comando de Organización:

sudo apt-get install mumudvb vlc

Acto seguido, construiremos el archivo de configuración del servidor para la TV digital. Las opciones del archivo de configuración las podremos consultar aquí.

En el caso de la configuración para la TV digital terrestre, debemos crear un archivo de configuración para cada sintonizador. Naturalmente que si usamos un único sintonizador de TV digital, sólo crearemos el primer archivo.

En nuestro caso, como tenemos ocho sintonizadores, crearemos ocho archivos diferentes. Al primero lo llamaremos .tdaporip_0.conf, al segundo .tdaporip_1.conf, al tercero .tdaporip_2.conf, etc. Cada uno de ellos tendrá las especificaciones para uno de los ocho sintonizadores S880.

Podemos crear los archivos de configuración con el editor Nano, por medio del siguiente Comando de Organizción:

nano .tdaporip_0.conf

Se abrirá un archivo completamente en blanco. En el mismo habremos de configurar los aspectos que hagan a la frecuencia en Kiloherz y al ancho de banda del canal que queramos utilizar.
Le pegamos el siguiente contenido:




# Configuración de MumuDVB
# Para receptor de TV digital Terrestre ISDB-Tb.
# Activar auto-cofiguración completa

autoconfiguration=full

# Parametro card: indica el numero de sintonizadora/adapter.

# Si hay una sola, es 0.
card=0
# Parametro tuner: identificador del sintonizador.
# Si el adaptador tiene un solo sintonizador, es 0.
tuner=0
# Parámetro freq: frecuencia (Khz) del MUX digital a retransmitir por IP

# Tabla de referencia de frecuencias TDA AMBA:
# 521142: ENCUENTRO | PAKA PAKA | TATETI | INCAA TV | TECNOPOLIS | ENCUENTRO PORTABLE
# 527142: TV PUBLICA HD | TV PUBLICA PORTABLE | CONSTRUIR
# 533142: DEPORTV HD | VIVRA | ARPEGGIO | VIAJAR | DEPORTV PORTABLE
# 539142: CN23 | C5N | TELESUR | 360 TV | RT | CN23 PORTABLE
# 545142: Canal 26 HD |Telemax | C5N HD |ONE TV HD | C5N
# 563142: TV Clip Digital | UNISUR Prueba | Clip | LDTV ES
# 575142: [0001]
# 587142: Canal 13 Prueba | Canal 13 One Seg
# 593142: Telefe HD | Telefe SD | Telefe Movil |ACUA MAYOR
# 599142: Canal 9 HD | Canal 9 SD | ACUA FEDERAL | Canal 9 Portable
# 605142: America HD Prueba | A24 Prueba | America 1 seg | America SD |
freq=527142

# Parámetro bandidth: ancho de banda del servicio.

# Referencia: ISBD-Tb: 6Mhz. ATSC: 8Mhz. DVB-T: 8Mhz.
bandwidth=6MHz

Luego guardamos el archivo con Ctrl+O y salimos del editor Nano con Ctrl+x.

Naturalmente, si tenemos múltiples sintonizadores de TV digital terrestre, en cada archivo debemos cambiar  el número de card por 0, 1, 2, 3, 4, 5, 6, y 7 respectivamente, para hacer caso a cada uno de ellos. También hemos de cambiar la frecuencia para distribuir los distintos canales multiplexados.

El segundo paso consiste en dar inicio al servicio de reenvío de señal digital a través de la IP. Para ello abro una terminal y doy inicio al servicio MumuDVB con las indicaciones -d -c y el nombre del archivo de configuración recién creado:

sudo mumudvb -d -c .tdaporip_0.conf

La terminal nos devolverá las indicaciones de status de MumuDVB:






MuMuDVB Version 1.7.1
--- Build information ---

Built with CAM support.

Built without transcoding support.

Built with ATSC support.

Built with ATSC long channel names support.

Built with support for DVB API Version 5.

---------

Originally based on dvbstream 0.6 by (C) Dave Chapman 2001-2004 Released under the GPL.

Latest version available from http://mumudvb.braice.net/ Project from the cr@ns (http://www.crans.org) by Brice DUBOST (mumudvb@braice.net)

Info: Main: Full autoconfiguration, we activate SAP announces. if you want to deactivate them see the README.

Info: Main: Full autoconfiguration, we activate PAT rewritting. if you want to deactivate it see the README.

Info: Main: Full autoconfiguration, we activate SDT rewritting. if you want to deactivate it see the README.

Info: Main: Full autoconfiguration, we activate sorting of the EIT PID. if you want to deactivate it see the README.

Info: Main: ========== End of configuration, MuMuDVB version 1.7.1 is starting ==========

Info: Autoconf: The autoconfiguration auto update is enabled. If you want to disable it put "autoconf_pid_update=0" in your config file.

Info: Main: Streaming. Freq 527142000

Info: Tune: Using DVB card "DiBcom 8000 ISDB-T" tuner 0

Info: Tune: Tuning DVB-T to 527142000 Hz, Bandwidth: 6000000

Info: Tune: FE_STATUS:

Info: Tune: FE_STATUS:

Info: Tune: FE_HAS_SIGNAL : found something above the noise level

Info: Tune: FE_HAS_CARRIER : found a DVB signal

Info: Tune: FE_HAS_VITERBI : FEC is stable

Info: Tune: FE_HAS_SYNC : found sync bytes

Info: Tune: FE_HAS_LOCK : everything's working...

Info: Tune: Event: Frequency: 527142000

Info: Tune: Bit error rate: 2097151

Info: Tune: Signal strength: 41228

Info: Tune: SNR: 179

Info: Tune: FE_STATUS:

Info: Tune: FE_HAS_SIGNAL : found something above the noise level

Info: Tune: FE_HAS_CARRIER : found a DVB signal

Info: Tune: FE_HAS_VITERBI : FEC is stable

Info: Tune: FE_HAS_SYNC : found sync bytes

Info: Tune: FE_HAS_LOCK : everything's working...

Info: Main: Card 0, tuner 0 tuned

Info: Autoconf: Autoconfiguration Start

WARN: Autoconf: Encoding not implemented yet (0x0e), we'll use the default encoding for service name

WARN: Autoconf: Encoding not implemented yet (0x0e), we'll use the default encoding for service name

WARN: Autoconf: Encoding not implemented yet (0x0e), we'll use the default encoding for service name

WARN: Autoconf: Encoding not implemented yet (0x0e), we'll use the default encoding for service name

Info: Autoconf: Autoconfiguration done

Info: Autoconf: Diffusion 2 channels

Info: Autoconf: Channel number : 0, name : "TV PUBLICA HD" service id 59201

Info: Autoconf: Multicast4 ip : 239.100.0.0:1234

Info: Autoconf: Channel number : 1, name : "CONSTRUIR " service id 59202

Info: Autoconf: Multicast4 ip : 239.100.0.1:1234


Como vemos, MumuDVB sintoniza los canales indicados a través de nuestro sintonizador "0" munido del chipset DiBcom 8000, y en este ejemplo nos informa que ha encontrado dos señales dables para retransmitir en nuestra red local: la TV Publica HD y Construir TV. 

MumuDVB "inyectará" la información digital en forma de paquetes TCP/IP emitiéndolos a nuestro router a través de nuestra conexión de red. Si bien pueden cambiarse, las direcciones IP de los canales suelen ser estándares: 239.100.x.y:1234, siendo x el número de sintonizador (el primero es el 0 y se agregarán más si tenemos más sintonizadores), mientras que y indica el número de canal (también inicia en 0).

También podremos agregar más instancias de servidor, para poder distribuir por IP canales que recibamos en otro sintonizador. Para iniciar el sintonizador S880 número dos, debemos abrir otra instancia terminal e indicar el comando:

sudo mumudvb -d -c .tdaporip_1.conf

...y así sucesivamente con cada sintonizador de TV digital terrestre que tengamos.

En el caso del sintonizador de TV digital satelital, hemos de configurar el archivo para el satélite en cuestión. Si utilizamos el ArSat-1, podríamos configurarlo con el editor Nano según las especificaciones de dicho satélite.

nano .arsat1_por_ip.conf

y le pegamos el siguiente contenido:

# Configuración de MumuDVB
# Para receptor de TV digital satelital DVB-S2.
# Activar auto-cofiguración completa

autoconfiguration=full


# Parametro card: indica el numero de sintonizadora/adapter.

# Si hay una sola, es 0.
card=0
# Parametro tuner: identificador del sintonizador.
# Si el adaptador tiene un solo sintonizador, es 0.
tuner=0
# InVap ArSat-1 para mumudvb

#Consultado en http://www.portaleds.com/espanol/listar.php?sat=2880&cod=fta
#por ubuntuperonista.blogspot.com.ar para todo el Universo GPL-V3
# 9/7/2015
frec: 11670000
pol: v
srate: 30000
lnb_type: universal
lnb_slof: 11700
lnb_lof_low: 9750
lnb_lof_high: 10600
lnb_voltage_off: 0
coderate: 5/6
rolloff: 35

Guardamos con Ctrl+o y salimos con Ctrl+x.

Ahora podremos iniciar otra instancia del servidor que emita por IP lo recibido por el satélite ArSat-1, abriendo otra terminal con Ctrl+Alt+T e ingresando el siguiente comando de organización:

sudo mumudvb -d -c .arsat1_por_ip.conf

Clientes para reproducir la TV desde nuestra red LAN:

Sintonizar la emisión de IPTV será ahora sencillo con cualquier cliente que incluya recepción SAP. Inclusive podremos utilizar Smart TV que normalmente ya cuentan con esta opción. En este caso utilizaremos el conocido reproductor peronista VLC, que no solo cuenta con su versión para GNU Linux, sino que también se encuentra ampliamente difundido en otras plataformas privativas, celulares, tablets, etc.

En el reproductor peronista del conito activamos la Lista de Reproducción (presionando Ctrl+L), y bajo el apartado de Red Local (Local Network), elegiremos Emisiones de Red (SAP) / Network Streams (SAP). VLC buscará servidores SAP en nuestra red local, y tras breves instantes debería indicarnos directamente los canales de IPTV suplidos telemáticamente. Simplemente hacemos clic sobre uno de ellos, y comenzará a reproducirse.
También podremos ingresar desde un navegador de internet o cualquier dispositivo capaz de conectarse al protocolo de internet UDP, como pueden ser VLC o Mplayer. Para ello utilizaríamos:

vlc udp://@239.100.0.3:1234

...o:

mplayer udp://@239.100.0.3:1234

Es importante saber que el video se transmite en su calidad nativa, y por lo tanto no se requiere un equipo tan potente para transcodificar la señal digital a - digamos - resoluciones menores aptas para dispositivos de menor potencia. Si tal fuese el caso, mumudvb también podría hacerlo, pero se requeriría una CPU de potencia (tipo Intel I7) para transcodificar en tiempo real.

Esto sería el caso de requerir servicio de TV por IP para la retransmisión a equipos móviles dotados de Wifi.


Gracias a la velocidad de una red Gigabit, podremos transmitir varios streams de videos sin "hipos" ni cortes, y todos ello de manera libre gracias al software libre y al Justicialismo.

jueves, 9 de julio de 2015

¿Cómo hago funcionar la sintonizadora cuádruple de TV Satelital DVB-S2 TBS6985 PCI-e en Ubuntu de 64 bits?

¡Trabajadores!

Hoy las masas están esclarecidas. Desde lo más profundo del monte, un paisano está con su Transistor y recibe noticias de todo el globo. Gracias al justicialismo, incluso podemos utilizar nuestro sistema GNU con Linux para recibir televisión satelital gratuita en nuestra computadora, a través de una plaqueta especial.

Normalmente este tipo de placas están armadas con un único sintonizador. Este nos permite sintonizar una señal digital por vez de entre las decenas o centenares de señales provistas por un satélite geoestacionarios FTA, y verlas en la computadora. Podremos conmutar entre las señales, y eventualmente grabar una única señal recibida en forma digital a través de un software con capacidad de sintonía, como el es VLC. Esto es normalmente suficiente para un equipo computado o un televisor.
Ahora bien, ¿qué sucede si deseamos poder recibir canales emitidos por satélites diferentes? ¿O si queremos ver un canal pero grabar otro en el mismo momento?

La solución ideal consistiría en disponer de un sistema de control DiSEq 2.2, el cual - a través de sólidos y potentes moto-rotores y actuadores controlados eléctricamente por una unidad de control automática o nuestro mismo sistema Linux, nos permiten orientar en breves segundos y con gran precisión una antena plato hacia el satélite deseado.

Este sistema es recomendable, pero conlleva una gran desventaja en su costo: el actuador motorizado normalizado suele ser más costoso que disponer de tres o cuatro parabólicas fijas amuradas individualmente. Vean señores, en este tiempo, las antenas parabólicas para recepción tienen un bajo costo comparativo, pero en dicho caso habremos de disponer de varios sintonizadores hogareños, o utilizar un conmutador de bajada que nos permita seleccionar por medio de un "switch" qué antena particular deseamos utilizar en un momento para nuestro receptor.
Nuestra doctrina prevee que todo hombre y mujer ha de tener la máxima felicidad que permita su sano trabajo. Ya no andamos más en carro. La tecnología avanza, y todo de manos del Justicialismo.

Por ello hoy os enseñaré cómo disponer de varias antenas parabólicas de televisión gratuita y libre, en nuestra computadora munida de la más alta tecnología y un software libre como lo es el sistema operativo GNU con núcleo Linux.

Para ello el Justicialismo ha dado luz a las placas con sintonizadores múltiples para PC. La plaqueta PCI-E de cuádruple sintonizador para televisión y radio digital satelital DVB-S2 TurboSight TBS 6985 está fabricada precisamente para permitirnos sintonizar, ver y grabar o retransmitir múltiples canales de TV satelital al únisono. Podremos utilizarla en una computadora de escritorio común, o en este caso, en un servidor de medios armado específicamente para la tarea.

La condición de contar con una placa con cuatro sintonizadores en Linux nos permite enorme versatilidad: podremos ver y grabar una señal televisiva, y grabar o retransmitir a través de una red Ethernet otros tres canales multiplexados (MUX) completos ya sea de una o de cuatro antenas parabólicas diferentes, para hasta cuatro satélites diferentes

En el caso particular de la TV satelital digital, se reciben canales multiplexados, y cada canal multiplexado puede acomodar hasta 10 señales televisivas de definición estándar (SD) y dos señales de definición HD. Naturalmente que con una placa que trae cuatro  sintonizadores satelitales, podremos recibir centenares o miles de canales de hasta cuatro satélites diferentes utilizando cuatro parabólicas fijas instaladas en la vivienda. De esas centenas o miles de señales, podremos recibir y grabar hasta 24 señales simultáneamente (4 de ellas en HD).

Con un poco de práctica, también podríamos retransmitir a través de nuestra red LAN/Wireless esas 24 señales que queramos, con el fin de que cualquiera que visite nuestra red pueda recibirlas en su dispositivo portátil, en diferentes smart TV distribuidos a través de la vivienda, o incluso remotamente a través de internet, si fuese el caso.


En este caso, nos proponemos integrar un sistema libre que nos permita sintonizar a cuatro satélites diferentes a través de sus respectivas antenas parabólicas montadas en la vivienda, y configurar nuestro equipo para poder sintonizarlas. Posteriormente, podremos preveer emitir dicho contenido a través de la infraestructura de red LAN de la vivienda.

Cualquier equipo compatible moderno puede servir. En este caso el sistema ha sido integrado para operar como un sencillo servidor libre de bajo consumo eléctrico. Cuenta con una placa madre Gigabyte Mini ITX J1900N-D3V un microprocesador subvoltado de cuatro núcleos intel Celeron con disipador, 16 GB de memoria DDR3 SODIMM,  con 2 tomas de red Gigabit, un disco SSD SATA de bajo coste con Ubuntu 14.04. Instalamos en él la tarjetas sintonizadora cuádruples en la ranuras PCI-e de la placa madre (podríamos instalar tantas como ranuras PCI-e tengamos en nuestro sistema). La sintonizadora TBS6985 viene acompañada de un cable de alimentación de tres conectores Molex de 12 voltios, para suplir energía adicional desde la fuente de alimentación si no tuviésemos conectores de potencia mayor). Hemos escogido una fuente silenciosa de 550 vatios para no tener problemas.

Una vez calzada la plaqueta sintonizadora en su ranura PCI-E y asegurado el cable de alimentación, opcionalmente podremos conectar el receptor infrarrojo para el control remoto, si es que deseamos utilizarlo. Conforme tengamos al hardware listo, podremos encender nuestro equipo GNU con Linux, lo conectamos al router para contar con conexión a internet. Una vez terminada la instalación de Ubuntu 14.04 de 64 bits, preparamos la paquetería de software necesaria para poder compilar programas en él y reproducirlos. Para ello abrimos una Terminal e ingresamos los siguientes Comandos de Organización:

sudo apt-get update ;
sudo apt-get upgrade ;
sudo apt-get install vlc ;
sudo apt-get install linux-headers-$(uname -r) ;
sudo apt-get install build-essential checkinstall gcc ;

Una vez descargada dicha paquetería, procederemos a crear una carpeta oculta llamada .tbs, donde descargaremos todos los controladores y programas necesarios para poder hacer un uso efectivo de la sintonizadora satelital cuádruple TBS. Ello lo haremos con:

cd ~ ;
mkdir ~/.tbs/ ;
cd ~/.tbs/ ;
wget http://www.tbsdtv.com/download/document/common/tbs-linux-drivers_v150525.zip ;
unzip tbs-linux-drivers_v150525.zip ;

El controlador descargado es un paquete universal basado en V4L (Video 4 Linux), el cual nos permitirá administrar los cuatro sintonizadores de la placa TBS6985, así como otras sintonizadoras TBS y de otras sintonizadoras de terceras marcas.

Continuaremos descomprimiendo el archivo del controlador descargado:

tar xjvf linux-tbs-drivers.tar.bz2 ;

Ahora bien, la siguiente opción varía de acuerdo a si utilizamos un sistema de 64 bitios o de 32 bitios.
  • Como en este caso he instalado Ubuntu de 64 bits, ingreso el siguiente comandos de organización:
cd ~/.tbs/linux-tbs-drivers/ ;
sudo ./v4l/tbs-x86_64.sh
  • En cambio, si estuviese utilizando Ubuntu de 32 bits, debería ingresar lo siguiente:
cd ~/.tbs/linux-tbs-drivers/ ;
sudo ./v4l/tbs-x86.sh

...esta acción nos provee de la configuración inicial para la instalación según nuestra arquitectura. Si todo va bien, el sistema debería reportar que la acción se ha dado correctamente. Por ejemplo, en el caso de usar 64 bits nos debería decir:

TBS drivers configured for x86_64 platform.

...y si usamos 32 bits:


TBS drivers configured for x86 platform.

En caso afirmativo, estamos en condiciones de compilar los controladores. Esto puede llevar varios minutos dependiendo de la velocidad y carga de nuestro equipo. Lo haremos con los siguientes comandos de organización:

sudo make
sudo make install

Acto seguido, instalaremos algunas herramientas para sintonía satelital de los protocolos DVB-S y DVB-S2, y evaluación general. Lo haremos con:

cd ~/.tbs/
tar xjvf szap-s2.tar.bz2
cd ~/.tbs/szap-s2/
sudo make
sudo make install


También compilaremos las herramientas necesarias para poder escanear transmisiones en el estándar satelital DVB-S2. Lo haremos con:

cd ~/.tbs/
tar xjvf scan-s2.tar.bz2
cd ~/.tbs/scan-s2/
sudo make
sudo make install

Una vez que hayamos compilado e instalado los paquetes sin errores, reiniciaremos para poder cargar los controladores:

sudo reboot

Luego de reiniciar, debemos revisar que los controladores han sido cargados correctamente, y que los sintonizadores hayan sido reconocidos por el sistema. Para ello abrimos una terminal e ingresamos:

dmesg | grep frontend

Y debería devolvernos los cuatro sintonizadores encontrados independientemente, a los cuales les asignará un identificador de adaptador, y un frontend:

DVB: registering adapter 0 frontend 0 (TurboSight TBS 6985 DVBS/S2 frontend)...
DVB: registering adapter 1 frontend 0 (TurboSight TBS 6985 DVBS/S2 frontend)...
DVB: registering adapter 2 frontend 0 (TurboSight TBS 6985 DVBS/S2 frontend)...
DVB: registering adapter 3 frontend 0 (TurboSight TBS 6985 DVBS/S2 frontend)...

Esto significa que ya tenemos preparado nuestro equipo con la sintonizadora. A continuación, habremos de prepararnos para sintonizar los satélites que deseemos.

Conectaremos las cuatro entradas coaxiales de la tarjeta TBS6985 a las cuatro respectivas antenas satelitales de la vivienda. Para la conexión un técnico especializado utiliza el metraje correspondiente con dos bajadas de cable doble RG6 de 75 Ohmnios, terminados con fichas de compresión de marca Holland. El cable doble viene adosado, de manera que en este caso, presenta la ventaja de ser más sencillo para empotrar e instalar a lo largo de la vivienda, que hacer bajar cuatro cables individuales desde las antenas plato. Las cuatro antenas son orientadas previamente a los satélites por medio de un aparato denominado Satfinder, provisto por el técnico.



En nuestro caso, contamos con cuatro antenas parabólicas independientes, apuntadas previamente a los satélites Arsat 1, Amazonas 3, Hispasat 30W, y Galaxy 28 a través de los sintonizados 0, 1, 2 y 3 respectivamente de nuestra plaqueta sintonizadora cuádruple.

Para explorar el espacio radioeléctrico y buscar canales a través de los cuatro sintonizadores, se debe utilizar el programa libre scan-s2 que acabamos de compilar. Para ello es necesario proveer previamente al programa scan-s2 de un archivo de texto de extensión .conf que detalles ciertas características técnicas de los canales de cada satélite.

Os proveeré de dichos archivos completos para los cuatro satélites indicados, pero si quisieran utilizarlos con otros satélites diferentes, podrán hacerlo. Simplemente han de saber que el archivo de texto .conf con las características de señales, debe construirse según la siguiente sintaxis:


# Sist Frec Pol FEC Mod
# Ejemplo:

S1 11778000 V 27500000 3/4 35 QPSK
S2 11362000 H 22000000 2/3 35 8PSK

...en donde:

  • S1 o S2 detallan el sistema de entrega. Podemos usar  S1 (para el formato satelital DVB-S) o S2 (para el formato DVB-S2 de alta definición). Si no lo sabemos, podemos ingresar S se activará la función "automática", donde el sintonizador probará cuál de los dos es correcta, pero esto hará notoriamente mas lento al escaneo de canales).
  • El segundo parámetro es la frecuencia en kilohertzios, en el ejemplo 11.778.000 kHz o 11.362.000 kHz
  • V o H indican la polarización: se refiere a V(ertical) u H(orizontal)
  • El quinto parámetro es el valor FEC. En el ejemplo 3/4 o 2/3 respectivamente
  • El sexto parámetro es el factor Roll Off, "35" en el ejemplo.
  • En tanto, el último parámetro responde a la modulación, QPSK o 8PSK
Nota técnica: Habrán de conocer que por convención, el sistema DVB-S soporta un único factor de Roll-off (0,35) y una única modulación (QPSK), de manera que en el archivo de configuración - cuando indiquemos una señal de formato DVB-S - el factor Roll-off será siempre 35 y la modulación siempre será QPSK.

Por otro lado, el formato DVB-S2 soporta varios tipos de modulación, como QPSK, 8PSK, y tres factores de roll-off: 0.20, 0.25 y 0.35 (que en el archivo de configuración se deben indicar 20, 25 y 35 respectivamente). 

La placa TBS6985 eventualmente puede descubrir el factor roll-off de la señal particular si se especifica en el archivo la función AUTO ("Automático"), pero esto provocará una reducción en la velocidad al cambiar de canal multiplexado, por lo tanto - siempre que se lo conozca y sea posible - se recomienda indicar el valor correcto del factor de Roll Off. Como web de referencia, os recomiendo esta.

Como he dicho, os indicaré los archivos de configuración para la sintonía de los cuatro satélites mencionados. Los realizaremos con el editor de texto GNU Nano. Primero comenzaremos por crear el archivo de configuración de sintonía de los canales del ArSat-1, al cual apunta nuestra primer parabólica. Ingresamos el comando:

nano ~/.arsat1_scan-S2.conf

...se abrirá el editor de texto peronista Nano. En él, le pegamos el siguiente contenido, detalles que corresponden a los canales multiplexados que emite el sputnik peronista (recordemos que en cada canal, pueden cohabitar varias señales dependiendo del sistema de emisión):

# InVap ArSat-1 para scan-s2
#Consultado en http://www.portaleds.com/espanol/listar.php?sat=2880&cod=fta
#por ubuntuperonista.blogspot.com.ar para todo el Universo GPL-V3
# 9/7/2015
#sistema(S1,S2) freq(KHZ) pol(H,V) fec rolloff (25, 35, 45) modulacion (QPKS, 8PSK, etc)
S1 11546000    V 2/3 35 QPSK
S1 11588000 H 5/6 35 QPSK
S1 11640000 V AUTO 35 QPSK
S2 11670000 V 5/6 AUTO 8PSK
S2 12020000 V 5/6 AUTO 8PSK
S1 12051000 V 5/6 35 QPSK
S1 12058000 H 2/3 35 QPSK
S1 12058000 V 5/6 35 QPSK
S1 12069000 V 2/3 35 QPSK
S1 12070000 H 2/3 35 QPSK
S2 12075000 H 5/6 AUTO 8PSK
S1 12083000 V 7/8 35 QPSK
S1 12086000 V 2/3 35 QPSK
S1 12092000 V 2/3 35 QPSK
S1 12096000 V 2/3 35 QPSK
S1 12110000 V 2/3 35 QPSK
S1 12113000 V 3/4 35 QPSK
S1 12113000 V 3/4 35 QPSK
S2 12125000 V 5/6 35 QPSK


...una vez ingresado dichos datos, hemos de guardarlos con Ctrl+o y salir del editor con Ctrl+x. Acto seguido, nos dedicamos a la segundo sintonizador, cuya parabólica mira hacia el satélite Amazonas 61W. Editamos nuevamente un fichero con Nano, ingresando el comando:

nano ~/.amazonas_scan-s2.conf

y le pegamos el siguiente contenido:

# Amazonas 61W para scan-s2
# Consultado en
# http://www.portaleds.com/espanol/listar.php?sat=2990&cod=fta
# por ubuntuperonista.blogspot.com.ar para todo el Universo GPL-V3
# 9/7/2015
# sistema(S1,S2) freq(KHZ) pol(H,V) fec rolloff (25, 35, 45) modulacion (QPKS, 8PSK, etc)
#BANDA C
S1 3631000 H 3/4 35 QPSK
S1 3923000 V 3/4 35 QPSK
S1 3927000 H 3/4 35 QPSK
S2 3941000 V AUTO AUTO 8PSK
S1 4134000 H 3/4 35 QPSK
S2 4140000 H 3/4 AUTO QPSK
S1 4157000 H 3/4 35 QPSK
S1 4164000 H 3/4 35 QPSK
#BANDA KU
S1 10728000 H 3/4 35 QPSK
S1 10888000 H 3/4 35 QPSK
S1 10928000 H 3/4 35 QPSK
S1 11055000 H 3/4 35 QPSK
S1 11135000 H 3/4 35 QPSK
S1 11175000 H 3/4 35 QPSK
S1 11184000 V 2/3 35 QPSK
S1 11302000 H 3/4 35 QPSK
S1 11738000 V 2/3 35 QPSK
S2 11850000 H 3/4 AUTO 8PSK
S1 11891000 V 3/4 35 QPSK
S1 12092000 H 3/4 35 QPSK
S2 12270000 V 3/4 AUTO 8PSK
S1 12390000 V 2/3 35 QPSK
S1 12430000 V 2/3 25 QPSK


Guardamos y cerramos el archivo.

Nuestra tercer plato parabólico apunta al satélite geoestacionario Hispasat 30w. También le editamos el archivo de texto para su configuración:

nano ~/.hispasat30w_scan-s2.conf

...y le pegamos el siguiente código:

# Hispasat 30W para scan-s2
# Consultado en 
# http://www.portaleds.com/espanol/listar.php?sat=3300&cod=fta
#por ubuntuperonista.blogspot.com.ar para todo el Universo GPL-V3
# 9/7/2015
#sistema(S1,S2) freq(KHZ) pol(H,V) fec rolloff (25, 35, 45) modulacion (QPKS, 8PSK, etc)
#bandaKU
S1 11884000 V 2/3 35 QPSK
S2 11910000 V 3/4 AUTO QPSK2
S1 11958000 V 7/8 35 QPSK
S1 11960000 V 5/6 35 QPSK
S2 11968000 V 3/5 AUTO 8PSK
S1 11974000 V 3/4 35 QPSK
S1 11981000 V 3/4 35 QPSK
S1 11987000 V 3/4 35 QPSK
S1 12052000 H 3/4 35 QPSK
S1 12052000 V 3/4 35 QPSK
S2 12077000 V 8/9 AUTO QPSK2
S1 12092000 H 3/4 35 QPSK
S1 12106000 V 2/3 35 QPSK
S1 12132000 H 3/4 35 QPSK

En tanto, nuestra cuarta parabólica apunta al Galaxy 28. Usamos Nano para crear otro archivo de configuración:

nano ~/.galaxy28_scan-s2.conf

y le pegamos el siguiente texto:
# GALAXY 28 89w para scan-s2
# Consultado en 

# http://www.portaleds.com/espanol/listar.php?sat=2710&cod=fta
# por ubuntuperonista.blogspot.com.ar para todo el Universo GPL-V3
# 9/7/2015
#sistema(S1,S2) freq(KHZ) pol(H,V) fec rolloff (25, 35, 45) modulacion (QPKS, 8PSK, etc)
# BANDA C
S2 4110000 H 3/4 35 QPSK
# BANDA KU
S2 11800000 H 2/3 AUTO 8PSK
S2 11920000 H 2/3 AUTO 8PSK
S2 11960000 H 3/4 AUTO 8PSK
S2 12000000 H 3/4 AUTO 8PSK
S2 12050000 H 2/3 AUTO 8PSK
S1 12083000 H 3/4 35 QPSK
S1 12124000 H 3/4 35 QPSK


Para escanear con el comando scan-s2, debemos utilizar la variable -a seguido del número de sintonizador (adapter). Como dijimos, los sintonizadores nomenclados como adapter 0/3 frontend 0, y por lo tanto, habremos de ingresar uno a uno los siguientes comandos:

cd ~

scan-s2 -a 0 -f 0 -c arsat1_scan-S2.conf > arsat.conf
scan-s2 -a 1 -f 0 -c amazonas_scan-s2.conf > amazonas.conf
scan-s2 -a 2 -f 0 -c hispasat30w_scan-s2.conf > hispasat.conf
scan-s2 -a 3 -f 0 -c galaxy28_scan-s2.conf > galaxy28.conf

Cada comando creará un archivo de sintonía diferente con las señales que tiene cada uno de nuestros sintonizadores (arsat.conf, amazonas.conf, hispasat.conf, y galaxy.conf).

Podría sintonizarlos utilizando diferentes instancias del reproductor VLC. Por ejemplo:

vlc arsat.conf

vlc amazonas.conf
vlc hispasat.conf
vlc galaxy28.conf

Esto nos permitiría sintonizar dos programas a la vez, cultivarnos en el Centro Cultural Néstor Kirchner y ver como tiran Paquiao o Mayweather.
También podríamos escoger hacer un archivo general de sintonía, y clavar el dial en alguno de todos los canales disponibles, en una sola sesión de VLC. Para ello debemos preparar un archivo .conf general, como:

cat arsat.conf >> canalesatelitales.conf
cat amazonas.conf >> canalesatelitales.conf
cat hispasat.conf >> canalesatelitales.conf
cat galaxy28.conf >> canalesatelitales.conf

Y ahora tendré todos los canales integrados en uno solo llamado canalesatelitales.conf, que podría reproducir para ir utilizando los diferentes sintonizadores. Para iniciar dicho archivo, simplemente hemos de crear un acceso directo o lanzarlo con VLC:

vlc canalesatelitales.conf

miércoles, 1 de julio de 2015

¿Cómo puedo vaciar la papelera desde la Terminal de Ubuntu?

¡Trabajadores!


De un tiempo a esta parte, se ha hecho natural que los sistemas operativos GNU con Linux (Ubuntu entre ellos) cuenten con una interfaz gráfica de usuario, que facilita enormemente al neófito la acción computada en su propio sistema.


Su uso general no es secreto para nadie: podremos copiar, pegar archivos y movernos en la estructura de ficheros con alguno de los Gestores de Archivos, entre los cuales encontramos, dependiendo nuestra interfaz y nuestro gusto, a una parva de gestores libres (Nautilus, Elementary, Dolphin, Caja, por solo indicar algunos).

Todos ellos cuentan con una Papelera de Reciclaje, concepto de escritorio que realmente está constituido por una carpeta oculta donde va a parar todo el material eliminado por el Usuario del sistema. El sentido de la misma es permitirnos una instancia para recuperar los ficheros una vez que los hayamos eliminado.

Si deseamos vaciar la papelera definitivamente, podemos hacemos clic sobre ella con el botón derecho del mouse y elegirmos "Vaciar la Papelera". O presionamos el botón "Vaciar la papelera" que reside en la ventana de la misma.

Sin embargo a veces nos aqueja una duda: ¿cómo vaciamos la papelera desde la terminal? ¿existe manera de poder eliminar dichos archivos si desde el modo gráfico se nos presenta un error indeterminado?

Gracias al Justicialismo, la respuesta a todas estas inquietudes es afirmativa. La carpeta de la papelera queda en ~/.local/share/Trash/. De tal modo, que podremos listar los ficheros abriendo una terminal con Ctrl+Alt+T e ingresando:

ls ~/.local/share/Trash/

Si deseamos vaciar la papelera todos los archivos y que no le solicite confirmación sobre su borrado, podríamos emplear la terminal con el siguiente Comando de Organización:

rm -rf ~/.local/share/Trash/*
Esto abrirá la válvula y hará que todo se vaya por el caño...


Naturalmente, debemos estar prevenidos en que esto eliminará los ficheros definitivamente.

sábado, 27 de junio de 2015

¿Cómo emulo el panel de una DEC PDP-11/40 en Ubuntu de 64 bits?

Al recibir visitas en su despacho de Puerta de Hierro, Juan Perón demostraba su avezado entendimiento de los pormenores políticos de la Argentina, pero también utilizaba dicho tiempo para utilizar su mainframe DEC PDP-11/40 para realizar diferentes tareas simples, e instruir a la masa en las prácticas más sencillas de su conducción de este aparato que en sus inicios, sólo podía manejarse a través de interruptores.

(...)
Cuentan que en el buen año de 1785, un aniñado Carolo Federico Gauss de tan sólo 8 abriles, asistía a clase de matemáticas en una escuela repleta de teutones cargosos. Su profesor - maldiciendo la hora en que eligió su apostolado - encontró la solución que necesitaba para aquél problema que lo aquejaba: la energía juvenil de sus rubicones educandos. Les conminó entonces a encontrar el total de la suma de todos los números del 1 al 100, sólo para mantenerlos ocupados. La tediosa representación implica sumar 1+2+3+...+n.

Gauss, haciendo uso de un genio algebraico desarrollado por no contar con una Playstation, se avivó que podía reordenar los números así: (1+100) + (2+99) + (3+98) ... (50+51) = resultando en cincuenta pares de cifras que sumadas siempre cobraban el valor de 101... Y si ello se multiplicaba por cincuenta, se obtenía el resultado de la incógnita propuesta: 5050. Pero al generalizar, descubrió que sería mas sencillo ganarle de mano al profesor, plantear la ecuación n*(n+1)/2, y poder resolver cualquier problema similar con que les saliera...
Lo complejo puede parecer malo, pero será siempre bueno si nos sirve para aplicarlo a todo, y para hacer mas simple una tarea repetitiva... tal es el dogma que ha de seguir todo aquel que haga de la Conducción su arte, y de la programación, su oficio.

Vean señores, programar un sistema informático requiere de ciertos conocimientos, pero no deja de constituirse en una técnica que basa su acción en la noción de la repetición, tarea que recae en un equipo, quien será el que reciba la carga laboral. Es por ello que se dice que el software no es otra cosa que "conocimiento en acción", y mientras que abarcamos el rol de Conductor, a nuestro sistema informático recaerá el de operar como la Masa Trabajadora, destinada a realizar nuestro designio.

Nuestro Movimiento ha dado todo a todos, pero en ocasiones conviene volver a las raíces del primer Justicialismo para lograr la tan ansiada Justicia Social. Contar con las herramientas primigenias nos puede asistir a comprender lo doctrinario y lo conceptual, pues nos acercará de la manera más básica a integrar un movimiento político. Y esto que tan verdadero es en la conducción, lo encontraremos reflejado también en un ambiente informático.

Un ejemplo suele aclararlo todo, como decía Napoleón. La computadora mainframe DEC PDP-11/40 de enero de 1973 cumplió enormes funciones como equipo de uso general. Se trataba de una iteración mas potente del modelo /20, esta vez con una unidad central de proceso DEC KB11 dotada de microcódigo en dos plaquetas, capaz de un manejo de memoria de 18 bits (con hasta 128 kilowords de memoria en los sistemas mas pisteros).
Si bien es obsoleta desde el punto de vista técnico, su lógica es aún totalmente válida para comprender la doctrina general en las Ciencias de la Computación, su teoría y práctica en el uso de sistemas operativos. Ya he ilustrado como emularlas a través del excelente SimH y cargarles un sistema operativo UNIXv6 o v7, antecesores fundamentales del sistema libre GNU, lo que nos libera de tener que contar con uno de estos equipos "de colección".

En primer lugar - en el caso de utilizar Ubuntu de 64 bitios - hemos de descargar las dependencias requeridas. Para ello abrimos una Terminal e ingresamos los siguientes Comandos de Organización:

sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386
sudo apt-get install libpcap0.8:i386
sudo apt-get install libXext6:i386 libXtst6:i386 libXi6:i386


En segundo término, procederemos a crear un directorio oculto para almacenar allí nuestro emulador SimH para la PDP-11/40 - y su panel luminoso de operación. Todo ello podremos hacerlo de forma mas o menos automatizada con los siguientes comandos de organización:

mkdir ~/.panelsim/ ~/.panelsim/pdp11-40/
cd ~/.panelsim/pdp11-40/ ;


wget http://retrocmp.com/attachements/panelsim1140_linux.tgz ;
tar -xvf panelsim1140_linux.tgz -z ;


Ya, y como tercer acción, podremos darle inicio a todo el entramado de emulación, ingresando a la carpeta oculta del programa e iniciamos la rutina de encendido start.sh, con los siguientes comandos de organización:

cd ~/.panelsim/pdp11-40/
sudo ./start.sh

Se harán presentes dos ventanas de aplicaciones: por un lado tendremos la consola de video del emulador SimH propiamente dicho que también oficiará como la consola serial de la PDP-11 emulada.
...y por otro lado se nos presentará la consola de mando de la DEC PDP-11/40, con sus interruptores, conmutadores, botones e indicadores luminosos virtualizados. En la parte superior de dicha ventana habremos de encontrar el menú desplegable Size, que nos permitirá escoger un tamaño de ancho en pixels para la ventana (por ejemplo, 1200 píxels).


La consola de la PDP-11 estará apagada, pero al iniciarse la máquina virtual, nos mostrará actividad a través de sus indicadores luminosos parpadeantes. La consola terminal - en tanto - mostrará el prompt de arranque del sistema operativo primigenio de la PDP-11, el RT-11, solicitándonos la fecha en formato dd-mmm-yy). Para facilitar la cosa, conviene ingresar una fecha anterior a 1999 (ej. 17-oct-45).

Estudiemos el panel de la DEC PDP-11/40. Es una unidad que influyó enormemente sobre otros diseños de la época, que no solo clonaban su arquitectura sino su modo de operar (¡incluso detrás de la Cortina de Hierro!). En su parte superior encontramos el panel luminoso ADDRESS, el cual detalla, en octales, la dirección de memoria en la cual se encuentra el puntero del sistema. En su parte inferior encontramos el panel luminoso DATA, en el cual se muestran en octales, el registro propiamente dicho.

La PDP-11 se operaba - inicialmente - ingresando directamente los datos en la memoria, para ello existen en la parte inferior de la consola, los conmutadores de control, de 18 bits (nomenclados de 17 a 0), divididos en octales de colores rojo y azul alternados.

A diferencia de un panel "tipo calculadora" en decimales, este panel de conmutadores permiten depositar valores numéricos en octales o en binario, según la necesidad. Al operar en binario, poniendo el conmutador hacia abajo quedará "0" y hacia arriba en posición "1". Al operar en octales, contaremos con 16 bits (conmutador 0 al 15) y dos bits de parada: con los valores siguientes:

Conmutador  8 = 400  Conmutador 17 = MSB
Conmutador  7 = 200  Conmutador 16 = LSB
Conmutador  6 = 100  Conmutador 15 = 100000

Conmutador  5 = 40   Conmutador 14 = 40000
Conmutador  4 = 20   Conmutador 13 = 20000
Conmutador  3 = 10   Conmutador 12 = 10000

Conmutador  2 = 4    Conmutador 11 = 4000
Conmutador  1 = 2    Conmutador 10 = 2000
Conmutador  0 = 1    Conmutador  9 = 1000

Adicionalmente, en la parte inferior izquierda contamos con un panel de control, que tiene botones de presión y conmutadores dobles. Su uso es sencillo y potente:

Botón LOAD ADDR: Carga la dirección en memoria solicitada.
Botón EXAM: Carga el registro desde la dirección de memoria indicada en el registro de direcciones.
Botón CONT: Continua el proceso desde una parada HALT.
Conmutador ENABLE/HALT: Si está en ENABLE permite correr (ejecutar) las instrucciones y rutinas programadas en la pila de memoria en el procesador, y está en HALT detiene el procesamiento de instrucciones y aguarda para el ingreso o revisión de datos.
Botón START: Pone a cero el sistema e inicia el procesado de las instrucciones en la pila de memoria.
Botón DEP: Deposita (escribe) los contenidos de los conmutadores de datos en la localización de memoria indicada por el registro de direcciones.


Ejemplos simples de operación
Podremos utilizar el panel de la PDP-11 para realizar operaciones de ejemplo y estudiar su empleo (aunque "cuelguen" al sistema).

En primer lugar pondremos el conmutador Enable/Halt en HALT para pausar la ejecución del sistema (en una PDP-11 en funcionamiento, esto provoca que se ignore el uso de los demás conmutadores de datos). Podremos avanzar a pasos a lo largo del bucle de código, presionando CONT. Si lo deseásemos, podríamos continuar con la ejecución de las instrucciones en la pila de memoria, poniendo el conmutador Enable/Halt en ENABLE y presionando CONT nuevamente. Ahora detengamos la máquina nuevamente al procesador con HALT, y examinemos una dirección de memoria. Solicitamos una dirección de memoria cualquiera con los conmutadores de control en octales, y luego presionamos LOAD ADRS para cargar la dirección en memoria. Luego de eso, puede presionar EXAM varias veces, para ver el registro representarse con los indicadores luminosos del panel ADDRESS.

Para almacenar algo en la memoria (o "depositar", como se decía entonces), hemos de indicar primero una dirección con los conmutadores de control, y luego presionar LOAD ADRS. Se verá en el panel ADDRESS. Ingresemos alguna información, y luego presione el botón DEP. El registro binario se escribirá a la dirección de memoria dada y se presentará en el panel DATA. Podremos luego cambiar los conmutadores de control, a fin de cambiar la información binaria; si presionamos DEP nuevamente se escribirán las celdas de memoria contigua siguiente (de modo que no tenemos que indicar la dirección de memoria con cada paso, sólo con el primero y los registros que se ingresen a continuación se irán almacenando en las celdas de memoria contiguas subsiguientes de forma automática).

Si analizamos la pantalla de la consola de SimH, veremos que en ella se reflejarán todas las operaciones realizadas a través del panel frontal de la PDP-, 11/40, con la siguiente sintaxis:

deposit direccion_de_memoria registro
examine direccion_de_memoria

Indudablemente, hemos de tener presente que la mera acción de almacenar datos en las celdas de memoria de nuestra PDP-11/40 sin ton ni son, y sin tener el mas breve conocimiento de que estamos haciendo sólo arruinará el sistema operativo, hasta que reseteemos nuestra PDP-11 virtual.

Programa en Ensamblador
Pues bien, luego de destruir el sistema operativo RT-11, será tiempo para un trabajo más constructivo. Para ello podremos utilizar el panel de la PDP-11/40 a fin de cargar un programa (una secuencia de códigos de operación o nemónicos de lenguaje ensamblador). El lenguaje ensamblador está formado por los códigos más básicos del microprocesador KB11 de la PDP-11, y nos permite crear programas bastante potentes operando directamente sobre el microprocesador y la memoria.

En este pequeño ejemplo, almacenaremos a partir de la dirección 001000 en la pila de memoria, un programa "Simulador Doctrinario de Peronismo", pensado para correr en la PDP-11 y mostrarnos su resultado en el panel frontal de la PDP-11... este programa nos permitirá entender el devenir ideológico de nuestro movimiento.

El listado en el ensamblador sería:

;***Programa "Simulador Doctrinario de Peronismo" en ensamblador para PDP-11***
;Dirección Datos  Nemónicos (opcodes)
001000    005000  clr       r0
001002    005200  inc       r0
001004    006100  rol       r0
001006    000005  reset
001010    000775  br        001004

   

Como vemos, son seis instrucciones. Para ingresar este programa de seis pasos mediante el panel, debemos utilizar los conmutadores de la PDP-11 e ingresar los datos (registros) en las direcciones de memoria correspondiente (iniciando desde 001000).

Básicamente, habremos de detener el equipo poniéndolo en HALT, ingresar en octal 001000, y presionar LOAD ADRS para indicar al puntero esa posición de memoria. Ingresaremos los registros en octales (los valores de los octales se suman para lograr el valor deseado). Con cada valor, ingresado, debemos presionar el botón DEP para depositarlos en memoria a en la dirección 001000 y subsiguientes...

Como no todos dominan la conversión a octales, el calidad de Conductor del Justicialismo os diré cómo ingresar los registros directamente de este programa "Simulador Doctrinario de Peronismo" en el panel de la PDP-11. Habrán de:
  • bajar todos los conmutadores, levantar el conmutador 9 (para el octal 001000) y apretar LOAD ADRS
  • bajar todos los conmutadores, levantar los conmutadores 11 y 9 (para el octal 005000) y apretar DEP
  • bajar todos los conmutadores, levantar los conmutadores 11, 9 y 7 (para el octal 005200), y presionar DEP
  • bajar todos los conmutadores, levantar los conmutadores 11, 10 y 6 (para el octal 006100), y presionar DEP
  • bajar todos los conmutadores, levantar los conmutadores 2 y 0 (para el octal 000005), y presionar DEP
  • bajar todos los conmutadores, levantar los conmutadores 8, 7, 6, 5, 4, 3, 2 y el 0 (para el octal 000775), y presionar DEP

Una vez depositados así todos los registros en memoria, será buena práctica examinar toda la pila de instrucciones del programa recientemente ingresada con el botón EXAM, pues al convertir los dígitos en octales a posiciones de los conmutadores del panel, podríamos cometer errores fácilmente. Como dato, tengamos en cuenta que el bus de 18 bits de la PDP-11/40 permitía una dirección más alta de memoria de 777776.

Para correr el programa:

  1. Debemos poner el conmutador HALT/ENABLE en ENABLE, para permitir continuar la ejecución de programas en la PDP-11.
  2. Ingresar la dirección del programa, en este caso en el panel DATA ponemos el octal 001000 (bajando todos los conmutadores, levantar el conmutador 9, y presionando LOAD ADRS.
  3. Presionar el botón START para correr el programa.
Este programa Simulador Doctrinario de Peronismo debería mostrarnos una sola luz en el panel DATA, que - siguiendo la práctica ideológica de nuestro Movimiento - se desplazará de izquierda a derecha, para luego volver a aparecer por izquierda y repetir el ciclo ad infinitum...

Para ello, el programa está usando el nemónico (opcode) "reset": Este nemónico inicializa todos los dispositivos, requiriendo para ello 70 milisegundos (1/14 de segundo). En este intervalo, el contenido del registro R0 de la Unidad Central de Proceso se muestra en el panel DATA de LEDs.

Si quisiéramos obtener un contador binario en lugar de una luz que se desplaza, podemos reemplazar la línea:

001004  006100  rol  r0; Conmutadores de datos=006100, DEP

...por esta otra línea:

001004  005200  inc  r0; Conmutadores de datos=005200, DEP

Naturalmente, si queremos conocer más nemónicos para programar ensamblador de la PDP-11, podremos encontrar su conjunto de instrucciones aquí. El conocimiento de estos nemónicos (opcodes) nos permitirá programar, con cierta lógica y volcado matemáticos, diferentes programas y aplicaciones simples o complejas. Por ejemplo, podríamos escribir un programa en ensamblador que nos resuelva la incógnita  n*(n+1)/2 resuelta por el joven Gauss, pero para cualquier número que se nos ocurra.

Os indicaré el listado puro en ensamblador, y las instrucciones para introducirlo y utilizarlo con el parco panel frontal de la PDP-11/40.


;*** LISTADO DE PROGRAMA ***
; Programa de ensamblador para PDP-11/40.
; Este programa lee >=0 desde la consola, suma el primer n no negativo,
; integra, se detiene y muestra el resultado en la consola.
; La suma resulta ser n*(n+1)/2, que no cabe en una WORD de memoria para
; n=361, el resultado es > 2^16 y entra en una WORD de memoria.
; El registro R1 contienen la suma.
; El registro R0 cuenta de 1 a R2.
; Este programa requiere una PDP-11/40. Al hacer HALT muestra R0 en los LED "DATA"
; En máquinas QBus (LSI11, 11/23, '53, '73, '93), el
; switch/display register 177570 is not implemented,
; resulting in a trap (UNIBUS timeout)
12                               
13 177570                    sr    =    177570    ; cambio de registro
14                          
15                               .asect
16 001000                        .=1000        ; el programa se carga en 1000
17                               
18                             start:
19 001000 013702  177570           mov    @#sr,r2 ; r2 = n (lee n desde el cambio de registro)
20 001004 005000                   clr    r0        ; r0 = 0 ; // contador
21 001006 005001                   clr    r1        ; r1 = 0 ; // suma
22                             loop:        ; hace {
23 001010 005200                   inc    r0        ;   r0++ ;
24 001012 060001                   add    r0,r1    ;   r1 += r0 ;
25 001014 020002                   cmp    r0,r2    ; } en tanto  (r0 != r2) ;
26 001016 001374                   bne    loop
27                               
28                             disp:
29 001020 010100                   mov    r1,r0    ; muestra la suma. Desbordará si el input es >361.
30 001022 000000                   halt        ; El OPR debe presionar conmutador CONTINUE ahora!
31                               
32 001024 000765                   br    start    ; ejecuta el programa nuevamente
***FIN DE PROGRAMA***


Fase 1 - Preparación

- Poner todos los conmutadores en posición normal "0".
- Poner el conmutador HALT/ENABLE en HALT.
- Power en ON.
- Realizar test de lámparas.

 

Fase 2 - Ingreso de los registros.

Paso 2.1

 Qué hacer: Inicializar la dirección actual en 001000
 Cómo: Ponga todos los conmutadores ABAJO, luego en 9 ARRIBA. Luego presione LOAD ADRS.
 Revisar: Panel de luces =

         _ ___ __ __ ___ __ __ ___ __ __ ___ __ __ ___ __ __ _ 
ADDRESS [_._|_.__.__._|_.__.__O_|_.__.__._|_.__.__._|_.__.__._]
         15  14 13 12  11 10  9   8  7  6   5  4  3   2  1  0 
 

Paso 2.2
 Qué hacer: Completar la dirección de memoria 001000 con el registro 013702
 Cómo: Poner todos los conmutadores ABAJO, luego los conmutadores 12,10-6, y 1 ARRIBA. Luego presionar DEP.
 Revisar: Panel de luces =

         _ ___ __ __ ___ __ __ ___ __ __ ___ __ __ ___ __ __ _ 
ADDRESS [ . | .  .  . | .  .  O | .  .  . | .  .  . | .  .  . ]
   DATA [_._|_.__.__O_|_.__O__O_|_O__O__O_|_.__.__._|_.__O__._]
         15  14 13 12  11 10  9   8  7  6   5  4  3   2  1  0 
 

Paso 2.3  
 Qué hacer: Completar la dirección 001002 con el registro 177570
 Cómo: Poner todos los conmutadores ABAJO, luego los conmutadores 15-8,6-3 ARRIBA. Luego oprimir DEP.
 Revisar: Panel de luces =     

         _ ___ __ __ ___ __ __ ___ __ __ ___ __ __ ___ __ __ _ 
ADDRESS [ . | .  .  . | .  .  O | .  .  . | .  .  . | .  O  . ]
   DATA [_O_|_O__O__O_|_O__O__O_|_O__.__O_|_O__O__O_|_.__.__._]
         15  14 13 12  11 10  9   8  7  6   5  4  3   2  1  0 
 

Paso 2.4
 Qué hacer: Completar memoria en la dirección 001004 con el registro 005000
 Cómo: Poner todos los conmutadores ABAJO, luego los conmutadores 11,9 ARRIBA. Luego oprimir DEP.
 Revisar: Panel de luces =

         _ ___ __ __ ___ __ __ ___ __ __ ___ __ __ ___ __ __ _ 
ADDRESS [ . | .  .  . | .  .  O | .  .  . | .  .  . | O  .  . ]
   DATA [_._|_.__.__._|_O__.__O_|_.__.__._|_.__.__._|_.__.__._]
         15  14 13 12  11 10  9   8  7  6   5  4  3   2  1  0 
 

Paso 2.5
 Qué hacer: Completar memoria en la dirección 001006 con el valor 005001
 Cómo: Poner todos los conmutadores ABAJO, luego los conmutadores 11,9,0 ARRIBA. Luego oprima DEP.
 Revisar: Panel de luces =

         _ ___ __ __ ___ __ __ ___ __ __ ___ __ __ ___ __ __ _ 
ADDRESS [ . | .  .  . | .  .  O | .  .  . | .  .  . | O  O  . ]
   DATA [_._|_.__.__._|_O__.__O_|_.__.__._|_.__.__._|_.__.__O_]
         15  14 13 12  11 10  9   8  7  6   5  4  3   2  1  0 
 

Paso 2.6  
 Qué hacer: Completar memoria en la dirección 001010 con el valor 005200
 Cómo: Poner todos los conmutadores ABAJO, luego los conmutadores 11,9,7 ARRIBA. Luego oprimir DEP.
 Revisar: Panel de luces =

         _ ___ __ __ ___ __ __ ___ __ __ ___ __ __ ___ __ __ _ 
ADDRESS [ . | .  .  . | .  .  O | .  .  . | .  .  O | .  .  . ]
   DATA [_._|_.__.__._|_O__.__O_|_.__O__._|_.__.__._|_.__.__._]
         15  14 13 12  11 10  9   8  7  6   5  4  3   2  1  0 
 

Paso 2.7
 Qué hacer: Completar memoria en la dirección 001012 con el valor 060001
 Cómo: Poner todos los conmutadores ABAJO, luego los conmutadores 14-13,0 ARRIBA. Luego oprima DEP.
 Revisar: Panel de luces =

         _ ___ __ __ ___ __ __ ___ __ __ ___ __ __ ___ __ __ _ 
ADDRESS [ . | .  .  . | .  .  O | .  .  . | .  .  O | .  O  . ]
   DATA [_._|_O__O__._|_.__.__._|_.__.__._|_.__.__._|_.__.__O_]
         15  14 13 12  11 10  9   8  7  6   5  4  3   2  1  0 
 

Paso 2.8
 Qué hacer: Completar memoria en la dirección 001014 con el valor 020002
 Cómo: Poner todos los conmutadores ABAJO, luego los conmutadores 13,1 ARRIBA. Luego oprima DEP.
 Revisar: Panel de luces =

         _ ___ __ __ ___ __ __ ___ __ __ ___ __ __ ___ __ __ _
ADDRESS [ . | .  .  . | .  .  O | .  .  . | .  .  O | O  .  . ]
   DATA [_._|_.__O__._|_.__.__._|_.__.__._|_.__.__._|_.__O__._]
         15  14 13 12  11 10  9   8  7  6   5  4  3   2  1  0 


Paso 2.9
 Qué hacer: Completar memoria en la dirección 001016 con el valor 001374
 Cómo: Poner todos los conmutadores ABAJO, luego los conmutadores 9,7-2 ARRIBA. Luego oprima DEP.
 Revisar: Panel de luces =    

         _ ___ __ __ ___ __ __ ___ __ __ ___ __ __ ___ __ __ _ 
ADDRESS [ . | .  .  . | .  .  O | .  .  . | .  .  O | O  O  . ]
   DATA [_._|_.__.__._|_.__.__O_|_.__O__O_|_O__O__O_|_O__.__._]
         15  14 13 12  11 10  9   8  7  6   5  4  3   2  1  0 
 

Paso 2.10
 Qué hacer: Completar memoria en la dirección 001020 con el valor 010100
 Cómo: Poner todos los conmutadores ABAJO, luego los conmutadores 12,6 ARRIBA. Luego oprima DEP.
 Revisar: Panel de luces =

         _ ___ __ __ ___ __ __ ___ __ __ ___ __ __ ___ __ __ _
ADDRESS [ . | .  .  . | .  .  O | .  .  . | .  O  . | .  .  . ]
   DATA [_._|_.__.__O_|_.__.__._|_.__.__O_|_.__.__._|_.__.__._]
         15  14 13 12  11 10  9   8  7  6   5  4  3   2  1  0 
 

Paso 2.11
 Qué hacer: Completar memoria en la dirección 001022 con el valor 000000
 Cómo: Poner todos los conmutadores DOWN. Luego levante DEP.
 Revisar: Panel de luces =

         _ ___ __ __ ___ __ __ ___ __ __ ___ __ __ ___ __ __ _
ADDRESS [ . | .  .  . | .  .  O | .  .  . | .  O  . | .  O  . ]
   DATA [_._|_.__.__._|_.__.__._|_.__.__._|_.__.__._|_.__.__._]
         15  14 13 12  11 10  9   8  7  6   5  4  3   2  1  0 


Paso 2.12
 Qué hacer: Completar memoria en la dirección 001024 con el valor 000765
 Cómo: Poner todos los conmutadores ABAJO, luego los conmutadores 8-4,2,0 ARRIBA. Luego oprima DEP.
 Revisar: Panel de luces =

         _ ___ __ __ ___ __ __ ___ __ __ ___ __ __ ___ __ __ _
ADDRESS [ . | .  .  . | .  .  O | .  .  . | .  O  . | O  .  . ]
   DATA [_._|_.__.__._|_.__.__._|_O__O__O_|_O__O__._|_O__.__O_]
         15  14 13 12  11 10  9   8  7  6   5  4  3   2  1  0 

Fase 3 - Verificar los datos


Pasos 3.1 - 3.12
 Qué hacer: Leer cada dirección de memoria ingresada y verificar los registros.
 Cómo: Repetir pasos 2.1. - 2.12., pero presionar EXAM en lugar de DEP.
 Revisar: Los patrones de luces deben ser como los ilustrados.

Fase 4 - Control de Programa

Paso 4.1 
 Qué hacer: Poner el punto de inicio del programa en dirección 001000.
 Cómo: Poner todos los conmutadores ABAJO, poner conmutador 9 ARRIBA. Presionar LOAD ADRS.
 Revisar: Panel de luces =

         _ ___ __ __ ___ __ __ ___ __ __ ___ __ __ ___ __ __ _ 
ADDRESS [_._|_.__.__._|_.__.__O_|_.__.__._|_.__.__._|_.__.__._]
         15  14 13 12  11 10  9   8  7  6   5  4  3   2  1  0 
 

Paso 4.2  
 Qué hacer: Comenzar el programa con argumentos.
 Cómo: Configurar ENABLE/HALT en la posición ENABLE.
       Configurar los conmutadores de control de datos como se desee..
       Presionar el botón START.
 Revisar: El indicador RUN se encenderá.
          Si el programa se detiene al presionar HALT, el indicador RUN se apagará nuevamente.

Paso 4.3
 Qué hacer: Detener el programa, avanzar un paso, y continuar procesando.
 Cómo: Para detener la ejecución del programa, poner el conmutador ENABLE/HALT en HALT.
 Revisar: El indicador RUN se apagará.
 Cómo: Para avanzar un solo paso, dejar el conmutador ENABLE/HALT en HALT, y presionar CONT para cada paso del programa.
 Cómo: Para comenzar la ejecución del programa, poner conmutador ENABLE/HALT en ENABLE.
 Revisar: El indicador RUN se encenderá.