Argon ONE M.2 SSD Case for Raspberry Pi 4 Review

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 metal enclosure might 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 dtparam=sd_poll_once

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.

IR Sensor

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

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
  • Firmware:
    • Bootloader: Thu 3 Sep 12:11:43 UTC 2020 (1599135103)
    • VL805: 000138a1
  • Software/Configuration:
    • WiFi configured and enabled
    • Boot to console
    • SSH enabled
    • Samba installed and configured
    • Stress
    • Stressberry
    • 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:
    • over_voltage=7
    • arm_freq=2147
    • gpu_freq=600

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.

WiFi Performance

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 might have 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.

I hope I can share an update on this in the near future.

Conclusions

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 within the enclosure might be a concern, further testing is required to confirm it. 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.

Product Links

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.

4 thoughts on “Argon ONE M.2 SSD Case for Raspberry Pi 4 Review

  • 23rd January 2021 at 8:29 pm
    Permalink

    Excellent review. We’ll take into consideration your suggestions and feedback and see how we can improve the M.2. The IR software bug fix is on the way. We’ll add in the manual the SD polling once config too.

    Reply
    • 24th January 2021 at 12:11 am
      Permalink

      Great to hear you are continuing to make improvements. Look forward to updating my review once they become available. If you can let me know when that happens, that would be great.

      Reply
  • 25th February 2021 at 3:05 am
    Permalink

    I was not able to get my new Argon One M.2 to connect to my WiFi networks. I set up another RPi right next to the M.2 and it connected easily. I then flashed a fresh SD card, reinstalled the Raspberry Pi OS to retest and could not make the connection. Even tried connecting to the hotspot on my cell phone without success.

    Reply
    • 25th February 2021 at 8:08 am
      Permalink

      Hi Ken, I tried exploring this in another post: https://www.martinrowan.co.uk/2021/02/raspberry-pi-wifi-performance-revisited/ there is something going on, but I still have yet to pin it down. If you’re able can you test using a 5GHz WiFi, either 802.11n or 802.11ac assuming your WiFi supports this. You may need to determine the bssid for your 5GHz channel (Each SSID on each channel has a unique bssid). Once you determine this you can try specifying it in the wpa_suplicant.conf file. I found the Raspberry Pi at time very reluctant to jump channels and other times jumping when I was trying to have it pinned.

      I’d be interested in learning more, if this works or not, then information around your WiFi environment. For example 802.11 standard, frequencies, channel numbers, channel widths, WiFi hardware vendor.

      Thanks Martin

      Reply

Leave a Reply

Your email address will not be published.

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