Wiedza (Persistence USB) Zachowanie linków do urządzeń USB

0.1+0.2!==0.3

Ave UBI!
Q's Professional
11 Czerwiec 2016
406
4
210
113
Wrocław
QNAP
TS-x73A
Ethernet
2.5 GbE
Przygotowanie stałych reguł dla udev (Dynamic device management), zaczynamy od podłączenia urządzeń USB po czym w konsoli systemowej "dmesg" odnajdujemy wpisy inicjalizacji nowych urządzeń.

Bash:
...
[367775.241192] usb 1-1.2: new full-speed USB device number 14 using xhci_hcd
[367775.439354] [usb.001.014] /sys/devices/pci0000:00/0000:00:08.1/0000:08:00.3/usb1/1-1/1-1.2 added.
[367778.243193] wireguard: wg0: Handshake for peer 2 ((einval)) did not complete after 5 seconds, retrying (try 3)
[367778.243207] wireguard: wg0: Sending handshake initiation to peer 2 ((einval))
[367779.581191] usb 1-1.3: new full-speed USB device number 15 using xhci_hcd
[367779.776955] [usb.001.015] /sys/devices/pci0000:00/0000:00:08.1/0000:08:00.3/usb1/1-1/1-1.3 added.
...

Wyciągamy potrzebne dane do reguł:
Bash:
udevadm info --name=/dev/bus/usb/{USB ID}/{DEVICE ID} --attribute-walk | grep -E "ATTR\{product\}|ATTR\{serial\}"

W moim przypadku będą to port usb numer 1 urządzenia 14 i 15
Bash:
udevadm info --name=/dev/bus/usb/001/014 --attribute-walk | grep -E "ATTR\{product\}|ATTR\{serial\}"
    ATTR{product}=="Sonoff Zigbee 3.0 USB Dongle Plus"
    ATTR{serial}=="0001"

udevadm info --name=/dev/bus/usb/001/015 --attribute-walk | grep -E "ATTR\{product\}|ATTR\{serial\}"
    ATTR{product}=="WiMOD iM871A-usb"
    ATTR{serial}=="0275940C"

Na tą chwilę możemy jeszcze zweryfikować czy aby na pewno to te urządzenia.
Bash:
 lsusb
Bus 001 Device 014: ID 10c4:ea60 Cygnal Integrated Products, Inc. CP210x Composite Device
Bus 001 Device 015: ID 10c4:ea60 Cygnal Integrated Products, Inc. CP210x Composite Device

W katalogu "/lib/udev/rules.d/" tworzymy plik "z21_persistent-local.rules" a w nim odpowiednio dwa wpisy:
Bash:
ATTR{product}=="Sonoff Zigbee 3.0 USB Dongle Plus",ATTR{serial}=="0001",SYMLINK+="zigbee"
ATTR{product}=="WiMOD iM871A-usb",ATTR{serial}=="0275940C",SYMLINK+="wimod"

Ostatni krok to przeładowanie reguł alternatywą jest restart NAS'a.
Bash:
udevadm control --reload-rules

Ponownie wyłaczamy właczamy urządzenia i weryfikujemy czy wszystko działa.
Bash:
ls -alh /dev/ | grep -E "zigbee|wimod"
lrwxrwxrwx  1 admin administrators       15 2023-11-08 00:49 wimod -> bus/usb/001/018
lrwxrwxrwx  1 admin administrators       15 2023-11-08 00:49 zigbee -> bus/usb/001/017

Testowe wypięcie wpięcie urzadzeń USB:
Bash:
ls -alh /dev/ | grep -E "zigbee|wimod"
lrwxrwxrwx  1 admin administrators       15 2023-11-08 01:10 wimod -> bus/usb/001/020
lrwxrwxrwx  1 admin administrators       15 2023-11-08 01:10 zigbee -> bus/usb/001/019

Przydatne przy montowaniu "na stałe" w dockerze w Home Assistant.

,MODE="0660", GROUP="docker"
* dostęp dla wszystkich alternatywa dla '--privileged' <- nie testowane jeszcze
 
Aby zobaczyć tę odpowiedź, musisz się zalogować lub zarejestrować.
 
Aby zobaczyć tę odpowiedź, musisz się zalogować lub zarejestrować.
 
Aby zobaczyć tę odpowiedź, musisz się zalogować lub zarejestrować.
 

Użytkownicy znaleźli tą stronę używając tych słów:

  1. *
  2. home assistant
  3. usb zigbee
  4. ZigBee
  5. sonoff dongle
  6. usb