Linksys WRT54G router and similar are very famous because of great modifications potential hidden in the device. For some purposes you may want to add a serial port to the router. You may need that for development purposes or to turn the router into a robot for instance. This post describes the procedure of taking the router apart so you can get access to the serial port connector hidden inside.
The process is actually described in many places and in various formats. Except for one – video. So I made a video that shows the process. Here it is:
[...] Blog on How to build an inexpensive yet powerful robot (How to turn your router into a routerbot)How to take apart a Linksys WRT54G router | Andrey Mikhalchuk’s Blog on How to build an inexpensive yet powerful robot (How to turn your router into a routerbot)How to [...]
I’m glad this video was useful. I used a WRT54GL as a bridge working under OpenWRT too (before turning it into a robot). It worked flawlessly and way more reliably then the original Linksys OS. Actually DD-WRT seems to be even better OS for this purpose as it has better web interface. Let me suggest getting an _old_ WRT54GS instead of GL as it has twice more memory onboard. Just check the HW revision: newer versions cannot be reflashed at all.
I am not the linux guy but i know a bit of the Progammer in C and other. I found you by accident search from Google and youtube so cool!!!!!
I used to be the robot builder and found this will be my new project. I have WRT54GL and already have DD-WRT, Do I need to re-flash your firmware or just add some of your files in there. I hope it will work for me, I have every part ready to go and Board. this project get my attention for other project that i have in mind for long time/.
Unfortunately the current version is provided as a new firmware only. I plan to release it as a package later, but not sure when exactly.
If you want to try the new firmware right now you can probably try to backup the DD-WRT (Administration->Backup) and make sure you have recorded your key in a safe place. Later you should be able to restore DD-WRT with this information.
Thank you for many-many hours of fun building my own version!!!!
My RouterBot is being controlled by PIC18F452 and everything is working fine.
I have just one problem.
My LinkSys WRT54GL routerbot is in client mode and I can do telnet to it and controll movements.
Recetly I bought IP camera (capable of static and DHCP IP). Being very naive I thought that
just by plugging this IP camera in free ethernet port on my robo-router I will immediatelly see
it’s IP on the network too. Bad luck. So when camera is connected to central home router I can access it by IP, but when connected to routerbot i can not see it. Can you give me at least a clue where to start looking for solution? Is it some magical “trunk”, “vlan” configuration, bridging? If you can providem me with concept how it should be organised, then I hope that details I can figure our myself.
I need some more information about your configuration. What is your firmware version: v1 or v2? If it is v2 then in what mode you’re trying to run your robot?
- if you’re still using v1 I highly recommend upgrading to v2. Just backup the files you have modified so you can reapply those mods to the new firmware
- in comments to the following post you will find info about how to patch the web interface to support your web camera in the routerbot web interface: http://andrey.mikhalchuk.com/2009/01/08/routerbot-v2-release.html
In your V2 my camera is working now, took a bit of research. But I’m struggling with one theoretical issue now. I do not understand the data flow in your V2 from web page click to exact data transmit to port. I do not have your servo controller and therefore thinkering with my self made PIC board.
What I got from reading source files on routerbot is that
index.htm have – > onclick event -> fucntion in main.js – > what calls do.cgi -> what calls “command”(?) executable- > what reads util.sh(?)-> what … I’m lost (blush)
The thing I’m trying to get working now is that on click to one button the letter “A” is transmitted to my PIC controller. Yesterday I changed everything-everywhere, but nothing works still. If I trasmit “A” in shell then my servo moves correctly to leftmost position.
The beginning of the chain is correct: index.htm have – > onclick event -> fucntion in main.js – > calls do.cgi -> calls cmd() shell script function defined in util.sh -> calls command executable that communicates with the serial port and sends commands to SSC-32. Nice job tracing all this stuff. I probably need to desribe it in details.
Did I correctly understand that you’re you built your own servo controller instead of SSC-32? If so you need to take a look at util.sh and modify function cmd(). In particular you need to comment out the line that calls command executable and uncomment the line that echoes command to the serial interface /dev/tts/1. Then you need to implement your own set of commands because for now entire util.sh is talking “SSC-32 language”. Let me know if problems, I’ll try to help.
Hey Andrey, thanx for the tutorial, but i don’t have understand so well how you solve the 3.3v/5v problem, can you give some tricks?! I have seen the tutorial link about some ideas to solve the problem but it’s a little confuse to me…can you show some schematic of resistor connection?
I used the schema known as “voltage divider”. One of the best explanations of how it works can be found on wikipedia. And Sparkfun describes how it is applicable to serial interfaces voltage conversion best. Also on sparkfun website you can buy prebuilt adapter.