WiFi: `iw reg set US` Tidak Mempengaruhi

13

Dalam proses mencoba mendiagnosis dropout WiFi, saya menemukan bahwa domain pengaturan pada antarmuka WiFi saya diatur ke "dunia" (00), dan mengubahnya ke wilayah saya (AS) akan membantu memperbaiki masalah tersebut. Namun, setiap upaya yang saya lakukan untuk melakukannya telah diabaikan.

Berlari iw reg set UStidak memiliki efek yang jelas:

$ 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)

Setelah Googling ekstensif pada subjek, tampaknya apa yang seharusnya terjadi adalah iw reg setmenyebabkan kernel memancarkan peristiwa udev, yang menyebabkan crdadieksekusi dan batuk info peraturan yang relevan. Namun, sedekat yang saya tahu udevadm, acara ini tidak pernah dipancarkan. Ketidakhadiran acara ini dikuatkan oleh kluge berikut yang tidak berfungsi:

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

Pesan kesalahan berasal dari crda. Kernel akan menerima perubahan pengaturan WiFi hanya jika telah memancarkan acara / permintaan udev untuk mereka dan mengharapkan tanggapan. Karena crdagagal, kernel jelas tidak mengharapkannya, menunjukkan tidak ada acara udev yang dipancarkan.

Antarmuka WiFi adalah Intel 7265D; driver kernel yang mana iwlmvm. Saya telah crdadan wireless-regdbmenginstal, dan /etc/default/crdaberisi REGDOMAIN=US. Menghapus dan memuat ulang iwlmvmdriver tidak berpengaruh.

Ada saran apa lagi yang perlu diperiksa?

ewhac
sumber
1
Sudahkah Anda memeriksa log kernel untuk melihat apakah ada perubahan? Saya mendapatkan output yang sama dengan Anda di stdout, tetapi log saya mengatakan bahwa domain pengaturan memang diperbarui.
saiarcot895
Saya tidak dapat menemukan apa pun di dmesgoutput atau log apa pun untuk menyarankan bahwa segala upaya dilakukan untuk mengubah domain pengaturan. Satu-satunya pesan untuk efek yang muncul ketika driver pertama kali dimuat, melaporkan: "Wilayah master DFS: tidak disetel"
ewhac
1
Solusi Anda kedengarannya bagus. Harap pindahkan ke jawaban alih-alih edit dalam pertanyaan. Anda kemudian bisa menerima jawaban Anda sendiri juga.
roaima

Jawaban:

11

Saya mencoba meninjau kembali masalah ini kemarin, dan masih memiliki masalah bahkan dengan kernel 4.6.3. Menginstal gambar firmware terbaru secara manual juga tidak membantu. Namun, mencoba iw reg set USlaptop kedua yang menjalankan kernel yang sama bekerja dengan baik.

Mesin yang bermasalah adalah Thinkpad X1 Carbon (Gen.3), yang memiliki kartu WiFi Intel 7265D; mesin yang berfungsi adalah Thinkpad T440p, yang memiliki Intel 7260. Oleh karena itu saya menyimpulkan bahwa ada bug pada driver atau firmware 7265D.

Penanganan masalah

Saya juga menemukan solusi untuk 7265D. Ketahuilah bahwa ini adalah solusi, dan dapat menyebabkan konflik jika / ketika perbaikan aktual dilepaskan:

  • Hapus semua driver kernel WiFi dan modul dependen:
    sudo modprobe -r iwlmvm
  • Instal cfg80211modul kernel, menggunakan parameter kernel untuk memaksa domain pengaturan (dalam hal ini, 'AS'):
    sudo modprobe cfg80211 ieee80211_regdom=US
  • Instal ulang driver kernel WiFi:
    sudo modprobe iwlmvm

Anda sekarang akan melihat antarmuka WiFi yang dikonfigurasi untuk domain regulasi AS (atau apa pun):

$ 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)

Pembaruan 2016.11.17: Diperbaiki pada Seri Kernel 4.8

Saya memeriksa masalah ini lagi hari ini untuk pertama kalinya setelah memperbarui beberapa minggu yang lalu ke kernel 4.8.x, dan menemukan bahwa antarmuka WiFi sekarang tampaknya menerima domain pengaturan dengan benar. Ini terjadi pada atau sebelum kernel 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
ewhac
sumber
Ini tidak berfungsi untuk Intel Wireless 7265D saya, ada beberapa utas di internet yang menyebutkan bahwa pengaturan 00-World di-hardcode ke dalam firmware atau perangkat keras yang dikunci.
CMCDragonkai
5

Setelah beberapa penelitian kode saya menemukan apa masalahnya:

Perangkat Intel WiFi muncul sebagai perangkat "self-manged", jadi set iw tidak akan diterapkan untuk itu.

Yang perlu Anda lakukan adalah mengatur iwlwifiparameter lar_disable=1:

  1. Baik secara manual: modprobe -r iwlwifi & modprobe iwlwifi lar_disable=1
  2. Secara otomatis: echo "options iwlwifi lar_disable=1" >/etc/modprobe.d/iwlwifi.conf
Philip
sumber
Terima kasih; Saya akan mencobanya. BTW, apa itu "LAR"? Apakah itu penghindaran radar untuk pita 5GHz?
ewhac
File tersebut /etc/modprobe.d/iwlwifi.confmungkin ada sehingga lebih baik untuk ditambahkan. Baik digunakan >>sebagai gantinya >atau echo "options iwlwifi lar_disable=1" | sudo tee -a /etc/modprobe.d/iwlwifi.conf(dapatkan hak istimewa root sesuai kebutuhan).
Lucas
1
@ewhac unix.stackexchange.com/a/385590/3285
Evan Carroll
-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"
Joel Cruz
sumber
Tolong buat deskripsi kode yang disajikan. Bantu pengguna mempelajari cara memancing, tidak hanya memberi mereka ikan.
Isaac
Saya tahu itu tidak menjawab pertanyaan dan Jan mungkin benar. Tetapi ini adalah tip ke arah yang benar dari kesadaran akan file-file mendasar yang digunakan. Selain itu saya tidak punya folder itu /lib/crda/regulatory.bin
JackGrinningCat