If you ever wanted to upgrade your router firmware, you could either upload an updated version of the same firmware using the web interface, or you will have to use TFTP in order to switch to a different firmware distribution. Most of the tutorials explaining the process of upgrading your router to OpenWRT or DD-Wrt already assume that you have a working and fully functional tftp client. When I had to upgrade my Buffalo router to OpenWRT, I found out that finding a working tftp client is much more difficult than actually pushing the firmware upgrade.
After trying four different tftp clients, I was able to flash my router using only three of those tools.
tftp 192.168.11.1
binary
rexmt 1
timeout 60
trace
put openwrt.bin
atftp --trace --option "timeout 1" --option "mode octet" --put --local-file openwrt.bin 192.168.11.1, and the transfer started few seconds after connecting the router.curl -v -T openwrt.bin 192.168.11.1 it would not connect. It did not seem to probe the connection beyond the first few seconds. Curl did not turn out to be useful for tftp transfers.In order to get the file transfer to go through, I had to try three different network configurations. Only two were successful.
In order to push firmware using tftp method I had to follow a few simple principles. First, I had to assign a fixed IP to my main PC, that has the same netmask as the router IP. This is most commonly achieved with the following command: ifconfig eth0 192.168.11.10 netmask 255.255.255.0. Then I needed to set an ARP cache entry for my routers MAC like this: arp -s 192.168.11.1 02:AA:BB:CC:DD:1A. At this point I would start the transfer. Once you see tftp client probing for connection, plug-in your router into a power source. Transfer should start in a few seconds. A successful transfer will terminate with a block that is less than 512 bytes.