Wifi

Buildroot 零W 無線

  • March 20, 2022

有沒有人在 Raspberry Pi Zero W 的 buildroot 中使用 WiFi?我找不到任何線上筆記或演練。

raspberrypi0_defconfig執行良好,但不包括無線。

我正在使用 buildroot 的最新版本,2017-08。我添加了 rpi-wifi-firmware。連接到 WiFi 網路至少需要哪些軟體包?

原來不正確的 /etc/network/interfaces 和/或 /etc/wpa_supplicant 是罪魁禍首。在建構之間,我一直在添加額外的包,所以我不能 100% 確定這些是否都需要,但無論如何這些都是我包括的:

硬體處理 Hardware Handling -> Firmware -> linux-firmware -> Broadcom BRCM bcm43xxx Hardware Handling -> Firmware -> rpi-firmware (extended 'x' firmware) Hardware Handling -> Firmware -> Install DTB overlays Hardware Handling -> Firmware -> rpi-wifi-firmware Hardware Handling -> dbus Hardware Handling -> dbus-glib

網路應用 Networking applications -> dhcpd Networking applications -> ifupdown scripts Networking applications -> iproute2 Networking applications -> iptables Networking applications -> wireless-tools (+install shared lib) Networking applications -> wpa_supplicant Networking applications -> wpa_supplicant - Enable 80211 support Networking applications -> wpa_supplicant - Enable EAP Networking applications -> wpa_supplicant - Install wpa_cli binary Networking applications -> wpa_supplicant - Install wpa_client shared library Networking applications -> wpa_supplicant - Install wpa_passphrase binary

我認為任何其他類別都與 WiFi 網路無關。

/etc/網路/介面 auto lo iface lo inet loopback allow-hotplug wlan0 iface wlan0 inet manual wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

/etc/wpa_supplicant.conf ctrl_interface=/var/run/wpa_supplicant update_config=1 network={ ssid="OpenWrt" psk=<your psk key here> }

啟動後我執行: wpa_supplicant -B -i wlan0 -W -D nl80211, wext -c /etc/wpa_supplicant.conf wpa_cli -B -i wlan0 -p /var/run/wpa_supplicant -a /sbin/wpa_action dhcpcd -q -w

我希望網路在啟動後能夠很好地啟動,因為它是嵌入式 linux,並且需要先啟動一些更重要的東西。因此,我會將它添加到某處的一些啟動後腳本中。如果您想在啟動時啟動界面,請將這些添加到您的啟動過程中的某個位置。我會認為這超出了這個問題的範圍。

所以,這行得通,它並不完美,但對於像我這樣掙扎的人來說,這將是一個很好的起點。我很確定不是所有提到的包都是最低限度的,/sbin/wpa_action 也不存在,但是當你離開它時,你會進入互動模式。一旦我更好地掌握了這個答案,我將對其進行改進。歡迎提出建議!

我還嘗試使用 buildroot 找到 RPi Zero W 的“最低限度無線”,因此這個問答在搜尋結果中的排名很高。儘管最初的答案有點幫助,但它絕對不是最好的,所以我認為值得分享我自己的發現:

使用 buildroot 2018.02.2

make raspberrypi0_defconfig

清理你的配置。然後(make menuconfig和)從目標包中選擇以下內容:

Hardware Handling -> Firmware -> rpi-wifi-firmware
Networking applications -> wpa_supplicant
Networking applications -> wpa_supplicant - Enable 80211 support

其他所有必要的東西都應該已經預先選擇好了。

然後在**/etc/network/interfaces**

auto wlan0
iface wlan0 inet dhcp
 pre-up wpa_supplicant -D nl80211 -i wlan0 -c /etc/wpa_supplicant.conf -B
 post-down killall -q wpa_supplicant

在**/etc/wpa_supplicant.conf**

ctrl_interface=/var/run/wpa_supplicant
ap_scan=1

network={
  ssid="My WLAN"
  psk="my_wlan_password"
}

現在我們仍然缺少秘密成分:必須在網路初始化腳本啟動之前載入 wifi 驅動程序。您可以 啟用 WCHAR 支持(在 Toolchain -menu),以便將eudev作為*/dev 管理*(在系統配置-menu),它將自動處理驅動程序載入。實際上,如果您要將 UBS 設備連接到您的 RPi,我建議您這樣做。…

…但如果沒有,請在執行 rc 腳本之前自己編輯**/etc/inittabmodprobe brcmfmac :**

...
# Load Wifi driver
::sysinit:/sbin/modprobe brcmfmac 

# now run any rc scripts
::sysinit:/etc/init.d/rcS
...

就是這樣。


更新 21.03.2022。使用最新的 buildrootgit://git.buildroot.net/buildroot似乎有一些變化:

  1. rpi-wifi-firmware重命名為brcmfmac-sdio-firmware-rpi-wifi可以brcmfmac_sdio-firmware-rpi在硬體處理下找到的。
  2. ctrl_interface=/var/run/wpa_supplicantatwpa_supplicant.conf似乎不再有效也沒有必要(如果它曾經是的話)

我還發現,如果通過 SSH 訪問需要 wifi,則OpenSSH應該配對以haveged更快地初始化隨機生成器。沒有它,啟動時間可能是幾分鐘!

為了讓開發板為直接無頭訪問做好充分準備並考慮以上所有因素,我製作了一個帶有 rpi-wifi 包的外部 buildroot 庫,它處理從 wifi 設置到 SSH 配置的所有必要配置:

我的 buildroot-externals 儲存庫中的 rpi-wifi

引用自:https://unix.stackexchange.com/questions/396151