硬件资源

WiFi

今天研究 WiFi,所以重点关注板子的这两个部件:

部件 型号 描述
SOC BCM2837B0 4 核 Cortex-A53, 64位,ARMv8-A 指令集架构,1.4GHz
WiFi / 蓝牙 BCM/CYW43455 802.11 b/g/n/ac + Bluetooth 4.2 BLE

关于 WiFi 芯片的名称 BCM/CYW43455,这里我想说一下。芯片丝印上是 CYW43455,但是驱动名称又是 brcmfmac.ko,包括芯片的固件名称是 brcmfmac43455-sdio.bin。CYW 和 Broadcom 明明是两家公司呀,一家是赛普拉斯,一家是博通,这颗芯片到底和这两家是什么关系呀?
后来了解到,原来赛普拉斯收购了博通的 Wi-Fi,蓝牙和 ZigBee 物联网产品线和相关知识产权。这样一切都解释的通了,应该是 CYW43455 = BCM43455 = BCM/CYW43455。收购关系产生的不同叫法而已。

构建镜像

我们选择使用 buildroot 构建镜像,不使用官方镜像,不然就不需要费心考虑这些底层细节了。

人生四大境界

为什么要费心自己去构建镜像呢?是因为麻烦和收获是成正比的,遇到的麻烦越多,才能思考得更深,从而收获得更多。这就是为什么,懂的越多,不懂的就越多。

人生四大境界:

  1. 不知道自己不知道
  2. 知道自己不知道
  3. 不知道自己知道
  4. 知道自己知道

很多时候停留在第一层。。。

努力让自己到达第二层,之后就好办了。

default 编译

buildroot 选择 raspberrypi3_defconfig 进行编译,烧录后是没有 WiFi 的,因为默认配置选项没有启用 WiFi。

启用 WiFi

make menuconfig 使能以下选项

  1. Target packages → Hardware handling → Firmware → rpi-wifi-firmware
  2. Target packages → Hardware handling → Firmware → rpi-firmware

安装驱动

将编译好的镜像 sdcard.img 烧录到 SD 卡,启动系统。
/lib/modules/5.10.36-v7/kernel/drivers/net/wireless/broadcom/brcm80211/brcmfmac 目录下有 brcmfmac.ko,我们手动将它安装

# modprobe brcmfmac.ko

查看 WiFi 是否驱动成功

# ifconfig -a
eth0      Link encap:Ethernet  HWaddr B8:27:EB:8A:BC:F4inet addr:192.168.1.38  Bcast:192.168.1.255  Mask:255.255.255.0inet6 addr: fe80::ba27:ebff:fe8a:bcf4/64 Scope:Linkinet6 addr: 240e:3a1:1848:e1e0:ba27:ebff:fe8a:bcf4/64 Scope:GlobalUP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1RX packets:3032 errors:0 dropped:96 overruns:0 frame:0TX packets:449 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000RX bytes:210412 (205.4 KiB)  TX bytes:61314 (59.8 KiB)lo        Link encap:Local Loopbackinet addr:127.0.0.1  Mask:255.0.0.0inet6 addr: ::1/128 Scope:HostUP LOOPBACK RUNNING  MTU:65536  Metric:1RX packets:0 errors:0 dropped:0 overruns:0 frame:0TX packets:0 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)wlan0     Link encap:Ethernet  HWaddr B8:27:EB:DF:E9:A1BROADCAST MULTICAST  MTU:1500  Metric:1RX packets:0 errors:0 dropped:0 overruns:0 frame:0TX packets:0 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

看到已经有 wlan0 设备了,说明 WiFi 子卡驱动成功,接下来只要 ifconfig wlan0 up,然后配合 wpa_supplicant 和 hostapd 就可以开心地使用 WiFi 了。

细节

成功驱动 WiFi 之后,我们对前面的操作进行分析,使我们对底层细节更加了解。

  1. 选中 rpi-wifi-firmware 是为了让镜像包含以下三个文件

    brcmfmac43455-sdio.bin
    brcmfmac43455-sdio.clm_blob
    brcmfmac43455-sdio.txt
    

    其中 brcmfmac43455-sdio.bin 就是 BCM/CYW43455 子卡的固件

  2. 选中 rpi-firmware 是为了让镜像包含 brcmfmac.ko,这个文件就是 BCM/CYW43455 子卡的驱动

在安装驱动 brcmfmac.ko 时,驱动会将 brcmfmac43455-sdio.bin 固件安装到子卡。这样,子卡能够正常运行,驱动也能正常运行,两者一对接,WiFi 功能就实现了,后面再启用应用层软件 wpa_supplicant 或 hostapd,就可以配置 WiFi 作为 STA 或 AP 进行工作了。

技术统览

buildroot 树莓派3B+ WiFi相关推荐

  1. 树莓派3B+ WiFi 和 VNC 摄像头 设置 (简单快捷少命令)

    1.树莓派3B+主板+电源(5V 2A)充电器或充电宝都可以. 本例用5V 2A小米充电器,不建议用5V 1A电源,实测连USB风扇都带不起,电流过低主板不稳定,电源指示灯闪烁: 2.SD卡最好8G以 ...

  2. 树莓派3B+ wifi 5G连接

    新烧的Raspbian 系统,一开始需要设置wifi的一些配置,其中会选择一个国家(set country),一开始选择的是CN(中国),发现只能连接2.4G的网络,5G的网络连接不上,这很奇怪, 因 ...

  3. 树莓派3B的WiFi中文乱码及搜索不到附近的WiFi_解决方案:

    树莓派3B的WiFi中文乱码及搜索不到附近的WiFi_解决方案: 参考文章: (1)树莓派3B的WiFi中文乱码及搜索不到附近的WiFi_解决方案: (2)https://www.cnblogs.co ...

  4. BG2RHE - 树莓派3B+外置wifi解决金属外壳屏蔽问题

       树莓派3B+内置了wifi和蓝牙,使用更加方便了.但是,树莓派3B+的发热量很大,如果你需要日常携带树莓派,一定需要一个美观漂亮的外壳,当然大部分外壳都配有散热风扇.我是个器材控,最受不了满身孔 ...

  5. 树莓派3b+安装openwrt 配置wan lan和wifi

    树莓派3b+安装openwrt 配置wan lan和wifi 1.配置网络 修改/etc/config/network 注释掉option ifname 'eth0'一行,为防止与路由器地址冲突,将其 ...

  6. 树莓派3B+不能连接5G的Wi-Fi热点

    树莓派3B+不能连接5G的Wi-Fi热点原因 打开raspberry pi configuration 打开raspberry pi configuration 在localization页面,看到w ...

  7. 树莓派3B+重装系统并配置WiFi

    同步发布在个人网站:https://www.zhyong.cn 树莓派简介 树莓派(英语:Raspberry Pi),是一款基于Linux的单片机计算机.它由英国的树莓派基金会所开发,目的是以低价硬件 ...

  8. 树莓派3B+装ubuntu server后开启wifi

    WIFI设置步骤: https://www.cnblogs.com/dingbj/p/rasperpi3B.html 树莓派安装非官方系统没有raspi-config命令的解决方法: https:// ...

  9. 树莓派3b——使用360wifi(小度wifi、小米wifi)开启热点

    前言 树莓派3b板子自带了wifi模块,但wifi模块只能开启网卡模式或热点模式,也就是说使用自身的wifi开了热点后,就不能在连接其他的wifi了.当然,使用自身的wifi开启热点,然后额外插入其他 ...

最新文章

  1. 项目: 图片放大缩小。
  2. c字符串分割成数组_leetcode第31双周赛第三题leetcode1525. 字符串的好分割数目
  3. 临时停车码-扫码拨号发信息HTML源码
  4. 启动ubuntu无反应_仅支持legacy bios 情况下 win10 安装 ubuntu 双系统踩的一坑
  5. MySQL下bin-log的三种模式(ROW、Statement、Mixed)
  6. java servlet spring_带着新人简单看看servlet到springmvc
  7. php是什么博客园,PHP 架构之路 - Richards - 博客园
  8. libc.so.6被删后导致系统无法使用的原因及解决方法
  9. luhn算法java_Java信用卡验证– Java中的Luhn算法
  10. 听说杭州湾大桥因为影响候鸟迁徙被抗议
  11. coreseek笔记
  12. pycharm更新pip提示Requirement already satisfied
  13. Android开发之使用贝塞尔曲线实现黏性水珠下拉效果
  14. WhatsApp中的小标记是什么意思?
  15. mac、parallel是什么
  16. oracle12c口令文件,学习笔记:Oracle 12C ASM 新特性 共享密码文件
  17. matlab之经验分布图
  18. 钝化程序模式SOA架构BPM
  19. 计算机电源怎么设置玩游戏不卡,端游绝地求生怎么设置不卡
  20. 使用HTML编写浣溪沙,《浣溪沙》版本+原文+拼音版+翻译+赏析+作者

热门文章

  1. 孙俪邓超不婚缘于单亲阴影?
  2. 行云创新:用云原生,实现企业数字化转型最短路径
  3. [乐意黎原创]npm run dev 时抛'cross-env' is not recognized as an internal or external command的解决方法
  4. Python - day1 借鉴洪卫
  5. 辛普森悖论 - 一个统计学上的悖论
  6. HT合泰单片机入门教程(第一章 HT单片机环境搭建)
  7. WebRTC安全研究
  8. 乔布斯遗孀裸捐 250 亿美元财产:没兴趣累积财富
  9. tcp_tw_recycle 参数导致的K8S网络问题
  10. c++制作小游戏2048