HassOS on ODroid HC1 (compatible with XU4)

I have been playing with an ODroid HC1 ($40 - $60) for the last 2 days running the beta HassOS distribution for ODroid XU4.

The HC1 is almost identical to the more well known XU4, except it comes with an extruded aluminum open top case and a SATA connector. It lacks EMMC, HDMI, WiFi and only has 1 external USB.

The HC1 has a Samsung Exynos octocore processor and 2GB of DDR3 RAM. It is subjectively quite a bit faster than the Pi 3B+ that I’ve been running. I hope that with a little more work it will be much faster. Benchmarks that I’ve run show it to be around 2X - 4X faster than a Raspberry Pi 3+ on most things as is. By hardware spec it should be more like 7-8x times faster than the Pi.

I installed the beta XU4 build. The basic install was super easy, no different than HassOS on the Pi, I downloaded the release build and then wrote it to an SD Card using etcher. It booted right up and downloaded and installed HassIO 0.86.2.

The standard mechanism of enabling SSH on port 22222 via CONFIG/authorized keys worked fine.

I mounted an old Crucial M4 480GB SSD in the SATA tray and the kernel recognized the drive and I was able to partition the drive with fdisk and created an ext4 filesystem using mkfs.ext4.

The next step is to figure out how to move some or all storage off the microsd card onto the SSD. I’m not sure if this is possible with the current build of HassOS. If I figure out how to do that I will follow up.

If anyone else is running HassOS on ODroid, I would be happy to hear experience or advice.

2 Likes

I was thinking of buying on of these, but your reported speed improvements are very disappointing. What do you plan to do to improve it?

I think the 2 things holding the HC1 back are:

  1. As long as it is booting from and using the SD Card for all storage, the I/O limitations will be similar to the Pi.
  2. I do not know how to optimize the use of the faster and slower CPU clusters.

It seems based on the current CPU benchmarks that maybe I am only running on the slower cores all the time. – I haven’t yet figured out how to tell if I’m hitting thermal throttling nor if I am hitting power limits. I’ve not seen more than ~12 watt draw on my HC1 which indicates that something is preventing it from running at full speed based on HardKernel’s statement that it could draw closer to 20W under heavy load.

The boot scripts I am using are configuing the sound module and the HDMI / GPU, it may be possible to disable those modules to gain a bit more memory and perhaps lower the power consumption which will reduce thermal throttling.

I’m a total newb with HassOS and ODroid, so I am learning how things work and hope to contribute to development once I climb the learning curve somewhat.

So far I am mostly making random guesses about what might be good or bad and then breaking things and then slowly fixing them again without much focused progress. The curse of being a hobbyist.

I posted here to hopefully attract the attention of people who actually know what they are doing and could help guide me :slight_smile:

Important update: I am currently running on an undersized power supply, so when the correct supply arrives in a few days I will re-run my tests with more rigor and post results.

I don’t know how accurate the Z-Wave outlet is but it looks like the HC1 draws around 16 watts peak on the AC side. Assuming 75% efficiency that would be around 12 watts to the HC1. This undersized supply is 10W nominal so seems likely that I may be hitting some power limits.

Thanks for trying out the Beta build. I’m keeping an eye on this thread to see how it pans out for you. I’ve been hesitant to pick up an XU4 because it doesn’t have wifi or bluetooth. Have you tried adding dongles for those on your HC1?

I don’t have a powered USB hub handy so I haven’t tried much on the USB front yet.

Everything I’ve tried has worked, but that’s only:

  • Z-Wave Dongle (ZWAVEME)
  • A handful of USB Thumb Drives
1 Like

I found a powered USB 3.0 hub (Sabrent) and tried it. The external USB on the HC1 is a USB-2.0 port. It works fine with this 4 port USB-3.0 hub (as USB 2 of course.)

I plugged in and checked dmesg for:

  • Anker SD / MicroSD Card Reader – Works fine
  • cp210x USB / UART – Detected
  • Gamesir G3v wireless dongle – Detected
  • A few more USB thumbdrives – all have worked
  • 2 different BT dongles both Broadcom BCM20702A0 – hcitool scan works
  • X10 RF Transceiver CM19A – Detected
  • ODAC USB Sound Card – Detected

I don’t have a USB WiFi adapter to try.d

lsusb only returns a list of IDs, not the PnP name:

# lsusb -v
Bus 005 Device 001: ID 1d6b:0002
Bus 003 Device 001: ID 1d6b:0002
Bus 001 Device 001: ID 1d6b:0002
Bus 001 Device 008: ID 058f:6387
Bus 006 Device 001: ID 1d6b:0003
Bus 001 Device 002: ID 05e3:0610
Bus 004 Device 001: ID 1d6b:0003
Bus 004 Device 002: ID 152d:0578
Bus 002 Device 001: ID 1d6b:0001
Bus 001 Device 011: ID 0a5c:21e8
Bus 006 Device 002: ID 0bda:8153
1 Like

Following with interest as looking for a more powerful solution than a Pi with SSD and this seems it could be an ideal candidate…

I am using a pre-release of HassOS now, built myself from github develop branch. With this I am able to use the SSD but there is some instability in that it frequently fails to correct mount the drive on a reboot.

Typical CPU usage is <2% and typical standby power draw is around 5W, so not really much different than the Pi – although I don’t have all the same services running on HC1 yet, so CPU and power use will likely increase as I move config over.

Once it has a successful boot it seems very stable, but it is not ready for prime time yet. It does run much faster than the Raspberry Pi 3B+ that I’m using for my “production” environment.

Is there any updates on this ? How well does Hassio run on the Odroid HC1. Im thinking of upgrading from a raspberry pi 3b.
Can hassio be run from the SSD?

I’ve been running HASSOS on my HC1 as a back-up. I built it myself using the latest XU4 dev branch from github. It has been pretty much rock solid. If you want to try it out, I’d recommend the 3.0 development build available here https://github.com/home-assistant/hassos/releases

Everything I’ve tried so far has worked (USB devices, hassos add-ons, etc.)

I don’t think you can boot from SSD, but it is possible to relocate the data partition to an SSD but leave the eMMC / SD as the boot drive. AFAIK, there is not any documentation for how to set up an SSD, but it is pretty straightforward if you understand Linux partitioning. HassOS will automatically mount a partition labeled ‘hassos-data’ during boot if there is one and will use that instead of the partition on the SD Card.

So you can partition an SSD, and label it hassos-data and then dd the hassos-data filesystem from the SD card to the SSD and HassOS will automatically mount and expand that filesystem on first boot.

While not strictly necessary, I think it is a good idea to use the HardKernel USB to TTL serial device to set up a console. That way you can see all the boot messages and get logged in if networking doesn’t work or if the device fails to boot because of SSD partition problems or whatever. Most USB UARTs out on the Internet are 5V or maybe 3.3V for use with Arduino or Raspberry Pi, so be extra careful that you either use a level shifter or buy a 1.5V UART such as the linked one from HardKernel.

Overall HassOS on HC1 / XU4 seems reliable enough to use as a daily driver, but it is definitely rough around the edges. I haven’t taken the plunge to move all my stuff from my Pi 3b+, but it has been stable enough that it is laziness more than fear stopping me.

Mmm! interesting I didn’t realise that HassOs would automatically mount the drive if its labeled. Have you had any problems with it not mounting the drive automatically on a reboot as I’ve read a few issues on github similarly related to this and they havent mounted everytime ?

I take it the old hassos-data entry on the sd card has to be deleted or renamed?
Have you tried the stable build of odroid ?

so I partition the ssd with ext4 then label it hassos-data, dd the data across and rename the old entry and it boots and writes to the ssd ? Nice !
so what if anything is written to the SD card ?

I had an old Corsair m4 SSD that I did have problems with mounting, but I think it was just an incompatibility between that drive and the SATA chip on the HC1. One of the github threads was me trying to debug that. Once I switched to a new super cheap Patriot SSD it’s been very reliable.

Regarding your sequence, yes that sounds right. I do use parted to manually rename the partition on the MicroSD to hassos-data-orig or something, but I am pretty sure it works even if you don’t rename the partiion.

I don’t think the HassOS 2.x line will automount the SSD, I think you have to use one of the 3.0 dev builds – there is a recent one available to download on the github releases page.

Update: answering your question about the SD card, I am not the best person to answer this but I believe that the SD card is read-only once you move the data partition.

Technically it is possible to write to the /mnt/boot partition but the system does not do that regularly. /tmp is in memory and everything else is read-only. I can’t remember offhand where /var goes but I think it is overlayed from various places. /var/lib/docker definitely ends up on the hassos-data partition and I think all the logs and such are also redirected.

This is interesting. I have just picked up an Odroid C1, but I also have an HC1. Would be nice to just end up with one machine. Subscribed to keep up to date with progress.

Just tried a generic cheap BT dongle on Odroid XU4 and it worked. Just plug and play

I finally converted to using the HC1. I took a “full snapshot” of my Raspberry Pi 3B+ and restored it on my HC1, moved the ZWave stick over and everything came up first time with zero changes needed to the configuration. I did not attempt to migrate the MariaDB instance that I had externally. I’m now running Maria as an add-on and it’s working fine. Slow but tolerable on a slow Patriot SSD.

1 Like

I finally took the plunge as well .

I noticed that HassOs 3.0 was now in stable and so decided to give it a go , I’m seriously impressed with how easy it was and how much better it performs.
To assist anyone who wants try it , I downloaded the latest build for Odroid HC1 on an SD , booted the card for the first time, powered off and put the SD in my laptop. I then used a usb to sata cable to copy the hassos-data partition to the SSD and renamed the partition on the SD card to hassos-data-old as @a3a described above , however I did all this using gparted on my laptop as I do prefer a GUI.

This time when it booted it mounted the SSD as the data partition. Previously I was using DietPi , mounting the drive and running Home assistant on the SSD that way, strangely the odroid is running 10°C cooler that on the DietPi build .

thanks for your advice on this @a3a.

:+1:

1 Like

I’ve been running the same installation since 5/2019 and have not had any problems with the mainline builds recently. With the latest rebranding and upgrades to the supervisor and base OS, I was a little worried, but everything upgraded and booted up smoothly the first try. I’m now running:

  • HA 0.105.3
  • Supervisor 200
  • HassOS 3.9

I like the HC1 form-factor, although I do wish they’d managed to cram 2 USB ports into the chassis.

yeah I agree with how many USB ports they have , I don’t have any plugged in right now but I am looking at some netatmo products that might require bluetooth and some other products that might require z wave. I’ll be out of luck if that’s the case. as you say though the form factor is perfect with the drive connecting directly rather than with a cable or adapter .
I’m running identical to you except HassOS 3.10 .

I have the HUSBZB-1 plugged into the USB slot and it has dual Zigbee and Zwave and the Ethernet hard-wired which is all I need for now. A USB hub works but then there are extra boxes laying around.