KHP

 
 

Hotplug, którego nie ma

Problem jest następujący: drukarka HP LaserJet 1020 podpięta do serwera na FreeBSD, na którym stoi CUPS i udostępniona ją po sieci innym komputerom. Uniksowe sterowniki foo2zjs doskonale sobie z nią radzą, jednak za każdym razem, gdy drukarka ma pracować, trzeba ręcznie załadować do niej firmware. Zamiast robić to po ssh, naskrobałem skrypt, który wykrywa podpięcie drukarki i automatycznie ładuje do niej firmware.



Zawsze, gdy kabel USB zostanie podłączony (lub włączone zostanie zasilanie drukarki), w logu systemowym (dmesg) pojawia się linijka postaci:

ugen0: <Hewlett-Packard HP LaserJet 1020, class 0/0, rev 2.00/1.00, addr 2> on uhub4

Idea jest bardzo prosta: napisać skrypt, który będzie nasłuchiwał komunikatów systemowych, tzn. przeglądał dmesg co 10 sekund w poszukiwaniu linijki o podłączeniu drukarki. Jeśli wykryje, że drukarka została podłączona, niech automatycznie ładuje do niej firmware.

Samo załadowanie firmware’u to jedna komenda:

$ cat /usr/local/share/foo2zjs/firmware/sihp1020.dl > /dev/ugen0.1

Cały skrypt wygląda mniej więcej tak hp_load_firmware.sh

Wystarczy podpiąć go do /etc/rc.local i mamy imitację hotpluga ;)


Komentarze

  1. laptopcontrol · 2009-10-24 18:31

    Świetna sprawa, oby więcej takich rozwiązań! :)

Napisz komentarz






Textile - pomoc