Related to MAKE 01, Magnetic Stripe Reader

Adding Multi-Track Capability to Your Magnetic Stripe Reader

by Billy Hoffman
April 25, 2005

MAKE magazine, Volume 01 shows you how to build a card reader that reveals the data that's hiding on all the magnetic stripes in your wallet. See makezine.com/01/magstripe for source list and discussion. The project uses a TTL-compatible reader such as the Omron V3A-4. One complication is that magstripe cards can store data on three separate tracks situated on slightly different locations on the card, and the V3A-4 is designed to read only the most commonly used one of these. Here's how to modify the V3A-4 so that it can read all three of the tracks on a card.

Fortunately for us, Omron designed all of its readers to use the same chassis, no matter what track they read, and the only difference inside is what position the read head is screwed into. We're going to move the read head to the topmost position, and then cut some plastic shims that will make it easy for us to swipe the card at the level required to read the track we want.

Here are the materials and tools you'll need:

  • Small Phillips screwdriver [A] Something small, like from an eyeglass repair kit.

  • Sharp knife [B]

  • Ruler [C]

  • Paper [D]

  • Extra PVC card [E] Any old card will work (hotel key, copy card, etc).

  • Pen or pencil [F]


Materials needed.

Step 1: Move the magnetic read head.

Inside the Omron V3A-4.

Open the cover on the side of your Omron V3A-4 that hides the magnetic read head. Notice the five screw holes on each side? The three that make a column are used to hold the read head for the three different tracks. Omron uses the same plastic casing regardless of what track your reader reads! We want to move the read head to the topmost pair of holes, the pair of holes closest to the card swipe.

The read head is not positioned over track 3. It would certainly be a pain if we had to manually move and re-screw the read head for each track. The key is to make some object that will block the card from going in the groove all the way, so we can align the read head with different tracks. The reader is currently configured to read track 3. If we cut a small shim of plastic the width of a track and place it in the groove, we will move the card up exactly one track width and align the head to track 2. If we use a shim with the width of two tracks, we will move the card out so that the read head is over track 1.

Position of the read head.

Note: The screws that hold the read head in place are quite small. As a last resort, I've used needlenose pliers to unscrew and screw them.

Step 2: Cut the shims.

Use any old PVC card you have lying around. It needs to be thick, so we can block the card from going all the way into the groove.

Laying out the shims.

Take a sheet of paper, and draw a pair of perpendicular lines. On the X axis, draw short markers at 1/8 inch and 1/4 inch from the origin. Do this on the negative side of the axis as well.

Place the PVC card flush in the corner of the lines, and mark 1/4-inch marks on each side of it. Now draw a line connecting your two marks.

Use a knife and score the card along this line. Continue to cut it until you get a shim of plastic, about 3 inches long and 1/4 inch wide. Repeat this, cutting an 1/8-inch shim from the card as well. Put little bends in the shims with your fingers, so they are not perfectly straight.

Note: The perpendicular lines help because the corners of the PVC card are curved. The PVC cards can be very difficult to cut. The knife can easily slip and cut you, so be extremely careful.

Step 3: Use the shims.

Simply slide a shim into the reader. The bends you put in it will prevent the shim from sliding out on its own. Without any shims, the reader will read track 3; with the 1/8 inch shim, it reads track 2; and with the 1/4 inch shim, it reads track 1. Stripe Snoop supports the use of shims to read in different tracks from the same card before it decodes and processes the card. In Stripe Snoop 1.6, the current public version, you do this with command-line options to ss: ss -1 reads track 1, ss -2 reads track 2, and ss -3 reads track 3 (without a flag, ss defaults to track 2). In the next version, Stripe Snoop 2.0, currently in CVS, the rdetect config utility will prompt you ahead of time for which track you want to read.

Hint: If you don't have a Omron reader, don't worry. You can always use shims to read all the tracks "below" the highest track your reader can read. So, with a Track 2 Reader from BGMicro ($4), you can use a single 1/8" shim to read track 1.