J'ai mis à jour mon HTPC depuis le noyau .7.1 vers .10.7 et il semble CONFIG_USB_SUSPEND est maintenant parti des options du noyau et inclus dans PM.
Le principal problème auquel je suis confronté est que j'ai un disque dur externe et lorsque vous suspendez et réveillez le HTPC, il n'est pas disponible pour le système. Le disque dur se réveille (vous pouvez l'entendre tourner à nouveau), mais lorsque vous essayez d'accéder au point de montage, vous obtenez l'erreur suivante:
ZOTAC ~ # ls /media
ls: reading directory /media: Input/output error
Et sur dmesg:
[ 253.278260] EXT4-fs warning (device sdb1): __ext4_read_dirblock:908: error reading directory block (ino 2, block 0)
Dans les noyaux précédents, définir CONFIG_USB_SUSPEND = N résoudrait le problème, car le disque dur gérerait lui-même son hibernation et le point de montage était toujours accessible. Lorsque le disque dur était en veille et que le HTPC avait besoin de quelque chose du point de montage du disque dur, le disque dur lui-même se réveillait et fonctionnait sans problème.
En ce moment, j'ai essayé sans succès ce qui suit:
Mais lors du réveil du HTPC, le point de montage est à nouveau inaccessible. Pour contourner le problème, je peux démonter et remonter le point de montage et cela fonctionne à nouveau sans problème, mais je suis sûr qu'il devrait y avoir un moyen d'éviter que le système d'exploitation gère la suspension automatique USB.
Une idée comment désactiver la suspension automatique USB sur le noyau 3.7.10 ou supérieur?
Pour bunt et Debian, usbcore
est compilé dans le noyau, donc créez des entrées sur /etc/modprobe.d
va PAS fonctionner: nous devons changer les paramètres de démarrage du noyau.
Modifiez le /etc/default/grub
fichier et modifiez le GRUB_CMDLINE_LINUX_DEFAULT
ligne pour ajouter le usbcore.autosuspend=-1
option:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash usbcore.autosuspend=-1"
Notez que quit splash
étaient déjà des options présentes. Gardez donc les autres options dont vous disposez.
Après avoir enregistré le fichier, mettez à jour grub:
Sudo update-grub
Et redémarrage.
Maintenant, vérifiez la valeur de autosuspend
:
cat /sys/module/usbcore/parameters/autosuspend
Et il devrait afficher -1
.
Dans la documentation du noyau, il est indiqué qu'un jour à l'avenir, ce paramètre changera en autosuspend_delay_ms
(au lieu de autosuspend
).
Selon la documentation de l'arborescence du noya , le temps de retard d'inactivité de la suspension automatique est contrôlé par le paramètre du module autosuspend
dans usbcore
. La définition du délai d'inactivité par défaut initial à -1 empêchera la suspension automatique de tout périphérique USB. Vous devriez toujours être en mesure d'activer la suspension automatique pour les appareils sélectionnés.
Le usbcore.autosuspend
Le paramètre du noyau peut être défini lorsque le module est chargé manuellement:
$ modprobe usbcore autosuspend=-1
ou en ajoutant la ligne suivante à un fichier de configuration dans /etc/modprobe.d
:
options usbcore autosuspend=-1
Si usbcore
est compilé dans le noyau, le paramètre peut être ajusté en ajoutant ce qui suit à la ligne de commande du noyau:
usbcore.autosuspend=-1
Enfin, l'option peut être ajustée au moment de l'exécution en faisant:
echo -1 >/sys/module/usbcore/parameters/autosuspend
Le changement affectera tous les nouveaux périphériques USB. Les appareils déjà existants ne seront pas affectés.
J'ai un problème similaire avec un Microsoft Wheel Mouse Optical USB et PS/2 Compatible depuis la mise à niveau d'un système Linux Mint Debian Edition au noyau 3.10-2-AMD64
. Une suspension automatique inappropriée de la part du noyau gestion de l'alimentation USB a été suspectée. Dans Debian, ceci est compilé en tant que module usbcore
dans le noyau.
Vous pouvez changer cela de façon permanente en émettant sur la ligne de commande:
Sudo echo "options usbcore autosuspend=-1" | Sudo tee /etc/modprobe.d/disable-usb-autosuspend.conf > /dev/null
Certains noyaux peuvent nécessiter autosuspend=0
, bien que.
Si votre système utilise initrd
(très probablement), alors reconstruisez le initrd
pour votre noyau.
Par exemple:
uname -r
Sudo dpkg-reconfigure linux-image-3.10-2-AMD64
Redémarrez et vérifiez avec:
cat /sys/module/usbcore/parameters/autosuspend
qui devrait donner -1
maintenant.