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
Andrea
Andrea
9 months ago

Hello, I wanted to build a NAS with nextcloud, photoprism and home assistant, I have already one 2TB 2280 nvme disk, what do you recommend doing? I was thinking about the orange pi 5 with a 3d-printed modification for supporting 2280 or the odroid m1. Do you recommend something else?

Angus
Angus
10 months ago

Had a bit of a nightmare trying to get it to see the Nvme storage. I still can’t get the 22.04 ubuntu installer to see it and their recommended image, loaded up either through a installing the ssd on another computer or mounting it through petitboot’s usm failed. Petitboot just wouldn’t recognise the drive or the image on it, despite it showing up in the shell.
Eventually got 20.04 loaded up through netboot.

I agree with your assessment that the hardware and performance don’t quite seem to line up.

Jan-Willem
Jan-Willem
11 months ago

Score: 18.6 K
Thanks for the review!
I got the board up and running in a few hours. Only caveat was that I needed to format the SD card in MSDOS on a Mac, to get it recognized by Petitboot. Then it was just copying the img to the ssd and go.

Elliot
Elliot
1 year ago

Hello,

I have been experiencing an issue with the M1 where the Petitboot environment sometimes detects the NVMe and other times it doesn’t. It’s almost 50/50.

When the NVMe is detected, the system boots as expected, without any issues. I connected to the UART debug console and I don’t see anything suspicious in the logs.

If it helps, I am running the Petitboot environment version 20230222.

After much scouring of the Internet and Odroid forums, this seems to be a fairly common and widespread issue with the M1s. With no solution in sight, or any response from Hardkernel themselves.

Have you run into this situation? If so, have you come across a viable solution?

Elliot
Elliot
1 year ago

Hi James,

Thanks for the very detailed response. Much appreciated.

To provide you with a few extra details, I am using a 12V 33A power supply. This will be used in an industrial setting, hence the large supply.

I am currently using the Samsung 980 Pro NVMe 1TB PCIe Gen. 4×4. I’ve also tried the Kingston NV2 250GB PCIe Gen. 4. However, I am thinking of switching to the Samsung SSD 980 250GB PCIe 3.0×4 (as this is in the Odroid’s verified compatibility list). From what I understand, the Odroid-M1 uses a PCIe Gen. 3×2 interface, which shouldn’t be a problem.

I’ve been able to recreate this behaviour on 3 Odroid-M1 SBCs so far.

I’m also looking into compiling the U-boot kernel source provided on Odroid’s Github. I’ve been able to compile it and use it so far, and to no avail. However, I did notice in the kernel configuration that NVMe is disable, which I found interesting.

I hope this extra information helps.

Elliot
Elliot
1 year ago

Hi James,

I did come across the megathread that you linked to. I have attempted downgrading to Ubuntu 20.04 per the suggestions there. However, this did not appear to help. I missed the part of thread with the people mentioning the Samsung 960s/970s, thanks for pointing that out.

I have a total of 15 Odroid M1s. Of which, I have only used 3 and successfully reproduced the NVMe issue on all 3.

For Petitboot, I have only upgraded one Odroid M1 to the latest official version (provided by HardKernel here. As I did not see any noticeable improvement, I felt there was no point to upgrading the remaining 2. As for my compiled versions of U-boot, I’m testing various combinations of kernel changes, but haven’t had any luck yet.

My next test will probably be to purchase a Samsung 970 EVO, since the 960 is discontinued. I’m beginning to believe it has something to do with the 4.19 kernel and the Odroid M1 hardware having trouble with a PCIe Gen. 4×4 device. This is merely speculation, but all the compatible devices in Odroid’s compatibility list and drives mentioned in the forums all seem to have PCIe Gen. 3 as a common factor.

In terms of Ubuntu 20.04 as a long term solution, given the nature of what the Odroid will be embedded into, this is not a serious problem.

It’s the end of the work day for me, so I’ll give you an update tomorrow. Hopefully, with good news.

Elliot
Elliot
1 year ago

Hi James,

I have finally finished my testing.

I purchased the Samsung 970 EVO Plus 500GB model. Made sure the Petitboot environment was flashed to the factory version on all 3 Odroid M1s. Finally, I installed Ubuntu 20.04 via the Net Installer.

2/3 Odroid M1s passed with the above criteria and booted 50 times in a row, successfully.

The 3rd Odroid M1, seemed to still have a problem. I’m speculating that this due to a problem with the hardware, however I do not have time to further investigate this.

I took a 4th untested Odroid M1, and it seems to boot successfully 50 times in a row, as well.

At this point, I believe the hardware I have is okay, except for one that may be faulty.

Thanks again for all of the help.

Jan-Albert
Jan-Albert
1 year ago

Default kernel for ODroid M1 is their 4.19 build.
There is however also a newer 5.18 kernel in the ODroid repositories.

Jan-Albert
Jan-Albert
1 year ago

Fully agree , unfortunately there is no info on what software / packages you need for NPU support so while you can upgrade from server to desktop , server to NPU is not possible.

Server upgrade 20.04 to 22.04 went smooth for me though.

Max
Max
1 year ago

James, thanks for the review! Look at Ameridroid for accessories, and check out odroid go super/advance 😉

Jim
Jim
1 year ago

Way ahead from the raspberry pi

Jim
Jim
1 year ago

Sata and m2 ports and sdr104 raspberry pi is zero compared to that.

Also Odroid xu4 is a beast!!!

I have an odroid c4 but it im not really using it

Jim
Jim
1 year ago

If you dont need anymore xu4 after the review let .me know i wanted to buy this before but its very hard to find it/get it.

When xu4 was released they said it was 10 times faster than the raspberry pi3,i wonder how many times faster is from raspberry pi4.

Jim
Jim
1 year ago

XU4Q is 10% slower than then xu4,make sure you put a fan next to it,coz with the heatsink only its not Enough and it lowers the frequency

Odroid advance is a must it takes ubuntu,emulation station etc,i have years now a bittboy 3.5 if you know it, though is not a match for Odroid advance,the gameboy emulation is pixel perfect.

You took them from hardkernel official site or a distributor?

Jim
Jim
1 year ago

Just do what i do put a usb fan next to the cpu ,if you dont have a usb fan you can convert easy an old pc fan just take an old usb cable that you don’t need cut it cut the fan cable also strip the wires and connect only the red and the black one together,12v fans work with 5v with less efficiency but quiet.

I have a 50x25x10mm heatsink in Rpi4 covering both ram and cpu and a quiet fan like this cooling it down efficient.