jueves, 31 de mayo de 2018

¿Cómo hago para ver televisión digital satelital y terrestre con una caja TBS-5520 SE en Ubuntu?

¡ Trabajadores!

Siempre he sentido un verdadero orgullo de argentino al sentirme un vínculo de unión entre los hombres que trabajan.

La columna vertebral de nuestro movimiento son precisamente los Trabajadores, y ellos saben que junto a sus overoles manchados de grasas y polvo, portan el sagrado bastón de Mariscal que los torna en Conductores de una lucha en pos de las sagradas reivindicaciones.

Todo hemos de darlo por las conquistas sociales. Incluso hemos de llegar a la lucha si ello es necesario.

Veamos un ejemplo, pues ellos suelen aclararlo todo.

Siempre fue un Justo Anhelo de los trabajadores poseer un solo dispositivo que en sí mismo unificara las funciones de sintonizador de televisión digital terrestre ISDB-T y satelital, pero que además fuese portátil y capaz de hacer streaming - esto es, transmitir digitalmente a una red local o abierta si fuese necesario. Esto nos permitiría no sólo poder sintonizar a la vez tanto servicios digitales "de aire", sino también contenidos satelitales HD, y sin pagar una chirola. Simplemente nos permitiría lograr un avance tecnológico insuperable, y nos liberaría de los perniciosos monopolios de la comunicación.

Esto adminículo prometido sin embargo quedaba en el margen de la Ciencia Ficción, pero sin duda uno que conmovía a este viejo soldado.

Ademñas de las palmas y laureles de General de la Nación, mis trabajadores me han otorgado el título de Primer Trabajador, y en pos de ello hoy quiero hacerles conocer un dispositivo que enarbola los más altos deseos de sintonía en la constelación y en el aire. Gracias al Justicialismo, contamos hoy con esta solución, la caja TurboSight TBS5520SE.

La TBS-5520 SE es una caja sintonizadora universal externa de pequeñas dimensiones (no más que unos 12x9cm y 110 gramos). Dispone de una interfaz USB 2.0, y reúne dos tipos de receptores para servicios TV:
  • un sintonizador digital satelital (para norma DVB-S, DVB-S2 y DVB-S2X de televisión y radio digital), con una entrada coaxial nomenclada "LNB IN".
  • un sintonizador digital terrestre con entrada coaxial F, compatible con telecable digital DVB-C y C2) y Televisión Digital por Aire (TDA) en las normas ISDB-T (usada en Latinoamérica y Japón), y DVB-T y DVB-T2 (usadas en Europa principalmente).

El dispositivo tiene la capacidad de permitirnos escoger qué tipo de norma y uso queremos darle, y enviar los datos de TV digital directamente para verlos en la computadora, o crear un servidor de Streaming a través de un programa incorporado en la caja, y que se sirve de nuestro propio navegador web para configurarlo.
En nuestro caso, se trata de una caja ideal para actuar como suplemento para una computadora portátil o de escritorio, ya que nos permite en un único dispositivo recibir televisión digital satelital y televisión digital terrestre (por antena o telecable), en alta definición (HD), y retransmitirlo a través de la red.

Es soportada por las versiones más modernas del sistema operativo GNU con Linux, tanto de 32 como de 64 bits. Por ello, la caja soporta varios programas como VLC, y todos aquellos compatibles en Linux, como MythTV, o Kodi.

Se puede grabar o mirar un canal. También se puede grabar fácilmente TV en vivo, o programar la grabación mediante un clic. Es ideal para un Mediacenter y funciona con Ubuntu 18.04LTS.

Podremos encontrar la Guía de Usuario (en inglés) aquí.


Compilar el controlador de la TBS-5520SE en Ubuntu

Lamentablemente, la caja TBS-5520 SE no funciona en Ubuntu 18.04LTS de forma automática. Para que sea compatible con el kernel del sistema operativo, debemos compilar e instalar manualmente el módulo controlador y su firmware.

Esto puede parecer difícil pero no lo es tanto. En primer lugar abro una terminal con Ctrl+Alt+T. Se abrirá la terminal de Ubuntu. y luego le pego el siguiente bloque de comando:

sudo apt update

Tras presionar la tecla Enter, el sistema nos solicitará nuestra contraseña, y tras ingresarla a ciegas y presionar Enter, se actualizará la lista de paquetería.

Acto seguido, copiamos el siguiente bloque de comandos de organización y los pegamos en la terminal (seguidos de Enter).


sudo apt install git libproc-processtable-perl patchutils gcc dvblast dvb-apps kaffeine ;
mkdir ~/.tbsdriver/ ;
cd ~/.tbsdriver ;

wget https://github.com/LibreELEC/dvb-firmware/blob/master/firmware/dvb-fe-mxl5xx.fw ;
sudo mv dvb-fe-mxl5xx.fw /lib/firmware/ ;
git clone https://github.com/tbsdtv/media_build.git ;

git clone --depth=1 https://github.com/tbsdtv/linux_media.git -b latest ./media ; 
cd media_build ;
make dir DIR=../media ;
make allyesconfig ;
make -j4 ;
sudo make install ;


A continuación, instalamos los archivos de firmware oficiales. Para ello copiamos y pegamos el siguiente bloque de comandos:

cd ~/.tbsdriver/
wget http://www.tbsdtv.com/download/document/linux/tbs-tuner-firmwares_v1.0.tar.bz2 ; 
sudo tar jxvf tbs-tuner-firmwares_v1.0.tar.bz2 -C /lib/firmware/ ;


Cuando todos estos procedimientos terminen (dejarán de aparecer datos en la pantalla), podremos ingresar el siguiente comando para reinciar el equipo:

sudo reboot

Luego de volver a iniciarse el sistema operativo Ubuntu, nuestra computadora debería poder detectar ahora la caja sintonizadora. Para comprobarlo vía software podremos conectar la caja a un puerto USB, abrir una terminal con Ctrl+Alt+T e ingresar:

dmesg | grep frontend

...y el sistema debería devolvernos algo como:


[   25.594253] usb 3-1: DVB: registering adapter 0 frontend 0 (TurboSight TBS5520SE DVB-T/T2/C/C2/ISDB-T)...
[   25.594259] usb 3-1: DVB: registering adapter 0 frontend 1 (TurboSight TBS5520SE DVB-T/T2/C/C2/ISDB-T)...
[   25.594267] usb 3-1: DVB: registering adapter 0 frontend 2 (TurboSight TBS5520SE DVB-T/T2/C/C2/ISDB-T)...
[   25.594270] usb 3-1: DVB: registering adapter 0 frontend 3 (TurboSight TBS5520SE DVB-T/T2/C/C2/ISDB-T)...



Con esto ya la sintonizadora funcionará. Ahora podremos utilizar nuestro programa favorito para sintonizar, por ejemplo Kaffeine.

Nota: Lamentablemente, si se actualiza automáticamente o manualmente el núcleo de nuestro sistema operativo, tendremos que volver a recompilar y reinstalar este módulo controlador para que la caja TBS-5520 SE continúe funcionando. Esto podría suceder cada dos o tres meses si tenemos las Actualizaciones Automáticas de Ubuntu activadas. Sin embargo, es fácil de hacer, simplemente debemos abrir una terminal con Ctrl+Alt+T e ingresar los siguientes comandos de organización:

cd ~/.tbsdriver/media ; 
git remote update ;
git pull ;
cd ~/.tbsdriver/media_build ;
git remote update ;
git pull ; make ;
sudo make install ;
sudo reboot ;

Tengamos a mano estos comandos para poder ejecutarlos cuando los necesitemos...

Usar Kaffeine para sintonizar con la caja TBS5520SE en Ubuntu

Pues bien, con Kaffeine podremos sintonizar la TV digital Satelital o Terrestre sin muchos problemas.

Para abrir Kaffeine vamos a Aplicaciones / Sonido y Video / Kaffeine.

Luego vamos al menú Televisión / Configurar Televisión y bajamos la listas de transpondedores satelitales haciendo clic en el botón "Actualización de Datos de exploración mediante internet"

A continuación podremos asignar satélite al sintonizador. Para ello escogemos la solapa Dispositivo1 (que sería el sintonizador satelital), y luego mediante el campo Origen seleccionamos el satélite que querramos (por ejemplo el AMC6 72W / ArSat1, Arsat2, HispaSat 30W, etc.
Luego seleccionamos el Television / Canales y en el cuadro que aparezca presionamos el botón Iniciar Exploración.
Kaffeine comenzará a explorar en busca de los Mux satelitales correspondientes.
Tras detectar los servicios satelitales, debemos seleccionar los que querramos (idealmente todos ellos) y presionar el botón Añadir Seleccionado, y luego presionar Aceptar. Ahora podremos escoger la función "Ver TV" de Kaffeine para ver los canales que anhelamos.

Para sintonizar los canales de la TV digital Terrestre, escogemos en sintonizador Dispositivo 2 (el sintonizador que representa la TV digital).
Al seleccionar los Canales, los escaneamos de la misma manera que a los satelitales, presionando el botón Iniciar la Exploración , y los agregamos a la lista.

Kaffeine nos permitirá contar con una EPG o guía de programación electrónica, con detalle de los programas y horarios dentro del Mux.




Usar DVBlast y tvheadend para hacer streaming con la caja TBS5520SE en Ubuntu
Para escoger el sintonizador desde la terminal, debemos usar el programa dvblast. Nos aseguramos de conectar los cables de señal a la caja y conectamos la caja a un puerto USB del sistema mediante su cable USB2.

Abrimos una terminal e ingresamos:

Para trabar la señal S, necesitamos hacer lo siguiente:


cd /dev/dvb/adapter0
sudo ln -s demux0 demux1
sudo ln -s dvr0 dvr1
sudo ln -s net0 net1

  • para buscar canales en la norma de TV satelital DVB-S:
sudo dvblast -f 10988000 -s 41250000 -v 13 -a 0 -n 1
  • Para buscar canales de TV en la norma satelital DVB-S2.
sudo dvblast -f 12660000 -s 45000000 -v 13 -m psk_8 -a 0 -n 1
  • Para buscar canales de TV digital terrestre en la norma ISDB-T.
 sudo dvblast -f 474000000 -b 6 -a 0 -5 ISDBT
  • Para buscar canales de TV digital terrestre en la norma europea DVB-T:
sudo dvblast -f 474000000 -b 8 -a 0
  • Para buscar canales de TV digital terrestre en la norma europea DVB-T2:
sudo dvblast -f 474000000 -b 8 -a 0 -5 dvbt2
  • Para buscar canales de TV por cable digital en la norma DVB-C:
sudo dvblast -f 474000000 -s 6900000 -a 0 -5 dvbc_annex_a

Ahora ejecutaremos el programa tvheadend en la terminal, a fin de poder configurar los distintos Muxes con:

tvheadend -C

Esto iniciará un servidor controlado a través de la web. Normalmente deberíamos saber nuestra dirección IP, pero si no la sabemos

Para controlarlo podremos iniciar un navegador, y en la barra de URL podremos agregar la IP de nuestra PC, y apuntar al puerto 9981. Por ejemplo:

localhost:9981 

...o en este ejemplo:

192.168.8.61:9981

(Si no sabemos nuestra dirección IP local podremos usar el comando ifconfig y ver el número indicado en el apartado inet).

Una vez hecho esto, nos aparecerá la Interfaz Web de Usuario TVheadend, que nos sirve para configurar los sintonizadores de la Caja a fin de lograr sintonizar los distintos servicios satelitales o terrestres. A su vez, nos servirá para retransmitir la TV digital a través de la red, lo cual nos permitirá verla localmente o a través de una red LAN.

La pantalla se nos presentará de la siguiente forma:


Para crear una streaming en red con la señal satelital DVB-S y terrestre ISDB-T, hacemos click en Networks, y presionamos el botón Add ("agregar"), para finalmente establecer los parámetros de ese tipo de red.




Por ejemplo, debemos establecer un nombre de red, y una posición orbital de acuerdo al satélite. Luego presionamos Create (crear). En el ejemplo se agrega un EuroSat, pero bien podremos emplear el satelite ArSat2, el Amazonas, etc.



Luego debemos especificar el o los transpondedores del satélite. Para ello hacemos clic en Muxes ("transpondedores") y programamos los datos técnicos del transpondedor del satélite. Estos normalmente se encuentran en webs de la FTA o del mismo satélite. Cuando terminamos de introducir los datos del transpondedor, presionamos el botón Save ("guardar").



Para configurar una señal ISBD-T debemos presionar el botón TV Adapters y buscar el adaptador "TurboSight TBS 5520 SE DVB-T/T2/C/C2/ISDB-T #1". y lo activamos tildando la opción Enabled. En el apartado de Satellite Config elegimos "Advanced, (non-universal LNB, Rotors)".

Luego desplegamos sus sintonizadores que contiene y buscamos el llamado "TurboSight TBS 5520 SE DVB-T/T2/C/C2/ISDB-T ISDB-T #0" y tildar la función Enabled ("activado") y Over the Air EPG ("guia electrónica de programas"). Finalmente presionamos el botón Save ("guardar").







En las opciones avanzadas indicamos posición orbital 1 y la guardamos con Save.



Ahora seleccionamos la Position #1, e indicamos los datos provistos por el canal satelital (normalmente están provistos en la web de los mismos) y los grabamos presionando Save.



Una vez configurado ambos sintonizadores, debemos presionar en Networks, y luego presionar el botón Force Scan para buscar los canales. La sintonizadora buscará los canales usando los datos provistos para el satélite y la TDA, y en la medida que encuentre servicios nos los irá mostrando.
Si hacemos clic en Services ("Servicios de TV"), podremos comenzar a hacer streaming con el botón Map Services ("Mapear Servicios"). Tildamos los canales que queremos retransmitir a la red. Podremos sintonizar un Mux a través de los sintonizadores satelitales (ya sea DVB-S o DVB-S2), y un Mux a través del sintonizador digital (en nuestro caso ISDB-T, ya que en el país no se recibe la norma europea DVB-T ni DVB-T2).


Finalmente podremos acceder a los servicios tanto localmente como en nuestra red. A diferencia de lo anterior, el resto es muy simple.

Para ello podremos servirnos del excelente cliente que es el reproductor VLC. Lo ejecutamos desde Aplicaciones / Sonido y Video / VLC.

Para abrir la reproducción, podremos presionar Ctrl+O (Abrir localización de Red"). Podremos completar con la dirección IP de la computadora que sirva el sistema. Y si el sistema es el nuestro propio, bien podríamos usar localhost:9981/playlist.

 Mediante Ctrl+L podremos activar la Lista de Reproducción con todos los servicios (canales) del sintonizador que hayamos asignado.




Si queremos, podríamos grabar el contenido presionando el botón rojo de "Grabar". Normalmente el fichero se irá almacenando en nuestra carpeta /Descargas, y lo hará hasta que volvamos a presionar el botón Grabar para detener la grabación, o bien directamente cerremos el reproductor VLC. El arfchivo recibirá la  extensión TS (Transport Stream), pero podemos convertirlo a MP4 simplemente renombrándolo y cambiándole extensión a mp4, ya que VLC podrá reproducirlo sin problemas.


Configurar Televisión digital Terrestre (TDA) con la caja TBS-5520 SE en Ubuntu

Si el lugar de hacer uso de la funcionalidad de streaming en red y queremos ver la TV digital terrestre de manera local, podemos proceder como en cualquier otro dispositivo sintonizador de TDA en Ubuntu.

Simplemente descargamos las aplicaciones para TV digital con:

sudo apt update
sudo apt install dvb-apps


Una vez hecho esto, creamos una lista con las frecuencias de los canales de la TDA. Para ello ingresamos:


nano ~/.frec_canales_tda.conf

Se abrirá el editor de texto GNU Nano con un archivo vacío. Simplemente le pegamos el siguiente contenido:

# Canales UHF del 14 to 69 en el sistema argentino de televisión digital terrestre SATVD-T, TDA
T 473142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 14
T 479142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 15
T 485142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 16
T 491142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 17
T 497142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 18
T 503142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 19
T 509142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 20
T 515142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 21
T 521142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 22
T 527142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 23
T 533142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 24
T 539142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 25
T 545142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 26
T 551142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 27
T 557142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 28
T 563142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 29
T 569142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 30
T 575142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 31
T 581142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 32
T 587142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 33
T 593142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 34
T 599142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 35
T 605142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 36
# canal 37 no se usa
T 617142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 38
T 623142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 39
T 629142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 40
T 635142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 41
T 641142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 42
T 647142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 43
T 653142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 44
T 659142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 45
T 665142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 46
T 671142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 47
T 677142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 48
T 683142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 49
T 689142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 50
T 695142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 51
T 701142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 52
T 707142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 53
T 713142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 54
T 719142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 55
T 725142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 56
T 731142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 57
T 737142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 58
T 743142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 59
T 749142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 60
T 755142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 61
T 761142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 62
T 767142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 63
T 773142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 64
T 779142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 65
T 785142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 66
T 791142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 67
T 797142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 68
T 803142857 6MHz 3/4 AUTO AUTO AUTO AUTO NONE # canal 69


...y guardamos con Ctrl+o y salimos del editor con Ctrl+q.

Si no lo hicimos ya, conectamos una antena UHF externa a la entrada RF In de la caja, y escaneamos los canales de la TDA con:

scan .frec_canales_tda > .canalestdaencontrados.conf

La caja escaneará el espacio radioeléctrico y almacenará los canales encontrados en el archivo correspondiente.

De ahora en adelante, para ver la TV digital terrestre con los canales encontrados podremos usar el VLC con:

vlc .canalestdaencontrados.conf

O bien podremos crear un lanzador para dicho comando, a fin de tener un ícono a mano y no tener que tipear esto, que naturalmente nos da cansancio.

También podremos utilizar MeTV u otros programas. El sintonizador de TV digital terrestre normalmente recibe el dispositivo /dev/dvb/adapter0/

El soporte de la tarjeta TBS lo podremos lograr (en inglés) a través de correo electrónico en support@tbsdtv.com

viernes, 25 de mayo de 2018

¿Cómo agrego el estilo de color solarizado a Ubuntu?

El 25 de mayo de 1947 Juan Perón pronuncia un discurso a la salida del Tedéum tradicional y explica cómo instalar la paleta de colores "Solarizado" en Ubuntu.


¡Trabajadores!


Bajo este sol de mayo, nos encontramos unidos en pos del recuerdo de aquellos que nos dieron nuestra libertad política en 1810. Poco después declararíamos a la faz de la tierra dejar de ser Colonia de la metrópoli española, para pasar a ser una nación netamente Justicialista.



Nuestro anhelo es ser amistoso con todos los países del globo, incluso con nuestra Madre Patria, y mantener nuestras tres banaderas: la Justicia Social, la Independencia Económica y la Soberanía política.
Nuestro software debe contar también con su libertad, representadas en base a la libertad de ejecutar, copiar, modificar y distribuirlo libremente, en beneficio de los hijos de la Patria.

Masa: ¡Perón! ¡Perón! ¡Perón!
En vista de estas Consagraciones Históricas, vengo también a traerles una clásica y atractiva Paleta de Colores, un conjunto de tonos que podremos utilizar en nuestra terminal y en muchos de los programas orientados a texto con los que podemos contar en Ubuntu.

Esto es así pues nuestro sistema es programable en lo que a coloración respecta, y naturalmente contaremos con algunas paletas de color de fábrica. Yo ya he explicado incluso cómo personalizar una paleta de colores similares a M$-DO$, pero en esta ocasión me referiré a la paleta "Solarizado".

Se trata de un conjunto de coloridos tonos en base a naranjas y ocres cálidos cruzados con rosas y azules fríos.
Estos pueden ser empleados para editar texto y verlos resaltados en su sintaxis, por ejemplo en la Terminal o en una miríada de editores de texto justicialistas.

Su instalación es sencilla si empleamos la terminal. Para ello podremos abrir una con Ctrl+Alt+T e ingresar los siguientes Comandos de Organización que correspondan a nuestro anhelo:

Si deseamos obtener solarizado en una paleta oscura debemos ingresar el siguiente bloque de comandos:

cd ~ ;
wget --no-check-certificate https://raw.github.com/seebi/dircolors-solarized/master/dircolors.ansi-dark ;
mv dircolors.ansi-dark .dircolors ;
eval `dircolors ~/.dircolors`;


...y para obtener la paleta claro del tono podemos usar:

cd ~ ; 
wget --no-check-certificate https://raw.github.com/seebi/dircolors-solarized/master/dircolors.ansi-light ;
mv dircolors.ansi-light .dircolors ;
eval `dircolors ~/.dircolors`;

Conforme hayamos descargado e instalado las paletas, para aplicar su uso debemos hacerlo en el programa correspondiente.

Por ejemplo, para usar dicho esquema cromático en nuestra terminal, simplemente debemos ir al Menú Editar / Preferencias de Perfil que estemos usando, y en la solapa Colores, podremos elegir la Paleta "Solarizado" desplegando dicha opción en el cuadro de diálogo, como se indica a continuación.
Al presionar el botón Aceptar, nuestra paleta terminará usando los colores Solarizados.
Si en cambio deseamos incorporarlo, por ejemplo, en el editor de texto Pluma o Gedit, podremos hacerlo desde el cuadro de Editar / Preferencias, y la solapa Tipografía y Colores.

 Tanto Pluma como Gedit y otros editores derivados, emplearán este esquema como un eficiente marcador de sintaxis para muchos lenguajes de programación disponibles (bash, python, batch de msdos, etc etc).

Si queremos esquemas para diferentes aplicaciones, podremos consultar la web del proyecto de la paleta Solarizado.

lunes, 21 de mayo de 2018

Conferencias de Richard Stallman en Argentina


Richard Stallman, el fundador y presidente de la Free Software
Foundation, realizará una conferencia charla en Posadas, Misiones, este 19 de mayo, y la realizará en Tucumán el 22, en Mendoza el 24, en Río Cuarto el 26, en Buenos Aires el 28, el 30, y el 31, y en Mar del Plata el 2 de junio.

Asimismo, se in­vi­ta a la co­mu­ni­dad uni­ver­si­ta­ria a la so­lem­ne ce­re­mo­nia aca­dé­mi­ca en donde se dis­tin­gui­rá con el tí­tu­lo de Doc­tor Ho­no­ris Causa de la Universidad Nacional de Tucumán al fa­mo­so pro­gra­ma­dor es­ta­dou­ni­den­se y fun­da­dor del mo­vi­mien­to por el soft­wa­re libre en el mundo, Ri­chard Matt­hew Sta­ll­man. La misma se lle­va­rá a cabo el día lunes 21 de Mayo, a las 11:00 hs, en el Centro Cul­tu­ral Eu­ge­nio Fla­vio Virla.


Asi­mis­mo, el día mar­tes 22 de Mayo, a las 18:00 hs, en el An­fi­tea­tro A1 de la FACET, se lle­va­rá a cabo una Con­fe­ren­cia Ma­gis­tral sobre “Soft­wa­re Libre para una so­cie­dad libre”, a cargo de Sta­ll­man.

La misma es­ta­rá des­ti­na­da a todo pú­bli­co y será gra­tui­ta para todos aque­llos intere­sa­dos en pro­fun­di­zar sobre la te­má­ti­ca del soft­wa­re libre y la so­be­ra­nía tec­no­ló­gi­ca.

jueves, 17 de mayo de 2018

¿Cómo juego al Prince of Persia nativamente en Ubuntu?

En un famoso discurso pronunciado en agosto de 1944 el Coronel Juan Perón exponía ante los empresarios de la Cámara de Comercio la necesidad de ceder beneficios a las Masas obreras, entre ellos cómo instalar SDLPoP, la iteración nativa para Ubuntu del clásico juego Prince of Persia, a fin de evitar el Comunismo en ciernes.


Señores:

En primer término, agradezco la oportunidad que me brinda la Cámara de Comercio para exponer algunos asuntos que conciernen en forma directa a la Secretaría de Trabajo y Previsión.

La Secretaría de Trabajo y Previsión entiende que la política social de un país comprende integralmente todo lo humano con relación a los diversos factores del bienestar general. Siendo así, muchos, posiblemente equivocados sobre todo cuanto yo he dicho en el orden social, se han permitido calificarme de distintas maneras. Yo he interpretado cada una de estas calificaciones; las he sopesado y he llegado a esta conclusión: de un lado, me han dicho que soy nazi, de otro lado han sostenido que soy comunista; todo lo que me da la verdadera certidumbre de que estoy colocado en el perfecto equilibrio que busco en la acción que desarrollo en la Secretaría de Trabajo y Previsión.

Pienso que el problema social se resuelve de una sola manera: obrando conscientemente para buscar una perfecta regulación entre las clases trabajadoras, medias y capitalistas, procurando una armonización perfecta de fuerzas, donde la riqueza no se vea perjudicada, propendiendo por todos los medios a crear un bienestar social, sin el cual la fortuna es un verdadero fenómeno de espejismo que puede romperse de un momento a otro. Una riqueza sin estabilidad social puede ser poderosa, pero será siempre frágil, y ése es el peligro que viéndolo, trata de evitar por todos los medios la Secretaría de Trabajo y Previsión.

Hasta ahora estos problemas han sido encarados por una verdadera lucha. Yo no creo que la solución de los problemas sociales esté en seguir la lucha entre el capital y el trabajo. Ya hace más de sesenta años, cuando las teorías del sindicalismo socialista comenzaron a producir sus frutos en esa lucha, opiniones extraordinariamente autorizadas, como la de Massini y la de León XIII proclamaron nuevas doctrinas, con las cuales debía desaparecer esa lucha inútil, que como toda lucha no produce sino destrucción de valores.

Sería largo y quizás inútil por conocidas, que comentásemos aquí esas doctrinas, como las del cristianismo liberal o como las del cristianismo democrático que encierra doctrinas más o menos parecidas; pero viendo el panorama inútil, sería suficiente pensar que si seguimos en esta lucha en que la humanidad ha visto empeñadas sus fuerzas productoras, hemos de llegar a una crisis que fatalmente se ha de producir, como ya se ha producido en otros países, con mayor o menor violencia (…).

El Estado, en gran parte, se había desentendido del problema social, en lo que él tiene de trascendente, para solucionar superficialmente los conflictos y problemas parciales. Es así que el panorama de la política social seguida representa una serie de enmiendas colocadas alrededor de alguna ley, que por no haber resultado orgánicamente la columna vertebral de esa política social, se ha resuelto parcialmente el problema, dejando el resto totalmente sin solución.

Las masas obreras que no han sido organizadas presentan un panorama peligroso, porque la masa más peligrosa, sin duda, es la inorgánica.

La experiencia moderna demuestra que las masas obreras mejor organizadas son, sin duda, las que pueden ser dirigidas y mejor conducidas en todos los órdenes. La falta de una política social bien determinada ha llevado a formar en nuestro país esa masa amorfa. Los dirigentes son, sin duda, un factor fundamental que aquí ha sido también totalmente descuidado. El pueblo por sí, no cuenta con dirigentes. Y yo llamo a la reflexión de los señores para que piensen en manos de quiénes estaban las masas obreras argentinas, y cuál podía ser el porvenir de esa masa, que en un crecido porcentaje se encontraba en manos de comunistas, que no tenían ni siquiera la condición de ser argentinos, sino importados, sostenidos y pagados desde el exterior.

Esas masas inorgánicas, abandonadas, sin una cultura general, sin una cultura política, eran un medio de cultivo para esos agitadores profesionales extranjeros. Para hacer desaparecer de la masa ese grave peligro, no existen más que tres caminos, o tres soluciones: primero, engañar a las masas con promesas o con la esperanza de leyes que vendrán, pero que nunca llegan; segundo, someterlas por la fuerza; pero estas dos soluciones, señores, llevan a posponer los problemas, jamás a resolverlos.

Hay una sola forma de resolver el problema de la agitación de las masas, y ella es la verdadera justicia social en la medida de todo aquello que sea posible a la riqueza de su país y a su propia economía, ya que el bienestar de las clases dirigentes y de las clases obreras está siempre en razón directa de la economía nacional. Ir más allá, es marchar hacia un cataclismo económico; quedarse muy acá, es marchar hacia un cataclismo social; y hoy, esos dos extremos, por dar mucho o por no dar nada, como todos los extremos, se juntan y es para el país, en cualquiera de los dos casos, la ruina absoluta (…).

La posguerra traerá, indefectiblemente, una agitación de las masas, por causas naturales; una lógica paralización, desocupación, etcétera, que combinadas producen empobrecimiento paulatino. Ésas serán las causas naturales de una agitación de las masas, pero aparte de estas causas naturales, existirán también numerosas causas artificiales, como ser: la penetración ideológica, que nosotros hemos tratado en gran parte de atenuar; dinero abundante para agitar, que sabemos circula ya desde hace tiempo en el país, y sobre cuyas pistas estamos perfectamente bien orientados; un resurgimiento del comunismo adormecido, que pulula como todas las enfermedades endémicas dentro de las masas; y que volverá, indudablemente, a resurgir con la posguerra, cuando los factores naturales se hagan presentes.

En la Secretaría de Trabajo y Previsión ya funciona el Consejo Nacional de Posguerra, que está preparando un plan para evitar, suprimir, o atenuar los efectos, factores naturales de la agitación; y que actúa también como medida de gobierno para suprimir y atenuar los factores artificiales; pero todo ello no sería suficientemente eficaz, si nosotros no fuéramos directamente hacia la supresión de las causas que producen la agitación como efecto.
Una de ellas es la avaricia de los actores patronales en proporcionar juegos nativos para GNU con Linux en Ubuntu. Ustedes saben como yo que si no liberan juegos para la Masa popular, esta se volcará masivamente al Comunismo.

En los países avanzados esto lo han comprendido, y por ello han cooperado activamente a pesar de la situación bélica para atemperar las Masas Obreras. Gracias a ellos contamos hoy con algunos juegos totalmente amortizados pero que bien pueden emplearse para evitar esta perniciosa posibilidad al asecho. 

SDLPoP es una iteración del clásico juego de plataforma fantástica Prince of Persia, de Jordan Mechner, para Brøderbund Software. A diferencia del original escrito para la Apple II, Amiga y fundamentalmente MS-DOS en 1990, esta versión puede ejecutarse en un sistema GNU con Linux como los que usan los obreros, y entretenerlos a lo largo de los 12 niveles originales.
Para instalarlo podremos utilizar la terminal. Para ello abrimos una Consola con Ctrl+Alt+T y en ella ingresamos los siguientes Comandos de Organización:

sudo apt install libsdl2-image-2.0-0

 
Una vez instalada esta dependencia, descargamos el SDLPoP:

cd ~
wget https://www.popot.org/get_the_games/software/SDLPoP/SDLPoP-1.22.zip
unzip SDLPoP-1.22.zip
mv ~/SDLPoP-1.22/ ~/.SDLPoP

Ahora podremos crear un Lanzador, lo que facilitará a los obreros la ejecución del Juego. Para ello hacemos clic con botón derecho sobre Aplicaciones, en el panel superior. Se abrirá un menú contextual y elegimos "Editar Menús". Se abrirá la ventana "Menú Principal". En su sector izquierdo seleccionamos la categoría Juegos, y luego presionamos el botón "+Elemento Nuevo". Esto abrirá la ventana Crear Lanzador:
En la casilla Nombre: podremos poner SDLPoP o, como en mi caso, Prince of Persia. En la casilla Comando: debemos ingresar "/home/usuario/.SDLPoP/prince", sin las comillas y reemplazando usuario por nuestro nombre de usuario. Opcionalmente en la casilla Comentario: podremos especificar una descripción si lo deseamos. Finalmente presionamos Aceptar para concluir con la creación del lanzador.

Ahora ya los obreros podrán ejecutar el juego desde el menú Aplicaciones / Juegos / Prince of Persia.

Al iniciar el juego, nos presentará adiciones sobre el juego original.
 En particular, podremos ahora grabar el juego presionando F6 o cargar presionando F9. Para guardar replays podremos usar Ctrl+Tab. Para ver los replay podremos presionar Tab en la pantalla de tigulos. Debemos presionar una tecla para iniciar el juego.

Entonces tendremos a bien ver la clásica presentación del juego, que nos describe la historia.
Esta es convenientemente simple. El buen Sultán de Persia da batalla en tierras extrañas, oportunidad aprovechada en palacio por su ladino Gran Visir Jaffar. El maléfico hechicero decide amenazar a la hermosa princesa, otorgándole una hora para desposarlo y perpetuar así su poder en el reino.
Nuestro papel en la aventura no es otro que el de comandar con el teclado al protagónico y valiente Príncipe de Persia. Como tal debemos impedir esta deleznable conspiración: escapar de las mazmorras del palacio gracias a nuestras habilidades en el parkour y el combate, y al uso de las pócimas de magia blanca que se encuentran repartidas en los niveles. Finalmente, tras derrotar a los guardias y criaturas de las mazmorras, hemos de derrotar a Jaffar y salvar a la damisela de su predicamento y recibir así un merecido abrazo de amigo. Y todo en menos de una hora.
Este difícil juego guarda hoy el mismo desafío que tuvo cuando se lo desarrolló, pero lo encontramos en una versión nativa para Ubuntu y otros sistemas GNU con Linux. Naturalmente, se nos presenta de manera similar a la clásica: es por ello que sus gráficos responden al viejo estándar VGA de 256 colores, con una resolución de 320x200 pixeles.

La animación es rápida y notablemente fluida, gracias a la técnica en la que se especializó Mechner al componer los sprites (utilizó una especie de rotoscopía en base a una cinta de video con los movimientos, en la cual colaboró su hermano y su novia).

El sonido representa una emulación por software del chip sintetizador de audio Yamaha YMF262 presente en las clásicas AdLib y SoundBlaster de la época, aunque también se puede recurrir al estridente PC Speaker.
Los controles son sencillos, se usa las flechas del teclado y la tecla Mayúsculas para desenvainar la cimitarra, efectuando estocadas de ataque o defensa.
Gracias a este juego, sin duda podrán distraer las reivindicaciones obreras, porque no quieren que ellos se les vengan encima y se queden con sus empresas y las cooperativicen... Yo como Coronel sé lo que les digo. [Guiña un ojo]

[Aplausos de los empresarios]

lunes, 14 de mayo de 2018

¿Cómo activo /etc/rc.local con systemd en Ubuntu 18.04LTS?



Un sistema operativo ha de responder al mismo principio rector que tiene la política y que tiene la vida. Ha de mejorarse, idealmente de una manera concienzuda y escalonada, en pos de lograr la perfección en su funcionamiento y mejorar su andar.

La mayoría de los cambios suelen referirse a los aspectos "visibles" del sistema, pues - como en la política - son los que definen la preferencia del Pueblo, y son los que acarrean los votos a nuestras urnas. Estos cambios espectaculares promueven un mejor y más sencillo uso del sistema.
Sin embargo, en ciertas ocasiones también han de estudiarse y aplicarse cambios que hacen a la esquematización fundamental del sistema. Estos cambios internos raramente son percibidos por la Masa popular, pero han de llevarse a cabo a fin de afianzar los cimientos del sistema y permitir mas sólidos estructuras de software sin recurrir a andamiajes de "quita y pon" en la ingeniería de nuestro Software Libre.

Uno de estos elementos es systemd. Se trata - entre otras cosas - de un fundamental aplicativo orientado a la inicialización del sistema y sus servicios, y reemplaza a la veterana estructura de arranque que tenía GNU como sistema operativo, herederas ellas del Unix V y de las distribuciones de la universidad de Berkley (BSD). Con el tiempo muchas distribuciones de GNU con Linux han adoptado a systemd como estructura básica de arranque, y esto ha llevado a que cada vez más software de usuario (esto es, aplicaciones de uso), requieran de systemd, ya sea de forma parcial o total para su funcionamiento...
Esto podría provocar problemas con ciertas estrategias de inicio o ciertos programas que requieren de los esquemas anteriores. Uno de los más prominentes era el archivo de ejecución de inicio rc.local, al cual podríamos añorar como a una antigua novia tiratiros.
Vean señores, rc.local es un archivo de texto en el cual podíamos introducir comandos, los cuales se autoejecutarían con privilegio de administración al arrancar el sistema y antes de entregar control al usuario, omitiendo de esta forma tener que ejecutarlos posteriormente con privilegios de usuario reducidos. Por ejemplo, podíamos cargar módulos de hardware antiguo que no se detectaba automáticamente, por ejemplo placas sintonizadoras analógicas de radio FM o TV, y evitarle al usuario tener que escalar sus priviegios al de Conductor (o root) para hacerlo, con la incomodidad que ello significa y sobre todo, con el riesgo añadido a la seguridad intrínseca de nuestro sistema computado.

Pues bien, si ejecutamos una distribución de GNU con Linux que emplea el nuevo esquema Systemd para demonios de sistema (usualmente las más modernas), podríamos encontrarnos que el archivo clásico /etc/rc.local no se ejecuta ya durante el arranque de sistema.

Si tipeamos el siguiente comando en la terminal

sudo systemctl status rc-local

...el sistema podría devolvernos lo siguiente:


rc-local.service - /etc/rc.local Compatibility
   Loaded: loaded (/etc/systemd/system/rc-local.service; enabled; vendor preset: enabl
  Drop-In: /lib/systemd/system/rc-local.service.d
           └─debian.conf
   Active: failed (Result: exit-code) since Fri 2018-05-11 09:55:51 -03; 10h ago

 Process: 1001 ExecStart=/etc/rc.local start (code=exited, status=1/FAILURE)
may 11 09:55:51 cgt systemd[1]: Starting /etc/rc.local Compatibility...
may 11 09:55:51 cgt systemd[1]: rc-local.service: Control process exited, code=exited
may 11 09:55:51 cgt systemd[1]: rc-local.service: Failed with result 'exit-code'.
may 11 09:55:51 cgt systemd[1]: Failed to start /etc/rc.local Compatibility.
may 11 20:23:06 cgt systemd[1]: /etc/systemd/system/rc-local.service:11: Support for o
may 11 20:23:37 cgt systemd[1]: /etc/systemd/system/rc-local.service:11: Support for o
may 11 20:24:21 cgt systemd[1]: /etc/systemd/system/rc-local.service:11: Support for o


...lo cual nos indica que rc.local no está activo, y si intentamos activar /etc/rc.local para que se ejecute al inicio del sistema con el comando:

sudo systemctl enable rc-local

...podríamos obtener:

The unit files have no [Install] section. They are not meant to be enabled
 using systemctl.
 Possible reasons for having this kind of units are:
 1) A unit may be statically enabled by being symlinked from another unit's
 .wants/ or .requires/ directory.
 2) A unit's purpose may be to act as a helper for some other unit which has
 a requirement dependency on it.
 3) A unit may be started when needed via activation (socket, path, timer,
 D-Bus, udev, scripted systemctl call, ...).

Como vemos arriba, el archivo pertinente rc-local.service no tiene una sección [Install]. Como tal, Systemd no podrá activarla.

En vista de este problema, os explicaré de forma Justicialista cómo activar la ejecución de scripts desde /etc/rc.local al arranque del sistema.

Primero necesitamos crear un archivo. Lo haremos con el siguiente Comando de Organización:

sudo nano /etc/systemd/system/rc-local.service

Tras ingresar nuestra contraseña de Conductor, se utilizará el editor GNI Nano para crear dicho archivo, en blanco. Debemos pegarle el siguiente texto:

[Unit]
 Description=/etc/rc.local Compatibility
 ConditionPathExists=/etc/rc.local

[Service]
 Type=forking
 ExecStart=/etc/rc.local start
 TimeoutSec=0
 StandardOutput=tty
 RemainAfterExit=yes
 SysVStartPriority=99

[Install]
 WantedBy=multi-user.target


Lo grabamos con Ctrl+o y salimos del editor con Ctrl+x.

Cuando regresemos a al prompt, debemos aseguramos de tener un archivo /etc/rc.local y que el mismo sea ejecutable. Para ello ingresamos:

sudo nano /etc/rc.local

Y le podríamos pegar el siguiente contenido básico:

#!/bin/sh -e
##
## Archivo /etc/rc.local
## Este script se ejecuta al final del runlevel multiusuario.
## Asegúrese que este script finalice con la línea "exit 0" si tiene éxito
## o en cualquier otro valor si tiene un error.
# Ingrese bajo esta línea lo que quiera ejecutar antes de dar inicio a los usuarios.

#----- fin del archivo ------
exit 0



Naturalmente podríamos agregar antes de en las líneas previas a exit 0 cualquier comando que necesitemos. Guardamos con Ctrl+o y salimos del editor con Ctrl+x. Ahora en la terminal haremos ejecutable al archivo rc.local con este comando:

sudo chmod +x /etc/rc.local

Conforme /etc/rc.local tenga la capacidad de ejecutarse, debemos activar el servicio que lo dispare al momento del arranque del sistema. Ahora esto se hace con:

sudo systemctl enable rc-local

Esto no nos devolverá nada en Ubuntu, aunque en otras distribuciones podría devolver:

Created symlink from /etc/systemd/system/multi-user.target.wants/rc-local.service to /etc/systemd/system/rc-local.service.

Ahora iniciamos el servicio con:

sudo systemctl start rc-local.service

...y revisamos su status con:

sudo systemctl status rc-local.service

Debería devolvernos algo como:


 ● rc-local.service - /etc/rc.local Compatibility
   Loaded: loaded (/etc/systemd/system/rc-local.service; enabled; vendor preset: enabl
  Drop-In: /lib/systemd/system/rc-local.service.d
           └─debian.conf
   Active: active (exited) since Fri 2018-05-11 20:25:16 -03; 10s ago
  Process: 14573 ExecStart=/etc/rc.local start (code=exited, status=0/SUCCESS)

may 11 20:25:16 cgt systemd[1]: Starting /etc/rc.local Compatibility...
may 11 20:25:16 cgt sudo[14576]:     root : TTY=unknown ; PWD=/dev/input ; USER=root ;
may 11 20:25:16 cgt sudo[14576]: pam_unix(sudo:session): session opened for user root
may 11 20:25:16 cgt sudo[14576]: pam_unix(sudo:session): session closed for user root
may 11 20:25:16 cgt systemd[1]: Started /etc/rc.local Compatibility.



Denotando ahora la ejecución y activación del viejo y veterano esquema rc.local, para felicidad del Pueblo y de los programas o esquemas que lo pudieran necesitar.