大力学习台灯T6/T6Pro 救砖实战:macOS/Windows 用 mtkclient 从 Fastboot 无限重启完整恢复(含固件下载地址)

大力学习台灯T6/T6Pro 救砖实战:macOS/Windows 用 mtkclient 从 Fastboot 无限重启完整恢复(含固件下载地址)

大力学习台灯T6/T6Pro(MTK)救砖实战(小白可用):macOS/Windows 用 mtkclient 从 Fastboot/Logo 无限重启完整恢复(含恢复原机 SN/proinfo)

本文记录一次 Dali T6 学习机(联发科 MTK 平台,示例识别为 MT6771/0x788 系列)从“卡 Fastboot / Logo 无限重启”到 成功进入系统,并最终 恢复原机 SN/设备身份(proinfo) 的完整过程。

如果你是小白:你只需要按本文顺序复制粘贴命令即可。每一步我都写了:

在这里插入图片描述

TL;DR(傻瓜式总流程:照抄就能修)

下面这套是“最短路径”修复流程:

  • 先备份原机身份(proinfo)(防止 SN 丢失/绑定冲突)
  • 再把整机 user 区(backup.bin)写回去(解决 Fastboot/Logo 循环)
  • 最后写回原机 proinfo 恢复 SN(避免家长 App 冲突)

如果你不想看后面的解释,只做这几步就行。

TL;DR-1:把文件放对位置(非常关键)

macOS 放这里(推荐统一路径,避免输错):

  • backup.bin 放到:/Users/c/Desktop/dali/backup.bin
  • 原机备份 proinfo.bin 放到:/Users/c/Desktop/t6_identity_backup/proinfo.bin

Windows 放这里:

  • backup.bin 放到:C:\\dali\\backup.bin
  • 原机备份 proinfo.bin 放到:C:\\dali\\t6_identity_backup\\proinfo.bin

TL;DR-2:进入 BROM(本机型实测无需短接)

每次执行 mtkclient 命令时:

  • 先在电脑上运行命令(它会等端口)
  • 插电源 + 插数据线
  • 一直长按电源键不放,直到电脑端出现:
    • Port - Device detected :)
    • BROM mode detected.

TL;DR-3:macOS 一键流程(复制粘贴版)

A) 安装 mtkclient(只需一次)
git clone https://github.com/bkerler/mtkclient.git ~/mtkclient cd ~/mtkclient python3 -m pip install -r requirements.txt 
B) 备份“当前原机身份”(必须做,防丢 SN)
mkdir -p /Users/c/Desktop/t6_identity_backup cd ~/mtkclient sudo python3 mtk.py r proinfo /Users/c/Desktop/t6_identity_backup/proinfo.bin 

成功标志(看到任意一个即可):

  • Dumping partition "proinfo"
  • Dumped sector ... as .../proinfo.bin
C) 整机写回 user 区(本次成功关键步骤)
cd ~/mtkclient sudo python3 mtk.py wo 0x0 0x3a5c00000 /Users/c/Desktop/dali/backup.bin --parttype user 

成功标志:出现 Write 进度条,并最终写入完成。

写完后按这个顺序重启:

  • 拔 USB
  • 拔 DC
  • 等 10–15 秒
  • 只插 DC 开机验证是否能进系统
D) 恢复 SN(先备份可启动 proinfo,再写回原机 proinfo)

先备份“可启动状态 proinfo”(回滚用):

cd ~/mtkclient sudo python3 mtk.py r proinfo /Users/c/Desktop/proinfo_working_now.bin 

再写回原机 proinfo(恢复 SN/绑定):

cd ~/mtkclient sudo python3 mtk.py w proinfo /Users/c/Desktop/t6_identity_backup/proinfo.bin 

如果写回后反而异常(少数情况),立刻回滚:

cd ~/mtkclient sudo python3 mtk.py w proinfo /Users/c/Desktop/proinfo_working_now.bin 

TL;DR-4:Windows 一键流程(复制粘贴版)

A) 安装 mtkclient(只需一次)
git clone https://github.com/bkerler/mtkclient.git C:\mtkclient cd C:\mtkclient python -m pip install -r requirements.txt 
B) 备份原机 proinfo
mkdir C:\dali\t6_identity_backup cd C:\mtkclient python mtk.py r proinfo C:\dali\t6_identity_backup\proinfo.bin 
C) 整机写回 user 区
cd C:\mtkclient python mtk.py wo 0x0 0x3a5c00000 C:\dali\backup.bin --parttype user 
D) 恢复 SN
cd C:\mtkclient python mtk.py r proinfo C:\dali\proinfo_working_now.bin python mtk.py w proinfo C:\dali\t6_identity_backup\proinfo.bin 

异常回滚:

cd C:\mtkclient python mtk.py w proinfo C:\dali\proinfo_working_now.bin 

TL;DR-5:最常见失败处理(小白只看这段就够)

  • 一直卡在 Waiting for PreLoader VCOM
    • 继续长按电源键(别松)
    • 换数据线(优先)
    • 换 USB 口
    • 全断电 10 秒再试
  • backup.bin 过程中断了/报错
    • 先别开机折腾,重新进 BROM 再写一次(供电/线材先换好)
  • 写回原机 proinfo 后又异常
    • 立刻按上面的“回滚命令”写回 proinfo_working_now.bin

在这里插入图片描述

0. 重要结论(先说重点)

  • 如果你已经分区刷写了 boot/lk/super 等仍然无限重启,最终成功率最高的方案之一是:
    • 直接把可用机器备份的 user 区整块镜像(backup.bin)写回 eMMC user 区(raw write)。
  • 写回整机镜像后设备能进系统,但通常会带上供体身份信息;要避免家长 App 绑定冲突,需要:
    • 写回你自己的 proinfo.bin(原机备份)以恢复 SN/身份
  • 本机型进入 BROM 的方式(本次实测):
    • 不需要短接 TestPoint
    • 只要 插上电源/数据线的同时一直长按电源键,mtkclient 就能捕获到 BROM/Preloader 端口完成读写。

1. 风险提示(务必阅读)

  • 先备份再写入:至少备份 proinfo,推荐同时备份 nvram/nvdata/nvcfg
  • proinfo 是设备身份分区:包含 SN/识别码等。刷错会导致绑定冲突。
  • seccfg 是安全配置分区:风险更高,非必要不要写;若要写必须先备份并可回滚。
  • 整机 raw write 会覆盖 user 区大量内容,请确保:
    • 供电稳定
    • 线材稳定
    • 写入过程中不要断电/拔线

额外提醒(小白最容易踩坑):

  • 只要你还进得去 BROM,就还有救,不用慌。
  • 先备份再写入 是底线:尤其是 proinfo
  • 下面涉及到的命令基本都需要 管理员权限
    • macOS:命令前面加 sudo
    • Windows:用“管理员身份运行”PowerShell/命令提示符

2. 准备材料(照着准备就行)

  • 一台电脑:macOS 或 Windows
  • 一条可靠的数据线(必须有数据线芯,不是纯充电线)
  • Dali T6 设备 + 电源
  • 固件/镜像文件(你后续补链接)
    • t6.bin:供体设备备份(用于分区提取/实验)
    • backup.bin:最终用于整机恢复的 eMMC user 区镜像(关键)

推荐你把文件放在一个固定目录里(避免路径写错):

  • macOS:/Users/你的用户名/Desktop/dali/
  • Windows:C:\\dali\\

本文后续示例以 macOS 路径为主,你在 Windows 上只要把路径替换成 C:\\... 即可。


2.1 术语解释(小白必看,1 分钟看完)

  • BROM:联发科芯片最底层的“下载模式”,只要能进 BROM,通常就能读写 eMMC。
  • Preloader:BROM 之后的引导阶段(USB 连接时常显示 PreLoader VCOM)。
  • 分区(partition):手机/设备存储里被划分出来的一块块区域,比如 bootsuper
  • user 区(eMMC USER):你设备主要存储区域(类似一整块硬盘)。
  • raw write / 整机写回:不按“分区名”写,而是按“偏移地址”把整个 user 区镜像写回去。
  • proinfo:设备身份分区,通常包含 SN/序列号等。恢复 SN 就靠它。
  • bootloop(Logo 循环):出现 Logo 后自动重启,循环不停。

3. 安装 mtkclient(macOS / Windows)

3.1 macOS 安装

  1. 安装 Python3(建议 3.9+)
  2. 拉取 mtkclient
git clone https://github.com/bkerler/mtkclient.git ~/mtkclient cd ~/mtkclient 
  1. 安装依赖
python3 -m pip install -r requirements.txt 

如果 pip/依赖安装失败,优先检查:

  • Python 版本是否过低(建议 3.9+)
  • 是否用了系统自带的旧 Python
如果你系统需要 sudo 才能访问串口/USB,可后续命令加 sudo

3.2 Windows 安装(PowerShell)

  1. 安装 Python 3.x(勾选 Add to PATH)
  2. 安装 Git(可选)
  3. 拉取或下载 mtkclient
git clone https://github.com/bkerler/mtkclient.git C:\mtkclient cd C:\mtkclient python -m pip install -r requirements.txt 
Windows 若无法识别 Preloader/BROM 端口,通常需要驱动/线材/时序排查(后文有“常见坑”)。

4. 进入 BROM(本机型实测:无需短接)

本次修复中,进入 BROM 的方法如下:

  • 插上电源 + 插上数据线
  • 一直长按电源键不放(持续按住)
  • 同时在电脑端运行 mtkclient 的读/写命令,它会等待端口,捕获到后自动进入流程

正常现象:

  • 先看到反复提示 Waiting for PreLoader VCOM...
  • 然后出现 Port - Device detected :)
  • 然后出现 BROM mode detected. / Uploading stage 2... / DRAM setup passed.

小白操作步骤(照抄):

  1. 电脑上先打开终端/PowerShell
  2. 执行任意一个“读分区”命令(例如下面第 5 节的 r proinfo
  3. 看到程序在等端口时
  4. 插上 DC 电源 + 插上 USB
  5. 一直按住电源键不放,直到电脑端出现 Port - Device detected :)

如果你一直进不去:

  • 换 USB 口、换线(优先换线)
  • 先拔电源/USB 等 10 秒再试
  • Windows 检查设备管理器里有没有闪一下“MediaTek USB Port / Preloader”

5. 第一步:备份原机身份分区(恢复 SN 的关键)

先建立备份目录:

mkdir -p ~/Desktop/t6_identity_backup cd ~/mtkclient 

进入 BROM 后依次执行(建议全部备份):

sudo python3 mtk.py r proinfo ~/Desktop/t6_identity_backup/proinfo.bin sudo python3 mtk.py r nvram ~/Desktop/t6_identity_backup/nvram.bin sudo python3 mtk.py r nvdata ~/Desktop/t6_identity_backup/nvdata.bin sudo python3 mtk.py r nvcfg ~/Desktop/t6_identity_backup/nvcfg.bin 

Windows 对应写法(路径与 python 命令不同):

cd C:\mtkclient mkdir C:\dali\t6_identity_backup python mtk.py r proinfo C:\dali\t6_identity_backup\proinfo.bin python mtk.py r nvram C:\dali\t6_identity_backup\nvram.bin python mtk.py r nvdata C:\dali\t6_identity_backup\nvdata.bin python mtk.py r nvcfg C:\dali\t6_identity_backup\nvcfg.bin 

验证文件大小(示例):

  • proinfo 通常约 3MB
  • nvram/nvdata/nvcfg 大小因机型不同

成功标志(你会看到类似):

  • Dumping partition "proinfo"
  • Dumped sector ... as .../proinfo.bin
  • 以及一个 Read 进度条

如果报错/读不出来:

  • 先不要进行写入操作,先把“能读出来的先读出来”
  • 反复出现 Waiting for PreLoader VCOM:回到第 4 节重新调整“长按电源键 + 插线”时序

6. 第二步:先尝试“分区级刷写”(从 fastboot 推进到系统启动)

如果你手里只有 t6.bin 这类供体镜像,可以先按 GPT/分区表提取并刷写关键分区(示例)。

小白建议:如果你只是想“快速修好”,且你手里有 backup.bin(整机 user 区镜像),可以直接跳到第 8 节做整机写回,成功率更高。

6.1 提取分区(dd 示例格式)

具体 skip/count 必须以你设备 printgpt 输出为准。
mkdir -p ~/Desktop/t6_parts # 示例(仅演示格式)ddif=/path/to/t6.bin of=~/Desktop/t6_parts/boot_a.img bs=512skip=<OFFSET_SECTOR>count=<COUNT_SECTOR>

小白怎么拿到 <OFFSET_SECTOR>/<COUNT_SECTOR>

  • 你需要先运行一次 printgpt 把分区表打印出来(会输出每个分区的起始扇区和长度)。

macOS:

cd ~/mtkclient sudo python3 mtk.py printgpt 

Windows:

cd C:\mtkclient python mtk.py printgpt 

6.2 写入分区(mtkclient w)

cd ~/mtkclient sudo python3 mtk.py w boot_a,boot_b /path/to/boot_a.img,/path/to/boot_b.img 

如果仍无法启动,常见还需要写入:

  • lk_a/lk_b
  • dtbo_a/dtbo_b
  • vbmeta*
  • super
  • tee/gz/spmfw/sspm 等链路分区
  • 以及清空 userdata(视情况)

7. 第三步:遇到 Logo 循环(bootloop)如何判断原因

本次案例在刷入多分区后从 fastboot 变成 Logo 循环重启,属于“更进一步但仍失败”。

7.1 导出 crash 日志分区

mkdir -p /Users/c/Desktop/bootloop_logs cd ~/mtkclient sudo python3 mtk.py r expdb /Users/c/Desktop/bootloop_logs/expdb.bin sudo python3 mtk.py r ramdump /Users/c/Desktop/bootloop_logs/ramdump.bin 

成功标志:能看到 Read 进度条,并在最后提示 Dumped ... as ...

7.2 快速搜索关键字

strings -a /Users/c/Desktop/bootloop_logs/ramdump.bin |egrep -i "watchdog|hang_detect|panic|fatal|init|vold|mount|dm-|metadata|super|avb|verity"|head -n 200

本次案例典型表现:

  • AP Watchdog
  • hang_detect ... system_server found pid:xxx

说明系统启动到 framework 阶段卡死/无响应,最终被 watchdog 重启。


8. 最终方案:整机 user 区 raw write(backup.bin)直接恢复

当你确认“分区补刷/验证身份分区/甚至 seccfg”等都无法解除 bootloop,最强力的一步是:

  • 把可用设备导出的 eMMC user 区整块镜像写回backup.bin)。

8.1 先确认 backup.bin 大小

ls -lh /path/to/backup.bin 

本次案例中(供参考):

  • backup.bin 大小约 15.6GB
  • 设备输出 EMMC USER Size: 0x3a5c00000

如果你不确定要写入的长度:

  • 先运行一次任意 mtkclient 读/写命令,输出里会打印 EMMC USER Size,把它记下来。

同时你也可以从 mtkclient 输出看到设备 user 区大小(示例):

  • EMMC USER Size: 0x3a5c00000

8.2 执行整机写回(write offset)

命令如下(示例按 0x3a5c00000):

cd ~/mtkclient sudo python3 mtk.py wo 0x0 0x3a5c00000 /path/to/backup.bin --parttype user 

Windows(示例):

cd C:\mtkclient python mtk.py wo 0x0 0x3a5c00000 C:\dali\backup.bin --parttype user 

成功标志:

  • 会出现 Write 进度条
  • 最后显示写入完成/成功信息

注意:这一步很耗时(十几 GB)。过程中请做到:

  • 不要拔线
  • 不要让电脑休眠
  • 供电一定稳定

写入完成后断电重启:

  • 拔 USB
  • 拔 DC
  • 等 10–15 秒
  • 只插 DC 开机验证

本次案例结果:系统成功进入


在这里插入图片描述

9. 恢复原机 SN/身份(写回 proinfo)

整机写回后设备通常带上供体身份信息。为了恢复你自己的 SN/绑定,必须写回原机 proinfo.bin

9.1 先备份“当前可启动状态 proinfo”(回滚点)

cd ~/mtkclient sudo python3 mtk.py r proinfo /Users/c/Desktop/proinfo_working_now.bin 

为什么要备份这份:

  • 因为它代表“当前这台机器能正常开机的 proinfo 状态”。
  • 如果你写回原机 proinfo 后又出现异常,你能立刻写回这份恢复开机。

9.2 写回原机 proinfo(恢复 SN)

假设原机备份在:

  • ~/Desktop/t6_identity_backup/proinfo.bin

写回命令:

cd ~/mtkclient sudo python3 mtk.py w proinfo /Users/c/Desktop/t6_identity_backup/proinfo.bin 

成功标志:

  • 输出类似 Wrote ... to sector ... with sector count ...

写完后请断电重启验证:

  • 拔 USB
  • 拔 DC
  • 等 10–15 秒
  • 只插 DC 开机

9.3 如果写回后出现异常(回滚)

极少数情况下写回整块原机 proinfo 可能导致异常;此时可立刻回滚到可启动版本:

cd ~/mtkclient sudo python3 mtk.py w proinfo /Users/c/Desktop/proinfo_working_now.bin 

本次案例:写回原机 proinfo 后仍可启动,SN/身份恢复完成。


10. 常见坑 & 解决思路

10.1 一直 “Waiting for PreLoader VCOM”

  • 保持长按电源键不放(本机型关键点)
  • 更换 USB 口/线材
  • 确保供电稳定
  • Windows 检查驱动与设备管理器端口变化

补充:小白建议你按这个顺序排查:

  1. 换数据线
  2. 换 USB 口
  3. 电脑重启一次
  4. 再考虑驱动问题(Windows)

10.2 Handshake failed

  • 不要慌,重试
  • 调整“按住电源键 + 插线”的时序
  • 线材接触不良也会导致反复握手失败

10.3 不要一开始就写 proinfo / seccfg

  • 先备份
  • 实验要能回滚

10.4 为什么“分区刷写”不如“整机 raw write”稳定

因为很多机型的启动依赖:

  • 多分区组合一致性
  • 隐藏配置/校准数据
  • 安全/策略分区状态

当你无法确定所有依赖是否已对齐时,整机写回往往一次性解决一致性问题。


11. 最终结果与验证清单

  • 设备从 fastboot / logo 循环成功恢复到可进入系统
  • 最终写回原机 proinfo 完成 SN/身份恢复
  • 家长 App 绑定不再与供体设备冲突(需自行验证绑定)

验证清单:

  • 备份原机 proinfo.bin
  • 备份 nvram/nvdata/nvcfg(可选但推荐)
  • backup.bin raw write 完成并可启动
  • 备份可启动状态 proinfo_working_now.bin
  • 写回原机 proinfo.bin 后仍可启动

在这里插入图片描述

12. 固件下载地址(你后续补充)

13. 特别注意

如果长按电源键无法进入BROM模式时 可能需要拆机 短接主板触电激活该模式如下图:

在这里插入图片描述


## 14.特别感谢
昵称:@阿莫西 @红鲤鱼与绿鲤鱼
** 提供的固件支持!

Read more

将openclaw接入飞书:10分钟,让你的AI员工直接操作你的文档和表格!

将openclaw接入飞书:10分钟,让你的AI员工直接操作你的文档和表格!

上一篇,我们给小龙虾接了 Telegram,实现了手机遥控。 但说实话,Telegram 只解决了"能聊天"的问题。你跟小龙虾说"帮我写个文档",它写完了——然后呢?你还得自己复制粘贴到你的编辑器中。 这就像请了个助手,他只能站在门外隔着门跟你喊话,但不能进屋帮你干活。 今天这篇,我们把门打开。让小龙虾直接进入你的飞书——读文档、写文档、操作表格、管理日程,全部自己来。 先看效果👇 飞书的配置比 Telegram 多一些步骤,但别慌——跟着我走,每一步都有截图,大概10分钟搞定。 飞书的接入分四个阶段,先有个全局概念,不容易迷路: 1. 在飞书上造一个机器人 — 相当于给小龙虾办一张飞书工牌 2. 在服务器上装飞书插件 — 让小龙虾学会"说飞书的语言" 3.

By Ne0inhk
【Java 开发日记】阻塞队列有哪些?拒绝策略有哪些?

【Java 开发日记】阻塞队列有哪些?拒绝策略有哪些?

目录 阻塞队列有哪些? 拒绝策略有哪些? 面试回答 阻塞队列有哪些? 在Java的java.util.concurrent包里面,阻塞队列的实现挺多的,我们可以根据它的功能和结构来记,主要分这么几类: 1. 按容量划分: * 有界队列: 就是队列有固定的容量。 * ArrayBlockingQueue: 最经典的一个,底层是数组,创建时必须指定大小。它的生产和消费用同一把锁,性能相对稳定。 * LinkedBlockingQueue: 底层是链表,它既可以是有界的(构造时指定容量),也可以默认是无界的(默认是Integer.MAX_VALUE,几乎相当于无界)。它的生产和消费用了两把锁,在高并发场景下吞吐量通常比ArrayBlockingQueue更高。 * 无界队列: 理论上是无限的,只要内存够就能一直放。 * PriorityBlockingQueue: 一个支持优先级排序的无界队列。元素必须实现Comparable接口,或者构造时传入Comparator。它出队的顺序是按优先级来的,不是先进先出 * DelayQueue: 一个很特殊的队

By Ne0inhk
深入浅出Java Condition 的await和signal机制(一)

深入浅出Java Condition 的await和signal机制(一)

每个对象都可以调用 Object 的 wait/notify 方法来实现等待/通知机制。而 Condition 接口也提供了类似的方法。Condition 接口一共提供了以下 7 个方法: * await():线程等待直到被通知或者中断。类似于 Object.wait()。 * awaitUninterruptibly():线程等待直到被通知,即使在等待时被中断也不会返回。没有与之对应的 Object 方法。 * await(long time, TimeUnit unit):线程等待指定的时间,或被通知,或被中断。类似于 Object.wait(long timeout),但提供了更灵活的时间单位。 * awaitNanos(long nanosTimeout):线程等待指定的纳秒时间,或被通知,或被中断。没有与之对应的 Object 方法。 * awaitUntil(Date

By Ne0inhk
Java 大视界 -- 基于 Java 的大数据实时流处理在工业物联网设备状态监测中的应用与挑战

Java 大视界 -- 基于 Java 的大数据实时流处理在工业物联网设备状态监测中的应用与挑战

Java 大视界 -- 基于 Java 的大数据实时流处理在工业物联网设备状态监测中的应用与挑战 * 引言 * 正文 * 一、工业物联网设备状态监测概述 * 二、基于 Java 的大数据实时流处理技术 * 2.1 技术架构与原理 * 2.2 状态管理与故障恢复 * 三、应用案例分析 * 四、引入边缘计算优化架构 * 五、面临的挑战与应对策略 * 5.1 数据质量问题 * 5.2 系统性能瓶颈 * 5.3 安全与隐私保护 * 结束语 * 🗳️参与投票和联系我: 引言 亲爱的 Java 和 大数据爱好者们,大家好!在科技引领产业变革的时代,大数据技术已成为推动各行业智能化转型的核心引擎。此前,我们通过一系列文章,深入探讨了 Java 大数据在金融、

By Ne0inhk