Android TV Box A95X F3 Air 構築メモ
A95X F3 シリーズには、
- A95X F3 Air (上部パネルLEDが青系統のみで光る)
- A95X F3 Air RGB (上部パネルLEDがRGBに光る)
- A95X F3 Air2 (上部パネルLEDがRGBに光る)
の種類がある。
Air2では、CPU Amlogic S905X4が採用されており、Armbian Communityでは、まだ開発中の段階で正常動作が期待できない。(2024/12/01現在)
今回は、「A95X F3 Air」Amlogic S905X3 版を利用した構築メモである。
OSイメージの入手先
すぐに動作させたい場合
〇 入手先1
ophub / amlogic-s9xxx-armbian
Armbian for Amlogic TV Boxes
https://github.com/ophub/amlogic-s9xxx-armbian
https://github.com/ophub/amlogic-s9xxx-armbian/releases
Armbian_24.11.0_amlogic_s905x3_bookworm_6.6.63_server_2024.12.01.img.gz
当サイトでは、月1でkernel更新版がリリースされている模様
Armbian Communityからの分家(フォーク)でのメンテナンスポリシー
kernelアップデートしたい場合に、yumレポジトリには置いていないと思われる(未確認)
手動アップデート方法を確立する必要がある
OpenVFD (前面パネルのLED表示)を動作させる事が出来るように設計されている
〇 入手先2
Armbian Community
Amlogic S9xx TV Box
https://www.armbian.com/soc/s905x3/
https://www.armbian.com/amlogic-s9xx-tv-box/
Armbian Communitでのメンテナンスポリシー (ローリングアップデート)
自動では週一で、kernelがアップデートされる。
また、kernelソースの更新頻度が高く、手動でアップデート更新も行われているので、
実質的にkernelアップデートの更新が多い。
OpenVFD (前面パネルのLED表示) 非対応
カスタマイズ インストール
ある程度MicroSDカードでOSの動作実績が得られるまで、eMMC領域への修正・保存は避ける事!
(1番目の)ブートローダーは、eMMCの特定領域に保存されている。
LinuxをインストールしたSDカードからAmlogicのTVBoxを起動した後、fdiskやparted等でeMMC領域のパーティション情報を照会したが空の状態で表示された。
Amlogic CPUでは、MBRやGPTとは異なるロジックでパーティション情報を作成しているとの事だ。
下記リンクの情報では、36MiBの場所からパーティション情報が格納されているらしい。
Amlogic proprietary eMMC partition table: format specification
armbian (Amlogic S9xx TV Box用イメージ)にある、SDカードからeMMC領域に保存できるプログラム(install-aml.sh)では、1000MBからパーティションを作成している。
下記コードは、install-aml.shを一部抜粋したもの。
parted -s "${DEV_EMMC}" mklabel msdos parted -s "${DEV_EMMC}" mkpart primary fat32 1000M 1512M parted -s "${DEV_EMMC}" mkpart primary ext4 1513M 100%
このようにeMMCの特定領域には
読込順位1 MicroSDカード/USBメモリーからの起動
読込順位2 eMMCから起動
といった起動情報やパーティション情報が保存されている。
これらの領域を誤って削除してしまうとmicroSDやUSBメモリーにOSイメージをインストールしたデバイスを挿しても、OSは起動しなくなるので、細心の注意が必要だ。
(文鎮化するかも・・・・)
文鎮化したTVBoxを工場出荷時状態に戻すには、ネットの情報やファームウェアの入手、書き込みソフトなどが必要
ソフト自体が存在するかどうかも分からないので、かなりの労力と手間、ある程度の知識が必要であり、
ソフトやデータが無ければ文鎮化したままである。当然、メーカーサポートなんて無い。
- kernelアップデートは、やはりyumレポからpackageでアップデートしたい。
- なんとなく「Armbian Community版を使いたい!」
- 前面パネルのLED表示を利用したい
ことから、上記2サイトよりイメージを入手して、良いとこ取りをしたいと思う。
(1) 入手先2のArmbian Community版のイメージを入手
(2) MicroSDカードにイメージを展開して、OSの基本設定を完了させておく
- IP設定
- ホスト名設定
- アカウント作成
- sshを起動させて、リモートログイン設定
(3) 入手先1のイメージをUSBメモリーへ展開。
(4) USBメモリーをA95X F3 Air(TVBox)のUSBソケットに差し込み、マウントさせる。
# mount /dev/sda1 /mnt
(5) USBメモリー内のファイルをMicroSDカードの領域へ保存する
(5-1) USBメモリー内の/boot/dtb/amlogic/meson-sm1-a95xf3-air.dtbを、MicroSDカードの/bootへコピー
# mkdir -p /boot/dtb.ophub/amlogic # cp -pi /mnt/boot/dtb/amlogic/meson-sm1-a95xf3-air.dtb /boot/dtb.ophub/amlogic
(5-2) USBメモリー内の/usr/sbin/armbian-openvfdを、MicroSDカードの/usr/sbinへコピー
# cp -pi /mnt/usr/sbin/armbian-openvfd /usr/sbin # umount /mnt
USBメモリーは抜いておく。(MicroSDカードのみ装填中)
(6) extlinux.conf の編集
# cp -pi /boot/extlinux/extlinux.conf /boot/extlinux/extlinux.conf.bak # vi /boot/extlinux/extlinux.conf
fdtの行を変更して保存
/boot/extlinux/extlinux.conf 変更箇所
(7) 再起動して、OSが立ち上がるのを確認する
OSが無事に立ち上がったら、
(7-1) linux-headerをaptにてインストール
(7-2) openVFDソースの入手してカーネルモジュール作成
arthur-liberman /linux_openvfd
https://github.com/arthur-liberman/linux_openvfd
(7-3) 同ソースのOpenVFDService.cもmakeしておく。
カーネルモジュールをどこに保存するかは一長一短。
セオリーだと/lib/modules/6.6.63-current-meson64/kernel/drivers配下だろうが、
ここに保存すると aptでkernelアップデート時に、/lib/modules/6.6.63-current-meson64配下が空にならないので、アップデートに失敗する
私の場合は、/lib/modules/6.6.63-custom ディレクトリを作成して、この配下へインストール。
カーネルモジュールのロードは、insmodでロードする
(8) /usr/sbin/armbian-openvfd は「modprobe」を利用しているので、「insmod」でロードするように編集する
# cp -pi /usr/sbin/armbian-openvfd /usr/sbin/armbian-openvfd.org # vi /usr/sbin/armbian-openvfd コメントアウト部分(説明のところ)は、適時編集
(9) OpenVFDの設定ファイルを準備する。
arthur-liberman /vfd-configurations
https://github.com/arthur-liberman/vfd-configurations
a95x-f2-aml-vfd.confを入手して、ファイル名をdiy.confで保存。
OpenVFD 設定ファイル
(10) インストール
私の場合の保存先は以下
・ /boot/dtb.ophub `-- amlogic `-- meson-sm1-a95xf3-air.dtb ・ /usr/share/openvfd |-- OpenVFDService |-- conf | |-- diy.conf | |-- h96max-x3.conf | |-- hk1-x3.conf | |-- hk1box.conf | |-- t95.conf | |-- t95z-plus.conf | |-- tx3-mini.conf | |-- tx3.conf | |-- tx9-pro.conf | |-- whale.conf | |-- x88pro-x3.conf | |-- x92.conf | |-- x96air.conf | |-- x96max.conf | `-- x96maxplus.conf `-- vfdservice -> OpenVFDService ・ /lib/modules/6.6.63-current-meson64-custom `-- kernel `-- drivers `-- auxdisplay `-- openvfd `-- openvfd.ko ・ /usr/sbin/ `-- armbian-openvfd
(11) 手動実行して、前面LEDが表示されるか確認
(LED ON) # /usr/sbin/armbian-openvfd 99 (LED OFF) # /usr/sbin/armbian-openvfd 0
(12) 動作確認が終わったら、rc.localにて起動させる。
時間があるときに、systemdのユニットファイルから起動するようにしたい。
(13) OSを再起動して、前面LEDが表示されるのを確認する
インストール後の諸設定
残作業
(1) 上面のLEDランプ(LEDランプが流れる)は消したい
筐体を開けると、本体基板と上部LEDが実装されている基板は別基板であり、ケーブルを外せば無灯に出来ると思う。
しかしながら、前面LED表示の制御のように、ソフトウェアで設定できないか、情報収集中
この筐体は、裏のゴム足を外すと隠しネジがあり、ネジを外せばキレイに外せる
(ツメ等は無かった)
主 設定ファイル
u-boot dts
OpenVFD 設定ファイル
diy.conf
# A95X F3 Air (S905X3) configuration # Appendix) Tanix TX3 (S905X3) configuration #-------------------- vfd_gpio_clk='1,7,0' vfd_gpio_dat='1,8,0' vfd_gpio_stb='1,6,0' vfd_chars='4,0,1,2,3' vfd_dot_bits='0,1,2,3,4,5,6' vfd_display_type='0x03,0x00,0x00,0x00' functions=''
armbian-openvfd 修正版 変更箇所
--- armbian-openvfd.org 2024-11-21 12:06:19.000000000 +0900 +++ armbian-openvfd 2024-12-06 05:21:51.276018376 +0900 @@ -93,7 +93,8 @@ do_start() { error_msg "The LED profile [ ${conf_file} ] does not exist!" fi - modprobe openvfd vfd_gpio_clk=${vfd_gpio_clk} \ + insmod /lib/modules/6.6.63-current-meson64-custom/kernel/drivers/auxdisplay/openvfd/openvfd.ko \ + vfd_gpio_clk=${vfd_gpio_clk} \ vfd_gpio_dat=${vfd_gpio_dat} \ vfd_gpio_stb=${vfd_gpio_stb:-0,0,0xFF} \ vfd_gpio0=${vfd_gpio0:-0,0,0xFF} \
/boot/extlinux/extlinux.conf 変更箇所
--- extlinux.conf.org 2024-11-15 12:22:10.000000000 +0900 +++ extlinux.conf 2024-11-15 18:29:00.000000000 +0900 @@ -1,5 +1,5 @@ label Armbian_community kernel /Image initrd /uInitrd - fdt /dtb/amlogic/meson-gxl-s905w-tx3-mini.dtb + fdt /dtb.ophub/amlogic/meson-sm1-a95xf3-air.dtb append root=LABEL=ROOT_EMMC rootflags=data=writeback console=ttyAML0,115200n8 console=tty0 rw no_console_suspend consoleblank=0 fsck.fix=yes fsck.repair=yes net.ifnames=0 splash plymouth.ignore-serial-consoles
参考サイト
A95X F3 Air の前面LEDを表示するきっかけとなった参考サイト
・ VFD Clock on amlogic-s9xxxx
https://forum.manjaro.org/t/vfd-clock-on-amlogic-s9xxxx/110833
・ TANIX TX3 ALICE UX 4 GB / 32 GB Amlogic S905x3
https://www.kodinerds.net/thread/71964-tanix-tx3-alice-ux-4-gb-32-gb-amlogic-s905x3/
・ How to configure VFD
https://discourse.coreelec.org/t/how-to-configure-vfd/427
・ LED Screen Display Control Instructions
https://github.com/ophub/amlogic-s9xxx-armbian/blob/main/documents/led_screen_display_control.md
https://github.com/ophub/amlogic-s9xxx-armbian/issues/143
・ armbian-openvfd
https://github.com/ophub/amlogic-s9xxx-armbian/blob/main/build-armbian/armbian-files/platform-files/amlogic/rootfs/usr/sbin/armbian-openvfd