2011年10月6日 星期四

1073 跨機燒錄韌體的基本概念---以 HD-A5為例

因為大部分的 1073 媒體播放機在結構上都有某種程度上的相似性,因此自然而然就產生了跨機互燒韌體的可能性。而且,很多人都很喜歡這種「另類樂趣」。

跨機燒錄1073韌體,您可能會碰到這些狀況:

1.很快樂。
不但遙控器通用、而且所有的功能都俱全。能夠讓您這麼快樂,很可能是因為它們是同一間工廠的不同OEM產品。但是這類韌體的相似性也極高,有時甚至會懷疑它們之間到底有沒有什麼不同?

2.另一種快樂。
依先行者口碑,燒錄「通用韌體 + remote_key」或「通用韌體2.0 + irfake_irrp」,這兩種方法都能獲得體驗比原本韌體更多功能的樂趣。但也可能遭遇遙控器能不能開/關,面板開關能不能開/關、無線網卡能不能用...等問題。

3.遙控器無法操作。
如果您自行嘗試燒錄尚未有「口碑」的韌體,就有極大的機率遇上遙控器無法操作的情況。這是因為您的遙控器編碼與韌體的遙控器內碼不符所造成。每一家獨立廠商都會用一套他們自己的內碼。(下一段會告訴您如何解決)

4.韌體燒錄中止。
越來越多獨立廠商的韌體在燒錄過程會進行硬體辨識,一發現硬體不符就會中止燒錄:




如何解決遙控器無法操作的問題

要解決遙控器無法操作的問題之前,先讓我們了解HD-A5的啟動流程。

HD-A5被啟動之後會先執行快閃記憶體裡面的 BootCode,然後載入韌體,最後執行韌體裡面的程式,進入等待命令輸入階段:



從啟動流程中我們看到了「可乘之機」,例如我們只要在韌體的開頭部分增加一段密碼驗證程式,那麼這台機器開機後就得輸入密碼才能繼續執行。

相同的概念,可以用來解決遙控器的問題。

原本的遙控器解碼流程是這樣子的:



原本的韌體在收到 f00fbd00 遙控碼後,程式會先轉成 ascii X 在丟給 DvdPlayer 程式執行「向下」鍵的功能。而 HD-A5 的「向下」鍵遙控碼為 e21dfe01,原本的韌體看不懂,當然就失去遙控功能了。

為了解決這個問題,我們可以在韌體裡面增加一段程式,讓 e21dfe01 轉成「X」再直接丟給 DvdPlayer 就可以執行「向下」鍵的功能:



本來這個這個直接轉換的功能可以寫死在韌體裡面,但是為了造福更多各式各樣的遙控器,就改以外掛的方式。這個外掛的程式就是 remote_key。

而這個被修改過的韌體就被取名為「通用版」。

通用版韌體的第一次啟動流程是這樣子的:



remote_key 只有在配合「通用版韌體」時才有作用,不要誤以為每一種韌體都能使用它。tag_install 也是相同觀念下的產物。

另一種比較好的解決方案

由於 remote_key 會影響執行效率,於是有人引入 irfake 程式,再配合外部轉換表 irfake_irrp,製成「通用韌體2.0」:



通用韌體2.0的第一次啟動流程跟上面那個載入 remote_key 的版本很像:



irfake 的工作原理

irfake 是用程式導向的方式進行遙控碼轉換,也就是把原本的流程:



改成:



例如新遙控器的編碼 e21dfe01 會被轉換成原本韌體才認得的 f00fbd00,程式才得以執行。

所以只要知道遙控碼,每個遙控器都可以拿來用。家裡那個已經往生的SONY CRT電視原本配的遙控器終於可以重拾第二春。以前大廠配的遙控器,不管是質感、不管是觸感或是操作方便性,都遠遠超過今日那些阿里不達的劣質遙控器。(目前發現SONY TV 遙控碼無法讀取,研究中...)


如何DIY安裝irfake

如果您想嘗試燒錄非通用版韌體,您就一定要學會自己安裝irfake。
實作時請參考原版irfake的安裝步驟:

1.
用 Telnet 進入 HD-A5

2.
Copy 下面三個檔案
irfake4
shadow_irrp.dat (遙控碼置換表,需針對自己的遙控器自行重編)
venus_ir_new.ko

/usr/local/etc

3.
在 /usr/local/etc/rcS 檔案最前面加入以下兩行:

/sbin/insmod /usr/local/etc/venus_ir_new.ko
/usr/local/etc/irfake4 -R&

4.
Reboot

重新啟動後,編碼轉換程式讓新的遙控器發生作用。


結論

跨機燒錄1073韌體很好玩,裡面的可玩空間還很大。
每一個愛玩電腦的人都該買一台來玩;(呼籲廠商繼續提供NT$990的HD-A5)
每一個已經有1073媒體播放機的人更是要玩;
Linux初學者則是非玩不可---娛樂兼練功。呵呵呵。




.

沒有留言: