Some experiences with Odroid-N2+ on Debian Bullseye



Recommended Posts

I first used Kingston endurance SD card with Armbian Buster image. This failed due some incompability with Odroid N2 UHS implementation, but Sandisk extreme SD card worked with same image.

After successful boot runned nand-sata-install to ADATA SP 550NS38 SSD connected using VL817 SATA Adaptor (2109:0715).
Upgraded the Debian to Bullseye and installed Mesa 21.2.0 packages from experimental repositories, arm64 firefox-esr and armhf Chromium via multiarch to use widevine extracted from ChromeOS images (local web broadcasts some programs with widevine encryption). This was in the end of august. It mostly worked, but had 3 weird problems that I think to have solved now having some free time.


  1. The USB boot hanged up about half of times after kernel detected the SATA drive. Turns out that UAS is culprit, disabling UAS with usb-storage.quirks=2109:0715:u made it now boot every time without problems (modified /boot/boot.ini).
  2. About 2-3 minutes after boot the compositor froze (no matter which - tried Xorg compton, wayland Weston and Wayfire (self compiled). Turns out armbian has /etc/udev/rules.d/hdmi.rules which runs /usr/local/bin/hdmi-hotplug. For some reason the hdmi-hotplug script stalls on my Odroid installation and when systemd finally killed it, something went wrong and the compositors froze. Diverting the hdmi.rules fixed it.
  3. This was/is weirdest - when TV connected via HDMI was off and turned on, then sometimes the board would shutdown. Found from auth log "auth.log.1:Dec 25 19:04:59 piix systemd-logind[1641]: Power key pressed." Like WTF, i don't have any "power key" and why it gets invoked when TV is turned on. Set the *Key=ignore in /etc/systemd/logind.conf and it seems fine now, no idea what went wrong there. The kernel even don't have CEC enabled (CONFIG_CEC_MESON_AO and CONFIG_CEC_MESON_G12A_AO are not set for some reason in the armbian kernels).


A bit later I also saw 5.15.8-meson64 kernel OOPS "Unable to handle kernel execute from non-executable memory" at regmap_update_bits_base+0x74/0x98, meson_clk_cpu_dyndiv_set_rate+0xf4/0x118. As I hadn't seen this before, downgraded to 5.13.12-meson64. I plan to report the OOPS with full kernel dmesg output, when I'll have a bit more time (probably the would be right place?).


Currently it seems to work fine, with the 5.13.12-meson64 kernel and mesa/panfrost 21.2.1-2 (from Weston is used as Wayland compositor. It is important to note that I have 1080p TV, and all video decoding is done on CPU without using the Amlogic VPU acceleration, as the VPU driver is currently both broken in the kernel and unsupported in unpatched userspace. I expected this when choosing the board. Fortunately the 4xA73@2.4GHz is fast enough for decoding most 1080p videos and panfrost is fine for doing the video output after decoding. AFAIK playing 4K videos is currently not possible on Odroid N2 with mainline kernel and the vendors proprietary VPU decoder isn't supported by any software in open source distributions like Debian. Interesting is that Firefox seems to handle the video decoding pathway better for Youtube in this configuration,
while Chromium occasionally stutters on some Youtube videos, these seem to be fine with Firefox. Luckily this seems to not affect the site where I needed widevine (that works only with Chromium in practice). In september widevine upgraded to version needing patched libc. I got patched armhf libc6 package from repository.


The ALSA configuration is weird, amixer scontrols | wc gives 50 controls, and if misconfigured, then the thing doesn't give any audio output. I found the following script from somewhere that "fixes" it into working state:


amixer sset 'FRDDR_A SINK 1 SEL' 'OUT 1'
amixer sset 'FRDDR_A SRC 1 EN' 'on'
amixer sset 'TDMOUT_B SRC SEL' 'IN 0'
amixer sset 'TOHDMITX I2S SRC' 'I2S B'
amixer sset 'TOHDMITX' 'on'
amixer sset 'FRDDR_B SINK 1 SEL' 'OUT 2'
amixer sset 'FRDDR_B SRC 1 EN' 'on'
amixer sset 'TDMOUT_C SRC SEL' 'IN 1'
amixer sset 'TOACODEC SRC' 'I2S C'
amixer sset 'TOACODEC OUT EN' 'on'
amixer sset 'TOACODEC Lane Select' '0'
amixer sset 'ACODEC' '255'
amixer sset 'FRDDR_C SINK 1 SEL' 'OUT 3'
amixer sset 'FRDDR_C SRC 1 EN' 'on'
amixer sset 'SPDIFOUT SRC SEL' 'IN 2'


After that ALSA pcm "hw:0,1" output works. I configured dmixed and removed pulseaudio, as it seemed to complicate things with no benefit when mpc and browser run as different users.


Armbian is great (couldn't have the board working so well without armbian) and merry holidays for you :)

Hoping this helps others having Odroid N2(+) board.

Edited by qwr
Link to post
Share on other sites

Donate and support the project!

I've recently flashed new Odroid N2+ with dietpi and armbian, I'm going to build kubernetes training cluster with some personal home services like syncthing, myjdownloader, pyload, NFS etc. The first is nice distro but it seems to hang out on intensive file operations (maybe related with Sandisk Extreme Pro A2 card - I was not aware that A2 might be not supported well) in all of about 5 tests of trying to install texlive-full in ubuntu docker container it just hangs and board is restarted by watchdog.
Generally I'm happy with armbian debian and it's not crashing/hanging at all.

I don't remember if armbian had issues with default kernel but I've installed the edge and it's completely stable. Mostly because I've read that at 5.13 there were some improvements for odroid n2+.

Please try the edge kernel:

ostanislaw@odroid1:~$ uname -a
Linux odroid1 5.15.5-meson64 #trunk.70 SMP PREEMPT Thu Nov 25 14:05:30 UTC 2021 aarch64 GNU/Linux
ostanislaw@odroid1:~$ lsb_release -a
No LSB modules are available.
Distributor ID:	Debian
Description:	Debian GNU/Linux 11 (bullseye)
Release:	11
Codename:	bullseye
ostanislaw@odroid1:~$ sudo apt list --installed *meson64*
[sudo] password for ostanislaw: 
Listing... Done
linux-dtb-current-meson64/bullseye,now 21.08.6 arm64 [installed]
linux-dtb-edge-meson64/bullseye,now 21.11.0-trunk.70 arm64 [installed]
linux-image-current-meson64/bullseye,now 21.08.6 arm64 [installed]
linux-image-edge-meson64/bullseye,now 21.11.0-trunk.70 arm64 [installed]

Today I tried also ubuntu hirsuite headless but I think it hanged once and had 100% issue with reboots, needed to power cycle the board.
After I've removed current packages keeping only edge, and updated u-boot to edge it was not booting anymore (don't know which of them caused issue), nothing displayed at hdmi.
Reflashed again to bullseye but I'll keep current line of kernel dtb etc to see if they are reliable. Reboot issue is rather rarely reproducing, probably happened only once before full upgrade.

Link to post
Share on other sites

4 hours ago, ostanislaw said:

Reboot issue

... is here for some time and it will probably stay since we already lost insane amount of expensive private time fighting this problem.

5 hours ago, ostanislaw said:

I don't remember if armbian had issues with default kernel


If you mean their stock 4.9.y kernel? Well, it has its pros but I would not run such complicated things with it. Like Kubernetes cluster. That kernel is good for desktop and gaming, for home users ... 


5 hours ago, ostanislaw said:

After I've removed current packages keeping only edge, and updated u-boot to edge it was not booting anymore (don't know which of them caused issue), nothing displayed at hdmi.

Hard to say for this specific case, but there are plans to improve upgrade process on higher level. Just low interest from community is preventing this to proceed

4 hours ago, ostanislaw said:

Reflashed again to bullseye


Won't make any difference since hardware interface (kernel + bootloader) defines troubles with reboot. We provide the same binary kernel for all those variants (Debian X, Ubuntu Y), including 3rd party distros like Dietpi. 

Some background info:

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.