Nethub用户手册:修订间差异

来自Bouffalo Lab Docs
跳转到导航 跳转到搜索
张良留言 | 贡献
无编辑摘要
张良留言 | 贡献
无编辑摘要
第1行: 第1行:
博流智能芯片(BL616C/BL618M/BL618DG/BL616CL)的 Linux 主机通信方案,提供内核模块和用户态控制工具。
基于BL616C/BL618M/BL618DG/BL616CL 的 Linux 主机通信方案,提供内核模块和用户态控制工具。


= 系统架构 =
== 目录 ==
[[文件:Arch host device.png|缩略图]]


'''说明''':当前控制通道通过 tty 传输,后续将支持通过 VirtualChannel 传输 AT 命令。
* [[Nethub用户手册#1. 系统架构|1. 系统架构]]
* [[Nethub用户手册#2. 快速开始|2. 快速开始]]
* [[Nethub用户手册#3. 开发指南|3. 开发指南]]
* [[Nethub用户手册#4. 常见问题|4. 常见问题]]


=== 架构说明 ===
== 1. 系统架构 ==
整个系统分为'''主机端'''和'''设备端'''两部分:
[[index.php?title=文件:Arch_host_device.png|链接=文件:Arch_host_device.png|无框|主机-设备架构图]]


==== 主机端(Linux) ====
'''说明''':当前控制通道通过 tty 传输,后续将支持通过 VirtualChannel 传输 AT 命令。
'''用户空间'''


* '''bflbwifictrl''':命令行工具,通过 Unix Socket 与守护进程通信
=== 1.1 组件说明 ===
* '''bflbwifid''':守护进程,负责与设备通信和管理 WiFi 连接
{| class="wikitable"
* '''libbflbwifi''':静态库,提供 WiFi 控制 API
!组件
* '''nethub_vchan_app''':VirtualChannel 通信程序,提供私有数据通道。以消息包为单位传输,底层接收也是一条一条完整的数据包(非流式)
!类型
 
!说明
'''内核空间''':
|-
 
|bflbwifictrl
* '''mr_sdio.ko''':内核驱动模块,支持 SDIO 接口
|用户态
* '''/dev/ttyAT''':字符设备节点,提供用户态与内核态通信接口
|命令行工具,通过 Unix Socket 与守护进程通信
 
|-
==== 设备端(博流芯片) ====
|bflbwifid
'''支持的芯片型号''':
|用户态
 
|守护进程,负责设备通信和 WiFi 连接管理
* BL616C(WiFi6 + BLE + 低功耗)
|-
* BL618M(WiFi6 + BLE + PSRAM)
|libbflbwifi
* BL618DG(WiFi6 + BLE + 低功耗 + 双核 + 双频)
|用户态
* BL616CL(WiFi6 + BLE + 低功耗)
|静态库,提供 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 → 解析处理 → 网卡配置
bflbwifictrl → bflbwifid → libbflbwifi → /dev/ttyAT → 内核驱动 → 设备
</syntaxhighlight>


== 工作原理 ==
URC事件:
设备 → 内核驱动 → /dev/ttyAT → bflbwifid → 解析处理 → 网卡配置


=== 1. 初始化流程 ===
工作流程:
<syntaxhighlight lang="text">
加载内核模块 → 启动守护进程 → TTY 通信建立 → 准备就绪
┌─────────────┐
加载内核模块 sudo ./build.sh load
└──────┬──────┘
      │
      ▼
┌─────────────┐
启动守护进程 sudo ./output/bflbwifid -p /dev/ttyAT0
└──────┬──────┘
      │
      ▼
┌─────────────┐
TTY 通信建立 AT 命令握手
└──────┬──────┘
      │
      ▼
┌─────────────┐
│  准备就绪   │ → 可以接收用户命令
└─────────────┘
</syntaxhighlight>
</syntaxhighlight>


=== 2. WiFi 连接流程 ===
== 2. 快速开始 ==
<syntaxhighlight lang="bash">
[[index.php?title=文件:Nethub_sdio_quickstart_demo.gif|无框|NetHub SDIO 快速入门演示]]
# 1. 用户发起连接
$ sudo ./output/bflbwifictrl connect_ap "MyWiFi" "password"


# 2. bflbwifid 收到命令,发送 AT 指令到设备
本演示展示了完整的操作流程:编译 → 加载内核模块 → 启动守护进程 → WiFi 连接 → 网络通信 → 消息收发。
AT+CWJAP="MyWiFi","password"


# 3. 设备返回 URC 事件
=== 2.1 编译和加载内核模块 ===
+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">
<syntaxhighlight lang="bash">
cd nethub/
cd nethub/
./build.sh build
./build.sh build
</syntaxhighlight>编译产物将输出到 <code>output/</code> 目录。
=== 2. 加载内核模块 ===
<syntaxhighlight lang="bash">
sudo ./build.sh load
sudo ./build.sh load
</syntaxhighlight>
</syntaxhighlight>


=== 3. 运行 WiFi 守护进程 ===
=== 2.2 运行 WiFi 守护进程 ===
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
# 启动守护进程(默认使用 /dev/ttyAT0)
# 启动守护进程(默认使用 /dev/ttyAT0)
第147行: 第73行:
</syntaxhighlight>
</syntaxhighlight>


=== 4. 使用 WiFi 控制工具 ===
=== 2.3 使用 WiFi 控制工具 ===
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
# 扫描 AP
# 扫描 AP
第165行: 第91行:
</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行: 第125行:
|}
|}


=== bflbwifictrl 命令 ===
==== bflbwifictrl 命令 ====
{| class="wikitable"
{| class="wikitable"
!命令
!命令
第206行: 第146行:
|}
|}


== 功能特性 ==
=== 3.3 功能特性 ===


=== bflbwifid(守护进程) ===
==== bflbwifid(守护进程) ====


* '''TTY 通信''':与 WiFi 模块通过串口通信
* '''TTY 通信''':与 WiFi 模块通过串口通信
第216行: 第156行:
* '''GOTIP 自动配置'''(可选):收到 IP 后自动配置 Linux 网卡
* '''GOTIP 自动配置'''(可选):收到 IP 后自动配置 Linux 网卡


=== bflbwifictrl(命令行工具) ===
==== bflbwifictrl(命令行工具) ====


* '''CLI 接口''':通过 Unix Socket 与守护进程通信
* '''CLI 接口''':通过 Unix Socket 与守护进程通信
第222行: 第162行:
* '''状态查询''':实时显示连接信息
* '''状态查询''':实时显示连接信息


=== GOTIP 自动配置功能(默认启用) ===
==== GOTIP 自动配置功能(默认启用) ====
当 WiFi 模块获取 IP 后,会自动:
当 WiFi 模块获取 IP 后,会自动:


第235行: 第175行:
* 默认网卡名为 <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行: 第188行:
</syntaxhighlight>
</syntaxhighlight>


=== 重新加载内核模块 ===
==== 重新加载内核模块 ====
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
sudo ./build.sh unload
sudo ./build.sh unload
第255行: 第194行:
</syntaxhighlight>
</syntaxhighlight>


== 常见问题 ==
== 4. 常见问题 ==


=== 1. 找不到串口设备 ===
=== 4.1 找不到串口设备 ===
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
# 查看可用串口
# 查看可用串口
第267行: 第206行:
</syntaxhighlight>
</syntaxhighlight>


=== 2. IP 配置后自动消失 ===
=== 4.2 IP 配置后自动消失 ===
'''原因''':NetworkManager 或 dhcpcd 覆盖了手动配置。
'''原因''':NetworkManager 或 dhcpcd 覆盖了手动配置。


第280行: 第219行:
</syntaxhighlight>
</syntaxhighlight>


=== 3. 查看调试日志 ===
=== 4.3 查看调试日志 ===
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
# 查看守护进程日志
# 查看守护进程日志
第292行: 第231行:
</syntaxhighlight>
</syntaxhighlight>


=== 4. 编译错误 ===
=== 4.4 编译错误 ===
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
# 确保安装必要的开发包
# 确保安装必要的开发包
第300行: 第239行:
sudo apt-get install libc6:i386 libstdc++6:i386
sudo apt-get install libc6:i386 libstdc++6:i386
</syntaxhighlight>
</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 许可协议。

2026年2月28日 (六) 06:13的版本

基于BL616C/BL618M/BL618DG/BL616CL 的 Linux 主机通信方案,提供内核模块和用户态控制工具。

目录

1. 系统架构

链接=文件:Arch_host_device.png|无框|主机-设备架构图

说明:当前控制通道通过 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. 快速开始

无框|NetHub SDIO 快速入门演示

本演示展示了完整的操作流程:编译 → 加载内核模块 → 启动守护进程 → 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 后,会自动:

  1. 解析 URC:+CW:GOTIP,IP:xxx,gw:xxx,mask:xxx,dns:xxx
  2. 配置网卡:ip addr addip route add default
  3. 配置 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