本帖最后由 wx69wx 于 2019-4-26 20:36 編輯
家里機(jī)頂盒又換成了移動的魔百盒cm101s-2,不能安裝第三方應(yīng)用,不爽之,所以就有了如下的折騰之旅。首先要感謝壇子各大佬帖子的指引才有此文。
1、安裝當(dāng)貝桌面
根據(jù)論壇帖子搜索,盒子沒有打開ADB的隱藏開關(guān),只能通過TTL線調(diào)試,正好手頭有根USB轉(zhuǎn)RS232的線,想著能否通用,所以拆開按引腳定義接了下盒子,結(jié)果發(fā)現(xiàn)PUTTY 跑碼是亂碼,試了多種碼率都不行,上網(wǎng)一查才知道USB/RS232/TTL電平邏輯是不一樣的,中間需要轉(zhuǎn)換芯片,所以最后還是買了根USB TO TTL線,PUTTY跑馬正常了。然后安裝上當(dāng)貝桌面等應(yīng)用。
2、切換IPTV桌面與當(dāng)貝桌面
進(jìn)IPTV是無法返回當(dāng)貝的,參照之前的做法 http://m.81jnr2m.cn/forum.php?mod=viewthread&tid=975562
找到一個啟動會執(zhí)行的腳本etc/init.bigfish.sh(init.rc----init.bigfish.rc----init.bigfish.sh)
添加如下代碼
- while [ 1 ]
- do
- rm_code=`getevent -c 1 /dev/input/event0`
- if [ "$rm_code" = "0001 02f2 00000000" ] ; then
- print $rm_code
- am start -n com.dangbei.tvlauncher/com.dangbei.tvlauncher.IndexActivity
- start adbd
- fi
- done
這里說下如何找到自己的切屏熱鍵碼,在TTL調(diào)試環(huán)境下輸入 getevent 然后遙控器按一下自己想設(shè)置的切屏鍵(注意是沒有用或很少用的,比如我選擇的是“應(yīng)用”這個按鍵,然后就可以看見事件和按鍵碼,如我的 /dev/input/event0 和0001 02f2 00000000,然后可以用getevent -c 1 /dev/input/event0測試,看看返回的是否對。
做完上面的事情后發(fā)現(xiàn)要調(diào)試盒子,每次都要拆機(jī)接TTL線太麻煩,所以靈機(jī)一動,直接在上面代碼里添加start adbd不就解決了,然后就可以用筆記本 adb connect XXXX(盒子IP):5114 調(diào)試了(注:我的盒子是已在init.rc里定義了端口號5114,如下
on boot
setprop service.adb.tcp.port 5114
stop adbd
如init.rc里沒定義,也可在上面的按鍵代碼start adbd前增加setprop service.adb.tcp.port YYYY(自定義端口)
至此,我們完成了切屏和啟動ADB的熱鍵功能。
3、制作分區(qū)表和備份boot分區(qū)
上面總覺得沒玩過癮,如果能直接更改init.rc最好,以前修改過發(fā)現(xiàn)不行,上網(wǎng)搜索只能燒錄(部分分區(qū)是燒錄的,直接修改無效,比如fastboot/boot(kernel)等,而system/data重新掛載為讀寫,是可以直接修改的
,這時剛好看到大佬的帖子http://m.81jnr2m.cn/forum.php?mod=viewthread&tid=1139749&page=
于是下載了HITOOL研究(我下了最新版5.0.27,稍后共享),首先我們沒有分區(qū)表文件,使用帖子的辦法居然失敗,原因是我的TTL跑馬里根本沒有各分區(qū)信息。只能自己琢磨了,終于找到辦法如下:
root@Hi3798MV100:/ # cat /proc/partitions 可以等到各分區(qū)大?。ǖ?列數(shù)據(jù))
major minor #blocks name
179 0 7570432 mmcblk0 總的大小
179 1 1024 mmcblk0p1 如:第一個分區(qū)大小1M
179 2 1024 mmcblk0p2
179 3 10240 mmcblk0p3
179 4 2048 mmcblk0p4
179 5 8192 mmcblk0p5
179 6 8192 mmcblk0p6
179 7 20480 mmcblk0p7
259 0 20480 mmcblk0p8
259 1 35840 mmcblk0p9
。。。。
然后顯示 /dev/block/platform/hi_mci.1/by-name目錄下內(nèi)容,可以得到各分區(qū)的名稱。
root@Hi3798MV100:/dev/block/platform/hi_mci.1/by-name # ls -al
lrwxrwxrwx root root 1970-01-01 08:00 baseparam -> /dev/block/mmcblk0p5
lrwxrwxrwx root root 1970-01-01 08:00 bootargs -> /dev/block/mmcblk0p2
lrwxrwxrwx root root 1970-01-01 08:00 cache -> /dev/block/mmcblk0p20
lrwxrwxrwx root root 1970-01-01 08:00 deviceinfo -> /dev/block/mmcblk0p4
lrwxrwxrwx root root 1970-01-01 08:00 fastboot -> /dev/block/mmcblk0p1
lrwxrwxrwx root root 1970-01-01 08:00 fastplay -> /dev/block/mmcblk0p9
lrwxrwxrwx root root 1970-01-01 08:00 fastplaybak -> /dev/block/mmcblk0p10
lrwxrwxrwx root root 1970-01-01 08:00 hibdrv -> /dev/block/mmcblk0p15
lrwxrwxrwx root root 1970-01-01 08:00 kernel -> /dev/block/mmcblk0p12
lrwxrwxrwx root root 1970-01-01 08:00 logo -> /dev/block/mmcblk0p7
lrwxrwxrwx root root 1970-01-01 08:00 logobak -> /dev/block/mmcblk0p8
lrwxrwxrwx root root 1970-01-01 08:00 misc -> /dev/block/mmcblk0p13
。。。。。
后來在研究HITOOL備份和燒錄時又找到了第二種方法:
在TTL連接啟動過程中,putty里跑馬時按CTRL+C,啟動會中斷在fastboot模式下,輸入help有多個命令使用,其中printenv就可以看到分區(qū)信息,如下:
fastboot# printenv
bootdelay=0
verify=n
baudrate=115200
ipaddr=192.168.1.10
serverip=192.168.1.1
netmask=255.255.255.0
bootfile="uImage"
phy_intf=mii,rgmii
use_mdio=0,1
phy_addr=2,1
gmac_debug=0
bootcmd=mmc read 0 0x1FFBFC0 0x4B000 0x5000; bootm 0x1FFBFC0
bootargs=console=ttyAMA0,115200 lpj=974848 quiet blkdevparts=mmcblk0:1M(fastboot),1M(bootargs),10M(recovery),2M(deviceinfo),8M(baseparam),8M(pqparam),20M(logo),20M(logobak),35M(fastplay),35M(fastplaybak),10M(ystinfo),40M(kernel),20M(misc),8M(userapi),8M(hibdrv),8M(qbflag),300M(qbdata),800M(system),2048M(userdata),500M(cache),50M(private),-(sdcard)
我們的boot分區(qū)根據(jù)經(jīng)驗就是kernel,先備份下,備份方法有很多,比如
cat /dev/block/platform/hi_mci.1/by-name/kernel > boot.img
dd if=/dev/block/mmcblk0p12 of=/mnt/sdcard/boot.img
hitool的上載備份
在使用HITOOL上載和燒錄功能時,我被制裁了,使用網(wǎng)口方式怎么都不成功,老是顯示TTTTT (網(wǎng)絡(luò)未連接), 使用串口方式可以,但那個慢啊,畢竟時115200bps(換算出來也就10K/S左右),后來終于解決了,折騰過程就不說了,提醒各位同學(xué)如下:
a、一定要使用網(wǎng)線連接,不要用WiFi (否則雙方都ping不通)
b、一定要關(guān)閉筆記本的windows防火墻(因為備份燒錄過程時由機(jī)頂盒連接PC,所以檢查PC能否ping通機(jī)頂盒沒用,需要機(jī)頂盒ping通PC)
重要的事情要說三遍。
4、修改boot分區(qū)
boot映像并不是一個完整的文件系統(tǒng),是一種android自定義的文件格式,該格式包括了2K的文件頭,后面緊跟著是用gzip壓縮過的內(nèi)核,再后面是一個ramdisk內(nèi)存盤等等
之前因為玩過手機(jī),感覺機(jī)頂盒和手機(jī)差不多,所以該祭出大殺器bootimg工具了(稍后共享),前面?zhèn)浞莺胟ernel分區(qū)(boot.img), 將他放在bootimg工具目錄下,使用命令bootimg --unpack-bootimg 解包后可以得到initd文件夾,現(xiàn)在我們可以自由修改init.rc 了,比如etc下新建user.sh, 添加上面的切屏按鍵代碼,然后在init.rc末尾添加
- service usersh /system/etc/user..sh
- class main
- user root
- group root
修改好后,在使用命令bootimg --repack-bootimg打包成新鏡像文件(注:文件大小會變小很多,對比原景象文件,是原景象要湊齊分區(qū)大小,末尾都是0,所以不影響使用),直接用hitool 燒錄即可。
注:同學(xué)如有興趣,也可以進(jìn)入fastboot模式,研究使用手動tftp命令燒錄
文中提到的HITOOL-STB- 5.0.27和bootimg工具百度網(wǎng)盤鏈接如下:
鏈接:https://pan.baidu.com/s/16BPGqnIJQ3_CRz9YFyMQRg
提取碼:hpx5
|