Skip to content
On this page

移动魔百和 CM201-2 机顶盒免拆机改三方桌面

找到一个之前办理北京移动送的机顶盒,由于自带的系统太难用,想要刷机或者安装第三方桌面。

查找资料

首先是找到了一个求助贴:https://www.znds.com/tv-1202246-1-1.html

然后下面网友回复:

型号是魔百和 CM201-2,https://www.znds.com/tv-1185501-1-1.html刷包地址

帖子内容如下:

刷机工具及固件下载 链接:https://pan.baidu.com/s/12SQrZ0XNB2hA68npMaw5Bg 提取码:w4b9

下载后解压,内附说明文档,原文如下:

本固件包针对解决 CM201-2 系列所有型号刷机,准备两个符合刷机要求的 U 盘:(如果语音失效,可通过市场更新插件后重启即可解决。)

1、准备一个 U 盘,将 sw_product_check 整个文件夹复制放入 U 盘里,插机顶盒,开机会弹出一个对话框,打开 ADB 端口即可,然后记录下机顶盒 IP 地址,然后执行第二个步骤

2、免拆工具,电脑上运行文件夹里的一键刷机工具文件,输入盒子 IP 即可,自动完成后,进行第三步操作

3、将卡刷包文件夹里的固件包,复制放入 U 盘里,插上机顶盒,自动刷机,如果未自动卡刷就在 U 盘里新建一个 upgrade 文件夹,卡刷固件包放入这个文件夹里,然后按上述操作刷机即可。

4、强刷引导文件是搭配固件包一起救砖的使用的;

尝试刷机

将 sw_product_check 拷贝到 U 盘中插入机顶盒,开机等了很久,右下角显示正在下载,然后提示更新成功,弹出对话框询问是否重启机顶盒,选择立刻重启会重复一遍刚才的过程,这次选择稍后重启,机顶盒会一直黑屏。按设置键会进入设置页面。并没有弹出 ADB 相关或者,原生设置页面。

在设置页面中查看到当前 IP 为:192.168.1.16

使用 adb connect 192.168.1.16 连接机顶盒,提示:failed to connect to '192.168.1.16:5555': Connection refused

然后又搜索了一下,在这篇帖子中 https://www.znds.com/tv-1200629-1-1.html 有人提到:

新版系统锁了 ADB,所以不能用。

拔掉 U 盘重启启动,提示正在升级更新的字样,恢复了原来的系统。

然后又搜索到一个帖子:https://www.52pojie.cn/thread-1179336-1-1.html

提到:

移动 CM201 的机器更简单:点击遥控器设置、停留设备信息 3 秒后开始输入顺序按: 上上 下下 左左 右右 ok ok ok ok(OK 按键反复按)直到出现出厂调试,再打开 ADB 选项打开,手机安装悟空遥控连接就可以在手机上给电视安装各种软件。 你试试

照着试了试,没有特别的反应。

搜索看到有的教程里提到要将 update.zip 拷贝到 U 盘中,拷贝后插入机顶盒,真准备重启再试试,此时自动跳转到了开发者模式的界面,USB 调试已经打开。

然后使用 adb connect 192.168.1.16 重新连接,连接成功:connected to 192.168.1.16:5555

接下来输入:

shell
adb shell "mount -o remount,rw /system"

无任何输出。

然后输入:

shell
adb shell "mount | grep system"

输入出内容:

/dev/ubi2_0 /system ubifs rw,relatime 0 0

根据说明:

system 后有 ubifs 字样说明是 nand 闪存; system 后有 ext4 字样的是 emmc 闪存。

可以确定是 nand 闪存。

再输入:

shell
adb shell "cat /proc/msp/sys"

输出:

SDK_VERSION: [HiSTBAndroidV600R003C01SPC031_v2020040917] Build Time: [May  6 2021, 15:11:29]
UNF_VERSION: 3.3.1
CHIP_VERSION: Hi3798MV300
PACKAGE_TYPE: BGA 14*14
DOLBY: NO
DTS: NO
ADVCA: NO
ROVI(Macrovision): NO
HDR10: YES
DolbyVision: NO

根据输出的信息,可以确定是海思芯片,型号是 Hi3798MV300。

根据说明进入 zg1 分支:

shell
# 挂载 system 分区
adb shell "mount -o remount,rw /system"
# 拷贝 recovery_Hi3798MV300.img 到 /tmp/recovery
adb push recovery_Hi3798MV300.img /tmp/recovery
# 写入 recovery 到 mtdblock2 和 mtdblock3
adb shell "dd if=/tmp/recovery of=/dev/block/mtdblock2"

输出:

25032+0 records in
25032+0 records out
12816384 bytes transferred in 3.671 secs (3491251 bytes/sec)
shell
adb shell "dd if=/tmp/recovery of=/dev/block/mtdblock3"

最后一行输入后,没有任何输出,停顿了很久。根据说明:

请注意:此处有较长时间停顿及最终显示上传文件速率即替换文件成功, 显示 error: device not found 说明替换文件失败,请检查设备连接情况!

于是继续等待。。。很久也没有反应,直接按电源关闭重启了机顶盒。

重启后,机顶盒正常进入了系统,没有出现任何特别的反应。

于是关机,重新拷贝 update.zip 到 U 盘 upgrage 文件夹中,插入机顶盒,开机然后进入了系统。弹出了提示框,提示正在升级,升级完毕自动重启,提示正在安装系统更新后进入了系统。然后又弹出了升级提示。。。在如此往复了几次后,我按了电源按钮关机了。

放弃刷机,改为安装三方桌面

使用 adb install 命令安装了几个 apk,虽然提示成功了,但是在机顶盒上并没有看到安装的应用。

按设置按钮进入原生设置页面,查看软件列表,发现了刚才安装的应用,但是无法打开。

下载了一个当贝桌面,安装后在设置中进入主屏幕将当贝桌面设置为默认桌面,按桌面按钮仍然进入的是默认桌面,然后重启,发现系统设置中默认桌面已经还原为 SWGuide_bj。

尝试使用 adb 启动当贝桌面:

shell
adb shell am start com.dangbei.tvlauncher

成功启动了当贝桌面。但是重启后还是回到了默认桌面。

使用 adb shell pm list package 列出

net.sunniwell.guide.bj 疑似是默认桌面。

使用 adb uninstall net.sunniwell.guide.bj 卸载失败

使用 adb shell ls /system/app/ 列出系统应用,发现了 SWGuide_bj.apk

挂载系统分区后,删除 SWGuide_bj.apk

shell
adb shell "mount -o remount,rw /system"
adb shell "rm /system/app/SWGuide_bj.apk"

重启后,成功启动了当贝桌面。

此时按桌面键,会显示一个空的壁纸页面。

根据帖子内容:https://www.znds.com/forum.php?mod=viewthread&tid=1174456&page=1#pid57124202

还需要修改 /system/etc/keyfunction.xml 文件

使用 adb 将文件下载到电脑:

shell
adb pull /system/etc/keyfunction.xml

然后修改文件,在 Applications 节点下添加内容:

xml
<key>
    <keyName>HomePage</keyName>
    <keyValue>3</keyValue>
    <packageName>com.dangbei.tvlauncher</packageName>
    <activityName>com.dangbei.tvlauncher.IndexActivity</activityName>
    <action>android.intent.action.MAIN</action>
  </key>

修改后如下:

xml
<?xml version="1.0" encoding="utf-8"?>
<Applications>
  <key>
    <keyName>Vod</keyName>
    <keyValue>138</keyValue>
    <action>com.ysten.action.OpenApp</action>
    <actionUrl>vod</actionUrl>
  </key>
  <key>
    <keyName>Live</keyName>
    <keyValue>136</keyValue>
    <action>com.ysten.action.OpenApp</action>
    <actionUrl>live</actionUrl>
  </key>
  <key>
    <keyName>Info</keyName>
    <keyValue>139</keyValue>
    <action>com.ysten.action.OpenApp</action>
    <actionUrl>info</actionUrl>
  </key>
  <key>
    <keyName>Lookback</keyName>
    <keyValue>137</keyValue>
    <action>com.ysten.action.OpenApp</action>
    <actionUrl>lookback</actionUrl>
  </key>
  <key>
    <keyName>guoantv</keyName>
    <keyValue>1190</keyValue>
    <actionUri>launcher://com.guoan.tv</actionUri>
  </key>
  <key>
    <keyName>HomePage</keyName>
    <keyValue>3</keyValue>
    <packageName>com.dangbei.tvlauncher</packageName>
    <activityName>com.dangbei.tvlauncher.IndexActivity</activityName>
    <action>android.intent.action.MAIN</action>
  </key>
</Applications>

将修改后的文件上传到机顶盒:

shell
adb push keyfunction.xml /system/etc/keyfunction.xml

重启后,按桌面键,提示选择桌面,选择当贝桌面键成功进入了当贝桌面。但是总会额外弹出一个提示框:选择要使用的应用。

继续尝试禁用 icntv

shell
db shell "pm disable tv.icntv.ott"

这次按桌面键,直接进入了当贝桌面。不用选择桌面了,但是仍然会弹出那个提示框。

是在没找到合适的解决办法,只好随便选择了第一个,并设置为始终使用。

重新启动后,又出现了黑屏,到设置中手动将当贝桌面设置为默认桌面。然后按桌面键,又到了壁纸页面。。。

到当贝桌面设置中,关闭了桌面询问,又好了。