Skip to content

[ATX] CH340 串口继电器部分型号不响应 A0 协议,需要支持 D0 01 / D0 00 协议 #271

Description

@birdke

环境:

  • One-KVM Rust: v0.2.4
  • 系统:Armbian OS 26.08.0 trixie / Debian 13
  • 架构:aarch64
  • 继电器:CH340 USB 串口继电器
  • lsusb: 1a86:7523 QinHeng Electronics CH340 serial converter
  • 设备路径:/dev/serial/by-id/usb-1a86_USB_Serial-if00-port0 -> ../../ttyUSB0

问题:
One-KVM ATX 设置里选择“串口继电器”,设备选择 /dev/ttyUSB0,波特率 9600,通道 1。
网页点击“短按电源”时,One-KVM 日志显示已经触发:

Pulse LCUS serial relay on /dev/ttyUSB0 channel 1

但继电器没有动作。

排查结果:
手动测试发现该继电器不响应以下命令:

A0 01 01 A2
A0 01 00 A1
B0 01 01 B2

但响应以下命令:

D0 01 # 吸合
D0 00 # 断开

Linux 手动测试命令:

stty -F /dev/ttyUSB0 9600 cs8 -cstopb -parenb -ixon -ixoff -crtscts -hupcl raw -echo
exec 3<>/dev/ttyUSB0
printf '\xD0\x01' >&3
sleep 0.5
printf '\xD0\x00' >&3
exec 3>&-

这样可以正常短接主板 PWR_SW。

临时绕过方案:
我现在用一个伪串口代理,把 One-KVM 发出的 A0 协议转换成 D0 协议,One-KVM ATX 功能就可以正常使用。

建议:
希望 ATX 串口继电器增加一种协议选项,例如:

  • LCUS serial relay: A0 channel state checksum
  • BK/CH340 serial relay global: D0 01 / D0 00
  • 或者允许用户自定义按下/松开的 HEX 命令

相关源码位置可能是:
src/atx/serial_relay.rs

当前 build_command 固定生成 A0 协议,建议增加协议类型配置。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions