The jeffpc Amateur Radio Fox

There is already a number of different fox hunting designs out there—both commercial and hobbyist built. Therefore, there is no practical reason to make another design. The design I came up with and shared on this page came about because of a combination of three factors:

  1. Desire to experiment with microcontrollers and electronics in general,
  2. Desire to deploy a fox transmitter for others to find, and
  3. The inspiration I got from Eliot Mayer’s W1MJ 5-Watt Fox V1.0 writeup.

Photo of assembled revision A fox

The whole design is centered around an ATmega48P but could be easily adapted to other (similar) AVR microcontrollers. The details of the design, its limitations, as well as construction instructions can be found in the manual.

Building Source Code

If you wish to build the firmware from source instead of downloading the binary files (see the downloads section below), you must have:

First, you need to get the source code. The code is stored in a Mercurial repository which you can clone to your computer:

$ hg clone https://hg.sr.ht/~jeffpc/fox

Then change to the newly created directory, and run make:

$ cd fox
$ make

Note: the system you are on may call the BSD make something else, for example bmake.

When the build completes, you'll have the following files (all targeting the ATmega48P microcontroller):

You can download these instead—see the download section below.

Programming the Microcontroller

In addition to the firmware itself and the fuses config file, you also need the eeprom contents file. This can be generated using the gen-eeprom.py script in the source directory. For example:

$ ./gen-eeprom.py
Usage: /home/jeffpc/src/cwfox/gen-eeprom.py <callsign> <mode> <p. tones> <key on> <key off> <stride delay>

   <callsign> is used for morse ID
   <mode> is one of:
      0 = fixed tone pattern
      1 = linear feedback shift register tone pattern
      2 = morse ID only
   <p. tones> is number of tones to play for in tone pattern
   <key on> is number of samples to wait between key on and first sample
   <key off> is number of samples to wait between last sample and key off
   <stride delay> is the number of seconds between message starts
$ ./gen-eeprom.py MYCALL 0 80 65535 4096 60

You should now see a fmfox.eeprom file in the current directory, which will use the fixed tone pattern of 80 tones, followed by MYCALL in Morse code. The key-on delay is 65535 samples (just under 4 seconds) and the key-off delay is 4096 samples (0.25 seconds).

At this point, you can program the microcontroller. I use minipro and a MiniPRO TL866II+ programmer. Because I'm lazy, I added a make target to do the programming for me. It programs the flash with the .bin file, the fuses with the .conf file, and the eeprom with the .eeprom file.

$ make program

The microcontroller is now ready to use in the circuit.

Downloads

Revision A: manual, schematic, ELF, bin, ihex, fuses

Support

If you have any questions or suggestions please direct them to jeffpc@josefsipek.net or use one of the other contact methods. If you found a bug, either use these contact methods to let me know about it, or file a bug.

Licenses

The source code and documentation are licensed under the terms of the MIT License. The hardware uses the CERN Open Hardware Licence Version 2 - Permissive.