Подключение к wifi armbian

QSG_2: Armbian Bionic — настройка Wi-Fi, без монитора и ssh (на примере Orange Pi).

У вас могут возникнуть трудности, если необходимо SSH подключение к Orange Pi через Wi-Fi — без подключения монитора или Ethernet.
Или ваш Orange Pi не имеет других средств связи (HDMI, Ethernet и т.д.).

Сложность заключается в том, что для подключения к Wi-Fi сети (в отличие от Ethernet) — необходима предварительная настройка (указать Имя сети / Пароль). И сам интерфейс Wi-Fi обычно отключен по умолчанию.

Что необходимо:

  • Orange Pi с Wi-Fi модулем
  • Карта памяти с установленным образом Armbian Bionic
  • Wi-Fi роутер (точка доступа) с известным вам Паролем и Названием сети (SSID)
  • Другой ПК с Linux (Ubuntu) (или загрузиться с “LiveCD / LiveUSB”)
  • Кардридер (Card reader)

Инструкция для пользователей Linux. В Windows вы не сможете открыть карту памяти с записанным образом для Orange Pi. Т.к. Windows не поддерживает файловые системы ext

How To – Armbian Wi-Fi Setup (Orange Pi)

Данные точки доступа Wi-Fi — в данном примере:

Предварительные действия:

Для генерации файла конфигурации, будем использовать утилиту wpa_passphrase .
Установить ее на ваш ПК можно следующей командой:

sudo apt install wpasupplicant -y

Если ваш ПК имеет Wi-Fi, вы можете просканировать сеть, и получить имена (SSID) доступных точек доступа:

sudo apt-get install wpasupplicant

sudo — позволяет выполнить команду с правами администратор “Суперпользователя” (в дистрибутивах, отличных от Ubuntu — может потребоваться предварительная установка).

Потребуется ввести пароль Суперпользователя (после первого ввода пароля — он может больше не запрашиваться определенное время в текущей сессии).

При вводе пароля — на экране не отображаются никакие символы, и курсор по мере набора символов не перемещается.

Подключение карты памяти к ПК

  • Вставьте карту в картридер (и подключите картридер к ПК, если используете USB-картридер);
  • Определите имя карты (блочного устройства) в системе, например: /dev/sdd1 ;
  • Создайте каталог, куда будет примонтирована карта памяти;
  • Выполните монтирование карты памяти в созданный каталог.

Как определить имя блочного устройства (подключенной карты памяти)?

Если возникнут трудности с определением имени вашей карты памяти — можете просто сравнить полученные списки До и После подключения карты памяти (картридера).

Как создать новый каталог для монтирования карты памяти (точку монтирования)?

Команда создаст каталог microsd (можете указать другое имя) в /mnt (или можете создать каталог в /media ).

фактически можно монтировать карту памяти (или любой диск) в любой раздел, но лучше придерживаться определенных правил. Подробнее о структуре файлов в Ubuntu: https://losst.ru/ctruktura-fajlovoj-sistemy-linux

Как выполнить монтирование карты памяти?

sudo mount /dev/sdd1 /mnt/microsd
  • /dev/sdd1 — раздел на нашей карте памяти.
  • /mnt/microsd — созданная нами точка монтирования для карты памяти.
Читайте также:  Аудит безопасности wifi сетей

Подробнее о Монтирование дисков в Linux: https://losst.ru/montirovanie-diska-v-linux

Настраиваем Wi-Fi

Переходим в примонтированную карту памяти:

Генерируем настройки для Wi-Fi, утилитой wpa_passphrase :

wpa_passphrase DOM.RU PsWd:1234-8

Копируем полученную конфигурацию ( Ctrl+Shift+C ):

Открываем редактор nano и вставляем код конфигурации ( Ctrl+Shift+V ) в новый файл ./etc/wpa_supplicant/wpa_supplicant.conf :

sudo nano ./etc/wpa_supplicant/wpa_supplicant.conf

Сохраняем файл ( Ctrl+O , Enter ) и выходим из nano ( Ctrl+X , Enter ).

./etc/. — используем данную конструкцию, т.к. нам необходимо создать файл на карте памяти, а не основном ПК /etc/. . Т.е. создаем файл не от корня “системного” диска ( / ), а от корня точки монтирования нашей карты памяти (т.к. мы перешли в него командой cd /mnt/microsd — создаем от текущей дериктории ./ ).
Или укажите полный путь:

sudo nano /mnt/microsd/etc/wpa_supplicant/wpa_supplicant.conf

Сохраняем файл ( Ctrl+O , Enter ) и выходим из nano ( Ctrl+X , Enter ).

Настраиваем сетевой интерфейс:

Открываем файл конфигурации в редакторе nano:

sudo nano ./etc/network/interface

Вставляем конфигурацию в конец файла ( Ctrl+Shift+V ):

sudo nano ./etc/network/interfaces
allow-hotplug wlan0 iface wlan0 inet manual wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf iface default inet dhcp

Сохраняем файл ( Ctrl+O , Enter ) и выходим из nano ( Ctrl+X , Enter ).

Извлечение карты памяти:

Выходим из директории карты памяти:

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

Размонтируем карту памяти:

Данная операция (размонтирование) — напоминает безопасное извлечение в Windows. Это гарантирует сохранность всех измененных файлов, т.к. при размонтировании происходит синхронизация измененных данных в оперативной памяти с памятью на диске (данную операцию можно запустить вручную, командой sync ).
Настоятельно не рекомендуется пренебрегать данной операцией, особенно при работе с картами памяти и USB-флешками.

Заключение

После проделанных операций — можете извлечь карту памяти из картридера, вставить карту в Orange Pi и включить его. После загрузки (нужно немного подождать) Orange Pi должен автоматически подключиться к точке доступа Wi-Fi. После этого, вы сможете определить IP-адрес Orange Pi и подключиться к нему по SSH.

Ваш ПК и Orange Pi должны находиться в одной локальной сети (подключены к одному роутеру)

Пример SSH подключения (укажите IP-адрес Orange Pi):

Стандартный пароль root пользователя: 1234 (уточните на странице загрузки Armbian в разделе FAQs -> HOW TO START? )

После первого включения — будет предложено сменить пароль root и создать нового пользователя, после этого — желательно выполнить обновление (необходим доступ в Интернет):

sudo apt update && sudo apt upgrade -y

Источник

DiyTronic

В ходе настройки Orange Pi Zero Plus 2 H3 обнаружил, что есть конкретные проблемы с Wi-Fi. В зависимости от используемого дистрибутива Linux имеем либо негрузящайся драйвер, либо работают только первые 11 каналов Wi-Fi, а учитывая, что моих сетей там нет, это проблема, которую пришлось решать. Решение я нашёл и ниже я его вам покажу и расскажу как с этой проблемой бороться.

Читайте также:  Bluetooth and wifi conflict

Итак, хотелось мне запустить эту плату именно в Armbin, но именно этот дистрибутив славился тем, что данная плата в нём Wi-Fi не поддерживала. Но мы не ищем лёгких путей и из-за какого-то там чортова драйвера менять дистрибутив для меня просто унижение. Если драйвер есть и он в принципе работает, то и в Armbian он у меня заработает. Вызов принят!

Получаем проблему

Итак, первым делом накатываем Armbian. На официальной стрaнице образа для данной платы я не нашёл, но зато нашёл где эти сборки выкладываются. В общем качаем отсюда https://fi.mirror.armbian.de/archive/orangepizeroplus2-h3/archive/. Я использовал версию bullseye. Пробовал jammy, но там ровно тоже самое.

Альтернативные драйвера

Они существуют и возможно работают.

Проблема одна — их надо качать, а сети нет. Можно конечно скачать код на другом компьютере, залить на карточку и попытаться собрать на плате, но слишком много возни и вероятно потребуется докачивать зависимости.

Анализируем ошибки

В итоге имеем условно работающий Wi-Fi из каробки с куцым списком доступных сетей и ошибки в логах при загрузке фирмвари данного драйвера.

% dmesg | grep brcm brcmfmac: brcmf_fw_alloc_request: using brcm/brcmfmac43430-sdio for chip BCM43430/1 brcmfmac mmc1:0001:1: Direct firmware load for brcm/brcmfmac43430-sdio.xunlong,orangepi-zero-plus2-h3.bin failed with error -2 brcmfmac mmc1:0001:1: Falling back to sysfs fallback for: brcm/brcmfmac43430-sdio.xunlong,orangepi-zero-plus2-h3.bin brcmfmac mmc1:0001:1: Direct firmware load for brcm/brcmfmac43430-sdio.xunlong,orangepi-zero-plus2-h3.txt failed with error -2 brcmfmac mmc1:0001:1: Falling back to sysfs fallback for: brcm/brcmfmac43430-sdio.xunlong,orangepi-zero-plus2-h3.txt brcmfmac: brcmf_fw_alloc_request: using brcm/brcmfmac43430-sdio for chip BCM43430/1 brcmfmac: brcmf_c_process_clm_blob: no clm_blob available (err=-2), device may have limited channels available brcmfmac: brcmf_c_preinit_dcmds: Firmware: BCM43430/1 wl0: Mar 30 2016 11:30:56 version 7.45.77.h8.4 FWID 01-ee8a6268

Как видно оно пытается загрузить какую-то фирмварь и не может найти нужных файлов. Придётся таки разбираться, что такое firmware и как оно грузится

Linux и firmware

В общем, как выяснилось, для всяких проприетарных драйверов типа Broadcom-а у нас есть бинарные файлы (та самая firmware), которые и подгружаются родным линуксовым драйвером, чтобы всё работало как надо. Но кроме бинарника у нас есть некий конфиг, который есть ни что иное как набор переменных, которые заливаются в NVRAM драйвера.

Что не так в нашем случае

Для нашего случая всё выглядит вот так.

% ls -la /lib/firmware/brcm/*43430* ... /lib/firmware/brcm/brcmfmac43430-sdio.bin # /lib/firmware/brcm/brcmfmac43430-sdio.txt # 

Но как видно из ошибки, драйвер пытается загрузить firmware из файла с суффиксом вендора устройства, то есть /lib/firmware/brcm/brcmfmac43430-sdio.xunlong,orangepi-zero-plus2-h3.bin вместо /lib/firmware/brcm/brcmfmac43430-sdio.bin . Поэтому я решил просто создать нужные симлинки.

Забегая вперёд должен отметить, что это оказалось необязательно, а эта ошибка это скорее предупреждение. Походу драйвер таки находит фирмварь и по существующим именам. Но что сделано, то сделано и как минимум убираются сообщения об ошибках при загрузке.

После исправления имеем такую картину.

% ls -la /lib/firmware/brcm/*43430* ... /lib/firmware/brcm/brcmfmac43430-sdio.bin # /lib/firmware/brcm/brcmfmac43430-sdio.txt # /lib/firmware/brcm/brcmfmac43430-sdio.xunlong,orangepi-zero-plus2-h3.bin -> /lib/firmware/brcm/brcmfmac43430-sdio.bin /lib/firmware/brcm/brcmfmac43430-sdio.xunlong,orangepi-zero-plus2-h3.txt -> /lib/firmware/brcm/brcmfmac43430-sdio.txt

Теперь при загрузке видим следующее

% dmesg | grep brcm brcmfmac: brcmf_fw_alloc_request: using brcm/brcmfmac43430-sdio for chip BCM43430/1 # brcmfmac: brcmf_fw_alloc_request: using brcm/brcmfmac43430-sdio for chip BCM43430/1 # brcmfmac: brcmf_c_process_clm_blob: no clm_blob available (err=-2), device may have limited channels available brcmfmac: brcmf_c_preinit_dcmds: Firmware: BCM43430/1 wl0: Mar 30 2016 11:30:56 version 7.45.77.h8.4 FWID 01-ee8a6268

Задаём код региона

Несмотря на успешную загрузку фирмвари, нас осталась ошибка как раз насчёт ограничения каналов и фирмварь ругается на какой-то clm_blob . Это как оказалось ещё один бинарник с региональными настройками для данного драйвера. И с этими самыми настройками полная чехарда. В разное время за это дело отвечали следующие подсистемы.

CRDA (central regulatory domain agent)

С этим связаны рекоммендации поправить регион в /etc/default/crda , но нифига не работает, так как эта тема устарела с версии ядра 4.15

cfg80211

Есть так же рекоммендации передать регион драйверу Linux cfg80211, но это тоже устарело и сегодня каждый драйвер должен сам уметь разбираться с такими делами.

echo "options cfg80211 ieee80211_regdom=US" > /etc/modprobe.d/cfg80211.conf

clm_blob

Это по факту кусок базы данных, типа той, что использовалась в CRDA, но специфичный для данного драйвера. Как оказалось и этот метод устарел и вся информация уже должна содержаться в недрах драйвера. К слову я таки нашёл этот бинарь от Raspberry PI и подсунул для загрузки, но работать лучше не стало.

И что таки делать?

В итоге пришлось лезть в конфиг фирмвари и уже там я обнаружил подозрительную переменную ccode=ALL , поменяв значение которой, после перезагрузки я получил полный список Wi-Fi сетей.

#AP6212_NVRAM_V1.0_20140603 # 2.4 GHz, 20 MHz BW mode # The following parameter values are just placeholders, need to be updated. . xtalfreq=26000 nocrc=1 ag0=255 aa2g=1 ccode=ALL #  extpagain2g=0 . 

Но тут есть проблема — при обновлении пакета с фирмварями этот файл будет перезаписываться.

Всё чудесатее и чудесатее

Гугля по теме обнаружил ссылки на исходники с такими комментариями

/* In some cases the EFI-var stored nvram contains "ccode=ALL" or * "ccode=XV" to specify "worldwide" compatible settings. ccode=ALL is * not understood by the firmware and some of the firmware files in * linux-firmware support only 2.4 GHz and not 5 GHz when ccode=XV. */

Так, что видимо стоит попробовать вместо RU использовать XV. Возможно даже появится диапазон 5ГГц.

Я сдаюсь

Кроме всего прочего искал способ прописать ccode в драйвер через /proc или /sys.
Декомпилировал devicetree в надежде найти там способ перезаписать значения NVRAM.

Все тщетно. Походу эти фирмвари и драйвера для Broadcom писались через жопу, на скорую руку и всё, что нам остаётся это грязно патчить через подмену значения в этом текстовом конфиге.

Итого

Как оказалось в принципе по минимуму достаточно поменять ccode=ALL на ccode=RU в конфиге фирмвари драйвера.

И видимо в автозагрузку придётся добавить скрипт для замены ccode в нужном файле.

Ссылки

Источник

Оцените статью
Adblock
detector