目次

Android TV Box A95X F3 Air 構築メモ

A95X F3 シリーズには、

の種類がある。

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を工場出荷時状態に戻すには、ネットの情報やファームウェアの入手、書き込みソフトなどが必要
ソフト自体が存在するかどうかも分からないので、かなりの労力と手間、ある程度の知識が必要であり、

ソフトやデータが無ければ文鎮化したままである。当然、メーカーサポートなんて無い。

ことから、上記2サイトよりイメージを入手して、良いとこ取りをしたいと思う。

(1) 入手先2のArmbian Community版のイメージを入手
(2) MicroSDカードにイメージを展開して、OSの基本設定を完了させておく

  1. IP設定
  2. ホスト名設定
  3. アカウント作成
  4. 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

コメントアウト部分(説明のところ)は、適時編集

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が表示されるのを確認する

インストール後の諸設定

Linux (X11 Desktop) A95XF3Air リプレースメモ

残作業

(1) 上面のLEDランプ(LEDランプが流れる)は消したい
 筐体を開けると、本体基板と上部LEDが実装されている基板は別基板であり、ケーブルを外せば無灯に出来ると思う。
 しかしながら、前面LED表示の制御のように、ソフトウェアで設定できないか、情報収集中

この筐体は、裏のゴム足を外すと隠しネジがあり、ネジを外せばキレイに外せる
(ツメ等は無かった)

主 設定ファイル

u-boot dts

A95X F3 Air 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

A95X F3 Air 構築参考情報

・ dts
https://github.com/torvalds/linux/blob/master/arch/arm64/boot/dts/amlogic/meson-sm1-a95xf3-air.dts