Open WRT LOG
Personal computers are great. You can save all your data in one place and search it out with ease. Though cloud computing would be the next big things, we are still waiting for that kind of bandwidth.
I was showing off to dad how OSX indexes everything on my MBP and CMD+Space, is all I need to do to find whatever I want to find. I found some scanned documents and dad was excited - ‘ It would be very convenient to be able to search all movies, documents, music this way, siting on any networked device in the house.’ So I implemented Wake-On-Lan on the desktop and since it runs Hakintosh, Bonjour allows easy access to the shared space. But the desktop is a Core i7 monster, and eats power like a hungry Snow Leopard ;-) .
So NAS with print-server is the next obvious solution. For now, it’s an expensive deal.
We own a TL-MR3420 3.5G router, which has a USB port to connect a 3G USB MODEM, and share it over WiFi a/b/n. But the firmware from the company allows only and only a few 3G MODEMs to connect to the USB port. I have one and it works well, but I want to use that USB port for other things - namely a USB-SATA HDD.
I found Open-WRT https://openwrt.org/ and it supports my router. It allows using the USB port anyway one wants to use the port. I was excited. Simply put, OpenWRT is like the jailbreak for the router. It’s an operating system, which supports a hell lot of routers http://wiki.openwrt.org/toh/start in the market. It’s basically a small footprint Linux, which is nothing out of the blue, since most routers run Linux.
I dusted my old WiFi router, TL-WR642, and made it active, so that the internet in the house is not disturbed.
Next was the easy step, I downloaded the X-wrt version of the firmware from http://wiki.openwrt.org/toh/tp-link/tl-mr3420 , for my router and uploaded it using the Web-GUI of the router. In a minute I was in the free land of OpenWRT!!!
It was tough to start with. X-WRT is fairly complicated, and iptables has forever freaked me out, even during my grad courses!
I managed to change the router’s LAN(eth0) IP from 192.168.1.1 to 10.64.1.1 by going to Network - > Networks and changing the IP in the lan section.
*The important thing is to press the Save button at the bottom left and then PRESS THE “APPLY CHANGES” link. If you don’t press apply changes, the changes are not committed, a mistake I made too many times initially. Also it takes a fair amount of time to commit changes, so be patient.
Similarly WiFi (wlan0) is easy to turn on - goto Network->Wifi and enable the radio and set the preferences like SSID, password, etc. The ‘range in meters’, was an odd looking settings, so I left it. You also have to enable the lan-bridge, by going to Network->Networks and set lan network type to bridged. This starts the DHCP on the WiFi also.
Next setup the wlan interface (eth1) to connect the router to another router+modem (in my case) or just a DSL Modem, as the case may be. The settings are under Network->Networks-> wlan. It you want NAT between lan and wlan (which you obviously do), you need to setup a static IP for the WAN and give the DNS also manually, as the Open-WRT would need to connect to the internet to get packages.
Next was to get the internet over the LAN. Or in simple words, getting NAT to work. I thought this should have worked by default, I even tried a few things in the webUI, but no internet on the LAN/Wifi. So I had to get my hands dirty using iptables!
Here are the two commands I used, which I found here - http://wiki.openwrt.org/doc/howto/access.modem.through.nat
iptables -t nat -I postrouting_rule -s 192.168.1.0/24 -d 169.254.1.8 -j SNAT --to 169.254.1.1
iptables -I zone_lan_forward -s 192.168.1.0/24 -d 169.254.1.1 -j ACCEPT
192.168.1.0/24 is the LAN subnet/mask.
169.254.1.8 is the IP of the Modem+router
169.254.1.1 is the static IP you setup for the wan interface
(Please change the IP address according to your networks)
These have to put inside /etc/firewall.user
So everything was up.
Next was to do that for which I had put up OpenWRT primarily for, i.e. USB port for Mass Storage Device. It’s fairly simple to do, as explained in - http://wiki.openwrt.org/doc/howto/usb.essentials and then http://wiki.openwrt.org/doc/howto/usb.storage
But, this was where I got stuck, I just could not install packages. I figured out that the problem was that the package list was meant for a more recent kernel than I was using. I also pin-pointed the problem to having installed the X-WRT version of the firmware, which had the older kernel. The obvious next step was to use the other firmware, without the webUI. I installed it, without much problems. The packages started to come. Thank God I saved the settings at the time of updating the firmware, otherwise, it would have been very difficult setting up the WiFi and some other things again, without the webUI.
I got the USB pen-drive and my SD card (via a Transend card reader) to be available as sda1 on the router. I mounted them, wrote a file to it and was more than happy! Then came the fact that I had to share this over the LAN, for which i needed a network share, and a server to host that. The choices in OpenWRT are Samba (http://wiki.openwrt.org/doc/howto/cifs.server) or NFS (http://wiki.openwrt.org/doc/howto/nfs.server). This was the finishing punch to my efforts. I RAN OUT OF SPACE. Yes, the router has a mere 4MB and Samba or NFS cannot be installed in that space along with the USB storage system. I tried to remove some other nonessential things, but I could not get any of them. I could have installed sshfs (http://wiki.openwrt.org/doc/howto/sshfs.server) and I think it would have worked, but that would not be the best thing, as I would need a lot of extra software on the PCs to allow them to see that share. So I left that, there.
Now since I didn’t have the webUI and the only way I knew of changing the firmware was the webUI, I was scared dead, wondering how to restore the OEM firmware. I came to this(http://wiki.openwrt.org/doc/howto/generic.uninstall) and used the MTD method and it worked flawlessly.
I was back to square one, but having ventured into a new space. It was 3:30 in the night and I went to bed.
In the morning I did some more reading. One can install packages into external drives, like the USB drive I mounted. That means I need the device plugged into the router, forever. Moreover, since the router cannot give more than 100mA from the USB port, I can’t run a portable HDD off it directly, I need a powered hub, which costs roughly $20. At $100 to $150 I can get a NAS with a 1TB HDD inside and print server option. So it’s not really cost effective. If I had a externally powered USB HDD, maybe, I would have made it work.
I hope this helps someone setup OpenWRT quickly, at least with the TL-MR3420 and the configuration, which I aimed for and almost did.
P.S. it’s a lot technical and no screenshots, as I aim it for people knowing what they are doing and a fair knowledge of linux.