Continuing the series of blog posts on PCIe / PCI Express, this post looks at extenders and expanders. Note: Adafruit does not endorse any of the products in this post, links are for documenting sources.
Extenders
Sometimes one needs to extend a PCIe slot for testing, case configurations, etc. There are several variations on extensions on the market. Common is a x1 plug to a x1 socket connector. There appear to be passive implementations (“riser cards/cables) and more active products. It is interesting that USB cabling is sometimes used instead of a ribbon cable but the protocol is NOT USB. These come in x1 to x1, x4 to x4, x8 to x8 and x16 to x16.


There have been some extenders that passively (without additional electronics) adapt a plug (say x1) to a socket (larger than x1, like x16). If a card connected to the x16 socket can handle x1 signaling (one lane) this might work but perhaps an expander (below) might be better, especially as this has no provision for the extra power a larger card might need.

Expanders
A PCIe connection with only one lane (x1) can be used by some devices capable of using more lanes (say a x16 graphics card). It can also be multiplexed to share the lane with multiple devices. As discussed in the post on bandwidth, one cannot “pump more data” through the link than it was designed for. If an expander places more devices on the PCIe bus, it would be hoped that the expansion hardware and the operating system cooperated to intelligently use the limited bus resources. This is more “your mileage may vary (YMMV)” or “this is the wild west” than tried and true computer practice so if you are having issues, chalk it up to incompatibilities and not the fault of the computer manufacturer, as it may be that the user trying to bolt on a rocket engine to a car.

Here is a simple example of an expander, providing three PCIe x1 slots from one x1 PCIe plug. These have become more common with cryptocurrency mining but have uses with things like multiple solid state storage card attachment, etc.

This example provides for a x1 to x16 slot expansion. Extra power for larger cards is accommodated for. Again the “USB cable” is NOT USB but an interconnect cable.
And it’s all about Bandwidth! Do not expect a RAID5 array over a x1 expander to perform like on a dedicated x16 link in a desktop PC or NAS, it won’t.
There are more complex expanders. Some are marketed to help act as an extension chassis to a computer. SOme say “cryptominers only”.
The common sense advice is to do your research and see if hardware someone offers is compatible and sufficient for your application and that there is software support in the operating system. Buying from established companies with defined return policies can help with experimentation. Buying something shiny direct from AliExpress, the buyer is in the Fringe Zone.