WiFi: `iw reg set US` Không có hiệu lực


13

Trong quá trình cố gắng chẩn đoán bỏ học WiFi, tôi phát hiện ra rằng miền quy định trên giao diện WiFi của tôi được đặt thành "thế giới" (00) và thay đổi nó thành khu vực của tôi (Hoa Kỳ) sẽ giúp khắc phục sự cố. Tuy nhiên, mọi nỗ lực tôi đã làm để làm như vậy đã bị bỏ qua.

Chạy iw reg set USkhông có tác dụng rõ ràng:

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

Sau khi Googling mở rộng về chủ đề này, có vẻ như những gì sẽ xảy ra là iw reg setnguyên nhân khiến hạt nhân phát ra một sự kiện udev, khiến crdacho việc thực thi và ho ra thông tin quy định có liên quan. Tuy nhiên, gần như tôi có thể nói với udevadm, sự kiện này không bao giờ được phát ra. Sự vắng mặt của sự kiện này được chứng thực bởi các kluge sau không hoạt động:

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

Thông báo lỗi là từ crda. Nhân sẽ chỉ chấp nhận thay đổi quy định WiFi nếu nó đã phát ra một sự kiện / yêu cầu udev cho họ và đang chờ phản hồi. Vì crdathất bại, hạt nhân rõ ràng không mong đợi nó, cho thấy không có sự kiện udev nào được phát ra.

Giao diện WiFi là Intel 7265D; có trình điều khiển kernel iwlmvm. Tôi đã crdawireless-regdbcài đặt, và /etc/default/crdachứa REGDOMAIN=US. Loại bỏ và tải lại iwlmvmtrình điều khiển không có hiệu lực.

Bất kỳ đề nghị của những gì nhiều hơn để kiểm tra?


1
Bạn đã kiểm tra nhật ký kernel để xem có thay đổi nào không? Tôi đang nhận được đầu ra giống như bạn trên thiết bị xuất chuẩn, nhưng nhật ký của tôi nói rằng miền quy định đã thực sự được cập nhật.
saiarcot895

Tôi không thể tìm thấy gì ở dmesgđầu ra hoặc bất kỳ nhật ký nào để đề xuất rằng mọi nỗ lực đã được thực hiện để thay đổi miền quy định. Thông báo duy nhất cho hiệu ứng đó xuất hiện khi trình điều khiển được tải lần đầu tiên, báo cáo: "Vùng chính DFS: chưa đặt"
ewhac

1
Giải pháp của bạn nghe có vẻ tốt. Vui lòng chuyển nó đến một câu trả lời thay vì chỉnh sửa trong câu hỏi. Sau đó, bạn cũng có thể chấp nhận câu trả lời của riêng bạn.
roaima

Câu trả lời:


11

Tôi đã thử xem lại vấn đề này ngày hôm qua và vẫn gặp sự cố ngay cả với kernel 4.6.3. Cài đặt thủ công hình ảnh phần sụn mới nhất cũng không giúp được gì. Tuy nhiên, thử iw reg set UStrên một máy tính xách tay thứ hai chạy cùng một hạt nhân hoạt động tốt.

Máy gặp sự cố là Thinkpad X1 Carbon (Gen.3), có thẻ WiFi Intel 7265D; Máy hoạt động là Thinkpad T440p, có Intel 7260. Do đó, tôi kết luận rằng có lỗi trong trình điều khiển hoặc phần sụn 7265D.

Giải pháp thay thế

Tôi cũng phát hiện ra một cách giải quyết cho 7265D. Lưu ý rằng đây là một cách giải quyết và có thể gây ra xung đột nếu / khi một bản sửa lỗi thực sự được phát hành:

  • Xóa tất cả trình điều khiển nhân WiFi và các mô-đun phụ thuộc:
    sudo modprobe -r iwlmvm
  • Cài đặt cfg80211mô-đun hạt nhân, sử dụng tham số kernel để buộc miền quy định (trong trường hợp này là 'US'):
    sudo modprobe cfg80211 ieee80211_regdom=US
  • Cài đặt lại trình điều khiển hạt nhân WiFi:
    sudo modprobe iwlmvm

Bây giờ bạn sẽ thấy giao diện WiFi được định cấu hình cho miền quy định của Hoa Kỳ (hoặc bất cứ điều gì):

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

Cập nhật 2016.11.17: Đã sửa lỗi trong Kernel 4.8 Series

Hôm nay tôi đã kiểm tra vấn đề này lần đầu tiên sau khi cập nhật một vài tuần trước lên kernel 4.8.x và phát hiện ra rằng giao diện WiFi dường như đã chấp nhận đúng miền miền quy định. Điều này đã xảy ra trong hoặc trước 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

Điều này không hoạt động cho Intel Wireless 7265D của tôi, có một số luồng trên internet đề cập rằng cài đặt 00-World được mã hóa cứng vào phần sụn hoặc phần cứng bị khóa.
CMCDragonkai

5

Sau một số nghiên cứu mã tôi đã tìm ra vấn đề là gì:

Thiết bị Intel WiFi xuất hiện dưới dạng thiết bị "tự mang", do đó, bộ iw reg sẽ không được áp dụng cho thiết bị này.

Tất cả bạn cần làm là thiết lập iwlwifitham số lar_disable=1:

  1. Hoặc bằng tay: modprobe -r iwlwifi & modprobe iwlwifi lar_disable=1
  2. Tự động: echo "options iwlwifi lar_disable=1" >/etc/modprobe.d/iwlwifi.conf

Cảm ơn bạn; Tôi sẽ cố gắng làm điều đó. BTW, "LAR" là gì? Có phải đó là điều tránh radar cho băng tần 5GHz?
ewhac

Các tập tin /etc/modprobe.d/iwlwifi.confcó thể tồn tại để tốt hơn để chắp thêm. Sử dụng >>thay vì >hoặc echo "options iwlwifi lar_disable=1" | sudo tee -a /etc/modprobe.d/iwlwifi.conf(được quyền root khi cần thiết).
Lucas


-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"

Vui lòng mô tả mã được trình bày. Giúp người dùng học cách câu cá, không chỉ cho chúng một con cá.
Isaac

Tôi biết nó không trả lời câu hỏi và Jan có thể đúng. Nhưng đó là một mẹo theo đúng hướng nhận thức về các tập tin cơ bản được sử dụng. Ngoài ra, tôi không có thư mục đó /lib/crda/regulatory.bin
JackGrinningCat
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.