#!/bin/sh # hplj1000: # hplj1005: # hplj1020: # # Hotplug script for HP1000/1005/1020 USB laser printers. The model number # that this script deals with is determined from the udev env. # # Used to download firmware automatically into the printer when it # is powered up or plugged into the USB port. # # The inspiration fo this script is from: # Oscar Santacreu. Alicante-Spain (2002) # Mike Morgan (2004) # Modified by Stefan Schweizer (2005) to work as a udev-RUN-script # # Directory to find downloadable HP firmware files sihpMMMM.dl # FWDIR=/usr/share/foo2zjs/firmware # # Program used to determine USB id information # USBID=/usr/bin/usb_printerid # # Figure out how to log our messages # if [ -t 1 ]; then # Running from a tty... log() { echo "$0: $@" } elif [ -x /usr/bin/logger ]; then # Have logger... log() { logger -t "$0" -- "$@" } else # No logger... log() { echo "$0: $@" >> /var/log/messages } fi # # Figure out the model number from the name of this script # case "$1" in 1000) MODEL=1000 MODELNAME="hp LaserJet $MODEL" ;; 1005) MODEL=1005 MODELNAME="hp LaserJet $MODEL" ;; 1020) MODEL=1020 MODELNAME="HP LaserJet $MODEL" ;; *) log "Only HP LaserJet 1000, 1005 and 1020 are supported" exit ;; esac # # Procedure to load a single device with firmware # load1() { fw="$FWDIR/sihp$MODEL.dl" if [ ! -f "$fw" ]; then log "Missing HP LaserJet $MODEL firmware file $fw" log "...read foo2zjs installation instructions and run ./getweb $MODEL" return 1 fi log "loading HP LaserJet $MODEL firmware $fw to $DEVNAME ..." if cat $fw > $DEVNAME; then log "... download successful." else log "... download failed." fi return 0 } # # OK, now download firmware to any printers that need it # if [ -x $USBID ]; then if $USBID $DEVNAME | grep "$MODELNAME" 2> /dev/null; then # This is a LaserJet 100x if $USBID $DEVNAME | grep 'FWVER' 2> /dev/null; then log "HP LaserJet $MODEL firmware already loaded into $DEVNAME" else # Firmware is not yet loaded load1 "$DEVNAME" fi else log "Wrong printer detected .." fi else log "HP LaserJet $MODEL firmware was not downloaded..." log "...couldn't find /usr/bin/usb_printerid" fi