如何在Raspberry Pi 3上启用Wi-Fi通道12?


15

我需要我的RPi 3使用通道12连接到Wi-Fi网络,但是我无法获得内置的Wi-Fi适配器才能使用此通道。

这是我所做的:

$ sudo apt-get install wireless-regdb iw crda
$ sudo iw reg set NO
$ sudo iwlist wlan0 channel
wlan0     11 channels in total; available frequencies :
      Channel 01 : 2.412 GHz
      Channel 02 : 2.417 GHz
      Channel 03 : 2.422 GHz
      Channel 04 : 2.427 GHz
      Channel 05 : 2.432 GHz
      Channel 06 : 2.437 GHz
      Channel 07 : 2.442 GHz
      Channel 08 : 2.447 GHz
      Channel 09 : 2.452 GHz
      Channel 10 : 2.457 GHz
      Channel 11 : 2.462 GHz

如您所见,该列表不包含频道12(或13)。有没有办法为内置适配器启用通道12?

更新:这是我在dmesg中得到的:

[    5.506232] brcmfmac: brcmf_cfg80211_reg_notifier: not a ISO3166 code
[    5.756813] brcmfmac: brcmf_add_if: ERROR: netdev:wlan0 already exists
[    5.756854] brcmfmac: brcmf_add_if: ignore IF event
[    5.765557] cfg80211: Calling CRDA to update world regulatory domain
[    5.867878] lirc_rpi: auto-detected active high receiver on GPIO pin 18
[    5.875184] lirc_rpi lirc_rpi: lirc_dev: driver lirc_rpi registered at minor = 0
[    5.875222] lirc_rpi: driver registered!
[    5.885249] bcm2835-rng 3f104000.rng: hwrng registered
[    5.902514] gpiomem-bcm2835 3f200000.gpiomem: Initialised: Registers at 0x3f200000
[    6.026071] brcmfmac: brcmf_cfg80211_reg_notifier: not a ISO3166 code
[    6.026108] cfg80211: World regulatory domain updated:
[    6.026124] cfg80211:  DFS Master region: unset
[    6.026141] cfg80211:   (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp), (dfs_cac_time)
[    6.026173] cfg80211:   (2402000 KHz - 2472000 KHz @ 40000 KHz), (N/A, 2000 mBm), (N/A)
[    6.026197] cfg80211:   (2457000 KHz - 2482000 KHz @ 40000 KHz), (N/A, 2000 mBm), (N/A)
[    6.026211] cfg80211:   (2474000 KHz - 2494000 KHz @ 20000 KHz), (N/A, 2000 mBm), (N/A)
[    6.026246] cfg80211:   (5170000 KHz - 5250000 KHz @ 80000 KHz, 160000 KHz AUTO), (N/A, 2000 mBm), (N/A)
[    6.026277] cfg80211:   (5250000 KHz - 5330000 KHz @ 80000 KHz, 160000 KHz AUTO), (N/A, 2000 mBm), (0 s)
[    6.026307] cfg80211:   (5490000 KHz - 5730000 KHz @ 160000 KHz), (N/A, 2000 mBm), (0 s)
[    6.026332] cfg80211:   (5735000 KHz - 5835000 KHz @ 80000 KHz), (N/A, 2000 mBm), (N/A)
[    6.026345] cfg80211:   (57240000 KHz - 63720000 KHz @ 2160000 KHz), (N/A, 0 mBm), (N/A)
[    6.026421] cfg80211: Calling CRDA for country: NO
[    6.070591] cfg80211: Regulatory domain changed to country: NO
[    6.070607] cfg80211:  DFS Master region: ETSI
[    6.070613] cfg80211:   (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp), (dfs_cac_time)
[    6.070621] cfg80211:   (2400000 KHz - 2483500 KHz @ 40000 KHz), (N/A, 2000 mBm), (N/A)
[    6.070628] cfg80211:   (5150000 KHz - 5250000 KHz @ 80000 KHz, 200000 KHz AUTO), (N/A, 2301 mBm), (N/A)
[    6.070635] cfg80211:   (5250000 KHz - 5350000 KHz @ 80000 KHz, 200000 KHz AUTO), (N/A, 2000 mBm), (0 s)
[    6.070643] cfg80211:   (5470000 KHz - 5795000 KHz @ 160000 KHz), (N/A, 2698 mBm), (0 s)
[    6.070650] cfg80211:   (5815000 KHz - 5850000 KHz @ 35000 KHz), (N/A, 3301 mBm), (0 s)
[    6.070656] cfg80211:   (17100000 KHz - 17300000 KHz @ 200000 KHz), (N/A, 2000 mBm), (N/A)
[    6.070662] cfg80211:   (57000000 KHz - 66000000 KHz @ 2160000 KHz), (N/A, 4000 mBm), (N/A)

1
您设定好地区了吗?不同的主管部门拥有不同的频段,WiFi不允许未经授权的频率使用。
Milliways

是的,如果我正确理解的话,此命令应该已经设置了区域:sudo iw reg set NO
perja

可能有很多方法来摆弄区域设置。为什么不只raspi-config是以标准方式使用它呢?
Milliways

3
好的,我还执行了update / upgrade / dist-upgrade以及rpi-update和BRANCH = next rpi-update的过程。我不知道是否也有必要。
2016年

1
@joan:就是这样!sudo BRANCH = next rpi-update,然后重新启动即可解决此问题。
2016年

Answers:


9

“在通常情况下,永远不需要运行rpi-update,因为它总是可以带您到领先的固件和内核,因为这可能是测试版本,可能会使您的RPi无法启动”。https://www.raspberrypi.org/forums/viewtopic.php?p=916911#p916911 即使是rpi-update文档现在也警告说:“即使在Raspbian上,也应仅出于充分的理由使用它。这为您提供了最新的前沿技术内核/固件。”

我有一个相同的问题。就我而言,解决方案是遵循琼在问题下方的评论中的建议。

sudo apt-get update

sudo apt-get upgrade

sudo apt-get dist-upgrade

sudo rpi-update

[reboot]

sudo branch=next rpi-update

[reboot]

完成后,频道12和13出现在产生的列表中iwlist wlan0 channel


3
作为记录:在“ sudo branch = next rpi-update”之后,内核从4.1.18更新到4.4.3,固件从某些版本更新为41f8b4812ad653abf321b8c54cb4bee57ebdb129(来自/boot/.firmware_revision)。
2016年

你让我今天一整天都感觉很好。
blfuentes

您如何获得rpi-update命令?
IgorGanapolsky '16

1
@IgorGanapolsky“在通常情况下,永远不需要运行rpi-update,因为它总是可以带您到领先的固件和内核,因为这可能是测试版本,可能会使RPi无法启动”。raspberrypi.org/forums/viewtopic.php?p=916911#p916911
Milliways

如果您使用频道13,请确保您被允许进入您所在的地区。
Piotr Kula

5

遵循@goobering的回答对我来说并不太好。我能够更新固件,但是一旦尝试运行sudo branch=next rpi-update它,便告诉我我已经是最新的。我不是。

我使用@perja的固件哈希(在原始答案下方)运行;

sudo rpi-update 41f8b4812ad653abf321b8c54cb4bee57ebdb129

这使我从4.1.18升级到4.4.3。

这意味着(至少对我而言)完整的步骤是;

sudo raspi-config (set Wifi Country to GB, or a country that works for you)
sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade
sudo rpi-update
shutdown -r now
sudo rpi-update 41f8b4812ad653abf321b8c54cb4bee57ebdb129
shutdown -r now

中提琴,我现在可以看到频道12!

我有种感觉,您可以将那些rpi-updates 汇总到一个命令中,但是先获取最新的master并进行成功的重启,然后尝试4.4.3更为安全。

无论如何,3的启动时间是如此之快;-)

相关博客文章


2

Shan-Desai的解决方案效果很好,但是在实施时遇到了一个问题。

当我想要设置Wlan通道时,出现一条错误消息,指出该设备正在使用中并且很忙。但是,在关闭设备并重新打开后(软件方面),问题消失了。所以我做了以下

$ sudo apt-get install wireless-regdb iw crda
$ sudo iw reg set CA 
$ sudo ifconfig wlan0 down
$ sudo ifconfig wlan0 up
$ sudo iwconfig wlan0 channel 11

需要注意的另一件事是,在每次重新启动RPi时,通道更改都会重置为默认值。因此,为了将这些更改保留在您的RPi上,我建议在根目录中编写一个shell脚本,并在重新启动后在crontab中调用它。我这样做是

$ nano wlan0_setup.sh

并按以下内容填充文件:

$ sudo iw reg set CA 
$ sudo ifconfig wlan0 down
$ sudo ifconfig wlan0 up
$ sudo iwconfig wlan0 channel 11

然后,我通过运行以下命令保存了文件并使其成为可执行的Shell脚本

$ sudo chmod +x /home/pi/wlan0_setup.sh

现在脚本可以通过运行来执行

$ sh wlan0_setup.sh

我们可以通过执行将其添加到crontab中

$ crontab -e 

当crontab打开时,转到文件末尾并添加以下内容

@reboot sh /home/pi/wlan0_setup.sh

然后保存并退出编辑器。这样,wlan0_setup.sh脚本将在RPi每次重新启动时运行。

希望对您有所帮助,祝大家好运。


1

感谢Toby的答复,似乎有必要将SHA-1 commit hash作为rpi-update命令的参数来更新固件,以使其能够正常工作以查看通道12和13。

但是我也要感谢Shan-Desai,因为使用iw reg set $COUNTRYCODE命令设置国家/地区代码也是该过程中非常重要的部分-如果没有此设置,则默认情况下始终只有11个频道/可见的频道和所设置的国家/地区代码是00(不确定这个国家是否真的属于任何国家,还是全世界所有国家的“安全设置”)。

米格


1

报告从未来- (其中raspian内核是4.9),我可以告诉大家,sudo raspi-config现在提供了一个选项Set wifi countrylocalization。从那里可以设置启用通道12和13的语言环境。


我收到此选项错误:“无法与wpa_supplicant通信”,然后显示“运行选项I4更改Wi-fi国家时出错”。
glenneroo 18/09/14

是的,尝试过此操作但无济于事。
乔纳森

0

向此查询添加注释

我有一个Raspberry Pi-2型B,并且在其上使用LogiLink WiFi适配器。

执行后,iwlist scan我可以看到从1到14的所有频道(是的!我可以扫描频道14)

但是,如果我真的想使用的信道12或13使用iwconfig wlan0 channel 12iwconfig wlan0 channel 13我不能这样做,因为最初的它的回报

Error for wireless request "Set Frequency" (8B04) :
SET failed on device wlan0 ; Invalid argument.

由于我在欧洲,所以我可以根据规定访问这些渠道并使用它们。这是按照以下步骤解决的

sudo apt-get update
sudo apt-get install wireless-regdb iw crda

然后执行以下操作

sudo iw reg set *In CAPS your Country Code*

现在已经确定iwconfig wlan0 channel 13可以使用,并且可以使用iwconfig wlan0

这可能有点题外话,但这很好用,因为我没有无法扫描通道12和13但无法使用它的问题。

我使用德语中的“此链接”获得了信息

注意

请与您所在的国家/地区标准化部门联系,以查看是否可以使用后一种渠道,因为在某些国家/地区,这些渠道用于其他用途。


0

我使用第一个解决方案(尝试),但是没有用。

在Internet上搜索之后,我发现这些可能有所帮助。您需要做的就是安装crda并设置wifi区域。

https://www.raspberrypi.org/forums/viewtopic.php?t=36961#p308569 RPI 3看不到我的wifi

如果使用wpa_supplicant,则必须country在/etc/wpa_supplicant/wpa_supplicant.conf中进行更改


您不需要安装任何软件。sudo iw listRaspbian Stretch和Buster列出了所有1至14频道。
Ingo,

-2

我对所有人的赞赏。这将使我进入寻找的道路。AC-表格以及b-n +表格。谢谢。当我启动无线网络时,它们是802.11 1mb协议。使用全向和单向天线,我完成了许多802.11b +网络连接。当时AC的东西太贵了。兼容性很少。


我不明白您想说什么,这个困惑的答案如何帮助您解决问题。
Ingo
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.