Skip to content


Switch branches/tags

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

RS41-FOX - RS41 Amateur Radio Direction Finding (Foxhunting) Beacon

This codebase turns a Vaisala RS41 into a 70cm 'radio fox', suitable for use in amateur radio direction finding contests.

This is a fork of, which is itself a fork of


  • Morse Ident containing callsign & current battery voltage.
  • Long CW beacon (user-defined length and number of repeats)
  • Low-Voltage Cutout, to avoid destroying rechargable batteries.
  • Beacon GPS position when battery is below a user-defined threshold.


Configuration settings are located in config.h. Modify as appropriate before compiling/programming.


(Currently only supporting compilation with GCC under Linux/OSX)

  • Grab the latest GNU ARM Embedded toolchain from here:
  • Extract the tarball to somewhere useful. In my case I'm using ~/opt/
  • Within the RS41HUP directory:
    • Edit CMakeLists.txt and set the correct path to the un-tar'd directory.
    • Optionally enable a method of programming, in CMakeLists.txt.
    • cmake .
    • make



  • Use the ST Micro ST-LINK utility (Windows only), or
  • openocd under Linux/OSX/Windows, or
  • stlink under Linux/OSX/Windows, or
  • Use with a Black Magic Probe. You will need to modify this script with the path to the debugger's serial interface.

Only the proprietary ST-LINK utility, or openocd, are known to support unlocking the device to remove the original manufacturer's firmware.

Refer to this file for programming header pinouts. Note that you will need to power up the RS41 using the power button, before you will be able to interact with the MCU chip.

Please do not allow the RS41 to run the original manufacturer's firmware, as this will result in unlicensed radio transmissions. With the reset line connected to a debugger, it is possible to keep the MCU halted. However if the LED lights up after pressing the power button, then some firmware is definitely running - please erase the original firmware ASAP, or remove the batteries.

The build system supports a number of useful operations via openocd or stlink:

  • make erase erases the flash, and if using openocd, unlocks a locked device
  • make halt resets and halts the device
  • make run resets the device and lets it run
  • make program-halt programs the device and halts it
  • make program programs the device and lets it run

Additionally make program is supported with Black Magic Probe. Currently halt and program-halt are not supported with stlink. The program targets will first compile the firmware, if it is not up to date.

A typical sequence for programming a freshly acquired RS41, would be:

  • openocd: make erase program-halt
  • stlink: Unlock the device using the proprietary (Windows) version of ST-LINK, and clear the flash page protection bits. Then program using either the proprietary ST-LINK, or the free replacement.

An already unlocked RS41 does not require make erase before programming. Always remember to press the power button after inserting batteries, or the MCU will not be powered for programming.


  • Program as above.
  • Once batteries are inserted, press the power button to start transmissions.
  • Remove batteries to stop transmissions.

Power Consumption Notes

Power consumption of the various peripherals is approximately:

  • uC + other quiescent power usage: ~100 mW
  • Radio: ~170 mW (20mW TX Power)
  • GPS (Acquisition/Tracking Mode): ~210 mW

In the case of a stationary radio fox, there isn't much point enabling the GPS after the initial position fix, so we turn it off. This almost doubles our battery life...

Runtime Estimate

Achieved battery life will depend on your battery chemistry and transmit duty cycle. As a pessimistic estimate (assume 100% duty cycle, GPS disabled), we can state that the power consumption of the RS41 is 270mW.

Using 2x AA Lithium cells (~3Ah @ 3V = 9 Wh), we have a runtime of approximately 33 hours. Using 2x Alkaline AAs, (~2.5Ah @ 3V = 7.5 Wh), the expected runtime is 27 hours (if operating continuously), though note that the discharge curve of the batteries is quite different to the Lithiums, and the low-voltage thresholds will need to be adjusted appropriately.

Runtime Actuals

  • 2x Energizer Industrial Alkaline AA - 20mW TX, On = 10 seconds, Off = 10 seconds, Low Voltage Cutout = 0.5V - Runtime: 36 hours.
  • 2x Energizer Lithium AA - 20mW TX, On = 10 seconds, Off = 10 seconds, Low Voltage Cutout = 0.5V - Runtime: ??


Code to turn a RS41 into a Amateur Radio Foxhunting Beacon







No releases published


No packages published