Blog

Categorías

Calendario

<<   Diciembre 2005  >>
LMMiJVSD
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  

Archivos

Sindicación

Apúntate

Blog de Xer0

Otro blog más a tus RSSs

Diciembre del 2005

usbmgr a hotplug

19 de Diciembre, 2005, 21:16

Por @ 19 de Diciembre, 2005, 21:16 en General
Por necesidades que no vienen a cuento ahora he tenido que cambiar de usbmgr a hotplug como gestor de dispositivos. Estos dos sistemas funcionan de forma similar, cuando se conecta un dispositivo (usb, pcmcia, etc.) permiten ejecutar un script con comandos.

¿Para qué es útil esto? Pues yo por ejemplo lo usaba para hacer funcionar mi impresora, una HP Laserjet 1005. Para que funcione es necesario que una vez encendida y antes de imprimir se le cargue un firmware determinado.

Ambos sistemas tienen un funcionamiento similar: un fichero donde a un determinado dispositivo USB se le asigna un script y el propio script.

usbmgr

La forma de asociar el script al dispositivo es creando los siguientes ficheros en  /etc/usbmgr/vendor/03f0/1317/ con los contenidos mostrados:

machinilla:/etc/usbmgr/vendor/03f0/1317# cat script
lj1005
machinilla:/etc/usbmgr/vendor/03f0/1317# cat module
usblp

03f0 es el código del fabricante HP (idVendor) y 1317 es el código del producto (idProduct), en este caso la impresora LJ1005.

El script en sí que tenía para cargar el firmware era:

#!/bin/sh
#
# LJ 1005 setup script
# Se le envia el firmware a la impresora cada vez que
# se enciende
cupsdisable LJ1005
cat /usr/share/foo2zjs/firmware/sihp1005.dl > /dev/usb/lp0
cupsenable LJ1005


usbmgr comprueba el idVendor y el idProduct del dispositivo conectado y busca si tiene definido un módulo y script para él. Si es así, carga el módulo y ejecuta el script.

hotplug

Con hotplug no es necesario modificar el script pero sí la forma de asociarlo a un dispositivo. Para ello hay que crear un fichero con extensión usermap dentro del directorio /etc/hotplug/usb/. En mi caso el fichero es:

machinilla:/etc/hotplug/usb# cat lj1005.usermap
# usb module   match_flags idVendor idProduct bcdDevice_lo bcdDevice_hi bDeviceClass bDeviceSubClass bDeviceProtocol bInterfaceClass bInterfaceSubClass bInterfaceProtocol driver_info
lj1005         0x0000      0x03f0   0x1317    0x0000       0x0000       0x00         0x00            0x00            0x07            0x01               0x02               0x00000000


Los datos se pueden obtener de:

machinilla:/etc/hotplug/usb# lsusb -v
(...)
Bus 002 Device 004: ID 03f0:1317 Hewlett-Packard LaserJet 1005
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               1.10
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0
  bDeviceProtocol         0
  bMaxPacketSize0         8
  idVendor           0x03f0 Hewlett-Packard
  idProduct          0x1317 LaserJet 1005
  bcdDevice            1.20
  iManufacturer           1 Hewlett-Packard
  iProduct                2 hp LaserJet 1005 series
  iSerial                 0
  bNumConfigurations      1
  Configuration Descriptor:
(...)

    Interface Descriptor:
(...)

      bInterfaceClass         7 Printer
      bInterfaceSubClass      1 Printer
      bInterfaceProtocol      2 Bidirectional
      iInterface              0
(...)

Se copia el script tal cual estaba a /etc/hotplug/usb/lj1005 y listo. Cada vez que volvamos a encender la impresora, el LED volverá a parpadear unos segundos en naranja y luego estará lista para funcionar.

Búsqueda de ficheros en paquetes .deb

14 de Diciembre, 2005, 19:54

Por @ 14 de Diciembre, 2005, 19:54 en General
Para buscar ficheros dentro de paquetes .deb hay dos alternativas (que yo conozca, se admiten comentarios).

Alternativa 1: apt-file

Dado un nombre de fichero nos muestra los paquetes Debian que lo contienen. Antes de empezar a probarlo hay que instalarlo y actualizar su base de datos:

apt-get install apt-file && apt-file update

Una vez hecho esto podemos hacer varias cosas:
  •     update                           Fetch Contents files from apt-sources.
  •     search <pattern>       Search files in packages
  •     list|show <pattern>  List files in packages
  •     purge                             Remove cache files
Ejemplo 1: queremos desinstalar tc pero no sabemos en qué paquete está.

machinilla:~# apt-file search tc
3ddesktop: etc/3ddesktop/3ddesktop.conf
855resolution: etc/default/855resolution
855resolution: etc/init.d/855resolution
915resolution: etc/default/915resolution
(...)
zsh30: etc/zsh30/zshenv
zsh30: etc/zsh30/zshrc
zvbi: etc/default/zvbi
zvbi: etc/init.d/zvbi


Uff, demasiado largo como para andar buscando uno a uno. Depuramos un poco más la búsqueda. Sabemos que el fichero concreto que estamos buscando es /sbin/tc así que buscamos solo ese:

machinilla:~# apt-file search /sbin/tc
ax25-tools: usr/sbin/tcp_call
dsniff: usr/sbin/tcpkill
dsniff: usr/sbin/tcpnice
iproute: sbin/tc           <== ¡este es!
irpas: usr/sbin/tctrace
isic: usr/sbin/tcpsic
jail: usr/sbin/tcplog
tcng: usr/sbin/tcc
tcpd: usr/sbin/tcpd
tcpd: usr/sbin/tcpdchk
tcpd: usr/sbin/tcpdmatch
tcpdump: usr/sbin/tcpdump
tcpick: usr/sbin/tcpick
tcpquota: usr/sbin/tcp_masq_openfw
tcpquota: usr/sbin/tcpperiod
tcpquota: usr/sbin/tcpquotaadmin
tcpquota: usr/sbin/tcpquotad
tcpreplay: usr/sbin/tcpreplay
tcpslice: usr/sbin/tcpslice
tcpspy: usr/sbin/tcpspy
tcpxtract: usr/sbin/tcpxtract


Pues nada, a borrarlo.

dpkg --purge iproute

Ejemplo 2: queremos instalar wput pero antes nos gustaría saber qué ficheros va a instalar.

machinilla:~# apt-file show wput
wput: usr/bin/wput
wput: usr/share/doc/wput/TODO
wput: usr/share/doc/wput/USAGE.examples
wput: usr/share/doc/wput/USAGE.resumehandling
wput: usr/share/doc/wput/USAGE.urlhandling
wput: usr/share/doc/wput/changelog.Debian.gz
wput: usr/share/doc/wput/changelog.gz
wput: usr/share/doc/wput/copyright
wput: usr/share/doc/wput/passwordfile
wput: usr/share/doc/wput/wputrc.gz
wput: usr/share/man/man1/wput.1.gz

Ah vale, son poquitos. Lo instalamos.

Alternativa 2: http://packages.debian.org

En el apartado Search the contents of packages de http://packages.debian.org se puede hacer todo lo anterior pero desde un navegador.
Útil, ¿no? ;-)


Blog alojado en ZoomBlog.com