hallko1234/cr4501-ral-hack
GitHub: hallko1234/cr4501-ral-hack
一个通过浏览器 WebUSB 工具修改 3nh CR4501 色差仪固件的项目,使设备测量后直接在屏幕上显示最接近的 RAL 色号。
Stars: 1 | Forks: 0
# 色差仪 3nh CR4501 RAL 破解
*[德语版本](README.de.md)*
**3nh CR4501** 测量颜色非常精确——但它不会直接告诉你是哪
种 RAL 色调。为此,原本的设定是让你拿起手机,打开一个
App 并通过蓝牙配对。
这个修改直接将答案显示在设备自身的屏幕上:
每次测量后,它会显示最接近的 RAL Classic 色调及其名称,以及
匹配度。测量,读取,继续。
该工具会一步步引导你:将设备置于更新模式, 检查驱动程序,**先备份**,然后刷入固件,最后进行测试。不会上传任何内容, 没有服务器,且你设备的固件永远不会离开你的 电脑。 作为额外奖励,它还解锁了出厂固件在测量界面禁用的按键—— 左、右和确认键终于能执行你期望的操作了。 ## 开始之前 * **Chrome 或 Edge。** Firefox 和 Safari 不支持 WebUSB。 * **在 Windows 上**,设备需要一次性安装 WinUSB 驱动程序,详见下文。 * **耗时:** 五分钟,其中四分钟为等待时间。 ## 进入更新模式 这是需要一点手感的步骤。**设备必须处于关机状态** — 长按测量按钮直到关机。然后等待**至少五秒钟** 不要触碰任何按键;没有这个停顿它就不会响应。 **选项 A** — 再次长按测量按钮,直到周围的圆环 **闪烁红光**。立刻松手。 **选项 B** — 同时按下测量按钮和确认按钮,也就是从 中间按压摇杆。红光会立即闪烁;立刻松手。 当圆环闪烁红光时,设备就准备就绪了。屏幕保持黑屏是 正常的。 ## 接下来 1. 通过 USB 插入,打开工具,**查找设备** 2. **读取并备份** — 保留该文件,这是你的退路 3. **刷入** — 工具会预先检查每个 patch 位置,遇到 极小的不匹配都会中止 4. 重启设备,进行测量,使用确认键切换视图 ## Windows 上的驱动程序 Windows 没有内置允许浏览器与之通信的更新模式驱动程序。 [Zadig](https://zadig.akeo.ie) 可以在一分钟内解决这个问题: 1. 在更新模式下插入设备 2. 启动 Zadig,*Options → List All Devices* 3. 选择 **STM32 DownLoad Firmware Update** (0483:DF11) 4. 在右侧设置 **WinUSB**,然后点击 *Install Driver* 仅需一次。**必须是 WinUSB** — 不能是 libusbK,也不能是 libusb-win32。这些 可以配合 dfu-util 工作,但浏览器将无法识别设备。这是这里最常见 的错误。 ## 修改了哪些内容 | 地址 | 修改 | 大小 | |---|---|---| | `0x08014288` | hook 进 RAL 界面 | 4 B | | `0x0800A9B4` | 解锁右键 | 4 B | | `0x0800A95C` | 解锁左键 | 4 B | | `0x0800A920` | 解锁确认键(读取功能) | 4 B | | `0x0800A69C` | 解锁确认键(处理程序) | 4 B | | `0x0802E3D0` | RAL 界面 | 1328 B | | `0x0802E900` | 颜色表,216 种带名称的色调 | 3732 B | 七个位置,仅超过 5 KB,全部位于应用区域 `0x08004000`–`0x0802FFFF` 内。 **`0x08030000` 以上未作任何改动** — 启动画面、设置以及最重要的 **出厂校准**。这在每台设备上都是独一无二的。写入 外部的校准会导致仪器永久性地测量错误,且没有任何 提示。该工具拒绝任何针对该范围的写入访问。 ## 颜色的来源 216 种 RAL Classic 色调,使用色卡扇测量,每种颜色测量三次。 重复性平均为 0.08 ΔE,最差情况为 0.50。 每条记录十个字节:L、a 和 b 为乘以一百的整数,外加 RAL 编号和用于显示的颜色值。名称作为带有引用而非重复的 词组共享块位于这些数据之后 — 否则它们将无法放入剩余的可用内存中。 老实说:这些数值来自*一张*色卡扇和*一台*设备。色卡扇 会老化和泛黄,每台仪器都有其自己的校准。对于“大致判断这是 哪种 RAL”来说,这完全足够了。如果要用于最终确认或投诉, 请去拿色卡扇。 ## 测量你自己的颜色 这里提供的颜色表来自一张色卡扇和一台设备。如果你想要属于你 自己的数值 — 比如不同的色卡扇、你自己的设备,或者仅仅是为了验证 — 用于此操作的程序位于 [werkzeug/](werkzeug/)(德语)。 它会依次测量 216 种颜色,检查离散度和重复读数, 并在最后根据你自己的备份文件构建出最终的固件。 然后你可以在工具中的 *Restore a backup* 下将其刷入。 ``` python ral_einlernen.py COM3 --original cr4501_original_....bin ``` ## 参考文件 用于反汇编或二次开发:界面代码、颜色表以及 开发过程中的原始图片位于 [referenz/](referenz/)。 **切勿盲目刷入其中的任何内容** — 尤其是 loader,它 携带了特定某台设备的出厂校准。具体原因详见 那里的 README。 ## 技术文档 内存映射、按键系统、屏幕处理、颜色测量、USB 协议以及如何写入永久存储器: **→ [doku/](doku/)**(德语 — 但其中的地址、字节序列和表格 不言自明) 其中的每个地址都已在设备或 flash 转储中验证过。它还 记录了出错的经过和原因,能帮你省去昂贵的弯路。 ## 撤销修改 在工具的第 5 步中,选择你的备份文件。如果网页无法访问,这 同样有效: ``` dfu-util -a 0 -s 0x08004000 -D your_backup.bin ``` 切勿使用 `-t` 选项,并且必须一次性写入整个区域 — bootloader 会在首次接收到写入命令时擦除所有内容,并要求 随后提供完整的镜像。 ## 责任声明 这是一个周末业余项目,不是 3nh 产品,不提供任何形式的保证。使用风险自负 — 但已经为你准备好了安全的退路,并且在任何情况下,你设备的校准都保持 原封不动。 如果工具因为无法识别固件版本而在你的设备上中止运行, 请与我联系,我会看看怎么回事。
| # 🔴 [启动工具](https://hallko1234.github.io/cr4501-ral-hack/) 🔴 ### 所有操作均在浏览器中进行——无需上传任何数据 [](https://hallko1234.github.io/cr4501-ral-hack/) **Chrome 或 Edge · 五分钟 · 完全可逆** |
该工具会一步步引导你:将设备置于更新模式, 检查驱动程序,**先备份**,然后刷入固件,最后进行测试。不会上传任何内容, 没有服务器,且你设备的固件永远不会离开你的 电脑。 作为额外奖励,它还解锁了出厂固件在测量界面禁用的按键—— 左、右和确认键终于能执行你期望的操作了。 ## 开始之前 * **Chrome 或 Edge。** Firefox 和 Safari 不支持 WebUSB。 * **在 Windows 上**,设备需要一次性安装 WinUSB 驱动程序,详见下文。 * **耗时:** 五分钟,其中四分钟为等待时间。 ## 进入更新模式 这是需要一点手感的步骤。**设备必须处于关机状态** — 长按测量按钮直到关机。然后等待**至少五秒钟** 不要触碰任何按键;没有这个停顿它就不会响应。 **选项 A** — 再次长按测量按钮,直到周围的圆环 **闪烁红光**。立刻松手。 **选项 B** — 同时按下测量按钮和确认按钮,也就是从 中间按压摇杆。红光会立即闪烁;立刻松手。 当圆环闪烁红光时,设备就准备就绪了。屏幕保持黑屏是 正常的。 ## 接下来 1. 通过 USB 插入,打开工具,**查找设备** 2. **读取并备份** — 保留该文件,这是你的退路 3. **刷入** — 工具会预先检查每个 patch 位置,遇到 极小的不匹配都会中止 4. 重启设备,进行测量,使用确认键切换视图 ## Windows 上的驱动程序 Windows 没有内置允许浏览器与之通信的更新模式驱动程序。 [Zadig](https://zadig.akeo.ie) 可以在一分钟内解决这个问题: 1. 在更新模式下插入设备 2. 启动 Zadig,*Options → List All Devices* 3. 选择 **STM32 DownLoad Firmware Update** (0483:DF11) 4. 在右侧设置 **WinUSB**,然后点击 *Install Driver* 仅需一次。**必须是 WinUSB** — 不能是 libusbK,也不能是 libusb-win32。这些 可以配合 dfu-util 工作,但浏览器将无法识别设备。这是这里最常见 的错误。 ## 修改了哪些内容 | 地址 | 修改 | 大小 | |---|---|---| | `0x08014288` | hook 进 RAL 界面 | 4 B | | `0x0800A9B4` | 解锁右键 | 4 B | | `0x0800A95C` | 解锁左键 | 4 B | | `0x0800A920` | 解锁确认键(读取功能) | 4 B | | `0x0800A69C` | 解锁确认键(处理程序) | 4 B | | `0x0802E3D0` | RAL 界面 | 1328 B | | `0x0802E900` | 颜色表,216 种带名称的色调 | 3732 B | 七个位置,仅超过 5 KB,全部位于应用区域 `0x08004000`–`0x0802FFFF` 内。 **`0x08030000` 以上未作任何改动** — 启动画面、设置以及最重要的 **出厂校准**。这在每台设备上都是独一无二的。写入 外部的校准会导致仪器永久性地测量错误,且没有任何 提示。该工具拒绝任何针对该范围的写入访问。 ## 颜色的来源 216 种 RAL Classic 色调,使用色卡扇测量,每种颜色测量三次。 重复性平均为 0.08 ΔE,最差情况为 0.50。 每条记录十个字节:L、a 和 b 为乘以一百的整数,外加 RAL 编号和用于显示的颜色值。名称作为带有引用而非重复的 词组共享块位于这些数据之后 — 否则它们将无法放入剩余的可用内存中。 老实说:这些数值来自*一张*色卡扇和*一台*设备。色卡扇 会老化和泛黄,每台仪器都有其自己的校准。对于“大致判断这是 哪种 RAL”来说,这完全足够了。如果要用于最终确认或投诉, 请去拿色卡扇。 ## 测量你自己的颜色 这里提供的颜色表来自一张色卡扇和一台设备。如果你想要属于你 自己的数值 — 比如不同的色卡扇、你自己的设备,或者仅仅是为了验证 — 用于此操作的程序位于 [werkzeug/](werkzeug/)(德语)。 它会依次测量 216 种颜色,检查离散度和重复读数, 并在最后根据你自己的备份文件构建出最终的固件。 然后你可以在工具中的 *Restore a backup* 下将其刷入。 ``` python ral_einlernen.py COM3 --original cr4501_original_....bin ``` ## 参考文件 用于反汇编或二次开发:界面代码、颜色表以及 开发过程中的原始图片位于 [referenz/](referenz/)。 **切勿盲目刷入其中的任何内容** — 尤其是 loader,它 携带了特定某台设备的出厂校准。具体原因详见 那里的 README。 ## 技术文档 内存映射、按键系统、屏幕处理、颜色测量、USB 协议以及如何写入永久存储器: **→ [doku/](doku/)**(德语 — 但其中的地址、字节序列和表格 不言自明) 其中的每个地址都已在设备或 flash 转储中验证过。它还 记录了出错的经过和原因,能帮你省去昂贵的弯路。 ## 撤销修改 在工具的第 5 步中,选择你的备份文件。如果网页无法访问,这 同样有效: ``` dfu-util -a 0 -s 0x08004000 -D your_backup.bin ``` 切勿使用 `-t` 选项,并且必须一次性写入整个区域 — bootloader 会在首次接收到写入命令时擦除所有内容,并要求 随后提供完整的镜像。 ## 责任声明 这是一个周末业余项目,不是 3nh 产品,不提供任何形式的保证。使用风险自负 — 但已经为你准备好了安全的退路,并且在任何情况下,你设备的校准都保持 原封不动。 如果工具因为无法识别固件版本而在你的设备上中止运行, 请与我联系,我会看看怎么回事。
### [▶ 打开工具](https://hallko1234.github.io/cr4501-ral-hack/)
标签:WebUSB, 前端工具, 后端开发, 固件刷写, 数据可视化, 测色仪, 硬件改造, 逆向工具, 颜色匹配