ZTE B860H: Armbianを導入する
ZTE B860H: Getting Armbian into It (pen.waltuh.cyou)
要約
この記事は、ZTE B860H(V1/V2)セットトップボックスにArmbianをインストールするためのガイドです。root化やストックROMからの変更が不要な方法で、microSDカードと特殊なHDMIブートドングルを使用します。Linuxデスクトップ環境での作業が推奨されますが、Windowsでの代替手段も示唆されています。
全文翻訳
ZTE B860H: Armbianを導入する
この記事では、B860H V1 / V2向けのArmbianインストールガイドを解説します。
注意: このモデルはV5と混同してはいけません。両リビジョンは内部ハードウェアが全く異なります。
[画像: B860H V1 STB Top] [画像: B860H V1 STB Bottom]
ここで使用する方法では、セットトップボックスが既にroot化されている必要はありません。あるいは、ストックROMの外にある状態でも可能です。STBがストック状態にあると仮定します。
最良の方法は、すべてのフラッシュをLinuxデスクトップで行うことです。Windows用の同等の方法も存在しますが、それは後で説明します。
このガイドは FiberHome HG680P ボックスでも動作します(ただし、トリビアを確認してください)。
要件
- microSDカードスロットを備えたパーソナルコンピュータ(ない場合は、microSD<–>USBアダプターを使用します。これらは機能します)
- microSDカード(メインとして使用する場合は、class 10のmicroSDカードを使用してください)
- 特別に作られたHDMIブートドングル。自作するか、オンラインストア(ID: Shopee Indonesia | グローバル: Tindie)で既製品を購入できます。
- 対象のボックス本体(B860H)。起動状態に関わらず電源が入る必要があります(LEDがオレンジ色、または緑色、あるいは何色でも構いません。root化されているか、ストック状態か否かは関係ありません)。
- 添付されたコマンドを盲目的にコピー&ペーストしないこと
インストール
B860Hが動作するにはHG680PのU-Bootブートローダーを使用する必要があります。これはこちらから取得できます(u-boot.binとして保存してください)。
以下の手順は順番に行う必要があります。
1. Armbianのフラッシュ
Armbianイメージはophub/amlogic-s9xxx-armbianから取得できます。それぞれ異なるディストリビューションが含まれています。例えば、この記事執筆時点では: – resoluteはArmbian OSのUbuntuエディションです – trixieはArmbian OSのDebianエディションです。
s905xとb860hという2つのキーワードを含むリリースを探してください。例:
Armbian_26.11.0_amlogic_s905x-b860h_trixie_6.18.51_server_2026.09.14.img.gz
ダウンロードしたら、解凍します:
gzip -k -d -v Armbian_26.11.0_amlogic_s905x-b860h_trixie_6.18.51_server_2026.09.14.img.gz
注意: ダウンロードしたリリースに合わせてファイル名を調整してください。
フラッシュするmicroSDカードを挿入し、それがどこにあるか確認します:
yonle@yonle:/mnt$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
mmcblk0 179:0 0 58.6G 0 disk
├─mmcblk0p1 179:1 0 511M 0 part
└─mmcblk0p2 179:2 0 58.1G 0 part
この場合、/dev/mmcblk0です。
特別: SDカードUSBアダプターを使用している場合、これらは通常
sd[a...c]プレフィックス(例:sdb)で名前が付けられます。既存のメインSATAドライブと混同してはいけません。
そして、Armbianイメージをカードにフラッシュします:
sudo dd if=Armbian_26.11.0_amlogic_s905x-b860h_trixie_6.18.51_server_2026.09.14.img of=/dev/mmcblk0 bs=4M status=progress
sync
(はい、syncはコマンドです)
lsblkコマンドで確認できるmicroSDスロットのパスに合わせて/dev/mmcblk0を調整してください。
注意: これを行うと、microSDカード上のすべてのデータが消去されます。続行する前に、重要なデータがあればバックアップしてください。
フラッシュ後、BOOTパーティションを変更する必要はありません。これらはブートステージ中に自動的に行われます。
2. U-Bootのフラッシュ
Windowsでは、この手順は基本的にAmlogic Bootcard Makerというプログラムを使用して行われます。
同様に、Linuxでも同じことができます。
先ほどu-boot.binをダウンロードしたディレクトリに移動します。例:
cd ~/Downloads
そしてフラッシュします:
sudo dd if=u-boot.bin of=/dev/mmcblk0 conv=fsync,notrunc bs=1 count=442
sudo dd if=u-boot.bin of=/dev/mmcblk0 conv=fsync,notrunc bs=512 skip=1 seek=1
sync
そして最後に、microSDカードを取り出します。
フラッシュのTL;DR
簡単に言うと、上記のタスクは次のとおりです:
sudo dd if=Armbian_26.11.0_amlogic_s905x-b860h_trixie_6.18.51_server_2026.09.14.img of=/dev/mmcblk0 bs=4M status=progress
sudo dd if=u-boot.bin of=/dev/mmcblk0 conv=fsync,notrunc bs=1 count=442
sudo dd if=u-boot.bin of=/dev/mmcblk0 conv=fsync,notrunc bs=512 skip=1 seek=1
sync
ボックスへ…
[画像: Linuxが起動した状態のボックス]
ボックスがハッキングされたかどうかは、通常LEDインジケーターで判断できます: – 緑色の場合、Androidが実行されている可能性が高いです。 – オレンジ色の場合、通常のAndroidブートローダーを使用していないか、緊急ダウンロードモードになっています。
工場出荷時のAndroid ROMが入っているボックスでは、通常、microSDカードをボックスに挿入するだけで、microSDカード上のものがすぐに起動するとは期待できません。ストックブートローダーはすぐにAndroid OSにブートし、その後BOOTパーティションを間接的に変更します。これはおそらくあなたが望むものではないでしょう。
[画像: 特殊なHDMIドングル]
このボックスのブートローダーに、microSDカード上のものを起動させるために、特別にHDMIドングルが作られています。これは、緊急/ダウンロードモード用です。
このHDMIドングルがまさに求めているものであるかを確認するために、i2cdetect(i2c-toolsからインストール可能)を使用してHDMIバスを確認できます。
まず、私のラップトップのHDMIポートのバスがどれかを知りたいです:
yonle@yonle:~$ sudo i2cdetect -l
i2c-0 i2c Synopsys DesignWare I2C adapter I2C adapter
i2c-1 i2c Synopsys DesignWare I2C adapter I2C adapter
i2c-2 i2c i915 gmbus dpa I2C adapter
i2c-3 i2c i915 gmbus dpb I2C adapter
i2c-4 i2c i915 gmbus dpc I2C adapter
上記の例では、私のバスはi2c-2、つまりi915 gmbus dpaです(末尾のdpXプレフィックスに注意してください)。i2c-2の末尾の2に+1を加えると、3になります。
これで、HDMIドングルをラップトップのHDMIポートに接続します:
yonle@yonle:~$ sudo i2cdetect -y -r 3
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- 52 -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
このドングルが求めているものであれば、0x50で、上記のように3列目に52が表示されるはずです。
次に、その内容を確認します:
yonle@yonle:~$ sudo i2cdump -y -r 0xf8-0xff 3 0x52
No size specified (using byte-data access)
0 1 2 3 4 5 6 7 8 9 a b c d e f 0123456789abcdef
f0: 62 6f 6f 74 40 53 44 43 boot@SDC
文字列値はboot@SDCである必要があります。
このドングルが求めているものであることが確認できたので、インストールプロセスを開始しましょう:
ボックスの電源をすべて抜きます。
– 前述のmicroSDカードをmicroSDカードスロットに挿入します。
– HDMIドングルをボックスに接続します。
次に電源を接続し、電源LEDインジケーターに注意してください。この段階で緑色のインジケーターがオレンジ色に変わるはずです。
インジケーターがオレンジ色のまま、15秒間続く必要があることに注意してください(この段階で緑色に変わってはいけません。もし変わった場合は、フラッシュが間違っています!)。
15秒経過してもLEDがオレンジ色のままなら、HDMIドングルを抜き、テレビ/モニター/キャプチャカードからボックスにHDMIケーブルを接続できます。TTYに似た画面が表示されるはずです:
[画像: 画面]
Armbianがセットアップを求めてくる段階になったら、次の2つの方法があります: 1. キーボード方式: キーボードをSTBに接続し、ここからセットアップを行います。 2. ネットワーク方式: ssh経由でこのボックスをセットアップしたい場合: ルーターからボックスにLANケーブルを接続し、ルーターページでIPアドレスを確認し、それにsshで接続します:
ssh root@10.42.x.x
デフォルトパスワードは1234です。セットアップと新しいパスワードの設定を求められます。
[画像: デフォルトのARMBian体験]
完了したら、それでおしまいです。ボックスでArmbianをmicroSDカードにインストールしました。ただし、U-Bootを強制的に使用するには、まだHDMIドングルが必要です。
U-Bootを永続化する
以前と同様に、u-boot.binをネットワーク経由でボックスに送信します:
scp u-boot.bin root@10.42.xx.xx:u-boot.bin
シェルに入り、eMMCがどのMMCであるかを確認します:
root@armbian:~# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
mmcblk1 179:0 0 58.6G 0 disk
├─mmcblk1p1 179:1 0 511M 0 part /boot
└─mmcblk1p2 179:2 0 58.1G 0 part /
mmcblk2 179:32 0 7.3G 0 disk
├─mmcblk2p1 179:33 0 511M 0 part
└─mmcblk2p2 179:34 0 6.1G 0 part
mmcblk2boot0 179:64 0 4M 1 disk
mmcblk2boot1 179:96 0 4M 1 disk
この場合、SDカードから起動しているので、mmcblk2がターゲットです。したがって:
sudo dd if=u-boot.bin of=/dev/mmcblk2 conv=fsync,notrunc bs=1 count=442
sudo dd if=u-boot.bin of=/dev/mmcblk2 conv=fsync,notrunc bs=512 skip=1 seek=1
注意: これにより、eMMC上のAndroidブートローダーが完全に消去されます。ArmbianをeMMCにインストールする予定がある場合は、
armbian-installを実行し、上記のステップでU-BootをeMMCに再フラッシュしてください。
eMMCへのインストール
注意: 以下を実行すると、eMMCの内容が消去されます。これにはAndroidベース自体も含まれます。
シェルに入っていると仮定して、rootとしてarmbian-installを実行します:
root@armbian:~# armbian-install
[ STEPS ] Installing Armbian to internal eMMC...
[ STEPS ] Checking dependencies...
[ INFO ] Dependency check completed. Proceeding installation...
[ STEPS ] Initializing the environment...
[ INFO ] Use mainline u-boot: [ no ]
[ INFO ] Use ampart tool: [ no ]
[ INFO ] Show all devices: [ no ]
[ INFO ] Detected eMMC device: [ /dev/mmcblk2 ]
[ STEPS ] Start selecting device...
-----------------------------------------------------------------------------------------------------
ID SOC MODEL DTB
-----------------------------------------------------------------------------------------------------
101 s905d Phicomm-N1 meson-gxl-s905d-phicomm-n1.dtb
102 s905d Phicomm-N1(DMA-thresh) meson-gxl-s905d-phicomm-n1-thresh.dtb
103 s905d MECOOL-KI-Pro meson-gxl-s905d-mecool-ki-pro.dtb
104 s905d SML-5442TW meson-gxl-s905d-sml5442tw.dtb
105 s905x HG680P meson-gxl-s905x-p212.dtb
106 s905x B860H meson-gxl-s905x-b860h.dtb
107 s905x Nexbox-a95x meson-gxl-s905x-nexbox-a95x.dtb
108 s905x TX9 meson-gxl-s905x-tx9.dtb
109 s905x T95,XiaoMI-3S,X96,BTV9 meson-gxl-s905x-p212.dtb
110 s905x TBee meson-gxl-s905x-tbee.dtb
-----------------------------------------------------------------------------------------------------
111 s905w TX3-Mini,MeCool-m8s-pro-W meson-gxl-s905w-tx3-mini.dtb
112 s905w W95 meson-gxl-s905w-p281.dtb
113 s905w X96-Mini meson-gxl-s905w-x96-mini.dtb
114 s905w X96W,FunTV,MXQ-Pro-4K meson-gxl-s905w-x96w.dtb
115 s905l UNT402A,M201-S,MiBox-4C,IP108H,B860AV2.1 meson-gxl-s905l3b-m302a.dtb
116 s905l MG101,Mibox-4,E900V21C,XiaoMI-4C meson-gxl-s905x-p212.dtb
117 s905l Tencent-Aurora-1s meson-gxl-s905x-p212.dtb
118 s905l ZXV10-B860AV2.1U,HM201 meson-gxl-s905x-tx9.dtb
119 s905l2 MGV2000,MGV3000,M301A,CM201-1,IP108H meson-gxl-s905l2-x7-5g.dtb
120 s905l2 E900v21E,MGV2000-K,e900v21d meson-gxl-s905l2-x7-5g.dtb
-----------------------------------------------------------------------------------------------------
121 s905l2 Wojia-TV-IPBS9505 meson-gxl-s905l2-ipbs9505.dtb
122 s905l3 CM311-1,HG680-LC,M401A,UNT402A,CM201-1-6-YS meson-gxl-s905l2-x7-5g.dtb
123 s905l3 CM211-1,M411A,B860AV3.2M,B860AV2.1U,M301A meson-gxl-s905l3b-m302a.dtb
124 s905l3 UNT400G1,E900V22D-2,UNT400G,IP108H meson-gxl-s905l2-x7-5g.dtb
125 s905l3 UNT402A,UNT400G meson-gxl-s905l3b-m302a.dtb
126 s905l3b E900V21E,E900V22E,MGV2000/CW,M411A meson-gxl-s905l3b-e900v22e.dtb
127 s905l3b M302A,M304A,CM201-1,CM211-1,CM311-1 meson-gxl-s905l3b-m302a.dtb
128 s905l3b UNT403A meson-gxl-s905l3b-m302a.dtb
129 s905l3b RG020ET-CA meson-gxl-s905l3b-e900v22e.dtb
130 s905l3b IP103H,TY1608,BV310,B860AV-2.1M meson-gxl-s905l3b-m302a.dtb
-----------------------------------------------------------------------------------------------------
131 s905l3b E900V22D,TY1608 meson-gxl-s905l2-x7-5g.dtb
132 s905l3b E900V21D,B860AV2.1-A meson-gxl-s905l2-x7-5g.dtb
133 s905mb S65 meson-gxl-s905x-p212.dtb
134 s905lb BesTV-R3300L,SumaVision-Q7,MG101 meson-gxl-s905x-p212.dtb
135 s905lb Q96-mini meson-gxl-s905x-p212.dtb
136 s905lb IPBS9505 meson-gxl-s905l2-x7-5g.dtb
0 Other Customize Enter-custom-dtb-name
-----------------------------------------------------------------------------------------------------
[ OPTIONS ] Please Input ID: 106
106、つまりB860Hを選択します。
Enterを押すと、ファイルシステムタイプの選択を求められます:
[ INFO ] Input Box ID: [ 106 ]
[ INFO ] Model Name: [ B860H ]
[ INFO ] FDTFILE: [ meson-gxl-s905x-b860h.dtb ]
[ INFO ] MAINLINE_UBOOT: [ ]
[ INFO ] BOOTLOADER_IMG: [ ]
[ INFO ] UBOOT_OVERLOAD: [ u-boot-p212.bin ]
[ INFO ] NEED_OVERLOAD: [ no ]
[ STEPS ] Selecting root filesystem type...
-----------------------------------------------
ID TYPE
-----------------------------------------------
1 ext4
2 btrfs
-----------------------------------------------
[ OPTIONS ] Please Input ID (1/2):
ワークロードに応じて、eMMCにはext4またはbtrfsのいずれかを使用できます。しかし、不確かな場合はext4をお勧めします。
長年にわたり多くの改善を受けてきたため、数年前のext4とは異なります。eMMCにとって、依然として非常に堅実な選択肢です。
そこから、システムをSDカードからeMMCにインストールします。これには数分かかります。
完了したら、microSDカードにフラッシュしたときと同様に、eMMCにU-Bootを再フラッシュします:
sudo dd if=u-boot.bin of=/dev/mmcblk2 conv=fsync,notrunc bs=1 count=442
sudo dd if=u-boot.bin of=/dev/mmcblk2 conv=fsync,notrunc bs=512 skip=1 seek=1
sync
したがって:
[ INFO ] Copying ROOTFS partition data...
[ INFO ] Copying [ etc ] ...
[ INFO ] Copying [ home ] ...
[ INFO ] Copying [ opt ] ...
[ INFO ] Copying [ root ] ...
[ INFO ] Copying [ selinux ] ...
[ INFO ] Copying [ srv ] ...
[ INFO ] Copying [ usr ] ...
[ INFO ] Copying [ var ] ...
[ INFO ] Generate the new fstab file.
[ INFO ] Update parameters related to the releases file.
[ SUCCESS ] Installation completed successfully. Run [ poweroff ], remove the installation media, then re-insert the power supply to boot the new system.
root@armbian:~# sudo dd if=u-boot.bin of=/dev/mmcblk2 conv=fsync,notrunc bs=1 count=442
442+0 records in
442+0 records out
442 bytes copied, 0.00554292 s, 79.7 kB/s
root@armbian:~# sudo dd if=u-boot.bin of=/dev/mmcblk2 conv=fsync,notrunc bs=512 skip=1 seek=1
4095+0 records in
4095+0 records out
2096640 bytes (2.1 MB, 2.0 MiB) copied, 0.1678 s, 12.5 MB/s
root@armbian:~#
これらすべてが完了したら、poweroffを実行します。電源がオフになったら(LEDライトが緑色に変わりますが、心配しないでください)、電源から抜いて、microSDカードも抜くことができます。
そして、電源を再度接続して、その栄光の起動をさせましょう。見てください。microSDカードなしで動作します!:
[画像: Linuxの起動シーケンス]
これにより、RAMの容量を節約できます。
sudo apt update && sudo apt install systemd-zram-generator
sudo nano /etc/systemd/zram-generator.conf
以下を入力します:
[zram0]
zram-size = ram
compression-algorithm = lzo-rle zstd(level=3) (type=idle)
保存(CTRL+S)、終了(CTRL+X)、そしてロードします:
sudo systemctl daemon-reload
sudo systemctl start systemd-zram-setup@zram0.service
yonle@armbian:~$ cat /proc/interrupts
CPU0 CPU1 CPU2 CPU3
9: 0 0 0 0 GICv2 25 Level vgic
11: 26055984 26123490 25924591 25663238 GICv2 30 Level arch_timer
12: 0 0 0 0 GICv2 27 Level kvm guest vtimer
14: 0 0 0 0 GICv2 58 Edge ttyAML6
15: 109 0 0 0 GICv2 231 Edge ttyAML0
16: 0 0 0 0 GICv2 249 Level d0072000.mmc
17: 0 0 0 0 GICv2 220 Edge gxl-crypto
18: 0 0 0 0 GICv2 221 Edge gxl-crypto
19: 89 0 0 0 GICv2 248 Level d0070000.mmc
20: 124767 0 0 0 GICv2 250 Level d0074000.mmc
21: 86139 0 0 0 GICv2 241 Edge platform_mhu_link
22: 903241 0 0 0 GICv2 242 Edge platform_mhu_link
23: 2 0 0 0 GICv2 105 Edge c1108680.adc
24: 0 0 0 0 GICv2 169 Level arm-pmu
25: 0 0 0 0 GICv2 170 Level arm-pmu
26: 0 0 0 0 GICv2 185 Level arm-pmu
27: 0 0 0 0 GICv2 186 Level arm-pmu
28: 1301 0 0 0 GICv2 35 Edge meson
29: 2056 0 0 0 GICv2 89 Edge dw_hdmi_top_irq, c883a000.hdmi-tx
30: 21 0 0 3029612 GICv2 40 Level eth0
31: 0 0 0 0 GICv2 63 Level c9100000.usb, c9100000.usb
32: 2503 0 11186225 0 GICv2 62 Level xhci-hcd:usb1
33: 26 0 0 0 GICv2 41 Level mdio_mux-0.1:08
34: 16 0 0 0 GICv2 228 Edge meson_ir
35: 0 0 0 0 GICv2 76 Edge vdec-mbox1
36: 0 0 0 0 GICv2 64 Edge esparserirq
37: 0 0 0 0 GICv2 193 Level gpmmu
38: 0 0 0 0 GICv2 197 Level ppmmu0
39: 0 0 0 0 GICv2 199 Level ppmmu1
40: 0 0 0 0 GICv2 201 Level ppmmu2
41: 0 0 0 0 GICv2 192 Level gp
42: 0 0 0 0 GICv2 196 Level pp0
43: 0 0 0 0 GICv2 198 Level pp1
44: 0 0 0 0 GICv2 200 Level pp2
IPI0: 43769 44509 51827 43352 Rescheduling interrupts
IPI1: 1981654 2376448 760236 3324099 Function call interrupts
IPI2: 0 0 0 0 CPU stop interrupts
IPI3: 0 0 0 0 CPU stop NMIs
IPI4: 0 0 0 0 Timer broadcast interrupts
IPI5: 58603 293691 50386 56088 IRQ work interrupts
IPI6: 0 0 0 0 CPU backtrace interrupts
IPI7: 0 0 0 0 KGDB roundup interrupts
Err: 0
ある時点で、CPUコアの1つが他のコアよりも過負荷になる可能性があります。特に、ハードウェアとソフトウェア(例: Wi-Fi、LAN、NFS、USBなど)に関わる特定のワークフローを実行している場合です。
そして、irqbalanceをセットアップしてボックスで実行したいと思うでしょう:
sudo apt install irqbalance
sudo systemctl enable --now irqbalance
トリビア
B860H V1とHG680Pに搭載されているハードウェアは非常に似ています(特にSOC。同じu-boot.binをフラッシュしても起動します!)。そのため、HG680Pでもこのガイドを同じHDMIドングルトリックと一緒にたどることができるでしょう。
特にブートローダーが破損している場合(多くのHG680Pで見られます)、HDMIドングルを使用してAmlogicにmicroSDカードからブートローダーを起動させることができます。私がここでやったように。
それらは引き続き起動し、機能しますが、ハードウェアのデバイスツリーは部分的に異なり、互いに競合する可能性があります。そのため、armbian-install中に、代わりにこれを選択する必要があります:
105 s905x HG680P meson-gxl-s905x-p212.dtb
あるいは、HDMIドングルがない場合は、マザーボード上のR162、4C6、およびGNDを同時にショートさせることで、HG680PのeMMCブートをバイパスし、デバイスをSDカードからブートさせることができます。USBポートをグラウンドポイントとして使用できます。ピンセットや同様の導電性ツールを使用して接続を作成できます(Jimed-randによって発見されました)。
B860H V1/V2でも同様の方法を使用でき、R87をショートさせることでブート/リカバリモードに入ることができます。
困惑していますか?
このために特別に作成したYouTube動画があります。動画ではこのページで説明されていることは再説明されていませんので、生の実行方法を自由に視聴してください。