155 lines
4.1 KiB
Markdown
155 lines
4.1 KiB
Markdown
# Fix Permissions udev - ASUS Keyboard RGB
|
|
|
|
## Problème Initial
|
|
|
|
La règle udev simple ne fonctionnait pas :
|
|
```bash
|
|
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
|
|
|
|
```bash
|
|
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
|
|
|
|
```bash
|
|
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" :
|
|
|
|
```bash
|
|
# 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
|
|
|
|
```bash
|
|
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
|
|
|
|
```bash
|
|
# 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 :
|
|
|
|
```bash
|
|
# 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](INSTALL.md)) et dans le script d'installation ([tools/install-local.sh](../tools/install-local.sh)).
|