sdrangel/plugins/channeltx/modm17
..
CMakeLists.txt
m17mod.cpp
m17mod.h
m17modax25.cpp
m17modax25.h
m17modbaseband.cpp
m17modbaseband.h
m17moddecimator.cpp
m17moddecimator.h
m17modfifo.cpp
m17modfifo.h
m17modgui.cpp
m17modgui.h
m17modgui.ui
m17modplugin.cpp
m17modplugin.h
m17modprocessor.cpp
m17modprocessor.h
m17modsettings.cpp
m17modsettings.h
m17modsource.cpp
m17modsource.h
m17modwebapiadapter.cpp
m17modwebapiadapter.h
readme.md

readme.md

M17 modulator

Introduction

This plugin is available only on Linux.

This plugin encodes and modulates transmissions made in the M17 protocol. M17 is a fully Open Source and Open Source audio codec based project (Codec2) for FM based digital voice amateur radio. More information is available here

Main interface

M17 Modulator plugin GUI

There are 4 collapsible main sections in the GUI

  • A: Settings: General RF settings
  • B: Audio: Audio related settings
  • C: Packet: Packet mode related settings
  • D: Digital: Settings specific to digital

A: Settings

This is similar to what is found in the NFM modulator.

M17 Modulator settings GUI

A.1: Frequency shift from center frequency of transmission

Use the wheels to adjust the frequency shift in Hz from the center frequency of transmission. Left click on a digit sets the cursor position at this digit. Right click on a digit sets all digits on the right to zero. This effectively floors value at the digit position. Wheels are moved with the mousewheel while pointing at the wheel or by selecting the wheel with the left mouse click and using the keyboard arrows. Pressing shift simultaneously moves digit by 5 and pressing control moves it by 2.

A.2: Channel power

Average total power in dB relative to a ±1.0 amplitude signal generated in the pass band.

A.3: Channel mute

Use this button to toggle mute for this channel.

A.4: RF bandwidth

This is the bandwidth in kHz of the channel signal filtered after modulation.

A.5: Frequency deviation

This is the peak FM deviation in ±kHz that will be effective for nominal (1.0) audio volume (FM analog) or extreme symbols (digital). As per M17 standard the value of ±2.4 kHz shall be used. However different values can be chosen for experimentation.

A.6: Volume

This is the volume of the audio signal from 0.0 (mute) to 2.0 (maximum). It can be varied continuously in 0.1 steps using the dial button.

A.7: Level meter in %

Shows the level of the modulating FM signal.

  • top bar (beige): average value
  • bottom bar (brown): instantaneous peak value
  • tip vertical bar (bright red): peak hold value

B: Audio

M17 Modulator audio GUI

B.1: Tone input select

Works only in FM analog mode (B.3). Switches to audio tone input.

B.2: Tone frequency (kHz)

Adjusts the tone frequency from 0.1 to 2.5 kHz in 0.01 kHz steps

B.3: FM analog

Toggle analog modulation for audio (tone B.1, mic B.4 or file B.8 inputs). Used for testing purposes.

B.4: Mic (line in) input

Left click to switch to the audio input. You must switch it off to make other inputs available.

Right click to select audio input device. See audio management documentation for details.

B.5: Audio feedback

Activate or de-activate the input source audio feedback. The audio output device may be selected by right clicking on the button.

B.6: Audio feedback volume

Adjust audio feedback volume.

B.7: Audio file path

The path to the selected audio file to be played or dots if unselected

B.8: Audio file select

Opens a file dialog to select the audio file to be played. It must be mono 48 kHz F32LE raw format. Using sox a .wav file can be converted with this command: sox piano.wav -t raw -r 48k -c 1 -b 32 -L -e float piano.raw

B.9: Audio file loop

Play the audio file in an infinite loop

B.10: Play/pause file play

Toggle play/pause file play. When paused the slider below (B.13) can be used to randomly set the position in the file when re-starting.

B.11: Play file current position

This is the current audio file play position in time units relative to the start

B.12: Play file length

This is the audio file play length in time units

B.13: Play file position slider

This slider can be used to randomly set the current position in the file when file play is in pause state (button B.10)

C: Packet

M17 Modulator packet GUI

C.1: Packet mode

Turn on packet mode. No other mode must be selected.

C.2: Initiate packet transmission

Send packet frames immediately

C.3: Send packets repeatedly

Send packet frames in an infinite loop with a delay between transmissions set by (C.4)

C.4: Delay between packets

Delay between packet frames in seconds when in loop mode (C.3)

C.5: BERT mode

This is a special mode for Bit Error Rate Testing. In this mode only a synchronization word followed by a chunk of bits taken from a pseudo random generator is sent for each frame. It can be selected only if no other mode is selected.

C.6: Packet tabbed panels

Panels corresponding to each available packet type are arranged in a tabbed setup. Tabs can be selected with icons on the right. These are:

  • SMS: SMS data with the chat icon. Selects SMS packet type.
  • APRS: APRS data with the world icon. Selects APRS packet type.

C.6.1: SMS data

M17 Modulator SMS GUI

Selected with the tab with chat icon (top most). Selecting this tab will set the packet mode to SMS.

This is simply a text edit window where you can type your SMS message. As per M17 standard the maximum number of characters is 798 and text will be truncated to this size if it is larger.

C.6.2: APRS data

Selected with the tab with word icon (bottom most). Selecting this tab will set the packet mode to APRS.

M17 Modulator APRS GUI

C.6.2.1: From identifier

This is the "FROM" of APRS message and usually is the station callsign followed by a dash and a numeric suffix.

C.6.2.2: Add location data

When toggled messages with data (C.6.2.5) and location payloads are sent alternatively. Location data (latitude and longitude) are taken from the global station position settings.

C.6.2.3: To identifier

This is the "TO" of APRS message. There is a choice between "APRS¨, "APZ¨, "CQ", "BEACON", "CALLSIGN-SSID" or custom.

C.6.2.4: Via identifier

This is the "VIA" of APRS message. There is a choice between "WIDE2-2", "ARISS" or custom.

C.6.2.5: Data payload

Arbitrary data payload to be added to the APRS message. As per APRS standard it must be prefixed with the > sign for text payloads.

D: Digital

M17 Modulator digital GUI

D.1: Baud rate

Only the standard 4.8 kBaud rate is available. This is a provision for possible future experimentations.

D.2: Source call

This is the source callsign

D.3: Add GNSS data

Check this button to add GNSS data to the LSF (Link Setup Frame) data. Latitude, longitude and altitude are taken from the global station position settings.

D.4: Destination call

This is the destination callsign. Keep empty for a general (CQ or BROADCAST) call.

D.5: Channel Access Number

This is the 0..15 channel access number sent in the LSF (Link Setup Frame).