资讯详情

一次raspberrypi 的 wifi 玩弄过程

前情提要

  • 树莓派(以下简称 rpi) 镜像是通过的 编译。
  • 生成 通过 命令写进 sd 卡中
  • 我以前没有处理过与无线相关的事情。这一次,我希望树莓派可以使用无线(客户端)
  • 由于采用 buildroot ,以前没有处理过,所以驱动基本上是模块,没有正式编译到核心

做过的事

  1. 将编译内核 mac80211 选项加入 ()
  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下面有设备了。
  8. 接着查询网上 相关工具及连接方法
  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,这是无线驱动器可能不会编译成内核,而是作为模块加载
  18. 重启,可以,自动连接

补充

  1. mac80211_hwsim只有内核提供的无线模拟驱动
  2. brcmfmac是broadcom加载此驱动的无线驱动是有效的
  3. 加载此驱动器时,需要 /lib/firmware/brcm目录 下有 brcmfmac43430-sdio.bin, brcmfmac43430-sdio.txt这些文件需要存在 linux-firmware下去提取
  4. 加载后在 /sys/class/ieee80211会在目录下生成形状 phy*设备名称有效
  5. 要想利用此wifi 来连接无线网络,需要启动 wpa_supplicant,具体用户可以查询,然后 ifup wlan0 可启动连接dhcp 获取地址需要先配置 /etc/network/interfaces ,见下面的示例文件

总结

  • 这些问题之所以存在,是因为它们没有被采用 rpi 自己的系统 ,系统是通过 编译可能与原始系统不同。
  • 如果在 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 $?  

标签: ds30p1传感器ds30nb传感器ds30c1光电传感器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台