Latest Status – 20 June 2021: I’ve completed a review of an updated M.2 board. See the review here.
Following the firmware release which added the ability to boot the Raspberry Pi 4 from an SSD, the team at Argon40 have been busy updating their flagship Argon ONE case, creating the Argon ONE M.2 SSD Case which allows for an M.2 SATA (not NVMe) SSD to be installed within this beautifully designed case.
The M.2 case builds on the same metal top shell as used in the Argon One v2 (I reviewed the v1 version here). The v2 version looks similar, but switches the Micro HDMI video outputs for full-size HDMI and adds an IR receiver. In fact, both the top control board and the daughterboard that plugs into the side of the Pi are new designs.
The M.2 controller board is housed at the bottom of the plastic half of the case and connects to the Raspberry Pi 4 USB3 port via a short USB3 link adapter. If you already have an Argon ONE, you don’t need to buy the M.2 version, you can just purchase the M.2 expansion board and upgrade you’re existing Argon ONE. I think it’s great this is being offered, as the Argon ONE is quite an expensive case, so building on your investment is better than needing to replace it altogether.
Visually with the Argon ONE M.2 SSD case looks like a slightly taller version of the original ONE, (41mm vs 34mm tall). All the good bits from the original ONE remain, including the metal construction which allows the case to act as a huge heatsink and the magnetic cover that can be removed to access all the GPIO pins of the Raspberry Pi. Of course as mentioned all the connectors remain on the rear, creating a sleek and practical case for your Pi. However, with the M.2 version you do lose access to the SD card slot, you need to detach the bottom section to access the card. I don’t see this as an issue as this case is designed for you to run everything from the M.2 storage and no longer use the SD card slot.
In this post, I look at setting up the Argon ONE M.2 SSD Case, testing its thermal and storage performance and review how this enclosure appears to impact WiFi signals. For the TLDR version, you can jump straight to my conclusions.
Argon ONE M.2 SSD Case Image Gallery
Booting From M.2 SSD
The Raspberry Pi 4 needs to be initially set up using an SD Card. If you installed the Desktop version of Raspberry Pi OS, you can run the “SD Card Copier” utility from under the Accessories menu. Select the SD Card card as the source, and the M.2 drive as a destination. If you select the option
New Partition UUIDs when you reboot your Pi it will continue to boot from the SD-Card, so don’t do that. Without it checked, the Raspberry Pi OS will prevent both drives partitions with the same UUID being mounted at the same time.
You can of course also clone the SD card to the M.2 drive using various command-line utilities, or a little easier with utilities like PiClone, I’ve not tested these out, so ensure you do your research 1st.
Once the drive is cloned, you can shutdown and remove the SD Card if you wish and your Pi will now only use the M.2 storage.
Higher Idle Load
Shortly after booting the Pi in the Argon ONE M.2 SSD case, I noticed it was running warmer than my original ONE, checking the load average showed it under a slightly higher load when idle. The 1 minute load average of the idle devices was 0.86 for the ONE M.2 and 0.00 for the original ONE. A few minutes of research later and I discovered that increased load was due to the Pi regularly polling for the presence of an SD Card.
To prevent this problem you can ensure you keep an SD card in your Pi, or edit
/boot/config.txt adding a the line
After updating the boot configuration, rebooting and leaving the Argon ONE M.2 Pi idle for a few minutes, the 1 minute load average fell to 0.00.
The Argon ONE M.2 and the revised v2 version of the Argon ONE now include an Infra-Red (IR) sensor, something likely to appeal to those using their Raspberry Pi 4 as a media player. In order to use and configure the sensor you need to install the Argon ONE software, per the link in the instruction booklet. Running
argonone-config provide the options to configure the fan speed for different temperature thresholds and also to configure the IR sensor. You can easily configure a remote to turn on and off the Pi, I used a cheap RGB LED remote and configured one of it’s buttons without any issue.
The configuration utility suggests that if you have an Argon Remote Control, something I’ve not found anywhere online, then this will work out of the box and be able to do more. If you want to use a different remote control then this relies on LIRC. The configuration utility attempts to automatically install the necessary components, however for me this didn’t work:
------------------------------- Argon One IR Configuration Tool -------------------------------- WARNING: This will install LIRC and related libraries. Press Y to agree:y Thank you. Select remote control to configure: 1. Use Argon Remote Buttons 2. Use Custom Remote Buttons 3. Cancel Enter Number (1-3):2 Traceback (most recent call last): File "/usr/bin/argonirdecoder", line 18, in <module> from lirc import Lirc ImportError: cannot import name 'Lirc' from 'lirc' (/usr/local/lib/python3.7/dist-packages/lirc/__init__.py)
Also trying to install the python library manually also failed. As this wasn’t a feature I plan to use I didn’t investigate further.
Testing Method & Configuration
An Argon ONE v1 and the Argon ONE M.2 SSD case were tested concurrently. Each running the same base image, reconfigured with unique hostnames. The Argon ONE used an 8GB Raspberry Pi 4 with a 32GB SanDisk Endurance SD Card. The Argon ONE M.2 SSD case used a 4GB Raspberry Pi 4 with a 240GB Kingston A400 M.2 SSD drive is installed. The difference in memory size has not been seen to impact previous tests.
The devices were tested concurrently, each running the same image only reconfigured with unique host names.
- Image: 2020-12-02-raspios-buster-armhf.zip
- Updates: All updates as of 29 December 2020
- Kernel: Linux raspberrypi 5.4.79-v7l+ #1373 SMP
- Bootloader: Thu 3 Sep 12:11:43 UTC 2020 (1599135103)
- VL805: 000138a1
- WiFi configured and enabled
- Boot to console
- SSH enabled
- Samba installed and configured
- Python 3.7
- Initial tests performed without the Argon ONE software installed. Tests labelled “Controlled Fan” have the Argon ONE control software installed.
- Load Test configuration:
- Stress active concurrently on all 4 cores
- 5 minute idle period (once the temperature has reached steady state)
- 30 minute stress test run initially, this was extended to 60 minutes to attempt to find the limit of the cases.
- Overclock settings for OC test scenarios:
Storage Performance Results
Likely the primary reason to buy the Argon ONE M.2 SSD case is to provide access to fast, reliable storage for your Raspberry Pi 4. I’ve previously tested the storage performance when using some old 2.5″ SSD attached via a SATA to USB interface, which shows several orders of magnitude improvements in storage performance. Performing a subset of the previous tests, I chose to run the PiDramble storage performance script, which runs dd and iozone utilities to characterise the performance, the PiDramble page has more information on the nature of the tests. Each test is repeated 3 times and the average shown in the graphs
The Kingston SATA M.2 drive in the Argon ONE M.2 SSD case is compared to the Original Argon ONE with a 32GB SanDisk Endurance SD Card and also with an NVMe M.2 SSD inside an external USB enclosure
As expected the USB3 M.2 storage options both massively outperform the SD card. The NVMe drive in an external enclosure pip the SATA based drive in all the tests, but the margins are pretty small. I’ll admit I was a little frustrated to discover that the Argon ONE M.2 only supported SATA M.2 drives, not NVMe, as I didn’t have a spare SATA M.2 drive to hand so had to postpone my testing till one arrived. The relatively minor difference in results between the two storage technologies is likely due to the different controllers. I don’t have any faster storage to be able to confirm the exact source of the performance bottleneck.
Thermal Testing Results
Aluminium cases make create solutions passive cooling and avoiding noisy fans. Both the Argon ONE cases both include a fan which can be temperature controlled by installing the Argon ONE software. Without it, the fan remains off.
At idle I was surprised that the Argon ONE M.2 SSD case felt noticeably warmer to the touch compared to my Argon ONE v1, even after addressing the issue with the SD card polling. Without any additional Argon ONE software installed the processor temperatures at idle (1, 5 & 15min load averages are 0.00) were:
- Argon ONE M.2: 43.3°C
- Argon ONE v1: 36°C
- Ambient temperature: 21°C
This additional heat load is caused by the M.2 drive and controller board, combined with reduced ventilation as the bottom ventilation holes on the case now being blocked completely by the M.2 expansion board.
30 Minute Load Test
Initial testing was performed using a 30 minute test period at stock 1.5GHz and overclocked to 2.147GHz. As the results showed the Overclocked M.2 case was getting close to the thermal throttling limit, tests were repeated with a 60 minute test period.
The higher idle temperatures seen with the M.2 version results in higher temperatures in each of the load test scenarios.
60 Minute Load Test
With a longer running load test able to generate higher temperatures, the Overclocked Argon ONE M.2 hits thermal throttling down from the 2.146GHz down to stock 1.5GHz for a significant part of the last period of the test. The Original ONE v1 stays around 10°C cooler. Enabling the Argon ONE Software to control the fan based on processor temperature sees all the tests avoid thermal throttling. Even with the fan running the Argon ONE M.2 runs hotter than the ONE without its fan running.
Active Cooling Fan
Whilst the Argon ONE is designed primarily for passive cooling, both cases are fitted with the same model of 30mm Fan, an RDKCooler RA0310HD5, though in the M.2 case the fan is significantly quieter, even at full speed. I’m unsure if I was unlucky with the fan in my original ONE case, or if the new control board in the M.2 case runs the fans at lower speeds. I don’t have a tachometer to be able to measure it.
Whilst testing I noticed that sometimes I’ve have issues connecting via SSH, or sessions would unexpectedly be dropped, or even just characters lost when typing. This isn’t something I’ve experienced during my numerous rounds of previous case testing. However, my home network has changed recently and I no longer have a wireless access point under the test bench, now the nearest access point is 5m away. This should be close enough that it shouldn’t cause any issues. Even the signal strength measurements show the signal is acceptable. This experience has me questioning the reliability of using signal strength as I’ve done in my previous assessment of the impact of metal cases on WiFi performance. So much so, that I feel I need to develop a new methodology and perform a new round of testing.
Based on having the Argon ONE M.2, Argon ONE v1 and the Argon NEO side by side on my test bench, only the M.2 variant had any issues with WiFi connectivity, so anecdotally at least, it seems the Argon ONE M.2 case has issues, either needing a stronger WiFi signal, or perhaps the M.2 board below the Pi is blocking the signal, or even causing additional noise which is interfering with the WiFi signal. For now, I’d recommend the Argon ONE M.2 is more suited to a wired connection.
Update 6 April 2021: Having contacted Argon40, they have indicated they are aware of an issue with the M.2 board blocking WiFi Signal and a revised board is available by contacting [email protected]. I’m awaiting the revised board and will share the results once I get my hands on it.
Update 26 April 2021: I received some replacement Argon ONE M.2 cases direct from Argon40 and set about testing. These new cases had a version 1.6 m.2 board compared to the v1.3 board I had originally. Sadly these v1.6 board performed worse than the originals. When I contacted Argon40 I was informed that the fixed board is V2.1 (and I guess later) and that’s what I should have been sent, sadly that wasn’t the case. I ended up wasting the best part of 3 days testing and re-testing different combinations and I now await a new delivery, hopefully of a board that fixes the WiFi problems.
The Argon ONE M.2 SSD case continues the good looks from the original with the benefit of wrapping up high-performance storage into the same package. Eliminating external drive enclosures hanging off the USB ports.
This enhancement does come at a price, in overclocking scenarios this case runs hotter and may need to use the fan more than the original case. On the plus side, the fan in my Argon ONE M.2 case is quieter than the original ONE v1.
WiFi reliability is a
concern (update: 6 April 2021) known issue, hopefully, the new version of the M.2 board will address this problem. So for now, if you plan to use this case, ensure it’s very close to the access point, or better still uses a wired ethernet connection.
In terms of setup, I’d like to have seen Argon40 providing a bit more information on getting started with getting the Pi booting from the M.2 drive. The IR sensor worked in a basic sense but the LIRC setup failed, as this is a feature built into the Argon ONE configuration software, this should work and should have been tested on the modern Raspberry Pi OS distributions.
The Raspberry Pi OS issue with the Pi polling often when there isn’t an SD Card probably won’t be noticed by anyone, but having this tweak mentioned in the Argon40 setup guide would once again be useful.
- Raspberry Pi 4 (Amazon) (ThePiHut)
- Kingston A400 M.2 240GB SSD (Amazon)
- Argon ONE M.2 SSD case (Amazon) (ThePiHut)
- Argon ONE case (Amazon) (ThePiHut)
- Argon ONE M.2 expansion kit (Amazon) (ThePiHut)
- Sabrent USB 3.2 M.2 NVMe Enclosure (Amazon US UK)
- TC SUNBOW 128GB NVMe SSD (Amazon)
Amazon links are affiliate links which help support the site, where possible I’ve used links which should take you to the product in the Amazon store in your region. Links to other suppliers are included for your convenience.