Skip to content

Rebuild Armbian and Kernel

Actions
Support Amlogic, Rockchip and Allwinner boxes
Armbian_jammy_arm64_server_2026.03
Latest
Star (8.9K)

Tags

 (1)
Armbian

Armbian

View Chinese description | 查看中文说明

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 stable
s905x2 X96Max-4G, X96Max-2G, MECOOL-KM3-4G, Tanix-Tx5-Max, A95X-F2, HG680-FJ stable
s905l3a E900V22C/D, CM311-1a-YST, M401A, M411A, UNT403A, UNT413A, ZTE-B863AV3.2-M, CM311-1a-CH, IP112H, B863AV3.1-M2 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 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, BTV9 stable
s905mb S65 stable
s905l UNT402A, M201-S, MiBox-4, MiBox-4C, MG101, E900V21C, IP108H-53u1m, Tencent-Aurora-1s, B860AV2.1, B860AV2.1U, HM201 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, Beelink-IPC-R, HLink-H88K, HLink-H88K-V3, NanoPC-T6, Smart-Am60, DC-A588, Orangepi-5B, CM3588-NAS, Rock-5-ITX, LZ-D3588 rk3588
rk3576 NanoPi-m5 stable
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, AIO-3399B, AIO-3399C, AIO-3399C(AI), TaraM, NanoPC-T4, Firefly-Core-3399-JD4, GEA-6319 rk35xx
stable
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 rk35xx
stable
rk3566 Panther-X2, JP-TvBox, LCKFB-Taishan-Pi, WXY-OEC-turbo-4g, Station-M2, Orange-Pi-3B rk35xx
stable
rk3528 HLink-H28K, Radxa-E20C, H96-Max-M2, HK1-Rbox-K8S, HT2 rk35xx
rk3328 BeikeYun, Chainedbox-L1-Pro, Station-M1, Bqeel-MVR9, Renegade/Firefly rk35xx
stable
rk3318 RX3318-Box stable
h6 Vplus, Tanix-TX6, TQC-A01 h6
stable
h618 OrangePi-Zero3 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.

  • Install Armbian to EMMC

  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

  • Update Armbian Kernel

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/h6 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.

  • Replace Armbian Sources

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.

  • Install Common Software

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.

  • Modify Armbian Configuration

Log in to the Armbian system and enter the command:

armbian-config
  • Create Swap for Armbian

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
  • Control LED Display

Log in to the Armbian system and enter the command:

armbian-openvfd

Debug according to the LED Screen Display Control Instructions.

  • Backup/Restore EMMC Original System

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.

  • Compile the Kernel in Armbian

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
  • More Usage Instructions

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.

  • Local Packaging Parameter Description

Parameter Meaning Description
-b Board Specifies the device code(s) to build. For example, -b s905x3 builds the s905x3 device. Multiple devices can be joined with underscores, e.g., -b s905x3_s905d. Special values: all builds all devices; first50 builds the first 50; range50_100 builds devices 51–100; range100_150 builds devices 101–150; last20 builds the last 20. See the BOARD entries in model_database.conf for the full list. 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 / h6 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
  • sudo ./rebuild: Use default configuration to package all device models.
  • sudo ./rebuild -b s905x3 -k 6.6.12: Recommended. Build with default configuration for the specified kernel.
  • sudo ./rebuild -b s905x3 -k 6.1.y: Build with default configuration, using the latest kernel in the 6.1.y series.
  • sudo ./rebuild -b s905x3_s905d -k 6.6.12_5.15.50: Build with default configuration for multiple kernels simultaneously. Use _ to join multiple kernels.
  • sudo ./rebuild -b s905x3 -k 6.6.12 -s 2560: Build a single kernel and model with default configuration; ROOTFS partition size set to 2560 MiB.
  • sudo ./rebuild -b s905x3_s905d: Build all kernels for multiple models with default configuration. Use _ to join multiple models.
  • sudo ./rebuild -k 6.6.12_5.15.50: Build all models with default configuration and multiple specified kernels. Use _ to join kernels.
  • sudo ./rebuild -k 6.6.12_5.15.50 -a true: Same as above, with automatic upgrade to the latest kernel within each series.
  • sudo ./rebuild -t btrfs -s 2560 -k 6.6.12: Build all models with btrfs filesystem, 2560 MiB ROOTFS, and kernel 6.6.12.

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., jammy) or Debian series (e.g., bullseye). 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
  • GitHub Actions Input Parameter Description

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
  • GitHub Actions Output Variable Description

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

  • The amlogic-s9xxx-openwrt project provides the OpenWrt system for TV boxes, also applicable to Armbian-supported devices.
  • The fnnas project provides the FnNAS system for TV boxes, also applicable to Armbian-supported devices.
  • unifreq has created OpenWrt systems for a wide range of Amlogic, Rockchip, and Allwinner devices, serving as a benchmark project in the community. Highly recommended.
  • Scirese has tested the build, installation, and usage of Arch Linux ARM / Manjaro systems on Android TV boxes. See his repository for details.
  • 7Ji has published articles on reverse engineering and development for the Amlogic platform, covering topics such as installing ArchLinux ARM and analyzing the Amlogic boot mechanism. His ampart project provides a partition tool for reading and editing Amlogic eMMC partition tables and DTB partitions, enabling 100% utilization of eMMC space. The amlogic-s9xxx-archlinuxarm project provides build and usage instructions for Arch Linux ARM. The YAopenvfD project offers an alternative openvfd daemon implementation.
  • 13584452567 is the pioneer for Rockchip device support in this repository. Through his contributions, support was expanded for numerous Rockchip devices including EAIDK-610, King3399, TN3399, Kylin3399, ZCube1-Max, tvi3315a, xiaobao, and more. He also maintains specialized kernels for Allwinner devices such as TQC-A01, and has provided extensive technical support and solutions in Discussions and Issues, making significant contributions to the community.
  • cooip-jm shares many guides on Armbian, LXC, Docker, AdGuard, and other applications in his wiki. Recommended reading.

Links

License

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

Rebuild Armbian and Kernel is not certified by GitHub. It is provided by a third-party and is governed by separate terms of service, privacy policy, and support documentation.

About

Support Amlogic, Rockchip and Allwinner boxes
Armbian_jammy_arm64_server_2026.03
Latest

Tags

 (1)

Rebuild Armbian and Kernel is not certified by GitHub. It is provided by a third-party and is governed by separate terms of service, privacy policy, and support documentation.