我正在寻找一种设备的固件是否可读且可能可写。该设备具有USB端口,并且该制造商的其他设备已进行固件更新(通过USB),因此这是可行的。

如何确定固件是否可行是否可以通过USB端口访问?如果有帮助,该设备是Cloupor Mini

评论

除了给电池充电以外,设备是否还使用USB端口?插入USB时,Windows设备管理器是否找到新设备?如果该制造商将固件更新工具用于其他设备,会发生什么错误消息,例如“找不到设备”或“不兼容的设备”,该怎么办?第一种可能暗示USB除了给电池充电外没有其他含义,第二种可能意味着设备以某种方式响应闪存工具。

最好的判断方法是拆开(和其他型号)并寻找UART。然后对其他型号进行更新,并嗅探USB端口等。

补充@GuntramBlohm的建议;请查看USB设备描述符中的bNumConfiguration字段(请参阅USB规范)。它指示当前操作速度下可用的配置数量。我认为该字段也可以放弃DFU或SW升级模式的可用性。

#1 楼

用于固件升级的标准USB协议是DFU。 Linux有2个可与DFU设备配合使用的工具:连接的具有DFU功能的设备,例如在笔记本电脑上运行时:

# dfu-util -l
dfu-util 0.5

[...]
Found Runtime: [0a5c:21e6] devnum=0, cfg=1, intf=3, alt=0, name="UNDEFINED"


虽然在使用不同设备及其特性时,这两种工具都可能有用。 :


不少供应商并不会竭尽所能,而只是使用DFU,而DFU提供了标准的实现和工具。但是,当然,任何特定设备都可以使用专有的升级协议。一种特殊情况是,设备仅将USB用于异步串行协议(UART / RS-232)仿真。
关于写入固件,可能会受到校验码/签名的保护,因此可能无法写入任意固件。 (使用社区资源来发现它们),并避免,忽略并警告其他未打开用户。

评论


虽然开源很好,但侵入到封闭源设备中并根据您的需求进行修改非常令人满意,这是相当“逆向工程”的经验。

–rev
2015年4月18日在19:45