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):
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.
Successful APRS decode. Courtesy of Vlastimil, OK5VAS
Astonishing work! This is the innovation amateur radio world needs. Can your radio do this? 😉
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).
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 🙂
Receiving an M17 RF stream coming from the HAT shield
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.
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!
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.