Skip to content

Instantly share code, notes, and snippets.

@DavesCodeMusings
Last active December 14, 2025 13:06
Show Gist options
  • Select an option

  • Save DavesCodeMusings/5ada90f8bd0ec0dbfed1cabdc2301104 to your computer and use it in GitHub Desktop.

Select an option

Save DavesCodeMusings/5ada90f8bd0ec0dbfed1cabdc2301104 to your computer and use it in GitHub Desktop.
Installing and tweaking Ambian Ubuntu for the Orange Pi Zero 3 for fun and profit!

Ubuntu Server on Orange Pi Zero 3

Even with the current tariff nonsnese, the Orange Pi Zero 3 is a cheap and fairly capable ARM single board computer (SBC). If you've mastered the Raspberry Pi and you want to branch out, Armbian Ubuntu on the Zero 3 is a good place to start.

Download and flash the Armbian Ubuntu binary image

  1. Visit the Armbian Orange Pi Zero 3 page
  2. Scroll down to Server images
  3. Download Ubuntu 24.04 (Noble), the current version at time of writing.
  4. Use Raspberry Pi Imager, Balena Etcher, or whatever to flash the binary image to microSD.

Attach a console to the Orange Pi

Ubuntu server enables serial console by default, so the three pin UART header on the Zero 3 is ideal, but a monitor and keyboard will work as well.

Boot the Orange Pi

  1. Apply power and watch the boot up messages fly by.
  2. Answer the setup questions for users, passwords, wifi, timezone, and locales.

Note: The wifi SSID you choose must have internet access or the connection will fail.

Update to the latest patches

  1. As root, run apt-get update
  2. Next, run apt-get upgrade
  3. Answer yes to continue.

Further Improvements

The following are not necessary to use your Armbian Ubuntu server, but may increase your enjoyment of it.

Extinguish the [expletive!] heartbeat LED

As installed, the red LED on the Zero 3 is configured as a heartbeat signal. Pulsing and flashing. Over and over. Doesn't a regularly pulsing red light pretty much just scream error? But it's not. It's a...heartbeat. Whatever. Change it to an activity indicator for the microSD and keep your sanity intact.

Here's how:

root@orangepizero3:~# cd /sys/class/leds
root@orangepizero3:/sys/class/leds# ls
green:power  red:status
root@orangepizero3:/sys/class/leds# cd red\:status
root@orangepizero3:/sys/class/leds/red:status# ls
brightness  device  invert  max_brightness  power  subsystem  trigger  uevent
root@orangepizero3:/sys/class/leds/red:status# echo "mmc0" >trigger
root@orangepizero3:/sys/class/leds/red:status# cat trigger
none usb-gadget usb-host kbd-scrolllock kbd-numlock kbd-capslock kbd-kanalock kbd-shiftlock kbd-altgrlock kbd-ctrllock kbd-altlock kbd-shiftllock kbd-shiftrlock kbd-ctrlllock kbd-ctrlrlock disk-activity disk-read disk-write mtd nand-disk heartbeat cpu cpu0 cpu1 cpu2 cpu3 activity default-on panic usbport [mmc0] mmc1 rfkill-any rfkill-none rfkill0 rfkill1 bluetooth-power hci0-power rfkill2 stmmac-0:01:link stmmac-0:01:1Gbps stmmac-0:01:100Mbps stmmac-0:01:10Mbps

Notice the square brackets surrounding mmc0 to indicate it is now the LED function.

Network segmentation

If you plan to aggressively firewall access to your Armbian Ubuntu server, you'll need to let the update hosts through.

List the Zero 3's package sources with the command: grep URIs /etc/apt/sources.list.d/* and start with those hosts. Add any mirrors that come up as you're updating.

For example:

  • github.armbian.com
  • apt.armbian.com
  • ports.ubuntu.com
  • armbian.chi.auroradev.org
  • armbian.lv.auroradev.org

The last two entries are mirror locations. Find the ones geographically close to you on https://docs.armbian.com/Mirrors/ and add them to your firewall rules.

Test by running apt-get update and apt-get upgrade. If you see anything hanging up, note the hostname and add it to your firewall rules.

Updating the WiFi credentials

Good old nmcli and nmtui will not help you here, because Ubuntu uses netplan and netplan thinks it's smarter than you and overwrites your changes at boot. To change the SSID and password, go to /etc/netplan and examine the files there. One of them will have your current SSID and password.

Edit the file using nano (because vi's not installed. Seriously? No vi? On an [expletive!] server? Really?

While editing the file, you can also add a line for bssid directly under the password. This will have the effect of pinning your Zero 3 to a particular wifi access point, because the board's wifi sucks at band steering.

Find your wifi access point's BSSID using the network manager command: nmcli dev wifi and note the MAC address looking thing in the second column.

Installing [expletive!] vi

It's a pretty familiar routine. Just run apt-get update followed by apt-get install vi to make vi available. This also serves as a good test of those firewall rules if you've segmented your nwtwork.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment