Luis Angel Cofiño

Trucos Linux

Sección Catorce





Secciones

Índices

  1. 22/11/2009: Imation Odyssey en Linux
  2. 10/09/2009: Tarjeta Startech PCIe (PCI Express) con chip MSC9901
  3. 25/09/2009: ¿Puedo conectar mi Ubuntu con Internet Everywhere de Orange?
  4. 29/03/2009: No consigo poner en marcha Firestarter en Ubuntu
  5. 29/03/2009: Conexión a Internet continua en Ubuntu, incluso deslogado
  6. 16/11/2008: Script para crear un documento djvu
  7. 01/11/2008: Configurar un SAI Belkin Active Backup en Gentoo
  8. 27/09/2008: Amarok no envía información "now playing" a Last.FM

  * *

Imation Odyssey en Linux

Hace tiempo que llevaba buscando algún sistema de backup en cartuchos, pero ninguno me convencía. Supongo que lo que buscaba era un pelín exigente: por ejemplo lo quería en cartuchos pero disco duro, no cinta, con alta velocidad de acceso, con mucha capacidad y ampliable sin tener que cambiar de aparato.

Al final me he decidido por la Imation Odyssey, un aparato que no es fácil de encontrar, pero que puede comprarse a través de Internet (eBay, por ejemplo). Es un dispositivo USB 2.0, con cartuchos de diferentes capacidades, actualmente hasta 320Gb aunque prometen cartuchos de 500Gb en breve.

Su aspecto es un poco feo (tiene una pinta un tanto soviética, la verdad), pero si da todo lo que promete es justo lo que estaba buscando. Solo falta que funcione en Linux, claro. ;-)

Lo malo es que en ningún lugar de Internet conseguí aclararme de si funcionaba o no en Linux. Así que lo compré un poco a la aventura, imaginando que funcionaría simplemente por ser USB 2.0 y confiando en el buen hacer del módulo usb_storage.

No me equivoqué, porque resulta que la unidad Imation Odyssey funciona en Linux "out of the box". Vamos, que es enchufar y ya está. Grande, muy grande.

Lo que no funciona son los cartuchos. :-P

Lo digo en serio, no funcionan. Linux no consigue leerlos de ningna forma. Pero el problema es una chorrez muy fácil de arreglar. Resulta que la tabla de particiones es anómala, y tiene particiones extrañas que el software Windows propietario utiliza para encriptar y desencriptar.

La solución es muy fácil: utiliza fdisk y borra todas esas particiones. A continuación crea una única partición primaria y formateala en ext3, ext4, o lo que quieras. Tan simple como eso.

¿Quieres encriptar el cartucho?. Si pretendes sacarlo de casa (y la verdad es que eso es lo que le da sentido a una unidad como ésta), puedes hacerlo usando dm-crypt. En este caso te recomiendo que NO uses un archivo de contraseña, sino simplemente una frase de paso. ¿Porqué?. Pues porque así Ubuntu es capaz de manejarlo de forma transparente: en cuanto metas un cartucho encriptado, Ubuntu te sacará un diálogo en el que te pide la contraseña. La tecleas, y hala, a funcionar.

Estoy encantando con el juguetito, la verdad.

  * *

Tarjeta Startech PCIe (PCI Express) con chip MSC9901

Con la compra de selene, me he llevado una pequeña sorpresa (aunque era bastante lógico, por otra parte): el ordenador no trae disquetera (eso es hoy bastante común), pero tampoco puertos paralelo ni puertos serie. Solo trae cuatro puertos USB y uno Firewire, todos en la parte trasera. Un poco escasito, la verdad.

Bien, el caso es que yo necesito muchos más puertos USB traseros, y alguno delantero para enchufar los lápices USB. Además, también necesito al menos dos puertos serie: uno para establecer comunicación con el SAI Trust y otro para mi modem/fax de MultiTech System. Mmmmh... no, el ordenador se conecta a Internet mediante una conexión de banda ancha a través de un puerto ethernet. Pero un anticuado modem/fax puede usarse también para enviar y recibir faxes con el escaner y la impresora, ¿no lo habías pensado?. :-D

Vale. Todos esos problemas pueden solucionarse fácilmente. En Ebay solo se necesita buscar un poquito y se encuentrar montones de soluciones baratas. Por ejemplo, en una tienda alemana (Sotel.de) se encuentra una tarjeta PCI Express USB DeLOCK que abre cuatro puertos USB traseros y un puerto USB interno. Funciona "out of the box" con linux. Vamos, que la instalas y no necesitas hacer nada más en Ubuntu. ;-)

En una tienda francesa (Konektikpc) se encuentra también un panel frontal USB de 3,5 pulgadas, que se conecta al puerto interno de la tarjeta DeLOCK y te abre cuatro puertos frontales USB adicionales. También funciona "out of the box", así que es conectar y listo.

Y en otra tienda francesa (Kalea Informatique), se encuentra una tarjeta PCI Express de marca Startech, con chip Moschip 9901, que proclama funcionar con linux. Es cierto, pero aquí te espera una desagradable sorpresa: no funciona "out of the box", sino que hay que instalar un driver aparte que probablemente no funcionará con tu kernel linux porque hace mucho que se ha quedado anticuado. Vamos, que el cacareado soporte linux es bastante nefasto. Ojo, no es culpa del vendedor que es bastante competente, sino del fabricante del chipset (Moschip), son cosas distintas. Así que tendrás que hackear el driver (bueno, modificar el código fuente a mano), compilarlo y instalarlo por tí mismo.

Afortunadamente, como suele ocurrir con Linux, ese camino ya ha sido recorrido por alguien y nuestro amigo eldiabolosk nos lo cuenta detalladamente. Lo que yo te explico aquí no es más que una traducción de lo que él dice, con alguna puntualización adicional y poco más. Así que las gracias dáselas a él, no a mi, ¿de acuerdo?.

Bien, abre una ventana de terminal y teclea el comando "lspci". Debería salir un listado en el que se hace alguna referencia a la tajeta PCI Express (PCIe) con chipset 9901. En mi caso, por ejemplo, sale esto:

 
[lacofi@selene ~]$lspci
(bla,bla,bla)
00:1f.3 SMBus: Intel Corporation 82801JI (ICH10 Family) SMBus Controller
02:00.0 FireWire (IEEE 1394): VIA Technologies, Inc. Device 3403
03:00.0 Serial controller: NetMos Technology PCIe 9901 Multi-I/O Controller
03:00.1 Serial controller: NetMos Technology PCIe 9901 Multi-I/O Controller
03:00.2 Serial controller: NetMos Technology PCIe 9901 Multi-I/O Controller
03:00.3 Serial controller: NetMos Technology PCIe 9901 Multi-I/O Controller
(y sigue con bla,bla,bla)

Vale, esto es solo para asegurarnos y no equivocarnos de chipset.

Ahora, toma el disco de drivers que te venía con la tarjeta y busca en la carpeta de Linux, chipset 9901. Encontrarás un PDF con instrucciones (que puedes tirar) y un fichero starex.tar.gz que contiene los drivers. Si no lo encuentras, también puedes ir a la página del fabricante del chipset y bajarte el driver.

En cualquier caso, ahora cambia a un directorio (o crea uno especial para trabajar) y desempaqueta el fichero starex.tar.gz. Puedes hacerlo desde línea de comandos o a golpe de ratón, eso no importa, porque no necesitas hacerte root para desempaquetar ni para hackear el driver. Pero sí tendrás que volverte root para compilar e instalar el driver.:

 
[lacofi@selene ~]$ sudo mkdir /opt/starex
password:
[lacofi@selene ~]$ cd /opt/starex 
[lacofi@selene /opt/starex]$ tar -xzvf /media/cdrom/MSC9901/MSC9901_Linux/starex.tar.gz
[lacofi@selene /opt/starex]$ ls
total 104K
-rwxr--r-- 1 root root  65K 2007-10-29 06:16 9900.c*
-rwxr--r-- 1 root root 5,0K 2007-11-08 12:40 9900.h*
-rwxr--r-- 1 root root 4,1K 2007-10-29 06:16 9900-isa.c*
-rwxr--r-- 1 root root 1,1K 2007-10-29 06:16 9900-isa.h*
-rwxr--r-- 1 root root  742 2007-10-29 06:16 Makefile*
-rwxr--r-- 1 root root   32 2007-10-29 06:16 mcs9900*
-rwxr--r-- 1 root root 2,3K 2008-02-11 15:58 readme*
[lacofi@selene /opt/starex]$ _

Correcto, esos son los ficheros del código fuente del driver. Ahora hay que modificarlos. El problema es que exigen un kernel muy antiguo, porque los drivers no se actualizan desde Fedora Core 7. Prueba a ver, solo por curiosidad, e intenta compilar:

 
[lacofi@selene /opt/starex]$ make

Si usas Ubuntu, por ejemplo, usarás un kernel mucho más nuevo de lo que el driver admite y no estará soportado. En ese caso, con el comando anterior te saldrán unos cuantos errores que dicen algo acerca de que "struct uart_info" no tiene ningún miembro llamado "tty". Habitualmente, ese error sale en las líneas 622, 852 y 957. Pero vamos a arreglar eso en un pis pas (ventajas del código abierto):

Edita el fichero 9900.c (por ejemplo con vim pero puedes usar el editor de texto que prefieras). Vale, pues ahora tienes que buscar y reemplazar. En todos los sitios en que aparezca esto:

 
port.info->tty

debe quedar así:

 
port.info->port.tty

No tiene pérdida, porque seguramente será en las líneas 622, 852 y 957, las mismas en las que salían los mensajes de error al compilar.

Ahora, en el mismo fichero 9900.c tienes que hacer otra búsqueda para reemplazar. En todos los sitios en los que aparezca esto:

 
SA_SHIRQ

con esto otro:

 
IRQF_SHARED

Ahora solo queda arreglar un poco el instalador, porque el driver está diseñado para Fedora y Ubuntu usa un sistema un poco distinto. Así que si usas Ubuntu edita el fichero Makefile. Vete al apartado "install:" y donde pone:

 
ln -s /etc/init.d/mcs9900 /etc/rc.d/rc3.d/Smcs9900 || true  	
ln -s /etc/init.d/mcs9900 /etc/rc.d/rc5.d/Smcs9900 || true

debe poner:

 
ln -s /etc/init.d/mcs9900 /etc/rc3.d/Smcs9900 || true  	
ln -s /etc/init.d/mcs9900 /etc/rc5.d/Smcs9900 || true

Por último vete al apartado "uninstall:" y donde pone:

 
rm -f /etc/rc.d/rc3.d/Smcs9900
rm -f /etc/rc.d/rc5.d/Smcs9900

debe poner:

 
rm -f /etc/rc3.d/Smcs9900
rm -f /etc/rc5.d/Smcs9900

Bien, ahora vuelve a compilar y después instala los drivers:

 
[lacofi@selene /opt/starex]$ sudo su
passwd:
[root]@selene /opt/starex]# make
rm -f *.mod.c *.o *.ko .*.cmd *.symvers
make -C /lib/modules/2.6.28-15-generic/build/  
SUBDIRS=/opt/MCS9901_Linux/version1.6/starex modules
make[1]: se ingresa al directorio `/usr/src/linux-headers-2.6.28-15-generic'
  CC [M]  /opt/MCS9901_Linux/version1.6/starex/9900.o
/opt/MCS9901_Linux/version1.6/starex/9900.c:752: 
aviso: se definió ¿transmit_chars_dma_stop_done¿ pero no se usa
  CC [M]  /opt/MCS9901_Linux/version1.6/starex/9900-isa.o
  Building modules, stage 2.
  MODPOST 2 modules
  CC      /opt/MCS9901_Linux/version1.6/starex/9900-isa.mod.o
  LD [M]  /opt/MCS9901_Linux/version1.6/starex/9900-isa.ko
  CC      /opt/MCS9901_Linux/version1.6/starex/9900.mod.o
  LD [M]  /opt/MCS9901_Linux/version1.6/starex/9900.ko
make[1]: se sale del directorio `/usr/src/linux-headers-2.6.28-15-generic'
(observa que no hay ningún mensaje de error)
[root]@selene /opt/starex]# make install
cp 9900.ko 9900-isa.ko /lib/modules/2.6.28-15-generic/kernel/drivers/serial/
depmod -A
chmod +x mcs9900
cp mcs9900 /etc/init.d/
ln -s /etc/init.d/mcs9900 /etc/rc3.d/Smcs9900 || true
ln -s /etc/init.d/mcs9900 /etc/rc5.d/Smcs9900 || true
modprobe 9900
modprobe 9900-isa
root@selene /opt/starex]# _

Vale, ahora ejecuta un comando dmesg y deberías ver que el listado termina con algo así:

 
starex-serial 0000:03:00.0: PCI INT A -> GSI 17 (level, low) -> IRQ 17
starex-serial 0000:03:00.0: setting latency timer to 64
0000:03:00.0: ttyD0 at I/O 0xd480 (irq = 17) is a starex-serial
starex-serial 0000:03:00.1: PCI INT B -> GSI 18 (level, low) -> IRQ 18
starex-serial 0000:03:00.1: setting latency timer to 64
0000:03:00.1: ttyD1 at I/O 0xd800 (irq = 18) is a starex-serial
43.650254] starex-serial 0000:03:00.2: PCI INT C -> GSI 19 (level, low) -> IRQ 19
starex-serial 0000:03:00.2: setting latency timer to 64
0000:03:00.2: ttyD2 at I/O 0xd880 (irq = 19) is a starex-serial
starex-serial 0000:03:00.3: PCI INT D -> GSI 16 (level, low) -> IRQ 16
starex-serial 0000:03:00.3: setting latency timer to 64
0000:03:00.3: ttyD3 at I/O 0xdc00 (irq = 16) is a starex-serial

Lo que viene a significar que se han abierto cuatro nuevos puertos serie desde /dev/ttyD0 hasta /dev/ttyD3, aunque como la tarjeta solo trae dos puertos reales, únicamente estarán operativos /dev/ttyD0 y /dev/ttyD1. Comprueba que han sido creados de verdad:

 
[root]@selene /opt/starex]# ls /dev/ttyD*
crw-rw---- 1 root dialout 200, 0 2009-10-05 02:18 /dev/ttyD0 
crw-rw---- 1 root dialout 200, 1 2009-10-05 02:18 /dev/ttyD1
crw-rw---- 1 root dialout 200, 2 2009-10-05 02:18 /dev/ttyD2
crw-rw---- 1 root dialout 200, 3 2009-10-05 02:18 /dev/ttyD3

Los drivers deberían cargarse automáticamente en el arranque del sistema, pero si quieres asegurarte solo tienes que añadir una entrada al fichero /etc/rc.local que ponga esto:

 
/etc/init.d/mcs9900 start

Y solo un detalle más: Si actualizas tu Ubuntu a la versión 9.10, verás que lleva un kernel 2.6.31 y eso afecta a cómo son detectados los puertos serie: en este caso los puertos /dev/ttySx no se crean si no existen, y en su lugar los de la tarjeta se crean como /dev/ttySx en lugar de /dev/ttyDx. No tiene importancia, pero puede despistarte y tendrás que cambiar la configuración de los programas que utilicen el puerto serie.

Que lo disfrutes. Y te recuerdo que las gracias debes dárselas a eldiabolosk, no a mi. Con gente así, da gusto, la verdad. :-)

  * *

¿Puedo conectar mi Ubuntu con Internet Everywhere de Orange?

En principio la respuesta es un rotundo "si" con Ubuntu 9.04, pero en realidad todo depende del módem. Actualmente (a fecha 25/09/2009), el módem USB que Orange proporciona con el servicio Internet Everywhere es el Huawei E160E pero es muy, muy posible que funcione con otros módem y otras compañías telefónicas si el módem está soportado. Para saber eso, tendrás que recurrir a Google porque yo solo puedo confirmarte que el Huawei E160E sí está soportado y sí funciona a la perfección con Orange e Internet Everywhere.

Ojito con esto: Si actualizas tu Ubuntu a 9.10 Karmic Koala, te encontrarás con que el modem ya no funciona. Parece que se trata de un bug en el kernel que afecta a varios modelos de módem USB de Huawei. El bug es conocido por los gurús y parece que ya hay una solución, que se incorporará a futuras versiones del kernel. Os tendré informados. Pero de momento, que sepais que Internet Everywhere NO funciona correctamente con Ubuntu 9.10. Sin embargo, un poquito más abajo te explico una chapucilla con la que puedes conectarte a Internet de todas formas, hasta que esté disponible una actualización con la solución definitiva.

En cuanto a la configuración, la verdad es que es tan complicada que da hasta vergüenza contarlo: solo hay que enchufarlo. :-)

Vale, enciende tu Ubuntu y lógate como usuario. ¿Ya?. Ahora enchufa el módem USB y espera unos segundos. Aparecerá un mensaje OSD que dice que se ha detectado una conexión de Banda Ancha Móvil, lo cual es bastante exacto. Poco después aparecerá un asistente que te hará un par de preguntas sencillitas: le dices que estás en España y que la compañía es Orange, básicamente.

A continuación el asistente se cierra y se abre otro cuadro de diálogo que pregunta el PIN. Escribes el pin (solo lo necesita la primera vez, no volverá a preguntarlo). Y ya está. Es tan simple como eso (de hecho es mucho, pero mucho más sencillito y rápido que en Windows).

¿Y para conectarse?. Haz click en el gestor de red, arriba a la derecha en el escritorio. Es esto de aquí:

*

Con eso te despliega un listado de las conexiones disponibles. Una de ellas será Orange. Haz click en ella y se conectará y el icono cambiará a una antenita. Cuando te canses de navegar, vuelve a hacer click en el icono y pulsa en "Desconectar".

Vamos, que muy mal se te tiene que dar... :-D

Vale, ¿y en Ubuntu 9.10?

Con Ubuntu 9.10 viene actualmente (16/11/2009) un kernel 2.6.31-14, con el que el módem no funciona. Pero sí puedes hacerlo funcionar de todas formas con esta chapucilla que te cuento.

Lo primero de todo tienes que desmontar cualquier disco USB que tengas en marcha (y eso incluye los del propio módem: el que emula un CD y el que maneja la tarjeta microSD).

Ahora abre una ventana de terminal. Todos los comandos a continuación tienes que ejecutarlos como root, o con sudo. Bien, pues ahora tienes que remover el módulo usb-storage.

 
[root@selene ~]# rmmod usb-storage

Ahora ejecuta lsusb y observa atentamente la entrada de Huawei:

 
[root@selene ~]# lsusb
[bla,bla,bla]
Bus 002 Device 005: ID 12d1:1003 Huawei Technologies Co., Ltd. E220 HSDPA Modem

Lo que te marco en color cian es lo importante. Son dos número separados por dos puntos. El primero es el VendorId y el segundo es el ProductId. Para poder usar estos números tienes que anteponer "0x" para indicar que son números hexadecimales. Con esto ejecuta el siguiente comando:

 
[root@selene ~ ]# modprobe usbserial vendor=0x12d1 product=0x1003

Ahora busca el número PID de NetworkManager, y mátalo. No te preocupes, se pondrá en marcha de nuevo inmediatamente.

 
[root@selene ~]# ps aux | grep NetworkManager
root      3332  0.0  0.0  18652  3804 ?        Ssl  02:24   0:00 NetworkManager
[root@selene ~]# kill -9 3332

Ahora haz click en el icono del Network Manager y conéctate a Orange. Deberías conseguirlo sin problemas. Pero solo funcionará una vez. Si te desconectas, no puedes volver a conectar: tendrás que volver a buscar el PID de NetworkManager y volver a matarlo.

Si, lo se, es una chapuza, pero a mí me funciona y me permite conectarme a Internet EveryWhere con Ubuntu 9.10. Ya hay un parche disponible para el kernel, pero está siguiendo los cauces normales y será incorporado en futuras versiones, así que de aquí a que una actualización de Ubuntu lo incorpore, pasará todavía algún tiempo. Hasta entonces, ésta chapuza te permite ir tirando y usar tu módem. Por lo menos a mí me funciona. Suerte.

  * *

No consigo poner en marcha Firestarter en Ubuntu

Si instalas Firestarter en ubuntu, con la sana intención de proteger tu máquina con un cortafuegos, te encontrarás con un par de problemas bastante puñeteros.

El primer tropiezo es que Firestarter se niega a arrancar y se queja de que el dispositivo de red no está disponible. Una estupidez, porque tú estás viendo que tienes una red perfectamente activa.

Una vez que resuelves el primer tropiezo te encuentras con el segundo: Firestarter se pone en marcha cuando se lo mandas, pero no puedes hacer que se ponga en marcha automáticamente al rebotar la máquina.

El primer problema se debe a que Firestarter se pone en marcha con el script /etc/firestarter/firestarter.sh y si lo editas, verás un par de cosas curiosas: que el script pone en marcha comandos del sistema para saber cuál es la red. Y el follón surge porque espera respuestas en inglés y se las dan en castellano.

Efectivamente, en la línea donde pone:

 
MASK=`/sbin/ifconfig $IF | grep Mask | cut -d : -f 4`

...debería poner:

 
MASK=`/sbin/ifconfig $IF | grep Máscara | cut -d : -f 4`

Y en la línea donde pone:

 
BCAST=`/sbin/ifconfig $IF |grep Bcast: | cut -d : -f 3 | cut -d \  -f 1`

debería poner:

 
BCAST=`/sbin/ifconfig $IF |grep Difusión: | cut -d : -f 3 | cut -d \  -f 1`

Y también deberías cambiar en el mismo sentido las líneas que comienzan con INMASK y con INBCAST.

Ahora, Firestarter ya debería reconocer tus redes y ponerse en marcha. Hazlo y configura tu cortafuegos a tu gusto. ¿Ya?. Pues esto nos lleva al segundo problema.

Firestarter no se pondrá en marcha de nuevo en el boot, y cada vez que lo actualices tendrás que volver a editar el script para corregir de nuevo el bug. La forma de evitarlo es nuevamente muy simple: ahora que tienes a Firestarter en marcha y a tu gusto, prescinde de él. ;-)

Con Firestarter funcionando, abre otra ventana de comandos, hazte root, y teclea este comando:

 
[root@jeanette lacofi]# /sbin/iptables-save > /etc/cortafuegos.cfg

Ahora edita el fichero /etc/rc.local y mete este comando en él (también puedes ejecutarlo a mano siempre que necesites arrancar el cortafuegos):

 
[root@jeanette lacofi]# /sbin/iptables-restore < /etc/cortafuegos.cfg

Con estos comandos, obviamente, se salvan a un fichero todas las reglas iptables activas. Y después, podemos ponerlas de nuevo en marcha con el segundo comando. Hala, al carajo el Firestarter. Ya puedes desinstalarlo si te da la gana.

  * *

Conexión a Internet continua en Ubuntu, incluso deslogado

Ubuntu tiene una "feature" que seguramente a muchos os gustará, pero a mi me ha tocado bastante las narices. Estoy hablando por supuesto del famoso Network Manager, que permite que Ubuntu autoconfigure la red sin que el usuario tenga prácticamente que hacer nada.

El problema es que si uno se aparta un poquito de lo habitual, el Network Manager se convierte en un engorro y no en una solución. Por ejemplo, hay un bug que hace que no funcione bien con redes de IP fija, y mira tú por dónde mi ordenador tiene, de hecho, IP fija. Además, el Network Manager se pone en marcha cuando te logas y entras en tu escritorio, pero si la máquina está deslogada no funciona ni la red ni el cortafuegos Firestarter, tócate las narices. Así que si tienes algún servidor de correo instalado (o la mula, sin ir más lejos), necesitarás una red permanente sobre la que la máquina pueda seguir trabajando, incluso por la noche, sin nadie logado.

Afortunadamente, la solución es muy simple. Tú solo edita el fichero /etc/network/interfaces y añade los parámetros de tus redes. Por ejemplo, yo tengo esto:

 
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
address 10.0.0.2
netmask 255.0.0.0
gateway 10.0.0.2

auto eth1
iface eth1 inet static
address 85.152.48.2
netmask 255.255.255.128
gateway 85.152.48.126

Y es así de sencillo. Las entradas "auto" le dicen a Ubuntu que se pondrán en marcha en el boot automáticamente, y estarán siempre activas. Si en vez de "inet static" pones "dhcp" la red se pondrá en marcha con el boot pero se autoconfigurará mediante DHCP.

En cualquier caso, tú tendrás que poner aquí TUS parámetros, pero la cuestión es que cualquier red configurada en este fichero será ignorada por Network Manager y manejada en background, que es lo que nos interesa que una máquina que actúe como servidor.

  * *

Script para crear un documento djvu

A veces le echo un vistazo a las estadísticas de este sitio Web, para ver qué es lo que busca la gente por este antro de perdición.

Lo cierto es que la inmensa mayoría de los usuarios sois sin duda gente que le ha preguntado a Google cosas sobre el hardware o sobre Linux (y siempre hay unas cuantas preguntas también sobre OS/2). Pero dentro de los linuxeros, hay un porcentaje no pequeño de gente que viene buscando cómo crear ficheros djvu o interesados en la gestión documental en general. Y es un porcentaje lo bastante alto como para llamarme la atención. Y ahí es donde quería yo llegar.

Bueno, la verdad es que también me sorprende ver siempre una cierta cantidad de gente preguntándole a Google por mí, con nombre y apellidos. Supongo que son todo aficionados a la Ciencia Ficción en busca de su autor favorito. Así que un saludo, ¿ein?. ;-)

Vale, pues al grano. El caso es que en su dia dejé un artículo en el que hablaba de la creación de ficheros djvu, pero lo que contaba estaba muy personalizado para mi uso y disfrute y dudo mucho de que le resulte útil a nadie, más que como una aportación general de ideas. Así que, dado que hay mucho interés por vuestra parte, y como soy así de majete, pues os he hecho justo lo que estabais buscando: un programilla script escrito en Perl que escanea un documento y lo convierte enterito a formato djvu multipágina. De nada. Ha sido divertidísimo escribirlo. :-)

Os lo podeis bajar pulsando con el botón derecho del ratón aquí, y para ser sinceros, la verdad es que tampoco inventa la rueda: echa mano de lo que hay disponible en casi todas las distribuciones Linux y se limita a servir de front end, de tal forma que se haga todo de la manera más automática posible y sin complicaciones, sea cual sea el ordenador en que se ejecuta. Obviamente, para que funcione debereis tener instalado SANE y DJVU, pero eso ya lo suponíais, ¿verdad?.

La primera vez que se ejecuta, el script buscará qué escaners hay disponibles. Si teneis más de uno os preguntará cual quereis usar para gestión documental. En cualquier caso, la configuración solo se necesita la primera vez, porque el programa recordará todos los ajustes y no volverá a preguntaros. Aún así, si ejecutais la opción "--ajuste", podeis reconfigurarlo todo de nuevo si os apetece o si cambia vuestro hardware. También teneis una opción "--ayuda" que os mostrará la sintaxis del comando, y algún detalle relevante.

Y alguna que otra virguería que me he permitido el lujo de meter. Por ejemplo, si creais un fichero que ya existe, el escaneo no destruye nada sino que añade nuevas páginas a lo ya existente. O por ejemplo, que utilizará el ADF, en caso de que tengáis un escaner con alimentador automático de hojas (lo que es bastante fundamental para hacer gestión documental en serio).

Y más cosillas que dejo que descubrais por vosotros mismos. El script, por supuesto, ha de considerarse bajo Dominio Público, así que es un regalo que os hago. ;-)

Eso sí, un consejo: quizás tengais la tentación de escanearlo todo en color. No lo hagais. La mejor forma es usar Lineart (blanco y negro puro) porque, en gestión documental, lo que interesa es casi siempre el texto puro, no las fotos ni los gráficos complejos. Muy raramente necesitareis algo más complicado que eso, pero si lo necesitais bastará con escanear en escala de grises. Nunca o casi nunca he usado color. Os lo digo porque en Lineart el escaneo es rapidísimo y los ficheros ocuparán solo un puñado de Kb. Aún así, el programa admite la opción de escanear en grises y en color, todo el documento o también solo algunas páginas concretas, aunque esta opción solo está disponible si escaneais sin ADF (lógicamente: con el ADF os irá tragando todas las páginas una tras otra).

Estoy depurando errores y metiendo algunas opciones más. Consulta la ayuda con "escaneo --ayuda". Versión actualizada a fecha 29/01/2009. Si te lo bajaste antes de esa fecha, vuelve a bajártelo, anda.

Disfrutadlo mucho. ;-)

  * *

Configurar un SAI Belkin Active Backup en Gentoo

El SAI Active Backup 800VA de Belkin (BU308000ME) funciona perfectamente en mi Gentoo Linux, y posiblemente también puedan hacerse funcionar las versiones 600VA y 400VA, que son técnicamente equivalentes (solo cambia la potencia de la batería). Sorprendente, porque estos SAI incluyen un software propietario para Linux (WinPower) que resulta que no funciona, mientras que NUT, el software opensource que se supone que no soporta este SAI resulta que sí lo hace.

Tal vez te estés preguntando qué demonios es un SAI (si es así, seguramente es que no lo necesitas, pero en fin). Un SAI es un Sistema de Alimentación Ininterrupida. En inglés sus siglas serían UPS. Básicamente, podríamos decir que es una batería un poco sofisticada capaz de comunicarse con el ordenador por USB o por un puerto serie, para decirle por ejemplo cuánta energía tiene, e incluso darle órdenes a la máquina.

De esta forma, el ordenador ya no estaría enchufado a la red, sino al SAI, de quien se alimenta. También el monitor suele estar enchufado al SAI, y quizás también aquellos discos duros externos que consideres críticos en caso de que se vaya la luz en tu casa. El SAI, a su vez, está enchufado a la red eléctrica que usa para cargar constantemente la batería. Y también suele haber una conexión USB o serie entre el ordenador y el SAI que les permite intercambiar información.

Si la red eléctrica funciona sin problemas, el SAI no hace nada. Bueno, en realidad, sí que hace algo: modular y estabilizar la corriente eléctrica de tal forma que la alimentación al ordenador sea estable. Si hay un corte de luz, en cambio, el SAI salta inmediatamente y comienza a alimentar por su cuenta al ordenador, además de informarle de que está funcionando bajo batería. Esto le da tiempo al usuario a restablecer la energía (por ejemplo si ha saltado el diferencial de la casa). Si es un corte más serio, la energía de la batería suele dar tiempo suficiente para grabar todos los datos y cerrar todos los programas de forma ordenada. El Active Backup 800VA de Belkin, por ejemplo, me proporciona 15 valiosos minutos de autonomía en caso de fallo eléctrico, tiempo suficiente para grabar todo y resguardar todos los datos. Si el fallo eléctrico dura más tiempo que eso (o el ordenador está funcionando solo y no hay nadie en casa), cuando la batería empieza a quedarse agotada informará de ello al ordenador y se ocupará de darle una órden de apagado limpio (shutdown), con lo que la máquina cerrará todos los programas activos y después se apagará limpiamente.

Un SAI funcionando es sencillamente espectacular. Y se vuelve tanto más imprescindible cuanto más inestable sea la red eléctrica de tu casa.

Para configuar el Active Backup de Belkin, necesitamos el programa nut, que está incluido de serie en Gentoo. Pero no nos valdrá la versión estable, sino que necesitaremos la última versión en desarrollo para usar los mejores drivers. La versión 2.2.2 es estable y funciona perfectamente en mi ordenador, así que es la que te recomiendo, pero lo primero que tenemos que hacer es desenmascararla. Para ello, incluye en tu fichero /etc/portage/package.keywords la siguiente línea:

 
sys-power/nut ~86

Y ahora ya puedes instalar el software en tu Gentoo:

 
[lacofi@jeanne]$ su
password:
[root@jeanne]# emerge sys-power/nut

Para otras distribuciones, tendrás que usar la órden equivalente para instalar el software, pero asegúrate siempre de que instalas la última versión disponible. En mi caso, recomiendo la 2.2.2 o superior, aunque también podría valer la 2.2.0 pero no la 2.2.1, que a mí no me funcionaba por razones que no supe identificar.

Ahora tienes que configurar nut. Para ello tendrás que manipular varios ficheros de configuración. Pero lo primero de todo es saber qué driver nut es el correcto para tu SAI. En el caso de mi Active Backup de Belkin, el driver es el megatec_usb (ya te lo digo yo), pero para otros SAI te recomiendo que consultes la lista de fabricantes de la web de nut, aunque a veces tendrás que recurrir al "ensayo y error" o incluso suscribirte a la lista de correo de desarrolladores de nut y hablar con ellos, como hice yo. Son muy amables, y no dudarán en echarte una mano a poco que te molestes en darles datos suficientes sobre tu problema.

Vale. Pues una vez que sepamos el driver, hay que ponerlo en el fichero /etc/nut/ups.conf. En el mio, consta la siguiente información:

 
[belkin]
driver = megatec_usb
port = /dev/hiddev0
desc = "Active Battery Backup"

Los desarrolladores de nut me insistieron en que el driver megatec_usb no utiliza realmente el dispositivo /dev/hiddev0, pero aún así es bueno ponerlo, por si acaso esto cambia en un futuro. Además, hay que tener en cuenta que Gentoo no crea el dispositivo hiddev0 en /dev, sino en un subdirectorio aparte (/dev/usb), así que habrá que apuntar al sitio correcto en /etc/ups.conf o al menos manipular udev para que creen un enlace simbólico cuando enchufemos el SAI. Por ejemplo, podemos meter esta entrada en /etc/udev/rules.d/10-local.rules:

 
KERNEL=="hiddev0", NAME="usb/%k", GROUP="nut", SYMLINK+="hiddev0"

Después hay que reiniciar udev, claro.

Vale. Ahora tenemos que decirle a nut que acepte conexiones del ordenador local y rechace las demás. También podríamos decirle que acepte las de una red local concreta, pero en mi caso preferí que solo las admita de la propia máquina. Para ello, hay que poner esto en /etc/nut/upsd.conf

 
ACL all 0.0.0.0/0
ACL localhost 127.0.0.1/32

ACCEPT localhost
REJECT all

Ahora hay que decirle a nut qué usuarios pueden acceder y en qué condiciones. Para ello, hay que modificar el fichero /etc/nut/upsd.user y poner algo así:

 
[root]
password = <contraseña en plano>
actions = SET
instcmds = ALL

[lacofi]
password = <contraseña en plano>
allowfrom = localhost

Ahora tenemos que decirle al sistema automático de monitorización de nut cómo va a acceder al driver. Para ello, modificamos el fichero /etc/nut/upsmon.conf y ponemos algo así, para que acceda a la batería número 1 en localhost:

 
RUN_AS_USER root
MONITOR belkin@localhost 1 lacofi <contraseña en plano> master

El fichero /etc/nut/upssched.conf no hace falta configurarlo salvo que quieras algo muy concreto y complejo, así que paso.

Bien, pues ya está. Ahora solo que iniciar o reiniciar nut:

 
[root@jeanne]# /etc/init.d/upsd restart
 * Stopping upsd ...                    	[ ok ]
 * Starting upsd ...
Network UPS Tools upsd 2.2.2-exportado
listening on 0.0.0.0 port 3493
Connected to UPS [belkin]: megatec_usb-belkin   [ ok ]

Ahora abandonamos la cuenta root y le preguntamos al SAI qué tal le va la vida:

 
[root@jeanne]# exit
[lacofi@jeanne]$ upsc belkin@localhost
battery.charge: 97.5
battery.voltage: 13.60
battery.voltage.nominal: 12.0
driver.name: megatec_usb
driver.parameter.pollinterval: 2
driver.parameter.port: /dev/hiddev0
driver.version: 2.2.2-exportado
driver.version.internal: 1.5.14
input.frequency: 50.1
input.frequency.nominal: 50.0
input.voltage: 228.9
input.voltage.fault: 228.9
input.voltage.maximum: 231.3
input.voltage.minimum: 225.0
input.voltage.nominal: 230.0
output.voltage: 228.9
ups.beeper.status: enabled
ups.delay.shutdown: 0
ups.delay.start: 2
ups.load: 43.0
ups.mfr: unknown
ups.model: unknown
ups.serial: unknown
ups.status: OL
ups.temperature: 25.0
ups.type: standby

Observa la línea que dice "ups.status: OL". Significa que el UPS (SAI) está "On Line", es decir, que recibe energía de la red eléctrica. Ahora puedes probar a desenchufarlo y ver qué te dice. O incluso dejarlo desenchufado 15 o 20 minutitos y ver cómo inicia la secuencia de shutdown. Que lo disfrutes. :-)

Y un saludo a Carlos, que hizo la pregunta correcta en el momento apropiado. ;-)

  * *

Amarok no envía información "now playing" a Last.FM

Si eres un fan de Amarok, es muy posible que también estés metido en la red social Last.FM, puesto que se integra automáticamente en ella. Solo necesitas abrir una cuenta en Last.FM (eso es de cajón, vaya) y meter tu login y contraseña en la configuración de Amarok.

Pero aunque Amarok se integra de serie con Last.FM, solo envía las canciones que has escuchado, considerando como "escuchada" cualquier canción que has oído más del 50% del tiempo que dura. Esto es suficience para mantener actualizada y al día tu cuenta de Last.FM, así como para poder disfrutar de todas las ventajas de Last.FM desde el propio Amarok: artistas recomendados, temas similares, emisoras de radio personalizadas (en forma de flujos streaming), emisoras de vecindario, etc, etc.

Pero hay una floritura que Amarok no incluye de serie: no soporta el envío de información "escuchando ahora". Es una tontería, porque no tiene relevancia para el funcionamiento interno de Last.FM, pero qué narices, no estamos aquí solo por la funcionalidad, ¿verdad?. Y queda muy mono, lo de decirle a todo el mundo que estás ahora mismo on-line y escuchando música. ;-)

No hay forma de configurar Amarok para que envíe esa información, pero afortunadamente Amarok sí soporta el uso de plugins que añaden funcionalidades nuevas. Y resulta que sí existe un plugin que hace precisamente eso: envía la información "escuchando ahora" a Last.FM, justo cuando empieza la canción, y mantiene la información actualizada hasta que detengas la música o cambies de canción.

El plugin se llama LastFMNotify, así que solo tienes que bajártelo e instalarlo en Amarok. De nada. ;-)

Ya de paso, también puedes echar un vistazo al plugin synctags, que se trae las etiquetas más comunes de la canción que estás oyendo, también desde Last.FM. Y muchos más plugins interesantes disponibles para tu Amarok. Vete a Herramientas, al Gestor de Scripts, y echa un vistazo a todo lo que tienes ahí.


  • Sintaxis HTML 4.01 comprobada
  • Enlaces comprobados


Hecho con gvim * Hecho con CSS