Windows11下用nrf5284dk/dongle运行Zephyr Echo示例遇网络接口错误求助
问题
在Windows 11环境下,使用nrf52840dk作为服务端、nrf52840dongle作为客户端运行Zephyr Echo客户端/服务端示例时,客户端启动后报错:
[00:00:00.321,746] <err> net_if: There is no network interface to work with! *** Booting Zephyr OS build zephyr-v3.5.0-4086-g0a8d03b95f84 *** [00:00:00.322,113] <wrn> net_config: No auto-started network interface - network-bound app initialization skipped. [00:00:00.322,113] <inf> net_echo_client_sample: Run echo client [00:00:00.322,174] <inf> net_echo_client_sample: Network disconnected
已执行的操作:
- 服务端编译烧录命令:
west build -p -b nrf52840dk_nrf52840 -d build_dk_echo_server \zephyr\samples\net\sockets\echo_server\ -- -DCONF_FILE="prj.conf" west flash -d .\build_dk_echo_server\
- 客户端编译烧录命令:
west build -p -b nrf52840dongle_nrf52840 .\zephyr\samples\net\sockets\echo_client -- -DCONF_FILE="prj.conf" nrfutil pkg generate --hw-version 52 --sd-req=0x00 --application build/zephyr/zephyr.hex --application-version 1 echo_client_dongle.zip nrfutil dfu usb-serial -pkg echo_client_dongle.zip -p COM11
作为IoT开发新手,不确定该方案是否可行,需了解需启用的配置及后续步骤。
解决方案
该方案完全可行,报错原因是默认prj.conf未启用任何网络接口(nrf52840设备无有线网络,需启用BLE/802.15.4等无线网络栈)。以下是具体配置和步骤:
1. 选择网络类型
推荐使用**BLE IPSP(蓝牙低功耗互联网协议支持)**实现两设备间的IP通信,这是nrf52840设备间无线通信的典型方案。
2. 修改服务端(nrf52840dk)配置
复制echo_server示例的prj.conf为prj_ble.conf,添加/修改以下配置:
# 启用蓝牙及IPSP CONFIG_BT=y CONFIG_BT_IPSP=y CONFIG_BT_DEVICE_NAME="EchoServer" # 启用网络及IPv6(IPSP基于IPv6) CONFIG_NETWORKING=y CONFIG_NET_IPV6=y CONFIG_NET_CONFIG_AUTOIPV6=y # 启用日志调试 CONFIG_CONSOLE=y CONFIG_UART_CONSOLE=y CONFIG_LOG=y # Echo服务端配置 CONFIG_NET_SOCKETS=y CONFIG_NET_ECHO_SERVER=y CONFIG_NET_ECHO_SERVER_PORT=4242
重新编译烧录服务端:
west build -p -b nrf52840dk_nrf52840 -d build_dk_echo_server \zephyr\samples\net\sockets\echo_server\ -- -DCONF_FILE="prj_ble.conf" west flash -d .\build_dk_echo_server\
3. 修改客户端(nrf52840dongle)配置
复制echo_client示例的prj.conf为prj_ble.conf,添加/修改以下配置:
# 启用蓝牙及IPSP CONFIG_BT=y CONFIG_BT_IPSP=y CONFIG_BT_SCAN=y CONFIG_BT_CONN=y # 指定要连接的服务端蓝牙名称 CONFIG_BT_DEVICE_NAME="EchoClient" CONFIG_BT_ECHO_SERVER_NAME="EchoServer" # 启用网络及IPv6 CONFIG_NETWORKING=y CONFIG_NET_IPV6=y CONFIG_NET_CONFIG_AUTOIPV6=y # 启用日志调试 CONFIG_CONSOLE=y CONFIG_UART_CONSOLE=y CONFIG_LOG=y # Echo客户端配置 CONFIG_NET_SOCKETS=y CONFIG_NET_ECHO_CLIENT=y # 服务端IPv6地址可留空,通过BLE IPSP自动获取,或使用服务端日志中的实际地址 CONFIG_NET_ECHO_CLIENT_ADDR="fdde:ad00:beef::1" CONFIG_NET_ECHO_CLIENT_PORT=4242
重新编译烧录客户端:
west build -p -b nrf52840dongle_nrf52840 .\zephyr\samples\net\sockets\echo_client -- -DCONF_FILE="prj_ble.conf" nrfutil pkg generate --hw-version 52 --sd-req=0x00 --application build/zephyr/zephyr.hex --application-version 1 echo_client_dongle.zip nrfutil dfu usb-serial -pkg echo_client_dongle.zip -p COM11
4. 调试验证
- 分别连接两个设备的串口(DK通过USB转串口,dongle使用自身虚拟串口),查看日志输出。
- 客户端会自动扫描并连接名为
EchoServer的蓝牙设备,建立IPSP连接后自动发起echo请求。 - 服务端收到请求后会回复数据,客户端日志会显示echo成功的信息。
注意事项
- 若选择802.15.4替代BLE,需启用
CONFIG_IEEE802154=y及相关配置,同时确保两设备处于同一频道。 - 确认nrf52840dongle的串口COM端口正确,可通过Windows设备管理器查看。
- 若服务端的IPv6地址不是
fdde:ad00:beef::1,可从服务端日志中获取实际地址,修改客户端的CONFIG_NET_ECHO_CLIENT_ADDR。
内容的提问来源于stack exchange,提问作者yeetAE13
相关产品推荐
相关产品推荐

