Files
gnome-asus-kbd-rgb/docs/FIX_UDEV_PERMISSIONS.md
2025-12-21 06:55:49 +01:00

4.1 KiB

Fix Permissions udev - ASUS Keyboard RGB

Problème Initial

La règle udev simple ne fonctionnait pas :

SUBSYSTEM=="leds", KERNEL=="asus::kbd_backlight", GROUP="kbdled", MODE="0660"

Symptôme : Les permissions restaient à root:root même après rechargement udev et redémarrage.

Diagnostic

udevadm test /sys/class/leds/asus::kbd_backlight 2>&1 | grep -E "(GROUP|MODE|kbdled)"

Résultat vide → La règle n'était pas déclenchée.

Solution Fonctionnelle

Règle udev Corrigée

sudo tee /etc/udev/rules.d/99-asus-kbd.rules > /dev/null << 'EOF'
ACTION=="add", SUBSYSTEM=="leds", KERNEL=="asus::kbd_backlight", TAG+="uaccess", RUN+="/bin/sh -c 'chgrp kbdled /sys/class/leds/asus::kbd_backlight/brightness && chmod g+w /sys/class/leds/asus::kbd_backlight/brightness'"
ACTION=="add", SUBSYSTEM=="leds", KERNEL=="asus::kbd_backlight", TAG+="uaccess", RUN+="/bin/sh -c 'chgrp kbdled /sys/class/leds/asus::kbd_backlight/kbd_rgb_mode && chmod g+w /sys/class/leds/asus::kbd_backlight/kbd_rgb_mode'"
EOF

Pourquoi Ça Fonctionne

  1. ACTION=="add" : La règle se déclenche uniquement lors de l'événement "add" (ajout du device)
  2. TAG+="uaccess" : Ajoute un tag pour l'accès utilisateur
  3. RUN+= : Exécute une commande shell directement
  4. /bin/sh -c '...' : Lance un shell pour exécuter plusieurs commandes
  5. chgrp kbdled : Change le groupe du fichier
  6. chmod g+w : Ajoute les permissions d'écriture pour le groupe

Application de la Règle

Après avoir créé la règle, il faut déclencher l'événement "add" :

# Recharger les règles udev
sudo udevadm control --reload-rules

# Retirer le module kernel
sudo modprobe -r asus_nb_wmi

# Réinsérer le module (déclenche l'événement "add")
sudo modprobe asus_nb_wmi

# Attendre que le module se charge
sleep 2

Vérification

ls -l /sys/class/leds/asus::kbd_backlight/brightness
ls -l /sys/class/leds/asus::kbd_backlight/kbd_rgb_mode

Résultat attendu :

-rw-rw-r-- 1 root kbdled 4096 ... brightness
--w--w---- 1 root kbdled 4096 ... kbd_rgb_mode

Test Fonctionnel

# Test brightness
echo 3 > /sys/class/leds/asus::kbd_backlight/brightness

# Test RGB (orange)
echo "1 0 255 165 0 0" > /sys/class/leds/asus::kbd_backlight/kbd_rgb_mode

Aucune erreur "Permission denied" ne doit apparaître.

Matériel Testé

  • Modèle : ASUS TUF Gaming A16 FA608UH
  • OS : Debian GNU/Linux 13 (trixie)
  • Kernel : 6.12.x
  • Module : asus_nb_wmi

Fichiers Concernés

sysfs

/sys/class/leds/asus::kbd_backlight/
├── brightness          (contrôle intensité 0-3)
└── kbd_rgb_mode        (contrôle RGB, format "1 0 R G B 0")

udev

/etc/udev/rules.d/99-asus-kbd.rules

Groupe système

/etc/group (ligne kbdled)

Alternative : Service systemd

Si la règle udev ne fonctionne toujours pas (rare), on peut utiliser un service systemd :

# Script
sudo tee /usr/local/bin/asus-kbd-permissions.sh > /dev/null << 'EOF'
#!/bin/bash
sleep 2
chgrp kbdled /sys/class/leds/asus::kbd_backlight/brightness 2>/dev/null
chmod 0660 /sys/class/leds/asus::kbd_backlight/brightness 2>/dev/null
chgrp kbdled /sys/class/leds/asus::kbd_backlight/kbd_rgb_mode 2>/dev/null
chmod 0660 /sys/class/leds/asus::kbd_backlight/kbd_rgb_mode 2>/dev/null
EOF

sudo chmod +x /usr/local/bin/asus-kbd-permissions.sh

# Service
sudo tee /etc/systemd/system/asus-kbd-permissions.service > /dev/null << 'EOF'
[Unit]
Description=ASUS Keyboard RGB Permissions
After=multi-user.target

[Service]
Type=oneshot
ExecStart=/usr/local/bin/asus-kbd-permissions.sh
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target
EOF

sudo systemctl daemon-reload
sudo systemctl enable asus-kbd-permissions.service
sudo systemctl start asus-kbd-permissions.service

Références

  • udev manual : man 7 udev
  • Module kernel : Documentation du driver asus-nb-wmi
  • Tests réalisés : 2025-12-20

Note : Ce fix est intégré dans la documentation officielle (docs/INSTALL.md) et dans le script d'installation (tools/install-local.sh).