Nadgradnja AIOC na firmware verzijo 1.3 RC1
(naprednejše nastavitve, če imate težave z VOX sprejemom in prekinjanjem pri pošiljanju v FRN omrežje)
🔧 Koraki za nadgradnjo AIOC modula na v 1.3 RC1*
Potrebujete (to ali podobno):
- RPi 3
- prosto SD kartico
- žičko
- in seveda AIOC :)
1.) Poženemo Raspberry Pi Imager
https://www.raspberrypi.com/software/
2.) Izberemo “Raspberry Pi OS (Legacy, 32-bit)” ali “Raspberry Pi OS (other) → Raspberry Pi OS (Legacy, 32-bit) Lite
Izberemo Bullseye različico. Morda bi delovala tudi novejša različica, nisem preveril.
3.) Predeno zapišemo na kartico, izberemo “EDIT SETTINGS”
in nastavimo hostname, nastavimo uporabniško ime in geslo. Omogočimo SSH (zavihek Services), nastavimo wifi, če ga bomo uporabljali.
4.) Zapišemo na SD kartico in jo vstavimo v RPi3
Priklopimo RPi3. Zgodi se generiranje SSH ključev in 2-3x reboot, konec je šele, ko pokaže IP in čaka na vpis gesla.
P.S.: wifi (wireless) je na začetku izklopljen, če ga ne potrebujemo niti ne bomo nastavili WLAN Country v raspi-config
5.) Namestitev potrebnih orodij pred nadgradnjo AIOC adapterja
sudo su -
Sama namestitev potrebnih orodij:
wget www.g1lro.uk/runmeonce.sh
chmod +x runmeonce.sh
./runmeonce.sh
Povežeš skrajna kontakta ob USB-C konektorju z žičko, da gre naprava v DFU način in priklopiš USB kabel
#PREBEREM trenutno naložen firmware:
dfu-util -a 0 -s 0x08000000 -U aioc-fw-pred-nadgradnjo.bin
#Zapišem firmware verzije 1.3
dfu-util -a 0 -s 0x08000000 -D aioc-fw-1.3.0-rc.1.bin
#Nastavimo, da postane naprava CM108:
python aioc.py
Preverimo:
lsusb
#Bus 001 Device 008: ID 1209:7388 Generic All-In-One-Cable
#...
USB kable na AIOC izklopimo in ponovno vklopimo in že imamo CM108 (C-Media Electronics)
lsusb
#Bus 001 Device 009: ID 0d8c:000c C-Media Electronics, Inc. Audio Adapter
#...
6.) 👁️ Ureditev pravic za dostop svxlinx uporabnika do /dev/hidraw0
Ob zagonu svxlink s pravicami svxlink uporabnika javi napako:
*** ERROR: Could not open event device /dev/hidraw0 specified in Rx1/HID_DEVICE: Permission denied
#nano ali vi
#vstavite ukaz, ki pove, da bo imel svxlink uporabnik prvice nad AIOC hid napravo, za točno ta VID in PID naprave (CM108):
vi /etc/udev/rules.d/99-hidraw.rules
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", MODE="0660", GROUP="plugdev"
#Ali če bi želeli dovolili uporabo samo točno določene naprave (ID 0d8c:000c)
#KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="0d8c", ATTRS{idProduct}=="000c", MODE="0660", GROUP="plugdev"
Uporabnika svxlink damo v plugdev skupino
sudo usermod -aG plugdev svxlink
Ukazi, da začne udev ustrezno delovati
sudo udevadm control --reload-rules
sudo udevadm trigger
Pereverimo pravice
ls -l /dev/hidraw0
#crw-rw---- 1 root plugdev 244, 0 Dec 15 00:24 /dev/hidraw0
Na koncu je potrebno popraviti svxlink.conf, da uporabimo /dev/hidraw0 napravo
#nano ali vi:
vi /etc/svxlink/svxlink.conf
Datoteka svxlink.conf (datoteko bo potrebno preimenovati, če boste uporabili točno to datoteko)
POZOR, to ni končna verzija .conf datoteke!
###############################################################################
# #
# Configuration file for the SvxLink server #
# #
###############################################################################
[GLOBAL]
#MODULE_PATH=/usr/lib/arm-linux-gnueabihf/svxlink
LOGICS=SimplexLogic
CFG_DIR=svxlink.d
TIMESTAMP_FORMAT="%c"
CARD_SAMPLE_RATE=48000
#mono:
CARD_CHANNELS=1
#LOCATION_INFO=LocationInfo
#LINKS=LinkToR4
[SimplexLogic]
TYPE=Simplex
RX=Rx1
TX=Tx1
#MODULES=ModuleHelp,ModuleParrot,ModuleFrn
MODULES=ModuleParrot,ModuleFrn
CALLSIGN=S5PMRKR0
SHORT_IDENT_INTERVAL=0
LONG_IDENT_INTERVAL=0
EVENT_HANDLER=/usr/share/svxlink/events.tcl
DEFAULT_LANG=en_US
#-1 da je RGR disabled:
RGR_SOUND_DELAY=-1
#REPORT_CTCSS=123.0
MACROS=Macros
FX_GAIN_NORMAL=0
FX_GAIN_LOW=-12
[Rx1]
TYPE=Local
AUDIO_DEV=alsa:plughw:2
AUDIO_CHANNEL=0
HID_DEVICE=/dev/hidraw0
HID_SQL_PIN=VOL_DN
SQL_DET=HIDRAW
SQL_HANGTIME=1500
DEEMPHASIS=0
#PEAK_METER=1
DTMF_DEC_TYPE=INTERNAL
DTMF_MUTING=1
DTMF_HANGTIME=40
DTMF_SERIAL=/dev/ttyS0
#PREAMP=3
PREAMP=2
#SQL_TAIL_ELIM=100
[Tx1]
TYPE=Local
AUDIO_DEV=alsa:plughw:2
AUDIO_CHANNEL=0
#LIMITER_THRESH=-6
PTT_TYPE=SerialPin
PTT_PORT=/dev/ttyACM0
PTT_PIN=DTR!RTS
#PTT_TYPE=Hidraw
#HID_DEVICE=/dev/hidraw0
#HID_PTT_PIN=GPIO3
TIMEOUT=300
#PREEMPHASIS=1
PREEMPHASIS=0
DTMF_TONE_LENGTH=100
DTMF_TONE_SPACING=50
DTMF_DIGIT_PWR=-15
#MASTER_GAIN=9
Nadgradnja AIOC firmware na 1.3
Ker imate nameščena orodja za nadgradnjo (zgornja navodila) in že znate dati AIOC v DFU načinu, potem pa:
wget https://github.com/skuep/AIOC/releases/download/v1.3.0/aioc-fw-1.3.0.bin
dfu-util -a 0 -s 0x08000000 -D aioc-fw-1.3.0.bin
Datoteka aioc-1.3.0.py, da nastavimo VID in PID na CM108:
wget https://tomaz1.github.io/PMR-FRN-SvxLink/AIOC/aioc-1.3.0.py
python aioc-1.3.0.py
Če je/bo potreben spremeniti VID in PID iz CM108 na originalne vrednosti (1209:7388 Generic All-In-One-Cable), ali upgrade, moramo uporabiti trenutni VID in PID za povezavo. Ideja od tu.
Datoteka aioc-1.3.0-revert_defaultVIDPID.py, da nastavimo nazaj originalne vrednosti.
wget https://tomaz1.github.io/PMR-FRN-SvxLink/AIOC/aioc-1.3.0-revert_defaultVIDPID.py
python aioc-1.3.0-revert_defaultVIDPID.py
#Pričakovan odziv:
#Manufacturer: AIOC
#Product: All-In-One-Cable
#Serial No: 56a33314
#Magic: b'AIOC'
#Current PTT1 Source: PTTSource.SERIALDTRNRTS|CM108GPIO3
#Current PTT2 Source: PTTSource.CM108GPIO4
#Current CM108 Button 1 (VolUP) Source: CM108ButtonSource.IN2
#Current CM108 Button 2 (VolDN) Source: CM108ButtonSource.VCOS
#Current CM108 Button 3 (PlbMute) Source: CM108ButtonSource.NONE
#Current CM108 Button 4 (RecMute) Source: CM108ButtonSource.NONE
#Now USBID: 73881209
#Storing...
#USB vn in nazaj not in dobimo nazaj default VID in PID:
lsusb
# Bus 001 Device 005: ID 1209:7388 Generic All-In-One-Cable
Težave
- Takoj po Tx (oddajanju) se sproži za cca 500ms Rx. Pri VOX proženju je možno nastaviti razne delaye in ni težav, pri HIDRAW pa tega ni.
Spodaj je razložena (začasna) rešitev, a bolje kot nič je, da imam dve Rx sekciji in “Voter”:
POPRAVEK 27. 12. 24: ko sem nastavil v Rx1 na SQL_HANGTIME=1500, ni bilo več zgornjih težav in Voter ni bil potreben. Bom zaenkrat vseeno pustil v novodilih, če bi slučajno kdo to potreoval zaradi kakršnegakoli razloga.
[SimplexLogic]
TYPE=Simplex
RX=Voter
...
[Rx1]
...
#Pri tej rešitvi je Rx2 lahko povsem enak kot Rx1
[Rx2]
...
[Voter]
TYPE=Voter
RECEIVERS=Rx1,Rx2
VOTING_DELAY=600
BUFFER_LENGTH=0
HYSTERESIS=50