GlassOnTin/openmc3000

GitHub: GlassOnTin/openmc3000

为 SkyRC MC3000 充电器/分析仪提供开源、跨平台的 USB-HID 控制工具,弥补官方软件仅支持 Windows 且无法远程启停充电的不足。

Stars: 0 | Forks: 0

# openMC3000 — SkyRC MC3000 的便携式控制工具 **SkyRC MC3000** 充电器/分析仪(一款 4 槽位充电器,出厂仅附带仅支持 Windows 的 PC Link 软件)的开源控制软件。 ## 状态 — 协议编解码器 + Linux CLI,已在硬件上验证。 该设备是一个使用 64 字节中断报告的 USB-HID 设备 (`0000:0001`);请参阅 [`PROTOCOL.md`](PROTOCOL.md),其中将每项声明标记为已验证或未验证。 **它可以启动和停止充电。** GNU DataExplorer — 现存唯一的跨平台 MC3000 工具 — 声明了 `START`/`STOP` 操作码,但将相关调用注释掉了,因此它只能记录您通过前面板启动的程序。这些操作码是有效的: ``` $ npm run cli status slot 1: standby LiIon 3.625V 0mA 1mAh slot 2: standby LiIon (empty) $ npm run cli start slot 1: charge LiIon 3.625V 0mA 0mAh # current ramps over ~7s $ npm run cli stop slot 1: standby LiIon 3.624V 0mA 0mAh ``` ## 要求 Node 22+(用于支持 `--experimental-strip-types`)。无依赖。 访问设备需要一条 udev 规则 — `/dev/hidraw*` 默认仅限 root 用户访问: ``` KERNEL=="hidraw*", ATTRS{idVendor}=="0000", ATTRS{idProduct}=="0001", MODE="0660", GROUP="plugdev" ``` 将其放入 `/etc/udev/rules.d/99-skyrc-mc3000.rules`,执行 `udevadm control --reload`,然后重新插拔。 请注意,此规则针对的是 **hidraw**,而不是 `SUBSYSTEM=="usb"` — 我们使用的是 HID 报告,而非 libusb。 充电器必须由其自身的 DC 电源供电;USB 不会为其供电。它的 vendor id 实际上是 `0x0000`,某些集线器会拒绝枚举该设备 — 请使用主板上的端口。 ## 仓库结构 - [`PROTOCOL.md`](PROTOCOL.md) — 通信协议,包含来源和验证状态。 - `src/protocol/` — 封帧和命令编解码器,与传输层无关。 - `src/transport/` — 字节级接口。目前使用 `hidraw.ts`;WebHID 和 Android USB-host 是该接口存在的意义。 - `src/cli.ts` — `status`、`watch`、`start`、`stop`。 - `test/` — `npm test`(使用 Node 内置的运行器,无需框架)。 ## 安全 `start` 会以槽位设定的电流开始真正的充电。请了解您的电芯。除了充电器自带的保护外,本软件没有任何热失控保护措施;它不会验证槽位的程序是否适合您放入的电芯。 ## 法律声明 独立的互操作性实现,来源于两个渠道 — **均非来自 SkyRC 的专有软件**: - **GNU DataExplorer** (GPL-3.0-or-later):公开阅读了其 MC3000 插件,以获取通信封帧、命令代码和字段偏移量。这是一个公开致谢的 GPL 衍生作品 — 而非净室设计 — 并且 GPLv3 §13 允许将其合并到本 AGPL-3.0 作品中。相关事实已在 [`PROTOCOL.md`](PROTOCOL.md) 中按文件和行号注明出处;未复制任何代码。 - **对设备的直接观察**:通过 USB-HID 写入已知设置并将其读回,从而确认了各项数值。 未对任何 SkyRC 的二进制文件或固件进行反编译、反汇编或复制,也未包含或衍生自任何 SkyRC 的代码、资源或固件。记录在案的项目 — 命令代码、寄存器偏移量、通信封帧 — 均来自 DataExplorer 和对设备自身 USB-HID 接口的观察;它们属于接口事实,而非受版权保护的表达。 “SkyRC”和“MC3000”是 SkyRC Technology Co., Ltd. 的商标。本项目是独立的,与该公司无任何隶属关系,也未获得其认可。 基于 **GNU AGPL-3.0-or-later** 许可(参见 `LICENSE`)。 ``` Copyright (C) 2026 Ian Williams ```
标签:GNU通用公共许可证, Node.js, USB-HID, 物联网, 硬件控制, 自动化攻击