Dual OWC Express 4M2 chassis (#P46)
Another thing literally nobody asked for: A 3D printed chassis to house two OWC 4M2 quad NVMe to Thunderbolt adapters
Well, all of my NVMe activity of the recent months had to lead to something – the Blueendless USB dock (WHL #104), the Samsung 970 Evo Plus (WHL #106) (and the other Samsung 970 Evo Plus), as well as the AliExpress shenanigans with the fake drives in WHL #92 and WHL #95. I feel like now is the time to make changes to my always unwieldy RAID and backup strategy, as technology, pricing and size is finally where it needs to be to fit my needs. Plus, the Tesla Beach Buggy Racing videos are already amounting to 450GB, so they’re too large to keep around on the main system drive, but I want easy access 24/7…
So, the OWC 4M2. Technically it has just been EOL’d, as the search engine result https://www.owc.com/solutions/express-4m2 now redirects to the single-disk 1M2 model. The empty 1M2 (at MSRP) isn’t much more expensive at an cost per disk level, but imagine the wiring needed to stack like eight of these. New 4M2 transacted for 300 to 350€ for quite a while and are still in that ballpark, they’re still in stock, and there never have been many sources to choose from anyway. 1M2s are like 130€, so not below MSRP for now. The original 4M2 product page can still be found in the wayback machine: https://web.archive.org/web/20250209121103/https://www.owc.com/solutions/express-4m2
Here’s a pic from the Samsung post:
And since I cannot be arsed to search for the front of the chassis, here’s just the base part of it:
Just imagine the rest from this press photo. The front slides out when not secured with screws or thumbscrews, depending on revision (I got both).
As can be seen from the first image, the inner construction is one large PCB hosting the four NVMe slots (and not much else):
The not-much-else part being a Texas Instruments TPS56221 4.5-V to 14-V, 25-A synchronous SWIFT buck converter, and a chip labelled “53154A0 1A 1817 AJ601V”, which I cannot find any info on, ChatGPT fabricating a “PI3PCIE53154”, and Grok doing the same with a “TPS53154”. That’s allegedly another voltage converter, which totally doesn’t fit the differential traces to all NVMe slots and the removed ground plane all around the chip. Not sure what this thing does, maybe it is some kind of re-driver or local mux to just ID all the NVMes in order to make them work peacefully over the TB connection on the other board.
In between is just a fully passive backplane with two PCIe x4 connectors:
And that’s the Thunderbolt board that does all the PCIe magic:
The main Intel chip is under the heat sink (not cracking that one open), and the two visible TI TPS65983Bs are “USB Type-C and USB PD Controller, Power Switch, and High Speed Multiplexer For Thunderbolt 3”, that checks out. These units can be daisy chained together, up to 6 units I think. So two, plus a 2.5GbE networking controller at the end, isn’t really stretching it…for now
Fully connected to a TB host, they show up like this:
sudo boltctl list ● Other World Computing Express 4M2 #2 ├─ type: peripheral ├─ name: Express 4M2 ├─ vendor: Other World Computing ├─ uuid: 008501e9-3405-5a00-ffff-ffffffffffff ├─ generation: Thunderbolt 3 ├─ status: authorized │ ├─ domain: e1030000-0082-8088-a0aa-0f4ae1b6601d │ ├─ rx speed: 40 Gb/s = 2 lanes * 20 Gb/s │ ├─ tx speed: 40 Gb/s = 2 lanes * 20 Gb/s │ └─ authflags: none ├─ authorized: So 18 Mai 2025 19:32:04 UTC ├─ connected: So 18 Mai 2025 19:32:00 UTC └─ stored: Mi 04 Dez 2024 13:30:37 UTC ├─ policy: auto └─ key: no ● Other World Computing Express 4M2 ├─ type: peripheral ├─ name: Express 4M2 ├─ vendor: Other World Computing ├─ uuid: 00b0d9f4-2ca1-5a00-ffff-ffffffffffff ├─ generation: Thunderbolt 3 ├─ status: authorized │ ├─ domain: e1030000-0082-8088-a0aa-0f4ae1b6601d │ ├─ rx speed: 40 Gb/s = 2 lanes * 20 Gb/s │ ├─ tx speed: 40 Gb/s = 2 lanes * 20 Gb/s │ └─ authflags: none ├─ authorized: So 18 Mai 2025 19:32:10 UTC ├─ connected: So 18 Mai 2025 19:32:00 UTC └─ stored: Fr 15 Nov 2024 18:50:06 UTC ├─ policy: auto └─ key: no
And the installed drives report this (note how the newer 970s report as 980PRO due to their different controller – nvme0 is the drive in the Thinkpad itself):
sudo nvme list -v Subsystem Subsystem-NQN Controllers ---------------- ------------------------------------------------------------------------------------------------ ---------------- nvme-subsys0 nqn.2014.08.org.nvmexpress:19871987PNY43191910240407129PNY CS3030 1TB SSD nvme0 nvme-subsys1 nqn.2014.08.org.nvmexpress:144d144dS4J4NX0R820418K Samsung SSD 970 EVO Plus 2TB nvme1 nvme-subsys2 nqn.2014.08.org.nvmexpress:144d144dS4J4NM0W709872R Samsung SSD 970 EVO Plus 2TB nvme2 nvme-subsys3 nqn.2014.08.org.nvmexpress:144d144dS4J4NM0W709910T Samsung SSD 970 EVO Plus 2TB nvme3 nvme-subsys4 nqn.2014.08.org.nvmexpress:144d144dS4J4NX0W533340P Samsung SSD 970 EVO Plus 2TB nvme4 nvme-subsys5 nqn.1994-11.com.samsung:nvme:980PRO:M.2:S6P1NF0WA41713A nvme5 nvme-subsys6 nqn.1994-11.com.samsung:nvme:980PRO:M.2:S6P1NF0WA41705Z nvme6 nvme-subsys7 nqn.1994-11.com.samsung:nvme:980PRO:M.2:S6P1NS0T218626K nvme7 nvme-subsys8 nqn.1994-11.com.samsung:nvme:980PRO:M.2:S6P1NS0T417466P nvme8 Device SN MN FR TxPort Address Slot Subsystem Namespaces -------- -------------------- ---------------------------------------- -------- ------ -------------- ------ ------------ ---------------- nvme0 PNY43191910240407129 PNY CS3030 1TB SSD CS303225 pcie 0000:3e:00.0 nvme-subsys0 nvme0n1 nvme1 S4J4NX0R820418K Samsung SSD 970 EVO Plus 2TB 2B2QEXM7 pcie 0000:0a:00.0 nvme-subsys1 nvme1n1 nvme2 S4J4NM0W709872R Samsung SSD 970 EVO Plus 2TB 2B2QEXM7 pcie 0000:0b:00.0 nvme-subsys2 nvme2n1 nvme3 S4J4NM0W709910T Samsung SSD 970 EVO Plus 2TB 2B2QEXM7 pcie 0000:0c:00.0 nvme-subsys3 nvme3n1 nvme4 S4J4NX0W533340P Samsung SSD 970 EVO Plus 2TB 2B2QEXM7 pcie 0000:0d:00.0 nvme-subsys4 nvme4n1 nvme5 S6P1NF0WA41713A Samsung SSD 970 EVO Plus 2TB 4B2QEXM7 pcie 0000:10:00.0 nvme-subsys5 nvme5n1 nvme6 S6P1NF0WA41705Z Samsung SSD 970 EVO Plus 2TB 4B2QEXM7 pcie 0000:11:00.0 nvme-subsys6 nvme6n1 nvme7 S6P1NS0T218626K Samsung SSD 970 EVO Plus 2TB 4B2QEXM7 pcie 0000:12:00.0 nvme-subsys7 nvme7n1 nvme8 S6P1NS0T417466P Samsung SSD 970 EVO Plus 2TB 4B2QEXM7 pcie 0000:13:00.0 nvme-subsys8 nvme8n1 Device Generic NSID Usage Format Controllers ------------ ------------ ---------- -------------------------- ---------------- ---------------- /dev/nvme0n1 /dev/ng0n1 0x1 1.00 TB / 1.00 TB 512 B + 0 B nvme0 /dev/nvme1n1 /dev/ng1n1 0x1 1.73 TB / 2.00 TB 512 B + 0 B nvme1 /dev/nvme2n1 /dev/ng2n1 0x1 1.74 TB / 2.00 TB 512 B + 0 B nvme2 /dev/nvme3n1 /dev/ng3n1 0x1 1.74 TB / 2.00 TB 512 B + 0 B nvme3 /dev/nvme4n1 /dev/ng4n1 0x1 1.73 TB / 2.00 TB 512 B + 0 B nvme4 /dev/nvme5n1 /dev/ng5n1 0x1 1.74 TB / 2.00 TB 512 B + 0 B nvme5 /dev/nvme6n1 /dev/ng6n1 0x1 1.73 TB / 2.00 TB 512 B + 0 B nvme6 /dev/nvme7n1 /dev/ng7n1 0x1 1.73 TB / 2.00 TB 512 B + 0 B nvme7 /dev/nvme8n1 /dev/ng8n1 0x1 1.74 TB / 2.00 TB 512 B + 0 B nvme8
Now back to the original topic: The 3D printed chassis for these. Since the original unit comes with a noisy 60mm fan that sits tightly between the drives and a lot of metal with no way to really move air, and having two of them not really improving the situation in any way, I decided to not cable tie them together, but instead make a case for them with a larger fan that is capable to move air across with less overall noise. So here’s the first iteration:
Simple five-sided “bottom”, and a lid that closes the thing with all the external port poking out. The 120mm fan hole supports a regular fan grill, I decided for a mesh style one that keeps out smaller things much better than the classic chrome grills. It’s like a 500g piece when not using much infill (or walls), and it’s clearly stable enough in that configuration. The two metal trays that are inserted into the rails add a lot of stiffness anyway.
For a second iteration, I would give up the symmetry and add like a handle to it, since with those outer dimensions and nothing to grab onto, it is a little bit unwieldy. Also, but that’s fixable right now, I would make the fan suck in air instead of pushing it out, as I originally intended to use the caes the other way round, and now it’s a bit annoying with that draft in my face…when placed on the sofa
(not a crease, just a hard shadow from a cable!)
Here’s a couple more images from the thing:
Front with an ugly surplus Noctua fan:
Back with an old perforated 80mm fan cover that I put in with some of the same PLA via a cheap drawing pen:
As for DC power, I only use one original power supplies and a splitter. For different NVMe drives YMMV! Cable cost me 3.14€ from AliExpress, “Hight Power Cable DC 5.5*2.5mm Plug Splitter Cord 120W 10A For 19V 24V Monitoring Router 0.3M 18AWG All Copper Extendsion Power” (“1 female to 2 male, 0.3m”).
Interconnecting the units is possible with the original OWC Thunderbolt cables, but I also had success with a cheap “30cm USB C To USB C 3 2 Type C Gen2 2 Cable For IPhone 15 Pro Samsung Projection Charging Cable” for 3.48€ (last year) which limits transfer speeds to the second unit and all further devices to 20Gb/s like printed on the cable. For that, I also just ordered a USB4/TB4 cable with 40Gb/s and 20cm, but it’s not here yet and I cannot confirm it working at all or at full 40Gb/s. That one was 2.86€. Sweet spot is probably a 25cm cable, but I couldn’t find one that explicitly says TB3/TB4 (USB4 should also do the trick).
And that’s about it. Fully working, on this very Sunday I copied my entire RAID array data over that 2.5G connection to make it fully compatible with what I need it to be (pesky ZFS pitfalls). 9TB in like half a day. Disks are purring at 40ish °C under full load.
Here’s the STL files OWC Dual Top, OWC Dual Bot, also available on thingiverse (thing 7041892)