aboutsummaryrefslogtreecommitdiff
path: root/content/posts/2025-06-08-armbian-on-odroid-n2l.md
blob: 3443adf81920b68751cfdf8d63b90dfea758ee16 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
---
slug: armbian-on-odroid-n2l
title: "Armbian on Odroid N2L"
date: "2025-06-08T15:31:00-04:00"

pics:
  n2l:
    css: "image"
    tip: "Odroid N2L running Armbian."
    sources:
      - "/files/posts/armbian-on-odroid-n2l/n2l-1024.webp"
      - src: "/files/posts/armbian-on-odroid-n2l/n2l-1024.png"
        width: 1024
        height: 771
---

Last week I installed [Armbian][] on an [Odroid N2L][].  The
installation steps, installation results, and fixes for some problems
are documented below.

### Installation

1. Download and import the [signing key][armbian-key] (fingerprint
   `DF00FAF1C577104B50BF1D0093D6889F9F0E78D5`): \
   `wget -O- https://apt.armbian.com/armbian.key | gpg -- import -`
2. Download the current "Debian 12 (Bookworm)" image and the [detached
   signature][asc] from the "Minimal/IOT images" section of the [Armbian
   Odroid N2L page][armbian-n2l].
3. Verify the [signature][asc]: \
   `gpg --verify Armbian_community_25.8.0-trunk.8_Odroidn2l_bookworm_current_6.12.28_minimal.img.xz{.asc,}`
4. Uncompress the image: \
   `unxz Armbian_community_25.8.0-trunk.8_Odroidn2l_bookworm_current_6.12.28_minimal.img.xz`
5. Flash the uncompressed image to a [microSD][] card: \
   `sudo dd if=Armbian_community_25.8.0-trunk.8_Odroidn2l_bookworm_current_6.12.28_minimal.img of=/dev/sda bs=1M status=progress`
6. Mount the second partition of the [microSD][] card on `/mnt/tmp`: \
   `sudo mount /dev/sda2 /mnt/tmp`
7. Use the instructions and template from [Automatic first boot
   configuration][armbian-autoconfig] to populate
   `/mnt/tmp/root/.not_logged_in_yet`.  My populated autoconfig is
   [here][populated-autoconfig], but **it did not work as expected**;
   see below.
8. Unmount the second partition of the [microSD][] card.
9. Insert the [microSD][] card into the [Odroid N2L][] and power it on.

### Installation Results

Worked as expected:

- Successfully booted.
- Successfully connected to [WiFi][] on first boot.

Did not work as expected:

- Did not connect to WiFI on subsequent boots.
- Did not set the root password.  Instead the root password was `1234`.
- Did not set the user password.
- Did not set the user SSH key.

### Fixes

To correct these problems I connected a keyboard and monitor and did the
following:

1. Logged in as `root` with the password `1234`.
2. Changed the root password and the user password.
4. Edited `/etc/netplan/20-eth-fixed-mac.yaml` and fixed the
   errors.  The corrected version is below.
5. Ran `netplan apply` to apply the corrected network configuration.
6. Rebooted to confirm that networking was working as expected.

Here is the corrected `/etc/netplan/20-eth-fixed-mac.yaml`:

```yaml
network:
  version: 2
```
 

After fixing networking, I did the following:

1. Copied my SSH key.
2. Edited `/etc/ssh/sshd_config` to disable root logins and password
   logins.
3. Ran `apt-get update && apt-get upgrade`.
4. Installed `unattended-upgrades`.
5. Rebooted to pick up the latest updates.

<!--

### Conclusion

Many non-[Pi][] [SBCs][sbc] manufacturers stop providing software
shortly after the hardware is released.  Owners are stuck with
unsupported hardware running out-of-date software.

Case in point: The latest download on the [Odroid N2L wiki][] is Ubuntu
22.04.

I'm thrilled that [Armbian][]

original unused blather ...

[Armbian][] now supports the [Odroid N2L][] as a [community maintained
target][armbian-n2l].

Context: A couple of years ago Nadine bought me a pair of [Odroid
N2Ls][odroid n2l].  [Pi 4s][pi] were scarce because of supply chain
issues, and the [Odroid N2L][] seemed like a decent substitute.

The problem with non-[Pi][] [SBCs][sbc] is that the manufacturers
invariably stop providing software updates shortly after release, so you
are stuck with unsupported hardware running an out of date OS.

As of this writing, the [Odroid N2L wiki][] still has the same software
that it did when first got the hardware: Ubuntu 22.04.
-->

[{{< pe-figure "n2l" >}}][n2l-pic]

[armbian]: https://www.armbian.com/
  "Linux for ARM development boards"
[odroid n2l]: https://www.hardkernel.com/shop/odroid-n2l-with-4gbyte-ram/
  "Odroid N2L ARM A73 SBC"
[pi]: https://en.wikipedia.org/wiki/Raspberry_Pi
  "Raspberry Pi"
[sbc]: https://en.wikipedia.org/wiki/Single-board_computer
  "single-board computer (SBC)"
[armbian-n2l]: https://www.armbian.com/odroid-n2l/
  "Armbian for the Odroid N2L"
[odroid n2l wiki]: https://wiki.odroid.com/getting_started/os_installation_guide#tab__odroid-n2l
  "Odroid Wiki: Odroid N2L"
[n2l-pic]: /files/posts/armbian-on-odroid-n2l/n2l.jpg
  "Odroid N2L running Armbian"
[armbian-autoconfig]: https://docs.armbian.com/User-Guide_Autoconfig/
  "Armbian Documentation: Automatic first boot configuration"
[asc]: https://en.wikipedia.org/wiki/Pretty_Good_Privacy#Digital_signatures
  "Detached PGP signature"
[armbian-key]: https://apt.armbian.com/armbian.key
  "Armbian PGP signing key"
[populated-autoconfig]: /files/posts/armbian-on-odroid-n2l/odroid-n2l-root_not_logged_in_yet.txt
  "Populated automatic first boot configuration file"
[microsd]: https://en.wikipedia.org/wiki/SD_card#microSD
  "microSD memory card"
[wifi]: https://en.wikipedia.org/wiki/Wi-Fi
  "Wireless networking"