前情提要
- 樹莓派(以下簡稱rpi)的鏡像是通過buildroot編譯出來的。
- 生成sdcard.img通過dd命令寫進sd卡中
- 之前沒有處理過跟無線相關的東西,本次希望讓樹莓派可以使用無線(客戶端)
- 由於採用buildroot ,之前未處理,所以驅動基本都是模塊,沒有正式編譯進內核
做過的事
- 編譯內核時將mac80211選項加入(Networking Support -> Wireless -> cfg80211 )
- 沒有作用
- 在看了無線芯版是
broadcom
之後,在內核編譯中搜索這個關鍵字。 - 同時想到是不是模塊沒有加載進去,於是在
/lib/modules
目錄下去找,在kernel/net/wireless
目錄下找到了lib80211相關的,都modprobe
進去,沒有效果。 - 又在
kernel/drivers/net/wireless
中找到了brcm
相關的驅動。 - 同時重新編譯的內核,將
Device Drivers -> Network device support -> PHY Device support and infrastructure
裡面的Broadcom PHYs
選中。並且將相關的都改成了編譯到內核中而不是模塊。 - 重啟之後,
ifconfig
沒有東西,但是在/sys/class/ieee80211
下面有phy0設備了。 - 接著查詢網上wifi相關工具和連接方法
- 通過* iw dev wlan0 scan*可以掃描可連接的無線。
iwlist [dev] scan
命令也一樣可以。 - 提示沒有開啟
wlan0
,於是ifconfig wlan0 up
再搜索,能找到 - 開始連接,連接使用
wpa_supplicant
命令,直接輸入此命令就可以得到提示,提示的最後一行有現成的用法wpa_supplicant -B -Dnl80211 -iwlan0 -c/etc/wpa_supplicant.conf
wpa_supplicant.conf
是寫好可以連接的無線有哪些,可以自行搜索用法。- 為了讓它自動連接工可以用
ifconfig
看到,要加入到/etc/network/interfaces
配置文件中。並體配置文件的寫法在網上搜索即可,或者照配置文件裡面的eth0
來寫 - 寫好之後
/etc/init.dS30network restart
即可,就會在ifconfig
命令中看到。 - 再重啟系統,一看還是有問題。主要在啟動順序上有問題
- 創建啟動文件
S30wpa_supplicant
用於使能wlan0
,啟動wpa_supplicant
。 - 同時加入
modprobe brcmfmac
,這是broadcom無線的驅動,可能是沒有編譯到內核中,要作為模塊加載 - 再重啟,可以了,自動連接了
補充
mac80211_hwsim
只是內核提供的無線模擬驅動brcmfmac
是broadcom的無線驅動,加載此驅動才有效果- 加載此驅動時,需要在
/lib/firmware/brcm
目錄下有brcmfmac43430-sdio.bin, brcmfmac43430-sdio.txt
文件存在,這些文件需要在linux-firmware
下去提取 - 加載後在
/sys/class/ieee80211
目錄下會生成形如phy*
的設備名,到此說明有效 - 要想利用此wifi來連接無線網絡,需要啟動wpa_supplicant,具體用戶可去查詢,然後
ifup wlan0
即可啟動連接進行dhcp地址獲取,需要先配置/etc/network/interfaces
,見下面示例文件
總結
- 之所以有這些問題,是因為不是採用rpi自己的系統,系統是通過buildroot編譯而來,跟原生的系統可能會有些不同的地方。
- 如果在
iwlist wlan0 scan
的時候返回沒有結果,這種情況可以先考慮是不是不止一個wlan
口,有可能生效的是其的口,可以嘗試。
相關文件事例
/etc/wpa_supplicant.conf
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
/etc/network/interfaces
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
/etc/init.d/S30wpa_supplicant
資料來源: https://blog.csdn.net/leishengsheng/article/details/78784148
沒有留言:
張貼留言