WiFi:「iw reg set US」には効果がない


13

WiFiドロップアウトを診断しようとする過程で、WiFiインターフェイスの規制ドメインが「world」(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、このイベントは決して発行されません。このイベントの不在は、次の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。私が持っcrdawireless-regdbインストールし、/etc/default/crda含まれていますREGDOMAIN=USiwlmvmドライバーを削除して再ロードしても効果はありません。

さらに確認することの提案はありますか?


1
カーネルログをチェックして、変更が行われたかどうかを確認しましたか?標準出力と同じ出力が得られますが、私のログでは規制ドメインが実際に更新されたことが記録されています。
saiarcot895

dmesg出力またはログのいずれにも、規制ドメインを変更しようとしたことを示唆するものは何もありません。その効果に対する唯一のメッセージは、ドライバーが最初にロードされたときに表示され、「DFSマスター領域:設定解除」
-ewhac

1
ソリューションは良さそうです。質問の編集ではなく、回答に移動してください。その後、自分の答えも受け入れます。
ロアイマ

回答:


11

昨日、この問題を再検討しましたが、カーネル4.6.3でも問題があります。最新のファームウェアイメージを手動でインストールしても解決しませんでした。ただし、iw reg set US同じカーネルを実行している2台目のラップトップで試してみてもうまくいきました。

問題のマシンは、Intel 7265D WiFiカードを搭載したThinkpad X1 Carbon(Gen.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

Intel Wireless 7265Dではこれは機能しませんでした。インターネット上には、00-World設定がロックされているファームウェアまたはハードウェアにハードコーディングされているというスレッドがあります。
CMCDragonkai

5

いくつかのコードの調査の後、私は問題が何であるかを見つけました:

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

ありがとうございました; やってみます。ところで、「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"

提示されたコードの説明を作成してください。ユーザーに魚を与えるだけでなく、釣り方を学ぶのを助けます。
アイザック

私はそれが質問に答えないことを知っています、そして、ヤンは正しいかもしれません。しかし、使用されている基礎ファイルの認識に関する正しい方向のヒントです。それに加えて、そのフォルダ/lib/crda/regulatory.binがありません
JackGrinningCat
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.