WiFi: `iw reg US 'ไม่มีผล


13

ในกระบวนการของการพยายามวินิจฉัยดรอปดาวน์ WiFi ฉันพบว่าโดเมนข้อบังคับในอินเทอร์เฟซ WiFi ของฉันถูกตั้งค่าเป็น "โลก" (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ทำให้เคอร์เนลปล่อยเหตุการณ์ udev ซึ่งทำให้เกิดcrdaการดำเนินการและไอข้อมูลกฎระเบียบที่เกี่ยวข้อง อย่างไรก็ตามใกล้เท่าที่ฉันจะบอกได้udevadmเหตุการณ์นี้ไม่เคยถูกปล่อยออกมา กรณีที่ไม่มีเหตุการณ์นี้ได้รับการยืนยันโดย kluge ต่อไปนี้ไม่ทำงาน:

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

crdaเกิดข้อผิดพลาดจาก เคอร์เนลจะยอมรับการเปลี่ยนแปลงข้อบังคับของ WiFi เฉพาะเมื่อมีการส่งเหตุการณ์ / คำร้องขอ udev สำหรับพวกเขาและคาดว่าจะได้รับคำตอบ เนื่องจากcrdaล้มเหลวเคอร์เนลชัดเจนไม่ได้คาดหวังมันบอกว่าไม่มีเหตุการณ์ udev ถูกปล่อยออกมา

อินเทอร์เฟซ WiFi คือ Intel 7265D เคอร์เนลไดรเวอร์คือiwlmvmใคร ฉันมีcrdaและwireless-regdbติดตั้งและมี/etc/default/crda REGDOMAIN=USการถอดและโหลดiwlmvmไดรฟ์เวอร์ใหม่ไม่มีผลใด ๆ

มีข้อเสนอแนะในการตรวจสอบอะไรอีกบ้าง?


1
คุณได้ตรวจสอบบันทึกของเคอร์เนลเพื่อดูว่ามีการเปลี่ยนแปลงหรือไม่? ฉันได้รับผลลัพธ์เช่นเดียวกับคุณอยู่ใน stdout แต่บันทึกของฉันบอกว่าโดเมนกฎระเบียบได้รับการปรับปรุงแน่นอน
saiarcot895

ฉันไม่พบสิ่งใดในdmesgผลลัพธ์หรือบันทึกใด ๆ เพื่อแนะนำว่ามีความพยายามใด ๆ ในการเปลี่ยนแปลงโดเมนกฎระเบียบ ข้อความเดียวถึงเอฟเฟกต์นั้นจะปรากฏขึ้นเมื่อมีการโหลดไดรเวอร์ครั้งแรกการรายงาน: "ภูมิภาคหลัก DFS: unset"
ewhac

1
ทางออกของคุณฟังดูดี โปรดย้ายไปยังคำตอบแทนที่จะแก้ไขในคำถาม จากนั้นคุณก็ต้องยอมรับคำตอบของคุณเองเช่นกัน
roaima

คำตอบ:


11

ฉันพยายามทบทวนปัญหานี้เมื่อวานนี้และยังคงมีปัญหาแม้กระทั่งกับเคอร์เนล 4.6.3 การติดตั้งอิมเมจเฟิร์มแวร์ล่าสุดด้วยตนเองก็ไม่ได้ช่วย อย่างไรก็ตามการลองiw reg set USใช้แล็ปท็อปตัวที่สองที่รันเคอร์เนลตัวเดิมนั้นใช้งานได้ดี

เครื่องมีปัญหาคือ Thinkpad X1 Carbon (Gen.3) ซึ่งมีการ์ด Intel 7265D WiFi; เครื่องทำงานเป็น Thinkpad T440p ซึ่งมี Intel 7260 ฉันจึงสรุปได้ว่ามีข้อผิดพลาดในไดรเวอร์หรือเฟิร์มแวร์ 7265D

วิธีแก้ปัญหา

ฉันยังค้นพบวิธีแก้ปัญหาสำหรับ 7265D โปรดทราบว่านี่เป็นวิธีแก้ปัญหาและอาจทำให้เกิดข้อขัดแย้งหาก / เมื่อการแก้ไขที่แท้จริงออกมา:

  • ลบไดรเวอร์เคอร์เนล WiFi และโมดูลที่ขึ้นต่อกันทั้งหมด:
    sudo modprobe -r iwlmvm
  • ติดตั้งcfg80211โมดูลเคอร์เนลโดยใช้พารามิเตอร์เคอร์เนลเพื่อบังคับใช้โดเมนการบังคับ (ในกรณีนี้คือ 'US'):
    sudo modprobe cfg80211 ieee80211_regdom=US
  • ติดตั้งไดรเวอร์เคอร์เนล WiFi อีกครั้ง:
    sudo modprobe iwlmvm

ตอนนี้คุณควรเห็นอินเทอร์เฟซ WiFi ที่กำหนดค่าสำหรับโดเมนข้อบังคับของสหรัฐอเมริกา (หรืออะไรก็ตาม):

$ 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 สองสามสัปดาห์ที่ผ่านมาและพบว่าขณะนี้อินเทอร์เฟซ WiFi ดูเหมือนจะยอมรับโดเมนที่ถูกต้องแล้ว สิ่งนี้เกิดขึ้นในหรือก่อนหน้าเคอร์เนล rev 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

สิ่งนี้ใช้ไม่ได้กับ Intel Wireless 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 หรือไม่?
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"

กรุณาทำรายละเอียดของรหัสที่นำเสนอ ช่วยให้ผู้ใช้เรียนรู้วิธีตกปลาไม่เพียงให้ปลาแก่พวกเขาเท่านั้น
NotAnUnixNazi

ฉันรู้ว่ามันไม่ตอบคำถามและแจนอาจจะใช่ แต่มันเป็นคำแนะนำในทิศทางที่ถูกต้องของการรับรู้ไฟล์ที่ใช้ นอกจากนั้นฉันไม่มีโฟลเดอร์นั้น /lib/crda/regulatory.bin
JackGrinningCat
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.