He actualizado mi HTPC del kernel 3.7.10 a 3.10.7 y parece que CONFIG_USB_SUSPEND ahora ha desaparecido de las opciones del kernel e incluido en PM.
El principal problema al que me enfrento es que tengo un HDD externo y cuando suspendo y activa el HTPC, no está disponible para el sistema. El HDD se activa (puede escucharlo girar de nuevo), pero cuando intenta acceder al punto de montaje, obtiene el siguiente error:
ZOTAC ~ # ls /media
ls: reading directory /media: Input/output error
Y en dmesg:
[ 253.278260] EXT4-fs warning (device sdb1): __ext4_read_dirblock:908: error reading directory block (ino 2, block 0)
En núcleos anteriores, establecer CONFIG_USB_SUSPEND = N resolvería el problema, ya que el HDD manejaría su hibernación por sí mismo y el punto de montaje siempre era accesible. Cuando el HDD estaba en reposo y el HTPC necesitaba algo del punto de montaje del HDD, el HDD se despertaba y funcionaba sin problemas.
En este momento he intentado lo siguiente sin éxito:
- Cambie manualmente / sys / bus / usb / devices / usb * / power / control a "on" en lugar de "auto" .
- Cambie manualmente / sys / bus / usb / devices / usb * / power / autosuspend a "-1" en lugar de "0" .
Pero al volver a activar el HTPC, el punto de montaje vuelve a ser inaccesible. Como alternativa, puedo desmontar y volver a montar el punto de montaje y funciona de nuevo sin problemas, pero estoy seguro de que debería haber una manera de evitar que el sistema operativo maneje la suspensión automática del usb.
¿Alguna idea de cómo deshabilitar la suspensión automática de USB en el núcleo 3.7.10 o superior?
fuente
/sys/bus/usb/devices/<BUS>-<DEVPATH>/power/persist
te da1
? Nogrep CONFIG_PM_RUNTIME /boot/config-$(uname -r)
le daráy
? power-management.txtpower/persist
da1
y no tengo ningún archivo de configuración/boot
.CONFIG_PM_RUNTIME=y
está configurado en el.config
archivo del kernel .Respuestas:
Para Ubuntu y Debian ,
usbcore
está compilado en el núcleo, por lo que crear entradas en la/etc/modprobe.d
voluntad NO trabajo: necesitamos cambiar los parámetros de arranque del núcleo.Edite el
/etc/default/grub
archivo y cambie laGRUB_CMDLINE_LINUX_DEFAULT
línea para agregar lausbcore.autosuspend=-1
opción:Tenga en cuenta que
quit splash
ya estaban presentes las opciones. Así que mantenga otras opciones que tenga también.Después de guardar el archivo, actualice grub:
Y reiniciar .
Ahora verifique el
autosuspend
valor:Y debería mostrarse
-1
.En la documentación del kernel se indica que algún día en el futuro este parámetro cambiará a
autosuspend_delay_ms
(en lugar deautosuspend
).fuente
autosuspend_delay_ms
.De acuerdo con la documentación del árbol de kernel , el tiempo de retraso de inactividad del autosuspend se controla mediante el
autosuspend
parámetro del módulo enusbcore
. Establecer el retraso de inactividad predeterminado inicial en -1 evitará la suspensión automática de cualquier dispositivo USB. Aún debería poder habilitar la suspensión automática para los dispositivos seleccionados.El
usbcore.autosuspend
parámetro del núcleo se puede configurar cuando el módulo se carga manualmente:o agregando la siguiente línea a un archivo de configuración en
/etc/modprobe.d
:Si
usbcore
se compila en el núcleo, el parámetro se puede ajustar agregando lo siguiente a la línea de comando del núcleo:Por último, la opción se puede ajustar en tiempo de ejecución haciendo:
El cambio afectará a todos los dispositivos USB nuevos. Los dispositivos ya existentes no se verán afectados.
fuente
usbcore
compilado en el kernel, pero el uso de lamodprobe.d
opción no parece funcionar. A pesar de que lomodprobe -c usbcore | grep autosuspend
muestra como-1
,cat /sys/module/usbcore/parameters/autosuspend
obteniendo2
autosuspend
está en desuso. El nuevo archivo es elautosuspend_delay_ms
que lleva ms en lugar de segundos. ref . Peropower/control
establecer aon
debería tener el mismo efecto.autosuspend=-1
ambos parámetrosmodprobe.d
ykernel
, pero el HDD aún se suspende y no se despierta bien.autosuspend_delay_ms
a-1
? (In/sys/bus/usb/devices/<device>/power/autosuspend_delay_ms
)autosuspend_delay_ms
no está allí. Peroautosuspend
es.Tengo un problema similar con un USB Microsoft Wheel Mouse Optical USB y PS / 2 compatible desde que actualicé un sistema Linux Mint Debian Edition a kernel
3.10-2-amd64
. Se sospechaba una suspensión automática inadecuada por parte de la administración de energía USB del núcleo . En Debian, esto se compila como elusbcore
módulo en el núcleo.Puede cambiar esto permanentemente emitiendo en la línea de comando:
Sin
autosuspend=0
embargo, algunos núcleos pueden requerir .Si su sistema usa
initrd
(lo más probable es que lo haga), reconstruya elinitrd
para su núcleo.Por ejemplo:
Reiniciar y verificar con:
que debería rendir
-1
ahora.fuente
initrd
y las acciones descritas aquí no funcionan en este caso, ya que nos respondieron antes.