Repeater-Builder RIM-Maxtrac

Svxlink-ohjelmiston asentaminen Raspberry Pi -tietokoneeseen

Tämän asennusohjeen avulla on tavoite saada rakennettua radioverkkoon kytketty simplex-taajuudella toimiva SvxLink-asema. Ohjelmiston asentajalta edellytetään Linux-osaamista.

VAROITUS! Ennen aloitusta huomio, että tämän ohjeen esimerkikomennoissa esiintyvät laitetiedostojen polut voivat vaihdella omaan laitteistoosi verrattuna. Selvitä laitetiedoston polku ennen komennon antamista, muuten saatat saada tuhoa aikaiseksi.

Tämä ohje on kirjoitettu seuraaville laitteille, mutta on sovellettavissa myös muiden kokoonpanojen yhteydessä.

  • Motorola GM340 UHF-radio
  • RIM-Maxtrac USB-liityntäkortti
  • Raspberry Pi 3 Model B v1.2

Radion ohjelmointia varten tarvitset CPS-ohjelman ja kaapelin.


Käyttöjärjestelmän kirjoittaminen mikro-SD-kortille

Käytämme vanhempaa Raspberryn käyttöjärjestelmää, koska read-only-tiedostojärjestelmän luominen ei toiminut uudemmassa versiossa. Kirjoita Raspberry Pi OS Lite (Legacy) -käyttöjärjestelmä muistikortille toisella Linux-tietokoneella.

wget https://downloads.raspberrypi.org/raspios_oldstable_lite_armhf/images/raspios_oldstable_lite_armhf-2021-12-02/2021-12-02-raspios-buster-armhf-lite.zip
unzip 2021-12-02-raspios-buster-armhf-lite.zip
sudo dd if=2021-12-02-raspios-buster-armhf-lite.img of=/dev/sdf conv=fsync bs=64k

Salli SSH-yhteyden muodostaminen Raspberry Pi -tietokoneeseen kirjoittamalla muistikortille /boot-hakemistoon tiedosto ssh

sudo mount /dev/sdf1 /mnt 
sudo touch /mnt/ssh
sudo umount /mnt

Tässä vaiheessa voit sujauttaa muistikortin Raspberry Pi -tietokoneeseen ja käynnistää sen.


Ota SSH-pääteyhteys Raspberry Pi -tietokoneeseen ja päivitä sen käyttöjärjestelmä

sudo apt update && sudo apt -y upgrade

Tee tarvittavat asetukset (hostname, locale, timezone, jne.)

sudo raspi-config

Asenna seuraavat ohjelmat ja kirjastot

sudo apt -y install git g++ cmake make libsigc++-2.0-dev libgsm1-dev 
sudo apt -y install libpopt-dev tcl-dev libgcrypt20-dev libspeex-dev
sudo apt -y install libasound2-dev libopus-dev libcurl4-openssl-dev groff libgpiod-dev
sudo apt -y install libjsoncpp-dev librtlsdr-dev libogg-dev vorbis-tools
sudo apt -y install ladspa-sdk

Lataa SvxLink-lähdekoodi

cd ~
git clone https://ssverkko@bitbucket.org/ssverkko/svxlink.git

Lataa päivitykset SvxLinkin päärepositorista

cd ~/svxlink
git remote add upstream https://github.com/sm0svx/svxlink.git
git pull upstream master

Käännä ja asenna

cd ~/svxlink/src 
mkdir build && cd build 
cmake -DWITH_SYSTEMD=ON -DUSE_QT=OFF -DCMAKE_INSTALL_PREFIX=/usr -DSYSCONF_INSTALL_DIR=/etc -DLOCAL_STATE_DIR=/var -DCMAKE_BUILD_TYPE=Release ..
make -j$(nproc)
sudo adduser --system --shell /bin/bash --gecos 'SvxLink Radio System' --group --disabled-password --home /home/svxlink svxlink
sudo adduser svxlink audio
sudo adduser svxlink plugdev
sudo adduser svxlink input
sudo adduser svxlink gpio
make doc
sudo make install
sudo ldconfig

Lataa ja asenna SvxLinkin englanninkieliset äänet

cd /tmp
wget -N https://github.com/sm0svx/svxlink-sounds-en_US-heather/releases/download/19.09/svxlink-sounds-en_US-heather-16k-19.09.tar.bz2
sudo -i
cd /usr/share/svxlink/sounds/
tar xvjf /tmp/svxlink-sounds-en_US-heather-16k-19.09.tar.bz2
ln -s en_US-heather-16k en_US
exit

Luo tiedosto /etc/udev/rules.d/50-svxlink-cmedia.rules ja kirjoita sen sisällöksi

# USB Radio Interface (C-Media Electronics, Inc.)
SUBSYSTEM=="hidraw", ATTRS{idVendor}=="0d8c", GROUP="audio", MODE="0660"

Muokkaa SvxLinkin konfigurointitiedostoa

sudo nano /etc/svxlink/svxlink.conf

Simplex-aseman konfiguraatio, jossa aliäänen tunnistus ja lähetys tehdään radiossa.
Radion käyttöasetukset (code plug) ovat tiedostossa GM340_V7.0_emp_sq_433950.cpg.

###############################################################################
#                                                                             #
#                Configuration file for the SvxLink server                    #
#                                                                             #
###############################################################################

[GLOBAL]
LOGICS=SimplexLogic,ReflectorLogic
CFG_DIR=svxlink.d
TIMESTAMP_FORMAT="%c"
CARD_SAMPLE_RATE=16000
CARD_CHANNELS=1
LINKS=ReflectorLink

[SimplexLogic]
TYPE=Simplex
RX=Rx1
TX=Tx1
MODULES=ModuleHelp,ModuleParrot
CALLSIGN=NOCALL
SHORT_IDENT_INTERVAL=10
LONG_IDENT_INTERVAL=60
IDENT_ONLY_AFTER_TX=4
EVENT_HANDLER=/usr/share/svxlink/events.tcl
DEFAULT_LANG=en_US
RGR_SOUND_DELAY=-1
RGR_SOUND_ALWAYS=0
MACROS=Macros
FX_GAIN_NORMAL=0
FX_GAIN_LOW=-12
ONLINE_CMD=998877
ONLINE=1

[ReflectorLogic]
TYPE=Reflector
HOST=ss-verkko.net
PORT=5373
CALLSIGN="NOCALL"
AUTH_KEY="abcd1234"
JITTER_BUFFER_DELAY=300
DEFAULT_TG=0
MONITOR_TGS=8
TG_SELECT_TIMEOUT=30
ANNOUNCE_REMOTE_MIN_INTERVAL=300
EVENT_HANDLER=/usr/share/svxlink/events.tcl
MUTE_FIRST_TX_LOC=1
MUTE_FIRST_TX_REM=0
TMP_MONITOR_TIMEOUT=3600
UDP_HEARTBEAT_INTERVAL=15
QSY_PENDING_TIMEOUT=15
VERBOSE=1

[ReflectorLink]
CONNECT_LOGICS=SimplexLogic:9:SSV,ReflectorLogic
DEFAULT_ACTIVE=1
TIMEOUT=300

[Macros]
9=Parrot:0123456789#

[Rx1]
TYPE=Local
AUDIO_DEV=alsa:plughw:1
AUDIO_CHANNEL=0
LIMITER_THRESH=-6
SQL_DET=HIDRAW
SQL_START_DELAY=0
SQL_DELAY=0
SQL_HANGTIME=100
SQL_TIMEOUT=600
HID_DEVICE=/dev/hidraw0
HID_SQL_PIN=!VOL_UP
SIGLEV_DET=NONE
PREAMP=5.20
PEAK_METER=0
DTMF_DEC_TYPE=INTERNAL
DTMF_MUTING=1
DTMF_HANGTIME=40

[Tx1]
TYPE=Local
AUDIO_DEV=alsa:plughw:1
AUDIO_CHANNEL=0
LIMITER_THRESH=-6
PTT_TYPE=Hidraw
HID_DEVICE=/dev/hidraw0
HID_PTT_PIN=GPIO3
PTT_HANGTIME=1000
TIMEOUT=300
TX_DELAY=500
DTMF_TONE_LENGTH=100
DTMF_TONE_SPACING=50
DTMF_DIGIT_PWR=-15
MASTER_GAIN=-0.46

Sopivat alsamixerin asetukset ovat:

- Speaker: 60
- Mic: 0
- Capture: 100
- Auto Gain Control: Off 

Simplex-aseman konfiguraatio, jossa aliäänen tunnistuksen ja lähetyksen hoitaa SvxLink-ohjelma.
Radion käyttöasetukset (code plug) ovat tiedostossa GM340_V7.0_flat_unsq_433950.cpg.

###############################################################################
#                                                                             #
#                Configuration file for the SvxLink server                    #
#                                                                             #
###############################################################################

[GLOBAL]
LOGICS=SimplexLogic,ReflectorLogic
CFG_DIR=svxlink.d
TIMESTAMP_FORMAT="%c"
CARD_SAMPLE_RATE=48000
CARD_CHANNELS=2
LINKS=ReflectorLink

[SimplexLogic]
TYPE=Simplex
RX=Rx1
TX=Tx1
MODULES=ModuleHelp,ModuleParrot
CALLSIGN=NOCALL
SHORT_IDENT_INTERVAL=10
LONG_IDENT_INTERVAL=60
IDENT_ONLY_AFTER_TX=4
EVENT_HANDLER=/usr/share/svxlink/events.tcl
DEFAULT_LANG=en_US
RGR_SOUND_DELAY=0
RGR_SOUND_ALWAYS=1
TX_CTCSS=ALWAYS
MACROS=Macros
FX_GAIN_NORMAL=0
FX_GAIN_LOW=-12
ONLINE_CMD=998877
ONLINE=1
CTCSS_TO_TG=103.5:8,127.3:699

[ReflectorLogic]
TYPE=Reflector
HOST=ss-verkko.net
PORT=5373
CALLSIGN="NOCALL"
AUTH_KEY="abcd1234"
JITTER_BUFFER_DELAY=300
DEFAULT_TG=0
MONITOR_TGS=8,699+
TG_SELECT_TIMEOUT=30
ANNOUNCE_REMOTE_MIN_INTERVAL=300
EVENT_HANDLER=/usr/share/svxlink/events.tcl
MUTE_FIRST_TX_LOC=1
MUTE_FIRST_TX_REM=0
TMP_MONITOR_TIMEOUT=3600
UDP_HEARTBEAT_INTERVAL=15
QSY_PENDING_TIMEOUT=15
VERBOSE=1

[ReflectorLink]
CONNECT_LOGICS=SimplexLogic:9:SSV,ReflectorLogic
DEFAULT_ACTIVE=1
TIMEOUT=300

[Macros]
9=Parrot:0123456789#

[Rx1]
TYPE=Local
AUDIO_DEV=alsa:plughw:1
AUDIO_CHANNEL=0
LIMITER_THRESH=-6
SQL_DET=CTCSS
SQL_START_DELAY=0
SQL_DELAY=0
SQL_HANGTIME=100
SQL_EXTENDED_HANGTIME=1000
SQL_EXTENDED_HANGTIME_THRESH=15
SQL_TIMEOUT=600
CTCSS_MODE=2
CTCSS_FQ=103.5,127.3
CTCSS_SNR_OFFSETS=103.5:-2.04,127.3:-2.36
SIGLEV_DET=NOISE
SIGLEV_SLOPE=20.04
SIGLEV_OFFSET=8.54
SQL_SIGLEV_OPEN_THRESH=30
SQL_SIGLEV_CLOSE_THRESH=10
DEEMPHASIS=1
SQL_TAIL_ELIM=400
PREAMP=9.80
PEAK_METER=0
DTMF_DEC_TYPE=INTERNAL
DTMF_MUTING=1
DTMF_HANGTIME=40
DTMF_SERIAL=/dev/ttyS0

[Tx1]
TYPE=Local
AUDIO_DEV=alsa:plughw:1
AUDIO_CHANNEL=1
LIMITER_THRESH=-6
PTT_TYPE=Hidraw
HID_DEVICE=/dev/hidraw0
HID_PTT_PIN=GPIO3
PTT_HANGTIME=1000
TIMEOUT=300
TX_DELAY=500
CTCSS_FQ=103.5
CTCSS_LEVEL=9
PREEMPHASIS=1
DTMF_TONE_LENGTH=100
DTMF_TONE_SPACING=50
DTMF_DIGIT_PWR=-15
MASTER_GAIN=0.07

Sopivat alsamixerin asetukset ovat:

- Speaker: 88
- Mic: 0
- Capture: 100
- Auto Gain Control: Off

Säädä lähetys- ja vastaanottoaudion tasot käyttämällä signaaligeneraattoria ja deviaatiomittaria, tai vaihtoehtoisesti spektrianalysaattoria ja erillistä lähetintä. Spektrianalysaattorilla haetaan Bessel-funktion nollakohta ja erillisen lähettimen avulla säädetään vastaanottotaso. Myös USB-RTL-tikulla voi mitata lähettimen deviaation.

Alsamixerin käynnistäminen ja asetusten tallennus

alsamixer -c 1 --view=all
sudo alsactl store

Lähettimen deviaation säätäminen

man devcal
devcal -t /etc/svxlink/svxlink.conf Tx1

Vastaanottimen tason säätäminen käsiradion 1750 Hz toistinpiipalla, kun piipan deviaatio on ennalta selvitetty

man devcal
devcal -r -f 1750 /etc/svxlink/svxlink.conf Rx1

Signaalidetektorin kalibrointi

man siglevdetcal
siglevdetcal /etc/svxlink/svxlink.conf Rx1

SvxLinkin koeajo terminaali-ikkunassa

sudo svxlink --runasuser=svxlink

SvxLinkin automaattinen käynnistäminen

sudo systemctl enable --now svxlink

SvxLinkin käynnistäminen uudelleen

sudo systemctl restart svxlink

SvxLinkin tila

sudo systemctl status svxlink

Automaattikäynnistys voidaan poistaa

sudo systemctl disable --now svxlink

Lokitiedoston seuraaminen

tail -f /var/log/svxlink

Lisää NTP-palvelimet tiedostoon /etc/ntp.conf ja poiskommentoi pool-alkuiset rivit. Tee tämä vaihe vasta seuraavan muistikortin suojauksen jälkeen.

...
# You do need to talk to an NTP server or two (or three).
#server ntp.your-provider.example

# Telia
server 193.210.18.10
server 192.89.123.70
server 192.89.123.74

# DNA
server 62.241.198.251
server 62.241.198.252
server 62.241.198.253

# Elisa ja Saunalahti
server ntp1.kolumbus.fi
server ntp2.kolumbus.fi

# Finland fi.pool.ntp.org
server 0.fi.pool.ntp.org
server 1.fi.pool.ntp.org
server 2.fi.pool.ntp.org
server 3.fi.pool.ntp.org

# pool.ntp.org maps to about 1000 low-stratum NTP servers.  Your server will
# pick a different set every time it starts up.  Please consider joining the
# pool: <http://www.pool.ntp.org/join.html>
#pool 0.debian.pool.ntp.org iburst
#pool 1.debian.pool.ntp.org iburst
#pool 2.debian.pool.ntp.org iburst
#pool 3.debian.pool.ntp.org iburst
...

Lopuksi Raspberry Pi:n muistikortti suojataan asettamalla sen tiedostojärjestelmä pelkkään lukutilaan. Kortille voi myöhemmin kirjoittaa antamalla ensin komento ‘rw’, takaisin lukutilaan siirrytään komennolla ‘ro’.

cd ~
git clone https://gitlab.com/larsfp/rpi-readonly
cd rpi-readonly
sudo ./setup.sh

73, Suur-Savon Verkko ry

Suur-Savon Verkko ry - OH4SSV
Radioamatöörien puhe- ja viestiverkkoja edistävä yhdistys