News feed

  • libm17 – 1.1.2 update

    libm17 has just been updated with polyphase square root raised cosine filter taps, for both 24 and 48kHz sample rates. Polyphase filters offer great speed improvement over classic FIR filter implementations. This approach is also being implemented in OpenRTX.

    Tested on an STM32F405 (modified Nokia 3310) – filtered 1,000 frames with 10x upsampling (-Os optimization):

    New code is more than 10 times faster!

  • Nokia 3310 firmware 1.2.0 is out

    Major code rewrite:

    • much better baseband handling (and DSP in general)
    • optimized T9 text entry method
    • multi-line, word wrapping message composer
    • 2 ringtones
    • various code optimizations and cleanups

    WIP: text message reception!

    Sources: https://github.com/M17-Project/M17_3310-fw

  • Running OpenWebRX on LinHT?

    Hell yeah! Vlastimil, OK5VAS, managed to prepare an example LinHT SoapySDR driver for the SX1255. This allows OpenWebRX to be ran on the device, fetching IQ baseband samples directly from the ZMQ proxy (described a few posts back).

    OpenWebRX decodes M17, along with other digi modes.

    Astonishing work! This is the innovation amateur radio world needs. Can your radio do this? 😉

  • CC1200 hotspot firmware v2.0 is out

    We prepared a major rewrite, fixing most (all?) baseband transfer problems. The blue Service LED blinks happily now 🙂

    This code is not compatible with older rpi-interface or Go M17 client. Make sure to update those!

    Hotspot firmware: https://github.com/M17-Project/CC1200_HAT-fw
    Updated rpi-interface: https://github.com/M17-Project/rpi-interface

  • Improved T9 text entry library

    Our T9 predictive text entry implementation has just been updated with a binary search. By using this kind of search method, with just a 6kB overhead for a 22kB dictionary (about 3,000 entries), the search time decreases considerably from 6.3 to about 0.27 milliseconds. The previous version required over 11 milliseconds to perform the same task (using linear method).

    That extra space is used to store word locations within the sorted dictionary (array of uint16_t).

    GitHub: https://github.com/M17-Project/M17_T9

    Search time for 1,000 operations:
    Old, linear: 11.5ms
    New, linear: 6.3ms (no additional overhead)
    New, binary: 0.27ms

    The code is yet to be tested on STM32 (modified Nokia 3310, OpenRTX targets?) and the LinHT.

    Enjoy!

  • CC1200 HAT – new firmware release

    After a few days of intense work, version 2.0 of the CC1200 RPi HAT firmware is now available on GitHub (through the dev branch). Feel free to give it a spin. Don’t forget to leave some feedback afterwards.

    The new version requires rpi-interface (again – use the dev branch), and does not yet work with Jim N1ADJ’s m17-gateway. Work in progress!

    Happy experimenting 🙂

  • LinHT – Rev B update

    Vlastimil OK5VAS has just offered a PR with his magnificent work on the Rev B – https://github.com/M17-Project/LinHT-hw/pull/39

    Note: please do not order anything yet – the design is not production ready.

    The design requires a review – we encourage everyone to take a look at it. The GitHub repository holds a complete KiCAD project (we love KiCAD!). The full schematic is here.

    Board preview (click to enlarge):

    Great job, Vlastimil!

  • CC1200 hotspot dashboard – revamped

    The M17 dashboard for our CC1200 Raspberry Pi hotspot shield has just been completely revamped. This new design needs to be tested now. All the files are available through the dev branch on GitHub. Enjoy!

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

    Image
    M17 GNU Radio transceiver (click to enlarge)