一次树莓派wifi 调试的过程

来源:互联网 发布:网络推广员是做什么的 编辑:程序博客网 时间:2024/06/07 22:13

前情提要

  • 树莓派(以下简称 rpi) 的镜像是通过 buildroot 编译出来的。
  • 生成 sdcard.img 通过 dd 命令写进 sd 卡中
  • 之前没有处理过跟无线相关的东西,本次希望让树莓派可以使用无线(客户端)
  • 由于采用 buildroot ,之前未处理,所以驱动基本都是模块,没有正式编译进内核

做过的事

  1. 编译内核时将 mac80211 选项加入 (Networking Support -> Wireless -> cfg80211)
  2. 没有作用
  3. 在看了无线芯版是 broadcom之后,在内核编译中搜索这个关键字。
  4. 同时想到是不是模块没有加载进去,于是在 /lib/modules目录下去找,在 kernel/net/wireless目录下找到了 lib80211 相关的,都 modprobe进去,没有效果。
  5. 又在 kernel/drivers/net/wireless中找到了 brcm 相关的驱动。
  6. 同时重新编译的内核,将 Device Drivers -> Network device support -> PHY Device support and infrastructure 里面的 Broadcom PHYs 选中。并且将相关的都改成了编译到内核中而不是模块。
  7. 重启之后,ifconfig没有东西,但是在 /sys/class/ieee80211下面有phy0设备了。
  8. 接着查询网上 wifi相关工具和连接方法
  9. 通过 * iw dev wlan0 scan*可以扫描可连接的无线。iwlist [dev] scan命令也一样可以。
  10. 提示没有开启wlan0,于是 ifconfig wlan0 up再搜索,能找到
  11. 开始连接,连接使用 wpa_supplicant命令,直接输入此命令就可以得到提示,提示的最后一行有现成的用法wpa_supplicant -B -Dnl80211 -iwlan0 -c/etc/wpa_supplicant.conf
  12. wpa_supplicant.conf是写好可以连接的无线有哪些,可以自行搜索用法。
  13. 为了让它自动连接工可以用 ifconfig看到,要加入到 /etc/network/interfaces配置文件中。并体配置文件的写法在网上搜索即可,或者照配置文件里面的 eth0来写
  14. 写好之后 /etc/init.dS30network restart 即可,就会在 ifconfig命令中看到。
  15. 再重启系统,一看还是有问题。主要在启动顺序上有问题
  16. 创建启动文件 S30wpa_supplicant 用于使能 wlan0,启动 wpa_supplicant
  17. 同时加入 modprobe brcmfmac,这是broadcom无线的驱动,可能是没有编译到内核中,要作为模块加载
  18. 再重启,可以了,自动连接了

总结

  • 之所以有这些问题,是因为不是采用 rpi 自己的系统 ,系统是通过 buildroot编译而来,跟原生的系统可能会有些不同的地方。
  • 如果在 iwlist wlan0 scan 的时候返回没有结果,这种情况可以先考虑是不是不止一个 wlan口,有可能生效的是其的口,可以尝试。

相关文件事例

  • /etc/wpa_supplicant.conf
ctrl_interface=/var/run/wpa_supplicantap_scan=1update_config=1network={  ssid="yourwifissid"  psk="yourpassword"}
  • /etc/network/interfaces
# cat /etc/network/interfaces # interface file auto-generated by buildrootauto loiface lo inet loopback#auto eth0iface eth0 inet dhcp  pre-up /etc/network/nfs_check  wait-delay 15auto wlan0iface 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=wlan0case "$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 1esacexit $?
原创粉丝点击