Official Raspberry Pi M.2 HAT+ Review

bret.dk 1 miesiąc temu
Zdjęcie: Raspberry Pi M.2 HAT


After being teased by Raspberry Pi in their Raspberry Pi 5 release post, 8 months and multiple revisions later we finally have the Official Raspberry Pi M.2 HAT+ available for purchase. With my phone lit up like a Christmas tree bright and early yesterday morning telling me who I could order from, it felt rude not to pull the trigger, so I placed my order and I now have the Pi 5 M.2 HAT+ in my hands, ready to put it through its paces!

It’s a top-mounted board (given it’s a HAT, or Hardware Attached on Top, that should be somewhat obvious but it’s been blurred a little recently) which means it’s limited in terms of the space it can utilise if it wants to be somewhat compatible with the official, first-party accessories such as the official Raspberry Pi 5 case.

So on that note, it can fit either an M.2 2230 or 2242-sized NVMe/M.2 drive which means it does fit in the official case. This does, however, come at the sacrifice of the included fan in the official case which may put you at a bit of a disadvantage when it comes to cooling your Raspberry Pi 5. On the flip side, you’re also unable to put the top cover/lid of the case on so maybe it won’t be as restricted.

To get around potential shortcomings, you’ll likely want to pick up the Active Cooler which will offer you a heatsink and integrated fan which will sit below the M.2 HAT+ and offer you something at least. It’s still going to be choked off a little, though so it’s something we’ll need to explore later in the review.

Initial Problems: Assembling the M.2 HAT+

Upon opening the package you’re presented with the HAT+ itself which comes with 1 end of the PCIe cable pre-installed in the HAT, and the other end protected by a small piece of tape, which is a nice touch. You have 8 screws, 4 spacers, and the GPIO extension header, but it’s here that my frustration began. Though as a foreword, I’m sure this won’t be the case for everyone and I’ve been on the receiving end of a batch that’s had some poor quality control on the screw and spacer front. Yours may not have the same problem but it felt only fair to mention them.

The screws and the spacers are made of plastic and are a little fiddly. 2 of my 8 screws have manufacturing defects meaning that I can’t actually fit a screwdriver head into them without scraping away the excess material within the head of the screw. You can see from the photo above that the middle screw hasn’t been manufactured correctly and I have 2 like that.

The spacers seem fine in theory, though again, I seem to have received some with manufacturing defects. In the below photo, you can see that the spacer on the left has an off-centre hole/thread, and it’s considerably smaller than the one on the right. I again have 2 spacers like this and before I took a closer look I was struggling to understand why it was so difficult to put this thing together.

As far as the GPIO header extensions go, I guess that’s fine. If you’re not using the spacers then they rise through the HAT’s header section and they’re then accessible. If you want to use the spacers though, to give space for an Active Cooler, it’s then somewhat pointless.

Full installation instructions for the HAT+ can be found on the Raspberry Pi documentation site so I won’t reinvent the wheel there, but do make sure to double-check your screws and spacers to see if there are any issues.

Testing the Raspberry Pi M.2 HAT+

Side note before we get into the benchmarks, whilst this is advertised as also being compatible with AI accelerators, I’ll only be testing an M.2 NVMe drive in this article.

Disk Benchmarks

As it’s the only 2230/2242 M.2 NVMe drive I have available at the moment, I’ll be using the 256GB Pinedrive from Pineboards for testing which is a DRAM-less M.2 drive, though it provides up to 2250/1300MB/s read/write speeds respectively, so will be more than enough to saturate even the forced PCIe Gen 3 lane available on the Pi 5. All tests were performed times (with the average being presented here) with a 5GB test file on an ext4 filesystem running on an idle OS. I did throw in a 500GB Samsung 980 as I was testing something else with that, so I thought I might as well include the numbers for the fio testing.

fio

fio is a classic in the storage testing arsenal, and I’ll be using fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --filename=test --bs=4k --iodepth=64 --size=5G --readwrite=X to test this at a 4K blocksize. If you want to emulate the test, replace X with read, write, randread, randwrite for the same sequential/random read and write tests.

As you can see below, at PCIe Gen 2 speeds, there’s no problem, with minor variance between the 2 drives. With Gen 3, the Pinedrive takes a bit of a hit on the random reads but we’re not testing the drives here, and you can see that we’re hitting around 830MB/s which is solid and nothing to be sniffed at.

PCIe Gen 2
PCIe Gen 3

iozone3

My iozone3 script runs through a range of block sizes (from 4KB to 16MB), with again, sequential reads, writes, and random reads and writes. The command it uses is iozone -e -I -a -s 5G -r 4k -r 16k -r 512k -r 1024k -r 16384k -i 0 -i 1 -i 2 if you wish to compare. This section only contains Pinedrive data.

PCIe Gen 2
Block Size (KB)Sequential Read (MB/s)Sequential Write (MB/s)Random Read (MB/s)Random Write (MB/s)
460.21221.8658.45202.97
16212.56305.11211.92299.49
512425.10396.09425.00395.67
1024430.28398.95430.19398.83
16384435.28394.42435.24401.40
PCIe Gen 3
Block Size (KB)Sequential Read (MB/s)Sequential Write (MB/s)Random Read (MB/s)Random Write (MB/s)
464.98309.9963.46276.61
16228.62496.28227.76489.40
512814.16752.78813.80755.75
1024832.02761.90831.89769.83
16384850.40776.52850.28746.53

Speeds are looking good, so as long as you pick a semi-decent NVMe drive, you’re going to have a much better time with this HAT when compared to something like a microSD card in the Raspberry Pi 5.

Temperatures in Official Case

As I alluded to earlier, the Raspberry Pi 5 is going to take a hit in terms of thermals when you use this M.2 HAT in the official Pi 5 case due to it taking the space of the included fan.

I’ve tested several situations to see how it looks in what I believe to be the most common setups for users, though let’s clarify what I’m testing exactly.

Bare: This is just the Raspberry Pi 5 on its own with no case or cooling.
Bare with HAT: We’re just adding the Raspberry Pi M.2 HAT+ on top of the bare Pi 5 for this.
Case: No HAT, just the Raspberry Pi 5 in its official case with the heatsink and fan.
Case with HAT: Now we’ve added the hat, this figure is for a bare Raspberry Pi 5 with the HAT+ attached inside the case.
Active Cooler: This is the Raspberry Pi 5 with the official Active Cooler attached, no case, no HAT.
Active Cooler in Case with HAT We’re now using the Active Cooler on the Raspberry Pi 5, in the case, with the HAT attached.
Heatsink in Case with HAT: Raspberry Pi 5 fitted with the heatsink from the official case, with the M.2 HAT installed.

As you can see, there’s a definite temperature hit as you start to choke off the available airflow in the official case, and whilst I’m simulating worst-case scenarios here with the performance CPU governor being set (so the Pi is drawing at least another 1W or so from the wall), it’s quite a change.

Where to buy the Raspberry Pi M.2 HAT+?

As with all Raspberry Pi products, they’re available via their worldwide distributor network, so if you head over to the Raspberry Pi 5 M.2 HAT+ product page and hit Buy Now you’ll find it defaults (based on IP/location I assume) to your local distributor.

We may see it end up on Amazon through resellers at some point soon, and I’ll update this section if I spot anything!

In terms of pricing, the RRP is $12, though this is without sales tax or shipping. In the UK it looks to be around £11-12, and up here in Sweden it’s 150SEK, so when tax is considered, the pricing is pretty uniform so that’s nice. It will no doubt be a good value option for people wanting to test the waters with a brand they know, unlike the swathes of Chinese clones that have popped up over the last year.

Overall Thoughts

Other than the issue I’ve had with the screws/spacers, it looks like a well-made board that will serve you well if you’re looking for something that comes from Raspberry Pi itself.

I’m also not sure if they strictly went with this form factor to fit in the case officially, or if it was just to follow the pattern of previous HATs. In either case, I would have been happy to potentially see a modified version of the case to properly account for the hat. Perhaps they could look at releasing a modified version of the middle/top pieces to allow for room?

With it being in this form factor we’re limited to 2230/2242 M.2 drives which means you have a much smaller selection, but thanks to the growth in popularity in the handheld gaming console market that also utilises these the situation is slowly changing.

If you ignore the case compatibility, it’s a good value option for users who didn’t want to go for one of the earlier-released alternatives, either by not looking for them or just wanting to have an official option. If you didn’t know that NVMe storage on the Raspberry Pi 5 was a thing, do check out my review of the Pineboards HatDrive Bottom which offers a bottom-mounted solution with support for 2280-length M.2 drives.

For me, it’s close but no cigar. I feel like I’m holding Raspberry Pi to a higher standard than the alternatives, whether you agree or not, as they have more of an ecosystem to integrate with. Not being able to use it nicely with the official case (essentially requiring users to buy a case, discard the fan and then purchase the Active Cooler instead) is a definite negative for me and the GPIO situation feels a bit odd. Again, both of these make no difference if you don’t wish to use the case, and maybe I’m in the minority here.

Have you picked up the official Raspberry Pi M.2 HAT+ already? Did you have issues with the mounting hardware? Was I expecting too much? Too harsh? Let me know what you think in the comments!

Idź do oryginalnego materiału