GNU/Linux >> Tutoriels Linux >  >> Linux

Linux - Pourquoi USB ne fonctionne-t-il pas sous Linux alors qu'il fonctionne sous Uefi/bios ?

Pour le fond je viens de construire une nouvelle machine avec du matériel moderne comprenant :

  • AMD FX-8350
  • Carte mère Gigabyte GA-990FXA-UD3
  • 16 Go de RAM
  • NVidia GTX 650 Ti
  • SSD Kingston

Compte tenu de cela, j'ai essayé d'installer différentes versions de Linux sur le SSD et j'ai rencontré un échec presque à chaque fois. J'ai essayé d'installer Arch, Debian stable, Debian sid et Ubuntu 12.10 à partir d'une clé USB, mais alors que le BIOS a vu la clé USB et a commencé à démarrer à partir de celle-ci, dès que le système d'exploitation a tenté d'énumérer les périphériques USB, j'ai perdu toutes les fonctionnalités USB. (y compris le périphérique de démarrage).

Finalement, j'ai gravé un DVD et installé Ubuntu 12.10 sur le SSD. Il convient de noter que mon clavier (et ma souris) USB fonctionnent correctement dans l'UEFI/BIOS des mégatendances américaines. Même lorsque je suis dans les menus de pré-installation sur le DVD Live Ubuntu, le clavier fonctionne bien.

Dès que Linux est démarré (soit en direct sur DVD, soit à partir du SSD), je perds toutes les fonctionnalités USB et je ne peux naviguer dans le système d'exploitation qu'à l'aide d'un clavier PS/2.

Ce que je vois dans le dmesg/syslog, ce sont quelques lignes sur "failed to load microcode amd_ucode/microcode_amd_fam15h.bin " et je peux voir que les périphériques USB ne parviennent pas à s'initialiser.

Si je fais un lsusb Je peux voir tous les contrôleurs hôtes USB mais aucun des périphériques. Faire un lspci me montre tout le matériel auquel je m'attendais. Et faire un lsmod Je ne vois aucun module USB chargé (usb_ehci par exemple).

J'ai essayé de passer noapic à la chaîne de démarrage du noyau et cela n'a eu aucun effet sur ce problème.

La carte mère prend en charge l'USB 3.0, mais tous les périphériques que j'ai branchés sur des ports USB 2.0 normaux.

Je suis plutôt déconcerté par ce qui pourrait tuer/empêcher l'USB (et ma carte réseau intégrée) de fonctionner sous Linux . Il ne semble pas y avoir de problème avec l'un de ces appareils fonctionnant dans le BIOS et je n'ai pas d'installation Windows disponible pour tester et voir si cela fonctionne.

J'ai déjà effectué une RMA sur la carte mère une fois, mais la seconde a exactement le même comportement, donc je pense que je peux exclure en toute sécurité une panne matérielle (puisque le comportement est identique, je ne pense pas qu'il soit impair que j'obtienne deux cartes défectueuses de la même manière sont plus grandes que les chances qu'il s'agisse d'un problème Linux).

Que puis-je essayer d'autre pour faire fonctionner l'USB (et idéalement mon réseau, mais nous nous en tiendrons à l'USB pour l'instant) ?

Modification #1 :

Comme je n'ai pas de réseau, je ne peux rapporter que des éléments intéressants de dmesg ici.

D'intérêt pour dmesg Je peux voir que j'ai 11 contrôleurs hôtes USB (OHCI, EHCI et xHCI). Il détecte mes périphériques USB, puis échoue immédiatement comme suit :

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

Cela se répète plusieurs fois en incrémentant le nombre et en essayant d'autres contrôleurs hôtes USB jusqu'à ce qu'il revienne aux contrôleurs OHCI qui échouent également mais ont un message supplémentaire :

Connexe :Linux – Quand utiliseriez-vous pivot_root plutôt que switch_root ?

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

Je pense que mes problèmes de réseau sont liés au fait que je n'ai pas activé IPv6 sur mon routeur et cela semble être un problème

eth1: no IPv6 routers present

Modification #2 :

lspci -vvv montre que mes adaptateurs réseau (à la fois intégrés et d'extension) sont Realtek Semiconductor (pas de surprise); RTL8111/8168B et RTL8169/8110 respectivement. Mes contrôleurs USB sont Etron Technology EJ168 (xHCI) et AMD nee ATI SB7x0/SB8x0/SB9x0 (EHCI &OHCI)

Exécute maintenant Debian Wheezy modprobe affiche usb_common , usbcore , xhci_hcd , ehci_hcd , et ohci_hcd tous chargés et fonctionnels.

Réponse acceptée :

J'ai trouvé la réponse de ce fil (http://ubuntuforums.org/showthread.php?t=2114055) sur ubuntuforums.org.

Il semble qu'avec les cartes mères Gigabyte plus récentes (au moins), il existe une option BIOS appelée IOMMU Controller qui est désactivé par défaut et ne donne aucun indice ou indication sur ce à quoi il sert.

L'activation de ce paramètre et le redémarrage "magique" restaure tous mes problèmes USB et réseau dans un système d'exploitation Linux 64 bits (peu importe lequel).

Je suis plutôt choqué et ravi que la recherche d'une solution aussi simple ait été si longue.

Merci à tous pour votre aide et vos suggestions. J'espère que d'autres trouveront cela utile.

Mise à jour : Je voudrais juste ajouter que mes paramètres BIOS actuels incluent également l'activation de XHCI Handoff et EHCI Handoff en plus du contrôleur IOMMU. D'autres l'ont également mentionné et l'activation de ces deux transferts permet également à mes ports USB 3.0 de fonctionner comme prévu.


Linux
  1. Le microphone Skype ne fonctionne pas sous Linux Mint 17 [Astuce rapide]

  2. Linux - Pourquoi utilisons-nous Su - Et pas seulement Su ?

  3. Pourquoi la synchronisation est-elle si importante lors de la création d'une clé USB Linux amorçable ?

  4. Linux - Pourquoi Setuid ne fonctionne-t-il pas ??

  5. Linux – Pourquoi faut-il autant de temps pour détecter une clé USB ?

Correction du clic sur le pavé tactile ne fonctionnant pas sous Linux Mint

Linux - Quand ne devrais-je pas tuer -9 Un processus ?

Linux - Le casque ne fonctionne pas Linux Mint 18 ?

Le casque USB Logitech ne fonctionne pas sur 12.04 ?

La commande de date Linux ne fonctionne pas

Le voyant de verrouillage des majuscules ne fonctionne pas sur la console Linux