WiFi: `iw reg सेट यूएस` का कोई प्रभाव नहीं है


13

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

रनिंग iw reg set USका कोई स्पष्ट प्रभाव नहीं है:

$ iw reg get
country 00: DFS-UNSET
    (2402 - 2472 @ 40), (6, 20), (N/A)
    (2457 - 2482 @ 40), (6, 20), (N/A), PASSIVE-SCAN
    (2474 - 2494 @ 20), (6, 20), (N/A), NO-OFDM, PASSIVE-SCAN
    (5170 - 5250 @ 160), (6, 20), (N/A), PASSIVE-SCAN
    (5250 - 5330 @ 160), (6, 20), (0 ms), DFS, PASSIVE-SCAN
    (5490 - 5730 @ 160), (6, 20), (0 ms), DFS, PASSIVE-SCAN
    (5735 - 5835 @ 80), (6, 20), (N/A), PASSIVE-SCAN
    (57240 - 63720 @ 2160), (N/A, 0), (N/A)
$ sudo iw reg set US
$ iw reg get
country 00: DFS-UNSET
    (2402 - 2472 @ 40), (6, 20), (N/A)
    (2457 - 2482 @ 40), (6, 20), (N/A), PASSIVE-SCAN
    (2474 - 2494 @ 20), (6, 20), (N/A), NO-OFDM, PASSIVE-SCAN
    (5170 - 5250 @ 160), (6, 20), (N/A), PASSIVE-SCAN
    (5250 - 5330 @ 160), (6, 20), (0 ms), DFS, PASSIVE-SCAN
    (5490 - 5730 @ 160), (6, 20), (0 ms), DFS, PASSIVE-SCAN
    (5735 - 5835 @ 80), (6, 20), (N/A), PASSIVE-SCAN
    (57240 - 63720 @ 2160), (N/A, 0), (N/A)

विषय पर व्यापक Googling के बाद, ऐसा लगता है कि जो होना चाहिए था iw reg setवह कर्नेल को एक udv घटना का उत्सर्जन करने का कारण बनता है, जिसके कारण crdaसंबंधित विनियामक जानकारी समाप्त हो जाती है और खांसी होती है। हालाँकि, जैसा कि मैं बता सकता हूँ udevadm, यह घटना कभी भी उत्सर्जित नहीं होती है। इस घटना की अनुपस्थिति निम्नलिखित कलुग द्वारा काम नहीं करने के कारण है:

$ sudo iw reg set US; sudo COUNTRY=US crda
Failed to set regulatory domain: -7

त्रुटि संदेश से है crda। कर्नेल वाईफाई विनियामक परिवर्तनों को तभी स्वीकार करेगा जब इसने उनके लिए एक udv घटना / अनुरोध का उत्सर्जन किया हो और प्रतिक्रिया की उम्मीद कर रहा हो। चूंकि crdaविफल रहता है, कर्नेल स्पष्ट रूप से यह उम्मीद नहीं कर रहा था, सुझाव है कि कोई udev घटना उत्सर्जित नहीं हुई थी।

WiFi इंटरफ़ेस एक Intel 7265D है; जिसका कर्नेल ड्राइवर है iwlmvm। मेरे पास crdaऔर wireless-regdbस्थापित है, और /etc/default/crdaइसमें शामिल है REGDOMAIN=USiwlmvmड्राइवर को हटाने और फिर से लोड करने का कोई प्रभाव नहीं पड़ता है।

क्या और अधिक की जाँच करने के लिए कोई सुझाव?


1
क्या आपने यह देखने के लिए कर्नेल लॉग की जाँच की है कि क्या कोई बदलाव किए गए थे? जैसा कि आप stdout पर हैं, मुझे वही आउटपुट मिल रहा है, लेकिन मेरे लॉग कहते हैं कि नियामक डोमेन वास्तव में अपडेट किया गया था।
सियारकोट

मैं dmesgआउटपुट या किसी भी लॉग में कुछ भी नहीं सुझा सकता हूं कि नियामक डोमेन को बदलने के लिए कोई भी प्रयास किया गया था। उस प्रभाव का एकमात्र संदेश तब दिखाई देता है जब ड्राइवर को पहले लोड किया जाता है, रिपोर्टिंग: "DFS मास्टर क्षेत्र: परेशान"
ewhac

1
आपका समाधान अच्छा लगता है। कृपया इसे प्रश्न में संपादित करने के बजाय उत्तर में ले जाएं। फिर आपको अपना स्वयं का उत्तर भी स्वीकार करना होगा।
रोज़ा

जवाबों:


11

मैंने कल इस मुद्दे पर फिर से विचार करने की कोशिश की, और अभी भी कर्नेल 4.6.3 के साथ समस्या है। मैन्युअल रूप से नवीनतम फर्मवेयर छवि स्थापित करने से भी मदद नहीं मिली। हालाँकि, iw reg set USउसी कर्नेल को चलाने वाले दूसरे लैपटॉप पर कोशिश करने से ठीक काम होता है।

समस्या मशीन थिंकपैड X1 कार्बन (Gen.3) है, जिसमें इंटेल 7265D वाईफाई कार्ड है; वर्किंग मशीन एक थिंकपैड T440p है, जिसमें Intel 7260 है। इसलिए मैं निष्कर्ष निकालता हूं कि 7265D ड्राइवर या फर्मवेयर में बग है।

वैकल्पिक हल

मैंने 7265D के लिए वर्कअराउंड की भी खोज की। ज्ञात हो कि यह एक वर्कअराउंड है, और यदि वास्तविक फिक्स जारी होता है, तो टकराव हो सकता है:

  • सभी वाईफाई कर्नेल ड्राइवर और निर्भर मॉड्यूल निकालें:
    sudo modprobe -r iwlmvm
  • cfg80211विनियामक डोमेन (इस मामले में, 'US') को लागू करने के लिए कर्नेल पैरामीटर का उपयोग करके कर्नेल मॉड्यूल स्थापित करें :
    sudo modprobe cfg80211 ieee80211_regdom=US
  • वाईफाई कर्नेल ड्राइवरों को फिर से स्थापित करें:
    sudo modprobe iwlmvm

अब आपको यूएस (या जो भी) विनियामक डोमेन के लिए कॉन्फ़िगर किया गया वाईफाई इंटरफ़ेस देखना चाहिए:

$ iw reg get
country US: DFS-FCC
    (2402 - 2472 @ 40), (N/A, 30), (N/A)
    (5170 - 5250 @ 80), (N/A, 17), (N/A)
    (5250 - 5330 @ 80), (N/A, 23), (0 ms), DFS
    (5490 - 5730 @ 160), (N/A, 23), (0 ms), DFS
    (5735 - 5835 @ 80), (N/A, 30), (N/A)
    (57240 - 63720 @ 2160), (N/A, 40), (N/A)

अद्यतन 2016.11.17: कर्नेल 4.8 श्रृंखला में फिक्स्ड

मैंने कुछ हफ्तों पहले 4.8.x कर्नेल में अपडेट करने के बाद आज पहली बार इस मुद्दे को फिर से जांचा, और पता चला कि वाईफाई इंटरफ़ेस अब नियामक डोमेन को ठीक से स्वीकार करने लगता है। यह कर्नेल रिव्यू 4.8.5 में या उससे पहले हुआ था।

$ iw reg get
global
country 00: DFS-UNSET
    (2402 - 2472 @ 40), (6, 20), (N/A)
    (2457 - 2482 @ 20), (6, 20), (N/A), AUTO-BW, PASSIVE-SCAN
    (2474 - 2494 @ 20), (6, 20), (N/A), NO-OFDM, PASSIVE-SCAN
    (5170 - 5250 @ 80), (6, 20), (N/A), AUTO-BW, PASSIVE-SCAN
    (5250 - 5330 @ 80), (6, 20), (0 ms), DFS, AUTO-BW, PASSIVE-SCAN
    (5490 - 5730 @ 160), (6, 20), (0 ms), DFS, PASSIVE-SCAN
    (5735 - 5835 @ 80), (6, 20), (N/A), PASSIVE-SCAN
    (57240 - 63720 @ 2160), (N/A, 0), (N/A)

phy#0 (self-managed)
country US: DFS-UNSET
    (2402 - 2482 @ 40), (6, 22), (N/A), AUTO-BW, NO-HT40PLUS, NO-80MHZ, NO-160MHZ
    (5170 - 5250 @ 80), (6, 22), (N/A), NO-OUTDOOR, AUTO-BW, IR-CONCURRENT, NO-HT40PLUS, NO-160MHZ, PASSIVE-SCAN
    (5250 - 5330 @ 80), (6, 22), (0 ms), DFS, AUTO-BW, NO-HT40PLUS, NO-160MHZ, PASSIVE-SCAN
    (5490 - 5730 @ 80), (6, 22), (0 ms), DFS, AUTO-BW, NO-HT40PLUS, NO-160MHZ, PASSIVE-SCAN
    (5735 - 5815 @ 80), (6, 22), (N/A), AUTO-BW, IR-CONCURRENT, NO-HT40PLUS, NO-160MHZ, PASSIVE-SCAN
    (5815 - 5835 @ 20), (6, 22), (N/A), AUTO-BW, IR-CONCURRENT, NO-HT40MINUS, NO-HT40PLUS, NO-80MHZ, NO-160MHZ, PASSIVE-SCAN

यह मेरे इंटेल वायरलेस 7265D के लिए काम नहीं करता था, इंटरनेट पर कुछ धागे हैं जो यह उल्लेख करते हैं कि 00-विश्व सेटिंग फर्मवेयर या हार्डवेयर में बंद है।
CMCDragonkai

6

कुछ कोड रिसर्च के बाद मुझे पता चला कि समस्या क्या है:

Intel WiFi डिवाइस "स्व-चालित" डिवाइस के रूप में दिखाई देता है, इसलिए iw reg सेट को इसके लिए लागू नहीं किया जाएगा।

बस आपको iwlwifiपैरामीटर सेट करने की आवश्यकता है lar_disable=1:

  1. या तो मैन्युअल रूप से: modprobe -r iwlwifi & modprobe iwlwifi lar_disable=1
  2. खुद ब खुद: echo "options iwlwifi lar_disable=1" >/etc/modprobe.d/iwlwifi.conf

धन्यवाद; मैं कोशिश करूंगा कि BTW, "LAR" क्या है? क्या यह 5GHz बैंड के लिए रडार से बचने की चीज़ है?
1917 को ewhac

फ़ाइल /etc/modprobe.d/iwlwifi.confमौजूद हो सकती है इसलिए इसे जोड़ना बेहतर है। या तो उपयोग >>के बजाय >या echo "options iwlwifi lar_disable=1" | sudo tee -a /etc/modprobe.d/iwlwifi.conf(आवश्यकतानुसार रूट विशेषाधिकारों हो जाता है)।
लुकास


-2
 #!/bin/bash

echo "hello root"
git clone git://git.kernel.org/pub/scm/linux/kernel/git/sforshee/wireless-regdb.git

echo ""
cd wireless-regdb/
sleep 3

echo ""
gedit db.txt
sleep 1

echo ""
make

echo ""
sudo rm /lib/crda/regulatory.bin

echo ""
sudo cp regulatory.bin /lib/crda/regulatory.bin

echo ""
sudo cp $USER.key.pub.pem /lib/crda/pubkeys/

echo ""
sudo iw reg get

echo ""
ip link set wlan1 down
sleep 3

echo "Boosting Tx Power To 30 Fixed"
iw dev wlan1 set txpower fixed 30mbm
sleep 3

echo "starting wlan1"
ip link set wlan1 up
sleep 2

echo "Checking wlan1 TxPower"
iw dev
sleep 3

echo "Checking Regulatory Domain"
iw reg get
sleep 2

echo "Good Luck"

कृपया प्रस्तुत कोड का विवरण दें। उपयोगकर्ताओं को मछली सीखने में मदद करें, न केवल उन्हें मछली दें।
आइजैक

मुझे पता है कि यह सवाल का जवाब नहीं देता है और जन सही हो सकता है। लेकिन यह उपयोग की जाने वाली अंतर्निहित फ़ाइलों के बारे में जागरूकता की सही दिशा में एक टिप है। इसके अलावा मेरे पास वह फ़ोल्डर नहीं है /lib/crda/regulatory.bin
JackGrinningCat
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.