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.

Features

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

 

7 thoughts on “MicroModemGP

  1. Hi Mark,

    Firstly let me thank you for your good work.

    I am experiencing very different RX performance between the microaprs & MicroModemGP firmware.

    The ‘microaprs-5v-ss-latest.hex’ works great even on a noisy signal – really impressed, but the ‘MicroModemGP-5v-direct.hex’ doesn’t receive packets at all well, not even 100% on a fully quieting signal.

    I’ve not tried the 3V versions as I have a filtered 2.5V bias on the A0 input.

    The modems are made from genuine Arduino Uno’s (as I had a couple) and the passives added on a proto shield.

    The test set-up is identical for both firmware versions, all I did when I found the issue with the MicroModemGP-5v-direct.hex version was to flash the two Arduino boards back to the microaprs-5v-ss-latest.hex file.

    Would you expect the RX performance to be the same?

    Regards,

    Chris G6WHI

    1. Hi Chris
      Something’s definitely not right there. Performance should actually be better on the MicroModemGP firmware, since it employs FEC and interleaving. It’s admittedly been a while since I tested the 5V version, so maybe a change somewhere has caused issues. I’ll have to look into it. Thanks for bringing it to my attention!

      1. Hi Mark,

        Following your reply I altered one of my modems to use 3.3V on ARef, re-biased A0 to 1.65V and flashed that modem with MicroModemGP-3v-direct version, having re-flashed the other modem back to MicroModemGP-5v-direct version.

        Just sending data in the direction so that the 3.3V version was receiving, same poor RX result as the 5V version.

        I then re-flashed the 3.3V modem with microaprs-3v-ss-latest and the 5V one with microaprs-5v-ss-latest and it works great again.

        So it looks like there’s something wrong with both the 3 and 5V versions of MicroModemGP- -direct.

        Hopefully this is an easy fix, as I’d love to do some experiments with MicroModemGP-5v -direct

        Regards,

        Chris G6WHI

        1. Thanks so much for testing it out. A bug must have snuck in somewhere. I’ll have a look at it and see what’s going on!

        2. Hi Chris,
          I know it’s been a while since you write, but I still wanted to let you know that the performance issues with MicroModemGP have been fixed now 🙂

          1. Hi Mark,

            Thank you for the update and the fix, I will download and test.

            I assume that as there’s only one Direct Serial version now, it’s 3.3V bias?

            Chris

          2. Correct, there was very little use of the 5v bias firmwares, so I only compiled 3.3v bias firmwares this time around.

Leave a Reply

Your email address will not be published. Required fields are marked *