Hack Fonera 2100
Recently, our Comcast internet service has been less than ideal. Some strange interference on the cable line is causing our modem to freak out every so often.
After talking to countless technicians and service reps and going through 2 or 3 modems trying to determine the problem, I decided to take matters into my own hands. The main problem was that the modem would freeze after this mysterious event would knock it offline.
The only way to re-establish a connection would involve power cycling the modem. This became very annoying when the modem was freezing as often as every 20 minutes at it's worst. I decided to come up with a solution to replace the task of manually power cycling the modem and to automate it with something aware of internet connectivity. My first thought was to use the RTS pin on a serial port to trigger a relay. I threw together a circuit from parts I had lying around including a transistor, a relay, a female DB-9 connector, and a molex connector (to connect to the PSU of my DD-WRT x86 router for the 12v coil on the relay) and a peanut butter jar for a simple enclosure. This was the end result, which sorta worked (it didn't like long serial extension cables, probably too much voltage drop). (Original prototype) After thinking about it for a while, I realized I wanted something more 'embedded' and easier to implement (ie, not requiring a PC) and decided to try and use the GPIO pins on a Fonera wireless router.
Fon is a WiFi provider that has built the world’s largest network. We work with leading carriers and WiFi providers around the globe. Open the case Remove the two rubber feet on the opposite site to the antenna jack and unscrew the revealed screws. Locate SW1 On this picture, SW1 is located on top-right corner and already.
The Fon was a perfect device for the job since it already had a network connection and did not need a whole lot of power to operate 24/7. The first step was to lookup pinouts for the Fon and determine where the best connection was to an available GPIO pin, power and ground.
After some research, this is what I came up with. I soldered in some wires and began work on the relay circuit. I used a small NPN transistor connected to the GPIO pin to power the relay (the GPIO itself could not source enough current to trip the coil). Below is the circuit diagram I came up with (after the fact).
(New Schematic, I had the transistor implemented wrong in the original diagram) Here is the half of the circuit inside the Fon, with the NPN transistor connected to the GPIO pins Here is the half of the circuit inside the outlet box, with the relay and a generous amount of hot glue:) (Note: I cut the little metal bridge between the two outlets so that I could have one normally open, and one normally closed) And the finished product! These are the commands I used to turn the GPIO pin on and off Then, I created a simple web interface with a 'Manual reset' button, a short log of the last 20 events, and a link to view the entire log (which got pretty long after a while). (Click the image for a larger version) I also created a simple ping script and a cron job which ran every 2 minutes, pinging a comcast gateway (it was the first IP address out side the modem I hit when I ran a trace route) And finally, the finished product in use! (this was an earlier revision, when the relay was still being housed in the peanut butter jar) You can see the Fonera and the outlet box with the modem's wall-wort to the right of the printer. (Click the image for a larger version) All in all, this was a very fun project and it seems to do it's job very nicely.
The only time we experience any problems now is when the cable line is so noisy that the modem takes more than two minutes to re-sync, and goes through a couple resets before it's good again. I hope this information can help someone else build a similar device to fix a similar problem (I know there are lots of frustrated comcast customers out there that this project might help). If you come across something in my write up that doesn't make sense, or needs clarification, leave a comment or otherwise contact me and I'll try to help you out as best I can. Happy Hacking! However where'd you obtain the Fon gizmo? Also is the code available?
It might be possible to add this feature to other routers who support DD-WRT. Also two other things, one is that you might want to check your schematic, there are comments that the transistor position is incorrect versus the relay, of course if it did work for you then they are wrong. The other thing concerns those characters at Comcast. I suggest that you keep bothering them to check something near your connection.
If your connection is part of a block of ones that works, then perhaps the cable line feeding it is acting up. If there are others with similar problems then not surprisingly Comcast needs to make a service call to all of them. There are specific cases regarding why Comcast can be a bit dense regarding persistent problems. E-mail me off board if you're curious please. Also concerning a code drop.
@stevefrmnj: I was actually not aware that the modem had a software reset function, but I wanted a hardware solution anyway as the modem was hard-locking in a fashion I had never seen before. This particular modem was a Scientific-Atlanta model. @bbsux: The transistor is a Motorola SN3053,A.
I had it around, still in it's Radio Shack 'Archer' packaging. I do not have a function in my script to chop the log when it gets to large, although that would be pretty simple to add. @ConcinoS: Looks like I did mess up the diagram.:P I drew it from memory well after I had actually created the circuit.
I'll swap the picture out with a corrected one. Thanks for the correction!
@Gregg: I got the Fonera a few years ago when they were giving them away for free. You can still buy them from their website. I have since moved out of that apartment, but while I lived there, I called Comcast at least once a week for months. They sent numerous technicians out, all who were baffled by the problem and amazed at my roommate's and my knowledge of networking and electronics (they also loved my Mountain Dew Christmas tree, which you can see in an earlier blog post).
They replaced our modem at least 3 times, all of them experiencing the same issue. One brought a spectrum analyzer which showed a large spike smack in the middle of the frequency band every few seconds.
He guessed that it was probably this strange signal that was confusing and knocking the modem offline. They checked the signal coming into the building and were shocked at how strong it was. Bot Programs For Eq2 Maps here. They guessed that the problem was most likely some bad wiring within the apartment walls somewhere (everything we could see was RG-59), but that was apparently not Comcast's responsibility, it was the landlords. Needless to say, the landlords didn't do squat about it which was why I created this device. Problem solved:D (sorta).
Ok, for the web interface it's kinda funky. First I enabled the /jffs partition via the DD-WRT web interface. Then I followed this guide: Then I created the actual web pages, which you can see the contents of here: @Jake: I got the relay from Fry's Electronics. Here is a picture of the packaging, with all the info you should want @Rick: I hacked my Fonera(s) several years ago using the built-in RedBoot boot loader. There are instructions on DD-WRT's website, as well as many other sites with detailed instructions on how to hack your Fon. Installer Le Repository De Passion-Xbmc.
@Golben: I'm glad somebody caught that;). 1 x Fonera 2100 Router (could probably use anything with GPIO pins you can control) 1 x 3 volt relay (anything with the right coil voltage will do) with a basic diode across the coil 1 x NPN transistor (again, generic, anything that can source the current your relay uses will be fine) 1 x Chopped up extension cord (or you could use a wall outlet and single gang box like I did) If you use a Solid state relay instead, you may be able to skip usage of the transistor.
Just measure how much current your relay uses, and decide from there.