I was looking for a new router with our move from DSL to cable broadband and was also needing a new device to share a couple of USB printers since our old desktop is on its last legs. A number of products, including the Belkin and D-Link routers that include USB ports, do print sharing. But they also require software on each workstation that will print that “connects” to the printer on demand to enable printing. When one computer is connected, others can’t. Past experience has found this to be an option fraught with peril.
The Netgear Rangemax WNR3500L router is a solid router that supports both 802.11n wifi and also gigabit wired ethernet and also comes with a USB port. However, by default it only supports file sharing, not print sharing. But the ‘L’ at the end of the model number means it is based on open source software. In particular, the device’s firmware (essentially a small, very specialized operating system) is based on the open source operating system Linux. This allows for much greater flexibility in reconfiguring. A number of alternate firmware are available for this device, from the very esoteric openWRT to the fairly refined Tomato USB, with dd-WRT falling somewhere in the middle.
Two highly recommended firmware options for adding printing to the WNR3500L are the dd-WRT Kong mod and Tomato USB. Both require some technical knowledge to work with — I never did find a single source for describing the process of going from unpacking the router to sharing the printer, although there are some helpful segments of the needed documentation in a range of different sources. There is a very helpful article on http://www.myopenrouter.com that provides the basics of flashing firmware to install alternate versions. Although it describes the process specifically for dd-WRT, the general steps apply also to Tomato USB. The article also provides an overall understanding of what is happening, the risks, and the advantages and is therefore highly recommended as a primer before proceeding with the steps below.
I began by trying the dd-WRT Kong mod but found it required too much individual package installation and command line management to make this readily reproducible by others. Also, I’ve read a couple of reviews that suggest the Tomato USB provides performance closer to that of the original firmware, while the dd-WRT Kong mod is a bit more variable but overall has slower throughput to the broadband connection (although at over 40 Mb/s is still faster than most home broadband services).
As much to help me reproduce the process in the future as anything, here’s the essential steps I took to get Tomato USB working as a router and print server, streamlined to help me rapidly move through the steps next time…
Moving From the Native Firmware to Tomato USB Firmware
- Download and unpack the Netgear WNR3500L DD-WRT Firmware: Special File for Initial Flashing. This original firmware is not designed to accept most alternate firmware, so this firmware is developed just to provide the hook to the full alternate firmware versions.
- Download and unpack the Tomato Firmware with USB compatible with Netgear WNR3500L.
- Unpack the WNR3500L router and connect it to a computer. Initially I did not connect the WAN connection, but instead just used a wired connection to port on it’s switch ports and then used wireless on my laptop to download the needed firmware.
- Use a web browser to connect to the Netgear configuration page at http://192.168.1.1 and login.
- Go to Router Upgrade under the Maintenance section.
- Browse to the dd-wrt.v24-13309_NEWD-2_K2.6_mini-WNR3500L.chk file you unzipped earlier.
- Click on upgrade, after which your router will reboot.
- Login to the new dd-WRT mini firmware using a web browser pointing to http://192.168.1.1.
- Under the Administration tab find the Firmware Upgrade sub-tab.
- Change “After flashing, reset to” -> “Reset to Default Settings”
- Browse to the tomato-K26USB-1.28.9052MIPSR2-beta23-Ext.trx file you unpacked earlier
- Click on upgrade, after which your router will reboot.
- Configure the WNR3500L as a router and wireless access point.
Configuring the WNR3500L for Printing
The following are loosely based on the blog post at http://blog.nguyenvq.com/2010/08/15/usb-nas-and-print-server/
- Login to http://192.168.1.1 or whatever alternate address you’ve assigned to the WNR3500L router.
- 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. Optionally enable File Storage support if you will also be connecting a mass storage device. Save settings and reboot router.
- Plug in your printer(s). I used a USB hub to connect a Canon Pixma iP4000, a Canon Image Class MF4150, and an external USB hard drive. Check under the “Attached Devices” section of the “USB and NAS” -> “USB Support” to confirm the new devices are being found by the router. Note how many printers are actually identified and their order (multifunction devices may be listed multiple times for different functions (e.g., one for the print function and one for the fax function).
- Tomato USB uses the p910nd print daemon. One daemon is needed for each printer, but only one is started by default. If you have more than one printer, you will need to start additional daemons each time the router is restarted. To automate this:
- Go to “Administration” -> “Scripts”
- Under the init tab, add the line “/usr/sbin/p910nd -b -f /dev/usb/lp1 1” for the second attached printer, “/usr/sbin/p910nd -b -f /dev/usb/lp2 2” for the third attached printer, etc.
- Save the settings and reboot to load the additional printer daemon
Setting Up Printers to Print Through the WNR3500L
How to set-up wireless printing in Tomato (Teddy’s USB modified Tomato version). Note: the router does not need to “mount” the device; it need only recognize it. I was able to set-up my Mac and PC using these directions from http://dd-wrt.com/wiki/index.php/Printer_Sharing:
* Go to System, Administrati on, Printing.
* Click New Printer
* Choose AppSocket/HP JetDirect
* Hostname: IP address of the wireless printer (normally 192.168.1.1)
* Port: 9100 for first printer, 9101 for second printer, etc
* Click Forward and go on with the printer wizard to select brand, model and settings as you would do for a local printer
* 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, 9101 for second printer, etc) 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: 9100
* 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.
- Netgear WNR3500L product page
- MyOpenRouter.com How-to Guides for the WNR3500L
- Review of the Netgear WNR3500L including performance measures comparing the default firmware with dd-wrt
- Excellent article on upgrading from the factory default firmware to dd-wrt on the WNR3500L
- Netgear WNR3500L DD-WRT Firmware: Special File for Initial Flashing
- Tomato Firmware with USB compatible with Netgear WNR3500L
- USB NAS and print server
- Print Sharing under dd-wrt. Includes instructions on how to print to servers using the p910nd print daemon
- Tomato USB homepage
I followed your instructions to patch my new Netgear 3500L particularly to connect a Canon Pixmax IP3600, and everything works fine now. Thanks for these description.
I had two problems others can be affected to too:
first was, that one has to rename tomato-K26USB-1.28.9052MIPSR2-beta23-Ext.trx to tomato-K26USB-1.28.9052MIPSR2-beta23-Ext.bin. Otherwise the update process cancels with a message about a wrong image type
Second was the new password after installing tomato and rebooting the router. It has changed from default “password” to “admin”.
Maybe it would be good to add these infos to your instructions?!
I did exactly what you said in the guide, and started by updating to dd-wrt.v24-13309_NEWD-2_K2.6_mini-WNR3500L.chk which did nothing but brick my router.
This guide did help me somewhat, but what I hadn’t read in any of the guides concerning TomatoUSB was that jffs2 need to be enabled. This is mentioned in various guides talking about DD-WRT and print server though, but I couldn’t get jffs writeable.
So, my steps were more like:
1. Do all the pre-requirements (reading, downloading, 30/30/30 reset, pre-flash)
2. Install TomatoUSB, enable usb, print sharing etc and not getting it to work.
3. Install DD-WRT, enable blabla… etc, find out about jffs.
4. Try to get jffs play nicely with no success. (this was by far the most frustrating step)
5. Again install TomatoUSB (http://sourceforge.net/projects/tomatousb/files/Experimental%20%28beta%29/K26-MIPSR2/tomato-K26USB-1.28.9054MIPSR2-beta-Ext.rar/download) with proper 30/30/30 reset pre and post flashing.
6. Enable USB and printer sharing.
7. Enable jffs.
8. Format jffs.
9. Mount jffs.
10. Successfully print from networked computer. Yay!
Honestly, I’m not sure which was the crucial step that made it work, but it works. (At least yesterday. Fingers crossed for successful printing tonight as well 🙂