Skip to content

System wide and admin settings

Hardware

Alternative kernels, headers, overlays, bootenv

Edit: footer header

Alternative kernels

Use alternative kernels

Alternative kernels

Switching between different kernel versions can significantly impact the functionality of your device. A newer or older kernel may introduce changes to hardware compatibility, drivers, and system stability. Some features may stop working, while others may improve or be reintroduced.

Kernel changes carry inherent risks!

  • A mismatched or incompatible kernel may result in boot failures, rendering the system unresponsive.
  • Certain peripherals or hardware components (e.g., Wi-Fi, GPU acceleration, or power management) may no longer function correctly.
  • Custom configurations or third-party modules might need to be recompiled or adjusted to work with the new kernel.

Precautions Before Switching Kernels Before switching kernels, it is strongly recommended to:

  1. Back up your system to prevent data loss.
  2. Verify compatibility of your hardware and essential drivers with the target kernel version.
  3. Keep a rescue method available, such as a bootable SD card / USB drive or serial console access, to recover the system if necessary.

Recovery Steps if Boot Fails If your device fails to boot after a kernel change, you may need to:

  • Revert to a previous working kernel using recovery options.
  • Use a serial console or debug mode to diagnose the issue.
  • Reinstall the system if no recovery options are available.

Exercise caution when switching kernels, especially on production systems or devices with limited recovery options.

Edit: footer header
Status: Stable
Architecture: x86-64 aarch64 armhf riscv64
Maintainer: @armbian
Documentation: Link

armbian-config --cmd KER001

Kernel Headers

Install Linux headers

Kernel Headers

Kernel headers are files required to build modules (drivers) or software that interfaces directly with the Linux kernel. Installing headers ensures compatibility when compiling custom drivers, DKMS modules (like ZFS, WireGuard), or updating third-party software that requires access to kernel internals. The installed headers match your running kernel version and are critical for system extensions and hardware support.

Edit: footer header
Status: Stable
Architecture: x86-64 aarch64 armhf riscv64
Maintainer: @armbian
Documentation: Link

armbian-config --cmd HEAD01
Remove Headers:
armbian-config --cmd HEAD02

Device Tree Overlays

Manage device tree overlays

Device Tree Overlays

Device Tree Overlays allow you to dynamically modify the Linux device tree at runtime, without rebuilding the kernel. They are used to enable or configure specific hardware features (like GPIO pins, I²C, SPI, sensors, displays) on single-board computers. Overlays are small snippets that can add, change, or remove parts of the hardware description, making it flexible to adapt the system for different peripherals without recompiling the full device tree.

Edit: footer header
Status: Stable
Architecture: x86-64 aarch64 armhf riscv64
Maintainer: @armbian
Documentation: Link

armbian-config --cmd DTO001

Device Tree Editor

Edit device tree

Device Tree Editor

The Device Tree Editor allows you to decompile, edit, and recompile device tree blobs (DTB) directly on your system. Device trees describe the hardware layout of your board to the Linux kernel. This tool provides a safe way to modify DTB files by decompiling them to human-readable DTS source, opening them in a text editor, validating the changes, and recompiling back to binary format.

Incorrect device tree changes can prevent your system from booting!

  • Modifying the device tree can cause hardware to stop functioning or the system to fail to boot entirely.
  • Always verify your changes carefully before applying them.
  • A backup is created automatically before any modification, and can be restored from the module menu.
  • Keep a rescue method available, such as a bootable SD card or serial console access, to recover the system if necessary.

Edit: footer header
Status: Preview
Architecture: aarch64 armhf
Maintainer: @igorpecovnik
Documentation: Link

armbian-config --cmd DTE001
  • Select and edit any DTB file from the device tree directory
  • Edit active DTB directly based on the fdtfile setting in /boot/armbianEnv.txt
  • Automatic backups before every modification with timestamped filenames
  • Restore from backup to revert to a previous device tree
  • Validation of edited DTS source before applying changes
  • View device tree info including model, compatible strings, and DTC version
  • Package: device-tree-compiler (installed automatically if missing)
  • Device tree directory: /boot/dtb/

Backups are stored in /boot/dtb/backup/ with the naming format:

Text Only
<original-name>.dtb.<YYYYMMDD_HHMMSS>.bak

Odroid Boards Config

Select Odroid board configuration

Edit: footer header
Status: Preview
Architecture: armhf

armbian-config --cmd ODR001

Boot Environment

Edit the boot environment

Boot Environment

Edit the boot environment allows you to modify critical boot settings stored in /boot/armbianEnv.txt. You can adjust options such as root filesystem location, kernel parameters, overlays, boot targets, or enable advanced features like early serial console. This is essential for fine-tuning hardware support, troubleshooting, or optimizing system startup behavior.

Edit: footer header
Status: Stable
Architecture: x86-64 aarch64 armhf riscv64
Maintainer: @armbian
Documentation: Link

armbian-config --cmd BOOT01

Desktop

Install, remove and configure desktop environments

Armbian desktop installation uses upstream meta-packages from Debian and Ubuntu repositories, making it distro-agnostic and independent of pre-built Armbian desktop packages.

Tiered installs

Every desktop ships at one of three sizes. You can install at any tier and switch between tiers later without uninstalling.

Tier Contents Approximate size
Minimal Desktop environment + display manager + base utilities. No browser, no office suite. ~500 MB
Mid Minimal plus a browser, text editor, calculator, image and PDF viewer, media player, archive manager and torrent client. ~1 GB
Full Mid plus LibreOffice, GIMP, Inkscape, Thunderbird and Audacity. ~2.5 GB

The browser shipped at mid and full tiers is chosen automatically: chromium on Debian, firefox-esr on Debian riscv64, and epiphany-browser on Ubuntu (Ubuntu’s chromium and firefox packages are snap-shim wrappers that don’t work without snapd, which Armbian doesn’t ship).

How it works

  • Installs the desktop meta-package (e.g. xfce4, gnome-session) plus the per-tier extras and any release-specific packages your distribution needs.
  • Tracks every package the install pulls in. The list is saved to /etc/armbian/desktop/<de>.packages, the chosen tier to /etc/armbian/desktop/<de>.tier. Uninstall and downgrade use these files so they only ever remove packages the desktop install added — packages you installed manually after the fact are never touched.
  • Applies Armbian branding: wallpapers, icons, login screen theme, and default user settings.
  • Configures the display manager (LightDM, GDM3 or SDDM) with auto-login enabled by default. You can disable auto-login from the desktop menu without removing the desktop.
  • Sets up Profile Sync Daemon (psd) to keep browser profiles in RAM, reducing flash media wear.
  • Removes a small set of unwanted extras pulled in by some meta-packages (e.g. Ubuntu’s apport crash reporter, snap-related stubs).

Switching tiers after install

You don’t need to reinstall to add or remove tier extras. The desktop menu offers “Change desktop to tier” entries for any tier other than the one currently installed. Behind the scenes:

  • Going up (minimal → mid → full) installs only the new packages introduced by the higher tier.
  • Going down (full → mid → minimal) removes only the packages the install added that aren’t in the lower tier. Your manually-installed packages are not touched.

Networking

Some desktops (notably GNOME) require NetworkManager. When installed, NetworkManager is configured to coexist with Armbian’s existing systemd-networkd: wired Ethernet stays managed by systemd-networkd, while NetworkManager handles WiFi and VPN connections. This avoids disrupting your existing network configuration.

Supported desktops

Desktop Best for Approximate RAM (minimal tier)
XFCE Single board computers, low-end hardware ~300 MB
GNOME Modern desktops, touchscreen devices ~800 MB
Cinnamon Users familiar with Windows layout ~500 MB
MATE Classic GNOME 2 fans, low-resource systems ~350 MB
KDE Plasma Power users, heavy customization ~600 MB
i3-wm Developers, keyboard-driven workflows ~150 MB
Xmonad Haskell tiling window manager ~120 MB
Enlightenment EFL-based, lightweight and stylish ~250 MB

Mid and full tiers add roughly 500 MB and 2 GB on top of these minimum figures, depending on which tier extras your release/architecture combination ships.

Desktop installation is resource-intensive

Installing a desktop environment will download and install a large number of packages. The full tier on a fresh Ubuntu image pulls in roughly 2.5 GB and may take a significant amount of time depending on your internet connection and device performance. A reboot is required after installation.

Running module_desktops remove reclaims the disk space; apt-get clean is run automatically as part of the remove path.

Switching desktops

Only one desktop environment should be installed at a time. Remove the current desktop before installing a different one to avoid package conflicts and mixed configurations.

Edit: footer header

Cinnamon

Install Cinnamon (minimal)

Cinnamon

Cinnamon is a Linux desktop environment that provides advanced innovative features and a traditional user experience. The desktop layout is similar to GNOME 2 with underlying technology forked from GNOME Shell. Cinnamon makes users feel at home with an easy-to-use and comfortable desktop experience.

Edit: footer header
Status: Stable

armbian-config --cmd CINM01

Cinnamon uses LightDM as its default display manager.

  • /usr/share/xsessions/cinnamon.desktop
  • /usr/share/xsessions/cinnamon2d.desktop

Autologin configuration is stored in:

  • /etc/lightdm/lightdm.conf.d/22-armbian-autologin.conf
Cinnamon mid:
armbian-config --cmd CINM05
Cinnamon full:
armbian-config --cmd CINM06
Uninstall Cinnamon:
armbian-config --cmd CINM02
Enable autologin (Cinnamon):
armbian-config --cmd CINM03
Disable autologin (Cinnamon):
armbian-config --cmd CINM04
Change Cinnamon to minimal:
armbian-config --cmd CINM07
Change Cinnamon to mid:
armbian-config --cmd CINM08
Change Cinnamon to full:
armbian-config --cmd CINM09

GNOME

Install GNOME (minimal)

GNOME

GNOME is a modern, user-friendly desktop environment for Linux, offering a clean interface, essential apps, and customization through extensions. It prioritizes simplicity, accessibility, and efficiency.

Edit: footer header
Status: Stable

armbian-config --cmd GNME01

GNOME uses GDM3 as its default display manager.

  • /usr/share/xsessions/gnome.desktop

Autologin configuration is stored in:

  • /etc/gdm3/custom.conf
GNOME mid:
armbian-config --cmd GNME05
GNOME full:
armbian-config --cmd GNME06
Uninstall GNOME:
armbian-config --cmd GNME02
Enable autologin (GNOME):
armbian-config --cmd GNME03
Disable autologin (GNOME):
armbian-config --cmd GNME04
Change GNOME to minimal:
armbian-config --cmd GNME07
Change GNOME to mid:
armbian-config --cmd GNME08
Change GNOME to full:
armbian-config --cmd GNME09

MATE

Install MATE (minimal)

MATE

MATE is a continuation of GNOME 2, providing a traditional desktop experience with a classic two-panel layout. It is lightweight, stable, and fully customizable — a good choice for users who prefer a familiar desktop without the overhead of modern compositing effects.

Edit: footer header
Status: Stable

armbian-config --cmd MATE01

MATE uses LightDM as its default display manager.

  • /usr/share/xsessions/mate.desktop

Autologin configuration is stored in:

  • /etc/lightdm/lightdm.conf.d/22-armbian-autologin.conf
MATE mid:
armbian-config --cmd MATE05
MATE full:
armbian-config --cmd MATE06
Uninstall MATE:
armbian-config --cmd MATE02
Enable autologin (MATE):
armbian-config --cmd MATE03
Disable autologin (MATE):
armbian-config --cmd MATE04
Change MATE to minimal:
armbian-config --cmd MATE07
Change MATE to mid:
armbian-config --cmd MATE08
Change MATE to full:
armbian-config --cmd MATE09

i3

Install i3 (minimal)

i3

i3 is a tiling window manager designed for power users and developers. It is keyboard-driven, highly configurable, and extremely lightweight — making it ideal for single board computers and headless-to-desktop conversions.

Keyboard shortcuts

i3 is controlled primarily via keyboard. The default modifier key is $mod (Super/Windows key). Press $mod+Enter to open a terminal, $mod+d to launch applications via rofi, and $mod+Shift+e to exit.

Edit: footer header
Status: Stable

armbian-config --cmd I3WM01

i3 uses LightDM as its default display manager.

  • /usr/share/xsessions/i3.desktop

Autologin configuration is stored in:

  • /etc/lightdm/lightdm.conf.d/22-armbian-autologin.conf
i3 mid:
armbian-config --cmd I3WM05
i3 full:
armbian-config --cmd I3WM06
Uninstall i3:
armbian-config --cmd I3WM02
Enable autologin (i3):
armbian-config --cmd I3WM03
Disable autologin (i3):
armbian-config --cmd I3WM04
Change i3 to minimal:
armbian-config --cmd I3WM07
Change i3 to mid:
armbian-config --cmd I3WM08
Change i3 to full:
armbian-config --cmd I3WM09

KDE Plasma

Install KDE Plasma (minimal)

KDE Plasma

KDE Plasma is a feature-rich desktop environment with extensive customization options. It provides a familiar taskbar and start menu layout with modern effects, widgets, and a powerful system settings application.

Edit: footer header
Status: Stable

armbian-config --cmd KDEP01

KDE Plasma uses SDDM as its default display manager.

  • /usr/share/xsessions/plasma.desktop

Autologin configuration is stored in:

  • /etc/sddm.conf.d/autologin.conf
KDE Plasma mid:
armbian-config --cmd KDEP05
KDE Plasma full:
armbian-config --cmd KDEP06
KDE Neon:
armbian-config --cmd KDEN01

KDE Neon uses SDDM as its default display manager.

  • /usr/share/wayland-sessions/plasma.desktop
  • /usr/share/xsessions/plasmax11.desktop

Autologin configuration is stored in:

  • /etc/sddm.conf.d/autologin.conf
Uninstall KDE Plasma:
armbian-config --cmd KDEP02
Uninstall KDE Neon:
armbian-config --cmd KDEN02
Enable autologin (KDE Plasma):
armbian-config --cmd KDEP03
Enable autologin (KDE Neon):
armbian-config --cmd KDEN03
Disable autologin (KDE Plasma):
armbian-config --cmd KDEP04
Disable autologin (KDE Neon):
armbian-config --cmd KDEN04
Change KDE Plasma to minimal:
armbian-config --cmd KDEP07
Change KDE Plasma to mid:
armbian-config --cmd KDEP08
Change KDE Plasma to full:
armbian-config --cmd KDEP09

XFCE

Install XFCE (minimal)

XFCE

Xfce is a lightweight, fast, and user-friendly desktop environment for Linux, offering a classic interface, essential apps, and customization. It prioritizes performance, simplicity, and efficiency, making it an excellent choice for devices with limited resources.

Edit: footer header
Status: Stable

armbian-config --cmd XFCE01

Xfce uses LightDM as its default display manager.

  • /usr/share/xsessions/xfce.desktop

Autologin configuration is stored in:

  • /etc/lightdm/lightdm.conf.d/22-armbian-autologin.conf
XFCE mid:
armbian-config --cmd XFCE05
XFCE full:
armbian-config --cmd XFCE06
Uninstall XFCE:
armbian-config --cmd XFCE02
Enable autologin (XFCE):
armbian-config --cmd XFCE03
Disable autologin (XFCE):
armbian-config --cmd XFCE04
Change XFCE to minimal:
armbian-config --cmd XFCE07
Change XFCE to mid:
armbian-config --cmd XFCE08
Change XFCE to full:
armbian-config --cmd XFCE09

Storage

Install to internal media, ZFS, NFS, read-only rootfs

Edit: footer header
Architecture: x86-64 aarch64 armhf riscv64
Maintainer: @armbian
Documentation: Link

Install

Copy the running Armbian system to another device

  • Clones your current live OS installation
  • Keeps your settings, configuration, installed packages, and user data
  • Essentially ā€œtransfer my existing system to internal/external storageā€

Use this option to transfer your current live Armbian system to another storage device (eMMC, SSD, USB, etc.). This copies your existing installation exactly as it is — including settings, installed packages, and user data.

Edit: footer header
Status: Preview
Architecture: x86-64 aarch64 armhf riscv64
Maintainer: @armbian
Documentation: Link

armbian-config --cmd STO001

Download and flash

Download a fresh, official Armbian OS image and write it to a device

Download and flash

What can this tool do?

  • Install Armbian onto internal eMMC, SSD, or other storage
  • Create bootable SD cards or USB drives for any supported board
  • Recover a system by re-flashing a clean image
  • Switch between different OS variants, kernel branches, or preinstalled applications
  • Accelerate development with fast, repeatable deployments for testing and automation

Edit: footer header
Status: Preview
Architecture: x86-64 arm64 armhf
Maintainer: @igorpecovnik

armbian-config --cmd FLASH1
Remove cached images:
armbian-config --cmd FLASH2

Read Only FS

Enable read only filesystem

Read-only filesystem is enabled using overlayroot, a utility that places a temporary writable layer over the system root filesystem. Changes made during runtime are redirected into RAM or an alternative writable storage, while the underlying system remains untouched. This ensures that after a reboot, the system returns to a clean original state. It’s ideal for kiosks, appliances, SD card-based systems, and scenarios where long-term filesystem durability and recovery are critical.

Edit: footer header
Status: Stable
Architecture: x86-64 aarch64 armhf riscv64
Maintainer: @armbian
Documentation: Link

armbian-config --cmd ROO001
Disable read only filesystem:
armbian-config --cmd ROO002

NFS

Enable Network filesystem (NFS) support

Edit: footer header
Status: Stable
Architecture: x86-64 aarch64 armhf riscv64
Maintainer: @armbian
Documentation: Link

armbian-config --cmd NETF01
Disable Network filesystem (NFS) support:
armbian-config --cmd NETF02
NFS server

Enable network filesystem (NFS) daemon

Edit: footer header
Status: Stable
Architecture: x86-64 aarch64 armhf riscv64
Maintainer: @armbian
Documentation: Link

armbian-config --cmd NETF04
Configure network filesystem (NFS) daemon:
armbian-config --cmd NETF05
Remove network filesystem (NFS) daemon:
armbian-config --cmd NETF06
Show network filesystem (NFS) daemon clients:
armbian-config --cmd NETF07
Find NFS servers

Find NFS servers in subnet and mount shares

Edit: footer header
Status: Stable
Architecture: x86-64 aarch64 armhf riscv64
Maintainer: @armbian
Documentation: Link

armbian-config --cmd NETF09
Show and manage NFS mounts:
armbian-config --cmd NETF10

ZFS

ZFS filesystem - enable support

ZFS

ZFS is an advanced, high-performance file system and volume manager designed for data integrity, scalability, and ease of use. It offers features like copy-on-write snapshots, native compression, data deduplication, automatic repair, and efficient storage pooling. Originally developed by Sun Microsystems, ZFS is ideal for handling large amounts of data reliably with minimal maintenance.

When enabling ZFS support, Armbian checks if the running kernel can support ZFS, installs matching kernel headers if necessary, and builds the ZFS DKMS (Dynamic Kernel Module Support) module automatically.

The ARC (Adaptive Replacement Cache) is ZFS’s intelligent caching system.

Recommended Settings:

  • ARC Min: 1/8 of RAM (minimum cache size)
  • ARC Max: 1/2 of RAM (maximum cache size)

For memory-constrained ARM devices (1-2 GB RAM):

  • Consider limiting ARC to 256-512 MB to leave memory for applications
  • ARC Max = 0 means “use all available RAM” (may not be ideal for small systems)

Impact:

  • Higher ARC = better read performance for frequently accessed data
  • Too high ARC can cause system swapping and degraded performance

Dirty data is modified data waiting to be written to disk.

Recommended Setting:

  • 4% of RAM (or 4% of ARC size, whichever is smaller)

Impact:

  • Higher values = better write performance, more data loss risk on power failure
  • Lower values = safer data, more frequent disk writes

TXG (Transaction Group) controls how often ZFS writes changes to disk.

Recommended Setting:

  • 5 seconds (default)

Range: 1-30 seconds

Impact:

  • Lower (1-3s): Better data safety, more disk writes, lower performance
  • Higher (10-30s): Better performance, more data loss risk on power failure

ZFS compression is transparent and can actually improve performance by reducing I/O.

Options:

  • lz4: Fast, good compression (recommended for most)
  • zstd: Better compression ratio, slightly slower CPU usage
  • gzip: Maximum compression, slowest
  • off: Disable compression

Note: Compression setting only affects new datasets. Existing datasets keep their compression setting.

Configuration is saved to /etc/modprobe.d/zfs.conf and requires reloading the ZFS module:

Bash
1
2
3
4
5
6
7
# Option 1: Reboot (simplest)
reboot

# Option 2: Reload module (requires exporting all ZFS pools)
zpool export -a
rmmod zfs
modprobe zfs

The tuning interface includes a “Reset to Defaults” option that:

  • Removes custom configuration from /etc/modprobe.d/zfs.conf
  • Resets all parameters to ZFS defaults
  • Requires module reload to take effect

ZFS pools can be imported when they are not currently mounted. This is useful when:

  • Moving pools between systems
  • Booting from a different system with ZFS pools present
  • Pools were exported and need to be re-imported

Import Options:

  • Scan: Lists all available pools that can be imported
  • Import with original mount points: Pool datasets mount at their configured locations
  • Import with alternate mount point: Pool datasets mount under a custom root directory

Force Import:

The import function uses -f flag to force import, which handles:

  • HostID mismatches between systems
  • Pool state issues
  • Active pools on other systems (use with caution)

Alternate Mount Point:

When importing with an alternate root (altroot):

  • Datasets mount under the specified path (e.g., /mnt/pool)
  • Original mount point configuration is preserved
  • Useful for temporary access or recovery scenarios

Note: Default behavior is to use the pool’s original mount points for maximum compatibility.

Edit: footer header
Status: Stable
Architecture: x86-64 aarch64 armhf riscv64
Maintainer: @armbian
Documentation: Link

armbian-config --cmd ZFS001
Key Features
Data Integrity
  • Copy-on-Write (CoW): Prevents data corruption by never overwriting live data.
  • Checksumming: Detects and corrects silent data corruption (bit rot).
Storage Management
  • Pooled Storage: Eliminates the need for traditional partitions; all storage is managed dynamically.
  • Snapshots & Clones: Creates instant backups without using extra storage.
Performance & Scalability
  • Efficient Compression & Deduplication: Reduces storage usage without performance loss.
  • Dynamic Striping & Caching: Distributes data across multiple disks for optimized read/write speeds.
Advanced Security
  • Native Encryption: Supports dataset-level encryption for secure data storage.
  • RAID-Z: A superior RAID alternative that prevents write-hole issues.
ZFS filesystem - remove support:
armbian-config --cmd ZFS002
Tune ZFS:
armbian-config --cmd ZFS003
Import ZFS Pool:
armbian-config --cmd ZFS004

Memory

Memory management - enable features

Memory

ZRAM is a Linux kernel module that creates compressed RAM-based block devices. It extends available memory by compressing pages and storing them in RAM, giving you more usable memory at the cost of some CPU overhead. On devices with limited RAM, ZRAM can significantly improve system responsiveness and prevent out-of-memory conditions.

When enabling memory management, Armbian installs the zram-config package if not already present, enables the armbian-zram-config service, and configures optimal swappiness settings for ZRAM-based swapping.

Key Features

  • Memory Compression: Transparent ZRAM-based swap that extends available memory without application changes
  • Parallel Compression: Multiple ZRAM devices utilize all CPU cores for maximum throughput
  • Algorithm Choice: Select optimal compression for your hardware (lzo, lz4, zstd, lzo-rle)
  • Adaptive Swapping: Swappiness tuned for ZRAM’s in-RAM characteristics
  • Memory Overcommitment: Support for swap sizes larger than physical RAM
  • Safe Defaults: Sensible defaults based on your system’s memory size

Perfect for ARM-based SBCs, small form-factor PCs, and servers where physical RAM is limited and disk-based swap would cause excessive I/O.

Edit: footer header
Status: Stable
Architecture: x86-64 aarch64 armhf riscv64
Maintainer: @armbian
Documentation: Link

armbian-config --cmd MEM001

Settings are automatically selected based on system memory:

System ZRAM Size Memory Limit Swappiness
< 4 GB RAM 50% 50% 100
4+ GB RAM 25% 25% 80
  • Max Devices: Set to CPU core count (capped at 8)
  • Algorithm: lzo (best for ARM), lz4 (fast on x86), zstd (best ratio, slower)
  • ZRAM Percentage (10-300%): Swap space relative to physical RAM. With 50% on a 2GB system you get 1GB of swap, but compression (2:1 to 3:1) effectively holds 2-3GB
  • Memory Limit (10-100%): Prevents ZRAM from consuming too much physical RAM. Should generally match ZRAM percentage
  • Swappiness (1-100): How aggressively the kernel swaps to ZRAM. Use 80-100 for ZRAM (unlike disk swap where 60 is default)
  • Max Devices (1-8): Number of ZRAM devices, usually one per CPU core for parallel compression
  • ZRAM not working: Check systemctl status armbian-zram-config and swapon --show
  • High CPU usage: Normal during memory pressure. Reduce ZRAM_PERCENTAGE or switch to lzo algorithm
  • Still out of memory: Increase ZRAM_PERCENTAGE (up to 200-300% for read-heavy workloads)
  • Algorithm not supported: Run cat /sys/block/zram0/comp_algorithm to see available options
  • Changes not applying: Run systemctl restart armbian-zram-config or reboot

Edit /etc/default/armbian-zram-config directly for advanced options:

Bash
1
2
3
4
5
6
7
8
# Backup first
cp /etc/default/armbian-zram-config /etc/default/armbian-zram-config.bak

# Edit configuration
nano /etc/default/armbian-zram-config

# Restart to apply
systemctl restart armbian-zram-config

ZRAM backing device - for systems with fast NVMe storage:

Bash
# Add to /etc/default/armbian-zram-config
ZRAM_BACKING_DEV=/dev/nvme0n1p4

Monitoring:

Bash
1
2
3
4
5
# Check compression ratio
echo "scale=2; $(cat /sys/block/zram0/orig_data_size) / $(cat /sys/block/zram0/compr_data_size)" | bc

# Monitor swap usage
watch -n 1 'swapon --show && free -h'
  • /etc/default/armbian-zram-config: Main ZRAM configuration
  • /etc/sysctl.d/99-armbian-memory.conf: Swappiness and VM parameters
  • zramctl: Show detailed ZRAM device statistics
  • swapon --show: Display active swap devices including ZRAM
Memory:
armbian-config --cmd MEM002
Tune Memory:
armbian-config --cmd MEM003

SSH daemon

Manage SSH daemon options, enable 2FA

Edit: footer header

Native

Disable root login

Native

Manage native SSH daemon allows you to configure SSH server settings such as login security, authentication methods, and connection restrictions. It also enables setting up Two-Factor Authentication (2FA) to further secure SSH access using time-based codes (TOTP), adding an extra layer of protection beyond passwords.

Edit: footer header
Status: Stable
Architecture: x86-64 aarch64 armhf riscv64
Maintainer: @armbian
Documentation: Link

armbian-config --cmd ACC001
Enable root login:
armbian-config --cmd ACC002
Disable password login:
armbian-config --cmd ACC003
Enable password login:
armbian-config --cmd ACC004
Disable Public key authentication login:
armbian-config --cmd ACC005
Enable Public key authentication login:
armbian-config --cmd ACC006
Disable OTP authentication:
armbian-config --cmd ACC007
Enable OTP authentication:
armbian-config --cmd ACC008
Generate new OTP authentication QR code:
armbian-config --cmd ACC009
Show OTP authentication QR code:
armbian-config --cmd ACC010
Disable last login banner:
armbian-config --cmd ACC011
Enable last login banner:
armbian-config --cmd ACC012

Containerised

Sandboxed & containerised SSH server

Containerised

Sandboxed & containerised SSH server allows ssh access without giving keys to the entire server. Giving ssh access via private key often means giving full access to the server. This container creates a limited and sandboxed environment that others can ssh into. The users only have access to the folders mapped and the processes running inside this container.

Edit: footer header
Status: Stable
Architecture: x86-64 arm64
Maintainer: @igorpecovnik
Documentation: Link
Installation: 🐳 Docker

armbian-config --cmd SSH001
  • ssh username@<your.IP> -p 2222
  • Install directory: /armbian/openssh-server
  • Configuration directory: /armbian/openssh-server/config
  • Shared storage directory: USER_DEFINED
Bash
docker logs -f openssh-server
Remove sandboxed SSH server:
armbian-config --cmd SSH002
Purge sandboxed SSH server with data folder:
armbian-config --cmd SSH003

Shell and MOTD

Change shell, adjust MOTD

Edit: footer header

Change shell

Change shell system wide to ZSH

Change shell

ZSH is a powerful and customizable shell designed to be an enhanced replacement for BASH. When combined with Oh My Zsh, which is integrated in armbian-zsh, it offers an extensive plugin system, beautiful themes, and productivity features like autosuggestions, syntax highlighting, and easier navigation.

Edit: footer header
Status: Stable
Architecture: x86-64 aarch64 armhf riscv64
Maintainer: @armbian
Documentation: Link

armbian-config --cmd SHELL1
Change shell system wide to BASH:
armbian-config --cmd SHELL2

Adjust MOTD

Adjust welcome screen (motd)

Adjust MOTD

Edit: footer header
Status: Stable
Architecture: x86-64 aarch64 armhf riscv64
Maintainer: @armbian
Documentation: Link

armbian-config --cmd MOTD01

OS Updates

OS updates and distribution upgrades

Edit: footer header
Status: Active

Firmware

Enable Armbian firmware upgrades

Firmware

Enable Armbian firmware upgrades manages whether the Armbian firmware (kernel + u-boot + firmware) packages are held or unheld in the package manager. By removing or setting the hold, it controls if firmware updates are applied automatically through regular apt update and apt upgrade processes. This allows users to either freeze the firmware version for stability or enable updates for improved hardware support.

Edit: footer header
Status: Stable
Architecture: x86-64 aarch64 armhf riscv64
Maintainer: @armbian
Documentation: Link

armbian-config --cmd UPD001
Disable Armbian firmware upgrades:
armbian-config --cmd UPD002

Rolling

Switch system to rolling packages repository

The daily rolling repository offers frequently updated packages directly from development branches. It provides access to the latest features, bug fixes, and hardware support improvements but may introduce instability or regressions. This channel is intended for testing, development, and users who need the newest updates at the cost of reduced stability.

Edit: footer header
Status: Stable
Architecture: x86-64 aarch64 armhf riscv64
Maintainer: @armbian
Documentation: Link

armbian-config --cmd ROLLIN

Stable

Switch system to stable packages repository

The stable repository provides thoroughly tested packages intended for production use. Updates from this channel prioritize stability, long-term reliability, and minimal risk, ensuring systems remain secure and operational without unexpected changes. Only critical bug fixes and essential improvements are introduced after extensive testing.

Edit: footer header
Status: Stable
Architecture: x86-64 aarch64 armhf riscv64
Maintainer: @armbian
Documentation: Link

armbian-config --cmd STABLE

Stable Distro Upgrade

Distribution upgrade to latest stable / LTS

Stable / LTS upgrades move your system to a newer release of Debian or Ubuntu, bringing updated system packages along with long-term security fixes and bug patches. This makes them the safest choice for reliable, everyday use.

Risks of Stable Upgrades

Distribution upgrades are experimental and not supported by Armbian. Use at your own risk.

Even LTS → LTS upgrades (e.g., Debian Bookworm → Trixie, Ubuntu Jammy → Noble) carry some risks:

  • Broken dependencies – some packages may fail to upgrade or be removed.
  • Configuration overrides – local changes may be replaced by defaults.
  • Downtime – failed upgrades may require console access, manual recovery, or a full reinstall.

Because Armbian integrates upstream Debian/Ubuntu with custom board support packages, upgrades may still trigger unexpected breakage on some devices.

Edit: footer header
Status: Stable

armbian-config --cmd STD001

Best Practices

  1. Back up your data (system and configuration).
  2. Test on a spare device or SD card before upgrading production systems.
  3. Read the official release notes of your target distribution:
    - Armbian FAQ: Can I upgrade my userspace flavor?
    - Debian upgrade notes
    - Ubuntu release upgrade guide
  4. Ensure you have console access (serial, HDMI + keyboard, SSH).
  5. Consider fresh installs if uptime and stability matter more than keeping the old environment.

Unstable Distro Upgrade

Distribution upgrade to rolling unstable

Non-LTS releases are intended for developers, testers, and enthusiasts who want the latest features — not for production systems.

Risks of Unstable Upgrades

Distribution upgrades are experimental and not supported by Armbian. Use at your own risk.

  • High chance of breakage – dependencies, bootloader, or kernel may fail.
  • Short lifecycle – requires frequent re-upgrades (every ~6–9 months).
  • Unfinished features – packages may be experimental or not fully supported.
  • Armbian compatibility – integration with board support packages is less tested.

Edit: footer header
Status: Stable

armbian-config --cmd UNS001

Docker images

Enable automating Docker container base images updating

Docker images

Watchtower is a lightweight tool that automatically monitors and updates running Docker containers whenever a new image version becomes available. It checks remote registries for updated images, pulls them, stops the old containers, and restarts them using the updated versions — all without manual intervention. Watchtower is fully configurable, allowing you to control update frequency, select specific containers, and manage notification settings.

Edit: footer header
Status: Stable
Architecture: x86-64 arm64
Maintainer: @igorpecovnik
Documentation: Link
Installation: 🐳 Docker

armbian-config --cmd WTC001
Disable automating Docker container base images updating:
armbian-config --cmd WTC002

Packages

Enable automatic package updates.

Packages

Unattended upgrades automatically install security updates and important package updates on your system without requiring manual intervention. It helps keep your system secure, stable, and up-to-date by silently applying patches. The behavior is fully configurable — you can control which packages are upgraded, set reboot options, and customize notifications or logging.

Edit: footer header
Status: Stable
Architecture: x86-64 aarch64 armhf riscv64
Maintainer: @armbian
Documentation: Link

armbian-config --cmd UNAT01
Configure automatic package updates:
armbian-config --cmd UNAT02
Disable automatic package updates:
armbian-config --cmd UNAT03