数码之家

 找回密码
 立即注册

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

搜索
查看: 15529|回复: 87

[外设] 用机顶盒打造一个低成本的EMMC编程器,实现BOOT分区读写

    [复制链接]
发表于 2024-5-27 23:32:26 | 显示全部楼层 |阅读模式
本帖最后由 yhky 于 2024-5-28 00:14 编辑

目前emmc常见于旧款安卓手机、平板电脑、机顶盒、路由器等设备,虽然emmc读写较为简单,使用一个普通的读卡器就能搞定,但在维修或者扩容等操作时,需要读写boot或者rpmb分区,普通读卡器则无能为力。


先在桃宝上找找emmc编程器,价格嘛,对新手还是不够友好。


这种价格比较友好的,其实只是普通读卡器,支持mmc卡的读卡器,它们能读取的只有userdata分区,也就是大部分设备存放系统和文件的地方,用于提取资料或者数据恢复还是可以的。


下面正式开工,某机顶盒主板,本次的编程器就是它,需要扩容的也是它,只不过是几台不同的机器而已。


先拆下旁边的晶振,根据经验判断这种元件不能承受风枪加热的高温,但操作失误直接将焊盘拆掉了,直接无视吧。还是拆emmc,焊接过程省略。


用这种emmc转tf卡,也可以用emmc转sd卡,根据机器上的卡槽来选择,一般建议转tf卡,因为这种用途更广泛。


选择一台能够root的机顶盒,打开终端模拟器,也可以使用adb操作
输入命令 ls /dev/block
查看是否能识别外置的mmc卡,内置卡的设备名通常为mmcblk0,外置卡为mmcblk1。一般可以在插卡之前查看一遍,插卡后再查看一遍,这样就能判断有没有识别到卡了。
查看到识别到了4个设备,其中mmcblk1为整个设备,mmcblk1p1为userdata部分的第一个分区,mmcblk1boot0和mmcblk1boot1为两个boot分区
插入原有芯片,备份原有数据,输入命令 dd if=/dev/block/mmcblk1 of=/storage/emulated/0/mmc.bin
插入替换芯片,写入备份数据,输入命令 dd if=/storage/emulated/0/mmc.bin of=/dev/block/mmcblk1
擦除芯片,输入命令 dd if=/dev/zero of=/dev/block/mmcblk1,用全0擦除
记住if=输入文件,of=输出文件,linux系统将所有设备都视为文件,只需对文件进行操作即可。这里的顺序不能颠倒,否则dd=destory data~
也可以使用这个命令,单独对boot0/boot1/rpmb分区进行读写。


看到这里,表示已经写入成功。


装回芯片验证,系统成功启动,不过容量并没有改变,在这里需要进rec双清一下,或者使用线刷工具重刷固件,才能正确识别容量。

成本统计:盒子35,转接卡3.5,供参考。本盒子为Aml S905D,1G+8G配置,已经把字库升级为16G,为了看电视和录视频,所以选择了扩容。

理论上,使用那些Z3735或者Z8300的win板主板,CPU原生SDIO接口出来的SD/TF卡槽,在Linux系统如Debian、Fedora、Alpine下也可以实现相同功能,具体我没测过。另外Z3735可以通过bootia32.efi引导64位Linux,具体折腾办法不再多述。

友情提示:
1.选用的盒子必须开启root,否则无法直接读写mmcblk设备,另有部分设备可以在adb或者TTL下使用root权限操作的,也行
2.可以给盒子刷入armbian ubuntu系统,以便更好地使用工具,例如使用mmc-utils可查看emmc剩余寿命
3.建议文件使用绝对路径,例如内部SD卡的实际挂载点为/storage/emulated/0,以这个路径存放备份文件,对于USB设备的挂载点就不统一了,以实际为准
4.若文件较大,建议将操作设备扩容,或者局域网挂载nfs设备,或者使用usb设备的方式存放备份文件
5.强烈建议不要使用中文或者带空格的文件名、文件路径,否则输入它们会异常难受,还容易造成错误
6.请严格区分操作命令以及文件名的大小写,常年使用win养成的坏习惯不能带到linux下。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册 微信登录

x

打赏

参与人数 8家元 +169 收起 理由
风雨无阻2018 + 10 受益匪浅,感谢分享。
xw801 + 18 我很贊同
stdzlqz + 30 優秀文章
亲爱的混蛋 + 30
笑着无奈 + 30
200birds + 30
亚历山大 + 9 認真發帖
hongo + 12 原創內容

查看全部打赏

 楼主| 发表于 2024-5-28 08:22:47 | 显示全部楼层
11651189 发表于 2024-5-28 07:38
高手啊,不仅吹焊功夫厉害,linux命令也记得那么熟悉。

过奖了,emmc焊接还是比较简单的,因为有效点位少,拆坏晶振焊盘其实还上技术不到位。。。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-5-28 08:28:14 | 显示全部楼层
理论上使用if=/dev/block/mmcblk0 of=/dev/block/mmcblk1,可将当前系统直接克隆到新emmc上,实现对本机的直接扩容,不过具体我没操作过,因为系统盘占用问题容易导致读取错误,不过写入boot和必要的引导后再刷机也是可以的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-5-28 12:07:07 | 显示全部楼层
吃烧饼喝三鹿 发表于 2024-5-28 11:54
感谢楼主分享哈
俺记得好像是有款螃蟹的主控支持boot的读写

螃蟹主控的读卡器,常见于笔电,没有猜错的话应该是某款电脑的内置读卡器
我自己也有款螃蟹的,RTS5139的,在本贴倒数第2图的左下角那款,用起来比很多品牌的都要好用
其实本质上就是魔改固件,使它能读取所有分区
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-5-28 12:13:24 | 显示全部楼层
极客新人 发表于 2024-5-28 12:08
那如果使用RK或者全志的开发板,从SD卡启动Linux;然后将emmc作为编程用的岂不是也可以实现类似功能 ...

这个不一定,要看机器是否能改boot配置,从某个sdio端口引导系统,从而完全去除对内置emmc的依赖
我用这个机器试过,拆下内置emmc然后焊在tf卡上,再将tf插进卡槽,开机能进引导,但无法加载系统,提示无法挂载rootfs然后重启。尝试过修改uboot-env但无法保存,也可能是uboot本身的问题
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-5-28 14:49:14 | 显示全部楼层
rush 发表于 2024-5-28 12:41
mt7621的路由器带sd卡插槽也可以干这个,底层是sdio

mt7621带原生sdio的路由器好像不多,我知道的只有PBR-M1和Newifi D1,还有ZBT-WG2626
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-5-28 14:50:05 | 显示全部楼层
scxj 发表于 2024-5-28 13:15
手上有个机顶盒,开机不能进入桌面,但是用刷机卡连电脑上,再刷机卡读取信息后回车并输入boot后就可以进入 ...

接TTL线看看启动日志,估计是uboot-env配置有误
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-5-28 15:09:46 | 显示全部楼层
scxj 发表于 2024-5-28 15:01
ttl跑起来就老循环不停,得按下回车才停止,因为看不懂那些信息就没办法~故障是卸载电视家后发生的。 ...

有需要就在站里单独发个贴,把问题的前后经过详细描述,贴上TTL信息
应该具体描述:设备型号、硬件配置(最起码要有SOC的型号)、固件状态(官方、第三方、是否ROOT等)、故障软件等信息,TTL信息从上电输出信息开始抓取,直到设备卡死或者自动重启为止,没有详细的信息,无法判断和解决问题
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-6-2 08:13:04 | 显示全部楼层
1325133 发表于 2024-6-2 01:05
对笔电SD卡模块改USB有兴趣,建议楼主开一贴讲讲,因为我手上有两个从老联想笔记本和一台上网本上拆下来 ...

早期的笔电SD模块是USB2.0接口,后期的可能是PCIe接口了,因为USB2.0的传输速度太慢,先确认芯片是什么再看如何改装
如果是USB2.0,从芯片上引出的应该只有1组差分线,确认DM和DP引脚很简单,确认供电3.3V或5V也不难
如果芯片引出的差分线有3组,大概率就是PCIe接口了,因为这是PCIe x1的标准配置,另外还有1根复位信号线
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-6-3 12:56:39 | 显示全部楼层
2n3055 发表于 2024-6-3 12:22
这个很实用,能不能考虑加个座,经常拆装焊盘不容易坏掉。

用SD或者TF转EMMC卡还需加座?拆废了大不了换个转接板继续搞
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-9-14 23:18:12 | 显示全部楼层
prence 发表于 2024-9-14 09:46
这个盒子是啥型号呀?

AT1202,一款支持DTMB的安卓机顶盒,原系统是32位安卓6,可以刷N1的部分固件,小黄鱼搜索S905D 1+8G就能看到
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-9-27 18:19:12 | 显示全部楼层
星s银 发表于 2024-9-27 12:43
我有点不太明白,是还需要一台能够root的安卓机顶盒吗?一台是待扩容机器,一台是用来读取数据的机器?
我 ...

读卡器基本都是USB存储设备,linux会挂载为sdx设备,只支持userdata分区读写。这个机器自带的TF卡槽是CPU直连的SDIO接口,系统支持MMC协议卡,这样才会把emmc显示为mmcblk设备,加上机器支持root所以能读写操作,这几个条件缺一不可。
回复 支持 0 反对 0

使用道具 举报

 楼主| 发表于 2024-10-5 11:32:23 | 显示全部楼层
o535913 发表于 2024-10-4 15:09
请教下, 这个芯片在原本的平板或手机里的时候,原系统走的是SDIO协议还是MMC协议呢。是引导至内核之前走 ...

SDIO接口是直连CPU的,不能从读卡器输出,如果板子上有GL827/AU6483/RTS5159之类的读卡器芯片就不用看了
另外有些设备的内核底层或者x86的BIOS只支持SD协议,不支持MMC的,也不行
据我所知,安卓7以上的设备有大概率会不支持MMC协议,安卓4到安卓6的可能性较大。另外x86主板的读卡器位置也有大概率不支持MMC,直接不认卡的,但内置emmc作为系统盘的地方肯定支持MMC
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-10-5 11:38:06 | 显示全部楼层
liveder 发表于 2024-10-4 23:19
请教大佬,为啥提示IO错误
1|franklin:/ # dd if=/storage/emulated/0/boot1.bin of=/dev/block/mmcblk1boo ...

读写错误,如果用了SD或者TF转接卡检查是否开了写保护,转接卡和卡槽接触不良也有可能,如果是焊接在板子上的检查是否焊好
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-1-7 18:41:49 | 显示全部楼层
goldkey 发表于 2025-1-7 17:59
现在的机顶盒很多都是没有SD卡槽了,想试一下都不行。
楼上有人说可以用路由器,这个倒是可以尝试一下,有 ...

旧一点的机顶盒,特别是运营商送的盒子,大多还是有卡槽的
另外带卡槽的路由器刷op固件也可以,例如newifi d1,价格也和这个差不多
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-1-10 22:44:43 | 显示全部楼层
htceos 发表于 2024-10-17 22:56
EMMC字库读写工具_大飞汉化版 这个软件可以读取UBOOT吗

这个软件长啥样,用啥读写工具,很可能是基于普通读卡器的直接读写
如果UBOOT存放于Userdata分区,肯定能读取出来
如果UBOOT存放于Boot1/Boot2分区,大概率无法读取到
回复 支持 反对

使用道具 举报

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

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2025-6-25 14:40 , Processed in 0.124801 second(s), 11 queries , Redis On.

Powered by Discuz!

© 2006-2025 MyDigit.Net

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