WiFi:「iw reg set US」が機能しない

WiFi:「iw reg set US」が機能しない

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)

iw reg setそのトピックについて広範囲にインターネット検索を行った結果、カーネルがudevイベントを発生させてcrda実行を引き起こし、関連監督情報を吐き出すようです。しかし、私が知っている限り、udevadmこのイベントは発生しません。このイベントがないことは、次のクルージが機能していないことが確認されます。

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

エラーメッセージは、crdaカーネルがudevイベント/要求を発行し、応答を期待する場合にのみWiFi規制の変更を許可します。crda失敗のため、カーネルは明らかにこれを予期せず、udevイベントが発生しなかったことを示します。

WiFiインターフェースはIntel 7265Dです。そのカーネルドライバはですiwlmvm。ドライバをアンインストールして再ロードしても効果はcrdaありません。wireless-regdb/etc/default/crdaREGDOMAIN=USiwlmvm

確認する他の提案がありますか?

答え1

昨日問題を再試行しましたが、カーネル4.6.3でも問題があります。最新のファームウェアイメージを手動でインストールしても役に立ちませんでした。しかし、iw reg set US同じカーネルを実行している2番目のラップトップで試してみると、問題なく実行されました。

問題機器はIntel 7265D WiFiカードが搭載されたThinkpad X1 Carbon(第3世代)であり、作業機器はIntel 7260が搭載されたThinkpad T440pです。それで、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インターフェイスが規制ドメインを正しく受け入れているようです。これはカーネルバージョン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

答え2

いくつかのコード調査の後に問題が見つかりました。

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

答え3

私の場合BCM43228b43ドライバが報告したようにlspci)、b43カーネルドライバを使用するときにregdbが許可する拡張チャネル範囲を表示するのに役立ちませんでした。00ローカルデータベース(現在)の交差点のみをAM有効に使用できます。

独自のbroadcom-staドライバに切り替えると、問題はすぐに解決され、必要なすべてのワイヤレスネットワークが表示されます。ところで、このドライバーBCM4359はからカードを呼び出します。dmesg

答え4

 #!/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"

関連情報