Configurare nod bazat pe CM108: Diferență între versiuni

De la YO3ITI
Sari la navigare Sari la căutare
Linia 113: Linia 113:
Unde <code>my_custom_dev_entry</code> e setarea din <code>udev</code>.
Unde <code>my_custom_dev_entry</code> e setarea din <code>udev</code>.
Grijă la utilizarea majusculelor pentru <code>SQL_DET</code> și <code>PTT_TYPE</code>
Grijă la utilizarea majusculelor pentru <code>SQL_DET</code> și <code>PTT_TYPE</code>
=Link-uri externe=
* [http://kb.amft-it.de/doku.php?id=kb-afu:shari-hs SOLUȚIA !!!] - Shari cu svxlink
* [https://opensource.com/article/18/11/udev An introduction to Udev]
* [https://www.reddit.com/r/archlinux/comments/ega9ix/udev_rule_for_hid_usb_device/ udev rule for hid usb device]
* [https://groups.io/g/SHARI/topic/svxlink_on_a_shari_node/100717081 SvxLink on a SHARI Node] → important !!
* [https://groups.io/g/svxlink/attachment/275/0/Hidraw_Serial%20Permissions%20Scripts.pdf Hidraw/Serial Permissions Scripts]
* [https://unix.stackexchange.com/questions/85379/dev-hidraw-read-permissions /dev/hidraw: read permissions]
* [https://www.google.com/search?client=safari&rls=en&q=raspberry+display+kernel+module+for+a+certain+audio+device&ie=UTF-8&oe=UTF-8 raspberry display kernel module for a certain audio device]
<syntaxhighlight lang="console">
sudo udevadm control --reload-rules && sudo udevadm trigger
</syntaxhighlight>

Versiunea de la data 1 august 2025 23:39

Introducere

Pentru secțiunea principală legată de instalarea și configurarea svxlink, vezi acest link.

Verificări hardware

Verificare recunoaștere chip CM108

După conectarea fizică (prin lipire) a pinilor D+ și D- în paralel cu port-ul USB 2.0 al plăcii-mamă, trebuie verificat că sistemul recunoaște chip-ul CM108 ca subsistem audio.

Se rulează comanda lsusb:

tom@raspberrypi:~ $ lsusb

În răspunsul sistemului trebuie să se regăsească C-Media Electronics, Inc. USB Audio Device:

tom@raspberrypi:~ $ lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 003: ID 0d8c:0012 C-Media Electronics, Inc. USB Audio Device
Bus 001 Device 002: ID 2109:3431 VIA Labs, Inc. Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Ia aminte la VID și PID (vendor ID și Product ID 0d8c:0012. Aceste informații trebuie folosite la crearea regulilor din udev.

Verificarea se mai poate face și cu comanda cat:

tom@raspberrypi:~ $ cat /proc/asound/cards
 0 [Device         ]: USB-Audio - USB Audio Device
                      C-Media Electronics Inc. USB Audio Device at usb-0000:01:00.0-1.3, full speed

Verificare stack HID (Human Interface Device)

Setarea regulilor în udev

udev este un subsistem Linux pentru gestionarea evenimentelor-dispozitiv. Pentru utilizarea nodurilor bazate pe CM108 prin intermediul HIDRAW, este necesarea crearea unor reguli de gestionare a evenimentelor legate de acest dispozitiv.

Creare fișier reguli

Pentru nodurile realizate cu CM108 trebuie creat un fișier de reguli în udev pentru a încărca modului CM108 ca dispozitiv audio hidraw

# block pulseaudio using the soundcard for SVXLINK
# astea sunt foarte importante
ATTRS{idVendor}=="0d8c", ATTRS{idProduct}=="013c", ENV{PULSE_IGNORE}="1"
ATTRS{idVendor}=="0d8c", ATTRS{idProduct}=="000c", ENV{PULSE_IGNORE}="1"
ATTRS{idVendor}=="0d8c", ATTRS{idProduct}=="0012", ENV{PULSE_IGNORE}="1"
# create a symlink /dev/hidrawX to /dev/cm108gpio
SUBSYSTEM=="hidraw", ATTRS{idVendor}=="0d8c", ATTRS{idProduct}=="013c", SYMLINK+="my_custom_dev_entry", MODE="0666"
# 0d8c:000c
SUBSYSTEM=="hidraw", ATTRS{idVendor}=="0d8c", ATTRS{idProduct}=="000c", SYMLINK+="my_custom_dev_entry", MODE="0666"
# 0d8c:0012 CM108B
SUBSYSTEM=="hidraw", ATTRS{idVendor}=="0d8c", ATTRS{idProduct}=="0012", SYMLINK+="my_custom_dev_entry", MODE="0666"

Secvența ATTRS{idVendor}=="0d8c", ATTRS{idProduct}=="0012" trebuie să corespundă cu informația dată de lsusb. Eu folosesc doar liniile evidențiate.

În cazul meu, creez un fișier în /etc/udev/rules.d. L-am numit 55-cm108.rules. Numărul de la începutul denumirii asigură prioritatea. Acest fișier conține:

# block pulseaudio using the soundcard for SVXLINK
# astea sunt foarte importante
ATTRS{idVendor}=="0d8c", ATTRS{idProduct}=="0012", ENV{PULSE_IGNORE}="1"
# creez un symlink /dev/hidrawX la /dev/yo3iti
# 0d8c:0012 CM108B
SUBSYSTEM=="hidraw", ATTRS{idVendor}=="0d8c", ATTRS{idProduct}=="0012", SYMLINK+="yo3iti", MODE="0666"

Actualizarea udev se face cu comanda:

tom@raspberrypi:~ $ sudo udevadm control --reload-rules && sudo udevadm trigger

Setări svxlink.conf

Nodul poate fi configurat doar pentru conectare la Echolink. Trebuie eliminată intrarea ReflectorLogic din secțiunea [GLOBAL] a fișierului de configurare:

[GLOBAL]
...
LOGICS=SimplexLogic
#,ReflectorLogic
...
TIMESTAMP_FORMAT="%Y-%m-%d %H:%M:%S"
CARD_SAMPLE_RATE=48000
CARD_CHANNELS=1
#LINKS=ReflectorLink
LOCATION_INFO=LocationInfo

Configurarea Tx și Rx

Apoi se modifică secțiunile Rx și Tx cu setările necesare pentru hidraw:

[Rx1]
...
SQL_DET=HIDRAW
HID_DEVICE=/dev/yo3iti
HID_SQL_PIN=VOL_DN
...
[Tx1]
...
PTT_TYPE=Hidraw
HID_DEVICE=/dev/yo3iti
HID_PTT_PIN=GPIO3
...

Unde my_custom_dev_entry e setarea din udev. Grijă la utilizarea majusculelor pentru SQL_DET și PTT_TYPE

Link-uri externe

sudo udevadm control --reload-rules && sudo udevadm trigger