Printer Sharing

From DD-WRT Wiki

(Difference between revisions)
Jump to: navigation, search
Revision as of 22:27, 1 January 2008 (edit)
Bird333 (Talk | contribs)
(Print server)
← Previous diff
Revision as of 22:32, 1 January 2008 (edit) (undo)
Bird333 (Talk | contribs)
(Printer driver)
Next diff →
Line 21: Line 21:
usblp0 means that the found printer is accessible at '''/dev/usb/lp0''' etc. usblp0 means that the found printer is accessible at '''/dev/usb/lp0''' etc.
 +
 +Note: The 'USB Support' link above refers to installing several modules. On my WRT350N, I had to install these additional modules to get printing to work (usb-uhci.o and usb-ohci.o).
==Print server== ==Print server==

Revision as of 22:32, 1 January 2008

DD-WRT allows for clientless printer sharing making it easy to install printers directly into the router without the need for a seperate computer. You must have installed USB support (usb_storage, sd_mod etc. can be left out if no need for external storage).

Contents

Printer driver

Install printer driver:

 ipkg -force-depends install kmod-usb-printer

Edit /jffs/etc/config/usb.startup and add

 insmod /jffs/lib/modules/2.4.30/printer.o

Connect printers and reboot your router

See if any printers have been found:

 dmesg | grep usb

It should show something like this (I have 2 printers connected)

 <6>printer.c: usblp0: USB Bidirectional printer dev 5 if 0 alt 0 proto 2 vid 0x04F9 pid 0x000D
 <6>printer.c: usblp1: USB Bidirectional printer dev 6 if 0 alt 0 proto 2 vid 0x04A9 pid 0x108C

usblp0 means that the found printer is accessible at /dev/usb/lp0 etc.

Note: The 'USB Support' link above refers to installing several modules. On my WRT350N, I had to install these additional modules to get printing to work (usb-uhci.o and usb-ohci.o).

Print server

Now Install printserver daemon:

 ipkg install p910nd

Edit /jffs/etc/config/usb.startup and add

 #brother laser
 /jffs/usr/sbin/p910nd -b -f /dev/usb/lp0 0
 #canon inkjet
 /jffs/usr/sbin/p910nd -b -f /dev/usb/lp1 1

(correct the above to match your setup)

-b means bidirectional, -f specifices device name, and the last number can be 0,1 or 2, making the print server listen at port 9100, 9101 and 9102 respectively.

Reboot your router

Now, you router works as a print server over TCP/IP

Note: You may have to remove the '-b' option for p910nd. I couldn't print with that option included.

Workstation setup

Windows XP:

  • Find your printer in Control Panel - Printers etc. and open the properties page for it.
  • Select the Ports tab.
  • Click Add Port and choose Standard TCP/IP printer port and click New Port
  • Enter you router's IP address (normally 192.168.1.1) and click Next
  • Set Device type to custom and click settings.
  • Make sure RAW is selected and specify the necessary port number (normally 9100) and click OK
  • Click Next and Finish and Close
  • Make sure the newly created port is selected for your printer and click OK

Mac OS X 10.5 (Leopard)

  • Open System Preferences
  • Open Print & Fax
  • Click the + button below the list of installed printers
  • Select the toolbar button called 'IP'
  • Set protocol to: HP Jetdirect - Socket
  • Enter the address of your router followed by : and the port - ie. normally 192.168.1.1:1900
  • Leave 'Queue' blank
  • Set a friendly name for your printer (whatever you like)
  • And a friendly location (again, up to you)
  • Print Using: choose 'Select a driver to use'
  • A list will pop up of all installed printer drivers - choose the one that works for you (see Note below)
  • Add your printer


Note (Mac only): the driver must be compatible with the CUPS printing system, which is one of the two printing systems included in OS X. Certain printers e.g. Canon Pixma series and Epson Inkjet include OSX drivers which do not use CUPS. You may find compatible printer drivers from Gutenprint (free) or PrintFab ($). OS X Leopard appears to include certain Gutenprint drivers, but the quality may vary and it may be worth checking their website for updated versions, or try PrintFab.

Printing from WAN

If you want to be able to print from the WAN side of your router do the following:

In the web interface go to Administration - Commands and hit the "Command shell" field and type in

 /usr/sbin/iptables -I INPUT 1 -p tcp --dport 9100:9102 -j logaccept

And click Save Firewall

Your router reboots and you can now print from WAN side

NOTE: This is not recommended if your WAN is directly accessible from internet, but useful at private subnets of companies, colleges etc.