Files
ambilight-plasmoid/setup-udev.sh
T
enne2 db47640846 Nome stabile della seriale via udev e note sull'indicatore di cattura
- udev/99-ambilight.rules: symlink /dev/ambilight ancorato alla porta USB fisica
  (il CH340 clone non ha iSerial, quindi by-id non e' univoco), ID_MM_DEVICE_IGNORE,
  TAG+=uaccess
- setup-udev.sh: rileva VID/PID/porta, installa la regola, verifica il symlink
- backend: fallback di porta (config -> /dev/ambilight -> /dev/ttyUSB0) e campo 'dev'
  nello stato D-Bus
- README: tabella dei percorsi, prove sull'indicatore di condivisione schermo e le
  tre alternative (portal, KWin ScreenShot2, kmsgrab)
2026-11-01 13:16:08 +01:00

62 lines
2.2 KiB
Bash
Executable File

#!/usr/bin/env bash
# Installa la regola udev che da' un nome stabile alla scheda Adalight (/dev/ambilight).
# Richiede sudo. Verifica il percorso USB della scheda e lo sostituisce se necessario.
set -euo pipefail
HERE="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
RULE="$HERE/udev/99-ambilight.rules"
DEST="/etc/udev/rules.d/99-ambilight.rules"
DEV="${1:-/dev/ttyUSB0}"
say() { printf '\033[1;32m==>\033[0m %s\n' "$*"; }
die() { printf '\033[1;31m[x]\033[0m %s\n' "$*" >&2; exit 1; }
# --- identifica la scheda e il suo percorso USB
[ -e "$DEV" ] || die "dispositivo $DEV assente"
VID=$(udevadm info -q property -n "$DEV" | sed -n 's/^ID_VENDOR_ID=//p')
PID=$(udevadm info -q property -n "$DEV" | sed -n 's/^ID_MODEL_ID=//p')
KER=$(udevadm info -q property -n "$DEV" | sed -n 's|^DEVPATH=.*usb[0-9]*/\([0-9-]*\)/.*|\1|p')
SER=$(cat "/sys/bus/usb/devices/$KER/serial" 2>/dev/null || true)
say "scheda su $DEV: USB $VID:$PID, porta fisica «$KER», iSerial='$SER'"
[ -n "$KER" ] || die "non riesco a ricavare il percorso USB (KERNELS)"
if [ "$VID:$PID" != "1a86:7523" ]; then
printf '\033[1;33m[!]\033[0m ATTENZIONE: non e'"'"' un CH340 (1a86:7523). Adatto la regola comunque.\n'
fi
# --- prepara la regola con la porta reale
TMP=$(mktemp)
sed -e "s|KERNELS==\"1-2\"|KERNELS==\"$KER\"|" \
-e "s|ATTRS{idVendor}==\"1a86\"|ATTRS{idVendor}==\"$VID\"|" \
-e "s|ATTRS{idProduct}==\"7523\"|ATTRS{idProduct}==\"$PID\"|" \
"$RULE" > "$TMP"
say "regola da installare:"
sed 's/^/ /' "$TMP"
# --- installa e ricarica
sudo install -m 644 -o root -g root "$TMP" "$DEST"
rm -f "$TMP"
sudo udevadm control --reload-rules
sudo udevadm trigger --subsystem-match=tty
sleep 1
# --- verifica
if [ -L /dev/ambilight ]; then
say "OK: /dev/ambilight -> $(readlink -f /dev/ambilight)"
else
die "/dev/ambilight non creato: controlla «udevadm test /sys/class/tty/$(basename "$DEV")»"
fi
cat <<EOF
Ora rendi persistente il percorso nel demone:
ambilight-ctl set port /dev/ambilight
systemctl --user restart ambilight.service
ambilight-ctl state
Nota: se cambi porta USB alla scheda, il nome resta legato alla porta fisica:
aggiorna KERNELS nella regola oppure usa come alternativa il percorso
/dev/serial/by-path/... (vedi README).
EOF