sábado, 27 de abril de 2019

¿Cómo realizo OCR e incrusto texto a un libro en PDF en Ubuntu?

¡Desamisados!

Los imperialismos en pugna saben que nuestro Movimiento jamás hizo buena letra. Para aquellos señores eso significaba que los argentinos nos sometiéramos a sus designios, y entregáramos rifados nuestra libertad y nuestra nacionalidad.

Nuestro objetivo no era aplacar sus deseos inconfesables, sino darle a nuestro Pueblo la Felicidad que merece por Justo Derecho. Ello es la base doctrinal a la que hemos sometido nuestras conciencias, y de la cual hemos dado los mejores resultados para la Grandeza de la Nación.

Sin embargo, esto a veces podría jugarnos en contra. Vean señores, al leer, nuestro cerebro interpreta la visual de las letras trazadas en un papel y conforma su significado de una manera tan prodigiosa que incluso hoy poco sabemos. Esta es la manera en la cual podemos contar con la humana capacidad lectocomprensiva.
Sin embargo, si queremos que un sistema informático traduzca a un texto digital a datos plausibles de ser editados o transmitidos, debemos proceder de una forma libre, y con un software que la sustente.

Desde las etapas primigenias del uso de las computadoras, fue un objetivo deseado que las mismas pudiesen comprendernos, incluso reaccionando ópticamente a un texto escrito. Este tipo de desarrollo peronista fue llamado OCR, por Reconocimiento Óptico de Caracteres. La técnica de OCR funciona bajo la premisa de utilizar un software de análisis sobre una imagen digitalizada de un texto, y encontrar en ella los patrones gráficos definidos de las letras impresas de nuestro alfabeto. Esto conformará las materias primas para identificar palabras o frases.

Ahora bien, para digitalizar el documento en sí, lo más procedente es utilizar un escáner. Estos disponen de un captor de imagen lineal a través de un CCD, y su tecnología es incluso anterior a la de las cámaras digitales. Nos permiten enormes ventajas en los casos donde debamos almacenar o transmitir telemáticamente copias de documentos en base papel.

Ubuntu es compatible con muchos de estos escáners, sobre todos aquellos que emplean la vieja tecnología de software TWAIN. Gracias a esto, podremos escanear página a página. Si nuestras exigencias son mayores, bien podríamos hacernos con un escáner con alimentador automático de documentos (ADF). Estos modelos constan de rodillos motorizados similares a las de una impresora, y van tomando las hojas una tras otras para sumarlas a un documento multipágina informatizado (normalmente de formato PDF). Varios modelos pueden incluso escanear en doble fax (duplex).

Una de las opción es utilizar el programa escaneador Simple Scan, cuya última versión tiene capacidad de conformar documentos PDF multipágina y también puede hacer funcionar escáneres provistos de alimentador de documentos. Esto facilita mucho el escaneado de pilas de hojas A4 ya impresas. Simplemente se colocan en el orden necesario en el alimentador de documentos y se usa la función Escanear.

Pero una cosa es escanear un documento y registrarlo digitalmente como una imagen de un texto, y otra cosa es que dicha imagen pueda ser editado como un texto digital.

Sin embargo no podemos dormirnos en los laureles: en política y en software todo ha de mejorarse y simplficarse, si es posible hacerlo. Es sabido que las letras no siempre son iguales, existen distintas tipografías, los documentos a escanear podrían tener imperfecciones, estar desalineados o torcidos, y esto puede fácilmente engañar a un software OCR como el ABBYY FineReader, OmniPage Ultimate, ReadIris, etc.

GNU con Linux no podía mantenerse ante tal oprobio. Es por ello que se ha desarrollado el programa gImageReader, el cual está pensado para suplir estos inconvenientes desde la Terminal. Gracias a ello se puede reconstruir un texto formando su equivalente digital.

Para instalar su versión en castellano abrimos una terminal con Ctrl+Alt+T e ingresamos el siguiente comando de organización:

sudo apt-get install gimagereader tesseract-ocr-spa

Tras unos breves instantes se habrá descargado la paquetería necesaria para operar. Una vez instalado, podremos abrir el programa desde Aplicaciones /  Gráficos / gImageReader.

gImageReader nos presenta una potente interfaz gráfica que sirve tanto para escanear documentos como para realizar el reconocimiento óptico de caracteres (OCR) en varias modalidades. Con él podemos pasar un documento de imagen o PDF a texto, y editarlo nuevamente ahorrando el tiempo de retipeo.

El programa detectará nuestro escáner y se abirá, presentándonos su interfaz a tres paneles y una barra de tareas en la parte superior.
El OCR depende de muchas variables maquinales, por lo cual su ingeniería nos presenta realmente con varias maneras de trabajar a fin de lograr un resultado lo más confiable posible. Desde la barra superior podremos definir instantáneamente el tipo de salida que queremos obtener por medio del programa. Tendremos dos opciones en un campo desplegable: Texto simple (que se encarga de conformar un archivo de texto independiente) o bien hOCR, PDF, que se encarga de incrustar el texto digitalizado por encima de las imágenes escaneadas de la página de un documento PDF.

Preparación del documento
El panel izquierdo es el Panel de Entrada y define el origen del texto a trabajar. cuenta con dos pestañas: Fichero y Adquirir, que bien podrían llamarse Importar y Escanear, pues cumplen dichas funciones.

Si ya contamos archivos gráficos elaborados para el trabajo podremos importarlos directamente al proyecto de reconocimiento en gImageReader usando esta función.
  • Podemos agregar los ficheros individualmente a la lista (lo que sería ideal), o...
  • ...podemos importar directamente un archivo PDF que ya contenga todas las páginas ya escaneadas en él..
En cambio, si quisiéramos armar el documento desde cero y manejar nuestro escáner, podremos utilizar la función de escaneo de documentos desde la pestaña Adquirir. Como es usual, en esta pestaña podremos ajustar la resolución del escáner (se recomienda unos 300 dpi para lograr los mejores resultados).

También podremos definir usar escaneo a color, escala de grises o blanco y negro (más rápido). En el caso de hojas impresas individuales, elegir 300 dpi en blanco y negro suele dar excelentes resultados. En el libros gruesos suele ser bueno usar 600dpi en escala de grises, pero también pueden lograrse muy buenos resultados en texto si usamos blanco y negro.


Para contar con la mayor fiabilidad posible, dependiendo del resultado del escaneo y tipo de papel del documento, podría ser necesario corregir las imágenes. gImageRead nos permite hacer estos ajustes de forma global a todas las páginas a la vez, por lo cual nos ahorra muchísimo tiempo. El botón de la flor * nos permite elegir los Controles de Imagen. Es importante lograr que el texto esté idealmente en negro oscuro sobre fondo blanco puro, a fin de lograr los mejores resultados. Ello lo hacemos incrementando el contraste y tal vez disminuyendo un poco el brillo de la imagen (dependiendo de cómo haya sido escaneada).


Reconocimento del Texto
En el panel superior tendremos distintas herramientas según el modo de trabajo que hayamos elegido. Este debe pensarse en base al proyecto que tengamos que afrontar. Podemos elegir dos modos de trabajo: Sólo Texto o hOCR, PDF. Solo texto nos proveerá el resultado del OCR directamente en el panel derecho de salida. En cambio hOCR, PDF incrusta el texto reconocido encima de una copia del propio documento PDF.

Una vez que hemos definido esto, podremos comenzar la tarea de reconocimiento OCR. Esto podremos hacerlo de dos maneras:
  • Automatizada Multiple Página 
  • Reconocer Selección página a página.
La función de reconocimiento automatizado de las imágenes será muy efectivo si tenemos documentos multipáginas que han sido escaneados a través de sus páginas individuales. Ahorra mucho tiempo, pero sólo en este caso ideal.
Sin embargo, en los casos más complejos y monumentales, puede ser que debamos reconocer el texto de un libro encuadernadoo  fotocopiado en un PDF. En tal caso se recomienda la tarea página a página.

Si ya tenemos el documento multipágina importado, podremos utilizar los botones + y - para avanzar y retroceder entre las páginas que lo conforman. Una vez que estamos en la página que deseamos reconocer, lo más sencillo es presionar el botón Autodetectar Disposición (el botón de la "varita mágica"). Este ajustará digitalmente el enderezamiento de la página escaneada a fin de que el texto quede derecho, y nos presentará tentativamente con varios "marcos azules" que contendrán las zonas de texto reconocido.

Si elegimos el modo de trabajo Solo Texto, podremos hacer clic con el botón derecho del ratón sobre el marco, y elegir la opción Reconocer. El texto se explorará y se agregará al Panel de Salida.
Este panel recibirá el texto de resultado, y suele estar a localizado en la parte derecha de gImageRead, pero también podemos configuralo desde el botón Propiedades para que se localice por debajo del texto. Generalmente el programa agrega por delante del texto reconocido la referencia "[Archivo: xxxx]" a fin de indicar de donde salió.


Luego pasamos a la siguiente página con el botón + y volvemos a hacer lo mismo. Es importante saber que podemos redimensionar el marco azul de reconocimiento simplemente tomándolo de sus esquinas ajustando su tamaño como si de una ventana de Ubuntu se tratara. Asimismo, podremos quitar marcos innecesarios haciendo clic con botón derecho sobre ellos y eligiendo la opción Borrar (por ejemplo, para evitar que se agreguen al texto los encabezados o pie de páginas).

Si tuviésemos que sumar más marcos en la página (por ejemplo, para escanear una segunda columna de texto o reconocer dos páginas escaneadas al unísono), podremos hacerlo al mantener presionada la tecla Ctrl mientras hacemos clic con botón derecho del ratón y arrastramos en diagonal, para crear y dimensionar el nuevo marco. Cada marco tiene un orden de reconocimiento, indicado en su esquina superior izquierda, el cual se utilizará para ordenar el escaneo. Normalmente gImageRead los dispone en el orden lógico (de arriba a abajo y de izquierda a derecha).

gImageReader cuenta de un editor de texto sencillo que reside en el mismo Panel de Salida. Este nos servirá para evaluar y en caso necesario, reorganizar el texto reconocido resultante. Todos los marcos de texto que vayamos reconociendo se agregarán a continuación (pero también podremos cambiar esto y elegir - por ejemplo - que se agregue donde está colocado el cursor).

Podremos guardar el contenido del Panel de Salida de este archivo presionando Guardar Salida.

Indudablemente que en el caso de escaneo con libros, lo óptimo es evitar trabajar con su contenido entero, sino que es más práctico realizar la tarea de OCR por capítulos. Luego podremos unificar el resultado en cualquier procesador de texto si lo necesitamos. De esta manera tendremos mayor control en el trabajo.

Sin duda es mucho menor trabajo que reescribir todo un texto monumental. Nada impide que además de guardarlo, copiemos el resultado para pegarlo en otro editor de texto.


El documento digitalizado puede fomatearse de manera mucho mas sencilla.

Realizar reconocimiento OCR e incrustarlo en un PDF desde la Terminal
Como os he indicado, gImageReader cuenta con la funcionalidad de incrustar el texto resultante del reconocimiento OCR en un archivo PDF de salida. Esto suele ser óptimo en muchos casos. Pero también podremos hacer este laborioso trabajo desde la terminal, lo cual puede ser interesante para operar a través de redes en un servidor que se encarga de este tipo de trabajos documentales.

Por ello, en las ocasiones donde el trabajo no es tan laborioso como en el ejemplo anterior porque contamos ya con un PDF multipágina cuyas páginas están bien escaneadas de manera individual, bien podremos recurrir al reconocimiento automático desde la Terminal. Para ello utilizaremos el programa ocrmypdf. Este, como su nombre lo indica, se encarga de explorar las páginas y agregarle el reconocimiento de texto al mismo libro. Es útil si las páginas tienen un diseño simple, y si las páginas del documento se escanearon individualmente.

Para instalarlo ingresamos:

sudo apt install parallel ocrmypdf

Y luego utilizamos la siguiente sintaxis:

ocrmypdf archivooriginal.pdf archivodestino.pdf

El proceso es bastante intensivo con la CPU. El programa irá reconociendo página por página, y las incrustara en archivodestino.pdf.

También tenemos pdfsandwich de Tobias Eize, que se encarga de lo mismo y suele tener mejor resultado. Lo instalamos con:

wget https://sourceforge.net/projects/pdfsandwich/files/pdfsandwich%200.1.7/pdfsandwich_0.1.7_amd64.deb ;

sudo dpkg -i pdfsandwich_0.1.7_amd64.deb

sudo apt install -f


Y podremos realizar la tarea desde una terminal. Podremos encontrar su documentación en la web oficial. Por ejemplo, para un PDF a dos páginas como el mostrado anteriormente podríamos ingresar:

pdfsandwich -lang spa -layout double cfk_sinceramente.pdf

viernes, 26 de abril de 2019

¿Cómo instalo SuperTuxKart 1.0 en Ubuntu?

¡Trabajadores!

Conducir es un arte, y mucho más si lo hacemos tridimensionalmente en un universo lúdico para toda la familia.

Para ello podremos jugar a una de las joyas lúdicas del software libre, el SuperTuxKart. Se trata de un vistoso juego tridimensioanl de coches liberado bajo GPLv3, libre y multiplataforma. Después de diecinueve años de divertido desarrollo, la versión 1.0 de este ya clásico del software libre es una Realidad Efectiva.
La mecánica gráfica está en cierta medida inspirada en clásicos como el $uper Mario Kart de Nint€ndo. Como aquel, debemos correr contra otros jugadores reales o virtuales, e ser habilidosos. Podremos escoger entre distintas modalidades que hacen menos repetitivo al juego. La variedad normal es la carrera sola, pero también podremos jugar contrarreloj, por equipos, llevar banderas, seguir al líder, fulbito en auto, etc. La versión 1.0 incorpora una modalidad de juego por Internet.


De momento, en los repositorios oficiales de Ubuntu encontraremos la versión 0.9.3, que podríamos instalar con un simple comando en la terminal: sudo apt install supertuxkart. Sin embargo, si deseamos contar con la versión definitiva 1.0 ya compilada, por ahora tenemos que descargarla, descomprimirla e instalarla a mano.

Esto podría parecer difícil a un neófito, pero gracias al Justicialismo os enseñaré paternalmente cómo instarlarlo y cómo dar de alta un usuario para jugar online en todo el mundo.

En primer lugar abrimos una terminal mediante Ctrl+Alt+T e ingresamos el siguiente bloque de comandos de organización, y presionamos Enter:

cd ~/Descargas/ ;
wget https://sourceforge.net/projects/supertuxkart/files/SuperTuxKart/1.0/supertuxkart-1.0-linux.tar.xz ;
tar -xJf supertuxkart-1.0-linux.tar.xz ;
mv ~/Descargas/supertuxkart-1.0-linux/ ~/.supertuxkart-1.0-linux/ ;


Esto descargará el juego (591mb), lo descomprimirá dentro de una carpeta oculta dentro de nuestra propia carpeta de usuario.

Ejecutar el juego
Si hicimos todo lo anterior, bien podríamos ejecutar SuperTuxKart desde la terminal, mediante los siguientes comandos:

cd ~/.supertuxkart-1.0-linux/
./run_game.sh

...sin embargo, es mucho más prolijo crear un Lanzador y usar este para ejecutar el juego desde el entorno gráfico toda vez que queramos. Para hacer realidad efectiva este proceder hacemos clic con el botón derecho del ratón en el Panel de Aplicaciones y elegimos Editar menús... Se abrirá la ventana Menú Principal; en su panel izquierdo seleccionamos la categoría Juegos y presionamos el botón +Elemento Nuevo. Esto desplegará a su vez la ventana Crear Lanzador, en la cual debemos asegurarnos de llenar los campos correspondientes al lanzador. Especialmente, en su campo "Comando:" ingresamos la ruta del ejecutable del juego: /home/usuario/.supertuxkart-1.0-linux/run_game.sh (naturalmente reemplazamos usuario por nuestro propio nombre de usuario). Finalmente presionamos el botón Aceptar.

Ahora ya podremos ingresar al juego desde Aplicaciones / Juegos / SuperTuxKart 1.0.


Configurar nuestro usuario

Lo primero es aceptar los términos y condiciones del Juego. Naturalmente podremos omitir esto y jugar en una red local.

Para usar SuperTuxKart no se necesita tener un usuario de su servidor en internet, pero podríamos querer crear uno para tener acceso a juegos en internet con otros jugadores, descargar contenido adicional etcétera. El servidor tomará registro de nuestro puntaje online, con el cual podremos desbloquear autos nuevos, personajes distintos, participar de eventos y copas, etc. Nada de esto es absolutamente necesario, pero puede ser divertido.

Podremos elegir utilizar una cuenta ya creada, pero si no tenemos porque es la primera vez que utilizamos los servidores, podremos crear uno a través de la pestaña Nueva Cuenta en Línea. En tal caso antes de entrar al mismo se nos solicitará aceptar las condiciones para su uso online.

Acto seguido hemos de proveer una dirección de correo electrónico, indicando un nombre de usuario que queramos utilizar junto con una contraseña para el servidor,.

Al presionar el botón Ok se nos enviará a nuestra casilla de correo electrónico el típico correo para dar de alta nuestro usuario de SuperTuxKart. Dentro de este correo electrónico, debemos confirmar el alta en el servidor presionando en "Confirm Email Address"...
...esto nos dirigirá a la web de confirmación y debería indicarnos en verde que nuestra cuenta ha sido creada satisfactoriamente mediante el mensaje "Your account has been activated".

De esta manera ya tendremos asignado nuestro usuario para jugar SuperTuxKart online. Una vez que hayamos confirmado la cuenta, podremos conectarnos de forma automática (o manual, si lo preferimos), al servidor de SuperTuxKart.

Configurar el juego
SuperTuxKart nos permite elegir un avatar entre múltiples personajes, incluyendo las mascotas más simpáticas del Mundo Libre (Tux, Bestie, etc). También podremos personalizar el color y modelo de nuestro autito para jugar online.
Presionando el botón de la llave de tuercas tendremos acceso a las opciones del programa. Entre ellas el control del sonido, y en la parte gráfica podremos manejar la resolución de pantalla, su relación de aspecto, o si queremos usar pantalla completa o el juego en una ventana. Para hacer efectivo los cambios de pantalla completa debemos reiniciar el juego. También la respuesta de joystick o teclas.



Jugar a SuperTuxKart
La pantalla inicial del juego es gráfica y musical.

La pantalla principal nos permitirá encontrarnos con los modos de juego. El modo Historia nos permite seguir una campaña de carreras que puede ser ideal para empezar a practicar. Eligiendo el volante podremos jugar solos contra personajes manejados por la computadora. Si escogemos los dos volantes podremos jugar en red local. De esta manera podremos armar divertidas carreras multijugador a través de un router, donde cada uno manejará un coche desde su computadora.


Una vez elegida la modalidad, podremos especificar nuestra elección entre distintos tipos de vehículos (los cuales podremos configurar en ciertos parámetros de acuerdo a nuestro modo de juego o las características del circuito). Antes de jugar podremos elegir el kart, configurar sus parámetros, y el personaje que lo tripule.

Como todo juego de carreras, tendremos un semáforo que nos de la largada, y podremos movernos utilizando las flechas del cursor. En el camino podremos encontrar ítems mágicos a la Mario Kart, que nos darán protección antichoque, velocidad, tiros para molestar a los contrincantes, puntaje adicional, saltos, etc. Con la barra espaciadora podremos activar estos ítems.
Usando la función Nitro. nuestro personaje pordrá ganar velocidad o incluso  hacer drifting como si de un enloquecido Rápido y Furioso del software libre se tratase.

Si estamos conectados con un usuario online, bien podremos descargar material adicional. Para ello debemos presionar el botón del mundo. Esto nos permitirá elegir la categoría de descarga (karts, circuitos, o arenas). Los circuitos constan de una pista individual, en tanto que las arenas son varios lugares de juego.

Algunos materiales requieren lograr puntajes u objetivos online, pero todos son gratuitos. Podremos ver una clasificación de los contenidos y descargarlos simplemente presionando en Instalar.

jueves, 25 de abril de 2019

¿Cómo puedo grabar con mi webcam desde la terminal?

Durante la década de 1960 Juan Perón se dedicó a analizar los problemas económicos que habían llevado a desolar la matriz productiva de la Nación, y en vista de cómo resolverlos explicó también cómo capturar fotografías y videos desde la Terminal de Ubuntu.

¡Compañeros!

La oligarquía, coaligada con la sinarquía nacional, ha impuesto para nuestro Pueblo la más abyecta de las condiciones. La destrucción de la economía y de la capacidad productiva es sólo uno de los desaciertos que han llevado a cabo, pero su impericia no ha más que multiplicado sus efectos y exponenciado sus resultados negativos. Esto nos obliga a plantear un plan de lucha que debe ser incordioso con aquellos que ocupan nuestra Nación, y la ponen al servicio de los imperialismos foráneos.

Nuestro capital es el Alma de los Hombres, y entre ellos, de los trabajadores.  Durante estos años hemos ocupado sus corazones y mentes, que son más importantes que el territorio.  Sin embargo, no podemos descuidar las vertientes naturales en las que hemos de presentar contienda.  Nuestro territorio representa un punto de asidero que no podemos soslayar. La acción de lucha la debemos emprender con gran agilidad, pues el peso de la misma se multiplicará de acuerdo a la velocidad con que hagamos

Durante diez años nuestro gobierno posibilitó todo tipo de consideraciones y planificaciones encuadradas bajo la doctrina Justicialista a fin de permitir la reducción del precio de los alimentos y consumibles. El caso de la leche fluida fue un caso especial, pues se dispuso a través del Ministerio de Transporte el descuento del flete ferroviario, en tanto tal producto constituye la materia prima de toda una cadena productiva de carácter fundamental para los habitantes de nuestra Nación.
En nuestro país - bendecido por sus amplias extensiones - no podía dejar de ser una tarea de Liberación Nacional reducir el precio de la leche hasta un centavo por litro...

Todo esto no se podría haber hecho entonces si no existiese una voluntad creadora capaz de plantear una reforma estructural profundamente pensada y armoniosamente ejecutada. Esto es lo que - en estas condiciones actuales debemos repetir. Naturalmente, no lo haremos a la usanza de los viejos planes anteriores, pues las condiciones del día son en muchos casos, diferentes e incluso más gravosas. Lo que no hemos de cejar es en tener una férrea voluntad de presentar al Pueblo con instrumentos de Control y de Acción a través de un cuerpo de leyes que impida a la oligarquía accionar sobre la economía, reformando las fuerzas del Estado para que ésta no tenga más opción que quedar al servicio del Pueblo.
Este cuerpo de leyes ya está en consideración por nuestros Organismos, que han trabajado en ellos durante largos años. Lo que será necesario es imponerlos por la acción y - naturalmente - defenderlos, porque no sólo esto representa el bienestar del Pueblo, sino la existencia de una Patria Justa, Libre y Soberana.

En Ubuntu también contamos con estos elementos de acción y de control: las Terminales. Sabemos que estas pueden ser gráficas o de texto. Estos nos sirven para operar de manera eficiente para todos los ámbitos de trabajo computado que quisiéramos proponernos.

Veamos el ejemplo de la utilización de una cámara web. No quedan dudas para nadie que - para operar la Webcam - lo natural es operarla a través de un simple programa que utilice una Interfaz Gráfica de Usuario (GUI), y hacerlo desde un escritorio gráfico. Esto es así pues la terminal presenta, en sí misma, una salida gráfica. Una de las aplicaciones más conocidas para este menester es Cheese, que suele venir instalado en Ubuntu. Si no lo tuviésemos instalado podríamos hacerlo abriendo una terminal con Ctrl+Alt+T e ingresando el siguiente Comando de Organización:

sudo apt install cheese

Conforme se haya descargado e instalado la paquetería, lo ejecutamos con Aplicaciones / Video y Sonido / Cheese.


La interfaz de uso es altamente sencilla, y nos permite realizar capturas de video, regular la resolución de los mismos, etc. Asimismo, provee un limitado control de imagen por medio de los parámetros de brillo, contraste, tono, así como el empleo del balance de blancos automático. Si la cámara web dispone de micrófono incorporado, registrará el sonido en la grabación, aunque carece de por sí de control de ganancia, y este debe regularse mediante el control de entrada de audio del sistema.

Es de notar que algunas webcams cuentan con "función  flash", por medio de luces LEDs. Cheese puede controlar directamente esta funcionalidad.

¿Pero qué sucede si deseamos grabar videos desde la terminal de Ubuntu? En tal caso, habremos de utilizar el programa video4linux2, así como el códec ffmpeg. Si no los tuviésemos ingresamos:

sudo apt install video4linux2 ffmpeg

Debemos saber que nuestro sistema asigna un archivo de dispositivo a nuestra cámara web. Normalmente este suele ser /dev/video0, pero si existen varios dispositivos de captura recibirá /dev/video1, /dev/video2, etcétera.

Gracias a ello podremos estructurar un comando que nos permita hacer capturas utilizando "a mano" nuestra Terminal. Para realizar una fotografía podríamos ingresar:

 ffmpeg -f video4linux2 -i /dev/video0 -vframes 1 ~/foto.jpg

Si lo que quisiéramos fuese grabar un video en una resolución de 640x480 (la clásica calidad VGA, presente prácticamente en todas las cámaras web) y en formato MP4, ingresamos

ffmpeg -f video4linux2 -s 640x480 -i /dev/video0 -f mp4 ~/video.mp4

El sistema comenzará a grabar el video y debería mostrar el status de grabación línea a línea.

Para interrumpir la grabación, debemos presionar dos veces Ctrl+c (la primera vez para detener la grabación con video4linux2 y la segunda vez para abandonar el programa ffmpeg). El resultado deberia quedar almacenado en el archivo ~/video.mp4.

Si en cambio, quisieramos un archivo de baja calidad en formato MP4, y que se grabe en nuestra carpeta /tmp del sistema (a fin de que se borre al reiniciar), podremos ingresar:

ffmpeg -f video4linux2 -s 320x200 -i /dev/video0 -f mp4 ~/tmp/video.mp4

En lugar del MP4 también podremos utilizar el contenedor nativo, que es compatible, el m4v. Simplemente debemos reemplazar tal estamento en el comando y en la extensión del archivo de destino para que quede webcam.m4v.

Debemos tener en cuenta que generalmente no podremos superar la resolución que nuestra cámara es capaz de mostrar. Los modelos HD pueden emplear 1280x720 u 800x600, aunque también existen múltiplos superiores a esta resolución. Las resoluciones mínimas suelen ser de 640x480, 352x288, y las widescreen 640x360,  176x144.

miércoles, 24 de abril de 2019

¿Cómo calibro un acelerómetro integrado en Ubuntu?

En los cursos de conducción para la dirigencia, Juan Perón ponía a las claras la conducta que debía seguirse como principio rector para el posicionamiento político, y explicaba cómo calibrar un acelerómetro en Ubuntu.

(...)
En estos tiempos que corren es innegable que la política no puede hacerse de manera improvisada. Tal condición perniciosa sólo puede estar provocada por un estado de cosas absolutamente temporal, y debe ser remediado de la forma más inmediata posible. Para ser efectivo en este arte que es el de la Conducción, se requieren hombres que estén preparados para conducir y que sepan primordialmente y en todo momento dónde están parados y cómo están colocados en el terreno de la acción. Esto les permitirá llevar a cabo los grandes objetivos que nos hemos planteado: la Felicidad del Pueblo y la Grandeza de la Nación. Tales premisas son las que fundamenten nuestro accionar y no deben nunca soslayarse.
Para que ello tenga éxito, nuestro Movimiento es sensible a todas estas cosas, y lo es así pues nuestro sistema operativo Ubuntu es totalmente flexible y capaz de gestionar acelerómetros digitales para asistirnos en las tareas que lo así lo requieran.
Un ejemplo, como decía Napoleón, suele aclararlo todo. Cuento en mi notebook con un chip integrado ST LIS3LV02DL. Se trata de un giro-acelerómetro lineal montado en un chip LGA, que proporciona una salida digital de acceso serial. El dispositivo completo está conformado por un elemento sensor MEMS y una interfaz de control microelectrónico, integrados en un chip de 4,5 x 7,5 x 1 mm.
Opera en tres ejes, dos que sustentan un inclinómetro de dos ejes y el tercero suple la función del acelerómetro, con una capacidad de diseño de +/- 6G (aunque normalmente limitado a +/- 2G). Suele venir integrado directamente en las placas madre de distinto tipos de dispositivos, incluyendo smartphones y computadoras portátiles.

Un giroacelerómetro como este puede cumplir varias funciones que se nos ocurran. Puede operar directamente como un joystick a través de inclinación del dispositivo, como un inclinómetro para detectar la orientación del dispositivo y realizar distintos eventos en consecuencia (por ejemplo, reorientar una pantalla). Puede operar como giróscopo o permitir ciertas aplicaciones de navegación inercial. También podría utilizarse para disparar determinados eventos de acuerdo a desplazamientos en ciertos ejes, interrumpir señales o emitir alertas de distinto tipo en el caso de caída, robo, etc.

Ubuntu, detecta a este y otros acelerómetros como si se tratase de un dispositivo de entrada tipo joystick de tres ejes, y les asigna a un dispositivo de hardware de entrada acorde (normalmente sería /dev/input/js0 si está integrado en la placa madre del equipo).

Pues bien, el LIS3LV02DL en particular viene calibrado de fábrica y no debería requerir puesta a punto alguna. Sin embargo, puede que en ocasiones sea demasiado sensible en su ajuste paramétrico. Para ello necesitamos instalar una pequeña aplicación destinada a calibrar joysticks y otros dispositivos basados en control de ejes: el jstest-gtk.

Para ello abrimos una terminal con Ctrl+Alt+T e ingresamos el siguiente comando de organización:

sudo apt install jstest-gtk

El sistema nos solicitará nuestra contraseña y en breves segundos instalará la paquetería requerida.

Podremos iniciar el programa desde Aplicaciones / Herramientas de Sistema / jstest-gtk.

Al iniciar el sistema nos indicará qué dispositivos de ejes tenemos conectados al sistema. En el caso de que nuestro equipo cuente con un acelerómetro nos lo listará.

Al abrir la pantalla se nos presentará los indicadores de los ejes del acelerómetro. Si el dispositivo está centrado y nivelado, deberían estar en el centro. Si alguno de los ejes está corrido, deberíamos apreciarlo en la ventana también.
Para calibrarlo debemos presionar el botón Calibration. Los ejes de calibración consisten en una ventana simple que nos da los valores que registra nuestro dispositivo de ejes, sin realizar cambio alguno en ellos. Se los divide en Rango y Zona Muerta (o centro).

En el caso del LIS3LV02DL y otros acelerómetros similares, los valores iniciales de calibración son chequeados en fábrica en condición de gravedad 0, y son almacenados en una memoria ROM integrada al mismo acelerómetro. Estos son los valores inciales que se mostrarán en la ventana de calibración:
 

Para calibrar nuestro propio valor, debemos presionar el botón Start Calibration. Se presentará la pantalla del Asistente de Calibración ("CalibrationWizard") que nos solicita que rotemos nuestro dispositivo en todos los 3 ejes.

Para ello debemos rotarlo sobre su eje horizontal y sobre un eje vertical. Naturalmente que en el caso de un dispositivo portátil pequeño esto es sencillo.
Debemos inclinarla en el aire hasta que quede boca abajo y luego retornarla a su posición original, hacia un lado y hacia el otro. Luego podemos voltearla sobre si misma en sentido longitudinal repitiendo el mismo procedimiento. Esto serña suficiente para calibrar los ejes X e Y.

Si es una computadora portátil más o menos grande debemos tener algo de cuidado, recordemos que que no queremos romperla, sólo calibrar su acelerómetro integrado.

En cuanto al eje Z hace referencia a la aceleración (o "G") del acelerómetro propiamente dicho. El LIS3LV02DL normalmente opera entre -2 y +2Gs, pero esto no significa que querramos someter nuestro dispositivo a tal carga G (implica una caída desde una altura superior al metro). Podemos sacudirlo con algo de energía pero con cuidado en sentido lateral u horizontal y con ello será suficiente para lograr lecturas útiles.

Una vez que esté hayamos hecho esto restituimos el dispositivo a la posición nivelada en la mesa (posición cero), y presionamos el botón Aceptar para detener la calibración.

Con esto los ejes deberían responder adecuadamente cuando inclinamos el dispositivo, como si de un gimbal se tratara. Si queremos revertir lo realizado, podremos presionar el botón Revertir.

Si los ejes se presentan erráticos ("bailan" o "tiemblan" mucho alrededor del centro) podríamos incrementar los valores positivos y negativos de los parámetros "Center", que corresponden a la zona muerta de medición. Por ejemplo, en este caso se adoptó una zona muerta entre +/-80 en el eje X y +/-90 en el eje Y. Debemos notar que si ambos valores se encuentran en rango positivo, se anula la zona muerta.
Esto debería permitirnos lograr un centro absolutamente nivelado y firme en el inclinómetro (naturalmente, siempre que el dispositivo se encuentre completamente nivelado en la mesa, por ejemplo).

En ambos casos debemos establecer un mínimo y un máximo que pueda alcanzar los potenciómetros del dispositivo (los sensores del acelerómetro en este caso). También podremos tildar funciones de inversión para cada eje.

Los valores se cambian y aplican en el mismo instante que los modificamos. No hay necesidad de hacer clic en otro lado o hacer nada mas para aplicar los cambios.

Se lanza la Huayra Linux 4.0 Beta

Se ha publicado la versión 4.0 "beta" (para evaluación) del sistema operativo GNU/Linux Huayra.
Huayra es un sistema operativo libre concebido para el plan de informatización educativa Conectar Igualdad. Fue desarrollado en Argentina por el Centro Nacional de Investigación y Desarrollo de Tecnologías Libres (CENITAL), siguiendo los principios y libertades del software libre. Puede ser utilizado, estudiado, modificado y redistribuido.

El CENITAL realizó varios ciclos de mejora logrando la versión 3.2 de Huayra, en arquitecturas de 32 y de 64 bits. El desarrollo del mismo fue luego trasladado a Educ.ar SE, siendo esta la primera versión publicada por dicho organismo en cuatro años.
Huayra GNU/Linux se basa en Debian, una distribución robusta y reconocida, cuenta con más de 37 mil programas de software libres. A su vez ha conformado una gran comunidad de voluntarios a nivel mundial y posee un sistema de control de calidad fiable y bien documentado.

Podremos descargar la versión "testing" de 64 bits desde aquí.

martes, 23 de abril de 2019

Cómo corrijo el parpadeo de pantalla HDMI y el error "drm:intel_pipe_update_end [i915]] *ERROR*" en Ubuntu?

Desde Madrid, Juan Perón direccionaba la política para posicionar al Justicialismo en el puesto de Conducción que le correspondía frente a la ignominia proscriptora de una camarilla sin Patria ni Bandera. En una de sus epístolas expone a la dirigencia Sindical como proceder en la coyuntura y cómo solucionar el parpadeo de las pantallas HDMI en equipos con adaptador Intel Graphics en Ubuntu.


(...)
Me parece magnífico su proceder en esta emergencia política. Nuestros enemigos pierden diariamente prestigio pero eso sería intrascendente si nosotros no supiéramos aprovecharlo con medidas apropiadas. Creo que nuestro proceder debe ajustarse a una conducta prudente hacia los sectores que sean proclives a incorporarse y de lucha efectiva contra los sectores contumaces que sabemos no han de variar.

Desde que caímos en 1955 ha habido varias clases de persona que trabajaron para el peronismo: primero, los peronistas leales y abnegados que siguieron firmes, segundo, los gorilas que con sus desatinos nos favorecieron y, tercero, los independientes a los cuales los convencieron los nuevos hechos en los que florecieron las barbaridades.

De un tiempo a esta parte me han comenzado a llegar insinuaciones y toqueteos por diversos conductos sobre la posibilidad de arreglos que permitan encarar las soluciones de fondo. Esto ha sucedido tanto de parte del gobierno como de algún sector militar de los que están en el candelero. Naturalmente que yo soy 'zorro baleado' y desde lejos la olfateo, de manera que me he limitado a contestar con el memorándum que le adjunto.

Frente a estos intentos será conveniente mantener una conducta muy prudente y si se hace cualquier cosa, ahí será ad referendum mío. Según mis informaciones, el caso de un golpe de Estado azul puede ser posible. Nosotros debemos tener mucho cuidado, pues no debemos engañarnos ni con los azules ni con los demás. Illia no puede gobernar porque le falta el apoyo popular indispensable, pero si los azules dan su golpe, aparte que no creo que sean mejores que Illia, tampoco tendrán el apoyo del pueblo, aparte de que tendrán la oposición de los que están actualmente en el gobierno. Con pies de plomo sonriendo posibilidades pero sin 'efectividades conducentes'.

Si algunos intentan acercamientos, hay que aceptarlos porque en el tomar no hay engaño. Si otros pretenden arreglos, hay 'que traerlos al pie' porque yo sé cómo convencerlos. Muchas veces una buena negociación vale por una guerra y yo estoy en las mejores condiciones para negociar. Pero cualquier negociación ha de ser pública y a los ojos de todo el país. Nada de secretos, porque nuestra actitud y la de ellos no pueden contener nada inconfesable. Si buscamos una solución para el país, el primero en conocer esa solución debe ser el país.

Ahora no es momento de aflojar sino de intensificar la lucha, pero para que esta sea realmente efectiva no necesita ser violenta sino inteligentemente realizada. Estamos llegando a los momentos decisivos de una acción que ya dura diez años y en la que nosotros hemos sido yunque, jamás martillo. Hay que buscar aliados, la política se hace precisamente con los hombres que se desplazan de un lado a otro.


Si usamos nuestro hardware de video Intel en procesadores tipo Skylake, podríamos encontrar ciertos reportes de error en el sistema.  En particular, cuando ingresamos en la terminal el comando:

dmesg | grep 'drm'

...podría ser que encontremos listado estos errores:

[drm:intel_pipe_update_end [i915]] *ERROR* Atomic update failure on pipe A

Este error puede presentarse en portátiles HP Pavilion 15 con tecnología de video híbrida, y similares, al activar su adaptador de video Intel i915 en conjunto con certas pantallas externas HDMI. En tal caso, podríamos notar parpadeo en la pantalla externa HDMI.

Si este parpadeo y errores de video no se solucionan cambiando la velocidad de refresco de las pantallas, podremos rastrearlo a las infames características "DRM".

Afortunadamente podremos solucionar el error cambiando la configuración interna del controlador de video Intel, en particular su variable "Panel Self Refresh" (Autorrefresco del Panel).

Podremos proceder a modificar esta opción desde la terminal de nuestro sistema GNU con Linux por medio del un editor de texto. Para ello ingresamos:

sudo nano /sys/module/i915/parameters/enable_psr

El sistema nos solicitará nuestra contraseña, y abrirá el editor GNU Nano, con cargando en memoria el archivo de configuración específico. Este archivo es ínfimo: sólo contiene un número que define si la opción enable_psr está activada ("1") o si la misma está desactivada ("0"). Normalmente estará activada, por lo cual el archivo debería contener un 1. Lo borramos y modificamos para que diga 0, de la siguiente manera.
Luego guardamos los cambios con Ctrl+o y salimos del editor GNU Nano con Ctrl+x. Esto desactivará la función de autorrefresco del panel.

Para hacer efectivo el cambio, debemos apagar el equipo y volverlo a encender (no sirve solo reiniciarlo). Si deseamos apagar el equipo desde la terminal podremos hacerlo mediante el comando:

sudo poweroff

Al re-encender el equipo, el problema debería estar solucionado.

Si por cualquier motivo tuviésemos que reactivar la opción enable_psr, repetimos los pasos y dentro del fichero enable_psr cambiamos el 0 por el 1.

sábado, 20 de abril de 2019

¿Cómo instalo o actualizo el controlador para el adaptador Wifi Intel Dual Band Wireless AC 3165 en Ubuntu?

Desde la célebre Secretaría de Trabajo y Previsión, Juan Perón emitía proclamas que esclarecían a los trabajadores sobre los derechos que debían exigir. Entre ellos cómo lograr una correcta conectividad Wifi y Bluetooth en Ubuntu con el adaptador Intel Dual Band AC 3165 en Ubuntu.

El supremo interés de la patria, que es el interés de sus hijos, exige del estado moderno una función rectora y reguladora. Quiero llevarles desde esta Secretaría, al ánimo de los trabajadores argentinos el orgullo de pertenecer a una Patria fuerte y generosa, donde la justicia y la ecuanimidad reinen soberanas, y donde el temor a las influencias espúreas no puedan desnaturalizar la alegría de vivir, y de crear.

Para saldar la gran deuda que tenemos con las masas sufridas y virtuosas, hemos de apelar a la unión de todos los argentinos. Sembrar esta simiente en el fértil campo de los trabajadores de mi tierra, que estoy convencido entienden y comparten mi verdad con esa extraordinaria intuición que poseen las masas cuando se las guía con lealtad y honradez.

La pensión a la invalidez o a la vejez no es una limosna, es un Derecho que el hombre se gana trabajando. Sobre todo en países como este, donde sectores privilegiados mantuvieron su estándar de vida pagando salarios exiguos, injuriantes.

Es por lo tanto aquí donde más derecho tiene el obrero a exigir que la organización estatal le asegure una vejez digna. Conocemos vuestros pesares y vuestras desgracias, y esto debe cambiar, ¡caiga quien caiga!

Creo que las reivindicaciones - como las revoluciones - no se proclaman, se cumplen. Siempre he sido fiel a esta consigna rígida, ¡porque entiendo que mejor decir es hacer, y mejor que prometer es realizar!

Es por ello que realizaré un nuevo anhelo de mi vida, que es hacer que funcione correctamente el Wifi y el Bluetooth con el adaptador de banda dual Intel AC 3165 con Ubuntu.

Se trata de un adaptador inalámbrico para la norma 802.11ac,  aparecido a finales del 2014. Es capaz de operar en doble banda, tanto en los 2,4 como en los 5 Gigahertzios, y es capaz de proporcionar conectividad Wifi y Bluetooth.

Viene integrada en una buena cantidad de equipos portátiles, pues presenta una buena opción para sumar conectividad moderna de Wifi y Bluetooth, incluidos en sistemas operativos GNU dotados de Kernel Linux.
Al ser Ubuntu uno de ellos, recibe soporte para dicho adaptador a partir del kernel 4.1 (efectuado a partir de su versión 15.10), a través del módulo iwlwifi o el iwlmvm.

Sin embargo, en ciertas ocasiones las versiones más antiguas del controlador podían presentar ciertos errores o inconvenientes de distinta magnitud con las versiones más antiguas del Kernel. En particular, podríamos sufrir conectividad intermitente o dificultad para conectarnos a una red wifi de 5Ghz. Para suplir esto, debemos contar con una versión de kernel más reciente, junto con las versiones más actualizadas del firmware para el controlador propio de GNU con Linux.

Para asegurarnos fehacientemente qué tipo de adaptador tenemos, ingresamos:

lspci


...entre todos los dispositivos, el sistema deberia indicarnos también el que nos interesa:


03:00.0 Network controller: Intel Corporation Wireless 3165 (rev 81)

A partir de 16.04LTS contamos con el soporte incorporado. Sin embargo, puede que encontremos errores. Por ejemplo, al ingresar en nuestra terminal:

dmesg | grep iwl

...nos presenta los siguientes errores:

iwlwifi 0000:03:00.0: loaded firmware version 29.1044073957.0 op_mode iwlmvm
iwlwifi 0000:03:00.0: Detected Intel(R) Dual Band Wireless AC 3165, REV=0x210
iwlwifi 0000:03:00.0: base HW address: xx:xx:xx:xx:xx:xx
ieee80211 phy0: Selected rate control algorithm 'iwl-mvm-rs'
iwlwifi 0000:03:00.0 wlo1: renamed from wlan0


iwlwifi 0000:03:00.0: Failed to load firmware chunk!
iwlwifi 0000:03:00.0: iwlwifi transaction failed, dumping registers
iwlwifi 0000:03:00.0: iwlwifi device config registers: 
(...)iwlwifi 0000:03:00.0: iwlwifi device AER capability structure: 
(...)
iwlwifi 0000:03:00.0: iwlwifi parent port (0000:00:1c.5) config registers:
(...)
iwlwifi 0000:03:00.0: iwlwifi root port (0000:00:1c.5) AER cap structure:
iwlwifi 0000:03:00.0: Could not load the [2] uCode section
iwlwifi 0000:03:00.0: Failed to start RT ucode: -110
 

(...)
iwlwifi 0000:03:00.0: failed to load firmware chunk!
iwlwifi 0000:03:00.0: Could not load the [xxx] uCode section
iwlwifi 0000:03:00.0: Failed to start RT ucode: -110


Esto puede producirse de forma aleatoria al iniciar el sistema, y es un problema del módulo antiguo iwlwifi. Podremos solucionarlo eventualmente apagando y reiniciando el módulo de wifi de nuestro ordenador con:

sudo rmmod iwlmvm iwlwifi && sudo modprobe iwlmvm iwlwifi

Si esto hace funcionar adecuadamente la conexión, vamos por buen camino. Para solucionar definitivamente esta molesta intermitencia, conviene actualizar los firmwares utilizados en conjunción por estos módulos de dispositivos inalámbricos de Intel.

En primer lugar, si tenemos Ubuntu 15.10 o superior, debemos actualizar el sistema:

sudo apt update
sudo apt upgrade


En segundo lugar y como buena práctica, procederemos a respaldar la carpeta /lib/firmware/ original a un lugar seguro, por ejemplo el Escritorio:

mkdir ~/Escritorio/lib
cd ~/Escritorio/lib/
sudo cp -r /lib/firmware  ~/Escritorio/lib


Cumplimentados estos preparativos, descargaremos los firmwares actualizados de Intel y ejecutaremos su instalador. Con ello se cargarán mas de treinta a nuestro sistema, aunque nuestro kernel sólo cargará en memoria el necesario para nuestra plaqueta particular.

cd ~ ;
git clone https://github.com/OpenELEC/iwlwifi-firmware ;
cd ~/iwlwifi-firmware/ ;
sudo ./install ;

Para efectivizar los cambios, hemos de reiniciar nuestro equipo. Si deseamos hacerlo desde la terminal podremos ingresar:

sudo reboot

Al reiniciar deberíamos poder conectarnos adecuadamente a todo tipo de redes, tanto de 2,4 gigahertzios como las de 5 gigahertzios. Asimismo, a la hora de ingresar:

dmesg | grep iwl

...nuestro sistema ya no debería reportar más errores, y deberíamos recibir un reporte similar al correcto:

[    4.856645] iwlwifi 0000:03:00.0: loaded firmware version 29.1044073957.0 op_mode iwlmvm
[    4.895633] iwlwifi 0000:03:00.0: Detected Intel(R) Dual Band Wireless AC 3165, REV=0x210
[    4.917958] iwlwifi 0000:03:00.0: base HW address: ac:2b:6e:cf:2c:f4
[    4.990152] ieee80211 phy0: Selected rate control algorithm 'iwl-mvm-rs'
[    5.021798] iwlwifi 0000:03:00.0 wlo1: renamed from wlan0

jueves, 18 de abril de 2019

¿Cómo cambio entre adaptador de video Intel o nVidia en equipos con tecnología PRIME en Ubuntu?

En numerosas ocasiones Juan Perón pronunció discursos directamente desde su escritorio perfectamente adaptado a tal fin. También explicó cómo conmutar entre los gráficos híbridos PRIME entre NVIDIA e Intel Graphics en Ubuntu.

(...)
¡Descamisados!

Tengo en mi escritorio todo lo necesario para la conducción del país. Esto es así gracias a un Justicialismo que nos ha proporcionado un norte cardinal para nuestras acciones, y un Software Libre que lo ha sustentado.

Pero para trabajar normalmente adopto el MATE, provisto en Ubuntu en su versión 18.04LTS, que es la que recomiendo. El Escritorio proporciona - de manera gráfica - una interfaz de simple a la cual tenemos acceso como Usuario. El resultado es poder utilizar de forma muy eficiente nuestro sistema en las tareas generales. Sin embargo, para conducir el sistema, opero la Terminal. Porque yo, como usuario de Ubuntu soy un aficionado; mi profesión es la de Conductor. Ello es para lo que me he formado y he estudiado toda mi vida.

Ahora bien, un Conductor ha de conocer que el escritorio - u otras interfases gráficas - no vuelan en el aire, sino que han de sustentarse sobre un hardware gráfico que les proporcione un lógico punto de apoyo. Este toma la forma de los adaptadores de video, encargados del procesamiento de las gráficas a fin de proyectarlas en la/s pantalla/s que podamos mirar.

Pues bien, de un tiempo a esta parte el hardware más auspicioso para tal cometido ha sido aquél de marca NVIDIA. El mismo se encuentra integrado en muchas placas madre y tiene una factura excelente. A estos les compite el hardware de video AMD,. Sin embargo, un escalón excelente lo conforman los muy extendidos hardware Intel Graphics, conocidos y livianos adaptadores de propósito general que también se integran en múltiples productos portátiles y de escritorio. Cada uno tiene sus ventajas: mientras que los NVIDIA o AMD operan como procesadores "de potencia", los Intel Graphics responden bien en entornos de bajo consumo, y para aplicaciones que no hagan uso intensivo de gráficas tridimensionales (la que son la mayoría).

Aprovechando la aparición de hardware moderno con dos tipos de adaptadores de video integrados en una misma placa madre, los ingenieros del Justicialismo han desarrollado la tecnología híbrida PRIME, una iniciativa de software que permite conmutar entre gráficos acelerados (de alto consumo) y gráficos no acelerados de bajo consumo. La idea final es extender la vida de las baterías en los dispositivos portátiles.

Por ejemplo, podemos ver nuestro hardware con el comando:

lspci

...entre todo los adaptadores, podriamos encontrar los de video, ya que el sistema podría devolvernos:

(...)
00:02.0 VGA compatible controller: Intel Corporation Skylake GT2 [HD Graphics 520] (rev 07)
01:00.0 3D controller: NVIDIA Corporation GM108M [GeForce 940M] (rev a2)


Como vemos, esta portátil consta en este caso de dos chipsets de video a la vez: un adaptador gráfico Intel HD Graphics 520 Skylake, y un adaptador gráfico aceleradora 3D nVidia GeForce 940M.

Pues bien. es sabido que de fábrica, nuestro sistema operativo Ubuntu emplea el controlador libre Noveau para movilizar la gráfica NVIDIA. Se trata de una pieza de software adecuada pero carece de aceleración 3D completa. En el caso del chipset Intel, cuenta con un controlador libre muy bueno, que ofrece aceleración 3D.

Si queremos contar con aceleración 3D completa, será necesario instalarle el controlador privativo de NVIDIA. Para ello podremos revisar en nuestra terminal qué tipo de controladores nos recomienda instalar. Para ello ingresamos el comando:

sudo ubuntu-drivers devices

El sistema nos indicará el tipo de controladores que podemos instalar. Por ejemplo:

== /sys/devices/pci0000:00/0000:00:1c.0/0000:01:00.0 ==
modalias : pci:v000010DEd00001347sv0000103Csd000080A4bc03sc02i00
vendor   : NVIDIA Corporation
model    : GM108M [GeForce 940M]
driver   : nvidia-driver-390 - distro non-free recommended
driver   : xserver-xorg-video-nouveau - distro free builtin



Como vemos, en este caso nos recomienda el xserver-xorg-video-nouveau (que ya está incluido de fábrica), o el nvidia-driver-390 privativo (no libre). También querremos saber si nuestra placa madre soporta la tecnología PRIME. Para ello ingresamos en la terminal:

sudo prime-supported

Nuestro sistema GNU con Linux debería indicarnos "yes" ("si") o "no".

En tal caso podríamos instalar el controlador privativo. Para hacerlo fácilmente desde la terminal, ingresamos el comando:

sudo apt install nvidia-driver-390

...y reiniciamos el sistema con:

sudo reboot

De la misma manera podríamos hacerlo desde el Escritorio gráfico desde el menú Sistema / Preferencias / Hardware / Controladores Adicionales, vamos a la solapa Controladores Adicionales. El sistema buscará en itnernet y nos debería proponer el controlador privativo nvidia-driver-390 (o superior). Luego presionamos "Aplicar Cambios". El sistema descargará el controlador y nos solicitará reiniciar.
Al reiniciar el sistema, ya deberíamos tener en uso el controlador NVIDIA con tecnología PRIME. Esto nos será aparente por la aparición del applet PRIME en el panel superior de la pantalla, con el ícono verde de NVIDIA.

Este applet nos permitirá conmutar entre una sesión grafica de escritorio con acelerador de gráficos 3D NVIDIA, o el acelerador Intel Graphics, de menor consumo. La manera más directa para hacerlo es por medio de un clic sobre el applet, y tendremos un acceso rápido al cambiador de adaptador gráfico.

Si elegimos la opción "Switch to Intel" ("Cambiar a Intel") se propondrá el cambio. Para autorizarlo debemos ingresar nuestra contraseña de administrador. Finalmente, para hacer efectivo el intercambio de adaptador gráfico, tenermos que cerrar o reiniciar nuestra sesión de usuario. Para ello vamos al menú Sistema / Cerrar la sesión de usuario.

Esto cerrará la sesión y nos dejará en la pantalla de inicio, donde podremos escoger al usuario e ingresar su contraseña, para volver a abrir la sesión gráfica, esta vez con el adaptador Intel Graphics.

Cuando se active el Escritorio, veremos que el applet PRIME contará ahora con el ícono azul de Intel Graphics en lugar del verde de NVIDIA. El adaptador Intel es muy bueno también, y puede operar perfectamente para la mayoría de las situaciones en Ubuntu, incluido el uso de gráficos en 3D. Consume menos recursos que el NVIDIA pero es menos adecuado para programas que hacen uso intensivos de animaciones 3D. Si quisiéramos volver a utilizar el adaptador gráfico de NVIDIA, debemos hacer el mismo procedimiento y elegir "Switch to nividia".

Si por algún motivo el Applet PRIME no apareciese o no tenemos acceso a él, bien podríamos hacer estos mismos cambios desde la aplicación nvidia-settings. Podremos acceder a ella ingresando dicho comando en la terminal, o desde el escritorio, accediendo al menú Sistema / Administración / NVIDIA X Server Settings. Naturalmente, también tendremos un acceso rápido desde el Applet PRIME.
Si elegimos cambiar de adaptador, naturalmente nos solicitará nuestra contraseña.
Y una vez ingresada esta, nos recordará salir de nuestra sesión de usuario y volver a loguearnos en ella.
Naturalmente, si usamos nuestro adaptador gráfico NVIDIA, encontraremos muchas mas opciones de control en nvidia-settings que si estamos utilizando el adaptador Intel Graphics.
Es por ello que en caso de estar utilizando el adaptador de video Intel Graphics, podremos configurar los aspectos del mismo desde la aplicación Preferencias del Monitor, que es la aplicación nativa de Ubuntu. Para acceder a ella vamos al menú Sistema / Administración / Hardware / Pantallas.

Usar PRIME desde la Terminal
Indudablemente no podemos cambiar "en caliente" nuestro adaptador de video, pero al menos podremos cambiarlo con esta funcionalidad PRIME. En el caso que tuviésemos que realizar el cambio de adaptadores de video desde nuestra Terminal, también podremos hacerlo gracias al Justicialismo.

Para que el sistema nos diga cual adaptador de video tenemos en uso actualmente le ingresamos:

prime-select query

Si deseamos activar la placa de video Intel ingresamos:

sudo prime-select intel

...e ingresamos la contraseña de Conductor.

En tanto, para activar el acelerador de video NVIDIA debemos ingresar:

sudo prime-select nvidia

Recordemos que para hacer efectivos los cambios, debemos cerrar la sesión gráfica de escritorio (o bien, reiniciar el equipo). Si estamos en la terminal, podremos reiniciar la sesión con:

sudo reboot

Evitar el tearing de pantalla con el controlador NVIDIA.

En algunos casos puede producirse un corte en las ventanas cuando las desplazamos muy rápido en la pantalla ("tearing"), presentando un efecto poco fluido. Para evitar esto en Ubuntu 18.04LTS con el driver de video NIVIDIA, debemos editar un archivo de configuración. Para ello usamos el editor GNU Nano:

sudo nano /etc/modprobe.d/zz-nvidia-modeset.conf


Se abrirá un archivo que debería estar vacío. Le agregamos el siguiente texto:

# /etc/modprobe.d/zz-nvidia-modeset.conf
# Agregado por peron para que no se parta el video
# Siempre que modifiquemos este fichero debemos obligatoriamente
# ejecutar la actualización del sistema de arranque gráfico con: 

# sudo update-initramfs -u
options nvidia_drm modeset=1


Una vez ingresados los cambios, guardamos con Ctrl+o y salimos del editor GNU Nano con Ctrl+x.

Finalmene actualizamos el sistema (paso obligatorio en este caso, so pena de quedar con "pantalla negra" o sin video durante el arranque) con:

sudo update-initramfs -u


 Para que los cambios surtan efecto, reiniciamos el sistema con:

sudo reboot


Nota: Si por algún motivo quisiéramos revertir los cambios, bien podemos borrar el fichero con:

sudo rm /etc/modprobe.d/zz-nvidia-modeset.conf

...o lo podemos modificar para que la variable modeset quede en 0 en lugar de 1, guardamos las modificaciones con Ctrl+o, salimos de GNU Nano con Ctrl+x, y actualizamos el sistema de archivos obligatoriamente con

sudo update-initramfs -u