viernes, 16 de junio de 2017

¿Cómo puedo simular un teclado IBM Model M en Ubuntu?

Vean señores,

A pesar de aquella mentira con forma de espejitos de colores que significan las interfaces táctiles, es sabido que un verdadero escritor o programador ha de aporrear teclas. Quien escriba realmente, puede decirlo: sólo un aparato de acción mecánica puede hacer que lo que escribamos tenga sentido.

No es secreto para nadie que la aplicación asesina por antonomasia de la PC es la escritura, pues indudablemente fueron los softwares de procesamiento de textos los encargados de resolver con vehemencia las inconveniencias que acarreaban las viejas máquinas de escribir desde mediados del Siglo XIX.

Pero sólo hemos de darle un peine a un pelado, para que éste quiera hacer de él una cocarda, y con los procesadores de texto sucedió lo mismo. El tiempo y las mejoras tal vez innecesarias para el común del Pueblo, vinieron a sumarles complejidad, al punto de tornarlos paradójicamente en herramientas contrarios al Arte de escribir. No han sido pocos los que han preferidos softwares de escritura simplificados, y en tal beneficio ya he explicado porqué y cómo simular una máquina de escribir en Ubuntu con sonido y todo.
Ahora bien, en mi PC de escritorio para tales tareas utilizo un teclado IBM Model M de 102 teclas de distribución española, con la descontinuada interfaz AT. Es sencillo por medio de un adaptador AT a PS/2 que luego va conectado a un adaptador PS/2 a USB. Al fin y al cabo, el Justicialismo siempre se ha adaptado a nuevos tiempos. Gracias a estos recaudos de bajo costo, se puede revivir el clásico teclado IBM en cualquier equipo moderno dotado de puertos USB.


¿Porqué emplear este viejo teclado hoy en día? Lo que hacía característico a este periférico de patentado por Harris y Coleman para IBM (documento hoy expirado), era su legendaria dureza de tipeo, así como el sonido especial que hacían sus teclas. Esto se explica ya que sus domos plásticos a dos tonos, cubren un mecanismo con resorte de acero templado, unido a una placa metálica de acción pivoteante, que ofrece una resistencia variable a la presión dactilográfica. Conforme ésta es vencida, otorga una excelente respuesta de disparo electromecánico acompañada por una acción metálica sonora, amortiguada plásticamente. Luego la tecla resulta devuelta a su posición de descanso por el resorte.

Tal vez esta acción pudiera ser considerada hoy demasiado marcada o aguzada, pero quienes hemos utilizado un Model M no olvidaremos jamás su potencia como herramienta validísima para la acción de tipeo, superior a aquellos teclados que hoy en día se dan a llamar "gamer". El Model M es un equipo verdaderamente profesional pensado para escritores y con fama de durar, y vaya si lo ha hecho este ejemplar.



Por otro lado es totalmente desarmable, y tanto sus teclas como la carcasa pueden limpiarse. Tras una lógica tareas de mantenimiento y limpieza con alcohol isopropílico y agua destilada al 15%, sus inscripciones siguen como nuevas, incluso las de las cimas de las teclas (en este ejemplar, hasta en sus lados poseen indicaciones).


Es cierto que en la actualidad, gracias a la gente de Unicomp, pueden encontrarse teclados de moderna factura y provistos de la misma mecánica que el Model M, en versiones "ultra clásicas", o en variantes modernas con 104 teclas (incluso distribuciones en español y latinoamericano), colores oscuros e interfaces PS/2, USB, incluso con teclas "Tux". Su precio es elevado, pero considerando la mayúscula calidad del pèriférico, se amortiza su costo a lo largo de una extendida vida útil. Sólo hemos de pensar como se tendió a reemplazar el costoso mecanismo de resorte por unidades más simples, de menor presión, a fin de hacer más blando el tecleo, y finalmente se usó el sistema chiclet, con base-teclas de goma o silicona, tan extendido como vilipendiado. Puedo decirlo sin temor a equivocarme, que el viejo Model M, es muy superiores a cualquiera de los ejemplares nuevos fabricados en la China de Mao...

Sin embargo, no todos pueden o quieren adquirir un teclado de tales características. Por ejemplo, puede ocurrir que tengamos una laptop, ya provista de un teclado silencioso, gomoso y poco peronista. En nuestro Movimiento tenemos un adagio que reza que donde existe una necesidad, existe un derecho, y donde no existe el hardware, existe el software para emularlo. Por tal motivo no dejaría de ser interesante simular por software (al menos en su sonido) al clásico Model M, de IBM.

Lo mejor suele venir en kilobytes. Si tenemos Ubuntu 16.04LTS o superior, podremos instalar esta simple aplicación desde la terminal. Para ello abrimos una con Ctrl+Alt+T e ingresamos los siguientes Comandos de Organización:

sudo snap install bucklespring

Para ejecutar el programa, podremos ir a Aplicaciones / Accesorios / Bucklespring.

Normalmente de esta manera sonará con el volumen máximo y en un amplio sonido estéreo que simula por los altavoces la posición relativa de cada tecla presionada o soltada. Dactilografiar con dicha acción, y sobre todo el sonido que sus resortes provocan, es un aliciente a los oídos, y causa la sensación cierta de estar logrando algo. Llevo en mis oídos, la más maravillosa música...

Querremos utilizar este volumen por defecto para simular en toda su gloria al viejo Model M, pero podremos configurar valores inferiores para que no resulte tan aguzado o molesto a terceros.

Por ejemplo, podríamos querer reducir el volumen al 80% del total modificando el lanzador. Para ello podremos editar el lanzador haciendo clic con botón derecho sobre el menú Aplicaciones, y en el menú contextual que se despliega escogemos Editar Menús). En la ventana Menú Principal desplegamos la solapa Aplicaciones / Accesorios, seleccionamos  el lanzador "Bucklespring" y presionamos el botón Propiedades.
En el campo "Comando:" encontraremos el siguiente ejecutable:

env BAMF_DESKTOP_FILE_HINT=/var/lib/snapd/desktop/applications/bucklespring_buckle.desktop /snap/bin/bucklespring.buckle

Para indicarle un volumen del 80% le agregamos al final la variable "-g 80", como se indica. Luego presionamos los botones Cerrar.

Para ejecutar la terminal, ingresamos:

bucklespring.buckle 

Nuevamente, si el volumen del audio resultase muy elevado, podremos indicar modificar el volumen de bucklespring.buckle con la variable -g para ganancia alterar el volúmen. En mi caso suelo usar una ganancia de 80% en el caso de una laptop.


bucklespring.buckle  -g 80


Para enmudecer temporalmente el sonido del teclado, podremos presionar dos veces la tecla ScrollLock (tecla Bloq. Despl, en algunas notebooks se la logra con Fn+F12). También podremos regular el volumen de los eventos de teclado dentro del panel de sonido (Sistema / Preferencias / Hardware / Sonido, y luego escogemos la solapa Aplicaciones) bajo el título de "buckle":


Las variables del programa buckle consisten en las siguientes:

uso; ./buckle [opciones]

optiones:

  -d DISP     usa el DISPOSITIVO de audio
  -f          usa un sonido genérico para teclas desconocidas
  -g VOLUMEN  volumen de reproducción [0..100]
  -m CODE     Usa el COD hexadecimal de la tecla para enmudecer (por 
              defecto usa el cod. 0x46, de la tecla BloqDespl)
  -h          Muestra la ayuda
  -l          lista los dispositivos de audio disponibles
  -p DIR      carga los archivos .wav desde el directorio DIR
  -s AMPLITUD configura la apertura estéreo [0..100]
  -v          verbosidad / debugging

jueves, 15 de junio de 2017

¿Cómo hago parecer Ubuntu Mate a MacO$ Sierra?

En diciembre de 1968, Juan Perón concede en su Quinta 17 de Octubre de Puerta de Hierro, una clásica entrevista a la revista Siete Días. Además de propiciar un excelente relato de su vida doméstica al periodista, Juan Perón le explica cómo hacer un theme similar a MacOS Sierra en Ubuntu Mate 16.04LTS y similares.


(...)
"La zona es aristocrática, no lo voy a negar. Pero mi casa no tiene nada que ver con todo esto: es más modesta que la que poseen muchos industriales argentinos de medio pelo en Florida, Martínez o La Lucila. Cualquiera puede comprobar con sus propios ojos que no me estoy haciendo el farolero.
Luego de la caminata matinal, me administro cinco o seis mates amargos para comenzar a trabajar con buena disposición. Comenzar a trabajar equivale a sentarme al escritorio. Cinco de los siete días de la semana debo aplazar mis obligaciones para recibir a los argentinos. Ayer, por ejemplo, vinieron a verme más de cien personas. Si la cosa sigue así tendré que recurrir a las audiencias públicas, como el Vaticano...

Está es mi base de operaciones: un escritorio chiquito y austero, cuyo único detalle fastuoso parecería ser esta pared de madera. Pero no se ilusione y observe. [Presiona con su mano la superficie y la pared se comba]. La hice construir con una laminita de aglomerado. Picardía criolla: poca plata y mucha pinta....

Digo esto pues alguno ha pretendido decir que este escritorio es de oligarca. Pero los que dicen eso no son más que brutos y malos. Cualquiera puede tener un escritorio decente por poca o ninguna plata.

Vea usted, en ocasiones las personalidades que me visitan - argentinas y de otras nacionalidades - me han preguntado cómo hice para tener un escritorio similar al MacO$ Sierra, aquél sistema operativo de la oligarquía, pero en Ubuntu Mate.

La respuesta es simple: todo Conductor que se precie ha de poder hacer todo con poco, y no hacer nada con mucho. Esa es, en esencia, la base de la Conducción que un Movimiento Popular como el nuestro ha de tener, a fin de evitar las lógicas excrecencias que podrían presentarse.

No existe necesidad de convertirnos nosotros también en oligarcas: basta de proveernos de un aglomerado que cubra la apariencia de uno de sus escritorios, a fin de hacer de nuestra base ideológica una que combata al Capital - y por lógica extensión - a todo el software que la Oligarquía emplea con desaprensivo desdén. La clave entonces es bien gaucha y ya se la he explicado: mantener un Mate como base alimenticia y sólo modificar lo necesario para guardar las apariencias. [Ríe].

Lo explicaré mejor. Hemos de saber que el escritorio Mate 1.12/1.16.2 que Ubuntu 16.04LTS porta, está escrito empleando las veteranas librerías GTK2 Sólo versiones más modernas que Mate 1.18 implementan las versiones modernas GTK3 tan en boga. Sin embargo esto no impide que logremos un resultado estable y convincente con GTK2.

Las librerías GTK3 ya están en uso a partir de Ubuntu 16.10, y se aplicarán en las versiones LTS de Ubuntu a partir de la 18.04LTS. Por demás, este método también podrá aplicarse a cualquier versión superior a Ubuntu Mate 16.10, con la excepción de que ya existen en tales casos temas completamente programados con tal motivo.

Pues bien, en Ubuntu Mate 16.04LTS Xenial Xerus sólo podremos utilizar como base temas de versión GTK2. Pero podremos armar este de forma sencilla y por nosotros mismos, tal como hice esta casa.

En primer lugar descargaremos un paquete de íconos inspirado en aquellos coloridos de OSX La Capitaine. Para ello abrimos una Terminal con Ctrl+Alt+T e ingresamos los siguientes comandos de Organización:

Descargo el paquete de iconos La Capitaine con:

cd ~/.icons
git clone https://github.com/keeferrourke/la-capitaine-icon-theme.git

Acto seguido, podremos armar un tema visual. En el caso de Ubuntu Mate, bien podremos escoger el tema "Blast Freshness" como base para facilitarnos todo.

Lo descargamos e instalamos con:

cd ~/.themes/
wget https://dl.opendesktop.org/api/files/download/id/1460967428/139882-Blast-Freshness.tar.gz
tar xvzf 139882-Blast-Freshness.tar.gz

Para ello vamos Sistema / Preferencias / Visualización y Comportamiento / Apariencia. y en la solapa Tema hacenis clic en el botón Personalizar.

Se abrirá la ventana Personalizar Tema. En la solapa Controles elijo "Blast Freshness". Normalmente este tiene un tema azulado grisáceo, pero de momento servirá.

Acto seguido vamos a la solapa Colores. Simplemente tendremos que cambiar el color verde de los Elementos seleccionado - fondo por uno celeste (por ejemplo el nombre de color #298EE0 o un celeste similar).

En la solapa Borde de ventana, nos aseguramos de escoger "Blue Menta". No tiene los botones de maximizar ni minimizar coloreados clásicos de MacO$, pero ¿quien querría hacerlos tan parecidos?.

En la solapa Íconos, elegimos el pack La Capitaine.

Ahora simplemente nos queda guardar el tema creado con un nombre alegórico para tenerlo en la solapa de Temas.


Finalmente, podremos descargar el clásico fondo de pantalla de Sierra 10.12. Podrán encontrar una versión en alta resolución para pantallas 4K aquí u otra versión con mas cielo y menos montañas aquí.

Naturalmente que podrán perfeccionarlo más de acuerdo a su gusto personal, incorporándole Plank como disparador de íconos, pero yo no lo uso particularmente.

Si quisieran hacerlo, es fácil integrarlo desde Sistema / Preferencias / Visualización / Mate TWEAK. Guardamos el diseño de panel (por las dudas), y luego en la izquierda de la ventana elegimos la sección Interfaz. En ella nos aseguramos de escoger la opción Cupertino (que agregará el selector de íconos Plank y elimina la barra inferior típica en Mate).
Acto seguido podremos escoger la posición de los botones de maximizar, minimizar y cerrar. Para ello podremos hacer clic en la sección "Ventanas", y en el apartado de Apariencia podremos armarlo con los botones a la izquierda o a la derecha.

Como puede advertirse, es un escritorio Justicialista del portón al balcón, del balcón al sillón... como diría esa chica María Elena Walsh; la misma que grabó el tango "El 45". Ese que dice: “¿Te acordás, hermano, qué tiempos aquellos, cuando el que te dije salía al balcón? ¡Qué bárbaros! Comenzaron a meterme hasta en la música pop...".

martes, 6 de junio de 2017

¿Cómo corrijo el error de video de la Acer Aspire 4736 en Ubuntu?

¡Trabajadores!

Nuestro Movimiento es uno que encarna el sentir de los humildes y del pueblo Trabajador. Esto nos propone realizaciones que deben orientarse a todos los espectros de la vida y reconocer a la única clase de hombres, los que trabajan.

Si bien como Conductor cuento para mis tareas con un equipo Intel i7 con unos 64GB de RAM y amplia capacidad de almacenamiento, bien cierto es que esta respetable potencia computacional no siempre puede llevarse al alcance de todos, ni tampoco es imprescindible para nada.

Existen ocasiones donde uno prefiere un equipo cómodo de transportar, que pueda dotarse de software libre, y que pueda acarrearse a convenciones de Software Libre o a cualquier destino de trabajo, que nos deparen lamentos si se rompe o le pasa algo. Para ello queremos un equipo humilde, y qué mejor si es uno que salvamos del ostracismo.

El Capital quisiera que existan computadoras ancianas, pero en nuestro caso sólo las consideramos veteranas. Tal es el caso de la portatil Acer Aspire 4736, modelo superado y descontinuado para el Capital, pero oportunidad nada desdeñable para el Trabajador. Por una cifra que no alcanzaba los cuatro dígidos, un ejemplar sobrante de stock en su caja sellada, y nunca utilizado. También existían 3 o 4 baterías de nueva factura para el mismo, por lo cual la oferta es bien válida.
El equipo está dotado con un microprocesador Intel Core Duo T6600 de 2.2Ghz, originalmente con 2GB de memoria RAM SODIMM DDR2 y un disco rígido de 320GB dotado de Linpus Linux Lite. El chipset es Intel Express y el adaptador de video Intel GMA 4500MHD propone una resolución de 1366 x 768 en su pantalla 16:9 de 14,1 pulgadas, con salida VGA y HDMI. El sonido es Realtek, con micrófono interno incorporado, y el Wifi es Atheros. La conectividad es Ethernet Gigabit con capacidad Wake on LAN (encendido desde la red, de importancia para su futuro uso).

Si bien la propuesta deja que desear con el torpe Linpus Lite, y se presentaría como ampliamente superada para cualquier sistema operativo privativo, es aún muy adecuada para GNU Linux. En especial se destaca para emplearla como sistema remoto y de trabajo general.

La dotamos de GNU Trisquel (derivado de Ubuntu 14.04LTS y munido de kernel Linux-libre) y potenciamos su hardware a tope de sus posibilidades, tornándola válida. A tal fin se aprovechó y se incrementó la memoria RAM a 4GB (máximo del sistema) y el lento disco rígido convencional se reemplazó por una moderna unidad de estado sólido (120GB), con lo cual su velocidad operativa se incrementó varias veces. El disco rígido original lo adaptamos en una caja USB y nos servirá como un útil disquito externo de 320GB, que está lejos de tirar cohetes pero nunca viene mal. Todo por chirolitas.
Al aumentar esta velocidad de trabajo, la posibilidad de uso - que es el verdadero consumo - creció en forma igualmente proporcional. Y así terminamos con un equipo útil en condiciones portátiles y conectado a una red local.

Pues bien, existen en la política piedras y palos en la rueda que como buenos Conductores hemos de saber sortear o superar. Uno de ellos es el consabido problema de video de este modelo. Vean señores, sucede que tras instalar Trisquel 7 - luego de que el funcionamiento del instalador fuese óptimo - al apagar el equipo y reencenderlo, este presenta un error de video de "pantalla negra", o sea que su pantalla queda apagada debido al sistema operativo.

Podremos identificar este problema de video pues el sistema presenta imagen normalmente al encenderse, y muestra la pantalla de arranque de la BIOS/POST, seguida luego de la presentación incorrecta de la pantalla de selección del sistema operativo (selector GRUB), inmediatamente la pantalla se vuelve púrpura y luego instantáneamente negra. Sin embargo, se dará inicio a Trisquel o Ubuntu,  Si estamos atentos, oiremos dentro de los 3 o 4 segundos el sonido de inicio de sesión de Trisquel.

Realmente el chipset funciona y otorga señal de video a la pantalla de la portátil, pero éste se ve completamente oscuro. La causa es la desactivación de la retroiluminación del panel LCD de la pantalla de la portátil por un conocido error del viejo chip de video Intel y su chipset. Esto lo podemos apreciar iluminando la PC lateralmente con una linterna, y podremos apreciar muy oscuro la ventana de bienvenida a Trisquel...

Para resolver el problema debemos lograr una visualización correcta conectando la portátil a un monitor externo (yo lo he hecho por HDMI, pero probablemente también podrían utilizar la salida normalizada analógica VGA).

En el monitor externo, el video se presentará correctamente. Pudiendo ya ver correctamente de forma temporal, configuraremos el Grub para modificar la forma en que se maneja la retroiluminación del panel LCD. Para ello abrimos una terminal con Aplicaciones / Accesorios / Terminal, (o presionando Ctrl+Alt+T) e ingresamos el siguiente comando:

sudo nano /etc/rc.local

Debería cargarse el editor peronista GNU Nano con un archivo de configuración, con cierto contenido. Debemos crear una linea nueva (presionando Enter) por encima de la línea "exit 0", y debemos agregar el siguiente código de configuración:

setpci -s 00:02.0 F4.B=00

Una vez agregada esta línea individual, guardamos el archivo con Ctrl+o y salimos del editor GNU Nano con Ctrl+x.

En segundo lugar editaremos el archivo de configuración del arrancador GRUB, ingresando el comando:

sudo nano /etc/default/grub 

Ahora bien, el archivo /etc/default/grub configura los aspectos básicos de arranque del sistema. Ya contendrá datos que no debemos modificar. Solamente debemos buscar la línea que dice:


GRUB_CMDLINE_LINUX_DEFAULT = "quiet splash"

...y únicamente ésta línea modificaremos agregándole la variable acpi_osi = linux, de manera tal que quede así: 

GRUB_CMDLINE_LINUX_DEFAULT = "quiet splash acpi_osi = Linux"

Conforme lo hayamos hecho, guardamos el archivo con Ctrl+o y salimos del editor GNU Nano con Ctrl+x.

Ahora debemos indicarle al sistema que actualice al arrancador GRUB en base a las modificaciones practicadas. Ello se ordena con el comando:

sudo update-grub
Una vez completada esta operación (tarda un par de segundos), opcionalmente nos conviene configurar un servidor Secure Shell dentro de Trisquel, a fin de poder acceder al equipo desde otro cliente en la red en caso de necesidad. Esto podría servirnos en caso de alguna otra falla de video (la cual no se ha producido: Para ello ingresamos:

sudo apt-get update
sudo apt-get install openssh-server openssh-client
sudo apt-get upgrade

Ahora podremos ya  apagar el equipo con:

sudo poweroff

Desconectamos el monitor externo y al encender la portátil nuevamente, el sistema arrancará Trisquel sin presentar errores de pantalla negra. Podremos ver ahora correctamente la pantalla de bienvenida y operar en el sistema normalmente.

Si tuviésemos instaladas otras distribuciones GNU Linux (como Ubuntu), y en las mismas apareciese el error de "pantalla negra", debemos hacer el mismo procedimiento dentro de cada distribución.

domingo, 4 de junio de 2017

¿Cómo puedo controlar un UPS a través de Ubuntu?

Durante la década de 1960 era usual que Juan Perón recibiera visitantes y delegaciones en la Quinta 17 de Octubre, en Puerta de Hierro. El Conductor realizaba apreciaciones sobre la situación política de la Argentina y respondía interrogantes de los presentes. Aquejados por una interrupción eléctrico y sobrecarga que afectó un servidor, los enviados interrogan al Conductor del Justicialismo cómo evaluar el estado de una unidad UPS y hacer que un servidor se apague automáticamente cuando se corta el suministro eléctrico desde Ubuntu.


(...)
Bueno, indudablemente la intercomunicación de sistemas informáticos ha dado a la creación de redes, cuya topología puede variar desde la simple y llana "punto-punto" hasta complejísimas estructuras basadas en el modelo "cliente-servidor". Eso lo han dicho todos. Naturalmente que, como a los niños y a los ancianos, un servidor de computación es un valor crítico, al que debemos proteger y primordiar. Y ello no lo han dicho todos, lo ha dicho el Justicialismo.

Los usos de estas máquinas son tan variados que describir el almacenamiento centralizado del trabajo, los respaldos de datos y ejecución de tareas específicas para éstos, así como su uso en comunicaciones, compartir contenidos, creación y control de música y video, su accionar en juegos, etc, sólo pondría de manifiesto una ínfima parte de las mejoras que los servidores traen a la vida del hombre.

Durante diez años dimos todo por los servidores y también por los clientes de dichos equipos. A más de uno se le ocurrió por ello decirnos que manejamos un "clientelismo".
Pero estos logros no sólo han de reivindicarse, han de comprenderse y sobre todo, han de cuidarse. Normalmente un servidor - como cualquier PC - no debe apagarse "a lo vikingo" con su interruptor de alimentación, pues de esta manera se perderá inexorablemente la información de trabajo almacenada en los bancos de memoria (que es de tipo temporal), y en tal caso también existiría un alto riesgo de perder información del sistema y usuario. Sumemos la probabilidad de dañar físicamente los medios de almacenamiento magnéticos, y nos encontraremos ante una noxa que debemos por todos los medios evitar. El procedimiento correcto de apagado consiste entonces en iniciar una secuencia de apagado automatizada, que podremos disparar a través del comando Apagar sistema del sistema operativo que utilicemos. Esta rutina asegurará que el estado de bienestar del equipo resguarda la consabida información en la manera que es adecuada hacerlo.

En el caso del un sistema GNU con Linux, esta rutina de apagado puede hacerse desde el escritorio gráfico por quien posea privilegios de Conductor ("root"), o - más comúnmente - desde una terminal de texto, por medio del comando:

sudo poweroff

Pues bien señores, esto responde a las condiciones operativas convencionales. Pero como en todo en la vida, existen los imponderables.

Un corte de suministro eléctrico es un evento que - por indeseado - no deja de ser corriente. Naturalmente, los cortes y sobrevoltajes interrumpirán la tarea del servidor en el mejor de los casos, y podrían ponerlo en peligro de daños severos en otros, incluso llegando a destruirlo.

En la política, tenemos personajes que pueden saltar, y no son acróbatas. Se llaman ministros. La informática copia de estas sabias estructuras por necesidad. Existen entonces dispositivos acondicionadores de voltaje - estabilizadores - especialmente logrados para el uso con equipos sensibles, incluso sistemas de computación.

Estos aparatos se encargan de atresar los voltios, y cuentan con un fusible capaz de actuar en momentos de sobrecarga crítica. En los modelos más avanzados contarán accesoriamente con filtros para línea telefónica y con cargadorer para dispositivos alimentados por USB. Os recomiendo el uso de estos dispositivos para cada PC a fin de proteger su fuentes conmutadas de tensión. Los estabilizadores de 500w pueden considerarse el menor tenor a utilizar en una computadora y su monitor LCD, y hasta los 2000w para afianzar  equipos de alta performance.

Pues bien. He dicho que en la política existen condiciones superadoras, y en el caso de los acondicionadores eléctricos tendremos de estas ventajas en los UPS (fuente de potencia ininterrumpida). Como su nombre indica, estos aparatos más avanzados consisten en una fuente de alimentación de emergencia a baterías, capaz de proveer temporalmente con su energía almacenada a otro dispositivo en caso de una interrupción o fluctuación del suministro normal.
Normalmente la capacidad de las baterías de un UPS hogareño o de oficina no alcanza para reemplazar ininterrumpidamente el suministro de la red eléctrica, sino que proveen unos imprescindibles minutos de alimentación que vendrán de perillas al permitirle al operador salvaguardar la información de trabajo y apagar/hibernar el sistema como se debe. En situaciones críticas, este período permitiría encender otras fuentes de alimentación de respaldo o emergencia (un grupo electrógeno, por ejemplo), que sí permitirían la operación ininterrumpida del sistema.

Los UPS modernos cuentan con una interfaz de comunicación y control que permiten al usuario saber en qué condiciones se encuentra el UPS. Antiguamente se utilizaba el veterano protocolo serial Centronics difundido en equipos de gama industrial, pero actualmente esta interfaz está siendo progresivamente reemplazada por el protocolo universal USB. Sobre este particular me han preguntado: ¿cómo evaluar el estado de una unidad UPS y hacer que un servidor se apague automáticamente cuando se corta el suministro eléctrico?.

La realización que debemos llevar a cabo bien puede constituirse en un caso de estudio, pues me han dicho que desean proteger contra interrupciones eléctricas un equipo servidor Lenovo ThinkServer Ts-140 E3-1226 V3.
Conozco que se trata de un servidor montado dentro de un gabinete Tower 4U,  originalmente alimentado a través una fuente conmutada ATX de 350w, y su sistema operativo era un mediocre Micro$oft Window$ $erver 2012 R2 Standard. La performance de dicho sistema nunca respondió a las expectativas de la Masa, que lo necesitaba para su operación en la Confederación General del Trabajo. A pesar de contar con un disco de 2TB SATA y 8GB de RAM, y estar provisto de un procesador de 4 núcleos Intel Xeon E3-1226 v3 de 3,30GHz, el trabajo de compartir documentación, planos, material fotográfico y demás no era lo óptimo que debe esperarse de un equipo de este calibre. Sin duda el culpable era el mediocre sistema operativo de la oligarquía.

Aprovecharemos la desgracia eléctrica que provocó un desperfecto eléctrico y dio por tierra con la fuente genérica de 350w, intervendremos sobre el con mano Justicialista, pues nuestro principio nodal proclama que ha de darse al Trabajador lo que este merece, y al Pueblo lo que es del Pueblo.

Tras comprobar el correcto funcionamiento del resto del equipo, procederemos a reemplazar la fuente por otra unidad de marca Powercooler, y 550 watts. También se remplazan los módulos de memoria y se lleva el total instalado al máximo posible, unos 32 GB DDR3. Asimismo se suman un disco SSD de 120GB y 2 discos HDD de 2TB, para totalizar los 6GB instalados en configuración RAID. Finalmente, se instala Ubuntu Server de 64 bits, en su versión 16.04LTS.

Para tareas de salvaguarda eléctrica utilizaremos un UPS ejemplar, el APC BX1100CI-AR con 640W/1100VA, cuya batería permiten entre 2 y 4 minutos de uso a carga completa bajo la condición del máximo consumo estipulado, y hasta unos 12-15 minutos en condiciones de consumo del servidor.

El gabinete de este UPS está provisto con seis tomas de corriente normalizadas, y filtro para protección de sobrevoltaje en la línea telefónica. Además, cuenta con control de reporte a través de un puerto USB de conector USB B hembra.
Para hacer uso de la revisión de los datos del UPS y de esta manera permitirnos alertas y que el mismo apague el sistema, debemos realizar algunas implementaciones de software en el servidor, las cuales explicaré paso a paso en pos de la Liberación.


En primer lugar instalamos el software de control de los UPS de marca APC en el servidor (el cual también puede servir para otros equipos de diferente marca y lógica similar):

sudo apt-get install apcupsd

Una vez completada la instalación, editaremos el archivo de configuración de acuerdo a nuestras necesidades. Los UPS modernos cuentan con una interfaz de comunicación y control basada en el protocolo universal USB. Esto nos facilita enormemente las cosas.

sudo nano /etc/apcupsd/apcupsd.conf

En el archivo de configuración, debemos asignarle un nombre al UPS, y configurarlo para emplear USB, para ello modificamos o agregamos las líneas:

UPSNAME APC1100CI-AR
UPSCABLE usb
UPSTYPE usb


Si a continuación de la línea UPSTYPE nos aparece la línea "DEVICE /dev/ttyS0" (que denota una conexión serial, para un UPS con dicho tipo de conector). , debemos comentarla agregándole al principio un signo numeral ("#"), de manera que quede así:

#DEVICE /dev/ttys0

Existen tres parámetros principales que debemos modificar en este archivo de configuración para indicarle al sistema cuanto tiempo esperará para apagarse en caso de una interrupción de fluido eléctrico.

Estos valores coinciden con los valores reportados al demonio apcupsd por parte del UPS. Fundamentalmente se usa el tiempo estimado antes que la batería se descargue completamente, la cual el UPS calcula basado en el porcentaje de carga reportado y en el tiempo restante de carga.

Los tres parámetros a indicar en el archivo apcupsd.conf son:

a) BATTERYLEVEL, el nivel de carga mínimo aceptado de batería (expresado en porcetaje).
b) MINUTES, el tiempo estimado antes de que la batería se agote completamente.
c) TIMEOUT: un valor de tiempo de autoridad total, expresado en segundos, en el cual, si indicamos un valor diferente a cero, apcupsd ignorará los dos parámetros anteriores y hará caso al mismo.

Normalmente podríamos indicar BATTERYLEVEL 30 (por ciento) o minutes 3, pero han de saber que cada uno ha de portar en su mochila el bastón de Mariscal, por lo que la configuración dependerá de las condiciones particulares. Existen varios factores, por ejemplo, cuan frecuentemente se producen cortes de luz de escasa duración. Otro factor que puede afectar la decisión es la edad de la batería. Si tenemos una batería de más de cinco años, naturalmente la carga almacenada por la misma no será la estipulada durante su fabricación. Por lo tanto, decidimos programar un valor TIMEOUT de 130 segundos y un valor ONBATTERYLEVEL de 5 por ciento.

TIMEOUT 130
ONBATTERYLEVEL 5

Guardamos el archivo (Ctrl+o y Ctrl+x).

Esto provoca que dentro de los 5 segundos de un corte de suministro eléctrico, opcupsd comience a generar mensajes en la consola de texto del servidor y a los usuarios logueados, a través de SSH,  notificándoles del hecho que se ha producido un corte de suministro.

Ahora debemos indicarle al sistema que el demonio UPS ha sido configurado y que está listo para funcionar. Ingresamos el comando:

nano /etc/default/apcupsd

...y buscamos y modificamos el parámetro ISCONFIGURED para que quede de la siguiente manera:

ISCONFIGURED=yes

Acto seguido presionamos Ctrl+o y Ctrl+x para guardar los cambios.

Ya podremos dar inicio el servicio de interacción con el UPS, tipeando:

service apcupsd restart

Si estamos logueados al servidor podremos revisar el status del UPS, mendiante el siguiente comando de organización:

sudo apcaccess

La cantidad de información suministrada dependerá del UPS en particular, pero podría indicarnos algo como lo siguiente:

APC      : 001,043,1045
DATE     : Tue May 30 00:02:36 AR 2017
HOSTNAME : site5
VERSION  : 3.14.6 (16 May 2009) debian
UPSNAME  : APC1100CI-AR
CABLE    : USB Cable
MODEL    : Back-UPS AR  1100
UPSMODE  : Stand Alone
STARTTIME: Mon Mat 28 23:43:37 AR 2017
STATUS   : ONLINE
LINEV    : 240.0 Volts
LOADPCT  :  40.0 Percent Load Capacity
BCHARGE  : 100.0 Percent
TIMELEFT :  11 Minutes
MBATTCHG : 5 Percent
MINTIMEL : 3 Minutes
MAXTIME  : 0 Seconds
OUTPUTV  : 232.0 Volts
SENSE    : Medium
DWAKE    : 000 Seconds
DSHUTD   : 000 Seconds
LOTRANS  : 194.0 Volts
HITRANS  : 264.0 Volts
RETPCT   : 000.0 Percent
ITEMP    : 29.2 C Internal
ALARMDEL : Always
BATTV    : 27.4 Volts
LINEFREQ : 50.0 Hz
LASTXFER : Low line voltage
NUMXFERS : 0
TONBATT  : 0 seconds
CUMONBATT: 0 seconds
XOFFBATT : N/A
SELFTEST : YES
STATFLAG : 0x07000008 Status Flag
SERIALNO : xxxxxxxxxxxx 
BATTDATE : 2014-09-25
NOMOUTV  : 230 Volts
NOMINV   : 230 Volts
NOMBATTV :  24.0 Volts
NOMPOWER : 640 Watts
FIRMWARE : 9.o5 .I USB FW:o5
APCMODEL : Back-UPS AR  1100
END APC  : Tue May 30 00:02:41 AR 2017



Naturalmente que podremos hacer una "prueba de corte", rodadura que siempre conviene realizar simulando trabajo en el servidor sin que el mismo esté en una acción crítica.

Al desconectar directamente el UPS de la toma eléctrica, comprobaremos que los usuarios reciban la alerta que les indica almacenar su trabajo durante 90 segundos. Y luego el sistema se apagará automáticamente. La rutina de apagado del servidor lleva como máximo 1 minuto 30 segundos, y el de hibernado del mismo en partición SWAP unos 3:40 minutos (el cual debemos sumar al tiempo de actividad normal del sistema, y el cual la batería debe estar capacitada para responder). En este caso el UPS provisto es totalmente capaz de salvar el trabajo de los usuarios, y ofrece una carga redundante útil.

jueves, 1 de junio de 2017

¿Cómo hago funcionar la impresora Hewlett-Packard HP P1102W en Ubuntu?

¡Trabajadores!

Todos hemos de poder recibir los beneficios de la Libertad, pues no puede entenderse un país libre si el último de sus descamisados no posee software libre.
El Justicialismo se ha encargado de producir toda una serie de soluciones doctrinales para enfrentar los problemas de los hombres, y así y llevar al Trabajador - su auténtico destinatario - aquello por lo que siempre ha luchado: la plena felicidad. 
Esta es una tarea feliz. Sin embargo, es una que no cesará nunca en tanto y en cuanto exista un problema en la tierra que aqueje a uno de sus hombres.

Uno de ellos radica en la instalación de la impresora Hewlett-Packard P1102w en Ubuntu.

Vean señores, se trata de una impresora láser monocromática muy popular y de correcto funcionamiento, ideal para toda persona con un volumen de impresión limitado. Entre las funcionalidades se encuentra la de conectarse a través de Wifi a un router, a fin de compartirse entre la red de usuarios locales.
Sin embargo, en general la Masa desea simplemente conectarla a través del puerto USB directamente a la computadora. Estoc - que debería estar resuelto y ser mas predecible que el malo del Zorro corte las velitas con el florete, a veces se convierte en un desafío técnico, y sobre todos para los neófitos.

Sin embargo, aprovechando la presencia de la Abanderada de los Humildes, os explicaré cómo hacerlo desde la Terminal, que es la forma en la cual deben hacerse las cosas para poder llamarnos verdaderos hombres de acción.

En primer lugar debemos tener nuestra computadora con Ubuntu conectada a internet, pues desde allí descargaremos los controladores necesarios. También debemos asegurarnos que la impresora por el momento esté desconectada de la computadora y apagada. También nos aseguramos yendo a Sistema / Administración / Impresoras, que no exista ninguna impresora HP 1102W que pudiese haber quedado mal instalada de algún intento anterior. Si existiese alguna, la eliminamos.
Procederemos a instalar la impresora en nuestro sistema, desde la Terminal Linux. La terminal nos permite instalar programas rápidamente mediante comandos de texto. Para ello en el caso de Ubuntu, podremos abrir una terminal presionando Ctrl+Alt+T, o también desde Aplicaciones / Herramientas / Terminal:

En la terminal escribimos los siguientes comandos, todo en minúscula, y luego seguido de Enter:

sudo apt-get update

...ello provocará que el sistema nos solicitará nuestra contraseña de usuario, mediante el siguiente mensaje en la pantalla terminal:

[sudo] password for xxxxxx:

Debemos ingresar nuestra contraseña de usuario "a ciegas" y luego presionar la tecla Enter (la computadora no mostrará las letras, de manera que debemos teclear la contraseñá sin verla en pantalla, lógica medida de seguridad para que nadie nos la espíe). Si la contraseña se ingresó bien, la computadora nos devolverá una serie de datos correctos (caso contrario, volverá a insistir con la contraseña). A continuación debemos ingresar el siguiente siguiente (nuevamente, todo en minúsculas, y presiono Enter para ejecutarlo):

sudo apt-get install --reinstall hplip

El sistema devuelve en pantalla toda una serie de datos y luego informará algo como:

"Se utilizarán 3.632 kB de espacio de disco adicional después de esta
operación.
¿Desea continuar? [S/n]"


Debemos indicarle que si presionando la tecla "s". Esto hará que se descargue desde internet el instalador de las impresoras HP, pieza fundamental para nuestra orquesta informática.

Conforme se haya descargado el instalador, ahora si debemos conectar la impresora mediante el cable USB a un puerto USB de nuestra computadora, y la encendemos. Al encenderse la impresora, podrían abrirse mensajes en nuestra pantalla que nos informan de detección de una nueva impresora. En tal caso, los cerramos e ignoramos. Debemos confirmar que la luz verde de la impresora quede encendida. Conviene colocar al menos una hoja en la bandeja de entrada (se recomienda papel A4 de 75 y 80 gramos con esta impresora).

Ahora daremos inicio desde la terminal al último comando para iniciar la instalación de la impresora. Para ello ingresamos (seguido de Enter):

sudo hp-setup -i


El sistema nos preguntará sobre qué tipo de conexión queremos usar con la impresora:

--------------------------------
| SELECT CONNECTION (I/O) TYPE |
--------------------------------
  Num     Connection Description          Type                                                                 
---- ---  --------------------------
 0*  usb  Universal Serial Bus (USB)                               
 1   net  Network/Ethernet/Wireless (direct connection or JetDirect)
 2   par  Parallel Port (LPT:) 


Esto describe a las conexiones USB ("0"), conexión para impresoras de red o wifi ("1"), o la antigua y casi obsoleta conexión por puerto paralelo ("2"). En nuestro caso debemos indicarle que queremos utilizar la conexión a través del puerto bus serial universal (USB), o sea la opción "cero" (ingresamos "0" y presionamos Enter).

Conforme lo hagamos, se nos mostrará las tediosas condiciones de licencia del software a instalar y se nos preguntará si aceptamos dichas pretenciones (presionamos "y")".

La interrogante más importante de todas es si queremos descargar el Controlador (driver) presionando la tecla "d". Tras hacerlo, el sistema nos preguntará qué alias de impresora queremos usar (presionamos Enter para dejar el sugerido), y una descripción ubicación de la misma. A todas estas preguntas podremos responder presionando Enter a fin de aceptar las propuestas por defecto (bien al estilo Window$).

Finalmente nos preguntará si deseamos imprimir una página de prueba ("test page"), a lo que podremos indicar afirmativamente con "y". En tal caso la impresora debería emitir unos zumbidos e imprimir una página de evaluación con el logotipo HP.

Esto conformará entonces la rutina de instalación, que sólo debe hacerse la primera vez que instalamos la impresora.

Dicha máquina quedará asociada ya a nuestro sistema y podremos imprimir simplemente encendiendo la impresora y usando la función Imprimir de nuestro software libre favorito.

El caso de Ubuntu, podremos verla y configurarla adicionalmente desde Sistema / Administración / Impresoras. Si tuviésemos varias impresoras instaladas, podríamos querer definir una de ellas como la impresora que el sistema utilizará por defecto. Para ello haciendo clic con el botón derecho sobre el ícono de la impresora "Hewlett-Packard-HP-1102-series" y haciendo clic en Establecer como Impresora Predeterminada. El sistema nos preguntará si la queremos predeterminar para el usuario activo, o para todo el sistema. Normalmente la querremos para todo el sistema, pero esto podría ser distinto en el caso de que estemos en una empresa u hogar con varias impresoras en un servidor de red, por ejemplo, o en el caso que contaramos con varias impresoras del mismo modelo.

De ahora en más, toda vez que impriman una página gritarán al cielo un estruendoso "¡Viva Perón!".

domingo, 28 de mayo de 2017

¿Cómo puedo crear un reproductor de audio con control remoto en Ubuntu?

¡Trabajadores!

Normalmente recomiendo utilizar reproductores capaces de correr desde la consola Terminal para reproducir música en forma remota. Esto es así pues podemos ingresar a través de la terminal por medio de un Shell Seguro SSH, y desde allí ejecutar remotamente cualquiera de estos reproductores para reproducir música. El audio saldrá a través del equipo remoto. De la gran lista de programas disponibles, he sido adepto a mocp, ya que opera peronísticamente bajo el principio clientelar, y junto con sus amplias posibilidades puede quedar reproduciendo una vez cerrada la sesión.

Sin embargo, este y otros poseen un inconveniente que en ciertos escenarios puede ser determinantes: para controlarlo se requiere idealmente el acceso a un usuario ya configurado en el servidor remoto, y requieren al menos el uso de una terminal con teclado y pantalla. Existen toda una plétora de situaciones donde no podemos cumplir con esto (por ejemplo, en el caso de desear controlar un reproductor pequeño a través de un celular, o un servicio musical externo in situ, o el caso de contar con un servidor musical de una compañía, o en una organización donde no tengamos acceso como usuario específico al servidor).

Nuestro Movimiento ha sido doctrinalmente concebido para honrar el trabajo en todas las condiciones, a fin de llevar la solución al Pueblo Descamisado bajo todas y cada una de las situaciones posibles. Si bien existen imponderables, gracias al Software Libre podremos afrontar cualquier tarea que nos propongamos y encontrarles una solución.

En este caso en particular nos decantaremos a una opción simple, controlando el audio a través de un sistema clientelar, que no requiera acceso a carpetas home de usuario alguno, sino que se ejecute por fuera de los entornos de usuairo. Dicho programa es mpd, que oficiará de programa demonio o "servidor", en tanto que mpc oficiará de cliente.


En primer lugar instalo en el servidor el programa (técnicamente, el "demonio") de servicio musical y otro que oficie de cliente en el equipo:

sudo apt-get install mpd mpc

Luego asigno los permisos necesarios para el servidor ingresando:

sudo chmod 777 /var/lib/mpd/music/ /var/lib/mpd/playlists/
sudo chown -R mpd:audio /var/lib/mpd/music/ /var/lib/mpd/playlists


Ahora agrego la configuración necesaria para los archivos de configuración:

sudo mv /etc/mpd.conf /etc/mpd.conf.original
sudo nano /etc/mpd.conf


...y le agrego el siguiente contenido

music_directory      "/var/lib/mpd/music"
playlist_directory   "/var/lib/mpd/playlists"
db_file              "/var/lib/mpd/tag_cache"
log_file             "/var/log/mpd/mpd.log"
pid_file             "/run/mpd/pid"
state_file           "/var/lib/mpd/state"
sticker_file         "/var/lib/mpd/sticker.sql"
user                 "mpd"
port                 "6600"
log_level            "verbose"


...y guardo (Ctrl+o) y cierro el archivo (Ctrl+x).

Ahora debemos copiar los archivos de música a reproducir remotamente en la carpeta /var/lib/mpd/music, y si quisiéramos usar listas de reproducción, debemos colocarlas en la carpeta /var/lib/mpd/playlists.

Conforme lo hayamos hecho, debemos bloquear el acceso a dicha carpeta para cualquier usuario que no sean los clientes mpd locales o remotos. Lo haremos con:

sudo chmod 770 /var/lib/mpd/music/ /var/lib/mpd/playlists/

Ahora tomamos nota de quien es dueño de las carpetas. Si no lo hicimos, podremos hacerlo nuevamente con

sudo chown -R mpd:audio /var/lib/mpd/music/

Luego desde la terminal reiniciaremos el servidor para que se active el servicio recién instalado:

sudo reboot

Ahora bien, en los equipos cliente (y naturalmente también podría querer hacerlo en el servidor, a fin de reproducir la música), instalaré los softwares clientelares. Lo haré con:

sudo apt-get install mpc gmpc gmpc-plugins

Acto seguido, en los clientes y en el servidor podremos actualizar la base de datos de música, a fin de que los mismos se informen si en la carpeta Music del servidor se hubiesen agregado nuevos elementos:

mpc update

Indidablemente, que los clientes también pueden ejecutarse también desde cómodos entornos gráficos. El cliente gmpc es útil para tales condiciones y podremos correrlo desde Aplicaciones / Música y Video / Cliente de Reproducción de Música Gnome. Al lanzar el programa, también debemos hacer que actualice su base de datos de música. Si estamos en el servidor, podremos hacerlo desde el menú Servidor / Actualizar base de datos y tendremos entonces nuestra lista de archivos de música, que encontraremos en la carpeta raíz del servidor MPD ("/").

Si estamos desde un equipos cliente, el mismo no encontrará la música hasta que configuremos la dirección del servidor remoto, desde Música / Preferencias, y en la solapa Conexión modificar el campo "Servidor" para que en lugar de localhost, se indique la dirección IP o el nombre del servidor. Luego presionamos el botón Conectar.
Asimismo tendremos clientes para Android que podremos utilizar desde celulares o tablets para controlar el servidor musical mpd. Por ejemplo MPD Control o Droid MPD Client. Estos clientes gráficos nos permiten las facilidades de un cliente gráfico.

Ahora bien ¿qué sucede si deseo emplear un control remoto por infrarrojos para controlar la reproducción del servidor mpd? Esto me permitiría interactuar con un equipo servidor de manera simple, sin siquiera disponer de un teclado, pantalla, ni engorros. Incluso me permitiría armar un pequeño servidor dotado de altavoces que reproduzca música de forma inalámbrica.

El software libre ya cuenta con una solución. Naturalmente, si tenemos un receptor infrarrojo para control remoto - como el RC6 o cualquiera que vienen con sintonizadoras - tendremos varias opciones. La más aventajada y compleja es configurar LIRC para hacer uso de un control remoto IR en una PC.

LIRC es potente y permite configurar distintas acciones para distintos tipos de programas, pero está pensado para usarse al unísono con otros controles (teclado, mouse o cualquier otro). Si nuestro requerimiento es mucho más simple y requiere reemplazar el teclado por el control remoto, podremos instalar en el sistema cliente el programa keybinder, software ingeniado para asignar comandos específicos a los botones del control. Para instalarlo, en la terminal ingreso los siguientes Comandos de Organización:

sudo apt-get install unzip gcc make evtest ;
cd ~ ;
mkdir keybinder ;
cd keybinder ;
wget https://github.com/elopez/keybinder/archive/master.zip ;
unzip master.zip
cd keybinder-master/
make
make install
cd ~
rm -r ~/keybinder


Luego ejecutamos el programa evtest para analizar cuáles son los eventos de los botones de nuestro sistema. Ingresamos en la terminal el comando:

evtest

...y el sistema nos devolverá algo como:

No device specified, trying to scan all of /dev/input/event*
Available devices:
/dev/input/event0:    Power Button
/dev/input/event1:    Power Button
/dev/input/event2:    Barcode Reader
/dev/input/event3:    Barcode Reader
/dev/input/event4:    Genius Optical Mouse
/dev/input/event5:    CH PRODUCTS CH PRO PEDALS USB
/dev/input/event6:    Microsoft SideWinder Joystick
/dev/input/event7:    HDA Intel MID Mic
/dev/input/event8:    HDA Intel MID Line
/dev/input/event9:    HDA Intel MID Headphone Front
/dev/input/event10:    HDA Intel MID Front Headphone Surround
/dev/input/event11:    USB2.0_Camera
/dev/input/event12:    IR-receiver inside an USB DVB receiver

Select the device event number [0-12]: 12

En este caso indicamos el evento /dev/input/event12, y el sistema denunciará cuáles son los códigos numéricos de los eventos que este dispositivo tiene preprogramado (si es que existiesen algunos). Por ejemplo, podría indicar:

Input driver version is 1.0.1
Input device ID: bus 0x3 vendor 0x10b8 product 0x1fa0 version 0x100
Input device name: "IR-receiver inside an USB DVB receiver"
Supported events:
  Event type 0 (EV_SYN)
  Event type 1 (EV_KEY)
    Event code 2 (KEY_1)
    Event code 3 (KEY_2)
    Event code 4 (KEY_3)
    Event code 5 (KEY_4)
    Event code 6 (KEY_5)
    Event code 7 (KEY_6)
    Event code 8 (KEY_7)
    Event code 9 (KEY_8)
    Event code 10 (KEY_9)
    Event code 11 (KEY_0)
    Event code 41 (KEY_GRAVE)
    Event code 52 (KEY_DOT)
    Event code 55 (KEY_KPASTERISK)
    Event code 102 (KEY_HOME)
    Event code 103 (KEY_UP)
    Event code 105 (KEY_LEFT)
    Event code 106 (KEY_RIGHT)
    Event code 108 (KEY_DOWN)
    Event code 111 (KEY_DELETE)
    Event code 113 (KEY_MUTE)
    Event code 114 (KEY_VOLUMEDOWN)
    Event code 115 (KEY_VOLUMEUP)
    Event code 116 (KEY_POWER)
    Event code 119 (KEY_PAUSE)
    Event code 128 (KEY_STOP)
    Event code 139 (KEY_MENU)
    Event code 158 (KEY_BACK)
    Event code 164 (KEY_PLAYPAUSE)
    Event code 167 (KEY_RECORD)
    Event code 168 (KEY_REWIND)
    Event code 173 (KEY_REFRESH)
    Event code 207 (KEY_PLAY)
    Event code 208 (KEY_FASTFORWARD)
    Event code 210 (KEY_PRINT)
    Event code 223 (KEY_CANCEL)
    Event code 226 (KEY_MEDIA)
    Event code 352 (KEY_OK)
    Event code 354 (KEY_GOTO)
    Event code 355 (KEY_CLEAR)
    Event code 358 (KEY_INFO)
    Event code 363 (KEY_CHANNEL)
    Event code 365 (KEY_EPG)
    Event code 370 (KEY_SUBTITLE)
    Event code 375 (KEY_SCREEN)
    Event code 377 (KEY_TV)
    Event code 385 (KEY_RADIO)
    Event code 386 (KEY_TUNER)
    Event code 388 (KEY_TEXT)
    Event code 389 (KEY_DVD)
    Event code 392 (KEY_AUDIO)
    Event code 393 (KEY_VIDEO)
    Event code 398 (KEY_RED)
    Event code 399 (KEY_GREEN)
    Event code 400 (KEY_YELLOW)
    Event code 401 (KEY_BLUE)
    Event code 402 (KEY_CHANNELUP)
    Event code 403 (KEY_CHANNELDOWN)
    Event code 405 (KEY_LAST)
    Event code 407 (KEY_NEXT)
    Event code 410 (KEY_SHUFFLE)
    Event code 412 (KEY_PREVIOUS)
  Event type 4 (EV_MSC)
    Event code 4 (MSC_SCAN)
Key repeat handling:
  Repeat type 20 (EV_REP)
    Repeat code 0 (REP_DELAY)
      Value    500
    Repeat code 1 (REP_PERIOD)
      Value    125
Properties:
Testing ...


Al presionar los botones del control remoto infrarrojo, debería devolvernos un reporte de tales eventos, en los cuales el valor 1 indica "botón presionado" y el valor 0 indica "botón no presionado".


Testing ... (interrupt to exit)
Event: time 1490184760.781095, type 4 (EV_MSC), code 4 (MSC_SCAN), value 40400d
Event: time 1490184760.781095, type 1 (EV_KEY), code 207 (KEY_PLAY), value 1
Event: time 1490184760.781095, -------------- SYN_REPORT ------------
Event: time 1490184761.023186, type 1 (EV_KEY), code 207 (KEY_PLAY), value 0
Event: time 1490184761.023186, -------------- SYN_REPORT ------------
Event: time 1490184761.793386, type 4 (EV_MSC), code 4 (MSC_SCAN), value 404010
Event: time 1490184761.793386, type 1 (EV_KEY), code 365 (KEY_EPG), value 1
Event: time 1490184761.793386, -------------- SYN_REPORT ------------
Event: time 1490184762.043188, type 1 (EV_KEY), code 365 (KEY_EPG), value 0
Event: time 1490184762.043188, -------------- SYN_REPORT ------------
Event: time 1490184762.734733, type 4 (EV_MSC), code 4 (MSC_SCAN), value 404011
Event: time 1490184762.734733, type 1 (EV_KEY), code 168 (KEY_REWIND), value 1
Event: time 1490184762.734733, -------------- SYN_REPORT ------------
Event: time 1490184762.983185, type 1 (EV_KEY), code 168 (KEY_REWIND), value 0
...etc


Debemos comprobar que efectivamente todas las teclas presionadas tengan programado el código denunciado anteriormente (pues existen ocasiones en que sus funciones denunciadas en la tabla no coinciden plenamente con la de los botones propiamente dichos, pues las plaquetas son genéricas y los controles no poseen todos los botones, o los tienen en lugares diferentes). Para finalizar la prueba de botones presionamos Ctrl+c.

En este caso, se deben programar los eventos según los códigos de los eventos en el archivo /etc/keybinder.conf. Para ello ingresamos:

sudo nano /etc/keybinder.conf

...y le agregamos, por ejemplo:

114,mpc volume +10 # Aumenta el volumen de mpc a +10%, para Vol-
115,mpc volume -10 # Reduce el volumen de moc -10%, para Vol+
168,mpc prev       # Pasa a la pista previa, para <<

407,mpc next       # Pasa a la pista siguiente, para >>
207,mpc toggle     # Reproduce y pausa.
410,mpc random     # Activa reprod.aleatoria, para RANDOM

116,shutdown -h now # Apaga el equipo, para POWER

Y al reiniciar el sistema, tendremos un servidor de audio conectado a altavoces, que podremos controlar simplemente con los botones de un control remoto. Naturalmente que con este conocimiento, habilidad y ganas y sumándole hardware poco costoso consistente en una placa de desarrollo de baja potencia, podremos hacernos un lindo reproductor con caja de madera pulida y acceso a control remoto, que ejecute GNU desde una tarjeta MicroSD.


Si quisiéramos desinstalar el programa y eliminar su carpeta de música y listas de reproducción debo indicar:

sudo apt purge mpd mpc gmpc evtest ;
sudo rm -r /var/lib/mpd/ ;
sudo rm /etc/mpd.conf.original
;

miércoles, 24 de mayo de 2017

¿Cómo puedo transmitir streaming de video y audio hacia dongles ChromeCast a través de Ubuntu?

En 1965, el Consejo Coordinador y Supervisor del Movimiento Justicialista, órgano encargado a entablar las necesarias acciones políticas en la Patria, hacía llegar una de las consabidas latas cinematográficas con las expresiones del Conductor desde Puerta de Hierro, material titulado "PERÓN Habla". En ella Juan Perón expone cómo disponer y configurar con Ubuntu los dongles Google Chromecast para transmitir video hacia un Smart TV.

(...)

Vean señores,

Siempre he dicho que no soy partidario de la Revolución, sino que propongo una evolución, en la cual el progreso y el reordenamiento sea constante, pero medido en la necesidad de preservar un orden sin el cual pocas cosas valen en la vida.

Esta natural evolución es aquella que los pueblos deben darse a sí mismos. El progreso debe ser para todos, pues nadie se realizará en una comunidad que no se realiza. Esto - que es cierto en todos los órdenes de la vida - cobra más importancia que nunca en el mundo de la informática de consumo.

Un ejemplo suele aclararlo todo, como decía Napoleón.
Los Smart TV actuales son esencialmente computadoras dotadas de un sistema operativo y un sintonizador de TV analógica, pero están perfectamente capacitadas para reproducir archivos de video. Todas ellas cuentan con puertos USB capaces de recibir medios de almacenamiento flash o discos rígidos externos, y gracias a ello, reproducir películas o música. En estos equipos también podremos utilizar clientes de streaming que hacen uso de conexión a redes locales (cableadas o inalámbricas) que nos permite acceso a dichos archivos.

Sin embargo, en el corazón del pueblo todavía residen los TV LCD/LED que no son inteligentes, y carecen de estas características avanzadas. Sin embargo, como los hombres, estas TVs son útiles en la medida de su capacidad y de su buena intención. Indudablemente que en estas TV podremos visualizar archivos de audio digital y videos, pero para ello habremos de conectarlos a un equipo que supla la función de reproducción y control. Lo más lógico y eficiente suele ser conectar nuestra PC a la TV por medio de un cable HDMI.

Me han preguntado sin embargo, cómo hacer cuando nuestra PC no está "a tiro de cable". No son pocas las ocasiones donde el equipo está alejado, incluso en otra habitación, o no contemos con una portátil para tal menester. Con este problema en vista, la gente de Google desarrolló una línea de dongles pequeños y de bajo costo, capaces de recibir streams de datos de forma inalámbrica. Se trata de los Chromecast, unos reproductores de medios digitales adosables.

Estos dispositivos se conectan por HDMI y se alimentan por USB u otras maneras, y permiten a los compañeros dar inicio y controlar la reproducción de streams de contenido audiovisual hacia un televisor de alta definición o un sistema de audio hogareño, desde una computadora o un dispositivo móvil. Ello se hace a través de aplicaciones móviles y web de tipo privativo, que soporten la tecnología Chromecast. Alternativamente, el contenido puede espejarse desde el navegador Google Chrome desde una computadora personal, así como desde la pantalla de algunos dispositivos móviles con sistema operativo Android.



Nuestra tarea es la de llevar el amor y la igualdad al Pueblo Trabajador, y dar la lucha necesaria por la Liberación del software. Inicialmente estas aplicaciones privativas sólo contemplaban al oligarca, pero gracias a la acción de nuestro Movimiento, pronto pudo utilizarse la tecnología Chromecast en Ubuntu. De esta forma se hizo caso experimentalmente a las posibilidades técnicas de la primera generación de dongles (Chromecast Audio, el "alfajor" de bajo coste que sólo podía recibir streams de audio, y ejecutarlos en altavoces).

La Justicia Social es el resultado de los emprendimiento, y gracias a la incansable labor de nuestros hombres y mujeres ahora es posible transmitir también video local desde Ubuntu hacia el dongle Chromecast de segunda generación y superiores. En definitiva, podremos contar con la capacidad de hacer streaming de video hacia cualquier Smart TV compatible con Chromecast, hacia cualquier TV equipada con entradas HDMI y un dongle Chromecast, o hacia equipos de audio provistos de la tecnología Cast Ready. Si contamos con un dongle Chromecast Ultra, incluso se puede transmitir en resoluciones 4K.

Como vínculo de unión entre nuestro sistema operativo Ubuntu y la TV provista de HDMI, emplearemos la aplicación peronista Mkchromecast. Se trata de un software libre pensado para hacer uso de streaming en sistemas GNU con Linux. La última versión de esta herramienta compacta de emparejamiento viene con toda una serie de interesantes funcionalidades justicialistas incorporadas. Entre ellas se agregó un nuevo dispositivo de salida ALSA especñifico en el menú de Preferencias de Sonido (al cual podremos configurar desde el Panel de Sistema). El servidor audiovisual hará uso de la librería libre Gstreamer para conformar el stream de datos, y del códec libre FLAC. Ello instrumentará una potente solución libre, ya que nos permitirá manejar audio de elevadísima calidad (hasta 192KHz de frecuencia de muestreo). También incluye soporte para altavoces Sono.

La manera más conveniente par instalar el servidor Mkchromecast en Ubuntu 16.10 o superiores es utilizar la Terminal.

Para ello abrimos una con Ctrl+Alt+T e ingresamos los comandos de organización necesarios. Existe toda una plétora de versiones precompiladas para Ubuntu 16.10 y superiores. y distintos sistemas operativos (incluyendo Debian), y la elección del mismo dependerá enteramente de nuestra configuración particular de sistema. Asumiendo que contamos con Ubuntu 16.10 o superiores, podríamos querer descargar una versión genérica preparada para ALSA. En tal caso, debemos ingresar los siguientes Comandos de Organización.

cd ~ ;

sudo apt update ;
sudo apt install pip git python2.7 python-pip python-pyqt5 python3-pyqt5 lintian pavucontrol ffmpeg avconv python-flask python-psutil python-setuptools python-mutagen python-gi vorbis-tools sox lame flac faac opus-tools libav-tools
;
wget https://github.com/muammar/mkchromecast/releases/download/0.3.7/mkchromecast_0.3.7-1_all.deb ;
sudo dpkg -i mkchromecast_0.3.7-1_all.deb ;
sudo apt install -f ;

El sistema nos indicará que falta alguna paquetería requerida (sobre todo, python-pychromecast), y nos ofrecerá instalarla presionando la tecla s. Una vez hecho esto, se instalará adecuadamente.


En cambio, si contamos con Ubuntu 16.04LTS, hemos de realizar un trabajo más complejo y compilar específicamente el paquete para nuestro sistema. Lo podremos hacer con los comandos:

git clone https://github.com/muammar/mkchromecast.git

...acto seguido crearemos un archivo de texto que denote las dependencias requeridas para la compilación. Podremos hacerlo con el comando:

nano requerimientos.txt

...a este archivo en blanco le pegaremos el siguiente contenido:

Flask==0.12.1
netifaces==0.10.4
psutil==5.2.2
requests==2.13.0
mutagen==1.37
PyChromecast==0.8.1
setuptools==35.0.2
PyQt5==5.8.2
gi==1.2
soco==0.12


...y guardamos el archivo y salimos del editor GNU Nano por medio de Ctrl+o y Ctrk+x. A continuación seguiremos instalando las dependencias requeridas por medio de la utilidad de paquetería Python, el PIP:

sudo -H pip install protobuf ;
sudo -H pip install --upgrade protobuf ;
sudo -H pip install -r requerimientos.txt ;

wget http://ftp.us.debian.org/debian/pool/main/p/protobuf/python3-protobuf_3.0.0-9_amd64.deb ;
sudo dpkg -i python3-protobuf_3.0.0-9_amd64.deb ;
wget wget http://ftp.br.debian.org/debian/pool/main/p/pychromecast/python3-pychromecast_0.8.0-1~exp1_all.deb ;
sudo dpkg -i python3-pychromecast_0.8.0-1~exp1_all.deb ;
wget https://github.com/muammar/mkchromecast/releases/download/0.3.7/mkchromecast_0.3.7-1_all.deb
sudo dpkg -i mkchromecast_0.3.7-1_all.deb

sudo apt-get -f install

Pues bien, como dije, Mkchromecast 0.3.7 agrega la posibilidad de transmitir video desde la computadora al dongle conectado a una TV cercana a través de su puerto HDMI.

Esta función tiene un inconveniente: la transmisión de video sólo opera desde la Terminal, y de momento no está incorporada en la applet. Afortunadamente, es excepcionalmente sencilla de usar desde la terminal una vez que configuramos todo.

En primer lugar nos aseguramos de asociar nuestro dongle Chromecast con la aplicación Mkchromecast, empleando la applet del panel superior de Mkchromecast (podremos encontrarla en el menú Aplicaciones / Sonido y Video / MKCromecast). También podremos lanzar la applet desde la terminal ingresando:


cd ~/mkchromecast
python mkchromecast.py -t

Esto dispondrá el ícono la applet en el panel superior.

Procederemos a asociar nuestro dongle por primera vez. Debemos hacer clic con el botón derecho del ratón sobre el ícono de la applet y elegir la función "Buscar un Dongle Chrome Cast" ("Search for Chrome Cast Dongle"). Al cabo de unos segundos debería aparecer el mismo en la lista, al cual debemos seleccionar y completar el procedimiento siguiendo las instrucciones de la pantalla. Una vez completado el procedimiento de emparejamiento, la applet nos permitirá sin más trámite emitirle al dongle archivos de audio, usando la opción "Transmitir canción" ("Song Casting"). También podremos controlar el volumen del dispositivo, configurar la calidad de audio entre las preferencias, etc. Estas acciones conviene hacerlas, por facilidad, desde esta applet gráfica.

Ahora bien, si queremos enviar un archivo de video al dongle, debemos asegurarnos de cerrar esta applet del panel superior a fin de que la misma no interfiera con la funcionalidad de video que lanzaremos desde la terminal. Para ello, hacemos clic con el botón derecho del ratón sobre su ícono y elegimos la opción Quit.

Ahora trabajaremos desde la terminal para hacer uso de la funcionalidad de video. Suponiendo que queremos transmitirle al dongle el archivo video.mp4, simplemente abrimos una terminal con Ctrl+Alt+T y ejecutamos el siguiente comando de organización:


cd ~/mkchromecast/
mkchromecast --video -i "/ruta/al/video.mp4"

...con esto el sistema codificará y transmitirá dicho contenido audiovisual, y si tenemos la TV configurada para ver la entrada HDMI correspondiente al dongle Chromecast, el contenido audivisual se reproducirá en ella. A su vez, la terminal nos informará datos de status de la reproducción con la siguiente pantalla. Podremos interrumpir el proceso con q o Ctrl+c.



En caso de que necesitemos especificarle un codificador específico, también podremos hacerlo:

mkchromecast --video -i "/ruta/al/video.mp4" --encoder-backend ffmpeg

¿Que sucede si deseamos ver un video Matroska (extensión .mkv) con subtítulos? El Justicialismo ha pensado en todo, el programa puede reproducir Matroskas directamente, y simplemente agregando la variable --subtitles y le indicamos un archivo de subtítulos de formato .srt.

mkchromecast --video -i "~/Vídeos/ejemplo.mkv" --subtitles ~/Vídeos/subtitulo.srt

Si deseamos transmitir un fichero de video disponible desde una fuente en línea, podremos utilizar la variable --source-url e indicar la dirección URL del video:

mkchromecast --source-url http://186.33.226.132/vod/smil:content/videos/clips/35931.smil/playlist.m3u -c mp4 --volume --video

También podríamos reproducir con facilidad radios digitales. Por ejemplo
  
mkchromecast --source-url http://192.99.131.205:8000/pvfm1.ogg -c ogg --volume

También podremos transmitir videos de YouTube también, pero hemos de tener en cuenta que esta funcionalidad primero descargará el video de YouTube a nuestro equipo, y una vez que la descarga haya finalizado y el video se encuentre localmente en nuestro equipo, recién entonces el video se transmitirá al dongle. Por ejemplo:

mkchromecast -y https://www.youtube.com/watch?v=nmLio3SNYPU --video

Desde ahora en más, toda vez que emitamos contenido audiovisual a través de Chromecast podremos gritar al cielo un estruendoso ¡Viva Perón!.