M17 Project Forum

Full Version: How to turn an old Motorola GM300 into M17 transceiver
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
TL;DR: it is possible to turn GM300 radios into complete M17 transceivers. See the "New setup" section below for a tentative guide on how to accomplish this.

TEST SETUP: My setup is very simple. A Raspberry Pi 3B is basically playing back a .raw file containing the M17 baseband. The .raw was generated with m17-mod tool. See the code below for details. Output from the soundcard is applied (through a 1k potentiometer) to pin 5 of the connector at the back (accessory connector). The REF trim pot in the radio is set fully clockwise, allowing the signal to pass through. The VCO_MOD pot is set to about 90% of its range (more details later). PTT is keyed by asserting low voltage level at pin 3 (pin 7 is GND, just connect them both).

[Image: gmacc8.gif]

Code:
#generate the baseband from a wave file (8000Hz sample rate, mono, signed 16 bit, little endian)
sox sample.wav -t raw - | m17-mod -S SP5WWP > m17_baseband.out

#the baseband signal is sampled at 48000Hz
#play it back with the external USB soundcard
cat m17_baseband.out | aplay -D plughw:1,0 -c 1 -r 48000 -f S16_LE

Update: Encoding signal from the microphone input is possible, use this script.

NEW SETUP:
A USB soundcard and RPi >=3 is needed. My soundcard is based on a C-media HS-100B chip, they are very cheap.
GM300 modifications needed: JU551 in A position, REF pot set to 100%, VCO pot set to about 90% (set them both to get a flat baseband response, use Gqrx's audio FFT plot), cut pin 4 of TDA1519 open (to be able to inject AF from our own amplifier).
TX: Connect microphone or apply any other equivalent signal source to the mic input (thru a pot if needed). Run the PTT python script. Set the pot so that the reported deviation is 1.0 (use rtl_fm, see this for details). Output from the line out should go to pin 5 of the accessory connector; again: thru a pot... Smile No dc-blocking cap needed.
RX: Connect pin 11 to the mic input (via a pot). Run the command below:
Code:
arecord -D plughw:1,0 -c 1 -r 48000 -f S16_LE | sox -t raw -e signed-integer -c 1 -b 16 -L -r 48000 - -t raw - vol -1 | m17-demod -d | aplay -D plughw:1,0 -c 1 -r 8000 -f S16_LE

Amplify the line out signal using LM386 or something similar and feed it to pin 16 (tie pin 1 to GND).

Note:
The "RX audio" output (pin 11) looked clipped. I had to bypass 390k R552 resistor with a 100k one (THT resistor in the center of the image below). See page 37 of the attached document (GM300 schematic). Alternative link.
[Image: aGfdlre.png]
I'll prepare a tutorial on how to do all the tuning that's needed.

In the meantime, Steve KC1AWV is working on a RPi HAT: https://github.com/M17-Project/M17_GM300_RPi
In order to minimize hardware, can we use Raspberry's default audio output for speaker and tx signal and a stereo i2s codec (like PCM1803) for rx signal and microphone?
So, we can get rid of usb sound card and fit everything in a small hat.
I need to check again but, afaik we can access that audio lines through gpio. We can make it done without any protruding connectors.
Good idea. Are you going to design the board?
I will design in a few days. However, I am not sure that I can test it in a few weeks due to covid lockdown. I need to check my stocks and local component suppliers.