查看“︁Nethub用户手册”︁的源代码
←
Nethub用户手册
跳转到导航
跳转到搜索
因为以下原因,您没有权限编辑该页面:
不允许您执行您所请求的操作。
您可以查看和复制此页面的源代码。
博流智能芯片(BL616C/BL618M/BL618DG/BL616CL)的 Linux 主机通信方案,提供内核模块和用户态控制工具。 = = 系统架构 = [[index.php?title=文件:Arch_host_device.png|无框|主机-设备架构图]] '''说明''':当前控制通道通过 tty 传输,后续将支持通过 VirtualChannel 传输 AT 命令。 === 架构说明 === 整个系统分为'''主机端'''和'''设备端'''两部分: ==== 主机端(Linux) ==== '''用户空间''': * '''bflbwifictrl''':命令行工具,通过 Unix Socket 与守护进程通信 * '''bflbwifid''':守护进程,负责与设备通信和管理 WiFi 连接 * '''libbflbwifi''':静态库,提供 WiFi 控制 API * '''nethub_vchan_app''':VirtualChannel 通信程序,提供私有数据通道。以消息包为单位传输,底层接收也是一条一条完整的数据包(非流式) '''内核空间''': * '''mr_sdio.ko''':内核驱动模块,支持 SDIO 接口 * '''/dev/ttyAT''':字符设备节点,提供用户态与内核态通信接口 ==== 设备端(博流芯片) ==== '''支持的芯片型号''': * BL616C(WiFi6 + BLE + 低功耗) * BL618M(WiFi6 + BLE + PSRAM) * BL618DG(WiFi6 + BLE + 低功耗 + 双核 + 双频) * BL616CL(WiFi6 + BLE + 低功耗) === 数据流向 === <syntaxhighlight lang="text"> 用户命令:bflbwifictrl → bflbwifid → libbflbwifi → /dev/ttyAT → 内核驱动 → 设备 URC事件:设备 → 内核驱动 → /dev/ttyAT → bflbwifid → 解析处理 → 网卡配置 </syntaxhighlight> == 工作原理 == === 1. 初始化流程 === <syntaxhighlight lang="text"> ┌─────────────┐ │ 加载内核模块 │ → sudo ./build.sh load └──────┬──────┘ │ ▼ ┌─────────────┐ │ 启动守护进程 │ → sudo ./output/bflbwifid -p /dev/ttyAT0 └──────┬──────┘ │ ▼ ┌─────────────┐ │ TTY 通信建立 │ → AT 命令握手 └──────┬──────┘ │ ▼ ┌─────────────┐ │ 准备就绪 │ → 可以接收用户命令 └─────────────┘ </syntaxhighlight> === 2. WiFi 连接流程 === <syntaxhighlight lang="bash"> # 1. 用户发起连接 $ sudo ./output/bflbwifictrl connect_ap "MyWiFi" "password" # 2. bflbwifid 收到命令,发送 AT 指令到设备 AT+CWJAP="MyWiFi","password" # 3. 设备返回 URC 事件 +CW:CONNECTING +CW:CONNECTED +CW:GOTIP,IP:192.168.1.100,gw:192.168.1.1,mask:255.255.255.0,dns:192.168.1.1 # 4. bflbwifid 解析 URC,自动配置 Linux 网卡(如果启用) ip addr add 192.168.1.100/24 dev mr_eth0 ip route add default via 192.168.1.1 dev mr_eth0 # 5. 连接完成,可以访问网络 ping -c 4 8.8.8.8 </syntaxhighlight> == 目录结构 == <syntaxhighlight lang="text"> nethub/ ├── build.sh # 一键构建脚本 ├── README.md # 英文文档 ├── README_CN.md # 本文档(中文) ├── doc/ # 文档和图片 │ └── images/ │ └── arch_host_device.png # 架构图 ├── kernel/ # 内核模块源码 │ ├── Kconfig # 内核配置菜单 │ ├── Makefile # 编译配置 │ ├── sdio/ # SDIO 驱动 │ ├── net/ # 网络接口驱动 │ └── tty/ # TTY 字符设备驱动 ├── virtualchan/ # VirtualChan 通信程序 ├── bflbwifictrl/ # WiFi 控制模块 │ ├── app/ # 应用程序 │ │ ├── bflbwifid # 守护进程 │ │ └── bflbwifictrl # CLI 工具 │ ├── include/ # 头文件 │ │ ├── bflbwifi.h │ │ ├── bflbwifi_log.h │ │ └── bflbwifi_netif.h │ └── src/ # 源代码 │ ├── bflbwifi_*.c # 各功能模块 │ └── Makefile └── output/ # 编译输出(构建后生成) ├── mr_sdio.ko # 内核模块 ├── bflbwifid # WiFi 守护进程 └── bflbwifictrl # WiFi 命令行工具 </syntaxhighlight><syntaxhighlight lang="text"> nethub/ ├── build.sh # 一键构建脚本 ├── kernel/ # 内核模块(mr_sdio 驱动) ├── virtualchan/ # VirtualChan 通信程序 ├── bflbwifictrl/ # WiFi 控制(CLI + 守护进程) ├── output/ # 编译输出目录 │ ├── mr_sdio.ko # 内核模块 │ ├── bflbwifid # WiFi 守护进程 │ └── bflbwifictrl # WiFi 命令行工具 └── README_CN.md # 本文档 </syntaxhighlight> == 快速开始 == === 1. 编译 === <syntaxhighlight lang="bash"> cd nethub/ ./build.sh build </syntaxhighlight>编译产物将输出到 <code>output/</code> 目录。 === 2. 加载内核模块 === <syntaxhighlight lang="bash"> sudo ./build.sh load </syntaxhighlight> === 3. 运行 WiFi 守护进程 === <syntaxhighlight lang="bash"> # 启动守护进程(默认使用 /dev/ttyAT0) sudo ./output/bflbwifid -p /dev/ttyAT0 # 或查看帮助 sudo ./output/bflbwifid -h </syntaxhighlight> === 4. 使用 WiFi 控制工具 === <syntaxhighlight lang="bash"> # 扫描 AP sudo ./output/bflbwifictrl scan # 连接 AP(无密码) sudo ./output/bflbwifictrl connect_ap "SSID" # 连接 AP(有密码) sudo ./output/bflbwifictrl connect_ap "SSID" "password" # 查看状态 sudo ./output/bflbwifictrl status # 断开连接 sudo ./output/bflbwifictrl disconnect </syntaxhighlight> == 命令说明 == === build.sh 命令 === {| class="wikitable" !命令 !说明 |- |<code>build</code> |编译内核模块、virtualchan 和 bflbwifictrl |- |<code>clean</code> |清理所有编译产物 |- |<code>load</code> |加载内核模块 <code>mr_sdio.ko</code> |- |<code>unload</code> |卸载内核模块 |} === bflbwifictrl 命令 === {| class="wikitable" !命令 !说明 |- |<code>scan</code> |扫描附近 AP |- |<code>connect_ap <SSID> [密码]</code> |连接到 AP |- |<code>disconnect</code> |断开连接 |- |<code>status</code> |查看连接状态 |- |<code>version</code> |查看固件版本 |} == 功能特性 == === bflbwifid(守护进程) === * '''TTY 通信''':与 WiFi 模块通过串口通信 * '''AT 协议''':解析和封装 AT 指令 * '''状态管理''':维护 WiFi 连接状态 * '''Unix Socket''':提供 IPC 通信接口 * '''GOTIP 自动配置'''(可选):收到 IP 后自动配置 Linux 网卡 === bflbwifictrl(命令行工具) === * '''CLI 接口''':通过 Unix Socket 与守护进程通信 * '''简洁易用''':提供常用 WiFi 操作命令 * '''状态查询''':实时显示连接信息 === GOTIP 自动配置功能(默认启用) === 当 WiFi 模块获取 IP 后,会自动: # 解析 URC:<code>+CW:GOTIP,IP:xxx,gw:xxx,mask:xxx,dns:xxx</code> # 配置网卡:<code>ip addr add</code>、<code>ip route add default</code> # 配置 DNS:写入 <code>/etc/resolv.conf</code> '''注意事项''': * 部分host需要禁用 NetworkManager:<code>sudo systemctl disable --now NetworkManager</code> * 需要禁用 dhcpcd:<code>sudo systemctl disable --now dhcpcd</code> * 默认网卡名为 <code>mr_eth0</code>(可在代码中修改) == 开发流程 == === 修改代码后重新编译 === <syntaxhighlight lang="bash"> # 只编译 bflbwifictrl cd bflbwifictrl make clean make # 或使用 build.sh 编译所有 cd .. ./build.sh build </syntaxhighlight> === 重新加载内核模块 === <syntaxhighlight lang="bash"> sudo ./build.sh unload sudo ./build.sh load </syntaxhighlight> == 常见问题 == === 1. 找不到串口设备 === <syntaxhighlight lang="bash"> # 查看可用串口 ls /dev/ttyACM* /dev/ttyUSB* # 添加用户到 dialout 组(避免每次都用 sudo) sudo usermod -aG dialout $USER # 然后重新登录 </syntaxhighlight> === 2. IP 配置后自动消失 === '''原因''':NetworkManager 或 dhcpcd 覆盖了手动配置。 '''解决''':<syntaxhighlight lang="bash"> # 禁用 NetworkManager sudo systemctl stop NetworkManager sudo systemctl disable NetworkManager # 禁用 dhcpcd sudo systemctl stop dhcpcd sudo systemctl disable dhcpcd </syntaxhighlight> === 3. 查看调试日志 === <syntaxhighlight lang="bash"> # 查看守护进程日志 tail -f /var/log/bflbwifi.log # 查看内核日志 dmesg -w # 守护进程前台运行(查看实时输出) sudo ./output/bflbwifid -p /dev/ttyAT0 --foreground </syntaxhighlight> === 4. 编译错误 === <syntaxhighlight lang="bash"> # 确保安装必要的开发包 sudo apt-get install build-essential libc-dev-i386 # 树莓派需要安装 32 位兼容库 sudo apt-get install libc6:i386 libstdc++6:i386 </syntaxhighlight> == 系统要求 == * '''内核版本''':Linux 3.7+(内核模块需要) * '''架构''':x86_64、ARMv7(树莓派)、ARMv8(树莓派 4/5) * '''依赖''':gcc、make、libc、pthread '''兼容性说明''': * ✅ 用户空间程序(bflbwifid/bflbwifictrl):无内核版本限制 * ✅ 内核模块(mr_sdio.ko):支持 Linux 3.7+ * ✅ 已测试:Linux raspberrypi 6.12.25+rpt-rpi-v8 == 许可证 == 本项目遵循 Bouffalo SDK 许可协议。
返回
Nethub用户手册
。
导航菜单
个人工具
登录
命名空间
页面
讨论
大陆简体
查看
阅读
查看源代码
查看历史
更多
搜索
导航
首页
最近更改
随机页面
MediaWiki帮助
工具
链入页面
相关更改
特殊页面
页面信息