Blog
Categorías
Calendario
<<
Diciembre 2005 >>
|
L | M | Mi | J | V | S | D |
|
|
|
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
|
Diciembre del 2005
usbmgr a hotplug
19 de Diciembre, 2005, 21:16
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
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
|
|