Thursday, September 30, 2010

USB Hub Inside A Logitech Gaming Mouse

Here I have an older Logitech G5 gaming mouse that was in need of some help. The middle click button on the PCB was worn out, so it liked to randomly middle click all the time. While I had it apart replacing the button, I realized how much space was actually inside (since I don't use the weight cartridge at all) and thought it would be awesome to shove a small USB hub inside, with ports accessible from the outside via the weight cartridge slot. Here is what I ended up with...

You can access the two USB ports from the bottom of the mouse

Inside the mouse, the hacked up USB Hub

The USB hub was cut in half, eliminating the 3rd and 4th ports to allow it to fit inside the mouse. The thicker yellow and green wires are carefully soldered to the traces that previously went to the 3rd USB port's D+ and D- data lines.

Another shot inside (hooray for hot glue!)

One more shot inside, here you can also see the middle click button I replaced (just to the right of the spring)

Shot of a Flash drive inside the mouse

The small flash drive/MicroSD card adapter I used inside the mouse

Powered on with 2 flash drives mounted

The final product, looking just like a stock G5, but with flash storage!

I actually completed this hack several months ago, but forgot to post it here until now. Let me know what you guys think.

Happy Hacking!

Post-Note: After reading some of the comments I have gotten on HackaDay and LifeHacker, it seems this is what they believe I am doing with my USB Hub Mouse:

Now that's just silly!

Here is a short video I just took of the mouse being used as I originally intended.

Monday, February 8, 2010

Fonera Automated Reset Technology (take THAT comcast...)

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. 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!