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