纯 ADB 拯救海思Hi3798MV100:免 TTL 刷Hinas+无线网卡驱动全记录
手里有台海思Hi3798MV100的老盒子,安卓系统是中国移动的定制系统,一直想把它彻底刷成Linux跑点轻服务。传统套路得拆机接TTL,手边没工具(其实是太懒了,不想拆盒子),既然ADB能连并且有Root权限,能不能直接在系统里把 eMMC 给覆盖了?
答案是可以。刷完顺手把自带的无线网卡也驱起来,彻底摆脱网线。写篇备忘,下次再刷少走弯路
总结就一句话
在开启ADB并且有Root权限的安卓上,用ADB把完整的eMMC镜像直接 dd 进 /dev/block/mmcblk0,覆盖全盘。写完把盒子重启,系统就自动启动了
准备清单
- 盒子:Hi3798MV100,要eMMC 闪存,非NAND非高安,已启用ADB并且拥有Root权限
- 固件:对应
reg name的TTL线刷包,里面有一堆分区镜像和 XML 分区表 - 软件:HiTool(需要 32 位 Java,64位的跑不起来)、ADB 工具
- 网络:盒子和电脑同一局域网,ADB 能通
第一部分:纯ADB刷写Linux 系统
步骤一:拿到 reg name
这东西相当于盒子的型号,找固件必须对得上。
adb shell
su
cat /dev/block/mmcblk0p1 | grep -a hi3798m输出类似 hi3798mv100 mdmo1g,记下 mdmo1g
步骤二:用HiTool做 emmc.flash 镜像
- 打开 HiTool(闪退的话装个 32 位 Java 8,如果安装了,还是报错,就改
HiTool.ini指定路径) - 芯片选Hi3798MV100→「烧写 eMMC」选项卡(如果ADB一直链接着,会自动选择)
- 加载固件里的
emmc_TTL-hi3798mv100-32.xml分区表文件 计算镜像长度:最后一个分区起始地址 + 对应
.img文件大小- 比如最后一个分区起始 610M,镜像文件 827M,加起来就是 1437M(截止2026/4/12大小为1437M)
- 点「制作烧片器」,生成
emmc.flash(会问你长度是多少,保存到哪里,名称写emmc.flash)
步骤三:把镜像写进盒子
推荐刷前先关闭远程维护再开
两种方式,看心情选
方式 A:推送进去再写(前提机器存储足够)
adb push 把我换成Flash在电脑的文件位置 /data/local/tmp/
adb shell
su
dd if=/data/local/tmp/emmc.flash of=/dev/block/mmcblk0 bs=1024方式 B:一条命令流式直刷(没测试过,不保证可用)
adb exec-out < 把我换成Flash在电脑的文件位置 | adb shell "su -c 'dd of=/dev/block/mmcblk0 bs=1024'"写入过程 5 到 15 分钟,屏幕没任何输出,别手贱打断,期间刷到一半盒子输出黑屏,不要慌,正常现象,等待镜像dd完毕即可
踩坑备忘
nc监听报错:试过用nc传数据,结果Segmentation fault。放弃,改用上面两种方式adb push中断:机器远程维护自己关闭,推荐刷前先关闭远程维护再开- HiTool 闪退:必须 32 位 Java 8,在
HiTool.ini里-vm指向正确路径 - 镜像长度算错:刷完黑屏变砖。务必核对 XML 里最后一个分区起始地址和对应 img 文件大小,精确相加
- 写完用
reboot重启:系统分区已经被覆盖了,reboot很可能失效。直接拔电源再插上,等 3-5 分钟初始化
刷完验证
重新通电后,去路由器后台找 MAC 地址是 00:11:22:33:44:55 的设备,那台就是刷好的 Hinas盒子
第二部分:驱动无线网卡(RTL8188FTV / ETV)
刷完系统后,如果盒子自带无线网卡,放着也是浪费,顺手驱起来。
目前 Hi3798MV100 大部分机型用的都是 RTL8188FTV 或 RTL8188ETV,驱动和内核版本强绑定,不同版本之间不能通用。MV200 和 MV300 不适用(补药刷,刷了可能用不了,甚至变砖)
一、查看网卡型号
SSH 连上盒子,输入:
lsusb找到 Realtek 那一行,比如 ID 0bda:f179 是 RTL8188FTV,ID 0bda:0179 是 RTL8188ETV。记住型号。
二、确保内核版本匹配
先看当前内核:
uname -r三、下载驱动包
威子大佬的驱动包下载地址:
常见的有 0403、0302、0808 等版本。如果内核和手头驱动包版本对不上,建议刷成 0808 内核(社区资源最全)
刷 0808 内核的方法:把 hi_kernel-mv100-0808.bin 用SFTP上传到 /tmp,然后执行:
cd /tmp
dd if=hi_kernel-mv100-0808.bin of=/dev/mmcblk0p6
reboot重启后内核就变 0808 了
四、安装驱动
把驱动包和 wifi_install.sh 脚本一起上传到 /tmp,然后:
cd /tmp
chmod a+x wifi_install.sh
sh wifi_install.sh -f 驱动包文件名 -s "WiFi名称" -p "密码"比如我的网卡是 RTL8188FTV,内核 0808,命令就是:
sh wifi_install.sh -f rtl8188ftv-0808.tar.gz -s CCMC-9178 -p 123456脚本参数说明:
-f:驱动包文件名-s:WiFi 名称-p:WiFi 密码-d:固定 IP(可选)-g:网关(可选)-m:掩码(可选)
装完稍等片刻,网卡估计就连上了
五、常见问题及解决
1. 提示找不到 WiFi
手动连接一下:
nmcli device wifi connect "WiFi名字" password "密码" ifname wlan02. 拔掉网线后 SSH 连不上 / 启动巨慢
原因是网线拔了以后,系统还在使劲给 eth0 申请 DHCP 地址,卡在 a start job is running for raise network interfaces 长达五分钟。
解决办法:编辑 /etc/network/interfaces.d/eth0,把 auto eth0 注释掉或删掉,换成 allow-hotplug eth0
vi /etc/network/interfaces.d/eth0改完类似这样:
# auto eth0
allow-hotplug eth0
iface eth0 inet dhcp或者直接给 eth0 配个静态 IP 也行。重启盒子,启动速度就正常了
3. 插回网线后 WiFi IP 连不上
网线插回去后,系统会自动加一条优先级更高的默认路由,数据全走 eth0 了,WiFi 那边就失联了。临时解决:手动删掉多余路由。
先看路由表:
ip route show然后删掉 eth0 相关的:
ip route delete 192.168.3.0/24 dev eth0 # 替换成你自己的网段
ip route delete default4. 想给 WiFi 设静态 IP
编辑 /etc/NetworkManager/system-connections/WiFi名字.nmconnection,找到 [ipv4] 段:
[ipv4]
dns-search=
method=auto改成:
[ipv4]
dns-search=
method=manual
addresses1=192.168.1.100/24,192.168.1.1
dns=192.168.1.1然后重载连接:
nmcli connection reload "WiFi名字"
nmcli connection down "WiFi名字"
nmcli connection up "WiFi名字"最后
这套纯 ADB 方案,免拆机、免 TTL、免短接,一条网线搞定全盘换系统。刷完顺手把无线网卡驱了,盒子彻底自由。关键点就几个点:镜像长度算对、ADB 别断、写完拔电、内核版本和驱动包对得上,或许这套方案能在别的海思设备上实现,如果有其他型号的设备想要折腾的朋友可以试试
写给自己的备忘录,如果能帮到同样折腾海思盒子的朋友,那就更好了