BLE蓝牙抓包器使用说明书-支持MESH
红旭无线BLE BLE MESH抓包器简介
驱动安装
抓包教程
常见问题
多个抓包器同时抓包
高版本Python下Wireshark找不到nRF Sniffer的解决方法
如无权限阅读,请联系微信:17625815328
-
+
首页
高版本Python下Wireshark找不到nRF Sniffer的解决方法
<p style="text-align:center;"><img src="https://docdisk.wireless-tech.cn/img/2026/08/06/python-high-version-overview_20260806155819599237.png" alt="资料包附带Python 3.8.x,客户可继续使用现有高版本Python" style="display:block;width:100%;max-width:100%;height:auto;margin:0 auto;"></p> > **一句话结论:** 客户电脑已经安装较高版本的 Python 3.x 时,不必再安装资料包附带的 Python 3.8.x。先把 `pyserial` 和 `psutil` 安装到 Sniffer 实际调用的现有 Python 中,Wireshark 通常就能重新识别 nRF Sniffer 的 COM 口。 ## 1. 先理解资料包里的 Python 3.8.x 购买抓包器后,配套资料中通常会附带一份经过验证的 Python 3.8.x 安装包,方便没有 Python 环境的客户直接安装。不同批次的文件名可能是 Python 3.8.6 或 3.8.7,本文统一称为 **Python 3.8.x**。 <p style="text-align:center;"><img src="https://docdisk.wireless-tech.cn/img/2026/08/06/customer-materials-python38_20260806155851454111.png" alt="客户资料包中的Python 3.8.x和Wireshark安装文件" style="display:block;width:100%;max-width:100%;height:auto;margin:0 auto;"></p> 这份 Python 3.8.x 是兼容性较好的**推荐环境和兜底方案**,不是每位客户都必须重复安装: - 客户电脑没有 Python:可直接安装资料包里的 Python 3.8.x; - 客户已经安装较高版本的 Python 3.x:可先继续使用现有 Python,按照本文补齐依赖; - 只有在现有高版本按照本文处理后仍然存在兼容问题时,再考虑安装资料包里的 Python 3.8.x。 ## 2. 本文解决什么问题 本文适用于下面这种情况: - nRF52840 Dongle 已经烧录 Nordic 的抓包固件; - Windows“设备管理器”中可以看到 Dongle 对应的 COM 口; - 但是打开 Wireshark 后,首页“捕获”列表中没有 **nRF Sniffer for Bluetooth LE**,因此无法点击进入抓包页面; - 电脑已经安装 Python 3.9 及以上的较高版本,不想再额外安装资料包里的 Python 3.8.x。 <p style="text-align:center;"><img src="https://docdisk.wireless-tech.cn/img/2026/08/06/wireshark-sniffer-missing_20260806155014626044.png" alt="Wireshark首页没有显示nRF Sniffer抓包接口" style="display:block;width:100%;max-width:100%;height:auto;margin:0 auto;"></p> > 如果 Wireshark 已经能看到 nRF Sniffer,只是抓不到蓝牙数据包,那么问题通常不在本文范围内,应继续检查固件、信道、目标设备距离和抓包参数。 ## 3. 为什么安装资料包里的 Python 3.8.x 容易成功 Nordic 经典版 nRF Sniffer 插件通过 Wireshark 的 **Extcap** 机制工作。Wireshark 启动时会调用 `nrf_sniffer_ble.bat`,由它启动 Python 脚本并询问:“当前有哪些抓包接口?” 常见的批处理文件使用 `py -3` 启动 Python。客户电脑已经安装较高版本时,它通常会调用当前默认的 Python 3.x。脚本随后还需要导入两个模块: - `pyserial`:访问串口; - `psutil`:辅助管理进程。 资料包里的 Python 3.8.x 环境在正确安装依赖后容易直接成功;而客户原有的高版本 Python 往往还没有安装这两个模块。如果模块没有安装到**当前实际被调用的 Python**中,脚本会在上报 COM 口之前退出。Wireshark 通常不会在首页弹出明显错误,而是直接不显示这个抓包器。 因此,真正的关键不是“必须使用 Python 3.8”,而是: > **插件调用的是哪一个 Python,就把依赖安装到哪一个 Python。高版本本身不等于无法使用。** <p style="text-align:center;"><img src="https://docdisk.wireless-tech.cn/img/2026/08/06/python-high-version-sniffer-steps_20260806155834306225.png" alt="高版本Python找不到Sniffer的四步解决流程" style="display:block;width:100%;max-width:100%;height:auto;margin:0 auto;"></p> ## 4. 开始前先确认硬件和驱动 1. 插入 nRF52840 Dongle。 2. 打开 Windows“设备管理器”。 3. 在“端口(COM 和 LPT)”中确认可以看到对应 COM 口,例如 `COM22`。 <p style="text-align:center;"><img src="https://docdisk.wireless-tech.cn/img/2026/08/06/device-manager-nrf-sniffer-com22_20260806160454508153.png" alt="Windows设备管理器已识别nRF Sniffer串口COM22" width="82%" style="display:block;width:82%;max-width:82%;height:auto;margin:0 auto;"></p> *图:Windows 已经识别到抓包器串口,示例中的端口号为 COM22;客户电脑上的端口号可能不同。* | 设备管理器 | Wireshark 首页 | 初步判断 | | --- | --- | --- | | 能看到 COM 口 | 看不到 nRF Sniffer | 优先检查 Python 和依赖,继续本文 | | 看不到 COM 口 | 看不到 nRF Sniffer | 优先检查固件、USB 线、USB 驱动和硬件 | | 能看到 COM 口 | 能看到 nRF Sniffer | 枚举已经成功,转到实际抓包验证 | 如果驱动还没有安装完成,请先参考:[驱动安装](https://docs.wireless-tech.cn/doc/32/)。 ## 5. 使用现有高版本 Python 的解决步骤 ### 5.1 完全退出 Wireshark 先关闭所有 Wireshark 窗口,避免旧的 Extcap 结果仍被占用或缓存。 ### 5.2 先确认 Sniffer 插件已经按原教程部署 > **重要说明:Wireshark 默认安装并不自带 Nordic Sniffer 插件文件。** `nrf_sniffer_ble.bat`、`nrf_sniffer_ble.py`、`requirements.txt` 和 `SnifferAPI` 文件夹,来自抓包器配套资料中的: ```text nrf_sniffer_for_bluetooth_le_4.1.1\extcap ``` <p style="text-align:center;"><img src="https://docdisk.wireless-tech.cn/img/2026/08/06/sniffer-package-extcap-source_20260806162259681464.png" alt="nRF Sniffer 4.1.1资料包中的extcap源目录" width="100%" style="display:block;width:100%;max-width:100%;height:auto;margin:0 auto;"></p> *图:抓包器资料包中的 Extcap 源目录;客户的实际解压路径可能不同。* 按照[原安装教程](https://mp.weixin.qq.com/s/67NdU7cLhPrtr54yCmbezA),首次安装的正确顺序是: 1. 在资料包的 `nrf_sniffer_for_bluetooth_le_4.1.1\extcap` **源目录**中打开 CMD。 2. 原教程使用下面的命令安装依赖: ```bat pip3 install -r requirements.txt ``` 3. 在 Wireshark 中打开“帮助 → 关于 Wireshark → 文件夹(Folders)”,找到 Wireshark 实际使用的 Extcap 路径。 4. 把资料包 `extcap` 源目录中的**全部内容**复制到 Wireshark 的 Extcap **目标目录**,其中必须包括整个 `SnifferAPI` 文件夹。 | 目录 | 作用 | 主要操作 | | --- | --- | --- | | 资料包的 `nrf_sniffer_for_bluetooth_le_4.1.1\extcap` | 源目录 | 首次安装依赖,并复制目录中的全部内容 | | Wireshark“文件夹”页面显示的 Extcap 路径 | 目标目录 | 存放插件,并执行接口查询命令 | 不要把整个 `extcap` 文件夹再套一层复制进去。复制完成后,`nrf_sniffer_ble.bat` 应直接位于 Wireshark 显示的 Extcap 目标路径下。 > **为什么原教程已经执行过 `pip3 install`,高版本 Python 仍可能找不到 Sniffer?** 复制插件文件不会复制已经安装在某个 Python 中的模块;而且 `pip3` 可能对应当时的 Python 3.8.x,`nrf_sniffer_ble.bat` 现在却通过 `py -3` 调用了客户现有的另一套高版本 Python。两套 Python 的依赖并不共用。因此,后续排障要把依赖安装到插件当前实际调用的 Python 中。 ### 5.3 打开 Wireshark 的 Extcap 目标目录 按 `Win + R`,输入 `cmd`,按回车打开“命令提示符”。 如果 Wireshark 安装在 C 盘,执行: ```bat cd /d "C:\Program Files\Wireshark\extcap" ``` 如果安装在 D 盘,执行: ```bat cd /d "D:\Program Files\Wireshark\extcap" ``` 如果不知道实际目录,应以 Wireshark“帮助 → 关于 Wireshark → 文件夹”中显示的 Extcap 路径为准。 只有在已经按 5.2 节完成复制后,目标目录中才应直接看到 `SnifferAPI`、`nrf_sniffer_ble.bat`、`nrf_sniffer_ble.py` 和 `requirements.txt` 等内容。若这些文件不存在,说明插件还没有复制到正确位置,应先返回原安装教程完成部署,而不是继续按 Python 依赖问题排查。 ### 5.4 确认插件实际调用哪个 Python 执行: ```bat py -3 -c "import sys; print(sys.executable); print(sys.version)" ``` 输出中出现客户现有的较高版本号是正常的。请记住这里显示的解释器路径,后面安装依赖时必须继续使用同一个 `py -3`。 ### 5.5 手动复现 Wireshark 的接口查询 执行: ```bat nrf_sniffer_ble.bat --extcap-interfaces ``` 如果出现下面一类错误,就已经找到了主要原因: ```text ModuleNotFoundError: No module named 'serial' ``` 或者: ```text ModuleNotFoundError: No module named 'psutil' ``` ### 5.6 给当前高版本 Python 安装依赖 先检查 `pip`: ```bat py -3 -m pip --version ``` 如果提示没有 `pip`,先执行: ```bat py -3 -m ensurepip --upgrade ``` 然后执行: ```bat py -3 -m pip install --user --upgrade pip py -3 -m pip install --user -r requirements.txt ``` `--user` 表示安装到当前 Windows 用户目录,通常不需要管理员权限。 这里特意使用 `py -3 -m pip`,而不是只写 `pip3`:这样可以让安装依赖和 `nrf_sniffer_ble.bat` 使用同一个 Python 解释器。 如果 Wireshark 的 Extcap 目标目录里没有 `requirements.txt`,应优先从资料包源目录重新复制完整插件。只有暂时无法重新复制时,才可用下面的命令直接补装两个依赖: ```bat py -3 -m pip install --user pyserial psutil ``` > **注意:** 正确的包名是 `pyserial`,不要安装名为 `serial` 的其他包。 ### 5.7 验证模块确实装到了同一个 Python 执行: ```bat py -3 -c "import sys, serial, psutil; print(sys.executable); print('pyserial =', serial.__version__); print('psutil =', psutil.__version__)" ``` 只要命令没有出现 `ModuleNotFoundError`,并且能够显示解释器路径及两个模块的版本,就说明依赖安装位置正确。 ### 5.8 再次查询抓包接口 执行: ```bat nrf_sniffer_ble.bat --extcap-interfaces ``` 成功时应看到类似下面的内容,其中 `COM22` 会因电脑不同而变化: ```text interface {value=COM22-None}{display=nRF Sniffer for Bluetooth LE COM22} ``` 这行内容表示 Python 插件已经找到 Dongle,并且能够向 Wireshark 上报接口。 最后重新打开 Wireshark,首页应出现: ```text nRF Sniffer for Bluetooth LE COMxx ``` 双击它即可进入抓包页面。 ## 6. 高版本 Python 出现警告怎么办 某些经典版 Nordic 脚本在较高版本 Python 下可能显示类似警告: ```text SyntaxWarning: invalid escape sequence ``` 这类警告不一定会阻止插件工作。判断标准不是“窗口里完全没有警告”,而是最后能否输出: ```text interface {value=COMxx-None}{display=nRF Sniffer for Bluetooth LE COMxx} ``` 如果能输出接口行,就先不要因为该警告重复安装 Python。 ## 7. 如果电脑没有 `py` 命令 如果执行 `py -3` 提示“不是内部或外部命令”,可把上述安装和验证命令中的 `py -3` 改成 `python`,例如: ```bat python -m pip install --user -r requirements.txt python -c "import sys, serial, psutil; print(sys.executable); print(serial.__version__); print(psutil.__version__)" ``` 但要注意:`nrf_sniffer_ble.bat` 在电脑存在 `py` 启动器时通常优先使用 `py -3`。所以不要出现“使用 `python -m pip` 安装到一个版本,脚本却通过 `py -3` 调用另一个版本”的情况。 ## 8. 接口行已经出现,Wireshark 仍不显示 按下面顺序检查: 1. 彻底关闭所有 Wireshark 窗口,再重新打开。 2. 在“帮助 → 关于 Wireshark → 文件夹”中确认 Wireshark 实际读取的 Extcap 目录。 3. 确认 `nrf_sniffer_ble.bat` 位于该目录,而不是放在另一套 Wireshark 安装目录中。 4. 重新插拔 Dongle,确认 COM 口号仍然存在。 5. 关闭可能占用该 COM 口的串口助手、烧录工具或其他抓包软件。 如果 `--extcap-interfaces` 仍然没有输出接口行,但 Python 模块已经正常导入,就应把排查重点转到:Dongle 固件、USB 驱动、COM 口占用以及 nRF Sniffer 插件版本。 ## 9. 最后还要做一次真实抓包验证 “首页出现 COM 口”只说明接口枚举成功,不等于无线抓包已经完全正常。 1. 在 Wireshark 首页双击 `nRF Sniffer for Bluetooth LE COMxx`。 2. 让附近的 BLE 设备进行广播或重新连接。 3. 在显示过滤器中输入: ```text btle ``` 4. 确认能够持续看到 BLE 广播包或连接数据包。 抓包操作可继续参考:[抓包教程](https://docs.wireless-tech.cn/doc/33/)。 ## 10. 快速检查清单 - [ ] 设备管理器能看到 nRF52840 对应 COM 口; - [ ] 已把资料包 `extcap` 源目录中的全部内容复制到 Wireshark 的 Extcap 目标目录; - [ ] 目标目录中直接包含 `SnifferAPI`、`nrf_sniffer_ble.bat`、`nrf_sniffer_ble.py` 和 `requirements.txt`; - [ ] `py -3` 显示的是客户准备继续使用的高版本 Python; - [ ] `pyserial` 和 `psutil` 安装到了这个 Python; - [ ] `nrf_sniffer_ble.bat --extcap-interfaces` 能输出 `interface {...}`; - [ ] 重启 Wireshark 后首页出现 `nRF Sniffer for Bluetooth LE COMxx`; - [ ] 进入接口后可以实际看到 `btle` 数据包。 完成以上检查后,客户即使只安装较高版本的 Python 3.x,通常也不需要为了这个问题额外安装资料包里的 Python 3.8.x。如果依赖已经正常、接口查询仍失败,再把 Python 3.8.x 作为兼容兜底方案。
红旭无线官2
2026年8月6日 16:25
15
0 条评论
转发
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
欢迎关注红旭无线官方微信公众号
分享
链接
类型
密码
更新密码
有效期
Markdown文件
Word文件
PDF文档
PDF文档(打印)