GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Linux – Warum funktioniert USB nicht in Linux, wenn es in Uefi/Bios funktioniert?

Als Hintergrund habe ich gerade eine neue Maschine mit moderner Hardware gebaut, darunter:

  • AMD FX-8350
  • Gigabyte GA-990FXA-UD3 Motherboard
  • 16 GB Arbeitsspeicher
  • NVidia GTX 650 Ti
  • Kingston-SSD

Vor diesem Hintergrund habe ich versucht, verschiedene Linux-Versionen auf der SSD zu installieren, und bin fast jedes Mal gescheitert. Ich habe versucht, Arch, Debian stable, Debian sid und Ubuntu 12.10 von einem USB-Stick zu installieren, aber während das BIOS das USB-Laufwerk erkannte und damit begann, davon zu booten, verlor ich alle USB-Funktionen, sobald das Betriebssystem versuchte, die USB-Geräte aufzulisten (einschließlich des Startgeräts).

Schließlich habe ich eine DVD gebrannt und Ubuntu 12.10 auf der SSD installiert. Es sei darauf hingewiesen, dass meine USB-Tastatur (und -Maus) im amerikanischen Megatrends UEFI/BIOS einwandfrei funktionieren. Selbst wenn ich mich in den Vorinstallationsmenüs auf der Live-Ubuntu-DVD befinde, funktioniert die Tastatur einwandfrei.

Sobald Linux gebootet wird (entweder Live-DVD oder von der SSD), verliere ich alle USB-Funktionen und kann das Betriebssystem nur noch mit einer PS/2-Tastatur navigieren.

Was ich im dmesg/syslog sehe, sind ein paar Zeilen über „failed to load microcode amd_ucode/microcode_amd_fam15h.bin “ und ich kann sehen, dass USB-Geräte nicht initialisiert werden können.

Wenn ich ein lsusb mache Ich kann alle USB-Host-Controller sehen, aber keines der Geräte. Ausführen eines lspci zeigt mir die gesamte Hardware, die ich erwarten würde. Und mache einen lsmod Ich sehe keine geladenen USB-Module (usb_ehci zum Beispiel).

Ich habe versucht, noapic zu übergeben in den Kernel-Boot-String und es hatte keine Auswirkung auf dieses Problem.

Das Motherboard unterstützt USB 3.0, aber alle Geräte, die ich an normale USB 2.0-Ports angeschlossen habe.

Ich bin ziemlich verblüfft darüber, was USB (und meine integrierte Netzwerkkarte) daran hindern könnte, unter Linux zu funktionieren . Es scheint kein Problem mit diesen Geräten zu geben, die im BIOS arbeiten, und ich habe keine Windows-Installation zur Verfügung, um zu testen und zu sehen, ob es funktioniert.

Ich habe das Motherboard bereits einmal einer RMA unterzogen, aber das zweite hat genau das gleiche Verhalten, daher kann ich einen Hardwarefehler sicher ausschließen (da das Verhalten identisch ist, halte ich es nicht für unwahrscheinlich, dass ich zwei identisch defekte Boards bekomme größer als die Wahrscheinlichkeit, dass es sich um ein Linux-Problem handelt).

Was kann ich noch versuchen, um USB (und idealerweise mein Netzwerk, aber wir bleiben vorerst bei USB) zum Laufen zu bringen?

Änderung Nr. 1:

Da ich kein Netzwerk habe, kann ich nur interessante Bits von dmesg erzählen hier.

Interessant in dmesg Ich kann sehen, dass ich 11 USB-Hostcontroller habe (OHCI, EHCI und xHCI). Es erkennt meine USB-Geräte und schlägt dann sofort wie folgt fehl:

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

Das wiederholt sich mehrmals, erhöht die Nummer und versucht andere USB-Host-Controller, bis es auf OHCI-Controller zurückfällt, die ebenfalls fehlschlagen, aber eine zusätzliche Meldung haben:

Verwandte:Linux – Wann würden Sie pivot_root über switch_root verwenden?

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

Ich glaube, meine Netzwerkprobleme haben damit zu tun, dass IPv6 auf meinem Router nicht aktiviert ist, und das scheint ein Problem zu sein

eth1: no IPv6 routers present

Änderung Nr. 2:

lspci -vvv zeigt, dass meine Netzwerkadapter (sowohl Onboard als auch Erweiterung) Realtek Semiconductor sind (keine Überraschung); RTL8111/8168B bzw. RTL8169/8110. Meine USB-Controller sind Etron Technology EJ168 (xHCI) und AMD nee ATI SB7x0/SB8x0/SB9x0 (EHCI &OHCI)

Jetzt läuft Debian wheezy modprobe zeigt usb_common , usbcore , xhci_hcd , ehci_hcd und ohci_hcd alles geladen und funktionsfähig.

Akzeptierte Antwort:

Ich habe die Antwort in diesem Thread (http://ubuntuforums.org/showthread.php?t=2114055) auf ubuntuforums.org gefunden.

Es scheint (zumindest) bei neueren Gigabyte-Mainboards eine BIOS-Option namens IOMMU Controller zu geben das ist standardmäßig deaktiviert und gibt keinen Hinweis oder Hinweis darauf, wofür es ist.

Wenn Sie diese Einstellung aktivieren und „magisch“ neu starten, werden alle meine USB- und Netzwerkprobleme in einem 64-Bit-Linux-Betriebssystem (egal welches) behoben.

Ich bin ziemlich schockiert und hocherfreut, dass es eine so lange Suche nach einer so einfachen Lösung war.

Danke an alle für eure Hilfe und Vorschläge. Hoffentlich finden andere dies hilfreich.

Aktualisierung: Ich möchte nur hinzufügen, dass meine aktuellen BIOS-Einstellungen neben dem IOMMU-Controller auch die Aktivierung von XHCI Handoff und EHCI Handoff beinhalten. Andere haben dies ebenfalls erwähnt, und durch die Aktivierung dieser beiden Übergaben können auch meine USB 3.0-Ports wie erwartet funktionieren.


Linux
  1. Skype-Mikrofon funktioniert nicht in Linux Mint 17 [Kurztipp]

  2. Linux – Wann sollte ich keinen -9 A-Prozess beenden?

  3. PYTHONPATH funktioniert nicht für sudo unter GNU/Linux (funktioniert für root)

  4. Linux-Datumsbefehl funktioniert nicht

  5. Warum funktioniert USB unter Linux nicht, wenn es unter UEFI/BIOS funktioniert?

Fix Touchpad Click funktioniert nicht in Linux Mint

Linux – Warum verwenden wir Su – und nicht nur Su?

Warum ist die Synchronisierung so wichtig, wenn Sie einen bootfähigen Linux-USB-Stick erstellen?

Linux – Kopfhörer funktioniert nicht Linux Mint 18?

Logitech USB-Headset funktioniert nicht am 12.04?

Feststelltaste funktioniert nicht auf der Linux-Konsole