Sunday, November 28, 2010

Making a Handspring Visor USB-powered

First, the usual disclaimer: If you decide to follow the rough guidelines in this post, I am not responsible for any direct and indirect harm you may do to yourself and your property, including but not limited to wrecking your PDA, burning the USB port in your computer or bringing about the end of the world.

For some weird reason I bought two Handspring Visor Deluxe PDAs on eBay. They were cutting-edge technology around 10 years ago, equipped with PalmOS 3.5.2, a 4-shade grayscale 160*160 pixel touchscreen, and a whopping 8MB of storage. Now they can be had for about $10 shipped, complete with a docking cradle if you're lucky.
It wasn't too hard to find a use for them. After installing PalmOrb, they can emulate a Matrix Orbital LK204-25 LCD display with a keypad (the real hardware runs somewhere near $70 apiece). They can be connected through either USB (with an internal USB-serial converter) or serial and work with LCDproc, LCD4Linux, LCD Smartie, and similar software. I use one of them as a handy little display for the Seagate Dockstar turned Linux server.
However, these little PDAs are powered by two AAA batteries, and they eat batteries like crazy when using PalmOrb. A pair of new alkaline batteries will run dry in 12 hours or so. Well, since the Visor is connected to the Dockstar via USB, the logical thing to do is to make the Visor USB-powered, and get rid of batteries altogether.

Note: All photos are taken after the hacks have been completed.

The hack is quite simple. From the technical reference documents (faithfully preserved by the Internet Wayback Machine, and now hosted by me), Pin 7 (VDOCK) on the Visor connector is used for charging on the rechargeable Visor models. Since the Visor Deluxe is not rechargeable, that pin is practically unused. Therefore, I simply have to connect that pin to the positive battery terminal and provide the appropriate voltage in the cradle. It might be possible to directly power VCC which is 3.3V, but then I have to mess with the battery detection circuits and such.

Off we go. Disassembly of the Visor is straightforward, simply unscrew the four screws on the corners and unclip the sides using my fingernails. There are 3 PCBs inside: the screen assembly, the button board and the motherboard. Both the connector and battery terminals are on the button board, so that's where the hack will be performed.
The button board can be removed easily. The only place I could solder to the 7th pin was on the connector itself; the solder pad on the PCB lies flush to the casing and has no space. Likewise, the only place to solder to the positive battery terminal is the terminal itself. So I simply soldered a solid core wire to both of them, making sure that I can still close the casing when the wire is in place.
The Visor part is done, next up is the cradle. I bought this cradle already hacked from eBay: the previous owner made a charging only cradle from (presumably) a USB cradle. I made a serial cradle out of it, but it's not quite useful as I hoped. So now it's back to being a USB cradle, albeit with a hacked power line.
The appropriate solder pads can be identified using a multimeter and the pinouts of both the Visor connector and USB plugs. There are 4 connections to worry about: power (VDOCK), Data+, Data- and ground. For D+, D- and GND, simply solder the appropriate wires in the USB cable to the cradle board.
USB devices are powered to 5V, so the voltage must be stepped down to less than 3 volts before being fed to the Visor. The tech reference docs says the critical voltage threshold of the Visor is 1.6V, so anything between 1.6V and 3V should power the Visor fine, but something too close to the lower limit might give you a "low battery" prompt every once in a while.
Access to the university lab gives me a lot of free parts. I saw an adjustable voltage regulator in the parts bin, so I grabbed it and soldered it in place before pulling up a datasheet online. Turns out it's a switching step-down regulator capable of providing 10 watts of power. Talk about overkill. Any 2.5V or adjustable linear regulator should work fine for this if you're trying to do the same thing.
The wiring is easy enough. The power line from USB goes to Vin, Vout goes to VDOCK pin on the cradle, and GND is tied to ground on both the cradle and USB cable. There's not enough space for the regulator near the front of the cradle, so I used several pieces of wire to move it farther away. The shield in USB cables are supposed to be grounded on the host side and NOT grounded on the slave side.
Adjust the regulator to give 3 volts, put everything back together, and the hack is complete. The Visor does not have non-volatile memory so it's wiped clean during the hack when the battery is removed. I performed a hotsync using the new cradle and no batteries and it worked perfectly.
So now the Visor is happily displaying various information for my Dockstar without ever using another pair of batteries. Someone give me a trophy for protecting the environment ;-)

Finally, a warning: do not put a Visor with batteries in it on this cradle while it is plugged in. The batteries will not be very happy and may decide to leak on you or explode.

No comments:

Post a Comment