陳 淡,沈 琳
(福州大學 福建省數字電視工程研究中心,福建 福州 350002)
近年來,智能手機和平板電腦保有量的不斷上升沖擊著傳統通信和互聯網行業,而智能電視整合了多屏互動、語音識別、云端技術等諸多移動領域的熱點概念,通過OTT業務渠道對廣電傳統DVB業務發起挑戰。隨著三網融合的進一步推進,整個DVB產業都面臨著轉型升級的關鍵階段,可以預見未來幾年的數字電視產業將通過Android這個開放式的開發平臺,傳統DVB業務與互聯網TV業務進一步融合創新,進入下一個爆發式的增長點。
OTA(Over The Air)空中升級,是指用戶終端可以直接通過信號通道的接收下載,進行軟件的更新升級[1]。而通過完善Android平臺提供的軟件升級功能,保障平臺前期較頻繁的更新升級,是提高產品競爭力和用戶滿意度的重要保證,因此保證OTA的通暢和穩定具有極大的實用意義。本設計結合Android平臺的OTA技術特點,按照盡量節省帶寬和流量資源以及穩定易維護的設計思想,提出了一套綜合DVB業務OTA、網絡服務器的OTA以及本地升級等多途徑的復合空中升級的部署方案,以實現降低DVB業務升級的復雜度與運維成本的目的。
Android開放源代碼項目(AOSP)提供了相當完善的OTA機制,其特性有:支持完整包升級和增量升級包升級兩種方式;通過對升級插件擴展,可支持升級所有的分區和啟動鏡像;數字簽名升級包,防止升級包遭篡改;升級時掉電的安全恢復處理。
軟件升級包的生成主要由AOSP中的發行工具包(Releasetools)來實現。升級軟件生成的流程圖如圖1所示。在build/core/Makefile中定義的$(BUILT_TARGET_FILES_PACKAGE)依賴定義升級相關的文件,生成一個zip格式的中間升級包。ota_from_target_files的Python腳本以中間zip作為輸入,生成可用于OTA升級的zip包。調用ota_from_target_files時,可以使用-i選項指定一個前期版本的中間升級包作為基準包,用于生成增量升級包。在理解升級包的生成原理后,可以實現一種只升級指定分區部分文件集合的升級包,本文將其稱為獨立升級包。獨立升級包的生成,實際是對正常流程得到的中間升級包進行干涉,使編譯得到的zip中間包只包含指定的文件集合,參考ota_from_target_files的做法,對Edify腳本的生成進行修改,在升級時不做格式化的操作,而后再對其進行簽名處理。

圖1 升級軟件生成原理圖
RecoverySystem作為Android框架的軟件升級API,提供應用程序框架與Android的Recovery系統交互的能力[2]。RecoverySystem 中 installPackage,reboot-WipeCache,rebootWipeUserData,verifyPackage四個靜態方法提供了應用層校驗與安裝軟件升級包、驗證升級包數字簽名、清空Cache和Data分區的功能。
顧名思義,Recsovery內核與系統內核相區別,從Recovery內核啟動得到的是升級軟件系統環境。軟件的校驗升級、已經擦除相應的分區等工作,都是在升級環境中完成的。而系統應用層升級接口可以通過向/cache/recovery文件中寫RC命令,與Recovery內核的升級環境交互。
Updater升級執行文件包含在軟件升級包中,實現升級時處理流程,支持Edify升級腳本語言,并能通過插件實現平臺相關的升級定制需求。
Android的升級基本流程如圖2所示,其主要思想就是通過Bootlooder根據BCB(Bootloader Control Block)定義的命令來判斷是否加載Recovery內核,進而使用Recovery內核中ramdisk包含的updater工具進行Edify腳本升級操作。
Android平臺的完整OTA流程,由軟件升級包的生成、客戶端OTA升級、OTA服務器端部署三個部分組成。遺憾的是,AOSP中并沒有完整的OTA解決方案,因此無法獲取到升級包的服務器部署方法和客戶端的下載更新和通知更新模塊的開放源碼。本文將補充這個部分,給出一套結合DVB和IP信道的混合OTA解決方案。

圖2 Android升級流程示意圖
DVB+OTT機頂盒的系統整體架構基本分為DVB+受控OTT、DVB+開放OTT兩種結構,受控OTT的視頻內容是通過廣電網絡的內容監控線路后,再通過有線運營商的HFC寬帶IP網絡傳輸,開放OTT則是直接通過其他ISP提供的網絡連接使用一家互聯網電視牌照商的播控平臺接受視頻內容[3]。受控OTT和開放OTT都需要通過互聯網接入視頻內容,而DVB還是通過傳統的信道接入視頻內容??紤]到兩者相互獨立,本文提出對智能機頂盒的DVB和OTT兩部分部署兩套OTA系統。
DVB部分的OTA系統,主要針對獨立的DVB功能模塊升級,保證了在互聯網無法接入的情況下DVB系統升級的可靠性。另外,DVB模塊升級方案使用獨立升級包作為系統升級包,可以避免完整升級包體積太大、差分升級包必須使用雙向網絡的劣勢,兼顧了DVB系統的前向兼容,無需對升級系統進行改造即可使用。
在DVB系統前端上,NIT表的傳送系統描述符包含升級頻點的參數信息,OTA控制信息存放在下載服務器初始信息DSI和下載信息標識信息DII中,OTA升級包存放在下載數據塊信息DDB中。智能機頂盒終端需要通過監控并分析NIT、SSU BAT表獲取升級服務的頻點,并進一步匹配盒子的唯一標識符OUI獲取OTA基本流的PID,通過分析DSI、DII表獲取DDB中升級包數據。最后檢驗獲取升級包的完整性后,調用RecoverySystem的API接口進入升級。該升級的流程如圖3所示。

圖3 DVB功能的OTA順序圖
由于接入網絡是互聯網,OTT部分的OTA系統天生適合使用差分升級包進行OTA部署。差分包是通過舊版本軟件和目標升級軟件二進制比較獲得的,升級文件體積小,相應的代價是需要額外的開銷進行升級版本關系維護。因此差分升級系統必須要通過雙向通信,確保差分包之間的前后關系。
系統管理員在網絡服務器端配置對應的軟件版本信息和上傳相應的升級包,內部驗證測試升級成功后,將配置修改為正式升級配置發布升級。智能機頂盒終端定期連接網絡升級服務器,發送配置描述信息,查詢是否有升級包更新。如果獲取到服務器的升級描述文件,則對文件解析后,獲取相應的升級包。最后校驗升級包的完整性,調用Recovery System的API進行升級。該OTA流程順序圖如圖4所示。

圖4 OTT功能的OTA順序圖
本設計的OTA系統的集成測試集合分別從功能、性能、異常處理三個方面進行了驗證。DVB的OTA測試環境主要由前端碼流播放器、TS復用器、功分器、小批量樣機組成。DVB的OTA功能測試包括:升級流程測試、升級超時處理測試、升級版本和配置處理測試。DVB的OTA性能測試包括:接收時間測試、升級時間測試。DVB的OTA異常處理測試包括:掉線測試、接收數據時掉線測試、接收數據時掉電測試、升級時掉電測試。而OTT的OTA測試環境由升級服務器、路由器、小批量測試樣機以及仿真樣機客戶端組成。OTT的OTA功能測試的功能測試、性能測試與DVB相同,OTA異常處理測試還包含了錯誤版本測試、升級包篡改測試。OTT的OTA測試還包括對升級服務器的并發處理能力測試、大量客戶端請求壓力測試。
因為篇幅所限,功能測試和異常處理測試用例對應的測試結果不一一列出,主要給出OTT升級和DVB升級的性能測試的關鍵數據,如表1所示。差分升級包大小與兩次中間包的差異有關,考慮比較極端的情況,兩個中間包的網絡相關預置App都有改動,得到的升級包為47.3 Mbyte,與完整升級包相比動輒150 Mbyte以上的空間,差分升級包的優勢非常明顯,在分配帶寬為800 kbit/s的測試環境下,接收時間令人滿意。獨立升級包主要包含了DVB相關的App,最終得到的升級包大小為5.2 Mbyte,配合DVB運營商的前端帶寬進行下載升級也較合適,在15 kbit/s的較小帶寬下,接收時間和傳統DVB機頂盒接收時間相同。經測試,153 Mbyte的完整升級包平均升級時間是154.2 s,而極端情況的差分升級包的升級時間較之還要快20 s。因為升級過程中,獨立升級包執行的是校驗替換的操作,升級時間較OTT的差分升級包要快100 s。綜上所述,性能測試得到的接收時間和升級時間均達到系統設計要求。

表1 OTA性能測試數據
本文提出的OTA系統,通過了大量的測試用例驗證,達到設計預期效果。該系統設計兼容了傳統的DVB升級配置,整合OTT的差分升級模式,并對異常狀況處理可靠,屬于性能良好的DVB+OTT機頂盒OTA解決方案。
本文提出的智能機頂盒OTA系統已經在自主研發的機頂盒上實現,并在海外市場上使用反饋良好。目前,DVB+OTT機頂盒在技術層面上已經不存在任何障礙,隨著技術的融合與演進,可以預見未來家庭的數字機頂盒將向家庭網關的方向發展,成為智能化家居網絡的關鍵節點,為人們提供更加方便舒適的數字化生活體驗。
[1]呂梓凌.利用電子節目指南私有描述符實現機頂盒空中升級功能[J].中國有線電視,2009(8):806-809.
[2] Recovery System[EB/OL].[2013-09-03].http://developer.android.com/reference/android/os/RecoverySystem.html.
[3] 鄧水森,王立軍.OTT智能終端典型功能及運營模式探析[J].電視技術,2013,37(6):17-20.