Friday, 21 January 2011

HP Laserjet 1018 (or equivalent) printing to Netgear router with Tomato USB firmware

Yesterday I got a new router (Netgear N3000 WNR3500L with USB) to which I wanted to connect a printer. Unfortunately the firmware only supported USB hard drives, and no printers. Following the terrific blogpost on http://mwolske.wordpress.com/2010/11/03/setting-up-the-netgear-rangemax-wnr3500l-router-to-share-printers/ I managed to install the Tomato firmware. It is a delight. The guide mentioned the following steps:

2) Go to the “USB and NAS” -> “USB Support” page and enable at a minimum Core USB support, including both 2.0 and 1.1 support (some documentation I saw found that occasionally printers would not work if 1.1 support was not enabled even if they were using USB 2.0).  Also enable printer support, including Bi-directional printer support. [my emphasis]  Optionally enable File Storage support if you will also be connecting a mass storage device.   Save settings and reboot router.

After setting up USB printing (it recognized the printer straight away) I wanted to add the HP Laserjet 1018 in my Ubuntu (10.04) setup. It didn't work at all. I was under the impression that the error would be on my system, until I found this blogpost http://www.linksysinfo.org/forums/showthread.php?t=64945 which mentioned to uncheck the bi-directional printing option. After this it worked like a charm.

I believe this applies to virtually all HP USB printers.

-----

Update from 2012:

After power-cycling my printer this didn't work anymore, so right after I wrote the above I stopped using the printer via my router.

Today I decided to try and fix it permanently.

The problem was, these printers need to get a firmware loaded every single time you power it up. After each power cycle it start out with a blank mind as it were. Your computer probably loads a firmware for you, if you've set it up properly you can hear the printer making noises after plugging in. Your router will not do this automatically. So if you've plugged the printer into your computer, leave it on but connect the usb cable to the router, it will still work because the firmware is still loaded. I don't want to do this every time I shut down the printer though. Luckily, I finally found this page for the tomato firmware, explaining that it can in fact load a firmware to a printer.

To start with that howto, you need two things: ssh access to the router and a jffs filesystem (enable both of these settings using the web-interface). Then, copy the downloaded firmware like so:
scp your_firmware_file root@192.168.1.1:/jffs

Then follow the rest of the manual. Now, when plugging in your printer to the router, you'll hear it loading up the firmware. Then simply set up printing on this uri: socket://192.168.1.1:9100.

Personally, I have all my special devices locked in dhcp and I've added DNS entries for them in the router itself, like router -> 192.168.1.1, raspberry-pi -> 192.168.1.x, nmt -> 192.168.1.y

Great stuff.