En essayant de diagnostiquer les abandons WiFi, j'ai découvert que le domaine réglementaire de mon interface WiFi est défini sur "monde" (00), et le changer pour ma région (US) devrait aider à résoudre le problème. Cependant, chaque tentative que j'ai faite pour le faire a été ignorée.
La course iw reg set US
n'a pas d'effet évident:
$ 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)
Après une longue recherche sur le sujet sur Google, il semble que ce qui est censé se produire soit iw reg set
que le noyau émette un événement udev, ce qui provoque crda
son exécution et crache les informations réglementaires pertinentes. Cependant, comme je peux le dire udevadm
, cet événement n'est jamais émis. L'absence de cet événement est corroborée par le kluge suivant qui ne fonctionne pas:
$ sudo iw reg set US; sudo COUNTRY=US crda
Failed to set regulatory domain: -7
Le message d'erreur vient de crda
. Le noyau n'acceptera les modifications de la réglementation WiFi que s'il a émis un événement / demande udev à leur sujet et attend une réponse. Depuis l' crda
échec, le noyau ne s'y attendait clairement pas, suggérant qu'aucun événement udev n'a été émis.
L'interface WiFi est un Intel 7265D; dont le pilote du noyau est iwlmvm
. J'ai crda
et wireless-regdb
installé, et /etc/default/crda
contient REGDOMAIN=US
. La suppression et le rechargement du iwlmvm
pilote n'ont aucun effet.
Des suggestions de quoi vérifier de plus?
dmesg
sortie ou dans aucun des journaux pour suggérer que toute tentative a été faite pour changer le domaine réglementaire. Le seul message à cet effet apparaît lors du premier chargement du pilote, signalant: "DFS master region: unset"Réponses:
J'ai essayé de revoir ce problème hier, et j'ai toujours le problème même avec le noyau 4.6.3. L'installation manuelle de la dernière image du micrologiciel n'a pas non plus aidé. Cependant, essayer
iw reg set US
un deuxième ordinateur portable exécutant le même noyau a bien fonctionné.La machine à problème est un Thinkpad X1 Carbon (Gen.3), qui possède une carte WiFi Intel 7265D; la machine qui fonctionne est un Thinkpad T440p, qui a un Intel 7260. Je conclus donc qu'il y a un bug dans le pilote ou le firmware du 7265D.
solution de contournement
J'ai également découvert une solution de contournement pour le 7265D. N'oubliez pas qu'il s'agit d'une solution de contournement qui peut provoquer des conflits si / lorsqu'un correctif réel est publié:
sudo modprobe -r iwlmvm
cfg80211
module du noyau, en utilisant un paramètre du noyau pour forcer le domaine réglementaire (dans ce cas, «US»):sudo modprobe cfg80211 ieee80211_regdom=US
sudo modprobe iwlmvm
Vous devriez maintenant voir l'interface WiFi configurée pour le domaine réglementaire américain (ou autre):
Mise à jour 2016.11.17: corrigé dans la série du noyau 4.8
J'ai vérifié à nouveau ce problème aujourd'hui pour la première fois après avoir mis à jour il y a quelques semaines un noyau 4.8.x, et j'ai découvert que l'interface WiFi semble maintenant accepter correctement le domaine réglementaire. Cela s'est produit dans ou avant la version 4.8.5 du noyau.
la source
Après quelques recherches sur le code, j'ai découvert le problème:
Le périphérique Intel WiFi apparaît comme un périphérique "autogéré", de sorte que le jeu de paramètres iw ne lui sera pas appliqué.
Il vous suffit de régler le
iwlwifi
paramètrelar_disable=1
:modprobe -r iwlwifi & modprobe iwlwifi lar_disable=1
echo "options iwlwifi lar_disable=1" >/etc/modprobe.d/iwlwifi.conf
la source
/etc/modprobe.d/iwlwifi.conf
peut exister, il est donc préférable de l'ajouter. Soit utiliser à la>>
place de>
ouecho "options iwlwifi lar_disable=1" | sudo tee -a /etc/modprobe.d/iwlwifi.conf
(obtient les privilèges root selon les besoins).la source