HomeRaspberry PiRaspberry Pi 4 + M.2 SSD = ArgonONE M.2

Raspberry Pi 4 + M.2 SSD = ArgonONE M.2

ArgonONE adds M.2 drive for your "boot from USB" pleasures

ArgonONE (review) case by Argon40 swept the internet a couple of months ago. It’s a beautifully designed case that turns Raspberry Pi 4 into a NUC style machine. It was so well made, that I decided to mod the case and create an mSATA compatible version using X857 extension board aptly named Argon18 (bonus points if you know why).

I guess the team got inspired by my design and came up with another iteration of ArgonONE case with M.2 SSD support. Is it better than my DIY take on the same idea? Meet Argon ONE M.2.

Somewhere in between…

Argon ONE M.2 is slightly thicker than the original case, but not as fat as my 3D printed design. I had to work around the X857 mSATA extension board, Argon40 guys had more design wiggle, and came up with a really sexy design. Despite the extra volume, the case looks sleek and in line with the original design principle.

On the surface, other than M.2 expansion, not much changed. The case still features a beautiful all-metal design with passive and active cooling. The GPIO header is exposed and covers with a magnetic lid and comb alike feature to let the cables through.

Anyone hoping for easy access to the camera port, power over Ethernet or even microSD card, can forget that as this NUC style case focuses on what’s important for desktop use – a sleek design that moves the entire I/O to the back. Feel free to read my ArgonONE review if this is your first contact with ArgonONE case.

What’s new inside Argon ONE M.2

As the name of the case suggests, the ability to add the M.2 drive is the biggest advantage. Argon ONE M.2 supports SATA based drives, so if you were hoping for NVMe support, you will be disappointed. In reality, the M.2 storage slotted into Argon ONE M.2 will be as fast as Raspberry Pi will let it be. NVMe benefits are reserved for more traditional computers.

Support for M.2 drives isn’t the only change. Gone are the micro HDMI ports replaced with regular-sized ones. I know some people will welcome those changes, I personally don’t mind smaller connectors on Raspberry Pi 4.

If you already got the original ArgonONE case, you can simply upgrade it by purchasing the M.2 expansion board. You will miss out on the full HDMI ports and redesigned board. IR diode is pre-soldered (with full support for Argon40 remote, which I could not locate on their website at the time of writing) and the power on behaviour can be modified via jumper.

M.2 and boot from USB

Argon ONE M.2 finally gave me an excuse to go on Amazon and buy myself a bigger M.2 drive. Instead of buying a small drive (I don’t have massive storage needs for Raspberry Pi based systems other than my NASpi), I treated myself to an M.2 256GB SATA drive from Crucial, which was promptly fitted inside of my modified Lenovo laptop. The spare 128GB drive will be much better suited for a Raspberry Pi 4 and Argon ONE M.2 combo.

I made a guide about boot from USB for Raspberry Pi 4, so there is no reason why my new system wouldn’t boot from M.2 drive instead. Let’s face it, Argon ONE M.2 doesn’t even expose the SD card port any more, so you might as well jump on board! The procedure is quick and relatively painless.

Thermal performance

I don’t expect any deviations from the ArgonONE if I’m honest. I’ll run some benchmarks to see if the thermals are still excellent. The room temperature was 21℃.


In the passive mode, the Raspberry Pi 4 8GB would report nice 36℃ which is 2℃ hotter, but the previously benchmarked board had 4GB of RAM, not 8GB. Switching to active cooling with the fan on at 100% didn’t change much – the temperature oscillated between 35-36℃.


I used CPU temperatures (benchmark) with ./cpuburn-a53 and after 10 min, the temperature was oscillating around 52℃. Again, slightly higher than the Raspberry Pi 4 4GB of RAM. What was more surprising, turning up the fan to 100% did not change the thermal curve. The temperature was about 1℃ lower at most.

M.2 vs mSATA

I had a feeling that it’s not the drive speeds that will matter here. I used SSD drives in the past, and I could never saturate the USB SATA connection. I installed the SK Hynix SC300  M.2 drive capable of: Read 530MB/s, Write 370MB/s speed. It’s not the fastest drive, but I don’t think RaspberryPi will saturate this.

dd benchmark:

dd bs=1M count=256 if=/dev/zero of=test conv=fdatasync
M.2 SSD(268 MB, 256 MiB) copied, 1.75779 s, 153 MB/s
M.2 SSD(1.1 GB, 1.0 GiB) copied, 6.86356 s, 156 MB/s

First benchmark is slower than mSATA I used with X857 board. This mandated further investigation so I run hdparm in the more taxing mode:

sudo hdparm -t /dev/sda2
M.2 SSD1068 MB in 3.00 seconds = 355.71 MB/sec

The results were more in line with mSATA results indicating that it is in fact Raspberry Pi bottleneck. Lastly most taxing fio which basically grinds the storage until it has enough:

fio --name=random-write --ioengine=posixaio --rw=randwrite --bs=4k --numjobs=1 --size=4g --iodepth=1 --runtime=60 --time_based --end_fsync=1
M.2 SSDWRITE: bw=59.8MiB/s (62.7MB/s)

As this tells you little about real life performance, a quick samba test shows what to expect:

SMB read (1GB)104MB/s10 sec
SMB write (1GB)104MB/s10 sec

1GB file was perfectly saturating 1Gbps connection as expected! There was a small hiccup while writing the file (pictured), but it had not occurred in other attempts.


Raspberry Pi is still shrouded with metal, the case performs in the same manner as the original ArgonONE:

Ideal (no case)Ideal (Argon ONE M.2)Typical (no case)Typical (Argon ONE M.2)
2.4 GHz9.0 MBytes/s8.7 MBytes/s6.90 MBytes/s4.7 MBytes/s
5.0 GHz10.7 MBytes/s10.2 MBytes/s10.3 MBytes/s9.0 MBytes/s

Now that the case is thicker it could use a slot to add the external antenna to improve the wireless performance even further.

Buy ArgonONE M.2

Buy it using these links to support NotEnoughTech.

Final Thoughts

My next task is to create the mSATA mod for Argon NEO (review). Who knows, I might end up setting trends again. For now, I can marvel at both creations and enjoy the fact that my Argon18 has enough space to house a ZigBee coordinator and it comes with an external antenna! Yes I have added one for CC2531 and I plan to add another one for the WiFi – you can read more about antennas in here. Will you get the new Argon ONE M.2? Would you like to see Argon NEO that is compatible with mSATA boards? Let me know in this Reddit thread.


Nothing says "Thank you" better than keeping my coffee jar topped up!


Support me on Patreon and get an early access to tutorial files and videos.


Bitcoin (BTC)

Use this QR to keep me caffeinated with BTC: 1FwFqqh71mUTENcRe9q4s9AWFgoc8BA9ZU


Programable, ESP32 based awesome dev platform with 4.7 e-ink display by M5Stack

More HATs


Argon One M.2

Enclose Raspberry Pi 4 inside this great case with custom I/O, cooling and GPIO and M.2 SSD support

More cases on


Best Raspberry Pi Projects

How to use Raspberry PI as WOL (wake on lan) server

While you could wake up your PC from a mobile directly, having a dedicated server capable of doing so is the best solution. The reason is simple. You can hook up as many devices as you wish with a single endpoint. This is why Raspberry Pi is perfect for this.

How fast Raspberry Pi NAS is?

Let's see how fast Raspberry Pi NAS really is?

Argon18: Argon ONE SSD modification

Argon One case just got better - now you can boot it from USB without ruining the design thanks to Argon 18: Argon One SSD modification

The most pointless upgrade to my NAS – Raspberry Pi 3B+

This upgrade is almost pointless!


C/C++ and MicroPython SDK for Raspberry Pi Pico on Windows

A guide to SDK toolchain for Raspberry Pi Pico and C/C++ , Micropython on Windows.

A comprehensive guide to Grafana & InfluxDB

How to use Grafana and InfluxDB on Raspberry Pi for IoT sensors in home automation

How to boot Raspberry Pi 4 from USB

How to set up and boot Raspberry Pi 4 from USB drive - headless guide.

Raspberry Pi Zero, Raspberry Pi 3A+ WiFi without keyboard or cables

Getting Raspberry Pi boards connected in seconds

Everything you need to start using JSON

It's JSON not Jason, just saying!