GNU/Linux >> Tutoriales Linux >  >> Linux

Linux:¿por qué el USB no funciona en Linux cuando funciona en Uefi/bios?

En segundo plano, acabo de construir una nueva máquina con hardware moderno que incluye:

  • AMD FX-8350
  • Placa base Gigabyte GA-990FXA-UD3
  • 16 GB de RAM
  • NVidia GTX 650 Ti
  • SSD de Kingston

Dado eso, traté de instalar varias versiones de Linux en el SSD y casi siempre fallaba. Intenté instalar Arch, Debian estable, Debian sid y Ubuntu 12.10 desde una memoria USB, pero mientras el BIOS vio la unidad USB y comenzó a arrancar desde ella, tan pronto como el sistema operativo intentó enumerar los dispositivos USB, perdí toda la funcionalidad USB. (incluido el dispositivo de arranque).

Eventualmente grabé un DVD e instalé Ubuntu 12.10 en el SSD. Cabe señalar que mi teclado (y mouse) USB funcionan bien en el UEFI/BIOS de American Megatrends. Incluso cuando estoy en los menús de preinstalación en el DVD de Live Ubuntu, el teclado funciona bien.

Tan pronto como se inicia Linux (ya sea Live DVD o desde el SSD), pierdo toda la funcionalidad USB y solo puedo navegar por el sistema operativo con un teclado PS/2.

Lo que veo en el dmesg/syslog son algunas líneas sobre “failed to load microcode amd_ucode/microcode_amd_fam15h.bin ” y puedo ver que los dispositivos USB no se inicializan.

Si hago un lsusb Puedo ver todos los controladores de host USB pero ninguno de los dispositivos. Haciendo un lspci me muestra todo el hardware que esperaría. Y haciendo un lsmod No veo ningún módulo usb cargado (usb_ehci por ejemplo).

Intenté pasar noapic a la cadena de arranque del núcleo y no tuvo ningún efecto sobre este problema.

La placa base es compatible con USB 3.0, pero todos los dispositivos que he conectado a puertos USB 2.0 normales.

Estoy bastante desconcertado por lo que podría estar matando/evitando que el USB (y mi tarjeta de red integrada) funcionen en Linux . No parece haber ningún problema con ninguno de estos dispositivos funcionando en BIOS y no tengo una instalación de Windows disponible para probar y ver si funciona.

Ya hice RMA de la placa base una vez, pero la segunda tiene exactamente el mismo comportamiento, así que creo que puedo descartar con seguridad una falla de hardware (dado que el comportamiento es idéntico, no creo que sea extraño que obtenga dos placas idénticamente defectuosas son mayores que las probabilidades de que se trate de un problema de Linux).

¿Qué más puedo intentar para que funcione el USB (e idealmente mi red, pero por ahora nos ceñiremos al USB)?

Edición n.º 1:

Como no tengo redes, solo puedo relacionar partes interesantes de dmesg aquí.

De interés en dmesg Puedo ver que tengo 11 controladores de host USB (OHCI, EHCI y xHCI). Detecta mis dispositivos USB y luego falla inmediatamente de la siguiente manera:

usb 3-1: new high-speed USB device number 2 using ehci_hcd
usb 3-1: device descriptor read/64, error -32

Eso se repite varias veces incrementando el número y probando otros controladores USB Host hasta que vuelve a los controladores OHCI que también fallan pero tienen un mensaje adicional:

Relacionado:Linux:¿cuándo usaría pivot_root sobre switch_root?

usb 8-1: device not accepting address 4, error -32

Creo que mis problemas de red tienen que ver con el hecho de que no tengo habilitado IPv6 en mi enrutador y eso parece ser un problema

eth1: no IPv6 routers present

Edición n.º 2:

lspci -vvv muestra que mis adaptadores de red (tanto integrados como de expansión) son Realtek Semiconductor (sin sorpresa); RTL8111/8168B y RTL8169/8110 respectivamente. Mis controladores USB son Etron Technology EJ168 (xHCI) y AMD nee ATI SB7x0/SB8x0/SB9x0 (EHCI y OHCI)

Ahora ejecutando Debian wheezy modprobe muestra usb_common , usbcore , xhci_hcd , ehci_hcd y ohci_hcd todo cargado y funcionando.

Respuesta aceptada:

Encontré la respuesta en este hilo (http://ubuntuforums.org/showthread.php?t=2114055) en ubuntuforums.org.

Parece que con las placas base Gigabyte más nuevas (al menos) hay una opción de BIOS llamada IOMMU Controller que está deshabilitado de forma predeterminada y no da ninguna pista o indicación de para qué sirve.

Habilitar esta configuración y reiniciar "mágicamente" restaura todos mis problemas de red y USB en un sistema operativo Linux de 64 bits (no importa cuál).

Estoy bastante sorprendido y eufórico de que haya sido una búsqueda tan larga para una solución tan simple.

Gracias a todos por su ayuda y sugerencias. Esperemos que a otros les resulte útil.

Actualización: Solo me gustaría agregar que la configuración actual de mi BIOS también incluye la habilitación de XHCI Handoff y EHCI Handoff además del controlador IOMMU. Otros también han mencionado esto y habilitar esas dos transferencias también permite que mis puertos USB 3.0 funcionen como se esperaba.


Linux
  1. Linux:¿por qué usamos Su y no solo Su?

  2. ¿Por qué es tan importante la sincronización al hacer una memoria USB de arranque de Linux?

  3. Linux:¿por qué se tarda tanto en detectar una memoria USB?

  4. Linux:¿el bloqueo de mayúsculas no funciona en la consola de Linux?

  5. Linux:¿los auriculares no funcionan en Linux Mint 18?

Arreglar el clic del panel táctil que no funciona en Linux Mint

¿Los auriculares USB de Logitech no funcionan en 12.04?

PYTHONPATH no funciona para sudo en GNU/Linux (funciona para root)

fflush() no funciona en Linux

El comando de Linux 'll' no funciona

¿Por qué no funciona sftp rmdir?