2011年10月24日 星期一

[HD-A5實驗報告]朝淡水4.0.2邁進---修改 install.img 中的 rcS

.

之前,我們已經練習很多次:
install.img + irfake4 + irfake_irrp + venus_ir_new.ko + 加修改過的 rcS

install.img + irfake4 + shadow_irrp.dat + venus_ir_new.ko + 加修改過的 rcS

就可以在您的機器上用原本的遙控器執行新韌體。

在修改過程,我們都是把
irfake4
irfake_irrp (或shadow_irrp.dat)
venus_ir_new.ko
這三個檔放到 /usr/local/etc 目錄下,而要修改的 rcS 也是在這個目錄中。

每個人都會問:我們可不可以事先就把這三個檔案與修改過的rcS放入install.img中?
答案是:可以的。

/usr/local/etc 這整個目錄其實是放在install.img-->installimg-->package2-->裡面的一個壓縮檔usr.local.etc.tar.bz2 中。(這部分的解開方法可以參考上一篇)

usr.local.etc.tar.bz2壓縮檔可以用 winrar 看到內容:



winrar 可以抓出 usr.local.etc.tar.bz2 裡面的檔案,但是卻放不回去。如果可以,事情就簡單多了。

要解開 usr.local.etc.tar.bz2 、放入三個檔案、修改rcS、再封包,還是靠 Linux/Unix 比較妥當。

我靠的是一張免安裝Linux光碟,如果您的筆電沒有光碟機,那就要靠 USB Linux(這裡不討論)。

以下就是完整的步驟:

1.
先在磁碟C:建立 000puppy 目錄(零零零開頭是為了排在最前頭),並且將 usr.local.etc.tar.bz2 放到這個目錄下,然後在000puppy 目錄裡面再建立一個子目錄 new : 



2.

irfake4
irfake_irrp (或shadow_irrp.dat)
venus_ir_new.ko
放入 new 這個子目錄下:



3.
下載 www.puppylinux.org 的 PuppyLinux ISO (128M) ,燒成光碟。(5.2.8版,勿用其他版本替代)

4.
啟動 PuppyLinux 光碟

5.
進入 PuppyLinux 後,要先把硬碟 mount 進來才能看到裡面的 000puppy 目錄。先按 mount 圖示:


確定磁碟機後,再按mount 按鈕:


看到/mnt/sda2 中的 000puppy 目錄了:(/mnt/sda2 由當時電腦環境決定)


/mnt/sda2/000puppy 目錄中的usr.local.etc.tar.bz2與 new 子目錄:


/mnt/sda2/000puppy/new 目錄中的三個檔案:


接下來,我們要做的是:
a.把usr.local.etc.tar.bz2解包放入 new 子目錄;
b.修改 new 子目錄中的 rcS;
c.把 new 子目錄中的所有檔案重新打包成usr.local.etc.tar.bz2 (共增加三個檔案與一個修改過的rcS)。

6.
點選 Console:


在 ROXTerm 視窗中輸入df ,記下磁碟機目錄代號,進入 000puppy 目錄,輸入將usr.local.etc.tar.bz2解包放入new子目錄的指令:

tar -jxvf usr.local.etc.tar.bz2 -C new



new 子目錄的內容變成:


7.
滑鼠右鍵點選 rcS,選 Open As Text 開始編輯,在 rcS 中加入一行:(如果之前加入的是shadow_irrp.dat,那 rcS 就不是這樣改)
/sbin/insmod /usr/local/etc/venus_ir_new.ko

再把 rcS 中的
./RootApp DvdPlayer&
./DvdPlayer&
這兩行分別改成:
/usr/local/etc/irfake4 -r -f /usr/local/etc/irfake_irrp | ./RootApp DvdPlayer&
/usr/local/etc/irfake4 -r -f /usr/local/etc/irfake_irrp | ./DvdPlayer&



修改後,存檔。

8.
進入 new 子目錄(要確認在 new 子目錄下),執行封包指令:

tar -jcvf usr.local.etc.tar.bz2 *



執行成功後,new 子目錄下多了一個 usr.local.etc.tar.bz2 :


9.
結束 PuppyLinux ,回到 Windows。用 new 子目錄下的 usr.local.etc.tar.bz2 取代 install.img --> installimage --> package2 裡面的 usr.local.etc.tar.bz2 再整個封包成 install.img ,這就是您的新版韌體了。

10.
完成



2011-12-03 補充

同樣的步驟,在執行這道指令
tar -jxvf usr.local.etc.tar.bz2 -C new
時,
在 p3-650 512M ram 的筆電上,會出現 cannot create symlink 的錯誤訊息。

但是

Celeron B800 1.5G 2G ram (HP CQ43-307TU)的筆電、
Pentium-m 1.6G 1G ram 的筆電

Sempron 2200+ 1G ram 的PC 上,都沒有問題。

為何獨獨在 p3-650 512M ram 的筆電上會出問題,原因不明。




.

6 則留言:

heroanl 提到...

大大,依了你的說明,試了shadow_irrp.dat 及 irfake_irrp 兩種,使用HD-A5原廠REMOTE還是沒有任何作動,只有按POWER可以開機而已.
請問,是什麼地方沒有作好嗎?還是IRFAKE4這個檔會依不同REMOTE而需要不一樣的檔案內容?
另外,請教,irfake_irrp裡,"0","fb04fe01","ea15bd00" 它的"fb04fe01"是指remote的ir code嘛,那"ea15bd00"是什麼碼?

ElectronMania 提到...

1.irfake_irrp、shadow_irrp.dat 避免在Windows下編輯存檔。重新下載再試。
2.前幾篇文章有 ir 相關說明。

匿名 提到...

請問一下,我在上海版變淡水版,有看到你在rcS多加了"/usr/local/etc/irfake4 -R&" 這行,但在這版上沒有看到加這行,請問加或不加有甚麼差異嗎??

ElectronMania 提到...

因為一個加 shadow_irrp.dat,另一個是加 irfake_irrp

匿名 提到...

你好我安裝海美迪HD300 1.0.4.6通用版後無法使用遙控器,使用隨身碟安裝irfake_irrp也無效!在執行tar -jxvf usr.local.etc.tar.bz2 -C new 又發生錯誤,還有別的方法安裝遙控碼嗎?謝謝

ElectronMania 提到...

每種通用韌體都有它自己的遙控碼處理方式,
像 r13 韌體,它先 http://播放器IP位址,再透過介面,
把準備好的搖控碼用剪貼的方式貼進去就好了。

r13 韌體考慮的很周到,也可以用手機透過網路進行搖控:
http://electronmania.blogspot.com/2018/10/1073-r13.html
https://electronmania.blogspot.com/2017/02/hd-a5-r12.html

HD300的通用韌體由於沒有實際使用經驗,並不清楚它的方法。



這個也可以參考:
https://electronmania.blogspot.com/2011/10/1073.html
以及
https://electronmania.blogspot.com/2011/10/hd-a5-sdk-v4-gui-20_09.html
的第5點