Sin usb 3 Arch linux 3.15.1

Sin usb 3 Arch linux 3.15.1

Hasta mi último reinicio, podía usar mi puerto USB 3. Acabo de instalar el sistema no hace mucho, así que hasta entonces había estado configurando e instalando controladores, pero esa era la sesión en la que realmente había estado trabajando. Instalé el controlador xf86-input-synaptics, pero Simplemente lo quité y reinicié de nuevo para ver si eso estaba estropeándolo, ya que no volvió, no lo hizo. Ahora estoy estancado. He visto en muchos foros que la gente tiene problemas con él, pero el puerto generalmente aparece en lsusb, dmesg o lspci.

lsusb:

Bus 002 Device 005: ID 047b:0011 Silitek Corp. SK-1688U Keyboard
Bus 002 Device 004: ID 045e:0040 Microsoft Corp. Wheel Mouse Optical
Bus 002 Device 003: ID 05e3:0608 Genesys Logic, Inc. USB-2.0 4-Port HUB
Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 004: ID 0bda:0139 Realtek Semiconductor Corp. RTS5139 Card Reader Controller
Bus 001 Device 003: ID 13d3:5134 IMC Networks 
Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

lspci | grep -i usb

00:1a.0 USB controller: Intel Corporation 6 Series/C200 Series Chipset Family USB Enhanced Host Controller #2 (rev 05)
00:1d.0 USB controller: Intel Corporation 6 Series/C200 Series Chipset Family USB Enhanced Host Controller #1 (rev 05)

dmesg | grep -i usb

[    1.278138] ACPI: bus type USB registered
[    1.278159] usbcore: registered new interface driver usbfs
[    1.278167] usbcore: registered new interface driver hub
[    1.278268] usbcore: registered new device driver usb
[    1.278630] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[    1.278904] ehci-pci 0000:00:1a.0: new USB bus registered, assigned bus number 1
[    1.291224] ehci-pci 0000:00:1a.0: USB 2.0 started, EHCI 1.00
[    1.291408] hub 1-0:1.0: USB hub found
[    1.291716] ehci-pci 0000:00:1d.0: new USB bus registered, assigned bus number 2
[    1.304530] ehci-pci 0000:00:1d.0: USB 2.0 started, EHCI 1.00
[    1.304982] hub 2-0:1.0: USB hub found
[    1.597732] usb 1-1: new high-speed USB device number 2 using ehci-pci
[    1.721971] hub 1-1:1.0: USB hub found
[    1.830738] usb 2-1: new high-speed USB device number 2 using ehci-pci
[    1.955115] hub 2-1:1.0: USB hub found
[    2.037276] usb 1-1.2: new high-speed USB device number 3 using ehci-pci
[    2.240377] usb 1-1.4: new high-speed USB device number 4 using ehci-pci
[    2.390210] usb 2-1.2: new high-speed USB device number 3 using ehci-pci
[    2.476044] hub 2-1.2:1.0: USB hub found
[    2.743395] usb 2-1.2.3: new low-speed USB device number 4 using ehci-pci
[    2.899768] usb 2-1.2.4: new low-speed USB device number 5 using ehci-pci
[    6.531535] scsi6 : SCSI emulation for RTS5139 USB card reader
[    6.531790] usbcore: registered new interface driver rts5139
[    6.632207] uvcvideo: Found UVC 1.00 device USB2.0 UVC 1M WebCam (13d3:5134)
[    6.636268] input: USB2.0 UVC 1M WebCam as /devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.2/1-1.2:1.0/input/input15
[    6.636452] usbcore: registered new interface driver uvcvideo
[    6.636456] USB Video Class driver (1.1.1)
[    7.114946] usbcore: registered new interface driver usbhid
[    7.114954] usbhid: USB HID core driver
[    7.125179] input: Microsoft Microsoft 3-Button Mouse with IntelliEye(TM) as /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.2/2-1.2.3/2-1.2.3:1.0/0003:045E:0040.0001/input/input18
[    7.125756    ] hid-generic 0003:045E:0040.0001: input,hidraw0: USB HID v1.10 Mouse [Microsoft Microsoft 3-Button Mouse with IntelliEye(TM)] on usb-0000:00:1d.0-1.2.3/input0
[    7.126179] input: Silitek Standard USB Keyboard  as /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.2/2-1.2.4/2-1.2.4:1.0/0003:047B:0011.0002/input/input19
[    7.126612] hid-generic 0003:047B:0011.0002: input,hidraw1: USB HID v1.00 Keyboard [Silitek Standard USB Keyboard ] on usb-0000:00:1d.0-1.2.4/input0

autobús de clase corta lshw

H/W path           Device  Class          Description
=====================================================
/0                         bus            G74Sx
/0/100/1a                  bus            6 Series/C200 Series Chipset Family USB Enhanced Host Controller #2
/0/100/1a/1        usb1    bus            EHCI Host Controller
/0/100/1a/1/1              bus            Integrated Rate Matching Hub
/0/100/1d                  bus            6 Series/C200 Series Chipset Family USB Enhanced Host Controller #1
/0/100/1d/1        usb2    bus            EHCI Host Controller
/0/100/1d/1/1              bus            Integrated Rate Matching Hub
/0/100/1d/1/1/2            bus            USB2.0 Hub
/0/100/1f.3                bus            6 Series/C200 Series Chipset Family SMBus Controller

Hasta ahora simplemente me han dicho que el dispositivo está roto, ya que no aparece en ninguno de estos. Ahora que lo he visto funcionar, sé que no lo es y que es sólo un problema de configuración.

Cuando estaba funcionando, la salida de lsusb incluía un controlador fesco (creo). No veo fesco en ninguna parte cuando uso grep.

La computadora es una computadora portátil Asus G74sx.

Se agradece toda la información. Gracias.

Editar:
Bien, no sé cuánto ayuda esto, pero tengo otra máquina (que ejecuta Linux) con un puerto USB3 que funciona. Comencé a buscar diferencias entre los dos en xhci_hcd y ehci_hcd (por si acaso) y descubrí que en /sys/bus/pci/drivers/ el sistema en funcionamiento tiene una carpeta "xhci_hcd", mientras que el sistema que no funciona no. Al principio pensé: "Oye, tal vez pueda copiarlo de un sistema a otro. Incluso como root, ni siquiera puedo copiar esos archivos. Así que claramente algo en otra parte del sistema se está volviendo loco. No sé si esto ayuda o confunde, pero es un detalle.

Edición 2: mensaje de error.
El problema parece estar relacionado con poner el sistema en modo de suspensión. Estoy arrancando desde un disco activo para poder borrar rápidamente cualquier cambio. Cuando pongo la máquina en modo de suspensión, generalmente se apaga sin problemas. Cuando vuelve a funcionar, el USB 3 funciona bien. A veces, de forma bastante inesperada, se produce un error. Una vez que ocurre el error, tengo que desconectar la máquina y restablecer mi disco en vivo para recuperar el puerto.

El mensaje no dura mucho, sólo unos milisegundos, pero lo capté en mi cámara.

El mensaje de error:

xhci_hcd 0000:04:00.0: PCI post-resume error -110!
xhci_hcd 0000:04:00.0: HC died; cleaning up
xhci_hcd 0000:04:00.0: HC died; cleaning up
dpm_run_callback(): pci_pm_resume+0x0/0xb0 returns -110
PM: Device 0000:04:00.0 failed to resume async: error -110
dpm_run_callback(): usb_dev_resume+0x0/0x20 [usbcore] returns -5
PM: Device 4-1.4 failed to resume async: error -5

Edición 3: ¿Posible respuesta? (necesita pruebas) Lecturaeste, Descubrí que si desconecto manualmente el usb3 y luego llamo systemctl suspend, cuando lo despierto y vinculo manualmente el dispositivo usb3, funciona. Ejecuté esto 150 veces, lo cual si consideramos que generalmente fallará entre 2 y 10 veces, son suficientes desviaciones estándar de la media, así que asumiré que funciona. Puse el enlace y lo desvinculé en "/etc/pm/sleep.d/20_custom-xhci_hcd". Luego verificó para asegurarse de que fuera ejecutable.

#!/bin/sh
#File: "/etc/pm/sleep.d/20_custom-xhci_hcd"

case "${1}" in
    hibernate|sleep)
        #unbind
        echo "Unbinding xhci device"
        echo -n "0000:04:00.0" > /sys/bus/pci/drivers/xhci_hcd/unbind
    ;;
    resume|thaw)
        # bind
        echo "Binding xhci device"
        ehco -n "0000:04:00.0" > /sys/bus/pci/drivers/xhci_hcd/bind
    ;;
esac

No creo que nunca se llame a este archivo porque nunca vi las salidas de eco. Y pensándolo bien, tiene sentido ya que esta máquina no tiene pm-utils y usa systemd en su lugar. Así que lo moví a /usr/lib/systemd/system-sleep/ segúneste sitioy lo ajusté a:

#!/bin/sh
#File: "/usr/lib/systemd/system-sleep/xhci_hcd.sleep"

case $1/$2 in
    pre/*)
        #unbind
        echo "Unbinding xhci device"
        echo -n "0000:04:00.0" > /sys/bus/pci/drivers/xhci_hcd/unbind
    ;;
    post/*)
        # bind
        echo "Binding xhci device"
        ehco -n "0000:04:00.0" > /sys/bus/pci/drivers/xhci_hcd/bind
    ;;
esac

como se indica en el mismo sitio. Luego configúrelo como ejecutable. Voy a probar esto pero creo que estoy sintiendo el amor. Si funciona, publicaré esto en la parte de respuestas.

Respuesta1

Encontrar el dispositivo
Primero, necesitamos averiguar cuál es el número de dispositivo. Si el puerto está habilitado y puede verlo con el comando, lsusbutilice ls /sys/bus/pci/drivers/xhci_hcd. El dispositivo será un número en el formato xxxx:xx:xx.x y muy probablemente serán las primeras entradas devueltas por el lscomando.

Restablecer el puerto
Si el puerto no está visible, significa que el puerto no está funcionando, pero se puede restablecer quitando toda la energía a la máquina. Apague la computadora, retire todas las baterías y cables de alimentación y espere 10 segundos. Luego vuelva a enchufar el cable y encienda la máquina. Luego busque nuevamente el número de dispositivo.

El número de mi dispositivo es 0000:04:00.0, pero puede ser diferente. Un ejemplo que he visto es 0000:00:14.0 en otra parte. Recuerde o anote su(s) número(s). Lo necesitaremos para vincular y desvincular. Puede haber más de uno si tiene varios puertos USB 3.

Determinación del marco de gestión de energía
Paraapto/aptitud/dpkg(ubuntu/debian/mint):
dpkg --get-selections | grep pm-utils
Si se devuelve algo, tienes pm.

Paraadministrador de paquetes pacman(arco)
pacman -Qe | grep pm-utils
Si se devuelve algo, tienes pm.

Paraadministrador de paquetes rpm(fedora, centos, etc...):
rpm -qa | grep pm-utils
Si se devuelve algo, tienes pm.

Paraotros, puedes probar estos, no sé cómo funcionan y no tengo un sistema para probarlos.

Nota:El hecho de que los paquetes estén instalados no implica que los esté utilizando, pero es muy probable que lo esté. Otra cosa que puedes hacer es simplemente cd /etc/pm/y, si existe, puedes poner el script allí. Técnicamente, no creo que haya nada malo en tener un guión no vinculante en ambos lugares. Si alguien quiere dejar un comentario sobre si esto es cierto o no, o si hay una mejor manera de determinar si se usa pm, sería fantástico.

script de suspensión systemd (sin utilidades pm)
Si está utilizando systemd o systemctl sin pm, debemos colocar el script en /usr/lib/systemd/system-sleep/xhci_hcd.sleep. Para mi máquina el script se ve así:

#!/bin/sh
#File: /usr/lib/systemd/system-sleep/xhci_hcd.sleep

case $1/$2 in
        pre/*)
                # Unbind
                echo "Unbinding xhci Device"
                echo -n "0000:04:00.0" > /sys/bus/pci/drivers/xhci_hcd/unbind
        ;;
        post/*)
                # bind xhci_dev
                echo "Rebinding xhci Device"
                echo -n "0000:04:00.0" > /sys/bus/pci/drivers/xhci_hcd/bind
        ;;
esac

Reemplace 0000:04:00.0 con su número de dispositivo en ambos casos. Si tiene varios números de dispositivo, ejecute la vinculación y desvinculación para cada uno. es decir, si tiene puertos xxxx:xx:xx.x y yyyy:yy:yy.y, necesitará echo -n "xxxx:xx:xx.x" > /sys/bus/pci/drivers/xhci_hcd/unbindy echo -n "yyyy:yy:yy.y" > /sys/bus/pci/drivers/xhci_hcd/unbindpara desvincular los dos dispositivos y echo -n "xxxx:xx:xx.x" > /sys/bus/pci/drivers/xhci_hcd/bindy echo -n "yyyy:yy:yy.y" > /sys/bus/pci/drivers/xhci_hcd/bindpara vincular los dispositivos. Puse el primer comando echo para permitirnos ver cuándo ocurre la vinculación y desvinculación cuando miramos los registros usando journalctl -b -u systemd-suspend. Más información sobregestión de energíacon systemd/systemctl. Guarde ese archivo y luego ejecútelo sudo chmod a+x /usr/lib/systemd/system-sleep/xhci_hcd.sleeppara hacerlo ejecutable. Personalmente, reiniciaría el sistema para asegurarme de que el nuevo archivo surta efecto, pero creo que puede surtir efecto inmediatamente. Si no es así y pone el sistema en suspensión (o lo suspende/hiberna), observe cómo restablece el puerto anterior.

script de suspensión pm (las utilidades pm están instaladas)
Si está utilizando pm utils, debemos colocar el script en/etc/pm/sleep.d/20_custom-xhci_hcd

#!/bin/sh
#File: "/etc/pm/sleep.d/20_custom-xhci_hcd"

case "${1}" in
    hibernate|sleep)
        #unbind
        echo "Unbinding xhci device"
        echo -n "0000:04:00.0" > /sys/bus/pci/drivers/xhci_hcd/unbind
    ;;
    resume|thaw)
        # bind
        echo "Binding xhci device"
        ehco -n "0000:04:00.0" > /sys/bus/pci/drivers/xhci_hcd/bind
    ;;
esac

Reemplace 0000:04:00.0 con su número de dispositivo en ambos casos. Si tiene varios números de dispositivo, ejecute la vinculación y desvinculación para cada dispositivo. Consulte las instrucciones debajo del script para el script de suspensión systemd, pero en su lugar utilícelas chmod a+x /etc/pm/sleep.d/20_custom-xhci_hcdpara que el archivo sea ejecutable. Luego reinícialo y pruébalo.

Recursos más útiles:

información relacionada