Add support for Odroid M1

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.

I think so too, via Add ODROID-M1 support by agners · Pull Request #2387 · home-assistant/operating-system · GitHub
Not sure though when the next release is going to be?

/edit: likely soon, HA OS v10 will have it, currently at RC3.

Now at rc4, Im kind of torn between the N1 in future and VM now… Im running HA core in unraid docker for ages, but the latest upgrade broke a lot of stuff for me like shelly integration stop working completely, and some older plugins like full screen tables for my Android terminal… so was thinking to move to HAOS proper and reconfigure everything again …

Home Assistant OS 10.0

New board support: Hardkernel ODROID-M1 (only SD and EMMC boot)


I would love to hear if anyone has experience of running HAOS10 on the M1!

I’m looking to move my installation of HAOS from a ‘hobby VM’ on my unraid server to it’s own dedicated appliance and the M1 looks ideal! I nearly pulled the trigger on buying a board last night but have decided and wait to hear of other people’s experiences.

(Although my wife had begrudingly tolerated the introduction of HA in to our house, i know i’d be flailed if all the automations for lights, plugs/blinds etc suddenly stopped working :slight_smile: )

I’m not going back. I’m still running my previous setup, before the support was official, so I installed Debian 10 and went from there. I have drives arriving soon for a second M1 I’ve acquired (for other reasons), which will now become my new HASS using the supported install method :slight_smile:

That is to say - even if the supported method fails or doesn’t work. Just running HA “unsupported” is a treat in itself.

If you do get around to it - I hope the supported setup is easy, alternatively, remember that the Odroid comes with a network boot option that boots from the internet. So Debian 10 & 11 are readily available from there :slight_smile:

Also just realized NVMe boot is not supported by HAOS… That’s a bummer. I’m going to see if I can’t make it work and possibly experience what it is that means it’s unsupported…


Oh look. My disks arrived.

I tried a really straightforward approach where I copied out the .img file from HASS to a usb device, and used the onboard petitboot to dd’ the image to the NVMe. No dice.

1 Like

Migration from Raspberry Pi4 4GB to Odroid M1 8GB ist done. :grinning:
Home Assistant OS on eMMC, Data on NVME M.2 SSD (1TB WD Blue :grinning:)
The highest effort was to update the boot loader.

I had trouble to restore the Studio Code Server Addon. SCS was not restored as well all other Addon’s below in the list. Partially restore of SCS was also not successful. I had to install the Addon manually. For all other Addon’s I was able to restore it from the Backup.
But now everything works fine. Less ennergy cunsumption than the Pi4, only 4W.
Prozessor Temperatur 42°C.
Overall i would say everythink is working a little bit smoother.

1 Like

I did same but for both nvme and sd device. After restart (before nvme status led is on and after power led is on) quickly eject sd card. For some reason it’s start booting from nvme (like from mmc?. boot.scr written to work only with mmc/sd only, as I understand)
Video example:

I can see I didn’t post what I found out. It’s my impression that HassOS is built on a bootloader called “uboot”, which seemingly doesn’t support NVMe. But I’m not sure why they would use this loader, if the loader we’re using (petitboot?) already supports all the things.

Put another way. If we use the Debian XX provided by Odroid, we can install HA Supervised on that and be all good on NVMe. I’m hoping we eventually get a HassOS image that does that… :slight_smile:

I got a reply from the HA moderator:

HAOS uses a special boot flow to fallback to the previously installed OS in case of errors (A/B scheme). This requires our own boot loader U-Boot to be started directly.

Ubuntu does not have such recovery mechanism, and I assume they provide boot scripts which Petitboot starting from the on-board SPI ROM can read directly from the NVMe.

We’ve considered that option, but it would mean a departure from our boot scheme for that particular platform, which we rather prefer not to do…

Did you restore the backup during the onboarding of the new HA OS on the odroid or did you first install an empty HA OS and ran the backup/restore function from within the settings of HA installation?

I seem to struggle with the restore of the backup (but I come from an installation on debian OS with supervised install on odroid m1.

another question; how long did the restore take (and how big was the backup file in size?)

sorry to add to an ‘old’ thread.

I am also trying to use Odroid M1 to run Home Assistant supervised. I have a Samsung 512GB NVME in the M1 but I have no luck to boot up in Debian. I am getting conflicting information whether the lates Petiboot supports booting from NVME.

I also have trouble updating the Petitboot based on this and this articlea.

These are the steps I used (or intended to)

  1. etch the Debian bootable image to SSD

  2. boot up Petiboot

  3. exit to shell

  4. enter ‘ums /dev/nvme0n1’

  5. enter udhcpc

  6. enter netboot_default

  7. enter exit

  8. select Debian netbook installer from boot list

  9. install Home Assistant as per Installing Home Assistant Supervised on Debian 11

However, once I finished installing Debian 11 , M1 started with Petitboot and not Debian

Can anyone point me to the right direction as people on this forum has done this such as

I am only able to inatall Ubuntu 22.04 but not Debian 11, not sure why

Any help is appreciated

It’s my impression that you still cannot install HAOS on the NVMe.

I just updated my install from Debian 10 to 11 though, and it went ok. I installed Debian 11 on a different machine though (also an M1) as I’ve previously had issues. So I made it work there first, and then I migrated a backup.

My main issue was that after the supervised install had run, and HA was running - it did not have internet access at all. I figured out that Debian 11 apparently comes with nftables rather than iptables, but docker insists on the latter. Once I removed nftables, all worked out. I do not know why my Debian 10 did not have nftables - because Debian 10 apparently is the first OS where nftables is default. :man_shrugging:

I cannot even get M1 to boot on Debian (tried both v10 and v11, both would not boot), but Ubuntu 22.04 LTS can boot up from NVME alone. I cannot figure out what is the difference.

I also wonder whether the pre-installed hardware (using M1) is to config to boot using 16GB microSD card or emmc to boot and the NVME for data storage.

Can anyone show me how to change the data storage from the default boot (either microSD or emmc) to NVME. Sorry for such dumb question but I am not tech savvy enough to do that

As for moving the datastorage, there should be some option in the HASS settings page - possibly under Storage - for that.

As for booting, I’ve had best chances with the Hardkernel provided OS’s. When booting into petitboot, there is a commandline shell where you can type netboot_default. This adds the network boot options from Hardkernel, which in the original menu (exit from the shell) gives you Debian 10/11 and Ubuntu 20/22. These installs will be able to both install to and boot from the NVMe disk.

I have no experience with the MMC or MicroSD options.

EDIT: I just reread your other post and saw your process. I’d make it like this:

  • Install the NVMe disk into the M1
  • Remove other disks like MicroSD/SSD/MMC
  • Boot into petitboot
  • Enter the shell and run netboot_default
  • Exit the shell and pick the OS you want
  • Install the OS onto the disk (the only disk there is), wipe any existing volumes on the disk if prompted
    • Of course, if you have data you want to preserve - don’t do this
  • Reboot - it should open up petitboot again, but leave it be for ~10s - and then it should boot the OS
    • You can change the timeout in petitboot settings