Add support for Odroid M1

Oooh - that’s a good thought. I’m happy with the M1, it’s fast, sleek, has a blue casing, and supports NVMe drives … So I’ll keep using it - although probably on Debian 10. I’m not ready to adventure out in this again :smiley:

Hopefully the M1 will be fully supported sometime, by HASS, and then I can probably reinstall or upgrade at that time.

1 Like

@backtrack So if I understand correctly it could be worth a try to install debian 10, then HA, and after that upgrading to Debian 11 leaving alone the aforementioned file, then i might magically get rid of the dns problems? Let’s try! Could you elaborate on: ‘I performed the upgrade to debian 11 but modifying only the file /etc/apt/sources.list leaving alone /etc/apt/sources.list/ppa_linuxfactory_or_kr.list’
I’m quite the newbie to Linux, what commands to run the update and leaving alone the file? Thanks in advance!

@thisischris well that’s what I did after spending a big amount of time only because I remembered to have succeeded “by chance” on the first try not remembering exactly what I did. Anyway apart from the path followed from anyone else (GitHub - home-assistant/supervised-installer: Installer for a generic Linux system … etc) to install HA on debian 10 I followed this tutorial How to Upgrade from Debian 10 to Debian 11 to upgrade … but … in the folder /etc/apt you will find the file sources.list (which has to be modified as instructed in the tutorial) and also a directory called sources.list.d which contains HARDKERNEL specific depository (ppa_linuxfactory_or_kr.list) to upgrade the kernel and, possibly, some other code which in the end is probably the cause of the DNS resolution problem and possibly of even other things; well I did not modify this file. In this way the machine runs Debian 11 with the previous kernel, with no errors in the supervisor log. Good luck :slight_smile:

1 Like

Edit: tagging @lolo31370 and @hellow554 since they reported similar dns issues. Your dns problems are likely resolved by starting with a fresh Debian 10 install and (optionally) manually upgrading to 11 as described by backtrack above.

@backtrack thank you so much! I tried so many things over the past 3 months but couldnt find the solution to the dns problem. Never came to my mind to just downgrade to Debian 10. This fixed the dns problems and containers unable to connect to the outside world! Now for the last part, manually upgrading to Debian 11 using the aforementioned tutorial i’m stuck with 404 errors on the url’s in the sources.list (sorry for dutch, Fout means Error and mislukt = failed :slight_smile: )
Errors after sudo apt update:
“Fout:15 Index of /debian bullseye-updates/main arm64 Packages
404 Not Found [IP: 2600:3c01:1::607e:6379 80]
Fout:6 Index of /debian bullseye/main arm64 Packages
404 Not Found [IP: 2600:3c01:1::607e:6379 80]
Fout:11 Index of /debian-security bullseye-security/updates/main arm64 Packages
404 Not Found [IP: 2600:3c01:1::607e:6379 80]
249 kB opgehaald in 4s (59,5 kB/s)
Pakketlijsten worden ingelezen… Klaar
E: Ophalen van http://mirrors.linode.com/debian/dists/bullseye/main/binary-arm64/Packages is mislukt 404 Not Found [IP: 2600:3c01:1::607e:6379 80]
E: Ophalen van http://mirrors.linode.com/debian-security/dists/bullseye-security/updates/main/binary-arm64/Packages is mislukt 404 Not Found [IP: 2600:3c01:1::607e:6379 80]
E: Ophalen van http://mirrors.linode.com/debian/dists/bullseye-updates/main/binary-arm64/Packages is mislukt 404 Not Found [IP: 2600:3c01:1::607e:6379 80]
E: Ophalen van sommige indexbestanden is mislukt. Deze zijn of genegeerd, of er zijn oudere versies van gebruikt.”

My sources.list (copy pasted from the tutorial you provided):

Not sure why it runs into the 404 errors. You got any idea?

@thisischris well first of all I’m not very experienced as well to be able to understand why those IP are not reachable, but what I see that seems very unusual is that those seem to be IPv6 IP and not IPv4 (I may be wrong). But most important is that I think there has been a misunderstanding: I never told to downgrade from Debian 11 to Debian 10 I meant to start with a fresh Debian 10 install and then proceed as I described. Anyway the content of my /etc/apt/sources.list is as follows:

deb Index of /debian bullseye main
deb-src Index of /debian bullseye main

deb Index of /debian-security bullseye-security main
deb-src Index of /debian-security bullseye-security main

deb Index of /debian bullseye-updates main
deb-src Index of /debian bullseye-updates main

(I don’t know how to attach a screenshot and I see that the system translate the web addresses in blue so please to decipher just copy the link content and substitute it in the string)

I have nowhere mirrors.linode.com. Hopefully I will have been able to help you through.

So long

1 Like

A guide to a supervised install

This guide describes how I installed home assistant, on top of Debian 11 for the Odroid M1. I used steps described by others, and altered the sequence of steps to take, to get a supervised homeassistant install on the M1, that runs in ‘supported’ mode.

I hope this helps you. all the best!

Step by step installation

installing Debian 10

To get this to work you need to first install debian 10 first unfortunately, since the M1 default debian 11 installation is not stable enough yet in my experience; the default debian 11 having DNS issues that prevented proper operation of HomeAssistant.

configure eth0 in de boot options
exit petitboot and enter on the command line:

udhcpc
netboot_default
exit

You should now see preselectable installation options.
Select the Debian 10 option and check the log (press l)
Await the boot process of Debian 10 installer.
Install ubuntu server with ssh server. And continue with the following:

Add the user to the sudo group:

su -
usermod -aG sudo <your username>
exit

log out and log in again to make sure you have sudo privileges

sudo apt update && sudo apt upgrade

installing home assistant supervised

sudo -i
Step 1: Install the following dependencies with this command:
apt-get install \
apparmor \
jq \
wget \
curl \
udisks2 \
libglib2.0-bin \
network-manager \
dbus \
lsb-release \
systemd-journal-remote -y

Remove modem manager

sudo systemctl disable ModemManager
sudo apt-get purge modemmanager

Install AppArmor:

sudo apt update && sudo apt -y install apparmor

Add AppArmor and cgroup as Linux kernel boot parameter (else HA wil give a warning about it):
Add the following kernel parameters to the /etc/default/grub file:
systemd.unified_cgroup_hierarchy=false apparmor=1 security=apparmor
And commit the changes to the boot

sudo update-grub

Reboot and find out if AppArmor is enabled (returns Y if true):

cat /sys/module/apparmor/parameters/enabled
Step 2: Install Docker-CE with the following command:
sudo -i
curl -fsSL get.docker.com | sh
Step 2b: Upgrade to Debian 11

To completely update the system issue the following command as root or with the ‘sudo‘ utility:

sudo apt update
sudo apt upgrade
sudo apt full-upgrade
sudo apt --purge autoremove

Once updates finish, you need to reboot the system to apply the kernel and other updates:

sudo systemctl reboot

Now it is time to do is prepare the system to look at the new repositories for ‘Bullseye‘. Assuming a standard /etc/apt/sources.list file.

First, make sure to backup sources.list file and then do changes as shown.

sudo cp -v /etc/apt/sources.list /root/
sudo nano /etc/apt/sources.list

image

The next step now is to refresh the list of packages available for installation.

sudo apt update

Once the utilities have updated the list of packages, it is time to start the upgrade from Debian 10 to Debian 11 process.

sudo apt full-upgrade

As with the fresh Debian 11 install, it is suggested that the user let the system run the upgrade and periodically check in on it as this process will take some time. When it finishes, simply reboot the machine and enjoy Debian 11 in all of its wonder!.

sudo systemctl reboot

After reboot, make sure to verify the upgrade.

uname -r
lsb_release -a

Continue installing supervised home assistant

sudo -i

Step 3: Install the OS-Agent:

Download the latest Debian package from OS Agent GitHub release page at:

https://github.com/home-assistant/os-agent/releases/latest

wget <url>/os-agent_x.x.x_linux_aarch64.deb

(in my case:)

wget https://github.com/home-assistant/os-agent/releases/download/1.4.1/os-agent_1.4.1_linux_aarch64.deb

Next, install (or update) the downloaded Debian package using:

sudo dpkg -i os-agent_x.x.x_linux_aarch64.deb

Note: Replace the deb file in the above example with the file you have downloaded from the releases page.

You can test if the installation was successful by running:

gdbus introspect --system --dest io.hass.os --object-path /io/hass/os

This should not return an error. If you get an object introspection with interface etc. OS Agent is working as expected.

You might need to install libglib2.0-bin to get the gdbus command.

Step 4: Install the Home Assistant Supervised Debian Package:

Execute step 4 (install homeassistant-supervised.deb) of the HA github tutorial and select ODROID N2 and reboot after that (give it some time before the reboot).
After the reboot just wait for it and then access HA via the url. (Port 8123)

wget https://github.com/home-assistant/supervised-installer/releases/latest/download/homeassistant-supervised.deb
dpkg -i homeassistant-supervised.deb
9 Likes

Omg, huge work you did … :slight_smile: Thx.

There is a buildroot for it existing already: Releases · skiffos/SkiffOS · GitHub
Could you please check it out, and see if supporting it in HaOS is possible now?

If only the lack of hardware is stopping you, i am willing to hook you up with an Odroid M1 :slight_smile:

Not to give high hopes to anyone, but @agners, told me this is on the roadmap for HaOS 10. We could be expecting development builds for it in a couple of weeks.

thank you, I followed your instruction, worked but has one little catch :slight_smile: on the port 8123 nothing is listening

it looks like this

root@hass:~# docker ps
CONTAINER ID   IMAGE                                                       COMMAND   CREATED          STATUS         PORTS                                   NAMES
649f0bea1d7f   ghcr.io/home-assistant/aarch64-hassio-multicast:2022.02.0   "/init"   4 minutes ago    Up 4 minutes                                           hassio_multicast
5277450a281c   ghcr.io/home-assistant/aarch64-hassio-audio:2022.07.0       "/init"   4 minutes ago    Up 4 minutes                                           hassio_audio
e8b0f438c7ac   ghcr.io/home-assistant/aarch64-hassio-dns:2022.04.1         "/init"   4 minutes ago    Up 4 minutes                                           hassio_dns
05756808b3e0   ghcr.io/home-assistant/aarch64-hassio-cli:2022.11.0         "/init"   4 minutes ago    Up 4 minutes                                           hassio_cli
e1df8e682029   ghcr.io/home-assistant/aarch64-hassio-supervisor:latest     "/init"   8 minutes ago    Up 4 minutes                                           hassio_supervisor
dc52b4e9c913   ghcr.io/home-assistant/aarch64-hassio-observer:2021.10.0    "/init"   13 minutes ago   Up 4 minutes   0.0.0.0:4357->80/tcp, :::4357->80/tcp   hassio_observer

root@hass:~# ss -tpln
State               Recv-Q              Send-Q                           Local Address:Port                           Peer Address:Port             Process                                                 
LISTEN              0                   128                                    0.0.0.0:5355                                0.0.0.0:*                 users:(("systemd-resolve",pid=282,fd=12))              
LISTEN              0                   128                              127.0.0.53%lo:53                                  0.0.0.0:*                 users:(("systemd-resolve",pid=282,fd=17))              
LISTEN              0                   128                                    0.0.0.0:22                                  0.0.0.0:*                 users:(("sshd",pid=443,fd=3))                          
LISTEN              0                   128                                    0.0.0.0:4357                                0.0.0.0:*                 users:(("docker-proxy",pid=7730,fd=4))                 
LISTEN              0                   128                                       [::]:5355                                   [::]:*                 users:(("systemd-resolve",pid=282,fd=14))              
LISTEN              0                   128                                       [::]:22                                     [::]:*                 users:(("sshd",pid=443,fd=4))                          
LISTEN              0                   128                                       [::]:4357                                   [::]:*                 users:(("docker-proxy",pid=7736,fd=4))                 

from list of devices I tested two

  • generic-x86-64
  • odroid-n2

not sure about right one… expect some “odroid

generic-x86-64
odroid-c2
odroid-c4
odroid-n2
odroid-xu
qemuarm
qemuarm-64
qemux86
qemux86-64
raspberrypi
raspberrypi2
raspberrypi3
raspberrypi4
raspberrypi3-64
raspberrypi4-64
tinker
khadas-vim

did I miss something?

Just to add my 2c worth :slight_smile:
Im running Supervised install with Debian 11 and 6.2 kernel. Has been rock solid for a month now. Ive posted about it over on the Odroid forums. Coming from a Supervised based XU4 platform, the Nvme speed improvement is phenomenal!

https://forum.odroid.com/viewtopic.php?p=364859#p364859

Would be wonderfull if my Odroid M1 can have officially it’s own HASSIO build :slight_smile: let’s cross fingers @agners :wink:

My Home Assistant is currently still running on the Odroid C2. But I am thinking about upgrading to the M1.

I just checked, the M1 support was merged last week:

Dev builds are already available:
https://os-builds.home-assistant.io/

2 Likes

This is awesome!!!

Dose anyone know if you can rerun the HA supervised script to reconfigure the existing docker container for the M1?

I have Odroid C4 and consider moving to M1 model. Could anyone confirm whether M1 performance has increased with newer kernels (initial benchmarks with 4.19 kernels were not so great)?

Im running Supervised install with Debian 11 and 6.2.0 Kernel. Using iotop when running the most complex queries in HA the nvme was reading 33MB per sec. Super fast performance when using the nvme drive.

I have tried to use one of these images, my issue is when I do this:
dd if=<the image> of=/dev/nvme0n1 bs=1M
It writes, I can do an fdisk -l and see two partitions, but I can’t boot to the nvme. Is there some special procedure I need to follow to get petitboot to boot off these images?

This site has debian 11 running on Odroid M1. I use the release to run on Odroid N2, which is documented here. It includes an HA installation script that has been tested on a few platforms. I don’t know if the HA install script has been tried on the M1. There is a pretty active discord channel associated with the release and they are very helpful.

Hello, I had same problems with DNS as described here. I have Odroid M1 with Debian 11 and HA supervised installed. I can see with tcpdump that DNS requests and replies go through eth0 interface but on hassio interface (hassio_dns container is running on this iface) I see only DNS requests, but no response. So when I read here that when it works when you used Debian 10 and that upgrade to 11 - I tried to change iptables used by system from nft to legacy (nft are default in 11) and DNS works! Hope that helps. Petr

From what I have seen, Odroid M1 support is coming in the next OS release.