После длительного использования нулевой Малинки, вылезла проблема со связью через 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.