海思機頂盒Hi3798使用Hitool和TTL備份并燒錄海納思Linux服務器系統固件
海思機頂盒Hi3798使用Hitool和TTL備份并燒錄海納思Linux服務器系統固件
摘要
- 介紹了使用海思 CPU 的機頂盒的固件備份和燒錄。通過 USB-TTL 串口燒錄器 CH340 連接機頂盒,使用華為海思刷機工具 HiTool 創建和修改分區表文件,備份和燒寫固件,通過升級包升級系統。在海納思系統中安裝homeassistant,通過 FTP、WebDAV、Alist云盤訪問文件,真實的 CPU 型號和 reg name 的確定,以及加快燒寫速度的方法。
背景說明
-
使用 Home assistant(后文縮寫為 HA)需要個人服務器,根據不同的情況有不同的家用 Linux 服務器方案。
服務器方案 優點 缺點 舊手機 體積小、功耗低、價格低 性能低、網絡受限 機頂盒 體積小、功耗低、價格低 性能低、網絡受限 樹莓派 體積小、功耗低 價格貴、性能中、網絡受限 迷你主機 體積小、價格中 功耗中、性能中、網絡受限 NAS 體積中、價格中 功耗高、性能高、網絡受限 電腦/服務器 性能高 價格貴、體積大、功耗高、網絡受限 云服務器 網絡不受限,性能高 價格貴 -
舊手機可用于簡單的功能驗證,安裝較為復雜,也容易出現問題。目前常用的方案有termux、termux+proot、Alpine Term+docker、linux deploy(需要 root 權限)。termux 和 termux+proot 方案主要是通過安裝 Python 來安裝 HA。經過嘗試,termux 安裝 HA 會出現依賴報錯;termux+proot+debian 啟動 HA 時會出現版本錯誤的提示;Alpine Term+docker 安裝 HA 后可以正常運行,但性能極低卡頓嚴重。
-
機頂盒可用于簡單的個人使用,安裝難度一般,不容易出現問題。目前常用的有Armbian、海納思系統這兩種方案,主要是通過安裝 docker 來安裝 HA。海納思系統 主要支持海思芯片中的 Hi3798MV100 、Hi3798MV200 、Hi3798MV300 ,不支持Hi3798MV300H 等帶后綴的處理器。Armbian 主要支持晶晨芯片中的 S9xx 系列。
-
原本是打算對型號為
CM211-2的機頂盒進行刷機,后來發現 CPU 型號為Hi3798MV300H。于是改為對型號為HG680-j且 CPU 為Hi3798MV100的機頂盒進行刷機。
操作實踐
前提要求
-
軟件:華為海思刷機工具HiTool,電視機頂盒工具開心電視助手(非必需)。
-
硬件:電腦,USB-TTL 串口燒錄器 CH340,U 盤。
獲取系統信息
-
使用網線將接機頂盒和電腦連接到網絡,使用導線連接機頂盒和 USB-TTL 串口燒錄工具。

-
打開HiTool后點擊HiBurn。

-
設置PC 與板端配置參數。設置 本地 PC 配置下的串口 和 服務器 IP,板端配置下的IP 地址 和網關。串口 為 USB-TTL 串口燒錄器所使用的端口號(查看方式:控制面板 -> 設備管理器 -> 端口(COM 和 LPT)),服務器 IP 為電腦的 IP 地址。 IP 地址 為機頂盒的 IP 地址,網關一般保持默認即可 。傳輸方式 選擇 網口(推薦)。

-
獲取中央處理器型號和管腳配置表。點擊 打開終端工具 ,然后點擊連接,最后給機頂盒上電。啟動信息中的
Reg Name包含管腳配置表、中央處理器型號、內存規格、PCB 板層數、閃存類型。

-
查看分區表。對于型號為
CM211-2且 CPU 為Hi3798MV300H的機頂盒,啟動信息中會顯示分區表信息。而對于型號為HG680-j且 CPU 為Hi3798MV100的機頂盒,啟動信息中不會顯示分區表,需要執行cat /proc/cmdline命令查看分區表信息。


-
查看掛載信息。執行
mount命令查看系統中所有的掛載文件系統。

-
查看閃存塊分區。對于型號為
CM211-2機頂盒,執行cd /dev/block/platform/soc/by-name和ls -al命令查看閃存塊分區所指向的分區名。而對于型號為HG680-j機頂盒,執行cd /dev/block/platform/hi_mci.1/by-name和ls -al命令查看閃存塊分區所指向的分區名。對于其它機頂盒,可在/dev/block/platform下的目錄的子目錄中尋找by-name文件夾。

-
查看文件系統信息。執行
df命令查看系統中分區的大小和使用量。

-
根據系統中分區的使用量,清理無用信息為數據備份做準備。軟件卸載可使用開心電視助手軟件,此軟件還可以便捷的獲取分區表、掛載信息、文件系統信息等。

創建和修改分區表
-
設置芯片型號。點擊芯片 -> 切換芯片 -> Hi3798MV100 。

-
點擊 燒寫 eMMC,點擊表格右側的綠色的加號以創建新的分區。
-
點擊名稱項,根據
分區表輸入分區名,并遵循閃存塊分區中的區塊順序(從mmcblk0p1到mmcblk0p17)。 -
點擊文件項里面的右側的文件夾圖標(選中時出現),在彈出的對話框中選擇文件路徑并在輸入文件名后點擊打開,建議文件名與分區名一致。
-
點擊長度項,根據
分區表設置對應分區的大小。 -
點擊文件系統項,根據
掛載信息選擇對應分區的文件系統。此項只影響燒錄的速度。 -
勾選要操作的分區前面的復選框。
-
點擊
eMMC分區表文件右側的瀏覽,在彈出的對話框中選擇文件路徑并在輸入文件名后點擊打開,然后點擊保存。建議文件名包含設備的 CPU 型號和閃存類型。

操作固件
備份固件
方法一:TTL+HiTool
-
在創建和修改分區表的最后一步點擊上載。
-
彈出對話框后關閉機頂盒電源。
-
開啟機頂盒電源。
-
等待對話框中的上載的進度條結束。

方法二:TTL+U 盤
-
點擊 打開終端工具 ,然后點擊連接,最后給機頂盒上電。
-
執行
df命令查看系統中分區的使用情況。 -
插入 U 盤(FAT32 格式)后執行
df命令查看系統中分區的使用情況,新出現的/mnt/sda/sda1表示 U 盤掛載成功。 -
執行
cd /dev/block/platform/soc/by-name和ls -al命令查看閃存塊分區所指向的分區名。root@Hi3798MV300:/ # cd /dev/block/platform/soc/by-name root@Hi3798MV300:/dev/block/platform/soc/by-name # ls -al lrwxrwxrwx root root 1970-01-01 08:00 baseparam -> /dev/block/mmcblk0p5 lrwxrwxrwx root root 1970-01-01 08:00 boot -> /dev/block/mmcblk0p9 lrwxrwxrwx root root 1970-01-01 08:00 cache -> /dev/block/mmcblk0p14 lrwxrwxrwx root root 1970-01-01 08:00 fastboot -> /dev/block/mmcblk0p1 lrwxrwxrwx root root 1970-01-01 08:00 fastplay -> /dev/block/mmcblk0p8 lrwxrwxrwx root root 1970-01-01 08:00 logo -> /dev/block/mmcblk0p7 lrwxrwxrwx root root 1970-01-01 08:00 misc -> /dev/block/mmcblk0p10 lrwxrwxrwx root root 1970-01-01 08:00 partition -> /dev/block/mmcblk0p2 lrwxrwxrwx root root 1970-01-01 08:00 pqparam -> /dev/block/mmcblk0p6 lrwxrwxrwx root root 1970-01-01 08:00 recovery -> /dev/block/mmcblk0p3 lrwxrwxrwx root root 1970-01-01 08:00 securestore -> /dev/block/mmcblk0p12 lrwxrwxrwx root root 1970-01-01 08:00 swdb -> /dev/block/mmcblk0p13 lrwxrwxrwx root root 1970-01-01 08:00 swdevinfo -> /dev/block/mmcblk0p4 lrwxrwxrwx root root 1970-01-01 08:00 system -> /dev/block/mmcblk0p15 lrwxrwxrwx root root 1970-01-01 08:00 trustedcore -> /dev/block/mmcblk0p11 lrwxrwxrwx root root 1970-01-01 08:00 userdata -> /dev/block/mmcblk0p16 -
執行
cd /mnt/sda/sda1命令以切換當前工作目錄為/mnt/sda/sda1,執行mkdir FW_BK命令以在當前工作目錄創建名為FW_BK的文件夾。 -
使用下面的
dd命令備份分區。對于比較大的分區,應執行dd if=/dev/block/platform/soc/by-name/userdata | gzip > /mnt/sda/sda1/FW_BK/userdata.bin.gz命令以先壓縮后輸出。dd if=/dev/block/platform/soc/by-name/fastboot of=/mnt/sda/sda1/FW_BK/fastboot.bin dd if=/dev/block/platform/soc/by-name/partition of=/mnt/sda/sda1/FW_BK/partition.bin dd if=/dev/block/platform/soc/by-name/recovery of=/mnt/sda/sda1/FW_BK/recovery.bin dd if=/dev/block/platform/soc/by-name/swdevinfo of=/mnt/sda/sda1/FW_BK/swdevinfo.bin dd if=/dev/block/platform/soc/by-name/baseparam of=/mnt/sda/sda1/FW_BK/baseparam.bin dd if=/dev/block/platform/soc/by-name/pqparam of=/mnt/sda/sda1/FW_BK/pqparam.bin dd if=/dev/block/platform/soc/by-name/logo of=/mnt/sda/sda1/FW_BK/logo.bin dd if=/dev/block/platform/soc/by-name/fastplay of=/mnt/sda/sda1/FW_BK/fastplay.bin dd if=/dev/block/platform/soc/by-name/boot of=/mnt/sda/sda1/FW_BK/boot.bin dd if=/dev/block/platform/soc/by-name/misc of=/mnt/sda/sda1/FW_BK/misc.bin dd if=/dev/block/platform/soc/by-name/trustedcore of=/mnt/sda/sda1/FW_BK/trustedcore.bin dd if=/dev/block/platform/soc/by-name/securestore of=/mnt/sda/sda1/FW_BK/securestore.bin dd if=/dev/block/platform/soc/by-name/swdb of=/mnt/sda/sda1/FW_BK/swdb.bin dd if=/dev/block/platform/soc/by-name/cache of=/mnt/sda/sda1/FW_BK/cache.bin dd if=/dev/block/platform/soc/by-name/system of=/mnt/sda/sda1/FW_BK/system.bin dd if=/dev/block/platform/soc/by-name/userdata of=/mnt/sda/sda1/FW_BK/userdata.bin
燒錄固件
方法一:TTL+HiTool
-
解壓海納思系統固件包
TTL-hi3798mv100-202301.zip。 -
點擊
eMMC分區表文件右側的瀏覽,在彈出的對話框中選擇海納思系統固件包中的 eMMC 分區表文件后點擊打開。 -
勾選需要燒錄的分區前面的復選框。
-
點擊燒寫。
-
彈出對話框后關閉機頂盒電源。
-
開啟機頂盒電源。
-
等待對話框中的燒寫的進度條結束。

方法二:TTL+U 盤
-
點擊 打開終端工具 ,然后點擊連接,最后給機頂盒上電。
-
執行
df命令查看系統中分區的使用情況。 -
插入 U 盤(FAT32 格式)后執行
df命令查看系統中分區的使用情況,新出現的/mnt/sda/sda1表示 U 盤掛載成功。 -
執行
cd /dev/block/platform/soc/by-name和ls -al命令查看閃存塊分區所指向的分區名。root@Hi3798MV300:/ # cd /dev/block/platform/soc/by-name root@Hi3798MV300:/dev/block/platform/soc/by-name # ls -al lrwxrwxrwx root root 1970-01-01 08:00 baseparam -> /dev/block/mmcblk0p5 lrwxrwxrwx root root 1970-01-01 08:00 boot -> /dev/block/mmcblk0p9 lrwxrwxrwx root root 1970-01-01 08:00 cache -> /dev/block/mmcblk0p14 lrwxrwxrwx root root 1970-01-01 08:00 fastboot -> /dev/block/mmcblk0p1 lrwxrwxrwx root root 1970-01-01 08:00 fastplay -> /dev/block/mmcblk0p8 lrwxrwxrwx root root 1970-01-01 08:00 logo -> /dev/block/mmcblk0p7 lrwxrwxrwx root root 1970-01-01 08:00 misc -> /dev/block/mmcblk0p10 lrwxrwxrwx root root 1970-01-01 08:00 partition -> /dev/block/mmcblk0p2 lrwxrwxrwx root root 1970-01-01 08:00 pqparam -> /dev/block/mmcblk0p6 lrwxrwxrwx root root 1970-01-01 08:00 recovery -> /dev/block/mmcblk0p3 lrwxrwxrwx root root 1970-01-01 08:00 securestore -> /dev/block/mmcblk0p12 lrwxrwxrwx root root 1970-01-01 08:00 swdb -> /dev/block/mmcblk0p13 lrwxrwxrwx root root 1970-01-01 08:00 swdevinfo -> /dev/block/mmcblk0p4 lrwxrwxrwx root root 1970-01-01 08:00 system -> /dev/block/mmcblk0p15 lrwxrwxrwx root root 1970-01-01 08:00 trustedcore -> /dev/block/mmcblk0p11 lrwxrwxrwx root root 1970-01-01 08:00 userdata -> /dev/block/mmcblk0p16 -
使用下面的
dd命令燒錄分區。備份的固件所在的位置為FW_BK文件夾。對于比較大的分區,應執行gzip -dc /mnt/sda/sda1/FW_BK/userdata.bin.gz | dd of=/dev/block/platform/soc/by-name/userdata命令以先解壓后輸出。dd if=/mnt/sda/sda1/FW_BK/fastboot.bin of=/dev/block/platform/soc/by-name/fastboot dd if=/mnt/sda/sda1/FW_BK/partition.bin of=/dev/block/platform/soc/by-name/partition dd if=/mnt/sda/sda1/FW_BK/recovery.bin of=/dev/block/platform/soc/by-name/recovery dd if=/mnt/sda/sda1/FW_BK/swdevinfo.bin of=/dev/block/platform/soc/by-name/swdevinfo dd if=/mnt/sda/sda1/FW_BK/baseparam.bin of=/dev/block/platform/soc/by-name/baseparam dd if=/mnt/sda/sda1/FW_BK/pqparam.bin of=/dev/block/platform/soc/by-name/pqparam dd if=/mnt/sda/sda1/FW_BK/logo.bin of=/dev/block/platform/soc/by-name/logo dd if=/mnt/sda/sda1/FW_BK/fastplay.bin of=/dev/block/platform/soc/by-name/fastplay dd if=/mnt/sda/sda1/FW_BK/boot.bin of=/dev/block/platform/soc/by-name/boot dd if=/mnt/sda/sda1/FW_BK/misc.bin of=/dev/block/platform/soc/by-name/misc dd if=/mnt/sda/sda1/FW_BK/trustedcore.bin of=/dev/block/platform/soc/by-name/trustedcore dd if=/mnt/sda/sda1/FW_BK/securestore.bin of=/dev/block/platform/soc/by-name/securestore dd if=/mnt/sda/sda1/FW_BK/swdb.bin of=/dev/block/platform/soc/by-name/swdb dd if=/mnt/sda/sda1/FW_BK/cache.bin of=/dev/block/platform/soc/by-name/cache dd if=/mnt/sda/sda1/FW_BK/system.bin of=/dev/block/platform/soc/by-name/system dd if=/mnt/sda/sda1/FW_BK/userdata.bin of=/dev/block/platform/soc/by-name/userdata
升級固件
-
方法一:使用 TTL+HiTool+U 盤。燒寫
recovery到recovery,燒寫emmc到misc,然后重啟機頂盒以進入恢復模式,最后在恢復模式中選擇apply update from external storage后選擇 U 盤中的update.zip刷機包進行刷機。 -
方法二:使用 TTL+U 盤或者ADB+U 盤。使用
dd命令輸出recovery到recovery,emmc到misc,然后執行reboot命令以重啟進入恢復模式,最后在恢復模式中選擇apply update from external storage后選擇 U 盤中的update.zip刷機包進行刷機。 -
方法三:使用ADB或TTL或TTL+HiTool燒寫
recovery后安裝原生版本的設置軟件包,進入原生版本的設置后選擇本地升級以升級系統。升級包必須被命名為update.zip并位于 U 盤的根目錄。軟件包一般被命名為SWProductCheck.apk,可在卡刷救磚相關教程中搜尋。 -
方法四:把
fastboot.bin、bootargs.bin、recovery.img三個文件復制到U盤根目錄。短接強制刷機的短接點,然后打開機頂盒的電源,等待幾秒后松開短接。機頂盒就會加載U 盤中的fastboot.bin并引導 U 盤中的recovery.img進入恢復模式,最后在恢復模式中選擇apply update from external storage后選擇 U 盤中的update.zip刷機包進行刷機。 -
方法五:把
fastboot.bin、bootargs.bin、recovery.img三個文件復制到U盤根目錄。使用ADB或TTL或TTL+HiTool擦除fastboot.bin分區。重啟后機頂盒就會加載U 盤中的fastboot.bin并引導 U 盤中的recovery.img進入恢復模式,最后在恢復模式中選擇apply update from external storage后選擇 U 盤中的update.zip刷機包進行刷機。
使用簡述
-
在瀏覽器輸入機頂盒的IP地址以進入海納思系統首頁。
-
在首頁點擊外網,然后點擊終端管理,初始用戶名和密碼分別為
root和ecoo1234,可通過passwd root命令修改當前系統 root 賬號的密碼。 -
在終端管理頁面輸入
apt install minidlna安裝 MiniDLNA 軟件。系統內置有基本功能的軟件安裝腳本, 輸入以下命令即可自動安裝并自動配置軟件。Portainer 是可視化的容器鏡像圖形管理工具,青龍面板是支持 Python3、JavaScript、Shell、Typescript 腳本的定時任務管理平臺,Home Assistant 是基于 Python 3 開發的集成現有智能家居生態的開源家庭自動化平臺。install-portainer.sh 安裝 Docker 容器管理面板 install-qinglong.sh 安裝 Docker 應用: 青龍面板 install-homeassistant.sh 安裝智能家居控制面板 -
支持通過 FTP 或 SCP 等方式對服務器文檔進行管理,初始用戶名和密碼分別為
ubuntu和ecoo1234。SFTP 模式的 22 端口可訪問根目錄, FTP 模式的 21 端口則只能訪問/home目錄。 -
內置的 WebDAV 服務器在 8081 端口,初始用戶名和密碼分別為
admin和admin,默認存儲位置在/home/ubuntu/webdav。 -
內置的Alist云盤支持多種存儲,支持網頁瀏覽和 WebDAV 訪問。初始用戶名和密碼分別為
admin和admin123。 -
執行
recoverbackup命令可以還原備份系統, 根分區內的數據將全部被原備份系統清除并覆蓋。
注意事項
-
關于芯片型號:魔百盒 CM211-2 的 CPU 型號有 MV100、MV300、MV300H。實際的 CPU 型號以
reg name中包含 CPU 型號或芯片本身的絲印為準。 -
關于
reg name:芯片待燒錄固件的fastboot中的reg name與機頂盒現有的fastboot中的reg name在管腳配置表和中央處理器型號上應保持一致,否則無法燒錄fastboot。啟動信息中顯示的reg name僅供參考,實際的管腳配置表以機頂盒現有的fastboot中的reg name包含的管腳配置表為準。

-
關于HiBurn中的傳輸方式:無論傳輸方式選擇串口還是網口,燒寫
fastboot時,實際上都是通過串口來傳輸數據,因此非常慢。 -
關于HiBurn中的文件系統:如果實際上存在文件系統但軟件中的文件系統被設置為
none時,在進行燒寫操作時,分區鏡像將會以二進制的形式進行傳輸;如果設置為一個確定的文件系統,如ext3/4時,在進行燒寫操作時,分區鏡像將會以壓縮包的形式進行傳輸,即對鏡像先壓縮后傳輸,最后解壓并寫入分區。因此,在進行燒寫操作時,設置文件系統可以減少分區鏡像傳輸所需要的時間,最終加快總體的燒寫速度。對于上載操作,無論是否設置軟件中的文件系統,上載的分區鏡像總是以二進制的形式進行傳輸,不會改變上載速度。 -
關于壓縮:
userdata分區的鏡像大小會超過 4GB,超過 FAT32 文件系統限制,所以需要壓縮。在使用dd命令時,結合分區的大小和使用量來決定是否進行壓縮可以有效的節省空間占用和傳輸時間。 -
關于終端內容被覆蓋丟失:點擊窗口 -> 首選項 ,點擊終端后修改終端緩存行數。
-
關于使用 HiTool 燒錄和備份固件失敗:點擊窗口 -> 首選項,然后點擊HiBurn,修改TFTP設置和命令設置。根據控制臺的報錯信息來修改對應的參數。有時重新操作一次也會恢復正常。

參考資料
- 海思機頂盒 NAS 海納思系統使用指南
- 打造最強華為海思hi3798mv100/200/300機頂盒NAS服務器系統_華為盒子論壇_ZNDS
- 海思Hi3798MV300/Hi3798MV310/Hi3798MV300H共升級包使用指南芯片手冊-手機|智能終端-海思平臺-一牛網論壇
- 電視盒子芯片性能那家強?電視盒子變身 linux 系統裝 docker 寶塔青龍打開盒子的另一片天地
- 【狗蛋】搭建一個屬于家庭服務器,硬件、軟件、配置推薦【萬字長文持續更新】 - 知乎
- 魔百盒CM211-2網絡機頂盒固件下載匯總及主板區分-評測/圖文分享-安卓刷機固件網【麒麟刷機網】
- 河南移動cmcc-2 ch電視盒子Hi3798MV310線刷-卡刷-刷機-救磚 - 知乎
- 選擇哪種方式刷入海思設備
- 海思hi3798mv300/300H通用解鎖版recovery_中國移動魔百盒_ZNDS
- 魔百和CM211-2刷機(MV300芯片)朝歌代工拆機TTL破解固件 - 機頂盒/智能電視 數碼之家
- 北京CM211-2 原廠救磚包 刷當貝 無需拆機教程_中國移動魔百盒_ZNDS
版權聲明:本文為「夢幻之心星」原創,依據 CC BY-NC-SA 4.0 許可證進行授權,轉載請附上原文出處鏈接及本聲明。
博客園地址:http://www.rzrgm.cn/Sky-seeker
微信公眾號:關注微信公眾號,獲取即時推送
![]()

浙公網安備 33010602011771號