[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#630228: foo2zjs: Firmware upload is not compatible with cups



Small fix done on the patch ...

   Till
Index: foo2zjs-20110210dfsg/hplj1000
===================================================================
--- foo2zjs-20110210dfsg.orig/hplj1000	2011-06-14 16:30:59.331940282 +0200
+++ foo2zjs-20110210dfsg/hplj1000	2011-06-14 16:31:26.151976656 +0200
@@ -48,6 +48,12 @@
 DEV=""
 
 #
+# Path to the USB CUPS backend. We use this backend to upload the firmware
+# into the printer when we are on a CUPS/libusb-based system.
+#
+USB_BACKEND=/usr/lib/cups/backend/usb
+
+#
 # Directory to find downloadable HP firmware files sihpMMMM.dl
 #
 FWDIR=/lib/firmware/hp
@@ -195,7 +201,7 @@
 esac
  
 #
-#	Procedure to load a single device with firmware
+#	Procedures to load a single device with firmware
 #
 load1() {
     _dev="$1"
@@ -218,6 +224,33 @@
     return 0
 }
 
+load2() {
+    fw="$FWDIR/sihp$FWMODEL.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 CUPS USB device ..."
+    # There is a timeout problem with udev and FC4, so spin it off.
+    (
+	device_found=0
+	for uri in `$USB_BACKEND 2> /dev/null | grep -i 'HP.*LaserJet.*'"$MODEL" | grep -v FWVER | cut -d ' ' -f 2`; do
+	    device_found=1
+	    if DEVICE_URI="$uri" $USB_BACKEND 1 1 1 1 '' $fw 2> /dev/null; then
+		log "$uri... download successful."
+	    else
+		log "$uri... download failed."
+	    fi
+	done
+	if [ $device_found = 0 ]; then
+	    log "... no devices which need firmware found."
+	fi
+    ) &
+    return 0
+}
+
 #
 #	OK, now download firmware to any printers that need it
 #
@@ -226,6 +259,13 @@
     # force downloading to a specific device
     #
     load1 "$DEV"
+elif [ -x $USB_BACKEND ]; then
+    #
+    # If we have CUPS installed, use the CUPS "usb" backend, as then we do
+    # not need to care whether the system uses the usblp kernel module or
+    # libusb
+    #
+    load2
 elif [ -x $PRINTERID ]; then
     #
     # Sniff around for printers that need a firmware download
@@ -247,5 +287,5 @@
     done
 else
     log "HP LaserJet $MODEL firmware was not downloaded..."
-    log "...couldn't find $PRINTERID and DEV is not set"
+    log "...couldn't find $PRINTERID, DEV is not set, and CUPS not installed."
 fi

Reply to: