Как включить канал Wi-Fi 12 на Raspberry Pi 3?

15

Мне нужен мой RPi 3 для подключения к сети Wi-Fi через канал 12, но я не могу получить встроенный адаптер 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)
perja
источник
1
Вы установили свой регион. Разные администрации имеют разные полосы частот, и WiFi не допустит несанкционированных частот.
Milliways
Да, если я правильно понимаю, эта команда должна была установить регион: sudo iw reg set NO
perja
Вероятно, есть много способов возиться с региональными настройками. Почему бы просто не использовать raspi-configэто стандартным способом.
Milliways
3
Хорошо, я также сделал обновление / обновление / dist-upgrade и rpi-update и BRANCH = next rpi-update как часть этого процесса. Я не знаю, был ли какой-либо из них также необходим.
Джоан
1
@ Джоан: это было это! sudo BRANCH = следующее rpi-обновление, а затем перезагрузка разрешила проблему.
Perja

Ответы:

9

«В нормальных условиях НИКОГДА не нужно запускать rpi-update, так как он всегда приводит вас к передовой прошивке и ядру, и, поскольку это может быть тестовая версия, это может привести к тому, что ваш RPi не загрузится». https://www.raspberrypi.org/forums/viewtopic.php?p=916911#p916911 Даже документация об обновлении rpi теперь предупреждает: «Даже на 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.

goobering
источник
3
Для справки: после "sudo branch = next rpi-update" ядро ​​было обновлено с 4.1.18 до 4.4.3 и прошивки с чего-то на 41f8b4812ad653abf321b8c54cb4bee57ebdb129 (из /boot/.firmware_revision).
Perja
вы сделали мой день.
blfuentes
Как вы получаете rpi-updateкоманду?
Игорь Ганапольский
1
@IgorGanapolsky "В нормальных условиях НИКОГДА не нужно запускать rpi-update, поскольку он всегда приводит вас к передовой прошивке и ядру, и, поскольку это может быть тестовая версия, это может привести к тому, что ваш RPi не будет загружаться". raspberrypi.org/forums/viewtopic.php?p=916911#p916911
Milliways
Если вы используете канал 13, убедитесь, что вам разрешено в вашем регионе.
Петр Кула
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-updateв одну команду, но безопаснее сначала захватить последний мастер, выполнить успешную перезагрузку, а затем попробовать 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, я бы предложил написать сценарий оболочки в корневом каталоге и вызвать его в crontab после перезагрузки. Я сделал это

$ nano wlan0_setup.sh

и заполните файл следующим образом:

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

Затем я сохранил файл и сделал его исполняемым сценарием оболочки, запустив

$ 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

Спасибо за ответ Тоби, кажется, что хеш коммита SHA-1 в качестве аргумента команды rpi-update был необходим для обновления прошивки, чтобы она работала, чтобы увидеть каналы 12 и 13.

Но я также должен поблагодарить Shan-Desai, так как настройка кода страны с помощью iw reg set $COUNTRYCODEкоманды также была очень важной частью процесса - без этих настроек было только 11 разрешенных / видимых каналов все время как по умолчанию и заданный код страны было 00 (не уверен, действительно ли этот относится к какой-либо стране или это была просто «безопасная обстановка» для всех стран мира).

Mig

Михал Миг Новотный
источник
1

Сообщая о будущем - (где ядро ​​raspian - 4.9), я могу сказать, что sudo raspi-configтеперь предлагает опцию Set wifi countryниже localization. Оттуда вы можете установить локаль, которая включает каналы 12 и 13.

LudvigH
источник
Я получаю сообщение об ошибке с этой опцией: «Не удалось связаться с wpa_supplicant», за которой следует «Произошла ошибка при запуске опции I4 Изменить страну Wi-Fi».
glenneroo
Да, попробовал это, но это не помогает.
Джонатан
0

Чтобы добавить заметку к этому запросу

У меня Raspberry Pi - 2 Model B, и я использую адаптер LogiLink WiFi на нем.

После выполнения iwlist scanя вижу все каналы с 1 по 14 (да! Я могу сканировать канал 14)

Но если я действительно хочу использовать канал 12 или 13, используя iwconfig wlan0 channel 12или iwconfig 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, но я не мог его использовать.

Я получил информацию, используя эту ссылку на немецком языке

Заметка

пожалуйста, уточните в вашей Стандартизации вашей страны, можете ли вы использовать последние каналы или нет, поскольку в некоторых странах эти каналы используются для других целей.

Shan-Десаи
источник
0

Я использую первое решение (goobering), и оно не сработало.

После поиска в интернете я обнаружил, что это может помочь. Все, что вам нужно сделать, это установить crda и установить регион Wi-Fi.

https://www.raspberrypi.org/forums/viewtopic.php?t=36961#p308569 RPI 3 не видит мой Wi-Fi

Если вы используете wpa_supplicant, вы должны изменить countryв /etc/wpa_supplicant/wpa_supplicant.conf

Питер Лай
источник
Вам не нужно устанавливать какое-либо программное обеспечение. Просто со sudo iw listвсеми каналами с 1 по 14 перечислены на Raspbian Stretch и Buster.
Инго
-2

Мои благодарности всем. Это приведет меня к пути, который я ищу. AC - таблицы вместе с таблицами b-n +. Спасибо. Когда я запускал беспроводные сети, они были протоколами 802.11 1 Мб. Используя всенаправленные и однонаправленные антенны, я много работал в сети 802.11b +. В то время кондиционер был слишком дорогим. Совместимость была скудной.

Джоэл Хюбнер
источник
Я не понимаю, что вы хотите сказать, и как этот запутанный ответ поможет решить проблему.
Инго