Extra SATA ports for X470D4U - custom PCB help

The X470D4U and X470D4U2-2T motherboards both have 6 SATA ports from the X470 chipset, even though X470 can support 8 SATA ports. (The X470D4U has an additional 2 ports provided by an ASM1061 controller.)

This got me thinking, can the remaining 2 ports be used? One of them is accounted for on the M2_2 slot, which provides 1 SATA port or 2 PCIe gen 3 lanes depending on the module. So it’s possible to use an adapter[0] to connect a regular 2.5" or 3.5" drive. But what about the last port?

If we take a look at the SATA I/O provided by X470 (and X370), it has the following options:

  • 4x SATA 3
  • 1x SATA Express (configurable as 2x SATA 3 or 2x PCIe 3.0)
  • 1x SATA Express (configurable as 2x SATA 3 or 2x PCIe 3.0)

So M2_2 is actually serviced by one of the SATAe options, hence it is able to provide the option of either SATA or PCIe. The detection logic is wired to Pin 69 on the M.2 module, which is pulled low for SATA modules or disconnected for PCIe modules.

So my theory is this: if pin 69 is pulled low, then both lanes that are wired to the M2_2 slot are configured for SATA. However, a standard M.2 module doesn’t connect the second lane to a SATA device.

I first tried to use a M.2 to SFF-8643 adapter[1] and a SFF-8643 mini-SAS HD cable to plug in two drives to the M.2 module. This partially worked, as I was able to plug in and use a drive on the normally unavailable second port, but the first port didn’t work - it would detect a drive but fail to initialize the link, and the chipset got very confused.

I realised that this is because the polarity of the SATA B pair in the M.2 standard is switched from PCIe. So now I am designing a custom PCB that implements the standard M.2 SATA interface on port 1 and the non-standard interface provided by the chipset on port 2.

I’ve never designed a PCB before, so I was wondering if anyone here could tell me if I’m doing anything catastrophically wrong?

  • Will ENIG work for the M.2 edge connector?
  • Should I be worried about the stubs from the SATA through hole connectors? Should I use SMD connectors instead or insert vias?
  • From what I can tell SATA specifies a differential impedance of 100 Ohms, but with my current trace width I am calculating a differential impedance over 110 Ohms, am I going to run into signal integrity issues? How do the other adapter modules I’ve tried deal with this?
  • Any recommendations on where to get PCBs manufactured? I was thinking of using OSH Park or JLCPCB.

KiCad files: https://drive.google.com/file/d/1RsGha2ZpzuLlWkPk43lfMHPmqTXUosQZ/view?usp=sharing

I used M.2 footprints from https://github.com/realteck-ky/kicad-m2ngff and https://github.com/jmgao/kicad-ngff and SATA footprints from https://github.com/KiCad/Connectors.pretty.

[0]: https://www.microsatacables.com/m-2-b-m-key-dual-notch-for-sata-7-pin-adapter-ngff-b-m-7pin
[1]: https://www.startech.com/en-au/hdd/m2e4sff8643

2 Likes

I got a few PCBs manufactured by OSH Park and they turned out in working order.

3 Likes

Very nice work - Thank you for posting this.