ODROID-H2+ with H2 Net Card Cheap 6x 2.5GbE

14

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.

ODROID H2 Plus With H2 Net Card 6x RTL8125 2.5GbE Add Driver In Ubuntu
ODROID H2 Plus With H2 Net Card 6x RTL8125 2.5GbE Add Driver In Ubuntu

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.

ODROID H2 Plus With H2 Net Card 6x RTL8125 2.5GbE In Ubuntu Install Driver From Deb After Dkms Added
ODROID H2 Plus With H2 Net Card 6x RTL8125 2.5GbE In Ubuntu Install Driver From Deb After Dkms Added

Once the driver is installed, everything works.

ODROID H2 Plus With H2 Net Card 6x RTL8125 2.5GbE In Ubuntu After Driver Installed
ODROID H2 Plus With H2 Net Card 6x RTL8125 2.5GbE In Ubuntu After Driver Installed

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.

ODROID H2 Plus With H2 Net Card 6x RTL8125 2.5GbE Proxmox No Network
ODROID H2 Plus With H2 Net Card 6x RTL8125 2.5GbE Proxmox No Network

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.

ODROID H2 Plus With H2 Net Card 6x RTL8125 2.5GbE Proxmox Deb Installed
ODROID H2 Plus With H2 Net Card 6x RTL8125 2.5GbE Proxmox Deb Installed

Once we did that, we rebooted the new installation and this is what we saw:

ODROID H2 Plus With H2 Net Card 6x RTL8125 2.5GbE Proxmox Post Installation Network
ODROID H2 Plus With H2 Net Card 6x RTL8125 2.5GbE Proxmox Post Installation Network

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:

ODROID H2 Plus Shipping GLK SF 1.22 X64 Pfsense Installer
ODROID H2 Plus Shipping GLK SF 1.22 X64 Pfsense Installer

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.

ODROID H2 Plus With H2 Net Card 6x RTL8125 2.5GbE In OPNsense
ODROID H2 Plus With H2 Net Card 6x RTL8125 2.5GbE In OPNsense

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.

Realtek 2.5GbE In Windows
Realtek 2.5GbE In Windows

There is one BIOS setting in the southbridge that is either “Linux” or “Windows”, we used Windows.

ODROID H2 Plus BIOS Linux Windows
ODROID H2 Plus BIOS Linux 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.

Compatibility Observations

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.

ODROID H2 Plus Different Config Options 2
ODROID H2 Plus Different Config Options 2

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.

ODROID H2 Plus To Atom C2758 And Core I3 8145U
ODROID H2 Plus To Atom C2758 And Core i3 8145U – Note Legacy Data Used

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.

ODROID H2 Plus With H2 Net Card Network Performance
ODROID H2 Plus With H2 Net Card Network Performance

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.

ODROID H2 Plus Block Diagram
ODROID H2 Plus Block Diagram

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.

14 COMMENTS

  1. I’ve been running Windows 10 on a loaded (e.g. 32GB RAM, 500GB NVMe) ODROID-H2+ for ~4 months. I agree with your assessment. It works great but I did have to update the network driver to get full network speed.

    My H2+ is a much better desktop than a Raspberry Pi 4, although it’s slightly more expensive. But, then I don’t have to put up with the compromises that a RP4 presents. The H2+ is also completely quiet and works great with my 2 4K 28″ monitors. I don’t game.

    I’m hoping that the next version of the H2+ will have at least PCIe 3 and maybe a mobile Ryzen chip. That would be something.

  2. You’re right on the Realtek 2.5G and freebsd. You can hack drivers in, but they suck and I’ve seen broken support. Don’t trust people that say it’s fine yet. Maybe in time, but don’t do hacked stuff and expect it’ll turn out well.

    Thanks for the honest review.

  3. It’s a pity that it’ll only take 14-20V power. Either 12V or 24V would make it more useful for me in a number of situations where the stock power supply isn’t a good option.

  4. I’m currently running pine rockpro64 w/ Intel I350-T4 pice using openwrt snapshot. It actually works really well!

    Different architecture than odroid h2 though. Should support about GB wan w/ sqm.

  5. I looked at this some time ago, but the lack of a proper enclosure let me down. If they offered a metal case for it then I would not hesitate to grab one.

  6. The network driver “tempest in a tea cup” is due to Realtek, not Hardkernel.

    IMHO, exactly the same thing happens when you have to find the right driver from an AMD or nVidia recent graphics card. It comes with the territory of using Linux or BSD with recent hardware :-)

    The RTL8125B(*) is a rather recent chipset and like it happened in the old “Biblical” times for 1 GbE (when Realtek initially had lack luster drivers) Realtek has been releasing multiple updates of its 2.5 GbE driver versions for the last year (r8125-9.003.02, r8125-9.003.03, r8125-9.003.04, r8125-9.003.05, r8125-9.004.01).

    (*) Many PCIe-based 3rd party cards have the RTL8125 instead of the RTL8125B (behavior is different).

    Hardkernel published a Wiki page for the H2 Net card which provides the link for a DKMS .deb package simplifying the driver installation on Debian or Ubuntu, see https://wiki.odroid.com/accessory/connectivity/h2_net_card.

    For installation on other distributions (and BSD), you rather go directly to the Realtek download page and run a sudo -H ./autorun.sh. This is not rocket science… but you usually have to re-install after a kernel update (because this is not a DKMS installation).

    For Windows, just download the most recent installer from the Realtek web site and run it.

    The Odroid forums is a smaller community than the Pi’s, but the quality of community support is quite higher: much less noise and more importantly you can actually post back and forth with the engineers who designed the thing! See https://forum.odroid.com/viewforum.php?f=167. There are multiple users who posted their recipes for installing the right driver on both Linux and BSD distributions.

    Tip: the Realtek drivers from stock distributions (Windows, Linux, BSD) “seem” to work but they do not resist closer inspection. Usually you want to run 1+ H iperf3 sessions as well as measure the CPU consumption e.g. using ‘sar’ from the ‘sysstat’ Debian/Ubuntu package. Last time I tried version r8125-9.004.01 or a version from an upstream kernel e.g. 5.10, the CPU consumption was out of whack. I have not tested these versions with ASPM disabled yet, see discussion below.

    I’m currently running 6 x H2+ in various capacities using Ubuntu Server. The driver I’m using is version 9.003.05 as advised in the H2 Net card Wiki page. Since then I also found out that if you want to connect a RTL8125B 2.5 GbE NIC to a 1 GbE subnet using Linux, you fix the 800 Mbps low speed by disabling ASPM (look for ASPM on the Odroid forums for the OP’s). With Linux, this can be done in 3 different manners:

    # On the fly:

    echo performance | sudo tee /sys/module/pcie_aspm/parameters/policy
    cat /sys/module/pcie_aspm/parameters/policy
    default [performance] powersave powersupersave

    # Adding the option to Grub:

    sudo vi /etc/default/grub
    …/…
    GRUB_CMDLINE_LINUX_DEFAULT=”pcie_aspm.policy=performance quiet splash”
    …/…

    sudo update-grub
    sudo reboot

    # Disabling ASPM in the BIOS:

    BIOS / Chipset / South cluster configuration / PCI Express configuration / PCI Express root port(1&2) / ASPM / Disable
    Note: do it for root port 1 and root port 2 which are the two root ports used for LAN.

    Once you’ve done that, the 1 GbE speed is about 940+ Mbps. For 2.5 GbE, I’m getting the expected 2.35 GbE.

    NOTE
    Beyond 2.5 GbE, I’m also using 10GbE (via SFP+ SolarFlare cards) or 11.2-14.4GbE (via Mellanox ConnectX-3 Pro) cards, the latter allowing to have the H2+’s on my FDR InfiniBand subnet, up to 45 GbE between modern PCs :-) The H2+ supports 10+ GbE despite the low-end Celeron J4115. The trick is to repurpose the M.2 slot as PCIe gen 2 x4 slot via a cable adapter. A full throttle 11.2-14.4GbE IPoIB session consumes from 20 to 30% of the CPU depending on direction. For more details, look for my posts on the Odroid Forums. Not a solution for large corporate departments, but totally sufficient for small businesses, SOHOs, start-ups and home.

    In terms of compute power, using the phoronix testing suite:
    – The Odroid N2+ (ARM-based SBC) leaves the Pi 4 in the dust,
    – The Odroid H2+ looks at the Odroid N2+ in its rear mirror far away.

    So, there is no “honest” comparison to make between the Pi 4, Odroid N2+ and Odroid H2+. These products have different purposes and markets with a few overlapping features.

    Conclusion
    Great for low-power NAS and backups with 1 GbE, 2.5 GbE or 10+ GbE support. Same for Home Theater PC, Plex server or network appliance, the latter again for small businesses, SOHOs or home usage only. You get pro/power consumer solutions for a fraction of the cost compared to the major brands. Finally, it’s DIY, support comes from… you and the Odroid forums good Samaritans not from a paid maintenance/CS license.

  7. Does anyone have a guide on updating the network drivers for pfsense? I tried installing 2.5 devel a few weeks ago but couldn’t figure out how to replace drivers. Default pfsense 2.5-devel drivers gave me around the usual realtek speedtest 25-40mbit performance on a gig wan line.

  8. @Scott Laird
    Mine will happily run on 12V power with a 2.5″ sata ssd and the top fan. I suspect the spec voltage is so it can buck down to 12V for 3.5″ drives. If you’re not using those, nothing on the board actually needs regulated 12V. I haven’t tested higher input voltages.

  9. @Elias @Scott Laird

    Yes, The H2+ is OK with only 12V as long as you do not try to power mechanical drives through the board 12V power rail. Power voltage for the H2/H2+ has being discussed extensively on the Odroid forums.

    I have a box with 3 x H2+ 12V powered using a unique SFX PSU, each has a 10TB SATA drive, the drives are directly powered from the PSU, not from the board. Same thing for the PCIe Network cards which are powered from the PSU. No problem.

  10. How many people actually have a NBase T (2.5/5 Gbps) switch? Realtek will let you bond RTL8111’s, but I haven’t seen any software for the 8125. I would have jumped on this except when you end up ordering all the “mandatory” accessories, it gets the price into a different territory. The Realtek snobs will hate this board but love the memory option. When the Lenovo M90n IoT price dropped into this devices range, it didn’t make sense anymore. Lenovo has a more out of the box approach where the Odroid for the money is basically a Heathkit from Korea. The Lenovo is milspec rated and made in Mexico and has a very wide operating temperature range. And if you have to have 2.5GbE support, there are plenty of USB-C to NBase T adapters out there.

  11. Seeing as I recently found out my J1900 powered OPNsense appliance throttles my 400mbit/s download to about 360mibit/s while fq_codel is in place as a firewall rule. I would really like to see the the single threaded, single download stream performance of this, along with the total throughput.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

This site uses Akismet to reduce spam. Learn how your comment data is processed.