Nethub用户手册:修订间差异
跳转到导航
跳转到搜索
无编辑摘要 |
|||
| (未显示2个用户的10个中间版本) | |||
| 第1行: | 第1行: | ||
基于BL616C/BL618M/BL618DG/BL616CL 的 Linux 主机通信方案,提供内核模块和用户态控制工具。 | |||
= = | == 目录 == | ||
* [[Nethub用户手册#1. 系统架构|1. 系统架构]] | |||
* [[Nethub用户手册#2. 快速开始|2. 快速开始]] | |||
* [[Nethub用户手册#3. 开发指南|3. 开发指南]] | |||
* [[Nethub用户手册#4. 常见问题|4. 常见问题]] | |||
== | == 1. 系统架构 == | ||
[[文件:Arch_host_device.png|800px]] | |||
'''说明''':当前控制通道通过 tty 传输,后续将支持通过 VirtualChannel 传输 AT 命令。 | |||
''' | |||
=== 1.1 组件说明 === | |||
{| class="wikitable" | |||
!组件 | |||
!类型 | |||
!说明 | |||
|- | |||
|bflbwifictrl | |||
|用户态 | |||
|命令行工具,通过 Unix Socket 与守护进程通信 | |||
|- | |||
|bflbwifid | |||
|用户态 | |||
|守护进程,负责设备通信和 WiFi 连接管理 | |||
|- | |||
|libbflbwifi | |||
|用户态 | |||
|静态库,提供 WiFi 控制 API | |||
|- | |||
|nethub_vchan_app | |||
|用户态 | |||
|VirtualChannel 通信程序,提供私有数据通道(消息包传输,非流式) | |||
|- | |||
|mr_sdio.ko | |||
|内核态 | |||
|内核驱动模块,支持 SDIO 接口 | |||
|} | |||
=== 1.2 数据流向 === | |||
=== 数据流向 === | |||
<syntaxhighlight lang="text"> | <syntaxhighlight lang="text"> | ||
用户命令: | |||
bflbwifictrl → bflbwifid → libbflbwifi → /dev/ttyAT → 内核驱动 → 设备 | |||
URC事件: | |||
设备 → 内核驱动 → /dev/ttyAT → bflbwifid → 解析处理 → 网卡配置 | |||
工作流程: | |||
加载内核模块 → 启动守护进程 → TTY 通信建立 → 准备就绪 | |||
</syntaxhighlight> | </syntaxhighlight> | ||
== 2. 快速开始 == | |||
本演示展示了完整的操作流程:编译 → 加载内核模块 → 启动守护进程 → WiFi 连接 → 网络通信 → 消息收发。 | |||
[[文件:Nethub_sdio_quickstart_demo.gif]] | |||
=== 1 | === 2.1 编译和加载内核模块 === | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
cd nethub/ | cd nethub/ | ||
./build.sh build | ./build.sh build | ||
sudo ./build.sh load | sudo ./build.sh load | ||
</syntaxhighlight> | </syntaxhighlight> | ||
=== | === 2.2 运行 WiFi 守护进程 === | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
# 启动守护进程(默认使用 /dev/ttyAT0) | # 启动守护进程(默认使用 /dev/ttyAT0) | ||
| 第147行: | 第74行: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
=== | === 2.3 使用 WiFi 控制工具 === | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
# 扫描 AP | # 扫描 AP | ||
| 第165行: | 第92行: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
== | == 3. 开发指南 == | ||
=== 3.1 系统要求 === | |||
=== build.sh 命令 === | * '''内核版本''':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 | |||
=== 3.2 命令参考 === | |||
==== build.sh 命令 ==== | |||
{| class="wikitable" | {| class="wikitable" | ||
!命令 | !命令 | ||
| 第185行: | 第126行: | ||
|} | |} | ||
=== bflbwifictrl 命令 === | ==== bflbwifictrl 命令 ==== | ||
{| class="wikitable" | {| class="wikitable" | ||
!命令 | !命令 | ||
| 第206行: | 第147行: | ||
|} | |} | ||
== 功能特性 == | === 3.3 功能特性 === | ||
=== bflbwifid(守护进程) === | ==== bflbwifid(守护进程) ==== | ||
* '''TTY 通信''':与 WiFi 模块通过串口通信 | * '''TTY 通信''':与 WiFi 模块通过串口通信 | ||
| 第216行: | 第157行: | ||
* '''GOTIP 自动配置'''(可选):收到 IP 后自动配置 Linux 网卡 | * '''GOTIP 自动配置'''(可选):收到 IP 后自动配置 Linux 网卡 | ||
=== bflbwifictrl(命令行工具) === | ==== bflbwifictrl(命令行工具) ==== | ||
* '''CLI 接口''':通过 Unix Socket 与守护进程通信 | * '''CLI 接口''':通过 Unix Socket 与守护进程通信 | ||
| 第222行: | 第163行: | ||
* '''状态查询''':实时显示连接信息 | * '''状态查询''':实时显示连接信息 | ||
=== GOTIP 自动配置功能(默认启用) === | ==== GOTIP 自动配置功能(默认启用) ==== | ||
当 WiFi 模块获取 IP 后,会自动: | 当 WiFi 模块获取 IP 后,会自动: | ||
| 第235行: | 第176行: | ||
* 默认网卡名为 <code>mr_eth0</code>(可在代码中修改) | * 默认网卡名为 <code>mr_eth0</code>(可在代码中修改) | ||
== | === 3.4 代码修改与编译 === | ||
=== 修改代码后重新编译 === | ==== 修改代码后重新编译 ==== | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
# 只编译 bflbwifictrl | # 只编译 bflbwifictrl | ||
cd bflbwifictrl | cd bflbwifictrl | ||
make clean | make clean && make | ||
make | |||
# 或使用 build.sh 编译所有 | # 或使用 build.sh 编译所有 | ||
| 第249行: | 第189行: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
=== 重新加载内核模块 === | ==== 重新加载内核模块 ==== | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
sudo ./build.sh unload | sudo ./build.sh unload | ||
| 第255行: | 第195行: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
== 常见问题 == | == 4. 常见问题 == | ||
=== 1 | === 4.1 找不到串口设备 === | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
# 查看可用串口 | # 查看可用串口 | ||
| 第267行: | 第207行: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
=== 2 | === 4.2 IP 配置后自动消失 === | ||
'''原因''':NetworkManager 或 dhcpcd 覆盖了手动配置。 | '''原因''':NetworkManager 或 dhcpcd 覆盖了手动配置。 | ||
| 第280行: | 第220行: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
=== 3 | === 4.3 查看调试日志 === | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
# 查看守护进程日志 | # 查看守护进程日志 | ||
| 第292行: | 第232行: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
=== 4. 编译错误 === | === 4.4 编译错误 === | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
# 确保安装必要的开发包 | # 确保安装必要的开发包 | ||
| 第300行: | 第240行: | ||
sudo apt-get install libc6:i386 libstdc++6:i386 | sudo apt-get install libc6:i386 libstdc++6:i386 | ||
</syntaxhighlight> | </syntaxhighlight> | ||
2026年2月28日 (六) 07:23的最新版本
基于BL616C/BL618M/BL618DG/BL616CL 的 Linux 主机通信方案,提供内核模块和用户态控制工具。
目录
1. 系统架构
说明:当前控制通道通过 tty 传输,后续将支持通过 VirtualChannel 传输 AT 命令。
1.1 组件说明
| 组件 | 类型 | 说明 |
|---|---|---|
| bflbwifictrl | 用户态 | 命令行工具,通过 Unix Socket 与守护进程通信 |
| bflbwifid | 用户态 | 守护进程,负责设备通信和 WiFi 连接管理 |
| libbflbwifi | 用户态 | 静态库,提供 WiFi 控制 API |
| nethub_vchan_app | 用户态 | VirtualChannel 通信程序,提供私有数据通道(消息包传输,非流式) |
| mr_sdio.ko | 内核态 | 内核驱动模块,支持 SDIO 接口 |
1.2 数据流向
用户命令:
bflbwifictrl → bflbwifid → libbflbwifi → /dev/ttyAT → 内核驱动 → 设备
URC事件:
设备 → 内核驱动 → /dev/ttyAT → bflbwifid → 解析处理 → 网卡配置
工作流程:
加载内核模块 → 启动守护进程 → TTY 通信建立 → 准备就绪
2. 快速开始
本演示展示了完整的操作流程:编译 → 加载内核模块 → 启动守护进程 → WiFi 连接 → 网络通信 → 消息收发。
2.1 编译和加载内核模块
cd nethub/
./build.sh build
sudo ./build.sh load
2.2 运行 WiFi 守护进程
# 启动守护进程(默认使用 /dev/ttyAT0)
sudo ./output/bflbwifid -p /dev/ttyAT0
# 或查看帮助
sudo ./output/bflbwifid -h
2.3 使用 WiFi 控制工具
# 扫描 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
3. 开发指南
3.1 系统要求
- 内核版本: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
3.2 命令参考
build.sh 命令
| 命令 | 说明 |
|---|---|
build
|
编译内核模块、virtualchan 和 bflbwifictrl |
clean
|
清理所有编译产物 |
load
|
加载内核模块 mr_sdio.ko
|
unload
|
卸载内核模块 |
bflbwifictrl 命令
| 命令 | 说明 |
|---|---|
scan
|
扫描附近 AP |
connect_ap <SSID> [密码]
|
连接到 AP |
disconnect
|
断开连接 |
status
|
查看连接状态 |
version
|
查看固件版本 |
3.3 功能特性
bflbwifid(守护进程)
- TTY 通信:与 WiFi 模块通过串口通信
- AT 协议:解析和封装 AT 指令
- 状态管理:维护 WiFi 连接状态
- Unix Socket:提供 IPC 通信接口
- GOTIP 自动配置(可选):收到 IP 后自动配置 Linux 网卡
bflbwifictrl(命令行工具)
- CLI 接口:通过 Unix Socket 与守护进程通信
- 简洁易用:提供常用 WiFi 操作命令
- 状态查询:实时显示连接信息
GOTIP 自动配置功能(默认启用)
当 WiFi 模块获取 IP 后,会自动:
- 解析 URC:
+CW:GOTIP,IP:xxx,gw:xxx,mask:xxx,dns:xxx - 配置网卡:
ip addr add、ip route add default - 配置 DNS:写入
/etc/resolv.conf
注意事项:
- 部分host需要禁用 NetworkManager:
sudo systemctl disable --now NetworkManager - 需要禁用 dhcpcd:
sudo systemctl disable --now dhcpcd - 默认网卡名为
mr_eth0(可在代码中修改)
3.4 代码修改与编译
修改代码后重新编译
# 只编译 bflbwifictrl
cd bflbwifictrl
make clean && make
# 或使用 build.sh 编译所有
cd ..
./build.sh build
重新加载内核模块
sudo ./build.sh unload
sudo ./build.sh load
4. 常见问题
4.1 找不到串口设备
# 查看可用串口
ls /dev/ttyACM* /dev/ttyUSB*
# 添加用户到 dialout 组(避免每次都用 sudo)
sudo usermod -aG dialout $USER
# 然后重新登录
4.2 IP 配置后自动消失
原因:NetworkManager 或 dhcpcd 覆盖了手动配置。
解决:
# 禁用 NetworkManager
sudo systemctl stop NetworkManager
sudo systemctl disable NetworkManager
# 禁用 dhcpcd
sudo systemctl stop dhcpcd
sudo systemctl disable dhcpcd
4.3 查看调试日志
# 查看守护进程日志
tail -f /var/log/bflbwifi.log
# 查看内核日志
dmesg -w
# 守护进程前台运行(查看实时输出)
sudo ./output/bflbwifid -p /dev/ttyAT0 --foreground
4.4 编译错误
# 确保安装必要的开发包
sudo apt-get install build-essential libc-dev-i386
# 树莓派需要安装 32 位兼容库
sudo apt-get install libc6:i386 libstdc++6:i386
