Using an NSLU2 as a USB print server

I've configured my NSLU2 as a USB print server using CUPS.

My NSLU2 "Slug" is running OpenDebianSlug, and followed the instructions at http://www.nslu2-linux.org/wiki/DebianSlug/Printing for instructions on how to install the usblp module and CUPS. To summarise, as root

wget http://ipkg.nslu2-linux.org/feeds/openslug/cross/2.7-beta/kernel-module-usblp_XXXX.ipk
dpkg --force-all i kernel-module-usblp_XXXX.ipk
depmod -a
apt-get install cupsys hotplug

I then configured my printer as printer using the links text-based browser on the slug itself.

In windows, I set up an IPP printer to print to my CUPS printer.

The set up works fine, except for one major flaw. If I send a job to the printer while it is switched off, CUPS can't print and so stops printer. When the printer is switched back on, printer still accepts print jobs, but it is stopped. The only way to get the printer going again is to Start the printer, for example via the web interface on port 631.

I found a solution by adapting the script found on http://www.trustix.org/wiki/index.php/Configure_CUPS. I created a file /etc/hotplug/usb/usblp with the following contents:

#!/bin/sh
#
#
# Arguments :
# -----------
# ACTION=[add|remove]
# DEVICE=/proc/bus/usb/BBB/DDD
# TYPE=usb 

if [ "$ACTION" = "add" -a "$TYPE" = "usb" ]; then
  /sbin/modprobe printer
  for i in `/usr/bin/lpstat -v |awk '$4 ~ /usb:/ {print $3;}'|sed -e 's/://g'`;do
    /usr/bin/enable $i
    /usr/sbin/accept $i
  done
fi

What this does is Start printer (that's what /usr/bin/enable does) whenever it detects a hotplug add event. I had to install cupsys-client:

apt-get install cupsys-client

to get the command /usr/bin/enable.

Last modified: 16.i.2007