What is it?
MicroModemGP is a general purpose firmware for my open source AFSK1200 modem, MicroModem. By flashing the firmware to a MicroModem or a compatible build, you can use it to send and receive data packets over more or less any kind of analogue connection. On this page you can find general usage information and the latest pre-compiled firmware images.
- Send and receive data packets with almost any radio
- Easy to use input and output connections (standard 3.5mm TRS jack in version with case, direct audio in and out connectors on board)
- Supports data payload size of up to 564 bytes per packet
- PTT trigger functionality
- Transmit and receive LEDs
- Supports running with open squelch
- Supports KISS serial protocol
- Supports direct serial mode
- Full P-persistent CSMA support in KISS mode
- Fully open source, all code is available on GitHub
Download Latest Precompiled Images
There’s currently two versions of the firmware available, a version using KISS and a version using direct serial. Take your pick, download, flash and enjoy!
You can flash the firmware with avrdude or similar programs. Using avrdude, the command would look something like:
avrdude -p m328p -c arduino -P /dev/ttyUSB0 -b 115200 -U flash:w:MicroModemGP.hex
KISS mode or direct serial framing
When the modem is running in KISS mode, there’s really not much more to it than connecting the modem to a computer, opening whatever program you want to use with it, and off you go.
You can also use the modem with direct serial framing. If using direct serial framing, the firmware uses time-sensitive input, which means that it will buffer serial data as it comes in, and when it has received no data for a few milliseconds, it will start sending whatever it has received.
If you’re manually typing things to the modem from a terminal, you should therefore set your serial terminal program to not send data for every keystroke, but only on new-line, or pressing send or whatever. You can also compile the firmware for KISS mode serial connection, if you have a host program using KISS.
Changing settings in KISS mode
Most KISS compatible software supports changing the preamble time (called TX delay in some programs), tail time, persistence and slot time parameters over the serial connection.
It’s important to note that some programs (Xastir, for example) will reset the modem when connecting to it, and then immediately send configuration commands. This has the unfortunate effect that the configuration commands are sent to the bootloader, instead of the booted firmware. If your program does not allow you to disable resetting or to set a delay for sending the configuration commands, you can manually disable the reset functionality by connecting a resistor of around 100 ohms between the VCC and DTR pins. This will ensure that the modem is not reset, even if the host program sends a reset command.
Connecting to a Radio
You will need to connect the Audio In port of the modem to the speaker output of your radio, and the Audio Out port of the modem to the input of your radio. Most handheld radios will need microphone level audio on the input port, otherwise the transmitted audio will distort, making packets hard to decode. You should also also connect GND from your radio (usually the GND pin of the speaker jack) to the GND port of the modem. The PTT circuit works by closing a switch (using a MOSFET) between the PTT_V+ and GND pins. Most Kenwood-style handhelds will have +3v on the ground pin of the MIC jack (connect this to PTT_V+ on MicroModem), that will trigger PTT when connected to the ground pin on the SPK jack (connect this to GND on MicroModem). Some radios can accept a logic-level PTT signal, and will have a dedicated PTT pin. For these radios, use the “PTT” pin on the radio to the “PTT” pin on MicroModem.