ASUS लैपटॉप के इंटेल ईथरनेट नियंत्रक I219-V की गैर-वाष्पशील मेमोरी (NVM) के चेकसम की मरम्मत कैसे करें?


5

मुझे एक नए ASUSPRO B8430UA लैपटॉप के साथ एक समस्या है : इसका इंटेल ईथरनेट कनेक्शन I219-V लिनक्स के तहत काम नहीं करता है। वास्तव में, मैंने इस मॉडल के दो अलग-अलग लैपटॉप की कोशिश की, और दोनों में एक ही समस्या थी।

उपयोग किया गया Linux ड्राइवर e1000e है , यह लिनक्स के दौरान निम्नलिखित संदेश उत्पन्न करता है (Ubuntu 16.04) बूट:

$ dmesg | grep e1000e 
[ 5.643760] e1000e: Intel(R) PRO/1000 Network Driver - 3.2.6-k 
[ 5.643761] e1000e: Copyright(c) 1999 - 2015 Intel Corporation. 
[ 5.644308] e1000e 0000:00:1f.6: Interrupt Throttling Rate (ints/sec) set to dynamic conservative mode 
[ 5.877838] e1000e 0000:00:1f.6: The NVM Checksum Is Not Valid 
[ 5.907340] e1000e: probe of 0000:00:1f.6 failed with error -5 

मैंने e1000e का नवीनतम संस्करण 3.3.4 स्थापित करने की कोशिश की है , लेकिन इससे मदद नहीं मिली (मैंने कर्नेल को दागी है, हालांकि)।

मैंने e1000-devel मेलिंग सूची पर इस बारे में सवाल उठाए हैं , और यह सलाह दी गई कि मैं अपने लैपटॉप निर्माता से संपर्क करूं, क्योंकि "एनवीएम चेकसम इज़ नॉट वैलिड" का अर्थ है कि मेरी ईथरनेट चिप की गैर-वाष्पशील मेमोरी की सामग्री दूषित है, या कम से कम यह चेकसम से मेल नहीं खाता (दुर्भाग्य से, मैं एक विशेषज्ञ नहीं हूं और इसे अधिक सटीक रूप से नहीं समझा सकता हूं)।

मैंने इंटेल कस्टमर सपोर्ट को प्रश्न दिया है, और उन्होंने उत्तर दिया कि वे OEM सिस्टम (लैपटॉप में ऑन-बोर्ड ईथरनेट चिप्स) का ध्यान नहीं रखते हैं और मुझे ASUS से संपर्क करना चाहिए:

दुर्भाग्य से जैसा कि आपका सिस्टम ओईएम है हमारे समर्थन विकल्प बेहद सीमित हैं। लैपटॉप निर्माता ने सॉफ़्टवेयर या हार्डवेयर को बदल दिया है और यही कारण है कि ऐसे सिस्टम के लिए समर्थन और ड्राइवर सीधे लैपटॉप निर्माता द्वारा प्रदान किए जाते हैं।

मैंने एएसयूएस ग्राहक सहायता से संपर्क किया है, लेकिन उन्होंने उत्तर दिया कि उनके पास एनवीएम की सामग्री की जांच या पुन: संचालन के लिए कोई उपकरण नहीं है, और अगर मुझे ऐसे उपकरण मिलते हैं, तो उन्हें इसके बारे में जानकर खुशी होगी। उन्होंने यह भी समझाया कि वे केवल मूल हार्डवेयर और सॉफ़्टवेयर कॉन्फ़िगरेशन का समर्थन करने वाले हैं, और यह लैपटॉप मॉडल विंडोज 7 के साथ बेचा जाता है। विंडोज 7 के तहत मेरा ईथरनेट ठीक काम करने लगता है। मैंने जो सीखा है, उसके अनुसार, विंडोज केवल एनवीएम चेकसम की जांच नहीं करता है।

मैंने पाया है कि 2011 में इसी तरह के एक मामले में, इंटेल ईथरनेट कनेक्शन बूट उपयोगिता का उपयोग करके समस्या को ठीक किया जा सकता है :

https://thesorcerer.wordpress.com/2011/07/01/guide-intel-82573l-gigabit-ethernet-with-ubuntu-11-04-and-fix-pxe-e05/

हालाँकि, अंतिम पैराग्राफ में अस्वीकरण चेतावनी देता है:

आपको शायद यह पता होना चाहिए कि इंटेल (R) ईथरनेट कनेक्शंस बूट यूटिलिटी WAS को बोर्ड पर इस्तेमाल करने के लिए डिज़ाइन नहीं किया गया है (OEM के रूप में भी जाना जाता है) lan कार्ड (PCI कार्ड के लिए है) इसलिए इसका अनुमान लगाने का कोई निश्चित तरीका नहीं है USB या SOUND नियंत्रकों जैसे बोर्ड घटकों पर अन्य।

BootUtil संस्करण 1.6.13.0 का वर्णन यह भी कहता है कि यह ऑन-बोर्ड ईथरनेट कंट्रोलर्स के साथ उपयोग करने के लिए बिल्कुल ठीक नहीं है:

Intel (R) इथरनेट फ्लैश फ़र्मवेयर यूटिलिटी (BootUtil) एक यूटिलिटी है जिसका उपयोग समर्थित Intel PCI और PCI-Express- आधारित नेटवर्क एडेप्टर की फ्लैश मेमोरी पर PCI विकल्प ROM को प्रोग्राम करने और कॉन्फ़िगरेशन को अपडेट करने के लिए किया जा सकता है।

[...]

ओईएम ओईएम नेटवर्क एडेप्टर के लिए कस्टम फ्लैश फर्मवेयर इमेज दे सकते हैं। कृपया ओईएम द्वारा दिए गए निर्देशों का संदर्भ लें।

हालांकि एक पैराग्राफ है जो मुझे समझ नहीं आया:

पीएक्सई + ईएफआई और आईएससीएसआई + ईएफआई छवि संयोजन सभी ओईएम जेनेरिक एडेप्टर के लिए समर्थित हैं, हालांकि समर्थन उन उपकरणों तक सीमित है जो असतत छवियों के रूप में दोनों प्रौद्योगिकियों का समर्थन करते हैं।

2008 के अंक में टिप्पणी के अलावा, एक NV1000 ड्राइवर बग के कारण NVM दूषित हो रहा था , यह सलाह दी जाती है:

कृपया इस मुद्दे को ठीक करने की कोशिश करने के लिए वेब पर कुछ साइटों के रूप में ibautil न चलाएं। यह संभवतः आपको LAN कार्यक्षमता प्राप्त करने के लिए अपने मदरबोर्ड को बदलने के लिए प्रेरित करेगा।

IBAUTIL BootUtil के पूर्ववर्तियों में से एक है।

किसी भी स्थिति में, मैंने "सिस्टम में पाए जाने वाले सभी समर्थित इंटेल नेटवर्क बंदरगाहों की सूची" प्राप्त करने के लिए कमांड-लाइन विकल्पों के बिना लिनक्स के तहत बूटयूटिल को चलाने का फैसला किया। यह मेरे पास है:

$ sudo ./bootutil64e

Intel(R) Ethernet Flash Firmware Utility
BootUtil version 1.6.13.0
Copyright (C) 2003-2016 Intel Corporation

Type BootUtil -? for help

Port Network Address Location Series  WOL Flash Firmware                Version
==== =============== ======== ======= === ============================= =======
  1   D017C2201F59     0:31.6 Gigabit N/A FLASH Not Present

मैं यह समझना चाहूंगा कि इस संदर्भ में "फ्लैश नॉट प्रेजेंट" का क्या मतलब है, और चेकसम को ठीक करने के लिए मेरे पास क्या विकल्प हैं।


अपडेट 1. मुझे "FLASH Not Present" के बारे में e1000-devel मेलिंग सूची से प्राप्त एक टिप्पणी के अनुसार ,

फ्लैश और एनवीएम दो अलग-अलग आइटम हैं। फ्लैश पीएक्सई बूटिंग और आईएससीएसआई जैसी चीजों को सक्षम करता है जबकि एनवीएम नेटवर्क एड्रेस जैसी चीजों को स्टोर करता है।


अद्यतन 2. मैं इंटेल पाया है डेटापत्रक I219 के लिए, धारा 10.3.2.2 Checksum पद गणना का कहना है:

चेकसम शब्द (वर्ड 0x3F, NVM बाइट्स 0x7E और 0x7F) का उपयोग यह सुनिश्चित करने के लिए किया जाता है कि आधार NVM छवि एक वैध छवि है। इस शब्द के मूल्य की गणना इस तरह की जानी चाहिए कि सभी शब्दों (0x00- 0x3F) / बाइट्स (0x00-0x7F) को जोड़ने के बाद, चेकसम शब्द सहित, योग 0xBABA होना चाहिए। 16 बिट समेट रजिस्टर में प्रारंभिक मान 0x0000 होना चाहिए और कैरी बिट को प्रत्येक जोड़ के बाद नजरअंदाज किया जाना चाहिए।


क्या आपने ड्राइवर के बाहर चेकसम सत्यापन को पैच करने की कोशिश की है?
यूजेन रीक जूल

नहीं, मैं नहीं। जहां तक ​​मैंने समझा है, यह काम करने की उम्मीद है; हालाँकि, इस तरह की व्यवस्था को बनाए रखना मेरे लिए बहुत परेशानी की बात होगी, और यह मूल कारण को ठीक नहीं करेगा।
एलेक्सी

मेरे पास सर्वरों के लिए एनवीआरएएम कार्ड हैं, जिन्हें हर कर्नेल अपडेट पर एक पैच की आवश्यकता होती है, और एक साधारण डीकेएमएस स्क्रिप्ट ने इसे हल किया, बस अपग्रेड मिलता है और यह रिबूट पर काम करता है। मुझे नहीं लगता कि मूल कारण निश्चित है: IIUC में आपके पास केवल एनवीएम नहीं है, क्योंकि इसकी आवश्यकता नहीं है यदि आप केवल ओएस से अपने एनआईसी का उपयोग करते हैं, जो ज्यादातर लैपटॉप के लिए सच है।
यूजेन रीक जूल

सलाह के लिए धन्यवाद, लेकिन मैं कर्नेल मॉड्यूल पैचिंग को स्क्रिप्ट करने में बहुत अधिक नहीं हूं। मुझे समझ में नहीं आता कि इसका क्या मतलब है कि "मेरे पास एनवीएम नहीं है" (यह कहां गायब हो जाएगा? न तो एएसयूएस और न ही इंटेल समर्थन ने इसका उल्लेख किया है?)। यदि यह वास्तव में ऐसा है, तो शायद e1000e को इस पर ध्यान देना चाहिए और चेकसम की जांच करने की कोशिश नहीं करनी चाहिए, क्या यह नहीं होना चाहिए?
एलेक्सी

1
Bootutil64e का आउटपुट और ड्राइवर संदेश मुझे लगता है, कि आपके ओईएम ने सिस्टम में केवल NVM का निर्माण नहीं करने के लिए चुना है, क्योंकि विंडोज चलाने वाली एक विशिष्ट लैपटॉप भूमिका के लिए इसकी आवश्यकता नहीं है।
यूजेन रिक जूल

जवाबों:


8

E1000-devel मेलिंग सूची से मदद के साथ , यहां बताया गया है कि मैंने NVM चेकसम शब्द का उपयोग करके कैसे तय किया ethtool

मूल रूप से, मैंने पहली बार e1000e को लिनक्स में ईथरनेट चिप तक पहुंच के लिए पाबंद किया, और फिर ethtoolअपने I219-V के NVM के "चेकसम" क्षेत्र से एक मान पढ़ने और फिर इसे वापस लिखने के लिए उपयोग किया। लेखन ऑपरेशन ने चेकसम को ठीक किया।

लिनक्स से मेरी इथरनेट चिप के लिए, मुझे NVM चेकसम सत्यापन को छोड़ने के लिए e1000e को पैच करना पड़ा । फ़ाइल में src/netdev.c, मैंने पहली पंक्ति बदल दी

for (i = 0;; i++) {
    if (e1000_validate_nvm_checksum(&adapter->hw) >= 0)
        break;
    if (i == 2) {
        dev_err(pci_dev_to_dev(pdev),
            "The NVM Checksum Is Not Valid\n");
        err = -EIO;
        goto err_eeprom;
    }
}

में

for (i = 0; false; i++) {

(पूरे ब्लॉक को सिर्फ हटाया या टिप्पणी की जा सकती है।)

फिर मैंने पैच वाले मॉड्यूल को स्थापित किया। से /srcनिर्देशिका मैंने किया था:

sudo make install
sudo modprobe -r e1000e
sudo modprobe e1000e
sudo update-initramfs -u
reboot

अब चेकसम सत्यापन को छोड़ दिया गया और ईथरनेट ने काम करना शुरू कर दिया।

चेकसम शब्द को ठीक करने से पहले, मैंने इंटेल के डेटाशीट की धारा 10 में प्रस्तुत I219 के एनवीएम की रूपरेखा पर ध्यान दिया । चेकसम शब्द का उपयोग धारा 10.3.2.2 में बताया गया है।

मैंने NVM को लिखने से पहले चेकसम शब्द नोट किया:

$ sudo ethtool -e enp0s31f6 offset 0x7e length 2
Offset      Values
------      ------
0x007e:     60 13 

( enp0s31f6मेरे ईथरनेट इंटरफ़ेस का नाम है।) इस प्रकार त्रुटिपूर्ण चेकसम शब्द मूल्य था 0x1360

मैंने NVM के डंप को sudo ethtool -e enp0s31f6देखा और फिर ऑफसेट 0x10 पर बाइट को फिर से देखा:

$ sudo ethtool -e enp0s31f6 offset 0x10 length 1
Offset      Values
------      ------
0x0010:     ff 

(स्पष्ट रूप से कोई भी स्थान करेगा, लेकिन मुझे बताया गया था कि मेरे मामले में ऑफसेट 0x10 पर मूल्य का उपयोग बिल्कुल नहीं किया गया था, इसलिए यह "सुरक्षित" लग रहा था।)

एनवीएम (EEPROM) के साथ लिखने के लिए ethtool, मुझे "जादू की कुंजी" की आवश्यकता थी। मैंने एक इंटेल प्रो / 1000 (e1000) नेटवर्क इंटरफ़ेस को अनब्रकिंग पढ़ा और पता लगाया कि मेरी मैजिक कुंजी का 0x15708086उपयोग किया जा रहा है lspci -nn:

$ lspci -nn | grep Ethernet
00:1f.6 Ethernet controller [0200]: Intel Corporation Ethernet Connection I219-V [8086:1570] (rev 21)

फिर मैंने 0xffNVM में 0x10 को ऑफ़सेट करने के लिए वापस लिखा :

$ sudo ethtool -E enp0s31f6 magic 0x15708086 offset 0x10 value 0xff

एनवीएम के डंप की तुलना लिखने से पहले और बाद में, मैं देख सकता था कि, उम्मीद के मुताबिक, केवल एक चीज जो बदल गई वह थी चेकसम शब्द:

$ sudo ethtool -e enp0s31f6 offset 0x7e length 2
Offset      Values
------      ------
0x007e:     60 93 

नया मान इस प्रकार था 0x9360

मैंने एक बेजोड़ e1000e के साथ एक कर्नेल बूट किया , और ईथरनेट पोर्ट ठीक काम किया।

PS मुझे यह थोड़ा चिंताजनक लगता है कि चेकसम शब्द में केवल उच्चतम बिट गलत था।


एनवीएम को लिखने योग्य बनाने के लिए, मुझे WriteProtectNVM=0अपने modprobe/ insmodकॉल में पैरामीटर जोड़ना होगा ।
fnl

2
मैं पुष्टि कर सकता हूं कि इस फिक्स ने e1000e संस्करण 3.5.3.3 के साथ डेस्कटॉप मदरबोर्ड आसुस मैक्सिमस IX हीरो पर उबंटू 16.04.1 में काम किया
जोनाथन वाई।

@JonathanY। जाहिरा तौर पर यह मदरबोर्ड खराब ड्राइवर चेकसम के साथ शिपिंग होता है, वही हार्डवेयर और प्रभावित पर भी।
Naftuli Kay

@NaftuliKay, आपको "ड्राइवर चेकसम" से क्या मतलब है? मुझे लगा कि LAN NVM की सामग्री "ड्राइवर" नहीं है, यह फर्मवेयर की तरह है। Intel के डेटाशीट में इसे "LAN छवि" या सिर्फ "LAN NVM" के रूप में जाना जाता है।
एलेक्सी

1
मैंने एक पायथन टूल विकसित किया है जो यह पुष्टि करता है कि एनवीएम चेकसम मान्य है। यह मान्य करना सुपर आसान नहीं है, इसलिए यह स्क्रिप्ट कम से कम आपको बताएगी कि आपका वैध है या नहीं। एफडब्ल्यूआईडब्ल्यू, बस लिखने के 0xffलिए 0x10मेरे चेकसम शब्द को वापस उछालने के लिए ऐसा है कि योग बराबर हो 0xbaba। आशा है कि यह अगले MAXIMUS IX हीरो उपयोगकर्ता की मदद करता है।
Naftuli Kay

6

मैंने bootutilअपने Asus Z270-A पर एक एकीकृत इंटेल एनआईसी पर इंटेल (2011 की पोस्ट में सुझाव के अनुसार) से लिनक्स के लिए उपयोग किया , इस त्रुटि को ठीक करने के लिए, बिना उत्थान के उत्तर में जादू और कीज़ के बिना। इसने बहुत अच्छा काम किया। मैंने Intel डाउनलोड साइट से टूल डाउनलोड किया

chmod +x ./bootutil64e
sudo ./bootutil64e -NIC 1 -defcfg

मुझे लगता है कि आप इस 2011 पोस्ट का मतलब है और आप अन्य उपयोगकर्ताओं को अपने जोखिम पर अंत में अस्वीकरण की उपेक्षा करने का सुझाव देते हैं। यह जानकर अच्छा लगा कि यह आपके लिए किसी भी मामले में काम करता है।
एलेक्सी

नहीं। यह 2011 की पोस्ट आउट ऑफ़ डेट है, आपसे DOS थंब ड्राइव बनाने के लिए कहता है, आदि आपको किसी भी ड्राइवर या थंब ड्राइव को फिर से बनाने की आवश्यकता नहीं है। आप बस उपकरण का उपयोग कर सकते हैं। यह "अपने जोखिम पर" है, लेकिन मुझे संदेह है कि बस वकीलों को संतुष्ट करना है।
चेस्टर विस्न्यूस्की

"नहीं" क्या है? क्या आप 2011 की एक अलग पोस्ट के बारे में बात कर रहे हैं?
एलेक्सी

यह सही तरीका है।
मैक्सिम Egorushkin

यह मेरे लिए एक थिंकपैड T60 पर काम किया
Cheloide

4

मुझे e1000eASUS ROG MAXIMUS IX HERO मदरबोर्ड के साथ ड्राइवर से फेडोरा 24 पर वही त्रुटि मिल रही थी जिसमें इंटेल I219-V एनआईसी एडाप्टर है।

मैं स्वीकृत समाधान ढूंढता हूं, जिसे NVM को पैच करने की आवश्यकता है, बहुत जोखिम भरा है। यह आपके हार्डवेयर को बेकार कर सकता है।

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

$ chmod +x bootutil64e
$ sudo ./bootutil64e -NIC=1 -DEFAULTCONFIG

बस इतना ही। बस रिबूट करें (या e1000eमैन्युअल रूप से ड्राइवर को फिर से लोड करें )।


क्या मैं सही ढंग से समझता हूं कि आपके पास एक डेस्कटॉप पीसी है और लैपटॉप नहीं है? मेरा प्रश्न ASUS लैपटॉप के बारे में था, क्योंकि bootutilइसका उद्देश्य OEM हार्डवेयर नहीं है। इसके अलावा, क्या आप अपने दावे को साबित कर सकते हैं कि ethtoolएनवीएम की मरम्मत के लिए उपयोग करने से हार्डवेयर बेकार हो सकता है?
अलेक्से

मुझे लगता है कि आप डेस्कटॉप पीसी के बारे में बात कर रहे थे, इसलिए -1, क्योंकि अप्रासंगिक।
अलेक्से

@Alexey इस डेस्कटॉप में आपके लैपटॉप की तरह ही I219-V NIC है। फिर से मूर्ख बनना बंद करो।
मैक्सिम एगोरुस्किन

1
मैंने अपना -1 निकाला।
एलेक्सी

1
बस इस बात की पुष्टि करने के लिए कि इस समाधान ने भी (डेस्कटॉप) आसुस आरओजी रैम्पेज एक्सट्रीम VI पर काम किया है। आपके उत्तर के लिए बहुत धन्यवाद, इसने मुझे बहुत सिरदर्द से बचाया।
dga

1

मेरे पास एक ही त्रुटि थी और एनवीएम बिट्स के साथ खेलने से पहले बाकी सब कोशिश करना चाहता था।

मुझे यकीन नहीं है कि इस समस्या को हल किया गया था, लेकिन इससे पहले कि मैंने इसे जादुई तरीके से काम करने से पहले आखिरी बार UEFI (IPv4) के साथ नेटवर्क पर बूट करने का प्रयास किया था । तब कुछ काले जादू ने मेरा एनवीएम तय कर दिया होगा।

वातावरण

  • मेनबोर्ड: Asus PRIME Z270-A (BIOS 0701)
  • एनआईसी: 00:1f.6 Ethernet controller [0200]: Intel Corporation Ethernet Connection (2) I219-V [8086:15b8]

1

प्रयत्न:

$ sudo ./bootutil64e -NIC=XXX -BOOTENABLE=DISABLED.

यह हाल के संस्करणों में चाल करना चाहिए bootutil64e


आप अपने समाधान के लिए एक संदर्भ प्रदान कर सकते हैं, कृपया? (यह काम करने के लिए अनुशंसित / सुरक्षित / अपेक्षित है।)
एलेक्सी

मुझे लगता है कि यह बहुत अच्छा काम करता है क्योंकि यह बदलने के लिए सरल विकल्पों में से एक है, लेकिन फिर भी एनवीएम चेकसम को पुनर्गणना करने के लिए पर्याप्त है। मैंने वेक-ऑन-लैन विकल्प का उपयोग किया है। एक, निश्चित रूप से, पहले WOL की स्थिति की जांच कर सकते हैं, फिर इसे फ्लिप कर सकते हैं और इसे मूल मूल्य पर वापस बदल सकते हैं।
वोडनी

0

मेरा समाधान बहुत अधिक सरल है:

- यूईएफआई BIOS उपयोगिता दर्ज करें;
- उन्नत मोड दर्ज करें
- उन्नत \ नेटवर्क स्टैक कॉन्फ़िगरेशन पर नेविगेट करें और बस नेटवर्क स्टैक को सक्षम करें (मैं केवल NAT के पीछे सुरक्षित रूप से रहने के लिए IPv4 को सक्षम करता हूं)।

रिबूट करें और अपने एनआईसी का आनंद लें। जाहिरा तौर पर यह किसी भी तरह खराब NVM चेकसम को साफ करने के लिए पर्याप्त है। फिर आप वापस जा सकते हैं और कहा स्टैक को अक्षम कर सकते हैं।
यह आसुस प्राइम z270 पर BIOS संस्करण 8001 के तहत है - एक मदरबोर्ड (आर्क लिनक्स पर कर्नल ड्राइवर, कर्नेल 4.9.1-1)।

शायद इस समस्या के कारण क्या हुआ कि मैंने फर्मवेयर को ईज़ी फ्लैश उपयोगिता के माध्यम से सीधे इंटरनेट पर अपडेट करने की कोशिश की (और डीएचसीपी और स्टेटिक आईपी मोड दोनों के लिए ऐसा करने में विफल रहा)। मुझे उपयोगिता याद है कि क्या यह अपडेट का प्रयास करने के लिए नेटवर्क स्टैक (जो डिफ़ॉल्ट रूप से बंद है) सक्षम कर सकता है।

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