Archivo de la etiqueta: usb

Fallos en una unidad USB después de hibernar/suspender mi ordenador

Si usas hibernar / suspender en tu ordenador y tienes unidades USB montadas habitualmente, es posible que cuando vuelva a despertar no reconozca las unidades USB y te de algún tipo de error.

La forma más rápida de evitar problemas es desmontar todas las unidades USB justo antes de hibernar y volver a montarlas después de despertar. Podemos automatizarlo todo para que ocurra sin tener que hacer nada, solo hay que añadir un script en el directorio /etc/pm/sleep.d/ (suponiendo que usas un sistema Debian o Ubuntu). Observa el script, es muy sencillo, y cámbialo según tus necesidades. Recuerda que, como cualquier script, debe tener permisos de ejecución.

#!/bin/sh
case "$1" in
       hibernate|suspend)
             umount /media/LinBkp1
             umount /media/LinBkp2
             ;;
       thaw|resume)
             mount /media/LinBkp1
             mount /media/LinBkp2
             ;;
       *)
             exit 0
             ;;
esac

Debian no reconoce mi Kindle Touch

Si, si lo reconoce. Incluso podrás montarlo con el comando mount manualmente después de enchufar el kindle al ordenador por USB. Pero no será reconocido automáticamente ni será detectado por Calibre aunque lo hagas.

Para que haga todo eso necesitas instalar las mtp tools (apt-get install mtp-tools mptfs libmtp8). Y con eso ya está. Ahora debería reconocerlo de forma automática tanto Debian como Calibre en cuanto lo conectes por USB.

Estoy intentando configurar un modem Smartlink en Ubuntu y no encuentro el paquete sl-modem-source

Recientemente me he comprado un modem/fax USB para sustituir al viejo modem serie que tenía. Obviamente, el modem en sí mismo no lo necesito para nada, pero sí me interesan las funciones fax. Por desgracia, los nuevos ordenadores tienden a venir sin puerto serie, lo que es un problema si pretendes usar un modem/fax, así que una posible solución es instalar un modem USB.

Yo compré uno de la marca Dynamode, teóricamente soportado por Linux, que lo identifica con el comando «lsusb» de esta forma:

[lacofi@selene]$ lsusb
Bus 011 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 010 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 009 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 008 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 007 Device 003: ID 046d:c00b Logitech, Inc. MouseMan Wheel
Bus 007 Device 002: ID 046d:c317 Logitech, Inc.
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 002: ID 0483:7554 SGS Thomson Microelectronics 56k SoftModem 
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 005: ID 0718:1000 Imation Corp.
Bus 003 Device 004: ID 059f:1018 LaCie, Ltd
Bus 003 Device 002: ID 04b4:6560 Cypress Semiconductor Corp. CY7C65640 USB-2.0 "TetraHub"
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 002: ID 0424:2250 Standard Microsystems Corp.
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 007: ID 04a9:220e Canon, Inc. CanoScan N1240U/LiDE 30
Bus 001 Device 006: ID 0409:005a NEC Corp. HighSpeed Hub
Bus 001 Device 005: ID 0409:005a NEC Corp. HighSpeed Hub
Bus 001 Device 004: ID 059f:1018 LaCie, Ltd
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Observa la línea marcada en cian y que habla de un Softmodem. Si sigues tirando del hilo a través de Google, verás que este modem lleva un chipset Smartlink, y que la instalación seguiría estos pasos:

[lacofi@selene]$ sudo su
password:
[root@selene]# apt-get install module-assistant
[root@selene]# module-assistant auto-install sl-modem
[root@selene]# apt-get install sl-modem-daemon

Y después reiniciamos el sistema.

Vale, todo parece muy sencillo, pero cuando lo hice en mi máquina, me encontré con que no existía el paquete sl-modem-source en los repositorios, y module-assistant abortaba la operación porque no tenía código fuente para poder compilar.

Y a eso iba. Resulta que sl-modem-source solo está disponible para los sistemas de 32 bits. Si utilizas la versión de Linux de 64 bits (lo sabrás porque en la salida del comando «uname -a» sale un misterioso «x86_64» por algún lado), no dispondrás de ese paquete y por tanto no podrás hacer funcionar tu modem Smartlink.

Se siente.

Una posible solución es hacer funcionar una máquina virtual VMware. Supongo que VirtualBox también sirve, todo depende del buen o mal soporte que tenga de USB. El caso es que a mí el modem funciona de perlas en VMware bajo un sistema invitado Windows XP Pro. Y supongo que no debería haber problemas tampoco para que funcionase instalando un sistema invitado Ubuntu Linux 32 bits. ;-)

He actualizado el iTunes de mi máquina virtual VMware a la 9.2 y ahora se cuelga cuando intento sincronizar el iPod

Sip. Así es. :-(

Si tienes una máquina VMware con un sistema Windows que usas para sincronizar tu iPod, es muy probable que tarde o temprano acabes actualizando el iTunes a la versión 9.2. A partir de ese momento, probablemente tendrás serios problemas. Con un sistema Windows XP Pro, mi iTunes se colgaba de forma caótica cada vez que intentaba sincronizar el iPod. Lo curioso es que el iTunes muchas veces no llegaba siquiera a aparecer en pantalla al enchufar el iPod, pero para el administrador de procesos sí que estaba funcionando. Con el Windows 7 Home, el problema era incluso más serio, porque se me colgaba no solo el iTunes, sino que desestabilizaba todo el sistema Windows.

Malgasté un montón de tiempo intentando averiguar qué pasaba, antes de que se me pasara por la cabeza intentarlo con un Windows instalado en una partición real (y no una máquina VMware). Me costó, porque hasta entonces siempre había sincronizado sin problemas en VMware, con múltiples versiones tanto de VMware como de iTunes, así que no veía por qué iba a ser un problema ahora. Pero el caso es que en una partición real, el iPod se sincronizaba como la seda (a toda leche, por cierto).

Tengo la teoría no confirmada de que los ingenieros de Apple han toqueteado en el código del iTunes 9.2 para que acceda al hardware USB de forma irregular con el fin de acelerar el acceso. La mayoría de las máquinas reales no se dan cuenta, solo aumentan su rendimiento. Pero las máquinas VMware (y supongo que también algunas máquinas reales con hardware rarito), sí se daban cuenta y les sentaba bastante mal.

Si quieres seguir utilizando VMware para sincronizar tu iPod, ¿hay solución?.

Pues sip. A fecha de hoy, VMware ha sacado una actualización (la versión 7.1.1) que «corrigue errores en dispositivos USB». Efectivamente, tal y como suena, el principal motivo de esta actualización es perfeccionar la virtualización de USB para que los dispositivos no tengan problemas. Y puedo confirmar que VMware 7.1.1 es capaz de sincronizar correctamente (y muy rápido, además), el iPod con iTunes 9.2 (o superiores).

Así que si tienes este problema, actualiza tu VMware a la versión 7.1.1 o más alta. A la voz de ya. ;-)

Conectar Ubuntu 9.10 con Internet Everywhere de Orange usando wvdial

Con Ubuntu 9.10, Internet Everywhere de Orange con un modem Huawei E160E funciona «out of the box», es decir, enchufar y listo, al menos en mi sistema y con un kernel 2.6.31-20, que es el que actualmente se instala automáticamente con la actualización rutinaria de paquetes que lanza el sistema.

Pero si por cualquier motivo quieres usar wvdial, también puedes hacerlo.

Naturalmente, lo primero será instalar wvdial con «sudo apt-get install wvdial». Y después tienes que crear un fichero /etc/wvdial.conf tal que así:

[Dialer Orange]
Init1=ATZ
Init2=ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
Phone=*99#
Username=ORANGE
Password=ORANGE
Modem=/dev/ttyUSB0

[Dialer pin]
Modem = /dev/ttyUSB0
Baud = 115200
Init1 = AT+CPIN=1234

Obviamente, tendrás que poner el verdader pin en la entrada «CPIN» de [Dialer pin].

Ahora, para conectarte, solo tendrás que hacer:

[lacofi@sophie]$ sudo su
password:
[root@sophie]# wvdial pin
[root@sophie]# wvdial Orange
--> Carrier detected.  Waiting for prompt.
--> Don´t know what to do!  Starting pppd and hoping for the best.
--> Starting pppd at Thu Sep 27 13:04:29 2007
--> Warning: Couldn´t modify /etc/ppp/pap-secrets: Permission denied
--> --> PAP (Password Authentication Protocol) may be flaky.
--> Warning: Couldn´t modify /etc/ppp/chap-secrets: Permission denied
--> --> CHAP (Challenge Handshake) may be flaky.
--> Pid of pppd: 15838
--> Using interface ppp0
--> local  IP address 83.188.171.59
--> remote IP address 10.64.64.64
--> primary   DNS address 130.244.127.161
--> secondary DNS address 130.244.127.169

Observa que hago la conexión como root. Si quieres hacerla como usario normal, lo único que tienes que hacer es meter a ese usuario en el grupo «dip», porque si no, no tendrás permisos suficientes para ejecutar pppd:

Para meter al usuario lacofi en el grupo dip, tienes que editar el fichero /etc/group, buscar la entrada «dip» y poner «lacofi» (o varios usuarios separados por comas) al final, así:

dip:x:30:lacofi,maria

Pero recuerda que para que el nuevo grupo entre en vigor tienes que deslogar y volver a logarte.

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.

¿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 9.04 a 9.10 Karmic Koala, es posible que te pase como a mi, y que el modem ya no funcione. Sin embargo, en un Ubuntu 9.10 Karmic Koala recién instalado (no me refiero a una actualización, sino a instalarlo como nuevo), sí que parece funcionar todo correctamente, al menos con el kernel 2.6.31-20 que se instala tras la primera actualización de paquetes.

Se supone que cualquier versión superior a 9.10 debería por tanto funcionar correctamente. Y así es: tras actualizar de nuevo mi Ubuntu a 10.04 Lucid Lynx, compruebo que Internet Everywhere continúa conectando sin problemas con el modem Huawei E160E.

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

He actualizado mi Gentoo y ahora XSane no me detecta el escáner

Este problema me ha ocurrido en una de las últimas actualizaciones periódicas de mi Gentoo. Gentoo se mantiene al día con un solo comando «emerge -uDk world», que si lo haces con cierta frecuencia te mantiene todo el sistema como si lo acabaras de instalar nuevecito. Solo tienes que pararte un poco para actualizar las configuraciones. Afortunadamente es un proceso que está muy bien automatizado a través de la utilidad «dispatch-conf», que prácticamente piensa por sí misma y solo te pregunta cuando tiene dudas (y aprende sobre la marcha, con lo que una vez resueltas las dudas es muy probable que ya no vuelva a preguntar).

Pero recientemente debí meter la pata, y XSane dejó de detectar mis escáners (tengo dos, un Canon Lide 30 y un HP Scanjet 6300C con alimentador automático de hojas). Curiosamente, ambos eran detectados correctamente por sane-find-scanner, pero no por XSane ni tampoco por xscanimage.

Y el problema estaba en la configuración, así que estoy seguro de que cometí un error contestando a alguna pregunta que me hizo dispatch-conf. Concretamente, mi fichero /etc/sane.d/dll.conf quedó completamente vacío, con lo que sane no podía utilizar ninguno de los backend disponibles.

La solución es muy sencilla, casi un trámite. Vete a la página de SANE, concretamente al listado de fabricantes y busca el modelo de tu escáner en la tabla correspondiente a su fabricante. A la derecha, encuentra cuál es el backend apropiado para ese modelo concreto y luego mete el nombre del backend en el fichero /etc/sane.d/dll.conf. Si tienes varios escáners, entonces tendrás que poner un nombre de backend por cada línea. En mi caso, el fichero contendrá esto:

 
# sane backends para el Canon Lide 30 y HP Scanjet 6300C con ADF:
plustek
hp

Ya ves qué facil. ;-)

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?.

Atención: Este truco solo funciona hasta cierto punto. Concretamente hasta el kernel 2.6.31. Por encima de ahí, más concretamente, con Ubuntu 10.04, NO HE CONSEGUIDO compilar los drivers, con lo que mi bonita tarjeta PCI Express se ha convertido en un bonito pisapapeles. Gracias, Moschip!!!!!!.  :-(((

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. :-)

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. ;-)