amlogic-s9xxx-armbian README

The project's README from github.com/ophub/amlogic-s9xxx-armbian. As one markdown file: README.md.

Armbian

Armbian

English Instructions | 中文说明 | 日本語説明

Armbian is a lightweight Linux distribution built specifically for ARM chips, based on Debian/Ubuntu. The Armbian system is lean, clean, and 100% compatible with Debian/Ubuntu, inheriting its functionality and rich software ecosystem. It runs securely and stably on TF/SD/USB storage and the device's eMMC. This project preserves the integrity of the official Armbian system while extending support for unofficially supported devices such as TV boxes, and adds a set of convenient management commands. You can now replace the Android TV system on your TV box with Armbian, transforming it into a powerful server.

This project relies on many contributors to build the Armbian system for Amlogic, Rockchip, and Allwinner devices. It supports writing to eMMC, kernel updates, and other features. For detailed usage, see the 📚Armbian User Documentation. The latest Armbian system can be downloaded from ⬇️Releases. Welcome to Fork and customize. If this project is helpful, please click the ⭐Star button in the upper right corner to show your support.

Default Information for Armbian System

System Name Default Username Default Password SSH Port IP Address
🐧 Armbian.OS root 1234 22 Obtain from router
🐋 Armbian.Docker root 1234 22 Static MacVLAN IP

Supported Devices

⬆️ Models from each platform (Amlogic/Rockchip/Allwinner) are ranked by SoC performance from high to low.

SoC Device Kernel
a311d Khadas-VIM3, WXY-OES stable
s922x Beelink-GT-King, Beelink-GT-King-Pro, Ugoos-AM6-Plus, ODROID-N2, X88-King, Ali-CT2000, WXY-OES-Plus stable
s905x3 X96-Max+, HK1-Box, Vontar-X3, H96-Max-X3, Ugoos-X3, TX3(QZ), TX3(BZ), X96-Air, X96-Max+_A100, A95X-F3-Air, Tencent-Aurora-3Pro(s905x3-b), X96-Max+Q1, X96-Max+100W, X96-Max+_2101, Infinity-B32, Whale, X88-Pro-X3, X99-Max-Plus, Transpeed-X3-Plus, TOX1, Khadas-VIM3L stable
s905x2 X96Max-4G, X96Max-2G, MECOOL-KM3-4G, Tanix-Tx5-Max, A95X-F2, HG680-FJ, ZTE-B860H-V5 stable
s905l3a E900V22C/D, CM311-1a-YST, M401A, M411A, UNT403A, UNT413A, ZTE-B863AV3.2-M, CM311-1a-CH, IP112H, B863AV3.1-M2, ZTE-W103D stable
s905l3b CM201-1, CM211-1, CM311-1, E900V21D, E900V22D, E900V21E, E900V22E, M302A/M304A, Hisense-IP103H, TY1608, TY1608, MGV2000, B860AV-2.1M, UNT403A, RG020ET-CA, M411A stable
s905l3 CM211-1, CM311-1, HG680-LC, M401A, UNT400G1, UNT400G, UNT402A, ZXV10-BV310, M411A, ZXV10-B860AV3.2-M, ZXV10-B860AV2.1-U, E900V22D-2, CM201-1-6-YS, IP108H, M301A, B860AV2.1-A stable
s912 Tanix-TX8-Max, Tanix-TX9-Pro(3G), Tanix-TX9-Pro(2G), Tanix-TX92, Tanix-TX9S, Nexbox-A1, Nexbox-A95X-A2, A95X, H96-Pro-Plus, VORKE-Z6-Plus, Mecool-M8S-PRO-L, Vontar-X92, T95Z-Plus, Octopus-Planet, Phicomm-T1, TX3-Mini, OneCloudPro-V1.1_V1.2 stable
s905d MECOOL-KI-Pro, Phicomm-N1, SML-5442TW stable
s905x HG680P, B860H, TBee-Box, T95, TX9, XiaoMI-3S, X96, Nexbox-a95x, BTV-9, BTV-10(BX) stable
s905mb S65 stable
s905l UNT402A, M201-S, MiBox-4, MiBox-4C, MG101, E900V21C, IP108H-53u1m, Tencent-Aurora-1s, B860AV2.1, B860AV2.1U, HM201, XiaoMI-4C stable
s905l2 MGV2000, MGV2000-K, MGV3000, Wojia-TV-IPBS9505, M301A, E900v21E, e900v21d, CM201-1, IP108H, MGV2000-CW stable
s905lb Q96-mini, BesTV-R3300L, SumaVision-Q7, MG101, s65, IPBS9505 stable
s905w X96-Mini, TX3-Mini, W95, X96W/FunTV, MXQ-Pro-4K, MeCool-m8s-pro-W stable
s905 Beelink-Mini-MX-2G, Sunvell-T95M, MXQ-Pro+4K, SumaVision-Q5 stable
rk3588(s) Radxa-Rock5B, Radxa-Rock5C, Orange-Pi-5-Plus, Orange-Pi-5-Pro, Orange-Pi-5-Ultra, Beelink-IPC-R, HLink-H88K, HLink-H88K-V3, NanoPC-T6, Smart-Am60, DC-A588, Orangepi-5B, CM3588-NAS, Rock-5-ITX, LZ-D3588, Boca-tcn100, Boca-tcn200, Firefly-ITX-3588J, Indiedroid-Nova, LubanCat-4, Seewo-SV50, EasePi-R2, BDY-G98, Youyeetoo-YY3588, Youyeetoo-R1-V3, ELFboard-elf2, QuarkPi-CA2 stable
rk3588
rk3576 NanoPi-m5, LCKFB-Taishan-Pi-3M, reComputer-rk3576-Devkit, LubanCat-3 stable
rk35xx
rk3399 EAIDK-610, King3399, TN3399, Kylin3399, ZCube1-Max, CRRC, SMART-AM40, SW799, ZYSJ, DG-3399, DLFR100, Emb3531, Leez-p710, tvi3315a, xiaobao, Fine3399, Firefly-RK3399, LX-R3S, Hugsun-x99, Tb-ls3399, Hisense-hs530r, Tpm312, ZK-rk39a, YSKJ, Fmx1-Pro, Fmx1-Pro-B, Sv-33a6x, Sv-33a6x(VPU), AIO-3399B, AIO-3399C, AIO-3399C(AI), TaraM, NanoPC-T4, Firefly-Core-3399-JD4, GEA-6319, NanoPi-SOM-RK3399, SZ3390, H339PC stable
rk35xx
rk3568 FastRhino-R66S, FastRhino-R68S, Radxa-E25, NanoPi-R5S, NanoPi-R5C, HLink-H66K, HLink-H68K, HLink-H69K, Seewo-sv21, Mrkaio-m68s, Swan1-w28, Ruisen-box, DG-TN3568, Alark35-3500, MMBox-Anas3035, Wocyber-A3, Photonicat, NSY-G16-Plus, NSY-G68-Plus, BDY-G18-Pro, Gzpeite-P01, LZ-D3568, LZ-K3568, BDKJ-One, Station-P2, Lyt-t68m, LubanCat-2, Rock-3B, EasePi-A2, Roceos-K40Pro, DG-Nas-Lite, Houzzkit-F1, Youyeetoo-YY3568, DC_A568 stable
rk35xx
rk3566 Panther-X2, JP-TvBox, LCKFB-Taishan-Pi, WXY-OEC-turbo-4g, Station-M2, Orange-Pi-3B, X88Pro20, LubanCat-1, Rock-3C, Inspur-MD1000 stable
rk35xx
rk3528 HLink-H28K, Radxa-E20C, H96-Max-M2, HK1-Rbox-K8S, HT2, CD1000, P51(X88-Pro-13), XingYiCloud stable
rk35xx
rk3328 BeikeYun, Chainedbox-L1-Pro, Station-M1, Bqeel-MVR9, Renegade/Firefly stable
rk35xx
rk3318 RX3318-Box stable
h618 OrangePi-Zero3, H618-DevBoard(PCDN), Vontar-h618, BT-100M, BT-1000M, PaiNet-P3, PaiNet-P5, X98H, AI-Douhe, CJDS stable
h6 Vplus, Tanix-TX6, TX6-H, T95-max, TQC-A01 stable

[!TIP] At present, the s905 box can only be used with TF/SD/USB; other box models support writing to EMMC. For more information, refer to the ✅ Supported Device List. To add new device support, see Section 12.15 of the documentation: ✳️Adding New Supported Devices. Please read the 📚Armbian User Documentation before use, as it provides solutions to common issues.

Installation and Upgrade Instructions for Armbian

Choose the Armbian system that matches your device model. Refer to the corresponding documentation for device-specific usage instructions.

  1. For Rockchip platform devices, refer to Chapter 8 of the documentation.

  2. For Amlogic and Allwinner platform devices, use tools such as Rufus or balenaEtcher to write the system to a USB stick, then insert the USB stick into the device. Log in to the Armbian system (default user: root, default password: 1234) and enter the command:

armbian-install
Optional Default Options Description
-m no yes/no Use mainline u-boot
-a yes yes/no Use ampart partition adjustment tool
-l no yes/no Show full device list

Example: armbian-install -m yes -a no

Log in to the Armbian system and enter the command:

# Run as root user (sudo -i)
# If no parameter is specified, it will be updated to the latest version.
armbian-update
Optional Default Options Description
-r ophub/kernel <owner>/<repo> Set the repository for downloading kernels from github.com
-u Automation stable/flippy/beta/rk3588/rk35xx Set the kernel tags suffix
-k Latest version Kernel version Set the kernel version
-b yes yes/no Automatically back up the currently used kernel when updating
-d deb tar/deb Set the preferred kernel package format. If unavailable, the script will automatically try the alternative format. The deb format is recommended for compiling custom drivers.
-m no yes/no Use mainline u-boot
-s None None/DiskName [SOS] Restore the system kernel on eMMC/NVMe/sdX or other disks
-h None None View help information

Example: armbian-update -k 5.15 -u stable -d deb

When specifying the kernel version via the -k parameter, you can provide an exact version number (e.g., armbian-update -k 5.15.50) or specify only the kernel series (e.g., armbian-update -k 5.15). When a series is specified, the latest version within that series will be used automatically.

During kernel updates, the currently running kernel is automatically backed up to the /ddbr/backup directory, retaining the 3 most recent versions. If the newly installed kernel proves unstable, you can restore a backup kernel at any time. If a kernel update renders the system unbootable, use armbian-update -s to restore the system kernel. For more details, see the Help Document.

Log in to the Armbian system and enter the command:

armbian-apt

Choosing the appropriate software source for your country or region can significantly improve download speeds. For more details, see the Help Document.

Log in to the Armbian system and enter the command:

armbian-software

The command armbian-software -u updates the local software center list. Based on user feedback in Issues, commonly used software has been gradually integrated with one-click install/update/uninstall support. This includes Docker images, desktop software, application services, and more. See the detailed instructions.

Log in to the Armbian system and enter the command:

armbian-config

If you find the device's memory insufficient when running memory-intensive applications such as Docker, you can create a swap virtual memory partition to use a portion of disk space as additional memory. The parameter unit is GB, with a default value of 1.

Log in to the Armbian system and enter the command:

armbian-swap 1

Log in to the Armbian system and enter the command:

armbian-openvfd

Debug according to the LED Screen Display Control Instructions.

Supports backing up and restoring the device's EMMC partition via TF/SD/USB. Before installing Armbian on a new device, it is recommended to back up the original Android TV system for future restoration if needed.

Boot the Armbian system from TF/SD/USB and enter the command:

armbian-ddbr

Enter b at the prompt to back up the system, or r to restore.

[!IMPORTANT] Alternatively, the Android system can be flashed directly into eMMC via USB cable. Android system images are available in Tools.

For kernel compilation instructions, see the Compile Kernel documentation. Log in to the Armbian system and enter the command:

armbian-kernel -u
armbian-kernel -k 6.6.12

To update all service scripts in the system to the latest version, log in to the Armbian system and enter the command:

armbian-sync

For common issues and their solutions when using Armbian, see documents.

Local Packaging

  1. Clone the repository to local git clone --depth 1 https://github.com/ophub/amlogic-s9xxx-armbian.git

  2. Install the necessary software packages (using Ubuntu 24.04 as an example)

Enter the ~/amlogic-s9xxx-armbian root directory, then run the installation command:

sudo apt-get update -y
sudo apt-get full-upgrade -y
# For Ubuntu-24.04
sudo apt-get install -y $(cat compile-kernel/tools/script/ubuntu2404-build-armbian-depends)
  1. Enter the ~/amlogic-s9xxx-armbian root directory, create the build/output/images folder, and upload the Armbian image file (e.g., Armbian_21.11.0-trunk_Odroidn2_current_5.15.50.img) to the ~/amlogic-s9xxx-armbian/build/output/images directory. Retain the release version number (e.g., 21.11.0) and kernel version number (e.g., 5.15.50) in the original filename, as they will be used for naming the rebuilt Armbian system.

  2. Enter the ~/amlogic-s9xxx-armbian root directory and run sudo ./rebuild -b s905x3 -k 6.6.12 to generate the Armbian image for the specified board. Output files are saved in the build/output/images directory.

Parameter Meaning Description
-b Board Specifies the target device codename (default is all). You can specify a single device (e.g., -b s905x3) or connect multiple codenames with underscores to compile them together (e.g., -b s905x3_s905d). The parameter also supports special keywords for batch compilation: all compiles every device in the database, first50 compiles the first 50 devices, range50_100 compiles devices from the 51st to the 100th (similarly for range100_150), and last20 compiles the last 20 devices. Additionally, you can compile by hardware platform (amlogic, rockchip, allwinner) to build all images for that specific platform, for example, -b amlogic. Appending numeric values to the platform name allows you to compile a specific range within that platform's support list; for example, -b amlogic50 builds the first 50 devices under the Amlogic platform, and -b amlogic50_100 builds the 51st to the 100th devices. For a complete list of supported device codenames, please refer to the BOARD configuration items in model_database.conf. Default: all
-r KernelRepo Specify the <owner>/<repo> of the github.com kernel repository. Default value: ophub/kernel
-u kernelUsage Set the tags suffix of the kernel used, such as stable, flippy, beta. Default value: stable
-k Kernel Specify kernel name, such as -k 6.6.12. Connect multiple kernels with _, such as -k 6.6.12_5.15.50. The kernel version freely specified by the -k parameter is only valid for kernels using stable/flippy/beta. Other kernel series such as rk3588 / rk35xx can only use specific kernels.
-a AutoKernel Set whether to automatically use the latest kernel within the same series. When true, the kernel repository is checked for newer versions within the series specified by -k (e.g., 6.6.12), and if found, the latest version is used automatically. When false, the exact specified version is used. Default: true
-t RootfsType Set the file system type of the ROOTFS partition. Options: ext4 or btrfs. Example: -t btrfs. Default: ext4
-s Size Set the image partition sizes. To set only the ROOTFS partition, specify a single value (e.g., -s 2560). To set both BOOTFS and ROOTFS, join them with / (e.g., -s 512/2560). Default: 512/2560
-n BuilderName Set the Armbian system builder signature. Do not include spaces. Default: None

Use GitHub Actions for Compilation

  1. Workflow configuration files are located in the .github/workflows/ directory.

  2. Fresh Build: On the Actions page, select Build Armbian server image to use the build-armbian-arm64-server-image.yml workflow. You can choose from Ubuntu series (e.g., resolute) or Debian series (e.g., trixie). Click Run workflow to start the build.

  3. Rebuild: If Releases already contains compiled Armbian_.*-trunk_.*.img.gz files and you only need to repackage for other boards, skip the source compilation step and use build-armbian-using-releases-files.yml for secondary builds.

  4. To use other Armbian systems (e.g., the odroidn2 image from the official armbian.tnahosting.net download site), simply reference this repository's script in the workflow file build-armbian-using-official-image.yml for Armbian restructuring to support other devices. Example:

- name: Build Armbian
  uses: ophub/amlogic-s9xxx-armbian@main
  with:
    build_target: armbian
    armbian_path: build/output/images/*.img
    armbian_board: s905d_s905x3_s922x_s905x
    armbian_kernel: 6.12.y_6.18.y

These parameters correspond to the local packaging command options described above.

Parameter Default Description
armbian_path None Set the path of the original Armbian file. Supports workflow file paths (e.g., build/output/images/*.img) and network download URLs (e.g., https://dl.armbian.com/*/Armbian_*.img.xz).
armbian_board all Set the board of the package box, refer to -b
kernel_repo ophub/kernel Specify <owner>/<repo> of the github.com kernel repository, refer to -r
kernel_usage stable Set the tags suffix of the used kernel. Refer to -u
armbian_kernel 6.12.y_6.18.y Set the version of the kernel, refer to -k
auto_kernel true Set whether to automatically adopt the latest version of the same series kernel, refer to -a
armbian_fstype ext4 Set the file system type of the system's ROOTFS partition, refer to -t
armbian_size 512/2560 Set the size of the system BOOTFS and ROOTFS partitions, function reference -s
armbian_files false Add custom Armbian files. When set, all files in this directory will be copied to common-files. The directory structure must mirror the Armbian root directory to ensure files are correctly overlaid (e.g., default configuration files should be placed under etc/default/).
builder_name None Set the Armbian system builder signature, refer to -n

Uploading to Releases requires Workflow read and write permissions for the repository. See the usage instructions for details.

Parameter Default Description
${{ env.PACKAGED_OUTPUTPATH }} out Armbian system files output path
${{ env.PACKAGED_OUTPUTDATE }} 04.13.1058 Packaging date (month.day.hourminute)
${{ env.PACKAGED_STATUS }} success Packaging status: success / failure

Build Armbian Docker Image

For creating Docker images of the Armbian system, refer to the armbian_docker build script.

Compiling Kernel Using GitHub Actions

For kernel compilation instructions, see compile-kernel.

- name: Compile the kernel
  uses: ophub/amlogic-s9xxx-armbian@main
  with:
    build_target: kernel
    kernel_version: 6.12.y_6.18.y
    kernel_auto: true
    kernel_sign: -yourname

Armbian Contributors

First and foremost, thanks to 150balbes for the outstanding contributions and the solid foundation laid for running Armbian on Amlogic TV boxes. The Armbian system compiled here uses the latest official source code for real-time builds. The development approach is inspired by tutorials from authors such as ebkso. Thanks to everyone's dedication and sharing, enabling Armbian to run on an ever-growing range of devices.

The u-boot, kernel, and other resources used in this system are primarily sourced from the unifreq/openwrt_packit project. Some files have been contributed by users through Pull Requests and Issues in projects such as amlogic-s9xxx-openwrt, amlogic-s9xxx-armbian, luci-app-amlogic, u-boot, and kernel. To acknowledge these pioneers and contributors, all contributions since the repository's creation (2021-09-19) are recorded in CONTRIBUTORS.md. Thanks again to everyone for breathing new life and purpose into these devices.

Other Distributions

License

The amlogic-s9xxx-armbian © OPHUB is licensed under GPL-2.0

amlogic-s9xxx-armbian (ophub/amlogic-s9xxx-armbian)

Searching Database…

What is this?This is a project that lets you replace the Android TV firmware on Amlogic, Allwinner, and Rockchip TV boxes and SBCs with Armbian, turning them into real Debian/Ubuntu-based Linux servers. It also ships management commands for installing, updating the kernel, and configuring the resulting system.
Is this a Linux distro or just a set of installer scripts?It is both: prebuilt Armbian OS images for dozens of specific SoCs/boards, plus a set of shell commands (armbian-install, armbian-update, armbian-software, etc.) that run on the device to install to eMMC, update the kernel, and manage the system.
How do I actually install Armbian on my TV box?Download the matching image from Releases, write it to a TF/SD/USB stick with Rufus or balenaEtcher, boot the box from it, log in as root, and run armbian-install (e.g. armbian-install -m yes -a no) to write the system to eMMC.
What do I need to build my own image locally instead of using Releases?You need an Ubuntu machine (the docs use Ubuntu 24.04), clone the repo with git clone --depth 1, install the required packages, drop a source Armbian image into build/output/images, then run sudo ./rebuild -b -k .
Does every box support writing to eMMC?No. Plain s905 boxes can only run Armbian from TF/SD/USB; nearly every other supported model can be written permanently to eMMC.
What's the default login after flashing Armbian?Username root, password 1234, over SSH on port 22; the IP is assigned by your router (or a static MacVLAN IP for the Docker variant).
How do I update or roll back the kernel later?Run armbian-update with flags for repo, channel (stable/flippy/beta/rk3588/rk35xx) and version; it auto-backs up the last 3 kernels to /ddbr/backup, and armbian-update -s restores the system kernel if an update breaks boot.
Can I keep my original Android system as a fallback?Yes, before installing you can back up the device's original eMMC Android system to TF/SD/USB with a built-in backup/restore command, and restore it later the same way.
Does it help me install extra software afterward?Yes, the armbian-software command gives one-click install/update/uninstall for common Docker images, desktop software, and services, based on community feedback.
Creator
ophub
Size
47 MB
Stars
10.2K
Age
5y
Commits · 90 Days