USB, Linux'ta UEFI / BIOS'ta çalışırken neden çalışmıyor?


31

Arka plan için az önce dahil modern bir donanıma sahip yeni bir makine inşa ettim:

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

Bundan dolayı, Linux'un çeşitli sürümlerini SSD'ye yüklemeye çalıştım ve neredeyse her zaman başarısızlıkla karşılaştım. USB sürücüden Arch, Debian stabil, Debian sid ve Ubuntu 12.10'u kurmaya çalıştım, ancak BIOS USB sürücüsünü gördü ve önyüklemeye başladı. (önyükleme aygıtı dahil).

Sonunda bir DVD yaktım ve SSD'ye Ubuntu 12.10 yükledim. USB klavyemin (ve faremin), Amerikan Megatrends UEFI / BIOS'unda iyi çalıştığı belirtilmelidir. Live Ubuntu DVD'sindeki kurulum öncesi menülerdeyken bile klavye iyi çalışıyor.

Linux başlatılır açılmaz (ya Live DVD ya da SSD'den) Tüm USB işlevselliğini yitiririm ve sadece bir PS / 2 klavyesi kullanarak işletim sistemine gidebilirim.

Dmesg / syslog'da " failed to load microcode amd_ucode/microcode_amd_fam15h.bin" hakkında birkaç satır var ve başlatılamayan USB aygıtlarını görebiliyorum.

Bunu yaparsam lsusbtüm USB ana bilgisayar denetleyicilerini görebilir, ancak aygıtlardan hiçbirini göremiyorum. Bir lspcigösteri yapmak bana beklediğim tüm donanımı gösterir. Ve bir lsmodI yüklerken herhangi bir usb modülünün yüklenmediğini görüyorum ( usb_ehciörneğin).

noapicÇekirdek önyükleme dizesine geçmeyi denedim ve bu sorun üzerinde bir etkisi olmadı.

Anakart USB 3.0'ı destekliyor ancak normal USB 2.0 bağlantı noktalarına taktığım tüm aygıtları destekliyor.

USB’nin (ve on-board ağ kartımın) Linux’ta çalışmasını önleyebilecek / engelleyebilecek şeylere şaşırmıştım . BIOS'ta çalışan bu cihazların hiçbirinde herhangi bir sorun yok gibi görünüyor ve çalışıp çalışmadığını görmek için bir Windows kurulumum yok.

Ben zaten bir kez anakart RMA yaptım ama ikincisi tamamen aynı davranışı var bu yüzden donanım arızasını güvenli bir şekilde ekarte edebilirim (davranış aynı olduğundan, iki aynı kusurlu anakartı alma tuhaf olduğumu sanmıyorum bunun bir Linux problemi olma ihtimalinden daha büyüktür).

USB (ve ideal olarak ağım, ancak şimdilik USB'ye bağlı kalacağım) çalışmasını sağlamak için başka ne deneyebilirim?

1. Düzenle:

Ağ bağlantım olmadığından, buradan yalnızca ilginç bitleri ilişkilendirebilirim dmesg.

İlgilendiğim dmesg11 USB ana bilgisayar denetleyicisine (OHCI, EHCI ve xHCI) sahip olduğumu görebiliyorum. USB aygıtlarımı algıladı ve hemen aşağıdaki gibi başarısız oluyor:

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

Bu, sayıyı artırıp birkaç başarısızlık yapar ve diğer USB Ana Bilgisayar denetleyicilerini deneyen ve aynı zamanda başarısız olan ancak ek bir mesaj alan OHCI denetleyicilerine geri dönene kadar:

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

Ağ oluşturma sorunlarımın yönlendiricimde IPv6 etkin olmadığı ve bunun bir sorun gibi göründüğü ile ilgili olduğunu düşünüyorum.

eth1: no IPv6 routers present

# 2’yi düzenleyin:

lspci -vvvağ bağdaştırıcılarımın (hem karttaki hem de genişletme) Realtek Semiconductor olduğunu gösteriyor (sürpriz yok); RTL8111 / 8168B ve RTL8169 / 8110 idi. USB denetleyicilerim Etron Teknolojisi EJ168 (xHCI) ve AMD'dir (ATI SB7x0 / SB8x0 / SB9x0 (EHCI & OHCI)

Şimdi Debian hırıltılı çalışan modprobegösterileri usb_common, usbcore,xhci_hcd , ehci_hcd, ve ohci_hcdtüm yüklü ve çalışır.


Mikro kod yükleme başarısızlığı kendine özgü görünüyor. Anakartın henüz desteklenmediğini veya mikro kod paketinin eksik olduğunu düşünüyorum.
TNW

Bu işlem bir süredir tükendiğinden ve mikrokodu güncelleyen paketler bulunduğundan , sorun çözülebilir gibi görünmektedir ( butterflyofdream.wordpress.com/2012/09/10/… ). Ancak, USB sorunsuz bir şekilde BIOS'ta çalıştığında bunun Linux'ta çalışmasını nasıl önleyeceğini merak ediyorum. Ayrıca, ağ aygıtının neden bağlanamadığını anlayana kadar yamayı uygulayamayacağım (bir eklenti kartı bu gece bunu ekarte etmeme izin verebilir).
BrionS

1
Bunun tersine garip olacağını söylemeyi tercih ederim. Anakart üzerindeki gerekiyordu BIOS her şeyi desteklemek için gereken çalışmaları. Linux böyle bir şey değil. BIOS genellikle aygıtları basitleştirilmiş bir şekilde, örneğin grafik kartı için VBE'yi destekler - bunun yerine kullanmak istemiyorsanız veya normal GPU sürücüleri.
TNW

Öyleyse, Linux'u BIOS'un USB ve ağ denetleyicilerinin aygıtlarını Linux çekirdeğinde desteklenene (daha iyi?) Kadar yönetmesine izin vermeye zorlama yolu var mı?
BrionS

Sanmıyorum Tüm cihazlara BIOS üzerinden erişildiği günler çok geride kaldı. Ancak, sorunun sürücü eksikliğinden kaynaklandığına dair sizi temin edemem. İlginç bir şey buldunuz mu dmesg, modprobeUSB ile ilgili modüllerde denediniz mi?
TNW

Yanıtlar:


25

Bu konudaki cevabı buldum ( http://ubuntuforums.org/showthread.php?t=2114055 ) ubuntuforums.org adresinde buldum.

Yeni Gigabyte anakartlarında (en azından), IOMMU Controllervarsayılan olarak devre dışı bırakılan ve ne işe yaradığına dair hiçbir ipucu veya gösterge vermeyen bir BIOS seçeneği var .

Bu ayarın etkinleştirilmesi ve "sihirli" olarak yeniden başlatılması, 64-bit Linux işletim sistemindeki tüm USB ve ağ sorunlarımı geri yükler (hangisi olduğu önemli değil).

Çok basit bir düzeltme için çok uzun bir arayış olduğu için şok oldum ve çok mutluyum.

Yardımlarınız ve önerileriniz için herkese teşekkürler. Umarım diğerleri bunu faydalı bulacaktır.

Güncelleme: Mevcut BIOS ayarlarımın IOMMU Denetleyiciye ek olarak XHCI Handoff ve EHCI Handoff'u da içerdiğini eklemek istiyorum. Diğerleri de bundan bahsetti ve bu iki geçişi mümkün kılmak da USB 3.0 portlarımın beklendiği gibi çalışmasını sağlıyor.


1
IOMMU’yu açmak benim için çalıştığı halde, benim için tüm dahili USB 3 portlarımı devre dışı bıraktığını belirteceğim. Ayrıca, daha önce ethernet portuyla ilgili bazı sorunlar yaşıyordum, ancak IOMMU'yu bu sorunları çözdüm.
Robbie

USB 3.0 bağlantı noktalarını düzeltmek için xHCI Handoff özelliğini etkinleştirmeyi denediniz mi?
Stuart P. Bentley

@ StuartP.Bentley evet xHCI ve eHCI Handoff ayarları, IOMMU Kontrol cihazının yanı sıra etkindir. Bu, USB 3.0 bağlantı noktalarımı etkinleştiriyor, ancak ne sebeple olursa olsun USB klavyemin BIOS veya grub ekranlarında çalışmasına izin vermiyor; Sadece BIOS'ta önyükleme yapmak için takılı ikinci bir PS / 2 tarzı klavyem var.
BrionS

Dahası var. Tüm ubuntu Fora aracılığıyla yola koyulmak, bir önyükleyici ayar önerilir bulmak IOMMU ile ( "IOMMU yumuşak =") DIS Engelsiz. GB 990FXA-UD3 varsayılan olarak etkindir ve harici USB3 hub'ımı kullanamadım. ALT HATTI: Bu probleminizi çözmeyebilir. Değilse, googling devam edin.
Bruce,

USB2.0 ile en iyi performans için EHCI devredışı BIOS'ta devre dışı bırakmanız önerilir.
Marc.2377

5

GA-990FXA-UD7 ile hem USB 2.0 hem de USB 3.0 denetleyicileri ve onboard Ethernet denetleyicisinin Linux'ta düzgün çalışması için (Nane 17.1 kullanıyorum) BIOS'ta aşağıdaki ayarları gerektirdiğini öğrendim:

  • xHCI devri - Etkin
  • EHCI devri - Etkin
  • IOMMU denetleyici - Etkin

UEFI'yi devre dışı bırakmayı ve tüm önyükleme seçeneklerini "Yalnızca Eski" olarak değiştirmeyi unutmayın.

Gerçekten> 2,2 TB kapasiteli bir HDD’den başlatmanız gerekirse, ellerinizde farklı bir problem olabilir.

Önyükleme sürücüm için 256 GB'lık bir SSD ve RAID 1 (yansıtılmış) dizideki bir çift 3 TB HDD'yi / evim için mdadm kullanarak kullanıyorum ve hepsi iyi çalışıyor.

Gigabyte anakartlarında çok çalıştıktan sonra, 990FXA-UD5 ve 990FXA-UD3 anakartlarının çok benzer BIOS'ları olduğunu biliyorum, bu yüzden de bu anakartlarda da aynı durum geçerli olacak.


Sizin için işe yaradığı için memnunum. Tam olarak kurulumunuz var (256GB SSD + / u (/ home) için yansıtılmış 3 TB sürücüler). USB3 bağlantı noktalarım çalışıyor, ancak USB3 hub'ı birinden takılmıyor. (Eh, üzerinde bir başparmak sürücü kullanabilirim, ancak bir klavye veya fare kullanamıyorum.)
Bruce,

iommu=soft"Yalnızca Eski" özelliğini etkinleştirmek zorunda kalmadan xHCI + eHIC Handoff ve IOMMU Controller (tümü etkin) ile birlikte. Linux'u tam hızlı açılışta, EFI ve wiout iommu veya usb3 root cihazlarıyla arşivleyin.


4

Garip bir şekilde, neredeyse aynı bir kurulum yapmama rağmen (aynı anakart, FX8350 işlemci), IOMMU'yu etkinleştirmek benim için hiçbir şey ifade etmedi. Hala USB, ağ, vb. Yok

Ne yaptım da olsa, çekirdek komut satırına "IOMMU yumuşak =" ekliyordu. Şimdi her şey yolunda gidiyor (bunun dışında, garip bir nedenden dolayı Logitech Zone Touch Mouse'um çalışmıyor).


1
Asla aynı olmazlar. Üretim tarihlerindeki birkaç hafta bile olsa, ortak bir anakart bileşeni ve / veya superio revizyonu için yeni bir kaynak anlamına gelebilir. Devre levhasının üretimi, bilgisayarlı gölgeli alanın altında.
mikeserv

3

FYI, Linux'un "BIOS" üzerinden aygıtları "kullanamasının teknik nedenleri: İşletim sistemi" korumalı moda "(32 bit) veya" uzun moda "(64 bit) geçtikten sonra artık kesintileri gönderemez BIOS'a. "Gerçek modda" (16 bit, önyüklemede) disk okuma, klavye girişi vb. İçin BIOS kesmelerini çağırabilir.

Ama aynı zamanda olumsuz yanları da var. İlk olarak, bir megabayt adreslenebilir belleğiniz bile yok. Yani modern işletim sistemi neredeyse ilk şey, gerçek moddan çıkmak. (Aslında, grubun çekirdeği yüklemeden önce korumalı moda geçtiğine inanıyorum).

Daha fazla ayrıntı: http://wiki.osdev.org/Real_Mode http://wiki.osdev.org/Protected_Mode


2

Aynı proc (ama 8 çekirdekli) aynı MB (rev 3) aynı miktarda RAM (Kingston) aldım

IOMMU ile ilgili ipucu biraz yardımcı oldu - tüm bağlantı noktaları bir usb klavyesi, bir monitör usb hub'ı ve bir usb (Realtek) wifi adaptörü görebiliyor, ancak flash sürücü görmüyor.

Görünüşe göre bu çözüm bana yardımcı oldu:

cd /sys/bus/pci/drivers/ehci_hcd
ls

0000: 00: xx.x biçiminde bir dosya göreceksiniz. Aşağıdaki komutu yürütün:

sudo sh -c 'echo -n "0000:00:xx.x" > unbind'

Xx.x dosyasını dosyanızda görüntülenen numaralarla değiştirin. Ehci_hcd'yi devre dışı bırakması gerekir.

Ehci_hcd'yi devre dışı bırakmak için şimdi aşağıdaki betiği kullanabilirsiniz.

cd /sys/bus/pci/drivers/ehci_hcd/
sudo sh -c 'find ./ -name "0000:00:*" -print| sed "s/\.\///">unbind'

http://www.geekdevs.com/2010/04/solved-unable-to-enumerate-usb-device-disabling-ehci_hcd/


2
Burada metinde bir çözüm sağladıysanız ve yalnızca arka plan bilgileri ve önemli olmayan detaylar için bağlantılar kullanırsanız daha yararlı olur . Bu olmadan, bağlantınız geçersiz olduğunda cevabınızın değeri yoktur.
Anthon

Sağladığınız bağlantıda yorum yapan kullanıcılardan biri gibi "Bu bir düzeltme DEĞİLDİR. Bu, sürücünüzü tam hızda kullanmadığınız anlamına gelir. Bu, kesilmiş bir uzuv üzerine yara bandı koymak gibi bir şeydir."
enthusiasticgeek

2

Bu adımlar benim için Ubuntu 15.04 çalıştıran GIGABYTE 970A-DS3P ve AMD-FX-8320 ile çalıştı

  • xHCI devri - Etkin
  • EHCI devri - Etkin
  • IOMMU denetleyici - Etkin
  • UEFI - Engelli
  • Tüm önyükleme seçenekleri - Yalnızca Eski

2

OpenSuse 13.1 kullanarak aynı Gig83te 990FXA-UD3 üzerinde çalışan FX8350 var. Benim için çalışan çözüm, YAST, varsayılan seçim (veya benim durumumda OpenSuse 13.1'i yüklemek için kullandığınız seçim) YAST, "sessiz showopts" sonrası "iommu = pt" kullanarak önyükleyiciyi düzenlemekti.

Örneğin:

"resume = / dev / disk / kullanıcı kimliği / ata-Hitachi_HDS721010CLA332_JP2921HQ1076NA-part2 splash = sessiz sessiz gösteriler iommu = pt"

Artık tüm USB portlarım 2.0 ve 3.0 çalışıyor ve internet ağım da çalışıyor! Ayrıca, IOMMU’nun BIOS’ta etkin olduğundan emin olun.


1

Dün bu sorunu ASUSTek M5A99X anakartıma Ubuntu kurarken aldım. Amacım, Ubuntu'yu USB bellekten UEFI modunda yeniden kurmak, IOMMU algılamasını OS tarafından düzeltmekti (sistemim “Eski BIOS” modu ile kuruldu, bunun bir sebep olabileceğini düşündüm).

Daha önce, Ubuntu'yu USB çubuğundan yükleyerek denedim. Legacy ile para cezası, UEFI her zaman bir sorun oldu - klavyem / farem / Wifi'im yükleyiciye girerken düzgün çalışmıyordu (yalnızca güç) ya da yükleyici UI'yi konsolda iletilerle yükleyemiyordu:

  • (…) device descriptor read/64, error -32 (her USB cihazı için)
  • (…) unable to find a live medium containing a live file system(sopadan 5-6 dakika okuduktan sonra). Bu hatanın USB bellek türünü “Sabit Diski Zorla” olarak değiştirmesiyle ilgili bir geçici çözümü vardır, ancak önyükleme sistemi kurulumdan sonra başka sorunlara neden olmuştur.

Sorunların “Unetbootin” veya “Startup Disk Creator” dan kaynaklandığını düşünüyordum - değil. BIOS'taki tüm ayarları denemek için 2 saatten fazla zaman harcadım ( benimki IOMMU Controllerveya xHCI Handoffayarlarım yok ), ancak tek yardımcı oldu - BIOS'u yükseltmek anakart modelim için Asus web sitesinden indirilen ROM dosyasıyla en yeni sürüme . Yazılım çubuğunu flaşlamak için USB belleğindeki ROM dosyasını çıkartıp kopyalamak ve “EZ Flash yardımcı programını” (BIOS'ta) kullanmak kolaydır.

Bunu yapmak, sahip olduğum her türlü hatayı düzeltti; UEFI modunda Ubuntu'yu kurup kullanabildim. Dahası, IOMMU artık Ubuntu tarafından sihirli bir şekilde problemsiz olarak algılanıyor. Bu, sorunlarımın USB 2.0 / 3.0 desteği ve IOMMU desteği ile ilgili BIOS üretici yazılımı hatalarından kaynaklandığı anlamına geliyor. (IOMMU'ya ihtiyacınız yoksa bunu “Gelişmiş” bölümünde devre dışı bırakmalısınız, çünkü bu yaygın bir şey değildir).

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.