News feed

  • LinHT – a complete M17 transceiver (finally!)

    We’ve just got LinHT to work as a complete M17 transceiver – able to transmit and receive RF signals without the need to use SSH to issue any commands. This was not as easy as we expected, due to ALSA-related problems (Linux users probably know what I mean).

    The issue was GNU Radio not allowing us to use SX1255 baseband source and sink within a single flowgraph. Just to remind you – the SX1255 is seen by the OS as a sound device. I and Q baseband branches are disguised as Left and Right audio channels πŸ™‚ Andreas OE3ANC proposed a simple workaround – daemonized ZeroMQ publisher/subscriber proxy for both directions. Then, instead of using GNU Radio’s Audio Sink/Source blocks, the baseband is accessed through ZMQ PUB/SUB blocks. PTT signal is handled as GNU Radio’s native “Message PMT”.

    Right now, using LinHT for M17 is as simple as turning the device on and a PTT press. The GUI daemon loads all the RF front-end and M17 settings from a YAML file. There is still a lot of work to do, especially to improve the receiver path, as the SX1255 is really sensitive and gets saturated easily. This is why we added a variable RF attenuator in Rev B.

    None of the achievements or work mentioned above would be possible without our core contributors: Andreas OE3ANC and Vlastimil OK5VAS. Working on LinHT with you is an amazing journey!

    A demo video will be shared later, while LinHT’s Revision B is still being prepared, so stay tuned!

    Edit: this is how our M17 transceiver looks like, defined with a GNU Radio flowgraph. Two upper signal paths define the receiver, the last one (bottom) is the transmitter. Big shout out to Jean-Michel Friedt for all the help with gr-m17 development.

    M17 GNU Radio transceiver (click to enlarge)
  • LinHT – Rev B update

    This is how the Rev B board looks like (WIP). PCB designed by Vlastimil OK5VAS.

    There is still some more work to do, so stay tuned. Big shout out to everyone who donated to our Foundation. Every dollar counts: your donations help us do magnificent things.

  • M17 Specification release 3.0.0 – draft

    The M17 specification is being updated with the following changes, most of them breaking:

    • TYPE field has been completely restructured, including Packet/Stream bit removal
    • changed the way text messages are sent using the META field; set padding bytes to 0x00
    • added TLE data packet type
    • various cleanups

    We have spawned a separate dev branch for the draft: https://github.com/M17-Project/M17_spec/tree/dev

    The document is available for review below. Comments are welcomed!

  • OpenRTX translations – help needed

    We’ve just translated OpenRTX into Ukrainian and Polish.

    Join the effort: https://hosted.weblate.org/projects/openrtx/openrtx/

    Update: German, Czech, Portugese (Brasil), Spanish, and Swedish followed really fast. Thank you!

  • m17-gateway 0.2.10 update

    A simple DSP trick added into the most recent version of N1ADJ’s Go M17 gateway reduced MER down from 3.5% to under 2% (tested with a CS7000). A short IIR filter equalizes the frequency response of the CC1200 demodulator, improving the eye diagram. Additionally, the demodulator’s sensitivity has been adjusted for optimal M17 reception.

    GitHub: https://github.com/jancona/m17

  • OpenRTX updates

    Silvano IU2KWO:

    Demodulator fixes merged into master, next round of improvements for M17 decode available here: https://github.com/OpenRTX/OpenRTX/tree/m17-ber-threshold

    The new demodulator improves M17 symbol timing and slicing. The next planned change will put a threshold on the decoded VIterbi output, based on its metric. That’s where the Codec 2 payload is. Erroneous data will not be played back anymore. This should improve overall user experience with the M17 mode.

    Great job so far!

  • LinHT at OpenAlt 2025

    Vlastimil OK5VAS will be presenting LinHT at OpenAlt 2025 in Brno on Sunday, November 2, at noon.

    Update:
    Vlastimil’s talk was streamed live:

    (direct YouTube link)

  • LinHT – GRF5604 RF amplifier tests – part II

    After receiving a new 10W 40dB attenuator, I decided to give the GRF5604 a spin again. I connected it to my LinHT prototype (Revision A hardware, for the record) and supplied with 5.1V. I’ve set the SX1255’s DAC gain to 0dB and mixer gain to -13.5dB, to prevent the power amplifier from saturating.

    Here’s a spectrum plot showing harmonics with the fundamental at 36dBm (M17 signal at 433.475MHz):

    Harmonics are below -60dBc, which I would call a good result (the output filter is a MiniCircuits LFCN-490+). The peak to the left is the PLL reference leakthrough (32MHz).

    Stay tuned for more news.

  • LinHT – CQ DL cover article

    We are making headlines again, this time with the LinHT – our revolutionary, open-source handheld radio running Linux. Make sure to grab CQ DL issue 11-2025 πŸ™‚

    Please donate to keep our projects alive: https://www.paypal.com/donate/?hosted_button_id=4HTHZCS8UYPU6

    Thank you!

  • libm17 1.1.1 is out

    This release adds a new function, sq_eucl_norm, and fixes the unterminated-string-initialization warning.

    The squared Euclidean norm (fancy name for a simple sum of squared differences) offers some more robustness, as it doesn’t use sqrtf, which might be computationally expensive. Calculating pure L2 norm is not always required, as the similarity between two vectors can be estimated without using square roots.

    libm17 GitHub repository