ODROID M1 Review and Benchmarks

ODROID M1
ODROID M1

Today I’m very excited to review the ODROID M1 board. I bought this board for a couple of reasons. The first was that it is one of the top rated (and the top rated) boards on my Pi Benchmarks storage benchmarking website.

The second reason was a recommendation from you guys on one of my articles to check out and review the board! This will be my very first ODROID board. Definitely let me know if there’s more boards I need to check out that I haven’t covered as I’m actively investigating alternative SBCs to the Raspberry Pi due to the ongoing shortage.

Let’s begin!

Hardware Used

ODROID M1
ODROID M1 4GB

This is the 4 GB version of the ODROID M1. Includes a full size (2280) M.2 slot (PCIe 3.0 2 lanes), a Neural Processing Unit (NPU) and contains a RK3568B2 SOC. There is a slot for eMMC cards on the board as well and these perform very well.

Links: Amazon.com*, AliExpress.com*

ODROID M1
ODROID M1 8GB

This is the 8 GB version of the ODROID M1. Includes a full size (2280) M.2 slot (PCIe 3.0 2 lanes), a Neural Processing Unit (NPU) and contains a RK3568B2 SOC. There is a slot for eMMC cards on the board as well and these perform very well.

Links: Amazon.com*, AliExpress.com*

12V 2A Power Adapter
12V 2A Power Adapter

You will need a 12V 2A power adapter for the ODROID M1

Links: Amazon.com*

CR2032 Batteries
CR2032 Batteries

The ODROID takes a CR2032 LiCB battery for the backup / system clock battery slot (not included with board)

Links: Amazon.com*

Getting ODROID Images

One aspect of all these different SBCs I’ve been paying special attention to is the quality of the official images and how old the kernels in them are. Today will be no exception.

The official ODROID images are available here. For the M1 board it looked like this at time of writing:

ODROID M1 Official Images
ODROID M1 Official Images

Here we see Gnome Desktop, Gnome Desktop with NPU, ROS2-foxy and Server. These are all Ubuntu images but are meant for different setups. The “Server” one is meant for headless setups and has a minimal installation. You may also choose Android 11.

In a perfect world I would recommend the Gnome Desktop with NPU. What is a NPU you may say? It is a “Neural Processing Unit” and the M1 board does have one. Here’s what ODROID says about the onboard NPU:

Since Machine Learning has been a trend in this industry, there is a neural network processing unit (NPU) which can deliver up to 0.8 TOPS on the M1 single board computer. We could run various TensorFlow Lite and ONNX models on Ubuntu Linux OS.

https://www.hardkernel.com/shop/odroid-m1-with-8gbyte-ram/

Unfortunately this image would not boot for me. It would just immediately cut to black when I chose to boot “Ubuntu 20.04”. Therefore I do not recommend the NPU image. This will presumably be fixed at some point but for now avoid the NPU image.

I then tried the regular desktop image without the NPU. This image worked. However it cannot upgrade to Ubuntu 22.04.1 successfully and will give crazy package errors (and ones that won’t be easily fixed by sudo apt install –fix-broken or dpkg –configure -a). Therefore I do not recommend the desktop image either even if you want a desktop.

I recommend you use the server image and upgrade it to 22.04.1 and then install the desktop with:

sudo apt install ubuntu-desktop

Only install the desktop after you’ve fully upgraded releases. That way you end up with both 22.04 and a desktop environment! Keep in mind that the NPU and desktop both can be enabled later. You will have a much easier time if you start with the “Server” image and upgrade it to 22.04.1 first and then install the desktop and configure the NPU.

Alternative Images

BEST IMAGE: I have an alternative Ubuntu 22.04.1 image available here.

ODROID has a list of alternative images available here. These include

Armbian Distribution

There was not a Armbian image available at time of writing but people are working on it. You can build the earlier versions yourself already but they have some issues that are being ironed out.

Imaging

Imaging these is a little different than many other boards. You actually have several options. You can plug the ODROID M1 in via USB cable directly to a PC. You can directly image the SSD before mounting it in the ODROID (with a NVMe to USB enclosure like my ASUS ROG Strix M.2 NVMe enclosure*).

The way I did it for this article was to put the image onto a USB drive and boot the ODROID and image it from the shell. For this review I’ll be using my 1 TB Samsung 960 EVO M.2 NVMe drive. This is the exact same drive that I used in my Compute Module 4 PCIE 1x NVMe testing article which should make for a good comparison.

First you need to extract the image from the xz format so we get the raw image which ends with .img. If you are in Linux you can do this with:

xz -d ubuntu-20.04-server-odroidm1-20220531.img.xz

This gave me ubuntu-20.04-server-odroidm1-20220531.img. This is the file you want to copy to your USB drive. The server image is only about 1GB but the desktop images are much larger so keep that in mind for the size of your USB drive.

Installing the M.2 is completely straightfoward. You simply remove one screw, mount the drive and then use the screw you unscrewed to mount it to the board. We are going to power up the M1 with the USB drive plugged in.

First Startup / Final Imaging

Connect the M1 to a display for this part as we are going to go into the shell to image the M.2 drive. When you connect the power you will see this menu:

Petitboot Menu
Petitboot Menu

This is called the Petitloader bootloader. We are going to choose the very last option on the menu to enter the shell. Now we are going to image our SSD with the following command:

dd if=/usr/var/petitboot/mnt/dev/sda1/ubuntu-20.04-server-odroidm1-20220531.img of=/dev/nvme0n1 bs=4M
sync

If you are having any trouble finding the USB drive (or another drive you are using to hold the image) use the command:

df

to get a full listing of all attached drives and paths to them. You should find that it’s pointing to /usr/var/petitboot/mnt/dev/sda1 as the USB drive mount path (mine was and I definitely used a regular USB flash drive).

Now type “exit” to go back to the main menu. Choose the “Rescan Devices” option and it should find your NVMe boot partition. Select “Ubuntu 20.04” and press enter and with any luck you should see the Ubuntu logo!

First Login / Updates

The credentials to sign in to the image are:

Username: odroid
Password: odroid

There is also a root user that also has the password of odroid.

The first thing I recommend doing when signing in is updates:

sudo apt update && sudo apt upgrade -y
sudo apt install ubuntu-release-upgrader-core pciutils -y
sudo reboot

Now to upgrade releases open a terminal and use:

sudo do-release-upgrade

Provided you are using the “Server” image you should be able to successfully upgrade to 22.04.1!

Performance Testing / Benchmarking

ODROID With Friends
ODROID With Friends (from several recent reviews/benchmarks/testing and some remaining GPU mining going on in the background before the end of GPU mining)

After a couple of hours fighting with reimaging and getting a successful upgrade to 22.02.1 I was finally ready to benchmark the device!

The way to run the Pi Benchmarks storage benchmark is the following command:

sudo curl https://raw.githubusercontent.com/TheRemote/PiBenchmarks/master/Storage.sh | sudo bash

The result was a score of: 15,978. The full benchmark is available here: Pi Benchmarks – Benchmark #62071

Now this is a fantastic score (compared to any Pi 4 score and most other SBC scores) but it is disappointing. Why? Allow me to explain.

I have previously done NVMe testing using a PCIe 1x adapter on the Raspberry Pi Compute Module 4 (CM4). Using that setup (which is not nearly as nice as a PCIe 3.0 2-lane dedicated M.2 slot built directly into the board) I was able to achieve a score of 19,957. This is with the exact same 1 TB drive (literally the same module).

Something is bottlenecking it here. It could be firmware related, a bug, something with the kernel (which is why I updated to the latest 22.04.1 version to try to prevent something like this from happening) or many other possibilities.

Still not convinced it should be faster? I recently wrote an article detailing various Compute Module 4 boards and their capabilities. One of those boards is the Waveshare $38 Compute Module 4 board and it scored 15,925. Again, with the exact same drive. It beat the $38 Waveshare CM4 IO board* but only by a hair.

The Compute Module 4 setup remains the undisputed champion of performance in the SBC world for now.

Pros / Cons

Pros

  • Onboard NVMe slot works as advertised
  • Has Petitboot boot loader simplifying many boot operations and adding capabilities such as network booting
  • Powerful CPU and GPU capable of excellent desktop performance

Cons

  • Not overclockable

Conclusion

It should be performing faster than it is. I’m not sure what is holding it back. There’s likely improvements that can and will be made in software and firmware to improve this over time. I got this board pretty early in the lifecycle so maybe I didn’t do ODROID any favors by buying a board that hasn’t been out for years like some of their other popular boards. Nevertheless this was the experience and I’m honestly happy with the result and will keep using the board.

I would really like to see ODROID put a current Ubuntu 22.04.1 image on the “Downloads” page. I’m sure this is only a matter of time but I did not have a clean upgrade experience my first time and spent a couple of hours fighting with this. I strongly recommend following my recommended route of using the “Server” image and adding the desktop and other capabilities later.

I think the ODROID M1 is a good board for experienced SBC users given the current price of Pis. I would not recommend it for first timers because it’s not quite as polished of an experience as an Orange Pi or a Raspberry Pi yet. If you are generally comfortable with Linux and troubleshooting you will be just fine. For experienced users the power and performance you get with this board for the price is excellent.

I expect the M1 experience will improve over time and that many of the issues I encountered with the images in this article will likely disappear as soon as ODROID posts an updated image on their site. The M1 is not that old of a board compared to a lot of other boards in ODROID’s lineup. I definitely intend to try some of the other ones that are more established and expect I will not have as much trouble.

Using NVMe on the Pi 4 is kind of difficult and clunky without powered USB hubs and enclosures especially with higher capacities. Given that the ODROID M1 is literally cheaper than a 4 GB Pi 4 on Amazon there’s no question to me that it’s smarter to buy the ODROID M1 at the moment. It’s not as smooth of sailing as with the Pi though which is why I would choose another board for first timers (or wait until better and more stable images are available for the M1).

I’d like to try the eMMC slot. That’s one thing we didn’t cover today because I don’t have the right adapter board to connect a eMMC to it. I plan on getting this as the performance on eMMC with the M1 is supposed to be fantastic as well.

If any of you also have the M1 board and know any tricks to possibly optimize the performance that I can try let me know in the comments! This is literally my first ODROID experience and I just wanted to review the board and share what it was like using it and what the outcome was. I’m sure I will learn and share more tricks to get more out of these as I become more familiar with them!

Other Resources

I highly recommend my Ubuntu 22.04.1 Legendary ODROID M1 image for your M1!

Definitely check out my testing with a official Hardkernel eMMC using the M1

The ODROID XU4Q is definitely a more approachable board for beginners

Check out my Orange Pi Zero 2 review here for a board that’s more approachable for beginners

If you want to see a really cheap headless board for under $10 that is the Orange Pi i96 Getting Started Guide

ASUS Tinker Boards are quite cheap right now at time of writing as well at roughly half the cost of a Pi

Subscribe
Notify of
guest

36 Comments
Inline Feedbacks
View all comments
Ozler
Ozler
1 month ago

The ODROID M1 impresses with its compact design and powerful performance, making it a standout choice for enthusiasts and developers alike. With its impressive internet benchmarks, it offers a glimpse into the future of single-board computers. Its versatility and reliability make it a compelling option for a wide range of projects.

Frédéric
Frédéric
8 months ago

Hi James,

Unfortunately 22.04 image are available for N2/N2H, XU4, C4/HC4 , but M1 is still locked onto 20.04. (https://wiki.odroid.com/getting_started/os_installation_guide#tab__odroid-m1).
lmv2 with / encapsulation as well as tasksel package should be mandatory. may you ask them or help me to encapsulate slash into lvm2 vg/lv

Frédéric
Frédéric
8 months ago

Hello James,

Thank you for your honest and direct response. There was some confusion on my part, I thought you maintained image and board updates – I did not intend to bother you and certainly never wished for you to intervene on my behalf with Odroid. That was likely an artifact from the differences between French and English.

As much as I can hold my own with x86 or PowerPC servers, I am very much a novice++ when it comes to the world of SBCs/ARM. To give you an idea, I did not even know about ARMBIAN until your previous email, where I just discovered their distribution – I will take a closer look. You piqued my curiosity by mentioning other solutions that outperform the M1. If you have any advice for an investment in the next 3 months, I’m all ears. The configuration would need at least 2 Ethernet ports – ideally 4x 2.5Gb or 2x10Gb, either natively or through an extension – in addition to NVMe storage.

Unless you are not interested, I will give you feedback on my ARMBIANIZATION.

Thank you again for taking the time to respond to me. I sensed some annoyance, so please accept my sincere apologies.

Frédéric

Frédéric
Frédéric
8 months ago

Hi James,

Please can you add tasksel and lvm2 packages into your distribution image and upgrade your image and configuration to get / “slash” to be managed natively by lvm2?

It should be a great improvement.

Thanks a lot