最近买了一台PortaPackH2+,自带固件为1.7.2,更新GitHub上最新的Mayhem2.1.0固件后无法开机,故障现象就是按下开机钮后屏幕闪一下就黑屏了,而此时通过按DFU按钮可以进入DFU模式,也可以通过工具引导为HackRF模式,并且也可以通过SDR软件正常操作。

起初以为是PortaPack的问题,以为是底层程序坏掉了,后来通过查找资料发现,PortaPack上没有存储程序,所有程序都存储在HackRF ONE板子上的一个25系列的SPI flash,容量为1MB. 但是奇怪的就是通过官方的各个版本进行DFU刷机,都是提示成功的,但是就是无法启动,也按照WIKI的说法按了上下左右键,依旧还是无效,此时感觉Mayhem根本就没有运行,于是转战Ubuntu。 本以为按照网上前辈的方法,修改下固件cpld相关的源码编译下,结果依旧无效,经过了一天的研究发现linux上的刷机工具有一个参数可以读SPI flash,于是便读了一下,结果发现flash里的固件依旧是老的固件,有经过反复刷新几次,更换不同的固件版本,发现读出来的始终是1.7.2这个版本的内容,到此貌似问题找到了,也就是说通过DFU模式引导启动的HackRF其实固件是在内存上的,可能由于bug也好或者种种原因导致在此模式下刷写固件无法真正写入到flash实体,可能是一种内存驻留固件的特征,导致表面上刷机成功,实际并没有真正写入flash,于是又经过一番研究,发现刷机工具有一个释放flash状态的参数,于是按指示重置下flash状态再次写入固件,这次没有着急重启,而是直接读出一次,读出结果和固件文件内容一致,此时终于看到了希望,拔掉USB线,PortaPack启动成功了,而且再刷固件也正常了。
2025-06-01T00:44:07.png

标签: none

评论已关闭