Buildroot 零W 無線
有沒有人在 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/inittab和modprobe brcmfmac :**
... # Load Wifi driver ::sysinit:/sbin/modprobe brcmfmac # now run any rc scripts ::sysinit:/etc/init.d/rcS ...
就是這樣。
更新 21.03.2022。使用最新的 buildroot
git://git.buildroot.net/buildroot
似乎有一些變化:
rpi-wifi-firmware
重命名為brcmfmac-sdio-firmware-rpi-wifi
可以brcmfmac_sdio-firmware-rpi
在硬體處理下找到的。- 行
ctrl_interface=/var/run/wpa_supplicant
atwpa_supplicant.conf
似乎不再有效也沒有必要(如果它曾經是的話)我還發現,如果通過 SSH 訪問需要 wifi,則
OpenSSH
應該配對以haveged
更快地初始化隨機生成器。沒有它,啟動時間可能是幾分鐘!為了讓開發板為直接無頭訪問做好充分準備並考慮以上所有因素,我製作了一個帶有 rpi-wifi 包的外部 buildroot 庫,它處理從 wifi 設置到 SSH 配置的所有必要配置: