v1
This commit is contained in:
154
docs/FIX_UDEV_PERMISSIONS.md
Normal file
154
docs/FIX_UDEV_PERMISSIONS.md
Normal file
@@ -0,0 +1,154 @@
|
||||
# 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)).
|
||||
Reference in New Issue
Block a user