Showing posts with label linux. Show all posts
Showing posts with label linux. Show all posts

Thursday, September 17, 2009

Linksys NSLU2 OpenWrt Sharing Multiple USB Printers

Most of the information required to share USB printers with OpenWrt is available here. I am just going to document a few details not covered in that document.
  • I had to write my own hotplug script, /etc/hotplug.d/usb/20-usb-printers, for giving the printers fixed symbolic links.

    #!/bin/sh
    
    create_link()
    {
     SYS_DEVDIR=/sys"$DEVPATH"/usb
     LP=`ls $SYS_DEVDIR`
     if [ ! -d "$SYS_DEVDIR/$LP" ]; then
      exit 
     fi
     REAL_DEV=/dev/`basename "$SYS_DEVDIR/$LP"`
     rm -f "$1"
     ln -s "$REAL_DEV" "$1"
    }
    
    process_action()
    {
     case "$ACTION" in
      remove)
       rm -f "$1"
       ;;
      add)
       create_link "$1"
       ;;
     esac
    }
    
    case "$PRODUCT" in
    
     "4b8/5/100") # EPSON C80
      process_action "/dev/inkjet"
      ;;
    
     "4f9/28/100") # BROTHER HL-2040
      process_action "/dev/laser"
      ;;
    
    esac
    

  • In addition, I created an init script, /etc/init.d/usbprinters, to make sure the links are also created when coldplugging the printers. Run /etc/init.d/usbprinters enable once after creating the script.

    #!/bin/sh /etc/rc.common
    
    START=39
    start() {
     [ -d /proc/bus/usb ] && {
      /sbin/udevtrigger --subsystem-match=usb --attr-match=bInterfaceClass=*7*
     }  
    }
    

  • Using these fixed symbolic links, /etc/config/p910nd now always exposes each printer on the same port:

    config p910nd
     option device        /dev/laser
     option port          0
     option bidirectional 1
     option enabled       1
    
    config p910nd
     option device        /dev/inkjet
     option port          1
     option bidirectional 1
     option enabled       1
    

  • I could not get avahi-daemon to work for advertising the printers via Zeroconf. Instead, I am using the no longer supported howl-mdnsresponder package (version 1.0.0-1). My /etc/mDNSResponder.conf looks like this.

    "Brother HL-2040 series" _pdl-datastream._tcp local. 9100 "txtvers=1" "note=Office" "product=(HL-2040 series)"
    "Epson Stylus C80"  _pdl-datastream._tcp local. 9101 "txtvers=1" "note=Office" "product=(Epson Stylus C80)"
    

    The idea is to use the product name that matches the product key in the PPD file on the client so that the client automatically suggests the right driver.

  • I manually downloaded and installed recent versions of ink and libinklevel from this repository, and now ink works with my Epson Stylus C80! I am using this script to see the ink levels as a bar chart in X-Wrt > Status > USB.

Thursday, October 23, 2008

Hauppauge Win-TV-HVR-950Q Works With Ubuntu Hardy on Mac Mini G4

I have had a very robust MythTV setup since spring 2005 using a Hauppauge WinTV-PVR-150 Media Center edition. Given the impending conversion to ATSC digital TV in February 2009, I ordered a Hauppauge WinTV-HVR-950Q external USB digital TV capture device.

Meanwhile, to reduce noise, heat, and power consumption, I am also switching from an i386-based workstation/server to an almost silent Mac Mini PowerPC G4 1.25 GHz running Ubuntu Hardy server with the lightweight Xubuntu desktop.

Today, I received the 950Q and was able to install it on the Mini without any trouble following Scott Bronson's detailed instructions to the letter. Thanks, Scott, for providing these wonderful, accurate instructions!

The Mini is too slow to play live video without mplayer's -framedrop option, but it is mostly a server anyway. The next step is to configure MythTV to record from the 950Q...no problem.

Meanwhile, I have upgraded all my systems to Jaunty, where the device is supported out of the box once you copy the firmware to /lib/firmware. Please see my recent comment for more details.