Quansheng UV-K5 kao udaljeni primopredajnik na Linuxu

Josip Tišljar Mataušić (9A3SFZ)

Objavljeno: 14. kolovoza 2025.

Nedavno sam uspostavio udaljeni primopredajnik u Krapini kako bih izbjegao QRM u Samoboru. Za primopredajnik sam htio nešto bazično, bez prevelikih ulaganja, drugim riječima jeftino.

Quansheng UV-K5 se činio kao idealna opcija za početak. To je ručna radio stanica za 2m/70cm za koju su ljudi napravili brojne firmware. Svaki firmware donosi druga unaprjeđenja u odnosu na tvorničke mogućnosti. Vjerojatno najpopularniji Egzumerov firmware omogućuje: bolji AM prijem, brže skeniranje, itd. Čak je moguće napraviti hardwarske modifikacije za primanje SSB-a na kratkom valu, ali o tome neki drugi put.

U moru različitih firmwarea našao se i jedan koji radi upravo ono što je meni bilo potrebno, omogućuje kontrolu Quanshengs pomoću UART veze s računalom. Nakon flashanja firmwarea odmah sam moga kontrolirati stanicu s programom za računalo. No za upotrebu na daljinu nije dovoljno moći kontrolirati stanicu, također moram spojiti zvučni ulaz i izlaz iz Quanshenga u zvučnu karticu. Obični kabel za programiranje kanala ima dovoljno žica samo za serijsku komunikaciju tako da sam morao napraviti vlastiti kabel s dodanim izvodima za zvuk. Uzeo sam konektore iz tvorničkog kabela i zalemio dodatne žice za zvuk prema ilustraciji na stranici firmwarea.

Napajanje

Do sada je sve bilo sumnjivo jednostavno, no došlo je vrijeme da Quanshenga odnesem u Krapinu. Prvo pitanje koje sam postavio bilo je kako ga napajati. Mislio sam da će biti dovoljno cijelo vrijeme držati ga u bazi koja će puniti bateriju. Bio sam u pravu, baterija je stalno puna, no nisam računao da baza proizvodi smetnje na cijelom kratkovalnom području. Već imam u planu dodavanje kratkovalnog prijemnika na istu lokaciju s toga ću morati zamijeniti bazu nekim kvalitetnijim napajanjem. Planiram napraviti DC ispravljač koji nije svičerski i njime napajati Quanshenga direktno bez baterije. Time ću se osloboditi brige od zapaljenja baterije, ali i, još važnije, riješiti smetnji na kratkom valu.

Pokretanje Windows programa na Linuxu

Sljedeći problem je što računalo u Krapini pokreće Linux, a Quansheng Dock podržava samo Windows. Umjesto da se predam i samo instaliram Windowse, odlučio sam natjerati Quansheng Dock da radi na Fedora Linuxu.

Za početak instalirao sam Wine.

sudo dnf install wine winetricks

Wine omogućuje pokretanje .exe programa na Linuxu, no Quansheng Dock zahtjeva i .NET 6 pa sam i njega instalirao:

winetricks dotnetdesktop6

Imam starije računalo tako da sam bio nagrađen s još jednom komandom koju sam morao pokrenuti da bi se program pravilno renderirao. Ako imate nešto novije računalo nego ja (Pentium G2010) možete probati preskočiti sljedeću komandu:

winetricks -q ddr=gdi

Sada još samo moram proslijediti serijski port iz Linuxa u Wine:

ln -s /dev/ttyUSB0 ~/.wine/dotdevices/com2

Konačno došlo je vrijeme da pokrenem program:

env -u DOTNET_ROOT -u DOTNET_ROOT_X64 WINE_NO_XVIDMODE=1 wine QuanshengDock.exe

Time sam uspješno pokrenu Quansheng Dock na Linux računalu, bez obzira što program postoji samo za Windowse.

XRDP - RDP server

Udaljeno upravljanje vršit ću pomoću RDP protokola. Jedan od RDP servera za Linux je XRDP.

sudo dnf install xrdp xorgxrdp-glamor

U nastavku su izmjene koje sam napravio u konfiguraciji XRDP-a da omogućim hrvatsku tipkovnicu. Prvo sam u datoteku /etc/xrdp/xrdp_keyborard.ini dodao sljedeće:

...
rdp_layout_hr=0x0000041A

[default_layouts_map]
...
rdp_layout_hr=hr

[rdp_layouts_map_mac]
...
rdp_layout_hr=hr

U direktorij /etc/xrdp stavio sam km-0000041a.ini datoteku.

Nakon toga napravio sam datoteku /etc/xrdp/startwm.sh i odkomentirao XFCE. Ako koristite drugi desktop environment odkomentirajte njega:

#!/bin/sh

/usr/bin/alsactl init
# Set ALSA Mixer configuration
# Inputs
/usr/bin/amixer -c 0 sset 'Input Source' 'Line'
/usr/bin/amixer -c 0 sset 'Capture' 35% # 0dB
# Outputs
/usr/bin/amixer -c 0 sset 'Master' 100% unmute
/usr/bin/amixer -c 0 sset 'PCM' 100%
/usr/bin/amixer -c 0 sset 'Line' 74% unmute # 0dB
/usr/bin/amixer -c 0 sset 'Line Boost' 0%
# Connect Audio I/O
(sleep 5; /usr/bin/pw-link alsa-internal-capture xrdp-sink)&
(sleep 5; /usr/bin/pw-link xrdp-source alsa-internal-pcm)&

# DO NOT USE dbus-launch, it messes with the keyboar layout
# GNOME
# /usr/bin/gnome-session
# GNOME Classic
# env GNOME_SHELL_SESSION_MODE=classic /usr/bin/gnome-session
# KDE
# /usr/bin/startplasma-wayland
# Cinnamon
# /usr/bin/cinnamon-session
# MATE
# /usr/bin/mate-session
# Xfce
/usr/bin/startxfce4
# LXDE
# /usr/bin/startlxde
# LXQt
# /usr/bin/startlxqt
# Budgie
# env GNOME_SHELL_SESSION_MODE=Budgie:GNOME /usr/bin/budgie-desktop
# Sugar
# /usr/bin/sugar

Istu sam datoteku učinio pokretljivom:

sudo chmod +x /etc/xrdp/startwm.sh

Napomena: slobodno uklonite prvi blok komandi vezanih za zvučnu karticu ako ih smatrate nepotrebnim meni su potrebne da zvučni ulaz/izlaz XRDP-a s izlazom i ulazom zvučne kartice.

Kako bi se ova skripta izvršila na početku svake sesije uredio sam /etc/xrdp/sesman.ini da na vrhu datoteke bude sljedeće:

;; See `man 5 sesman.ini` for details

[Globals]
; listening port
#ListenPort=sesman.socket
EnableUserWindowManager=false
; Give in relative path to user's home directory
UserWindowManager=startwm.sh
; Give in full path or relative path to /etc/xrdp
DefaultWindowManager=/etc/xrdp/startwm.sh
; Give in full path or relative path to /etc/xrdp
ReconnectScript=reconnectwm.sh

Na kraju bilo je potrebno odkomentirati [Xorg] blok u /etc/xrdp/xrdp.ini te koristiti Xorg opciju pri spajanju, a ne Xvnc:

; Some session types such as Xorg and Xvnc start a display server.
; Startup command-line parameters for the display server are configured
; in sesman.ini. See and configure also sesman.ini.
[Xorg]
name=Xorg
lib=libxup.so
username=ask
password=ask
port=-1
code=20
; Frame capture interval (milliseconds)
#h264_frame_interval=16
#rfx_frame_interval=32
#normal_frame_interval=40

To je to sada mi je preostalo samo ponovno pokrenuti XRDP i učiniti da se pokreće pri pokretanju računala.

sudo systemctl restart xrdp
sudo systemctl enable xrdp

Programiranje kanala

Quansheng Dock ne podržava CHIRP što otežava programiranje kanala u stanicu s novim firmwareom. Moguće je uprogramirati samo .chan datoteke koje pak nije moguće dobiti iz CHIRP-a. Da ručno ne prepisujem 200 kanala potrošio sam puno previše vremena i napravio konverter koji pretvara CHIRP-ov csv u .chan.

Zaključak

Volim cijediti uređaje do maksimuma tako da mi je jako drago da sam uspio iskoristiti računalo koje sam besplatno dobio iz jednog ureda. Rekli su mi da je staro i ne može više ništa otvoriti. Ipak, sada radi kao server za moje radio stanice. Software je definitivno bio najteži dio ovog projekta.