ODROID H2+ with H2 Net Card OS Testing
One may expect that since this is an x86 box, the OS support is easy. It is, with a major caveat, the 2.5GbE NICs which are at the heart of the machine are also not very well supported. So we have an OS testing section of this article.
Ubuntu 20.04 LTS
This did not work out of the box. We could get Ubuntu 20.04 LTS to install both the server and desktop variants. We needed to install a Realtek driver.
There are a number of different repositories that have drivers, but you can just install from a .deb package. Installing from repositories is a challenge when all of the NICs are not working in a platform. We installed from a .deb package and it worked fine. Note, you need to install dkms for this. You also need a way to get the .deb file to the Ubuntu machine which can be a challenge without networking but a sneakernet can work.
Once the driver is installed, everything works.
At some point, this step will become unnecessary as older Realtek NICs are supported out-of-box. Still, the official documentation may make it seem like the ODROID-H2+ will work out-of-the-box with 20.04 LTS. That is currently not the case.
Proxmox VE 6.3
Here again, even with Proxmox VE 6.3-1 we did not get the NICs to function. We used a Sabrent 10/100 USB 2.0 NIC to perform the installation.
We did the same process of installing the same .deb package for Ubuntu. If you get hung-up on this with Proxmox, you will want to run:
apt install pve-headers dkms
If you install only dkms to dpkg -i the .deb package, you will get an error message. Installing pve-headers is what you want to do and then the NICs will install.
Once we did that, we rebooted the new installation and this is what we saw:
One can see the 6x 2.5GbE NICs are ready to use. Our sense is that like Ubuntu, we will see native support in the future without this step. Still, this is a powerful platform from a capability perspective as there are not many other options for 6x 2.5GbE platforms in this segment of virtualization hosts.
FreeBSD with pfSense and OPNsense
This was a fairly similar story without installing a NIC first. pfSense 2.5 nightly up to 31 January 2021 would not install on the system:
You can use the same 10/100 USB NIC trick, and Realtek NIC support is in a new package one can install with pfSense 2.5 that will be released soon. This may be one we revisit in the future. FreeBSD RTL8125 support is frankly not great. Realtek has good support in Windows. Linux support is OK. FreeBSD is one where you wonder if anyone at Realtek has heard of the OS.
One can get this working, but it makes us slightly nervous to run a WAN connectivity solution on NICs that basically do not have vendor OS support. After having enough of these types of solutions break and being stuck without Internet access to get to fixes, this is going to be a “possible” but one we would urge our readers to think about.
If you did want to have perhaps two of the ports work with the unit, then the answer here is to put pfSense into a VM. This worked with Proxmox VE once we had the NICs working in the base OS. There are many reasons this is not ideal, but this is a bit more forgiving in terms of fixing potential issues. Snapshots before upgrades turn a failed upgrade into a few second restore process with no WAN connection required.
Windows 10 Pro
Realtek focuses on Windows support. Likewise, the entire ODROID-H2+ platform is a basic x86 box so it just works in Windows. The shipping driver is not the best, so you will want to grab the newest driver from Realtek here. There is a big difference in ease of use with a suboptimal NIC driver and effectively no NIC driver. This was much easier.
There is one BIOS setting in the southbridge that is either “Linux” or “Windows”, we used Windows.
Overall, Windows was the very low friction option.
CentOS / RHEL
We are not testing CentOS since is effectively a soon-to-be discontinued OS. You can see this in Red Hat Goes Full IBM and Says Farewell to CentOS.
Since IBM and Red Hat are discontinuing the project, we are not testing with CentOS support anymore.
Overall, the main system is extremely simple to set up. The real pain comes from the fact that although we have 6x 2.5GbE ports unless you are running Windows, you likely need a NIC driver. Installing a NIC driver is one of the most annoying installations you can do in a system. If you do not have a functioning NIC, you need to use a USB drive or another NIC (USB in this case) to get the driver onto the system.
Frankly, we wish Realtek would just open source their driver and let it get upstreamed/ maintained in Linux/ FreeBSD. It is not like Realtek is displacing Xilinx/ Solarflare or Mellanox NICs with Realtek for performance. The only reason frankly Realtek PCIe NICs are so popular is that they are often $1 per NIC, and sometimes a bit more than that, than Intel’s low-end single port NICs.
Other than Windows, the ODROID-H2+ effectively flunked our compatibility testing. With advanced knowledge, and installing the driver/ having a low-cost USB NIC handy, the picture changes. It is not hard to get the Realtek NICs working in Linux, it is just an extra step if you do not have another NIC in the system.
Windows 10 or Debian/ Ubuntu-based OSes worked reasonably well. We are still not going to give the green-light on FreeBSD OSes yet.
ODROID H2+ CPU Performance
The performance of the Intel Atom J4115 is certainly on the lower end of what we test today. It is limited to low clock speeds, a low TDP, and does not have features we see in larger CPUs such as newer instructions and L3 caches. As such, we just wanted to give some relative sense of performance here.
Overall, this is more of an Atom C2758 competitor than it is a higher-end core competitor. Even the Core i3-8145U performed significantly better in our testing.
This type of performance will seem offputting if you are expecting heavy compute workloads, but there are frankly many use cases where this is simply not needed. There are many 2-4 bay NAS units that run on a chip like this at low CPU utilization. Many desktops will be perhaps not the snappiest but will work with the CPU and GPU combination. Network appliances managing, for example, guest WiFi access often have low CPU utilization.
ODROID H2+ with H2 Net Card Network Performance
The ODROID-H2+ performed fairly well. The onboard dual 2.5GbE ports can be run with basic iperf3 traffic without much of an issue at ~2.34Gbps which is normal for 2.5GbE NICs. Even there, the load on the CPU is not too high. We tested what happens if we loaded up all of the NICs at the same time.
Depending on how we configured where the traffic was being generated, we saw each individual port on the system, including with the H2 Net Card could handle full line speed. When we spun up traffic on all NICs, with some logging, we saw some fairly substantial CPU utilization in the 40-75% range. As we got to more challenging mixes of traffic, the CPU utilization became a challenge and we started seeing some QoS challenges. That intuitively makes sense since we are running very high CPU utilization. I may send this off to our networking folks to see what they can find.
The key lesson learned here is that we know some readers will look at this and think “I can use this instead of a 2.5GbE switch.” That is not the case. This is not a switched architecture. Instead, this is six ultra-low-cost 2.5GbE NICs connected over PCIe Gen2 x1 links into a low-power x86 CPU.
Still, this is a very interesting solution to having some 2.5GbE connectivity. In the 4-5 NIC range, it seems reliable enough for using as load generation for some edge devices, but 6x NICs and high CPU utilization mean that we are unlikely able to use this for all six ports as traffic generators.
Next, we are going to have our power consumption figures and our final words.