You can install HAOS (No VM nor container, just pure HAOS) on any ARM64 device, especially Android TV boxes, as long as modern U-Boot (or UEFI) and Linux mainline support are available for the device

Grammarly has been used, forgive me for my lazyness, if you prefer the raw text then I shall share it.

Here’s what I did on an Amlogic S905W Android TV box named “TX3 Mini”:

WARNING: If you’re using an Amlogic device, YOU MUST figure out how to unbrick a boot-looping Amlogic device before proceeding in case something goes wrong. For me, it involved shorting a pin to ground to put the device in mask mode by temporarily disabling the eMMC. Also, having UART is essential.

Step 1: Building U-Boot

We need modern U-Boot for the ability to boot OSes using EFI.

You can take the easy route and use the online builder I created on Google Colab. Just change the defconfig (or keep the default if you’re also using a TX3 Mini). Here’s the link: U-Boot Builder TX3 Mini Colab. You’ll get the necessary files in about five minutes.

Alternatively, you can build it manually:

  1. Install the AArch64 toolchain and other dependencies. For Ubuntu, you can use:

    sudo apt install git build-essential gcc-aarch64-linux-gnu g++-aarch64-linux-gnu bison flex libgnutls28-dev
    
  2. Obtain the U-Boot source:

    git clone https://source.denx.de/u-boot/u-boot.git
    cd u-boot
    git checkout v2026.07
    
  3. Go to the U-Boot documentation at U-Boot Board Documentation. Select your device; since “P281” or “TX3 Mini” was missing, I took the closest defconfig (“JetHub J80”), copied it, and changed the CONFIG_DEFAULT_DEVICE_TREE from amlogic/meson-gxl-s905w-jethome-jethub-j80 to amlogic/meson-gxl-s905w-tx3-mini.

  4. Change:

    export CROSS_COMPILE=aarch64-none-elf-
    

    To:

    export ARCH=arm CROSS_COMPILE=aarch64-linux-gnu-
    
  5. Follow the rest of the build instructions. You might need Python 2, which you can download from Python 2.7.17 AppImage.

Step 2: Install U-Boot on eMMC or SD Card

I found it impossible to have both HAOS and U-Boot on the same storage device because the HAOS image uses GPT, which would overwrite U-Boot or vice versa, unlike MBR. Therefore, I installed U-Boot on an SD card and HAOS on eMMC.

On Amlogic devices, you have to destroy the existing bootloader as part of the installation steps. Yes, you read that right—destroy the bootloader! You can read more about this process at Coded Bearder.

Step 3: Installing HAOS

Visit Home Assistant Releases and download haos_generic-aarch64-18.2.img.xz.

Uncompress it, then write it directly to eMMC. I used the UMS tool in U-Boot, which allows the device to act like a USB stick, similar to a feature found in Android 4.

Step 4: Congratulations

You now have the official HAOS installed!