It took me almost 2 years to get over my pinebook pro disappointment. Pinebook turned out to be half baked, prototype device witch turned out to be completely useless. Desktop experience was hard to justify even for testing. Headless experience was also bad because SSDs kept disappearing from the OS. (probably because of power delivery issues). It was really frustrating.
Odroid hc4 interesting hardware bad software experience
Specs of this board are rally interesting. If you buy a HC4-P kit you get a basic NAS with real sata slots powered by asmedia sata controller.
Key specs:
- amlogic S905x3, 4 cortex-a55 cores
- 1Gb ethernet
- ASmedia ASM1061, 2 sata ports
- 4GB of ram
Base cost without shipping and taxes 88 USD. They ship via DHL, shipping is fast but expensive.
It’s a nice package. personally I’d prefer 2 ethernet ports for some redundancy but I could live with single port if everything else was fine…
I decided to give arm another shot. What could go wrong?
“Open source” hell
At first I’ve purchased single hc4 for testing. My goal was test how usable it. My goal was to get gentoo running on it.
Bootloaders
Odroid hc4 comes with interesting bootloader, petitboot. It’s an embedded linux distribution designed to act as bootloader your real linux distribution (it launches you krenel via kexec). It comes from ibm power9 architecture and sounds like a major improvement over crud u-boot. Sadly odroid petitboot has some strange issues.
Petitboot on hc4 can parse grub.cfg and boot.scr scripts and generate grub-style menu entries. Sadly it’s not very good at it. It often doesn’t detect your menu entries and I couldn’t find a way to debug config detection process. I’ve later managed to craft some grub.cfg according to forum examples.
Second petitboot issue: It doesn’t detect your menuentry if you don’t have initramfs. This is just bizarre, If you menuentry doesn’t contain initrd command petitboot won’t show this menuentry. You cannot boot automatically without initrd.
Final nail in the coffin. Odroid petitboot cannot boot mainline kernels? For some reason petitboot cannot boot mainline armbian kernels. In the same Odroid kernel can kexec odroid kernel. But odroid kernel cannot kexec mainline kernel. I’ve never experienced it on x86.
I’ve asked manufacturer about it but they didn’t help me.
Armbian images for HC4 exist and work really well. At least linux works well. Because of these petitboot issues armbian boots using basic u-boot on HC4. It can be done by pressing spi boot bypass button during boot or wiping petitboot from spi flash.
After dozens of boots with button pressed I’ve just wiped the spi.
OS image and software support
Odroid provides official ubuntu and debian images for their board. Images are customized to work on their boards and run on customized kernel images.
Odroid maintains their own kernel sources… they are not very up to date.
I like to avoid manufacturer linux images. Who knows what messed up? Kenrel updates and patches? I don’t think so.
Thankfully odroid hc4 works just fine on mainline u-boot and mainline linux. After some try and error and studying of armbian build scripts I’ve managed to compile my own u-boot, kernel and glued it all together into working SD card images. Success.
It was a bumpy road and manufacturer documentation wasn’t useful at all.
Official u-boot compilation guide suggests using some ancient precompiled GCC from 2013 and 2014 to compile their own branch of u-boot from 2015. I tried but encountered a lot of compile errors… using precompiled tools and custom branch.
Odroid wiki also doesn’t tell you that you need amlogic blobs to create working SD cards. This one took me a while to figure out. I should have started with u-boot wiki instead.
I don’t understand why hardware manufacturers are so bad at it. Why maintain your custom outdated kernel branches instead of supporting and fixing mainline? (money and laziness)
Back to the main topic.
I have odroid hc4 and I can reliably build gentoo images for it. What’s next?
I’ve considered using this board as a low-end ceph node or minio. It’s so much cheaper than my n100dc-itx node that I could forgive it’s lack of RAM and single ethernet port.
I’ve purchased 3 more HC4s and decided to start by setting up test minio instance on it. I’ve discovered some hardware issues…
-
Odroid board cannot reboot with some bigger SD cards
If you wipe petitboot and boot using u-boot your system cannot cleanly reboot
This affects official images and unofficial ones. I’ve discovered that its doesn’t happend when I’m booting from some no-name 4GB SD card. All my 32GB cards fail to reboot.
Smells like a hardware issue.
This issue was reported on the forum in 2022 but manufacturer disregarded it as armbian specific issue. -
One of my 4 HC4s randomly crashes. Linux dies because IO with sd card stops. I’m still investigating it but it doesn’t look good.
-
One of my HC4 has silent data corruption on one of sata ports. This is quite bad. Sata port is just broken, checksuming filesystems fail on good drives connected to this port.
I’ll have to RMA this board. Odroid has a bad RMA policy, they only give you 16 weeks warranty. You have to pay for RMA shipment to korea and they prioritize repair over replacing boards. This doesn’t make me confident into their product. If you don’t mind higher costs, I’d suggest buying their products from local distributors if your local customer protection laws are good.
I’m really salty in this post because I really like the ides of this product. It just didn’t live up to my expectations. Software support is bad, opensource friendlyness of the manufacturer is bad. Hardware issues are bad.
I’m disappointed.
I’m considering buying some RK3588 based board with 32GB of ram for some dev work but other than that I’m giving up on non-enterprise, non-uefi arm for foreseeable future. User experience and hardware inflexibility of these devices it just horrible.