Four years later, this post is still valid, but way miss spelled or incomplete, rendering it useless! But don't faint, there is still faith, you may be able to recover it without serial port!
Here is what I did:
I have had this router a long time, but I haven't flashed it with a custom firmware until some days ago. I tried to flash OpenWRT last version available for this hardware, openwrt-ar71xx-generic-wrt160nl-squashfs-factory.bin, and I bricked it!
Based on the previous post, I tried this on my Ubuntu 14.04 LTS 64 bits:
1) Install tftp client:
sudo apt-get install tftp
2) I downloaded DD-WRT's firmware for this hardware from http://www.dd-wrt.com/site/support/router-database, search for WRT160NL and you can download "WRT160NL v1 Firmware - Webflash image for first installation" (linksys-to-ddwrt-firmware.bin). I guess OpenWRT version or the original one (get it from http://support.linksys.com/en-us/suppor … /WRT160NL) should also work - not tested
2) I disabled my wifi interface, and manually configured eth0 to IP 192.168.1.2 and mask 255.255.255.0, no gateway or DNS needed, so forget it.
3) Connect eth0 to router's 4th LAN port
4) Open a terminal and go the folder where you downloaded the firmware. In my case,
cd ~/Downloads
5) Write the following command, but DON'T press enter:
6) tftp 192.168.1.1 69
7) Power on the router, and after some seconds (when ubuntu detects network link) press enter to run the command.
8) set it to binary mode writing:
binary
9) send the downloaded firmware, in my case DD-WRT's linksys-to-ddwrt-firmware.bin:
put linksys-to-ddwrt-firmware.bin
10) When it is done, exit tftp client:
quit
11) After some seconds, ping default ip address, and you should have brought it to live!!
ping 192.168.1.1
Now you can set your IP address to DHCP, configure the router, or whatever.
Credits to fishball: I wouldn't have been able to do this without your help!