WiFi на Raspberry Pi Zero W

Автор: | 30 октября 2019

pi-zero-w-1

После длительного использования нулевой Малинки, вылезла проблема со связью через WiFi. На форумах пишут, что это связано с ПО, в итоге, вместо экономии электричества, получаем не доступную по сети Raspberry Pi.

Как это лечить? Сначала я попробовал использовать внешний “свисток”, Edimax EW-7811Un, но и он отваливался от сети. Для лечения внутреннего чипа нужно отключить управление питанием, в файле /etc/rc.local добавьте строчку:

iwconfig wlan0 power off

Это должно отключить управление питанием чипа и он просто будет работать все время, без (неудачных) переходов в спящий режим. При запуске данной команлы из консоли, управление питанием будет отключено без перезагрузки системы.

С внешним WiFi-адаптером от Edimax все сложнее, нужно создать (если не существует) файл /etc/modprobe.d/8192cu.conf и добавить в него строчку:

options 8192cu rtw_power_mgnt=0 rtw_enusbss=0

Если вы вы выполните нижеописанные команды, то, как минимум, вторая будет с единицей, т.е. для адаптера будет включено управление питанием.

cat /sys/module/8192cu/parameters/rtw_enusbss
cat /sys/module/8192cu/parameters/rtw_power_mgnt

Чтобы настройки вступили в силу, нужно перезагрузить вашу плату.

Также, при использовании внешнего WiFi-адаптера, можно (и нужно) отключать внутренний, для этого добавьте в файл /boot/config.txt следующую строчку:

dtoverlay=disable-wifi

Еще будет полезным отключить IPv6, который наверняка вам не нужен, для этого в файле /etc/sysctl.conf добавьте строчки:

# to disable IPv6 on all interfaces system wide
net.ipv6.conf.all.disable_ipv6 = 1

И вишенка на торте – это скрипт, который проверяет есть ли подключение к сети и пытается её перезапустить:

https://github.com/VBaczynski/WiFi_Check

Поставьте на файл права на исполнение и добавьте его в крон:

chmod 755 /usr/local/bin/WiFi_Check
env EDITOR=nano crontab -e

-- в кроне добавьте запись --
# WiFi check
*/5 * * * * /usr/local/bin/WiFi_Check >/dev/null 2>/dev/null

Надеюсь, это поможет и вам.

P.S.
Все команды выполняются из-под пользователя root, если запускаете из-под обычного пользователя, используйте sudo.

Добавить комментарий