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

 找回密码
 立即注册
查看: 123597|回复: 111

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

  [复制链接]

5

主题

100

帖子

795

积分

高级会员

Rank: 4

积分
795
金钱
690
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楼主!

查看全部评分

回复

使用道具 举报

2

主题

135

帖子

2270

积分

金牌会员

Rank: 6Rank: 6

积分
2270
金钱
2135
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
回复

使用道具 举报

12

主题

242

帖子

2397

积分

论坛技术达人

积分
2397
金钱
2155
HASS币
30
发表于 2020-12-3 20:21:33 | 显示全部楼层
俄国佬们已经研究出新的刷机方法了, 只需要接三个点, 就能随便刷固件
https://github.com/serrj-sv/lumi ... /main/uart_recovery

评分

参与人数 1金钱 +20 收起 理由
lidicn + 20 感谢楼主分享!

查看全部评分

回复

使用道具 举报

12

主题

242

帖子

2397

积分

论坛技术达人

积分
2397
金钱
2155
HASS币
30
发表于 2020-12-7 16:29:43 | 显示全部楼层
需要看老毛子正确拆解视频的请移步

https://v.youku.com/v_show/id_XNDk5NzU4Njc3Ng==.html
回复

使用道具 举报

12

主题

242

帖子

2397

积分

论坛技术达人

积分
2397
金钱
2155
HASS币
30
发表于 2020-12-10 08:21:55 | 显示全部楼层
srakse 发表于 2020-12-10 07:58
刷完之后,zg的设备能接入了,但是蓝牙设备还是没有~有同类情况的兄弟吗?版本是1.47 065 ...

我遇到过, 需要刷蓝牙部分,
run_ble_dfu.sh /dev/ttyS1 full_125.gbl 125 1
full_125.gbl 在这里下载
https://github.com/niceboygithub ... ll_125.gbl?raw=true

并且升级最新master分支的HA component
回复

使用道具 举报

98

主题

2866

帖子

1万

积分

超级版主

智能家居&单板滑雪痴迷爱好者

Rank: 8Rank: 8

积分
11443
金钱
8512
HASS币
460

教程狂人突出贡献

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

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

使用道具 举报

39

主题

477

帖子

2687

积分

金牌会员

Rank: 6Rank: 6

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

使用道具 举报

17

主题

270

帖子

1724

积分

金牌会员

Rank: 6Rank: 6

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

使用道具 举报

5

主题

100

帖子

795

积分

高级会员

Rank: 4

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

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

使用道具 举报

17

主题

270

帖子

1724

积分

金牌会员

Rank: 6Rank: 6

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

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

使用道具 举报

0

主题

56

帖子

2136

积分

金牌会员

Rank: 6Rank: 6

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

使用道具 举报

40

主题

3057

帖子

1万

积分

超级版主

Nero

Rank: 8Rank: 8

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

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

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

使用道具 举报

5

主题

100

帖子

795

积分

高级会员

Rank: 4

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

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

使用道具 举报

5

主题

100

帖子

795

积分

高级会员

Rank: 4

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

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

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-4-25 06:49 , Processed in 1.352903 second(s), 41 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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