请选择 进入手机版 | 继续访问电脑版

『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 2397|回复: 46

[进阶教程] 小米多模网关降级

[复制链接]

3

主题

55

帖子

285

积分

中级会员

Rank: 3Rank: 3

积分
285
金钱
225
HASS币
20
发表于 2020-11-4 20:33:39 | 显示全部楼层 |阅读模式
本帖最后由 shay 于 2020-11-18 18:02 编辑

之前购买了小米多模网关,一直没有接入ha,直到 多模网关成功接入ha ,完美接入ha。国庆之后蛋疼的点了网关更新,发现直接不能用了。从插件git页面看到,v1.4.6_0043 (2020.10)版本之后,telnet已经没法进入了,所以插件就不能使用。所以新购买小米多模网关通过这个插件接入ha的,就要注意版本问题了。


先说说降级的前提条件和风险,可能有点苛刻:
1.直接从v1.4.6_0043版本之前升级到任意新版,之后没有再更新过。
2.需要ttl转usb设备,淘宝买那个贵点的,质量可靠。
3.风险是可能变砖,但可以修复。不过需要求助歪果仁了。按我说的做风险很小。
-----11.18日追加:
v1.4.6_0043这个版本的,密码可破解,参考小米多模网关v1.4.6_0043版本成功接入ha经验分享
但比这个版本还新的,就尝试降级吧,因为新的直接打不开telnet了。
-----
原理是多模网关有两套固件,一套新的,一套上一版的。此方法是通过ttl修改固定引导,使用老板的固件。所以前提是网关里有个可用的老版固件。如果10月份连续升级了两次,那么目前是没戏了。(不太懂底层的boot指令,按说可以通过指令恢复到指定固件)。

隐约觉得自己十一期间更新了两遍,应该没戏了,不过看教程不麻烦,就死马当活马医,折腾下吧。

步骤:
1.拆机
拆了半天,最后发现慢慢的撬边就行了,顺着边慢慢撬,就打开了。
2.jpg

2.打开之后就是接ttl了
1.jpg
ttl的tx rx(tp4 tp11)是图片焊接的中间两个,边上焊接的那个是负极,没焊接的那个是正极。波特率是38400,开始我只接了tx rx,正常字母和乱码混合输出,所以又把负极(tp8)接上了,这下不会乱码了。顶上那根(tp16)是中断启动用的,使用方法是另一头直接碰触负极。

3.重点操作
使用可以记录日志信息的串口软件,多重启几次保留日志信息,用于万一挂了的时候的bootinfo 恢复。
重启的时候要关注loading kernel 这个部分,这个会有短暂的停顿。
root_sum_check: off
watchdog_time: 0
boot_version: 1.0.2.005
priv mode
Info: loading kernel 0 ...  Done
Info: checking kernel 0 ... Success
Info: select rootfs 0
Info: booting...
Info: loading kernel 0 ...  Done 这会有停顿,有足够的时间短接负极触发中断,这个时间点很重要,否则容易砖啊。
保存好日志,观察好触发时间点后。再次重启,看到Info: loading kernel 立马短接tp16和负极,此时主固件载入失败,载入备份固件,再次短接,就会进入到bootloader。(其实连续两次短接就行),输出如下
priv mode
Info: loading kernel 0 ...  Done
Info: checking kernel 0 ... Fail
Info: loading kernel 1 ...  Done
Info: checking kernel 1 ... Fail
Warn: all kernels are invalid !
Info: save boot_info

---Ethernet init Okay!


此时就进入了编辑状态,我们要做的就是修改引导的固件。执行如下指令

<blockquote>NANDR 0xa0000 0xa0a00000 55
结果如下:
<blockquote><RealTek>NANDR 0xa0000 0xa0a00000 55
(11.18更新,不会算的可以把代码复制到这个网页,算出来更新一样的)
我们需要修改的是xx xx yy yy yy yy部分,xx xx校验码。yy yy yy yy是引导的固件,只有 00 00 00 00和01 01 01 01这俩值,如果看到的值是前者,那么两个xx需要分别-2,如果是后者就分别+2.比如我的值是f5 f0 00 00 00 00,需要把00 改成 01,f5 f0分别-2后是f3 ee,那么输入如下指令
eb 0xa0a00000 7c 91 00 00 f3 ee 01 01 01 01
再次输入db 0xa0a00000 55指令,查看是否修改成功。如果修改成功,输入NANDW a0000 a0a00000 55指令保存。
然后直接输入reboot重启就好了,重启后就是老版的固件了。

运气比较好,我的老版固件还是夏天的那版,所以成功恢复了ha接入,立马用ha上插件的阻止更新功能关闭了网关的更新功能。


ps:
通过?指令可以查询到boot支持的指令。
HELP (?)                                    : Print this help message
boot : Boot kernel
boot_info : Show boot info
root_sum_check on|off   : Turn on or off rootfs boot sum check
wd_time <value>  : Set booting watch dog
DB <Address> <Len>
DW <Address> <Len>
EB <Address> <Value1> <Value2>...
EW <Address> <Value1> <Value2>...
CMP: CMP <dst><src><length>
IPCONFIG:<TargetAddress>
MEMCPY:<dst><src><length>
AUTOBURN: 0/1
LOADADDR: <Load Address>
J: Jump to <TargetAddress>
reboot
NANDID: Read NAND Flash ID
NANDBE:<offset><len>
NANDSCRUB:<offset><len>
NANDPIOR:<flash_Paddress><image_addr><image_size>
NANDPIOW:<flash_Paddress><image_addr><image_size>
NANDR:<flash_Paddress><image_addr><image_size>
NANDW:<flash_Paddress><image_addr><image_size>
NANDECCGEN: <source_addr><des_addr><ecc working buffer><length in hex>
NANDBBD:<offset><len>
NANDMARKB:<offset>
NANDFEATURE:<cmd> <address> <value>
NANDT: <cmd> <param>
MDIOR:  MDIOR phyid reg
MDIOW:  MDIOW phyid reg data
PHYR: PHYR <;PHYID><reg>
PHYW: PHYW <;PHYID><reg><data>
PHYPR: PHYPR <;PHYID><page><reg>
PHYPW: PHYPW <;PHYID><page><reg><data>
COUNTER: Dump Asic Counter
XMOD <addr>  [jump] 
TI : timer init 
T : test 
ETH : startup Ethernet
CPUClk: CP0


看不懂,不过应该可以恢复固件,我这篇文章完全是copy国外大佬的,再等大佬搞出任意版本恢复的步骤吧。

评分

参与人数 1金钱 +20 HASS币 +20 收起 理由
+ 20 + 20 厉害了word楼主!

查看全部评分

回复

使用道具 举报

1

主题

48

帖子

770

积分

高级会员

Rank: 4

积分
770
金钱
722
HASS币
0
发表于 2020-11-9 14:47:29 | 显示全部楼层
froggyfly 发表于 2020-11-9 11:13
上礼拜买的还是0.145,不过没法更新到0.146了,要升级就是0.147了

1.4.5 的 telnet 进去后, 到 https://github.com/niceboygithub/XiaomiGateway3fw 下载 1.4.6 firmware , 放到网关里, 再 fw_update XXX.bin
回复

使用道具 举报

30

主题

690

帖子

2901

积分

超级版主

Rank: 8Rank: 8

积分
2901
金钱
2166
HASS币
250

教程狂人突出贡献

发表于 2020-11-4 20:49:23 | 显示全部楼层
哎!可恶的小米,这都把大家逼成啥样了???

越来越封闭的小米,还能担得起智能家居一哥的名头???
建议阅读我发的所有帖子,在不同版块。不敢吹嘘,大部分还都算得上是干货。
任意米家蓝牙设备(最重要的:各款智能锁)接入HA的终极方案:https://bbs.hassbian.com/thread-10434-1-1.html
回复

使用道具 举报

16

主题

210

帖子

784

积分

高级会员

Rank: 4

积分
784
金钱
574
HASS币
0
发表于 2020-11-4 20:59:42 | 显示全部楼层
看不懂,先收藏吧
回复

使用道具 举报

12

主题

144

帖子

759

积分

高级会员

Rank: 4

积分
759
金钱
615
HASS币
30
发表于 2020-11-4 21:21:20 来自手机 | 显示全部楼层
阻隔后有什么变化么?我打开了后app还是收到更新提示
回复

使用道具 举报

3

主题

55

帖子

285

积分

中级会员

Rank: 3Rank: 3

积分
285
金钱
225
HASS币
20
 楼主| 发表于 2020-11-4 22:33:49 | 显示全部楼层
froggyfly 发表于 2020-11-4 21:21
阻隔后有什么变化么?我打开了后app还是收到更新提示

没变化,我的也是提示更新。应该是不会具体执行更新指令吧。要不您试试?
回复

使用道具 举报

12

主题

144

帖子

759

积分

高级会员

Rank: 4

积分
759
金钱
615
HASS币
30
发表于 2020-11-5 00:22:24 来自手机 | 显示全部楼层
shay 发表于 2020-11-4 22:33
没变化,我的也是提示更新。应该是不会具体执行更新指令吧。要不您试试? ...

算了,新到的在1.45时候就得升1.47了,1.46都没无法更新到了,后面批次可能就没法telnet了
回复

使用道具 举报

0

主题

33

帖子

212

积分

中级会员

Rank: 3Rank: 3

积分
212
金钱
179
HASS币
0
发表于 2020-11-5 08:16:12 | 显示全部楼层
新版的AlexxIT/XiaomiGateway3里有一个阻止固件更新的开关,打开后就放心了
回复

使用道具 举报

39

主题

2346

帖子

8148

积分

超级版主

Nero

Rank: 8Rank: 8

积分
8148
金钱
5752
HASS币
162
发表于 2020-11-5 13:41:14 | 显示全部楼层
XCray 发表于 2020-11-4 20:49
哎!可恶的小米,这都把大家逼成啥样了???

越来越封闭的小米,还能担得起智能家居一哥的名头??? ...

智能家居一哥自动化做的那么屎,更担不了一哥的名头。
Nero
回复

使用道具 举报

3

主题

55

帖子

285

积分

中级会员

Rank: 3Rank: 3

积分
285
金钱
225
HASS币
20
 楼主| 发表于 2020-11-5 19:22:57 | 显示全部楼层
froggyfly 发表于 2020-11-5 00:22
算了,新到的在1.45时候就得升1.47了,1.46都没无法更新到了,后面批次可能就没法telnet了 ...

是的,这个版本可能就存在了一段时间就没了。另外昨天看了代码,是通过命令attr +i实现对更新固件的锁定,让固件下载不下来。所以应该靠谱,只要不是bug没把这句执行成功。
回复

使用道具 举报

3

主题

55

帖子

285

积分

中级会员

Rank: 3Rank: 3

积分
285
金钱
225
HASS币
20
 楼主| 发表于 2020-11-5 19:23:58 | 显示全部楼层
孑000孓 发表于 2020-11-5 08:16
新版的AlexxIT/XiaomiGateway3里有一个阻止固件更新的开关,打开后就放心了

恢复成功后第一时间点了好几下,不过都页面提示都没成功。不过刷新是成功状态了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2020-11-28 21:28 , Processed in 0.102768 second(s), 40 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表