一次raspberrypi 的 wifi 玩弄过程
2018-02-06 00:00
441 查看
前情提要
树莓派(以下简称 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
ctrl_interface=/var/run/wpa_supplicant ap_scan=1 update_config=1 network={ ssid="yourwifissid" psk="yourpassword" }
/etc/network/interfaces
# cat /etc/network/interfaces # interface file auto-generated by buildroot auto lo iface lo inet loopback #auto eth0 iface eth0 inet dhcp pre-up /etc/network/nfs_check wait-delay 15 auto wlan0 iface wlan0 inet dhcp wpa-conf /etc/wpa_supplicant.conf
/etc/init.d/S30wpa_supplicant
# cat /etc/init.d/S30wpa_supplicant #!/bin/sh # # Start the wpa_supplicant.... # dev=wlan0 case "$1" in start) printf "Starting wpa_supplicant: " modprobe brcmfmac ifconfig $dev up /usr/sbin/wpa_supplicant -B -Dnl80211 -i$dev -c/etc/wpa_supplicant.conf [ $? = 0 ] && echo "OK" || echo "FAIL" ;; stop) printf "Stopping wpa_supplicant: " killall wpa_supplicant [ $? = 0 ] && echo "OK" || echo "FAIL" ;; restart|reload) "$0" stop "$0" start ;; *) echo "Usage: $0 {start|stop|restart}" exit 1 esac exit $?
相关文章推荐
- 一次树莓派wifi 调试的过程
- 记一次protobuf编译成objectC过程 For ios开发
- 记一次安全检测的全部过程
- 记录一次爬取淘宝/天猫评论数据的过程
- 记录一次redis数据库搭建过程并详细说明配置
- 关于数据恢复,记一次修复SD卡 RAW 之后的修复过程
- 对Linux服务器的一次渗透测试过程
- Yii2.0源码阅读-一次请求的完整过程
- 一次刷新组的刷新过程
- 记一次WordPress 安装的过程
- 一次delete速度异常慢的处理过程
- OpenWRT的WiFi部分使能过程详解
- NetWork——描述一次完整的网络请求过程
- 记一次排查log4net 不输出日志的解决过程
- 一次死锁情况分析过程
- [RK3288][Android6.0] WiFi之wpa_supplicant初始化过程
- 一次电脑故障的排除过程
- SQLite:一次正常执行事务的过程
- 【Oracle 函数索引】一次数据库的优化过程
- [RK3288][Android6.0] WIFI接入过程的加密和认证方式小结