जब UEFI / BIOS में काम करता है तो USB लिनक्स में काम क्यों नहीं कर रहा है?


31

पृष्ठभूमि के लिए मैंने आधुनिक हार्डवेयर सहित एक नई मशीन का निर्माण किया है:

  • AMD FX-8350
  • गीगाबाइट GA-990FXA-UD3 मदरबोर्ड
  • 16 जीबी रैम
  • एनवीडिया जीटीएक्स 650 टीआई
  • किंग्स्टन SSD

यह देखते हुए, मैंने SSD पर लिनक्स के विभिन्न संस्करणों को स्थापित करने का प्रयास किया और लगभग हर बार विफलता से मिला। मैंने USB थंब ड्राइव से आर्क, डेबियन स्टेबल, डेबियन साइड और उबंटू 12.10 स्थापित करने की कोशिश की, लेकिन जब BIOS ने USB ड्राइव को देखा और उससे बूट करना शुरू कर दिया, जैसे ही OS ने USB डिवाइस को एन्यूमरेट करने का प्रयास किया, मैंने सभी USB कार्यक्षमता खो दी (बूट डिवाइस सहित)।

आखिरकार मैंने एक डीवीडी जला दी और एसएसडी पर उबंटू 12.10 स्थापित किया। यह ध्यान दिया जाना चाहिए कि मेरे यूएसबी कीबोर्ड (और माउस) अमेरिकी मेगाट्रेंड्स यूईएफआई / BIOS में ठीक काम करते हैं। यहां तक ​​कि जब मैं लाइव उबंटू डीवीडी पर प्री-इंस्टॉलेशन मेनू में हूं तो कीबोर्ड ठीक काम करता है।

जैसे ही लिनक्स बूट होता है (या तो लाइव डीवीडी या एसएसडी से) मैं सभी यूएसबी कार्यक्षमता खो देता हूं और केवल पीएस / 2 कीबोर्ड का उपयोग करके ओएस को नेविगेट कर सकता हूं।

मैं dmesg / syslog में जो कुछ failed to load microcode amd_ucode/microcode_amd_fam15h.binदेख रहा हूं वह " " के बारे में कुछ पंक्तियां हैं और मैं USB उपकरणों को आरंभ करने में विफल देख सकता हूं।

अगर मैं ऐसा करता हूं तो lsusbमैं सभी USB होस्ट नियंत्रकों को देख सकता हूं लेकिन कोई भी डिवाइस नहीं। एक कर lspciपता चलता है मुझे सभी हार्डवेयर मैं उम्मीद थी। और lsmodI करने से कोई भी USB मॉड्यूल लोड नहीं होता है ( usb_ehciउदाहरण के लिए)।

मैंने noapicकर्नेल बूट स्ट्रिंग में जाने की कोशिश की और इसका इस समस्या पर कोई प्रभाव नहीं पड़ा।

मदरबोर्ड यूएसबी 3.0 का समर्थन करता है लेकिन सभी डिवाइस जिन्हें मैंने सामान्य यूएसबी 2.0 पोर्ट में प्लग किया है।

मैं लिनक्स में काम करने से USB (और मेरे ऑन-बोर्ड नेटवर्क कार्ड) को मारने / रोकने से रोकने के बजाय इस पर चकित हूँ । BIOS में काम करने वाले इन उपकरणों में से किसी के साथ कोई समस्या नहीं लगती है और मेरे पास काम करने और देखने के लिए विंडोज इंस्टॉलेशन उपलब्ध नहीं है।

मैं पहले ही RMA को एक बार मदरबोर्ड पर रख चुका हूं, लेकिन दूसरे का व्यवहार बिल्कुल वैसा ही है, इसलिए मुझे लगता है कि मैं सुरक्षित रूप से हार्डवेयर विफलता को नियंत्रित कर सकता हूं (क्योंकि व्यवहार समान है, मुझे नहीं लगता कि मुझे दो पहचानने वाले दोषपूर्ण बोर्ड मिल रहे हैं यह एक लिनक्स समस्या होने की बाधाओं से अधिक है)।

मैं USB प्राप्त करने के लिए और क्या प्रयास कर सकता हूं (और आदर्श रूप से मेरा नेटवर्क, लेकिन हम अभी के लिए USB से चिपके रहेंगे) काम कर रहे हैं?

# 1 संपादित करें:

चूंकि मेरे पास कोई नेटवर्किंग नहीं है इसलिए मैं dmesgयहां से केवल दिलचस्प बिट्स संबंधित कर सकता हूं ।

मेरी रुचि के अनुसार dmesgमैं 11 USB होस्ट कंट्रोलर (OHCI, EHCI, और xHCI) देख सकता हूं। यह मेरे USB उपकरणों का पता लगाता है और फिर तुरंत निम्नानुसार विफल रहता है:

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

यह कई बार संख्या को बढ़ाता है और अन्य USB होस्ट नियंत्रकों की कोशिश करता है, जब तक कि यह OHCI नियंत्रकों पर वापस नहीं आ जाता है, जो विफल भी होते हैं लेकिन एक अतिरिक्त संदेश है:

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

मुझे लगता है कि मेरी नेटवर्किंग समस्याओं को इस तथ्य के साथ करना होगा कि मेरे पास मेरे राउटर पर आईपीवी 6 सक्षम नहीं है और यह एक समस्या लगती है

eth1: no IPv6 routers present

# 2 संपादित करें:

lspci -vvvदिखाता है कि मेरे नेटवर्क एडेप्टर (ऑनबोर्ड और विस्तार दोनों) रियलटेक सेमीकंडक्टर (कोई आश्चर्य की बात नहीं) हैं; RTL8111 / 8168B और RTL8169 / 8110 क्रमशः। मेरे USB कंट्रोलर Etron Technology EJ168 (xHCI) और AMD nee ATI SB7x0 / SB8x0 / SB9x0 (EHCI और OHCI) हैं

अब डेबियन चल खरखरा modprobeशो usb_common, usbcore, xhci_hcd, ehci_hcd, और ohci_hcdसभी लोड और कामकाज।


माइक्रोकोड लोड करने में विफलता अजीब लगती है। मैं इस बारे में सोच रहा हूं कि मदरबोर्ड अभी तक समर्थित नहीं है या माइक्रोकोड पैकेज गायब है।
TNW

ऐसा लगता है कि यह समस्या दूर हो सकती है ( butterflyofdream.wordpress.com/2012/09/10/… ) क्योंकि यह CPU थोड़ी देर के लिए बाहर हो गया है और ऐसे पैकेज हैं जो माइक्रोकोड को अपडेट करते हैं। हालाँकि, मैं सोच रहा हूँ कि USB को लिनक्स में काम करने से कैसे रोका जाएगा जब USB बिना किसी समस्या के BIOS में काम करता है। इसके अलावा, जब तक मैं यह पता लगा सकता हूं कि नेटवर्क डिवाइस कनेक्ट क्यों नहीं होता है या तो मैं पैच को लागू करने में सक्षम नहीं होगा (हालांकि एक ऐड-इन कार्ड मुझे आज रात को शासन करने दे सकता है)।
ब्रायन्स

1
मैं बल्कि कहूंगा कि यह विपरीत तरीके से अजीब होगा। BIOS जो कि मदरबोर्ड पर हर चीज का समर्थन करने वाला है, उसे काम करना है। लिनक्स की तरह नहीं है। BIOS अक्सर सरलीकृत तरीके से उपकरणों का समर्थन करता है, उदाहरण के लिए ग्राफिक्स कार्ड के लिए VBE - जबकि आप उन्हें या नियमित रूप से GPU ड्राइवरों का उपयोग नहीं करना चाहेंगे।
टीएनडब्ल्यू

तो क्या मेरे लिए लिनक्स को USB और नेटवर्क नियंत्रकों के लिए उपकरणों का प्रबंधन करने के लिए लिनक्स को मजबूर करने का एक तरीका है जब तक कि लिनक्स कर्नेल में समर्थित (बेहतर?) हैं।
ब्रायनएस

मुझे ऐसा नहीं लगता। वे दिन जब BIOS के माध्यम से सभी डिवाइस एक्सेस किए गए थे, लंबे समय से चले गए हैं। हालाँकि, मैं आपको आश्वस्त नहीं कर सकता कि समस्या ड्राइवरों की कमी के कारण है। क्या आपको USB से संबंधित मॉड्यूलों में कुछ दिलचस्प लगा dmesg, कोशिश की गई modprobe?
TNW

जवाबों:


25

मुझे ubuntuforums.org पर इस सूत्र ( http://ubuntuforums.org/showthread.php?t=2114055 ) से जवाब मिला ।

यह नए गीगाबाइट मेनबोर्ड के साथ लगता है (कम से कम) एक BIOS विकल्प है जिसे IOMMU Controllerडिफ़ॉल्ट रूप से अक्षम किया गया है और इसके लिए कोई सुराग या संकेत नहीं देता है कि यह क्या है।

इस सेटिंग को सक्षम करना और "जादुई रूप से" रीबूट करना मेरे सभी USB और नेटवर्किंग समस्याओं को 64-बिट लिनक्स ओएस (कोई फर्क नहीं पड़ता) में पुनर्स्थापित करता है।

मैं बल्कि हैरान और अभिभूत हूं कि यह इतनी सरल खोज के लिए एक लंबी खोज थी।

आपकी मदद और सुझावों के लिए सभी को धन्यवाद। उम्मीद है कि दूसरों को यह मददगार लगेगा।

अपडेट: मैं बस यह जोड़ना चाहूंगा कि मेरी वर्तमान BIOS सेटिंग्स में IOMMU नियंत्रक के अलावा XHCI हैंडऑफ और EHCI हैंडऑफ को सक्षम करना भी शामिल है। दूसरों ने भी इसका उल्लेख किया है और उन दो हैंडऑफ़ को सक्षम करने से मेरे यूएसबी 3.0 पोर्ट को भी अपेक्षित रूप से कार्य करने की अनुमति मिलती है।


1
मैं बताता हूं कि मेरे लिए भले ही IOMMU चालू करना मेरे लिए काम कर रहा हो, लेकिन इसने मेरे सभी आंतरिक USB 3 पोर्ट को निष्क्रिय कर दिया। इसके अलावा, मैं पहले ईथरनेट पोर्ट के साथ कुछ मुद्दों का सामना कर रहा था, लेकिन उन मुद्दों पर IOMMU को चालू कर रहा था।
रॉबी

क्या आपने USB 3.0 पोर्ट को ठीक करने के लिए xHCI हैंडऑफ को सक्षम करने का प्रयास किया?
स्टुअर्ट पी। बेंटले

@ StuartP.Bentley हाँ xHCI और eHCI हैंडऑफ़ सेटिंग्स IOMMU नियंत्रक के साथ-साथ सक्षम हैं। यह मेरे यूएसबी 3.0 पोर्ट को सक्षम करता है लेकिन जो भी कारण से मेरे यूएसबी कीबोर्ड को BIOS या ग्रब स्क्रीन में काम करने में सक्षम नहीं करता है - हालांकि मेरा यूएसबी माउस करता है (आंकड़ा)। मेरे पास एक दूसरा PS / 2 स्टाइल कीबोर्ड है जो पूरी तरह से BIOS में बूट करने के लिए प्लग किया गया है।
ब्रायनस

इससे अधिक और भी है। यदि आप सभी ubuntu मंचों के माध्यम से अपना रास्ता बनाते हैं, तो आप पाते हैं कि IOMMU DIS के साथ बूट लोडर सेटिंग की सिफारिश की गई है ("iommu = soft") । मेरे GB 990FXA-UD3 को सक्षम करने के लिए चूक और मैं अपने बाहरी USB3 हब का उपयोग नहीं कर सका। बॉटम लाइन: यह आपकी समस्या को हल नहीं कर सकता है। यदि नहीं, तो googling रखें।
ब्रूस

USB2.0 के साथ सर्वश्रेष्ठ प्रदर्शन के लिए BIOS में EHCI हैंडऑफ को अक्षम करने की सिफारिश की गई है।
मार्क.2377

5

मैंने अभी अपने GA-990FXA-UD7 के साथ सीखा, कि USB 2.0 और USB 3.0 कंट्रोलर और ऑनबोर्ड ईथरनेट कंट्रोलर दोनों के लिए लिनक्स में ठीक से काम करने के लिए (मैं मिंट 17.1 का उपयोग कर रहा हूँ) इसके लिए BIOS में निम्न सेटिंग्स की आवश्यकता थी:

  • xHCI हैंडऑफ - सक्षम
  • EHCI हैंडऑफ - सक्षम
  • IOMMU नियंत्रक - सक्षम

UEFI को अक्षम करना और सभी बूट विकल्पों को "लिगेसी ओनली" में बदलना न भूलें।

अगर आपको वास्तव में HDD> 2.2TB क्षमता से बूट करने की आवश्यकता है, तो आपके हाथों पर एक अलग समस्या हो सकती है।

मैं अपने बूट ड्राइव के लिए एक 256GB SSD और 3TB HDDs की एक जोड़ी का उपयोग कर रहा हूँ RAID 1 (मिरर) सरणी में / मेरे घर के लिए mdadm का उपयोग करके और सभी अच्छी तरह से काम कर रहे हैं।

गीगाबाइट बोर्डों के साथ काम करने के बाद, मुझे पता है कि 990FXA-UD5 और 990FXA-UD3 बोर्ड में बहुत समान BIOS है, इसलिए यह संभव है कि यह उन बोर्ड के साथ भी लागू होगा।


मुझे खुशी है कि यह आपके लिए काम कर रहा है। मेरे पास आपके सेटअप (256GB SSD + मिरर 3TB ड्राइव के लिए / u (/ home)) है। मेरा USB3 पोर्ट काम करता है, लेकिन USB3 हब एक से लटका हुआ नहीं है। (ठीक है, मैं इस पर एक अंगूठे ड्राइव का उपयोग कर सकता हूं, लेकिन कीबोर्ड या माउस नहीं।)
ब्रूस

iommu=soft"विरासत केवल" को सक्षम किए बिना xHCI + eHIC हैंडऑफ और IOMMU नियंत्रक (सभी सक्षम) के साथ संयोजन के रूप में। फुल स्पीड बूट, EFI और witout iommu या usb3 रूट डिवाइस मुद्दों पर आर्क लिनक्स।

इस संबंधित Askubuntu उत्तर पर एक नज़र डालें ।
पाब्लो ए

4

अजीब तरह से पर्याप्त है, भले ही मेरे पास लगभग समान सेटअप (समान मदरबोर्ड, एफएक्स 8350 प्रोसेसर) है, जिससे आईओएमएमयू को सक्षम करने से मेरे लिए कोई फर्क नहीं पड़ा। फिर भी कोई USB, नेटवर्किंग, आदि।

हालाँकि, मदद क्या थी , कर्नेल कमांड लाइन में "iommu = soft" जोड़ रहा था। अब यह सब ठीक काम करता है (इसके अलावा, कुछ अजीब कारण से, मेरा लॉजिटेक ज़ोन टच माउस काम नहीं करता है)।


1
वे कभी भी एक जैसे नहीं होते। यहां तक ​​कि विनिर्माण तिथियों में केवल कुछ हफ्तों का अंतर एक सामान्य मदरबोर्ड घटक और / या सुपरियो संशोधन के लिए एक नया स्रोत हो सकता है। सर्किट बोर्ड निर्माण कंप्यूटिंग के छायादार अंडरबेली है।
चाटुकार

3

FYI करें, तकनीकी कारण कि लिनक्स "BIOS के माध्यम से" उपकरणों का उपयोग क्यों नहीं कर सकता है: एक बार जब ओएस "संरक्षित मोड" (32-बिट) या "लॉन्ग मोड" (64-बिट) में परिवर्तित हो जाता है, तो यह अब इंटरप्ट नहीं भेज सकता है BIOS को। "वास्तविक मोड" में (बूट पर 16-बिट), यह BIOS इंटरप्ट को रीड डिस्क, कीबोर्ड इनपुट, आदि के लिए कॉल कर सकता है।

लेकिन यह भी डाउनसाइड मिला है। एक के लिए, आपके पास पता योग्य मेमोरी का मेगाबाइट भी नहीं है। तो आधुनिक ओएस के स्विच ऑफ रियल मोड लगभग पहली बात। (वास्तव में, मुझे विश्वास है कि इससे पहले कि कर्नेल लोड हो जाए, यह सुरक्षित मोड पर ग्रब स्विच करता है)।

अधिक जानकारी: http://wiki.osdev.org/Real_Mode http://wiki.osdev.org/Protected_Mode


2

मुझे वही MB (लेकिन 8-कोर) समान MB (Rev 3) समान मात्रा में RAM (Kingston) मिला है

IOMMU के साथ टिप ने थोड़ी मदद की - सभी बंदरगाहों में एक usb कीबोर्ड, एक मॉनिटर USB- हब और एक usb (Realtek) वाईफाई एडॉप्टर देख सकते हैं, लेकिन कोई फ्लैश ड्राइव नहीं।

ऐसा लगता है, कि इस समाधान ने मेरी मदद की:

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

आपको 0000: 00: xx.x प्रारूप वाली फ़ाइल दिखाई देगी। निम्न आदेश निष्पादित करें:

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

अपनी फ़ाइल पर प्रदर्शित संख्याओं के साथ xx.x बदलें। इसे ehci_hcd को अक्षम करना चाहिए।

अब आप ehci_hcd को अक्षम करने के लिए निम्न स्क्रिप्ट का उपयोग कर सकते हैं।

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
यदि आप पाठ में यहां एक समाधान प्रदान करते हैं, तो यह अधिक उपयोगी होगा , और केवल पृष्ठभूमि जानकारी और गैर-आवश्यक विवरण के लिए लिंक का उपयोग करें। उसके बिना, आपके लिंक के अमान्य हो जाने के बाद आपके उत्तर का कोई मूल्य नहीं है।
एंथन

जैसे किसी एक उपयोगकर्ता ने आपके द्वारा दिए गए लिंक में टिप्पणी की, "यह ठीक नहीं है। इसका मतलब है कि आप अपनी ड्राइव का उपयोग पूरी गति से नहीं कर रहे हैं। यह एक गंभीर अंग पर बैंड-सहायता लगाने जैसा है।"
उत्साही

2

इन चरणों ने मेरे लिए एक GIGABYTE 970A-DS3P और AMD-FX-8320 उबंटू 15.04 के साथ काम किया

  • xHCI हैंडऑफ - सक्षम
  • EHCI हैंडऑफ - सक्षम
  • IOMMU नियंत्रक - सक्षम
  • यूईएफआई - विकलांग
  • सभी बूट विकल्प - केवल लिगेसी

2

मेरे पास एक ही fx8350 एक गीगाबाइट 990FXA-UD3 पर ओपनस्यूस 13.1 का उपयोग करके चल रहा है। मेरे लिए काम करने वाला समाधान YAST का उपयोग करके बूटलोडर को संपादित करना था, डिफ़ॉल्ट चयन (या आप मेरे मामले में OpenSuse 13.1 को लोड करने के लिए उपयोग कर रहे हैं), "शांत शोपीस" के बाद "iommu = pt"।

उदाहरण के लिए:

"फिर से शुरू / / देव / डिस्क / बाय-आईडी / अता-हिताची_एचडीएस 721010CLA332_JP2921HQ1076NA-part2 छप = चुप चुप शोपीस iommu = pt"

अब मेरे सभी यूएसबी पोर्ट 2.0 और 3.0 काम कर रहे हैं और मेरी इंटरनेट नेटवर्किंग भी काम कर रही है। यह भी सुनिश्चित करें कि IOMMU BIOS में सक्षम है।


1

कल मुझे अपने ASUSTek M5A99X मदरबोर्ड पर उबंटू स्थापित करते समय यह समस्या हुई। मेरा उद्देश्य उबंटू में यूएसबी स्टिक से उबंटू को फिर से स्थापित करना था, ओएस द्वारा आईओएमएमयू का पता लगाने के लिए (मेरा सिस्टम "लीगेसी BIOS" मोड के माध्यम से स्थापित किया गया था, मुझे लगा कि यह एक कारण हो सकता है)।

पहले, मैंने कोशिश की थी कि यूएसबी स्टिक से उबंटू स्थापित करके। लीगेसी के साथ ठीक, यूईएफआई हमेशा एक समस्या थी - या तो मेरा कीबोर्ड / माउस / वाईफ़ाई इंस्टॉलर में प्रवेश करते समय ठीक से (केवल शक्ति) काम नहीं कर रहा था, या इंस्टॉलर संदेशों में यूआई को कंसोल में लोड करने में विफल हो रहा था:

  • (…) device descriptor read/64, error -32 (प्रत्येक USB डिवाइस के लिए)
  • (…) unable to find a live medium containing a live file system(छड़ी से पढ़ने के 5-6 मिनट बाद)। इस त्रुटि में USB स्टिक प्रकार को "फोर्स हार्ड डिस्क" में बदलने के साथ एक वर्कअराउंड है, लेकिन बूटिंग सिस्टम अन्य समस्याओं के कारण बाद में स्थापित होता है।

मैं सोच रहा था कि मुद्दे "Unetbootin" या "स्टार्टअप डिस्क निर्माता" से हैं - वे नहीं हैं। BIOS में सभी सेटिंग्स (मेरे पास IOMMU Controllerया xHCI Handoffमेरे पास सेटिंग्स नहीं है ) की कोशिश करने पर 2 घंटे से अधिक समय बिताया , लेकिन केवल एक चीज ने मदद की - मेरे मदरबोर्ड मॉडल के लिए Asus वेबसाइट से डाउनलोड की गई ROM फ़ाइल के साथ नए संस्करण में BIOS को अपग्रेड करना । USB स्टिक पर ROM फ़ाइल को खोलना और कॉपी करना और फर्मवेयर को फ्लैश करने के लिए "EZ फ्लैश यूटिलिटी" (BIOS में) का उपयोग करना आसान है।

इस तरह की सभी प्रकार की त्रुटियों को मैंने ठीक किया; मैं यूईएफआई मोड में उबंटू को स्थापित और उपयोग करने में सक्षम था। अब, IOMMU को उबंटू द्वारा जादुई रूप से बिना किसी परेशानी के पहचाना जाता है। इसका मतलब है, मेरी समस्याएं USB 2.0 / 3.0 समर्थन से संबंधित BIOS फर्मवेयर बग्स, और IOMMU समर्थन के कारण थीं। (यदि आपको IOMMU की आवश्यकता नहीं है, तो आपको इसे "उन्नत" अनुभाग में अक्षम करना चाहिए क्यूज यह एक सामान्य बात नहीं है)।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.