miércoles, 26 de febrero de 2014

¿Cómo puedo divertirme en la Consola Terminal?

La terminal es un poderoso recurso que permite afrontar numerosos problemas del sistema GNU con Linux y darle efectiva solución. Mientras que una GUI representa la facilidad al neófito, nadie puede negar que resolver las cosas "a lo vikingo" usando la Terminal tiene un encanto que la Masa puede comprender y apreciar. Todo puede hacerse desde allí; incluso cosas que podrían parecer triviales pero que pueden resultar de capital importancia para un administrador de sistema.

En el Justicialismo como en la informática encontramos que a veces tenemos que dejar de operar en nuestras tareas cotidianas y salir a ver si llueve. Esto ha acarreado problemas a la humanidad por generaciones. Sin embargo, para todo la consola tiene una solución: en este caso en la forma de weatherspect.

Este programa se encarga de hacer precisamente ello, sincronizándose con un servicio meteorológico a través de internet y mostrandonos una representación en caracteres de lo que sucede afuera.

Su instalación en su gratificante desafío técnico, en el cual os conduciré. Primero instalamos las librerías necesarias para manejar ASCII a colores en la terminal. Para ello abrimos una Terminal con Ctrl+Alt+T e ingresamos el siguiente Comando de Organización:


sudo apt-get update
sudo apt-get install perl libcurses-perl

En segundo lugar nos haremos con el módulo Term::Animation, una librería del lenguaje PERL. Parecería intrincado, será sencillo instalarla usando las facilidades que nos otorga cpan. Para ello ingresamos el comando:

sudo cpan -i Term::Animation

Si es la primera vez que ejecutamos cpan, nos aparecerá un largo mensaje que nos explica qué hace esto. Y nos preguntará si queremos configurar muchas cosas automáticamente ("Would you like me to configure as much as possible automatically?". Respondemos "yes". cComenszará un proceso automático que durará un par de minutos.

Normalmente el proceso será completamente automático, pero si llegase a aparecer la pregunta: "Select your continent (or several nearby continents) []", el sistema nos estará indicando al Continente desde donde se ejecutaremos las llamadas. Habremos de indicarlo de la lista numérica que aparezca.

Una vez que devuelva un resultado afirmativo, debemos comprobar si el módulo Term::Animation se instaló correctamente. Para ello podremos indicar:

instmodsh

Esto tardará unos instantes buscando los módulos, pero luego de un minuto arrancará el programa. Cuando aparezca el prompt "cmd?" Los listamos presionando la tecla "l" y Enter.
Si el módulo aparece en la lista que el sistema nos devuelve, significa que ya podremos dar inicio a la instalación de weatherspec. Salimos del programa instmodsh, presionando "q" y Enter.

Y procedemos a instalar el visor del tiempo weatherspec con los siguientes Comandos de Organización:

cd ~/Descargas
wget http://www.robobunny.com/projects/weatherspect/weatherspect_v1.11.tar.gz
tar -zxvf weatherspect_v1.11.tar.gz

cd weatherspect_v1.11/
sudo cp weatherspect /usr/local/bin
sudo chmod 0755 /usr/local/bin/weatherspect


Acto seguido, configuraremos los datos propios para que el programa pueda sincronizar. Esto involucra emplear la siguiente variable:

weatherspect -c

El sistema iniciará una rutina de configuración, donde podremos indicar nuestra procedencia (por ejemplo, podremos responder "Buenos Aires, Argentina". Luego nos preguntará si queremos la temperatura en grados centígrados (respondemos "c") y si queremos la velocidad del viento en kilómetros por hora (respondemos "k").
Una vez configurado el programa, le damos inicio con:

weatherspect

Si todo ha salido bien y tenemos conexión a la red internet, weatherspect nos reportará el tiempo con una simulación ASCII ilustrativa de cómo sería el mundo si salimos al exterior para comprobarlo:
 
Una vez que comprobamos que el programa funciona bien, podremos eliminar la fuente con:

rm ~/Descargas/weatherspect_v1.11 -rf

ASCIIquarium
Cuantas veces nos hemos visto en la necesidad de contemplar la vida marina desde nuestra terminal de líneas de comandos. A nuestro servicio ha llegado el Justicialismo y ASCIIquarium. Si ya instalamos las librerías del programa anterior, podremos ingresar los siguientes Comandos de Organización sin más:

cd ~/Descargas/
wget http://www.robobunny.com/projects/asciiquarium/asciiquarium_1.1.tar.gz
tar -zxvf asciiquarium_1.1.tar.gz
cd ~/Descargas/asciiquarium_1.1/
sudo cp asciiquarium /usr/local/bin
sudo chmod 0755 /usr/local/bin/asciiquarium


Para dar inicio a ASCIIquarium ingresamos el comando:

asciiquarium
Una vez que comprobamos que está instalado correctamente, podremos eliminar el directorio de instalación con:

rm ~/Descargas/asciiquarium_1.1/ -rf

NCMATRIX
Sin duda conocemos cmatrix, un programa que nos permite ver una lluvia digital representativa de un sistema nerd y peronista. Mas sólo es un adminículo estético. ¿Porqué no podría extenderse su funcionalidad y que además de hacer lo que hace cmatrix, pueda indicarnos datos como el tráfico de red según variaciones de colores, y demás? Para ello se ha abocado el Peronismo, y gracias al Software Libre se ha modificado el código de cmatrix para expandir su funcionalidad como el Pueblo anhela.

Primero hemos de comprobar la existencia de las librerías necesarias en nuestro sistema, que son libncurses y libc6:

dpkg -l | egrep '(libncurses|libc6)'


Esta orden debería devolver algo como esto:

ii libc6:i386 2.17-9 Embedded GNU C Library: Shared l...
ii libncurses5:i386 5.9+20130608-1 shared libraries for terminal ha
...

Si no lo hace, significa que no tenemos las librerías cargadas. podremos instalarlas con:

sudo apt-get install libncurses5 libc6

Ahora descargaremos el código fuente de ncmatrix y lo descomprimimos:

cd ~/Descargas/
wget http://webpages.charter.net/tux/ncmatrix/ncmatrix-1.0.zip
unzip ncmatrix-1.0.zip

cd ncmatrix-1.0

Y ahora lo compilamos:

sudo ./configure
sudo make check
sudo make install


Luego lanzamos ncmatrix. Debemos indicarle las propiedades. Por ejemplo, para que monitoree nuestra red eth0, podremos usar:

ncmatrix -b -u 10 -I eth0 -T magenta -R red

Si en cambio usamos conexión por wifi (normalmente a través del dispositivo wlan0), usaremos:

ncmatrix -b -u 10 -I wlan0 -T magenta -R red

Para salir de ncmatrix usamos q (o cualquier otra letra si está corriendo en modo salvapantallas).

Una vez que comprobamos que funciona existosamente, para limpiar la instalacion de ncmatrix usamos:

rm ~/Descargas/ncmatrix-1.0 -rf

martes, 25 de febrero de 2014

¿Cómo simulo la estética de una terminal lenta como la DEC VT152/VT220?

En un pasaje de su La Comunidad Organizada, Juan Perón nos explica los fundamentos filosóficos que hacen a la búsqueda de la felicidad y cómo lograrla emulando la lentitud de una terminal DEC VT en Ubuntu. 

(...)
Un pensador moderno ha escrito lo siguiente: Hay un trabajo sin alegría, un placer sin risa, una virtud sin gracia, una juventud sin suavidad, un amor sin misterio, un arte sin irradiación ... ¿por qué?...

Esa pregunta terrible acaso no esté todavía pendiente sobre la vida actual. Pero puede gravitar sobre nuestro futuro si no llegamos a relacionar y defender debidamente las categorías y valores de ese sujeto de la vida toda, de nuestras preocupaciones y nuestros desvelos, que es el Hombre.

Sin el Hombre no podemos comprender en modo alguno los fines de la naturaleza, el concepto de la humanidad ni la eficacia del pensamiento...

Existe una laboriosa tarea en pleno desarrollo, encaminada a modificar sustancialmente las condiciones de vida en pro de la felicidad general. Es importante saber si esta felicidad pertenece al reino de lo material, o si cabe pensar que se trata de realizar las aspiraciones anímicas del hombre y el camino de perfección para el cuerpo social.

Pero cuando volvemos a preguntarnos si la dirección de ese pensamiento ha de ser ejercida en un sentido horizontal, o si cabrá imprimirle al mismo tiempo verticalidad, debemos antes examinar, siquiera en busca de indicios, el panorama que se ofrece a nuestros ojos.

Advertimos enseguida un síntoma inquietante en el campo universal. Voces de alerta señalan con frecuencia el peligro de que el progreso técnico no vaya seguido por un proporcional adelanto en la educación de los pueblos. La complejidad del avance técnico requiere pupilas sensibles y recio temperamento. Si tomamos como símbolo de la vida moderna el rascacielos o el transatlántico, deberemos enseguida prefiguramos la estatura espiritual del ser que ha de morar o viajar en ellos.

Ha de ser el hombre el material sensible, y no volcarse necesariamente a los adelantos sin darles una significancia en su alma. En la informática sucede más o menos lo mismo: no hace falta contar con el último ingenio, sino con el que nos haga feliz.

Las videoterminales tontas como las DEC VT05, VT152, VT220, y demás miembros de la serie se caracterizaban por conectarse solas o en grupo a una minicomputadora o un mainframe, y otorgaban al usuario el medio para introducir y recibir los datos a través de su monitor. Ésta era la forma de computar en un momento en que el costo de la unidad central de proceso, memorias volátiles y de masa eran lo suficientemente altos como para no justificar la personalización del medio informático.

Es indudable que estas clásicas terminales no han perdido su uso ni su prestigio, pues aún hoy conectándolas a través de un puerto serial Centronics RS232, es posible emplearlas como medio de entrada y salida de datos en un entorno GNU con Linux. Bajo una nueva filosofía, los viejos modos siguen siendo útil escuela.

Aun así, a pesar de su antigua tecnología, las terminales seriales clásicas son escasas y difíciles de conseguir, lo cual las ha tornado un objeto oligárquico. El Justicialismo siempre se ha propuesto terminar con estas situaciones de dominación.

Esta pregunta me la han hecho muchos, y sobre todo me la he hecho yo. ¿Es posible proveer esa apariencia y alma que anteriormente sólo las terminales seriales podían dar, de manera de poder usarla que el hombre pueda usarla en su diaria labor?

La respuesta es afirmativa.,En este caso habremos de configurarnuestra  terminal estándar (provista con Ubuntu), y usar un programa para mostrar el texto de forma más lenta al menos en los archivos de texto. En primer lugar abrimos una terminal con Ctrl+Alt+T.

Si quisiéramos representar la estética de una terminal VT220, podríamos descargar una fuente que imita sus glifos no entrelazados como la Glass VT220 y utilizarla en la fuente. Otras fuentes recomendables son FixedSys Exelsior, PR Number 3 (similar a la fuente de la Apple ][) y la VT323, una fuente similar en apariencia a muchas terminales y equipos de 8 bits. Como color podremos usar el clásico "verde fósforo VT100", cuyas coordenadas cromáticas RGB son aproximadamente 0-255-153 (y en notación hexadecimal #00FFA3). Se pueden usar también en la GNOME-Terminal haciendo clic con el botón izquierdo del ratón sobre la misma y eligiendo Perfiles / Preferencias de Perfil, y moviéndonos a la solapa Colores. Luego cambiamos el color de texto:


Las terminales antiguas eran lentas, y en ello se resguardaba su encanto. Para reducir la velocidad del pasaje de texto, hay varias maneras, pero podremos hacerlo de manera fácil y conveniente descargando un programa a tal efecto: el slowcat. Su empleo es similar al clásico comando cat, con la diferencia que presentará el volcado de la información caracter a caracter y con velocidad programable.

Para descargarlo e instalarlo en el sistema debemos ingresar los siguientes Comandos de Organización:

wget http://www.splode.com/~friedman/software/scripts/src/share/slowcat
sudo chmod 755 slowcat

sudo mv slowcat /usr/local/bin/scat

Los ejemplos suelen aclararlo todo, como decía Napoleón.

Para ver el archivo larazóndemivida.txt a la velocidad estándar de volcado del slowcat (equivalente a unos 9600 baudios por segundo), deberíamos utilizar:
scat larazóndemivida.txt

También podremos redirigir la salida de cualquier comando que usemos en la consola y devuelva texto a slowcat para que nos provea de un volcado lento del mismo. Para ello han de usarse los caños ("|"), mediante la siguiente sintaxis general:

comando | scat

Como se ha mencionado, la velocidad de volcado de Slowcat es programable por medio de la variable -b, que nos permite indicar los baudios por segundo deseados en la representación. Por ejemplo, si quisiéramos un listado de directorio completo y cuyo volcado tenga el estilo de una terminal antigua con una velocidad de 1200 baudios, podríamos usar:

ls -lah | scat -b 1200

Naturalmente, el volcado del Slowcat puede interrumpirse con Ctrl+C.

Si quisiéramos volcar nuestra doctrina (o cualquier otro contenido web) como si la recibiésemos telemáticamente desde una BBS de la era de las microcomputadoras o terminales seriales, podríamos emular su volcado con el navegador Links. A diferencia de w3m o elinks, links muestra una web "a pantallas", lo cual es sumamente adecuado.

Lo instalamos con:

sudo apt-get install links

Y para navegar con él podríamos hacer:

links http://ubuntuperonista.blogspot.com.ar/2012/07/software-libre-es-justicia-social-20.html | scat



El uso de una terminal incapaz de mostrar gráficos para improvisarlos de alguna manera, constituye un antiguo arte que ha de ser promovido. Por ejemplo, podríamos querer instalar una serie de conocidas animaciones para las DEC VT. Estas eran animaciones escritas en formato ASCII (sólo texto) y se reproducían secuencialmente en una terminal de baja velocidad. Actualmente podríamos verlas con el comando cat, pero la velocidad de respuesta normal las torna imposible de apreciar. Con la solución que aporta Slowcat podremos apreciarlas en su gloria original:

cd ~/Descargas 
wget wget http://mewbies.com/geek_fun_files/vt100/vt_files.zip
unzip vt_files.zip
cd ~/Descargas/vt_files

Como ejemplo genérico, podríamos usar la comprobación original de la terminal:

cat torturetest.vt

...y tendremos una salida instantánea. Pero si hacemos:

scat torturetest.vt

...nos encontraremos con una salida mas lenta, letra a letra, tal como se veía en las videoterminales seriales DEC. Con eso habremos dado un importante paso.
Si nuestro sentido nerd nos impulsa a contemplar un Ave de Presa Klingon disparando un torpedo de fotón hacia nuestra nariz, podríamos hacer:

scat -b 48000 prey.vt

...o podríamos contemplar la venganza por la cancelación de Star Trek con:

scat -b 4100 trek.vt

...y emular la escena del verdadero encuentro entre Jean Luc Picard y James T. Kirk tal como se debería haber hecho:

scat -b 22000 startrek.vt
La versatilidad de slowcat es la de todo comando que siga la filosofía UNIX. Si tenemos un loop, podríamos apreciar su animación en bucle a diferentes velocidades. Sería sencillo con la siguiente topología de comando:

scat -b 240000 ~/Descargas/vt_files/globe.vt && slowcat -b 150000 ~/Descargas/vt_files/globe.vt && slowcat -b 70000 ~/Descargas/vt_files/globe.vt && slowcat -b 35000 ~/Descargas/vt_files/globe.vt && slowcat -b 12000 ~/Descargas/vt_files/globe.vt

También podríamos querer usar opciones más vistosas en nuestra terminal de texto a color exclusiva. Normalmente Ubuntu emplea el modo VESA sin direccionamimento, para mayor compatibilidad. Pero si tenemos una placa de video compatible con aceleración, podríamos querer instalar la terminal framebuffer fbterm.

Para ello ingresamos a una terminal TTY (por ejemplo, con Ctrl+Alt+F1) y nos logueamos con nuestro usuario y contraseña. Acto seguido ingresamos el comando:

sudo apt-get install fbterm

Y la iniciamos con

sudo fbterm

Luego querríamos probar el video acelerado con algunas aplicaciones que hagan uso de los caracteres ASCII. Para ello podremos usar cacautils, cuyo escatológico nombre nos representa un paquete que incluye cacademo, una demostración de efectos visuales autogenerados precisamente a través de caracteres ASCII a color.

Simplemente lo instalamos con:

sudo apt-get install cacautils

Y al terminar de instalar lo ejecutamos con:

cacademo

Podremos ir pasando los diferentes demos con Enter, lo pausamos con la barra espaciadora, y salimos con Esc.

También tendremos otra opción con un comando cuyo representativa designación explica todo:

cacafire

Recordemos que para cerrar las sesiones de consola TTY se usa el comando exit, y que podremos volver a la consola gráfica mediante la combinación Ctrl+Alt+F7.

lunes, 24 de febrero de 2014

Se presentan los primeros prototipos de las plaquetas para el programa Precios Cuidados

En tiempo récord empezaron a ser entregados los primeros prototipos de desarrollo nacional de plaquetas de registro para el programa Precios Cuidados.

Cien empresas nacionales encuadradas en el sector del desarrollo electrónico y electromecánico han comenzado a abocarse al diseño y construcción de las plaquetas PCB adosables. En total, se prevee la entrega de unos 50 prototipos electrónicos diferentes en un plazo de 2 meses. Para la mismas se puede utilizar las interfaz serial estandarizada RS232 o la ISA, dependiendo del tipo de controladora. El diseño básico cuenta con una memoria ROM en la cual se encuentra escrito el programa de registro y las instrucciones de control y transmisión, y se establece que su desarrollo y fabricación no insumirá más de 150 dólares por unidad.
De entre estos prototipos presentados se escogerá el Auditor Electrónico de Control de Precios y Abastecimiento (AEPA) homologado, cuya función es adaptarse a las controladoras fiscales y recibir información desde los lectores de código de barras comerciales. Gracias a ello, la Secretaría de Comercio Interior de Argentina podrá disponer en tiempo real de la información que atañe a los costos estipulados por los comercios, y de las existencia y salida de los productos promocionados, y los productos más solicitados entre otras variables generales. La Administración Federal de Ingresos Públicos podrá disponer en tiempo real de la información pertinente, como tal es su perrogativa.

El programa Precios Cuidados consiste en una canasta de productos generales cuyos precios finales están acordados entre el Gobierno Nacional y los comerciantes, pero del cual se han detectado irregularidades (faltantes de existencias productos bajo el convenio, reemplazo por versiones ad-hoc, etc).

Se espera que esta nueva aplicación de hardware y software de desarrollo nacional pueda servir como respaldo para hacer aplicar de manera efectiva el programa Precios Cuidados, ante la existencia de una cadena comercial cartelizada en lo concerniente al rubros alimenticios, productos de limpieza, etc. El programa prevee instalarlo rápidamente y de forma inicial en supermercados y grandes cadenas, en unos 2.000 puntos de venta.

¿Cómo arreglo el error de GPG en Ubuntu?

Reunidos en San Vicente con un grupo de encaramados políticos Justicialistas, el Conductor detalla las acciones a tomar contra quienes privilegian el interés propio en contra de los de la Comunidad, y afirma cómo resolver el problema de clave GPG y de repositorios corruptos en Ubuntu.

"Vean señores,

La Liberación no es la lucha de un hombre solo, sino la de una Comunidad que se organiza su esfuerzo en pos de ella. Esto es así pues nunca podrá el hombre romper sus cadenas de forma aislada, eso no existe. Quien así hiciera, verá que sólo aliviará su carga y romperá sus cadenas, mas sólo para colgárselas a otro que habrá de llevar esa pesada carga. ¡Claro!. Liberarse así no es justicia.

Esto sucede porque los sistemas sociales de dominación se prolongan en transferir el esfuerzo de desde una clase privilegiada a otra clase que ha carecido de esos privilegios.

Nuestro Movimiento es - en contraposición - uno que aboga por la Justicia Social; uno en el cual no se puede hacer sino lo que es mejor para la Comunidad, lo que ésta quiere... y todo ello lo decide un Conductor que interpreta la esa Comunidad. Esa ha sido nuestra Doctrina, que no es nada novedosa, es lo que han dicho siempre los grandes filósofos.

En este caso particular, el Conductor soy yo. Mi tarea como tal no es otra que la de organizar la lucha estratégica, dilucidar los desafíos presentes y futuros y dirigir los esfuerzos del Pueblo que permitan superar tales desafíos. Y también cargo con una grave responsabilidad: la de predicar con el ejemplo y poner "en caja" a quien - bajo nuestra bandera - intente pasarse de vivo.

El hombre es un ser hecho a semejanza de Dios, pero si de algo carece es de su Perfección Divina. Somos seres imperfectos que tratamos de sortear la vida de la mejor manera. La idea es que todos la sorteemos de la mejor manera, y no que el 1% lo haga y el resto viva como un grupo de infelices... Este giro nos ha convertido en la opción favorita de los Argentinos, y la seguirá siendo por mucho tiempo.

Pero hay de todo en la huerta del xeñor... Como fuera del Movimiento existen individuos que están a favor del sojuzgamiento del hombre en su propio beneficio, también existen vivos dentro de nuestras Organizaciones que han querido priorizar su propio bienestar por sobre el de la Comunidad. Eso lo hemos visto básicamente porque lo habíamos previsto. Y a ellos les hemos aplicado los Anticuerpos que todo organismo tiene: los tienen los organismos biológicos, y tambiém los organismos políticos. Y estos mismos anticuerpos pueden aplicarse de forma científica a los organismos informáticos.
 
Un ejemplo suele aclararlo todo, como decía Napoleón. Todos ustedes saben que - a pesar de su innegable robustez - en algunas ocasiones, como en un movimiento como el Justicialismo, también el sistema de repositorios de Ubuntu puede arruinarse o corromperse por variados motivos.

La mayoría de las veces los problemas tienen que ver con la desaparición o cambio de las firmas públicas. Ubuntu emplea el sistema GPG (GNU Privacy Guard), esto es, una clave digital propia que sirve para un contrachequeo de autenticidad de los repositorios. En raras ocasiones, tal sistema falla y podria presentarnos un mensaje de error como el siguiente:

W: Error de GPG: http://ppa.launchpad.net precise Release: Las firmas siguientes no se pudieron verificar porque su llave pública no está disponible: NO_PUBKEY 2947BD0A8AC12F8A



Esto impide descargar ficheros del repositorio correspondiente. En este caso, el numero 2947BD0A8AC12F8A es la firma. Lo que hay que hacer es indicar una serie de comandos, utilizando únicamente los últimos ocho caracteres de esa clave pública. En este caso, sería 8AC12F8A

Primero solicitamos la clave firmada al servidor de claves de Ubuntu (o el servidor que utilicemos, si usáramos otro en particular). Por ejemplo:

gpg --keyserver keyserver.ubuntu.com --recv 8AC12F8A

Luego exportamos la clave cifrada y la incorporamos a nuestro sistema de claves firmadas:

gpg --export --armor 8AC12F8A | sudo apt-key add -

Si todo va bien, nuestro sistema GNU ocn Linux debería devolvernos simplemente el mensaje "OK".
Luego actualizamos el programa de descarga y búsqueda de repositorios con:

sudo apt-get update

Y ya debería dejar de darnos el error de GPG.

A veces se debe a una falla del paquete ubuntu-extras-keyring. En tal caso, podremos probar reinstalar dicho software componente con:

sudo apt-get install --reinstall ubuntu-extras-keyring

Y actualizamos la lista para comprobar que no haya errores.

sudo apt-get update

viernes, 14 de febrero de 2014

¿Cómo hago funcionar la impresora/fotocopiadora Toshiba e-STUDIO 162 con Ubuntu?

Ante los representantes gremiales de la Confederación General del Trabajo, Juan Perón expone los lineamientos de su política de gobierno y explica cómo hacer funcionar la impresora Toshiba e-STUDIO 162 con Ubuntu.

"(...) O hay algo peor: el sabotaje al país. Pero ahí están las compañías cerealistas, que tendrán que responder a estas cosas. Porque estén seguros de que ellos saben mejor que nosotros los precios, y no vendieron: lo tienen guardado para venderlo cuando valga trescientos... Y con las carnes lo mismo.

Todos esos señores deben poner las cartas en la mesa. Es decir, nos hemos convertido en una factoría de avariciosos concupiscentes, donde todo es a base de trampa, todo es a base de maniobras; donde los intermediarios se quedan con el santo y la limosna, mientras los usuarios y los productores son los que pagan con esfuerzo y con sacrificios, y algunas veces con la ruina, el esfuerzo de su trabajo y de su producción.

Es decir que antes de ponernos a pensar en grandes desarrollos, tenemos que ponernos a pensar en corregir todas estas secuelas de infamias que se han apoderado del cuerpo físico de nuestra Nación. Piensen ustedes que esto es como cuando uno se enferma y está por estirar la pata, que no se pone a pensar en las grandezas que pueda realizar, sino primero en arreglar su salud.

En el caso de las fotocopiadoras multifunción en Ubuntu es más o menos lo mismo: antes que ponerse a pensar en hacerles funcionar todos los chirimbolos que la componen, mas vale que impriman. Eso, que es poco, ya es algo y es preferible a la nada.

La Toshiba e-STUDIO 162 es una antigua impresora multifunción de 12 páginas al minuto, orientada a oficinas pequeñas. Dotada con escáner, es capaz de fotocopiar y enviar por fax documentos de tamaño A3. Cuenta con conexión USB y de puerto paralelo para conectarla a una computadora.
Esta unidad es gorila, y no funciona automáticamente con Ubuntu: la mayoría de las funciones no las realiza a través de su propio microprocesador y memorias, sino que más bien utilizan los de nuestro sistema, empleandopara ellos un controlador de software propietario específico, escrito para el sistema operativo Window$. Este concepto de "Winprinters" es totalmente excluyente y abyecto, y ha de ser combatido y corregido siempre que se pueda por quienes verdaderamente aman la Justicia Social.

Normalmente debemos despreciar este tipo de equipos incompatibles: al fin y al cabo, sus fabricantes han despreciado la libertad de sus usuarios, y sólo han comercializado un producto que nos obliga a ser esclavos para utilizarlos.

Afortunadamente, Ubuntu cuenta con CUPS, un intermediario libre que se encarga de compatibilizar por software cierto tipo de impresoras haciendo uso de las características mínimas comunes. Esto normalmente dejará fuera de la ecuación de trabajo a la subunidad de escáner o la del fax, y no permite el uso de la función de impresión doble faz, ni ajustar a fondo las propiedades de la impresión como la cantidad de toner aplicado. Pero al menos nos permitirá libremente imprimir, que es lo principal. Para las funciones de Fax y de fotocopiado se podrá usar la máquina independientemente sin conectarla a la computadora (lo cual es posible gracias a su microprocesador propio).

Para hacer funcionar la impresora con el intermediario de impresión CUPS ha de utilizarse un archivo de compatibilidad Postscript PPD llamado plxmono, con el cual la copiadora tornará mínimamente compatible y se verá capaz de imprimir en una módica escala de grises. Os indicaré cómo fabricar este archivo específico. También habrán de usar la conexión por medio del puerto USB (cuyo cable no está suministrado en la caja, y debe adquirirse por separado). La conexión por cable paralelo no funcionará.

El archivo PPD guarda un código específico que instruye a la impresora. Afortunadamente es sencillo introducirlo a mano, ya con las instrucciones necesarias para el funcionamiento normalizado de la e-STUDIO 162. Para ello abrimos una Terminal con Ctrl+Alt+T e indicamos el siguiente Comando de Organización:

sudo gedit /usr/share/ppd/custom/Toshiba-e-Studio_162-plxmono.ppd

Ingresamos nuestra contraseña de Conductor, y se abrirá una página en blanco. A la misma le pegamos el siguiente código:

*PPD-Adobe: "4.3"
*%
*% For information on using this, and to obtain the required backend
*% script, consult http://www.openprinting.org/
*%
*% This file is published under the GNU General Public License
*%
*% PPD-O-MATIC (4.0.0 or newer) generated this PPD file. It is for use with
*% all programs and environments which use PPD files for dealing with
*% printer capability information. The printer must be configured with the
*% "foomatic-rip" backend filter script of Foomatic 4.0.0 or newer. This
*% file and "foomatic-rip" work together to support PPD-controlled printer
*% driver option access with all supported printer drivers and printing
*% spoolers.
*%
*% To save this file on your disk, wait until the download has completed
*% (the animation of the browser logo must stop) and then use the
*% "Save as..." command in the "File" menu of your browser or in the
*% pop-up manu when you click on this document with the right mouse button.
*% DO NOT cut and paste this file into an editor with your mouse. This can
*% introduce additional line breaks which lead to unexpected results.
*%
*% You may save this file as 'Toshiba-e-Studio_162-pxlmono.ppd'
*%
*%
*FormatVersion:    "4.3"
*FileVersion:    "1.1"
*LanguageVersion: English
*LanguageEncoding: ISOLatin1
*PCFileName:    "PXLMONO.PPD"
*Manufacturer:    "Toshiba"
*Product:    "(e-Studio 162)"
*cupsVersion:    1.0
*cupsManualCopies: True
*cupsModelNumber:  2
*cupsFilter:    "application/vnd.cups-postscript 100 foomatic-rip"
*cupsFilter:    "application/vnd.cups-pdf 0 foomatic-rip"
*%pprRIP:        foomatic-rip other
*ModelName:     "Toshiba e-Studio 162"
*ShortNickName: "Toshiba e-Studio 162 pxlmono"
*NickName:      "Toshiba e-Studio 162 Foomatic/pxlmono (recommended)"
*PSVersion:    "(3010.000) 550"
*PSVersion:    "(3010.000) 651"
*PSVersion:    "(3010.000) 652"
*PSVersion:    "(3010.000) 653"
*PSVersion:    "(3010.000) 704"
*PSVersion:    "(3010.000) 705"
*PSVersion:    "(3010.000) 800"
*PSVersion:    "(3010.000) 815"
*PSVersion:    "(3010.000) 850"
*PSVersion:    "(3010.000) 860"
*PSVersion:    "(3010.000) 861"
*PSVersion:    "(3010.000) 862"
*PSVersion:    "(3010.000) 863"
*PSVersion:    "(3010.000) 864"
*PSVersion:    "(3010.000) 870"
*LanguageLevel:    "3"
*ColorDevice:    False
*DefaultColorSpace: Gray
*FileSystem:    False
*Throughput:    "1"
*LandscapeOrientation: Plus90
*TTRasterizer:    Type42
*1284DeviceID: "DRV:Dpxlmono,R1,M0,F1,P0,TG;"

*driverName pxlmono: ""
*driverType G/Ghostscript built-in: ""
*driverUrl: "http://www.ghostscript.com/"
*driverObsolete: False
*driverManufacturerSupplied: False
*driverFreeSoftware: True

*DefaultResolution: 1200dpi



*HWMargins: 18 36 18 36
*VariablePaperSize: True
*MaxMediaWidth: 100000
*MaxMediaHeight: 100000
*NonUIOrderDependency: 100 AnySetup *CustomPageSize
*CustomPageSize True: "pop pop pop pop pop
%% FoomaticRIPOptionSetting: PageSize=Custom"
*End
*FoomaticRIPOptionSetting PageSize=Custom: " -dDEVICEWIDTHPOINTS=0 -dD&&
EVICEHEIGHTPOINTS=0"
*End
*ParamCustomPageSize Width: 1 points 36 100000
*ParamCustomPageSize Height: 2 points 36 100000
*ParamCustomPageSize Orientation: 3 int 0 0
*ParamCustomPageSize WidthOffset: 4 points 0 0
*ParamCustomPageSize HeightOffset: 5 points 0 0

*FoomaticIDs: Toshiba-e-Studio_162 pxlmono
*FoomaticRIPCommandLine: "gs -q -dBATCH -dPARANOIDSAFER -dNOPAUSE -dNO&&
INTERPOLATE%B%A%Z -sOutputFile=- -"
*End

*OpenGroup: General/General

*OpenUI *PrintoutMode/Print Quality: PickOne
*FoomaticRIPOption PrintoutMode: enum Composite A
*OrderDependency: 10 AnySetup *PrintoutMode
*DefaultPrintoutMode: Normal
*PrintoutMode Draft/Draft: "%% FoomaticRIPOptionSetting: PrintoutMode=Draft"
*FoomaticRIPOptionSetting PrintoutMode=Draft: "PrinterResolution=600x6&&
00dpi ColorModel=Grayscale"
*End
*PrintoutMode Normal/Normal: "%% FoomaticRIPOptionSetting: PrintoutMode=Normal"
*FoomaticRIPOptionSetting PrintoutMode=Normal: "PrinterResolution=600x&&
600dpi ColorModel=Grayscale"
*End
*PrintoutMode High/High Quality: "%% FoomaticRIPOptionSetting: PrintoutMode=High"
*FoomaticRIPOptionSetting PrintoutMode=High: "PrinterResolution=1200x1&&
200dpi ColorModel=Grayscale"
*End
*CloseUI: *PrintoutMode

*OpenUI *PageSize/Page Size: PickOne
*FoomaticRIPOption PageSize: enum CmdLine A
*OrderDependency: 100 AnySetup *PageSize
*DefaultPageSize: Letter
*PageSize Letter/US Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter"
*FoomaticRIPOptionSetting PageSize=Letter: " -dDEVICEWIDTHPOINTS=612 -&&
dDEVICEHEIGHTPOINTS=792"
*End
*PageSize A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4"
*FoomaticRIPOptionSetting PageSize=A4: " -dDEVICEWIDTHPOINTS=595 -dDEV&&
ICEHEIGHTPOINTS=842"
*End
*PageSize 11x17/11x17: "%% FoomaticRIPOptionSetting: PageSize=11x17"
*FoomaticRIPOptionSetting PageSize=11x17: " -dDEVICEWIDTHPOINTS=792 -d&&
DEVICEHEIGHTPOINTS=1224"
*End
*PageSize A3/A3: "%% FoomaticRIPOptionSetting: PageSize=A3"
*FoomaticRIPOptionSetting PageSize=A3: " -dDEVICEWIDTHPOINTS=842 -dDEV&&
ICEHEIGHTPOINTS=1191"
*End
*PageSize A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5"
*FoomaticRIPOptionSetting PageSize=A5: " -dDEVICEWIDTHPOINTS=421 -dDEV&&
ICEHEIGHTPOINTS=595"
*End
*PageSize B5/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5"
*FoomaticRIPOptionSetting PageSize=B5: " -dDEVICEWIDTHPOINTS=516 -dDEV&&
ICEHEIGHTPOINTS=729"
*End
*PageSize Env10/Envelope #10: "%% FoomaticRIPOptionSetting: PageSize=Env10"
*FoomaticRIPOptionSetting PageSize=Env10: " -dDEVICEWIDTHPOINTS=297 -d&&
DEVICEHEIGHTPOINTS=684"
*End
*PageSize EnvC5/Envelope C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5"
*FoomaticRIPOptionSetting PageSize=EnvC5: " -dDEVICEWIDTHPOINTS=459 -d&&
DEVICEHEIGHTPOINTS=649"
*End
*PageSize EnvDL/Envelope DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL"
*FoomaticRIPOptionSetting PageSize=EnvDL: " -dDEVICEWIDTHPOINTS=312 -d&&
DEVICEHEIGHTPOINTS=624"
*End
*PageSize EnvISOB5/Envelope B5: "%% FoomaticRIPOptionSetting: PageSize=EnvISOB5"
*FoomaticRIPOptionSetting PageSize=EnvISOB5: " -dDEVICEWIDTHPOINTS=499&&
 -dDEVICEHEIGHTPOINTS=709"
*End
*PageSize EnvMonarch/Envelope Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch"
*FoomaticRIPOptionSetting PageSize=EnvMonarch: " -dDEVICEWIDTHPOINTS=2&&
79 -dDEVICEHEIGHTPOINTS=540"
*End
*PageSize Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive"
*FoomaticRIPOptionSetting PageSize=Executive: " -dDEVICEWIDTHPOINTS=52&&
2 -dDEVICEHEIGHTPOINTS=756"
*End
*PageSize Legal/US Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal"
*FoomaticRIPOptionSetting PageSize=Legal: " -dDEVICEWIDTHPOINTS=612 -d&&
DEVICEHEIGHTPOINTS=1008"
*End
*CloseUI: *PageSize

*OpenUI *PageRegion: PickOne
*OrderDependency: 100 AnySetup *PageRegion
*DefaultPageRegion: Letter
*PageRegion Letter/US Letter: "%% FoomaticRIPOptionSetting: PageSize=Letter"
*PageRegion A4/A4: "%% FoomaticRIPOptionSetting: PageSize=A4"
*PageRegion 11x17/11x17: "%% FoomaticRIPOptionSetting: PageSize=11x17"
*PageRegion A3/A3: "%% FoomaticRIPOptionSetting: PageSize=A3"
*PageRegion A5/A5: "%% FoomaticRIPOptionSetting: PageSize=A5"
*PageRegion B5/B5 (JIS): "%% FoomaticRIPOptionSetting: PageSize=B5"
*PageRegion Env10/Envelope #10: "%% FoomaticRIPOptionSetting: PageSize=Env10"
*PageRegion EnvC5/Envelope C5: "%% FoomaticRIPOptionSetting: PageSize=EnvC5"
*PageRegion EnvDL/Envelope DL: "%% FoomaticRIPOptionSetting: PageSize=EnvDL"
*PageRegion EnvISOB5/Envelope B5: "%% FoomaticRIPOptionSetting: PageSize=EnvISOB5"
*PageRegion EnvMonarch/Envelope Monarch: "%% FoomaticRIPOptionSetting: PageSize=EnvMonarch"
*PageRegion Executive/Executive: "%% FoomaticRIPOptionSetting: PageSize=Executive"
*PageRegion Legal/US Legal: "%% FoomaticRIPOptionSetting: PageSize=Legal"
*CloseUI: *PageRegion

*DefaultImageableArea: Letter
*ImageableArea Letter/US Letter: "18 36 594 756"
*ImageableArea A4/A4: "18 36 577 806"
*ImageableArea 11x17/11x17: "18 36 774 1188"
*ImageableArea A3/A3: "18 36 824 1155"
*ImageableArea A5/A5: "18 36 403 559"
*ImageableArea B5/B5 (JIS): "18 36 498 693"
*ImageableArea Env10/Envelope #10: "18 36 279 648"
*ImageableArea EnvC5/Envelope C5: "18 36 441 613"
*ImageableArea EnvDL/Envelope DL: "18 36 294 588"
*ImageableArea EnvISOB5/Envelope B5: "18 36 481 673"
*ImageableArea EnvMonarch/Envelope Monarch: "18 36 261 504"
*ImageableArea Executive/Executive: "18 36 504 720"
*ImageableArea Legal/US Legal: "18 36 594 972"

*DefaultPaperDimension: Letter
*PaperDimension Letter/US Letter: "612 792"
*PaperDimension A4/A4: "595 842"
*PaperDimension 11x17/11x17: "792 1224"
*PaperDimension A3/A3: "842 1191"
*PaperDimension A5/A5: "421 595"
*PaperDimension B5/B5 (JIS): "516 729"
*PaperDimension Env10/Envelope #10: "297 684"
*PaperDimension EnvC5/Envelope C5: "459 649"
*PaperDimension EnvDL/Envelope DL: "312 624"
*PaperDimension EnvISOB5/Envelope B5: "499 709"
*PaperDimension EnvMonarch/Envelope Monarch: "279 540"
*PaperDimension Executive/Executive: "522 756"
*PaperDimension Legal/US Legal: "612 1008"

*OpenUI *InputSlot/Media Source: PickOne
*FoomaticRIPOption InputSlot: enum CmdLine A
*OrderDependency: 100 AnySetup *InputSlot
*DefaultInputSlot: Default
*InputSlot Default/Printer Default: "%% FoomaticRIPOptionSetting: InputSlot=Default"
*FoomaticRIPOptionSetting InputSlot=Default: " -dMediaPosition=0"
*InputSlot Upper/Upper Tray: "%% FoomaticRIPOptionSetting: InputSlot=Upper"
*FoomaticRIPOptionSetting InputSlot=Upper: " -dMediaPosition=4"
*InputSlot Middle/Middle Tray: "%% FoomaticRIPOptionSetting: InputSlot=Middle"
*FoomaticRIPOptionSetting InputSlot=Middle: " -dMediaPosition=5"
*InputSlot Lower/Lower Tray: "%% FoomaticRIPOptionSetting: InputSlot=Lower"
*FoomaticRIPOptionSetting InputSlot=Lower: " -dMediaPosition=6"
*InputSlot Multipurpose/Multipurpose Tray: "%% FoomaticRIPOptionSetting: InputSlot=Multipurpose"
*FoomaticRIPOptionSetting InputSlot=Multipurpose: " -dMediaPosition=3"
*InputSlot Automatic/Automatic: "%% FoomaticRIPOptionSetting: InputSlot=Automatic"
*FoomaticRIPOptionSetting InputSlot=Automatic: " -dMediaPosition=1"
*InputSlot Manual/Manual Feeder: "%% FoomaticRIPOptionSetting: InputSlot=Manual"
*FoomaticRIPOptionSetting InputSlot=Manual: " -dMediaPosition=2"
*CloseUI: *InputSlot

*OpenUI *Duplex/Double-Sided Printing: PickOne
*FoomaticRIPOption Duplex: enum CmdLine A
*OrderDependency: 100 AnySetup *Duplex
*DefaultDuplex: None
*Duplex DuplexNoTumble/On (Flip on Long Edge): "%% FoomaticRIPOptionSetting: Duplex=DuplexNoTumble"
*FoomaticRIPOptionSetting Duplex=DuplexNoTumble: " -dDuplex"
*Duplex DuplexTumble/On (Flip on Short Edge): "%% FoomaticRIPOptionSetting: Duplex=DuplexTumble"
*FoomaticRIPOptionSetting Duplex=DuplexTumble: " -dDuplex -dTumble"
*Duplex None/Off: "%% FoomaticRIPOptionSetting: Duplex=None"
*FoomaticRIPOptionSetting Duplex=None: ""
*CloseUI: *Duplex

*FoomaticRIPOption ColorModel: enum CmdLine B 100
*FoomaticRIPOptionSetting ColorModel=Grayscale: " -sDEVICE=pxlmono"

*CloseGroup: General

*OpenGroup: PrintoutMode/Printout Mode

*OpenUI *PrinterResolution/Resolution: PickOne
*FoomaticRIPOption PrinterResolution: enum CmdLine A
*OrderDependency: 100 AnySetup *PrinterResolution
*DefaultPrinterResolution: FromPrintoutMode
*PrinterResolution FromPrintoutMode/Controlled by 'Print Quality': "%% FoomaticRIPOptionSetting: PrinterResolution=@PrintoutMode"
*PrinterResolution 300x300dpi/300x300 DPI: "%% FoomaticRIPOptionSetting: PrinterResolution=300x300dpi"
*FoomaticRIPOptionSetting PrinterResolution=300x300dpi: " -r300x300"
*PrinterResolution 600x600dpi/600x600 DPI: "%% FoomaticRIPOptionSetting: PrinterResolution=600x600dpi"
*FoomaticRIPOptionSetting PrinterResolution=600x600dpi: " -r600x600"
*PrinterResolution 1200x600dpi/1200x600 DPI: "%% FoomaticRIPOptionSetting: PrinterResolution=1200x600dpi"
*FoomaticRIPOptionSetting PrinterResolution=1200x600dpi: " -r1200x600"
*PrinterResolution 1200x1200dpi/1200x1200 DPI: "%% FoomaticRIPOptionSetting: PrinterResolution=1200x1200dpi"
*FoomaticRIPOptionSetting PrinterResolution=1200x1200dpi: " -r1200x120&&
0"
*End
*CloseUI: *PrinterResolution

*CloseGroup: PrintoutMode


*% Generic boilerplate PPD stuff as standard PostScript fonts and so on

*DefaultFont: Courier
*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM
*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM
*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM
*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM
*Font Bookman-Demi: Standard "(001.004S)" Standard ROM
*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM
*Font Bookman-Light: Standard "(001.004S)" Standard ROM
*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM
*Font Courier: Standard "(002.004S)" Standard ROM
*Font Courier-Bold: Standard "(002.004S)" Standard ROM
*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM
*Font Courier-Oblique: Standard "(002.004S)" Standard ROM
*Font Helvetica: Standard "(001.006S)" Standard ROM
*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM
*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM
*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM
*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM
*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM
*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM
*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM
*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM
*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM
*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM
*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM
*Font Palatino-Bold: Standard "(001.005S)" Standard ROM
*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM
*Font Palatino-Italic: Standard "(001.005S)" Standard ROM
*Font Palatino-Roman: Standard "(001.005S)" Standard ROM
*Font Symbol: Special "(001.007S)" Special ROM
*Font Times-Bold: Standard "(001.007S)" Standard ROM
*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM
*Font Times-Italic: Standard "(001.007S)" Standard ROM
*Font Times-Roman: Standard "(001.007S)" Standard ROM
*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM
*Font ZapfDingbats: Special "(001.004S)" Standard ROM


Guardamos el archivo con Ctrl+s y cerramos con Ctrl+q. Reiniciamos el equipo con el comando:

sudo reboot

Al retornar al sistema, conectamos la impresora impresora por el puerto USB y la encendemos. La misma debería ser detectada y configurada automáticamente por el sistema CUPS de impresión. Ahora podremos seleccionarla como impresora de trabajo local, e imprimir con ella.