wddrive-maintain-cli

概述

wdd-maintain-cli 是面向无图形环境的设备维护命令行工具,用于发现威动电机驱动器、升级固件,并读取 / 写入 / 持久化 CAN ID、波特率与控制器协议。它的能力与 wddrive-studio 的「设备维护」页等价,适合在服务器、CI 或远程终端中使用。

它随 wddrive-studio 安装包一起提供,因此本页标题中的站点产品名是 wddrive-maintain-cli,而实际输入的命令名是 wdd-maintain-cli。

命令行有两种用法:

  • 交互式 TUI:不带任何子命令直接运行,进入全屏界面,用按键完成发现、升级与设置。
  • 一次性命令:带上子命令执行单个操作后退出,适合脚本或人工排障。

传输方式按平台自动选择:

  • Linux:通过 SocketCAN 直连(如 can0)。
  • Windows / macOS:经 gs_usb 直连 candleLight / gs_usb 适配器,接口名形如 GS_USB_<串号后 8 位>。

安装与运行

wdd-maintain-cli 随 wddrive-studio 安装包一并安装。安装后打开终端验证:

wdd-maintain-cli --version
wdd-maintain-cli --help

Linux:启用 CAN 接口

在读取设备前,先把 CAN 接口按驱动器使用的波特率启用(威动固件通常为 1 Mbit/s):

sudo ip link set can0 up type can bitrate 1000000

用 ip -details link show can0 可以确认状态与波特率。

Windows:为适配器绑定 WinUSB

candleLight 等支持 WCID 的适配器由系统自动安装 WinUSB 驱动。若未自动安装,请用 Zadig 把该设备的接口 0 绑定到 WinUSB。未绑定时仍能列出设备,但打开会失败并提示使用 Zadig。

macOS:无需额外驱动

macOS 通过 gs_usb 直连 candleLight / gs_usb 适配器,无需安装额外驱动。

通用选项

所有一次性命令都接受以下全局选项:

选项 说明
--interface <名称> 指定 CAN 接口;缺省自动选择第一个可用接口。
--baudrate <kbps> 主机波特率(kbps);缺省用驱动默认值,Linux SocketCAN 下忽略。
--firmware-dir <路径> 固件目录;缺省为系统数据目录下的 wddrive/wddrive-studio/firmwares。
--lang <zh-CN|en> 界面语言;缺省读本地配置,未配置时用 zh-CN。
--wait <秒> 等待设备出现或信息拉取的秒数,默认 10。
wdd-maintain-cli --interface can0 --wait 15 scan
wdd-maintain-cli --lang en interfaces

枚举接口与发现设备

列出当前可用的 CAN 接口:

wdd-maintain-cli interfaces

发现设备并打印设备表:

wdd-maintain-cli scan

输出会先显示本地已加载的固件数量与目录,然后是为每台设备读取的 GET_INFO 与三项设置。设备表列包括:

列 含义
UUID 设备唯一标识(十六进制)。
Node 节点号。
Version 固件版本。
Product 产品编号。
CAN ID 设备配置的 CAN ID。
Baud 设备配置的波特率。
Protocol 控制器协议(CiA402 / KLIPPER)。
Status 在线、可更新、升级中等状态。

找不到设备时,请检查:接口是否已启用、波特率是否与设备一致、接线与 120 Ω 终端电阻是否正确,以及设备是否已复位进入更新模式。命令超时可加大 --wait。

持续监控设备

持续监控设备事件,直到按 Ctrl-C 退出:

wdd-maintain-cli monitor

界面会实时打印设备上线 / 下线、升级进度等事件,并刷新设备表。它适合在升级期间用另一个终端观察状态。

交互式 TUI

不带子命令直接运行,会进入交互式 TUI(ratatui):

wdd-maintain-cli

界面分为三部分:顶部连接控件(接口、波特率、连接状态)、中部设备表、底部日志与帮助栏。常用按键:

按键 作用
c 连接 / 断开
i 选择 CAN 接口
b 循环切换波特率
↑ / ↓ 在设备表中选择设备
Enter 就地编辑选中设备的设置
u 更新选中设备
U 更新全部设备
s 保存选中设备的设置
j 启动跳转(设备退出 IAP)
L LED 定位
r 重新扫描固件
n 从网络拉取固件
l 切换界面语言
q / Ctrl-C 退出

编辑设备时,用 ↑ / ↓ 选择字段、← / → 选择选项、Enter 提交、Esc 取消。

wdd-maintain-cli 交互式 TUI:设备表与设备设置
图 1 · wdd-maintain-cli 交互式 TUI

固件管理

列出固件目录中已加载的固件:

wdd-maintain-cli firmware list

从网络拉取固件到本地目录并重新扫描:

wdd-maintain-cli firmware fetch

拉取需要网络,但不依赖 CAN 连接。若本地已有相同产品与版本的固件,会被跳过;拉取失败会报错。

固件升级

升级单台设备,把 <uuid> 换成 scan 中列出的设备 ID:

wdd-maintain-cli update DEADBEEF

升级当前所有可更新设备:

wdd-maintain-cli update all

用显式指定的固件 zip 升级单台设备(仅限单台,不能与 all 同用):

wdd-maintain-cli update DEADBEEF --firmware /path/to/firmware.zip

设备需要处于 IAP(更新)模式:复位或重新给设备上电即可。开始前请把固件 zip 放入固件目录(或使用 --firmware 指定)。

升级过程中会依次显示 写入中 / 验证中 / 升级中 / 已完成 / 失败 等状态与进度百分比。

固件升级进行中切勿断电或断开连接。 设备忙(正在升级)时对它的其他操作会被拒绝。

设备设置

读取设备的三项设置:

wdd-maintain-cli settings get DEADBEEF

写入设置(写入 RAM,就地生效;可同时指定多项):

wdd-maintain-cli settings set DEADBEEF --can-id 2 --baudrate 1000 --protocol 0

取值要求:

  • --can-id:1–127。
  • --baudrate:100 / 125 / 250 / 500 / 800 / 1000(kbps)。
  • --protocol:0 = CiA402,1 = KLIPPER。

把 RAM 中的设置持久化到设备存储(断电后保留):

wdd-maintain-cli settings save DEADBEEF

settings set 只改内存,重启会丢失;要长期生效,写入后必须执行 settings save。更改 CAN ID 或波特率后,后续通讯需使用新值。

启动应用

让设备退出 IAP 并跳转到应用程序运行:

wdd-maintain-cli jump DEADBEEF

如果设备没有跳转,它会一直停留在更新模式,直到再次复位或重新上电。

常见问题

现象 可能原因 处理
提示找不到 CAN 接口 接口未启用 Linux 先 ip link set can0 up type can bitrate 1000000;确认接口名与 --interface 一致。
设备未在等待时间内出现 设备未进入 IAP / 总线异常 复位或重新上电设备;检查接线、终端电阻与波特率,必要时加大 --wait。
Windows 打开设备失败 适配器未绑定 WinUSB 用 Zadig 把接口 0 绑定到 WinUSB;支持 WCID 的设备应由系统自动安装。
发现不到任何设备 波特率不一致 主机波特率需与设备一致(威动 bootloader 固定 1 Mbit/s),可用 --baudrate 1000。
update all --firmware 报错 参数组合不合法 --firmware 仅用于单台设备,批量升级用 update all 自动匹配固件。
固件拉取失败 网络不可用 检查网络后重试。
设置写入后重启丢失 只写了 RAM 执行 settings save <uuid> 持久化到设备存储。

下一步