idBoy

by J. Aaron Holmes (N7OE)

Welcome, visitor ####.


Welcome to the idBoy web site!
 
Well, ok, it's really not much of a site, but I figured I'd take a few moments to introduce one of my hacky projects.  Some years ago, while I was attending Washington State University in Pullman, WA, fellow hams and I got addicted to hidden transmitter (a.k.a., "bunny", "rabbit", "fox", etc.) hunts.  That is, somebody hides with a radio, and others try to find that someone using radio direction finding (RDF) antennas ... or not ... it was often easy enough to sniff out the hider using "rubber duckie" antennas and "body fade" techniques (not explained here).  It was lots of fun.

One of the things we did get into building/using was transmitter controllers.  After all, few people want to sit around giving out ten-counts on demand.  Rather, it's cooler (for the hider) to be able to sit down, turn on the "bunny", and then go about reading a book (or laughing evilly about the diabolical nature of their hiding spot) without interruption.

...so here's yet another such controller:  idBoy.  idBoy is a piece of software for the Nintendo Game Boy Advance.  With idBoy and a simple homebrew interface, the Game Boy Advance makes a dandy bunny.  It has great battery life, has square-wave synthesis audio channels (among others) perfect for producing CW (morse code) tones, and has a link port perfect for controlling a radio.  As far as I'm aware, idBoy represents the first such use of a Game Boy, or any Nintendo product for that matter:



Pictured above is a our favorite pocket-sized video game console wired to an Icom IC-T7H 2m/70cm radio.  Below is a pic of idBoy fully booted.  You can barely make out the text menu with the "DE W7YD HIDDEN XMTR" message that we've used for recent hunts on the University of Washington campus.  W7YD is their ham club's callsign.



Unlike prior bunnies, idBoy is easily configured using a menu that allows the operator to choose a CW message, key speed, and delay between transmissions.  Configuration is saved on the cartridge so you don't have to re-enter your message every time you turn idBoy on.  Future versions will sport even more (but probably useless) features just for looks.  The first version was just one night's work, and thus has a text-only interface.

Here's a closeup of the Game Boy-to-Icom radio interface, top and bottom.  I'll probably figure out some way to conceal/protect the board, but for now it does ok just pinned to a gutted GBA-to-GC adapter sleeve.  I did spray-coat the underside, however :)

(closeup of the top of the interface--not too many parts are there?)

(closeup of the bottom of the interface--simple enough to route by hand and use a Radio Shack PCB etch kit.)

 

Board is fixed in place by a pin (which my finger is conveniently covering) and then hugged by two screws to immobilize it.  Alas, I didn't give myself much extra PCB to deal with.  I'm still investigating the best way to mount this.

...and finally, the schematic for the interface:


NEWS!

  • 04/19/2003 - idBoy v0.2 makes its on-the-air debut!  Turnout was small for the second annual University of Washington bunny hunt, but idBoy v0.2 got a good smoke test.  No bugs found ... yet :)

  • 04/17/2003 - idBoy v0.2 released!  This version fixes a few bugs and improves user experience by freeing the Game Boy audio for monitoring purposes.  Details on the changes are given in the FAQ section at the bottom of the page.

  • 04/05/2003 - idBoy v0.1 helps kick off bunny hunts at the University of Washington.  The wiring was a bit fragile, but it worked.  All-in-all, a great outing for the proof-of-concept bunny. 

  • 04/02/2003 - idBoy lives!  idBoy v0.1 is functionally complete.  Boy, does it rock! :)
     

FAQ/Info:

Q: Can you send me the ROM image for idBoy so I can use it?
A: Be warned, this is version 0.2, implying that there's lots of work to do.  ...but yes, here you go: idboy_02.zip  Note that if you play with this in an emulator, the speed may be way off.  For example, the current version of VisualBoyAdvance, one of the more popular GBA emulators, totally screws up the delay loop used to control the cursor movement and auto-repeat function.  It still works, but it's super-fast :)  For best results, try it on a real GBA.

IMPORTANT:  Changes/fixes in idBoy 0.2:

  • SI is no longer the PTT signal.  It has been replaced by SO.  While idBoy 0.2 is compatible with the old version of the interface, it is necessary to rewire the link cable so that SO replaces SI, and SI replaces GND.  Why do this?  Simple:  All signals except SI fluctuate during power-up.  SI remains high for the duration of power-up, then goes low.  By replacing GND with SI, the forward voltage on the 4N33 is at most zero during this time.  Once idBoy gets control, it can then raise SO to PTT.  Cool, huh?  Sans this fix, the interface will erroneously broadcast the Nintendo logo music if the connected radio is already on when the GBA is turned on.  Music on amateur radio is a big no-no.  I hadn't put the scope on the link port before running with the original design because I procrastinated and built the thing at the last minute.

  • SD is switched at 750hz to emulate the speaker tone.  This allows the interface to be connected exclusively to the link port.  No more audio cable.  Yay!  This also means the operator can monitor the code being sent without having a second radio and without watching the blinking cursor move across the screen.

  • No TX during message selection!  Doh!  Not sure how I missed this bug in 0.1, but I discovered that idBoy was actually keying the radio for each character chosen during message selection.  Thanks to a delay (at least in my Icom IC-T7H) between the time a DC path is provided between mic leads and the time it actually keys, TX time was almost too brief to see the indicator LED on the radio go from green to red, but it was enough to break the squelch on a monitoring radio, which eventually sounded like more than coincidence :)  Arg.  Fixed now.

Q: Can you send me the source code for idBoy so I can tinker with it?
A: I might release the source for the next version, but probably not.  This one's a real spaghetti ball, and not worth the embarrassment.  It was a "one-night wonder", after all.

Q: How can I write code for the Game Boy Advance (GBA)?  What skills are needed?  What tools are needed?
A: You'll need to know how to code using the C language, unless you prefer ARM assembly (there's always that). There are several free SDKs (software development kits) available for the GBA, so you don't have to give Nintendo 1000's of $$.  Also, you'll want a way to get your finished product onto a real GBA.  Unless you like to solder surface-mount components, you'll want to buy a pre-made "linker" (cartridge writer) and a Flash ROM-based cartridge.  Here's the goods:

  • HAM, the coolest free GBA SDK.  Site has user-to-user support and lots of other goodies (and no, "HAM" doesn't have anything to do with ham radio, it's just a funny coincidence).

  • www.GameGizmo.com, home of linkers and Flash ROM cartridges.  Get your credit card ready!  (link broken...searching for new retailer)

  • www.gbadev.org, home of all sorts of great Game Boy Advance information, sample C and assembly code, etc;  THE place for all amateur GBA development info.  Expect to spend some time reading this stuff.

Q: You're FAQ only contains three questions (this one doesn't count)!!  Can I mail you my additional questions?
A: Yeah, my email address is somewhere on this page, but be warned:  If you've never soldered and/or written a line of code before, you're probably beyond help :)

 

Best Regards,
J. Aaron Holmes (N7OE) jaholmes@silicon-arcana.com

Last update: November 13, 2003

Go back to N7OE's Transmitter Controller Page.
 Go back to silicon-arcana.com
 

This site is a member of WebRing. To browse visit here.