MXM: Powerful, Misused, Hackable

A standard-compliant MXM card installed into a laptop, without heatsink

Today, we’ll look into yet another standard in the embedded space: MXM. It stands for “Mobile PCI Express Module”, and is basically intended as a GPU interface for laptops with PCIe, but there’s way more to it – it can work for any high-power high-throughput PCIe device, with a fair few DisplayPort links if you need them!

You will see MXM sockets in older generations of laptops, barebones desktop PCs, servers, and even automotive computers – certain generations of Tesla cars used to ship with MXM-socketed Nvidia GPUs! Given that GPUs are in vogue today, it pays to know how you can get one in low-profile form-factor and avoid putting a giant desktop GPU inside your device.

I only had a passing knowledge of the MXM standard until a bit ago, but my friend, [WifiCable], has been playing with it for a fair bit now. On a long Discord call, she guided me through all the cool things we should know about the MXM standard, its history, compatibility woes, and hackability potential. I’ve summed all of it up into this article – let’s take a look!

This article has been written based on info that [WifiCable] has given me, and, it’s also certainly not the last one where I interview a hacker and condense their knowledge into a writeup. If you are interested, let’s chat!

Simple Wireup, Generous Payoff

Yes, an Intel A380m card in MXM format

An MXM card has a whole side dedicated to its gold finger PCB edge connector. With 285 pins, there are a whole lot of interfaces you can get out of these, and all of them are within hobbyist reach! To make an MXM card work, you don’t need much, either.

For an MXM card to work, first, you need to be able to provide between 60 W and 100 W of power, with the ability to impose a power consumption limit on the card. The standard says that the voltage can be anywhere from 7 V to 20 V. This is obviously intended for laptop use, where the main power rail can either be at charger voltage or battery voltage, and it results in high efficiency – you don’t need a separate buck-boost regulator for, say, 12 V.

Then, you need a PCIe link of up to 16x, but because PCIe is cool like that, even a 1x link will work as long as you won’t be sad if the GPU is bottlenecked by it. You also might need to set up a few control GPIOs, like the card enable pin, and the power limit pin that tells the card whether it should run in lower-power mode or not. Plus, for some cards, you might need to give the card 5 V at an amp or two – the standard requires that, but it’s not clear why. Technically, you can even connect an MXM card to a Raspberry Pi 5 or CM4, as long as you can procure enough power from some external source – if you want a low-footprint GPU paired with a Pi, MXM makes that firmly within your reach.

In return, you get a wide array of interfaces. The coolest part is, undoubtedly, DisplayPort. You can get up to six 4-lane DP links out of an MXM card, as long as the GPU chip is okay with it. You might also be able to get VGA, LVDS, and even HDMI/DVI. MXM GPUs do support DP++, a DisplayPort mode that outputs HDMI-compatible signals, and you only need a few external components.

You also get a good few low-level interfaces, both for practical and debug purposes. Need to control a small fan? There’s a PWM output you might be able to use for fan control, and a tach signal input! Backlight control for an LCD panel you’ve wired up? There’s PWM for that too. Want to poke at the GPUs’ JTAG? The MXM socket has pins defined for that. It’s up to the cards to support or not support a lot of stuff that the MXM standard defines, so you might still benefit from a small MCU, but having those things seriously helps in embedded applications.

Speaking of JTAG and vendor freedom, of course, there are OEM pins – since anyone can produce MXM GPUs and systems, and the MXM standard has lasted for decades now, manufacturers like to put their own spin on them. You can often figure things out from MXM-equipped laptop schematics, and, sometimes it’s necessary to check a few. See, giving freedom to individual implementers is a double-edged sword, and MXM is an outstanding illustration on how modular standards can go wrong for regular users.

Compatible, Mostly

Looking at MXM, you might rejoice – thinking about upgrading and repairing your laptop well beyond the few years that the warranty period covers. However, manufacturers are not exactly interested in that. For them, the incentive structure for using MXM is usually completely different.

For a start, producing a board with five BGAs can in certain cases be easier than producing a board with fifteen, which is what you often have to do if you have to put a GPU and RAM on your board as opposed to an MXM module. And, for offering multiple GPU configurations of the same model in a way that lets the manufacturer cover multiple points on the supply-demand chart, it might just be easier to produce an array of MXM cards and then pair them to an array of GPU-less mainboards that have their own configurations. Not always – which is part of why you don’t see it lately.

This is not a standard-defined shape for an MXM card.

So, while you might like upgradability and repairability, you might find that MXM GPUs are not often offered as replacement parts for sale. And, what’s worse, if you’ve found an MXM card available for a different laptop, there’s no guarantee it will fit.

For instance, some cards are of the MXM 3.0 standard, while others are MXM 3.1, with slight but important differences like support for two DP ports on LVDS pins. However, most of the real-world differences are from either lack of standardization or from manufacturers straight up ignoring the standard.

The first hurdle is the most obvious, and that is the mechanical footprint. The MXM standard defines two possible card shapes, A variant or B variant, including things like heatsink and retention screw hole layout, and even component height for heatsink compatibility purposes. Many laptop manufacturers ignore these rules, producing cards of wacky shapes, or worse, shapes that almost match but are slightly incompatible in a subtle but severe way.

Then, there’s the VBIOS and driver problems. Many MXM cards have an onboard BIOS chip, whereas other cards rely on the laptop to feed them their BIOS during boot. If your card is of the latter type, you might need to add a UEFI module or hack the code. Alternatively, some cards ship with unpopulated flash chip footprints or unflashed chips on them, so you can give a BIOS to your card with a bit of soldering and flashing, as long as you can find an image that works.

As for drivers, Nvidia stands out there. Many Windows Nvidia drivers for MXM cards run hardware checks that tie the MXM cards to hardware IDs of laptops, and refuse to install the drivers if the card is installed in a laptop it was not expected to be installed in. You used to be able to work around it, but nowadays the driver signing mechanism severely limits the things you can do, a mechanism that in Windows has no sane leeway for user-tweaked drivers and, as such, acts as an effective way of proprietary vendor lock-in. So, if you want to upgrade your Nvidia MXM card and you run Windows, you might run into a bit of a brick wall.

Some Outright Hostile

Continuing this line of reasoning, there are slots that look like MXM but aren’t MXM, and I’m not talking about SMARC, which is a fun SoM standard reusing MXM slots, just like Pi Compute Modules reuse DDR sockets. No, I’m talking about manufacturers like Lenovo, who have added MXM socketed GPUs into some of their more recent laptops, but with completely different pinouts. They don’t advertise their slots as MXM, at least, which is a bonus.

Where are the power pins? Who knows!

Still, these cards are easy to confuse for actual MXM, and they fit into the slot all the same. The most firey factor is the power pin layout – a mindboggling change that has been made on some laptop models that can destroy your card and laptop even if the card fits mechanically. On one side of the MXM card, there’s an array of power pins – a matching amount of VIN and GND, often visible as a single large gold finger. For some unimaginable reason, a few manufacturers have made cards that remap the entire pinout and specifically put those power pins on the opposite side.

The pinout swapping is bad enough, but it’s the power pin swapping that really gets us, and gets every piece of tech involved to release the magic smoke, too. And then, there’s the few outright criminal cases where manufacturers have put power pins on both sides of the pinout. You can easily notice this when you look at your card, but you have to know to look out for it.

The MXM standard can’t prevent most of these problems, and whatever it tries to limit, laptop manufacturers can freely bypass. There’s no certification or compliance checks; fundamentally, in laptops, MXM isn’t used for your convenience – it’s used for the convenience of the manufacturer. If you look at your old MXM-equipped laptop and think that you might be able to upgrade its GPU, remember that there’s more than meets the eye.

All of these things, of course, don’t mean that you can’t hack on MXM otherwise. Just remember that, whatever you build, might be more specific to a certain breed of MXM slots in certain laptop lineups, than to MXM as a standard.

Still Hackable Anyway

How about a few good MXM hacks to show you what you can do? Remember, fundamentally, MXM is a high-power connection with a high-bandwidth PCIe link on it, which lets you pull some wonderful tricks!

For instance, here’s an MXM adapter for certain kinds of iMacs, that lets you install an NVMe SSDs into the MXM slot of your trusty iMac while preserving the MXM GPU connections! It involves changing a chipset strap to enable bifurcation, so there’s no power-hungry PCIe switch involved, and going from x16 to x8 on your MXM GPU won’t involve any notable bandwidth loss either. So, you can replace your SATA HDD or SSD with a speedy modern NVMe drive, that probably is way cheaper too!

It wouldn’t be hard to make a generic MXM to NVMe adapter, in general – and, [WifiCable] has a template KiCad project for you. Just like with mPCIe and M.2 cards, an MXM card is a PCB, after all, 1.2mm thick. You might be worried about leaving your laptop GPU-less, but many laptops with MXM cards still have an iGPU that is enabled whenever the MXM card is removed, though, that’s not a guarantee. We might see an MXM to Oculink adapter too, at some point!

There are also a few adapters to reuse MXM cards on the market, cheap and expensive alike. That kind of adapter is good for checking any MXM cards you have laying around, and on the cheap ones, you might even be able to solder the extra HDMI port on, as long as you get 5 V from somewhere. Sadly, none of them are open-source – yet.

This is an MXM tinkering adapter board from [WifiCable], exposing as much of MXM as humanly possible, with a wide range of power input options. Every single option is on either pin headers or SMD resistors, able to satisfy whichever obscure feature an MXM card might need, and tap at interfaces that manufacturers don’t expect you to tap. It’s a decently complex design, still yet to be polished, and it’s a 6-layer board big enough to go over a good few price breaks for any PCB fab – we’ve both learned a ton about high-speed design as [WifiCable] went about it. However, when it comes to playing with different MXM cards, exploring manufacturer differences and tinkering with card compatibility, this is as good of a testbench board as anyone can build!

Want to build your own MXM stuff, whether cards or card-carrying PCBs? Here’s a socket on LCSC, and with easyeda2kicad, you can easily get a footprint and 3D model for it. As for designing your own card or getting the [generic] pinout, you can find the MXM standard by looking up MXM_Specification_v31_r10.pdf.

Gone But Not Forgotten

DGFF card

Sadly, with the trend of making laptops thinner, we’ve been losing MXM, and the companies involved in defining the standard have not been all that interested in updating it, or even adhering to it for that matter. Nevertheless, due to industrial use of MXM, you can still find many modern cards in MXM format!

Furthermore, the spirit of MXM lives on. The proprietary DGFF standard is superseding MXM in Dell laptops – it’s thinner, and it’s fundamentally the same functionality that MXM provides. The same goes for the Framework 16 expansion bay modules – you could easily make an MXM to expansion bay card, and, [WifiCable] has made a KiCad sketch of one too!

For now, we still have laptops with MXM and almost-MXM cards around, and if you ever look into tinkering with those, you now have a better roadmap towards that. Despite the prevalence of soldered-on GPUs in laptops, the concept of GPU modules isn’t about to die out, and companies still put “GPU module” on the whiteboards every now and then during their product design processes.

23 thoughts on “MXM: Powerful, Misused, Hackable

  1. thanks to Apple using MXM at the time, my 2010 27″ iMac now has a Radeon Pro WX-4150 w/ 4GB of VRAM meant for an HP laptop of some kind, replacing the very dead Radeon HD 6750 it had when I got it.

    1. Don’t mind if I do!

      Assuming my motherboard support PCIe lane bifurcation (lets say one x16 lane slot bifurcated into x4x4x4x4), is the process of connecting multiple devices on the bus as simple as electrically connecting each of the 4 differential pair to a different device and connecting them on SMBus? Assume everything is magically length and impedance matched :D

      I can’t find a straight answer for this for whatever reason.

      Also how hard is PCIe PCB layout? 100MHz isn’t exactly very high but then again I’ve seen massive signal loss at lower frequencies so I don’t know what to think.

      1. The most important part for bifurcation is that you get a refclk to every device, SMBus isn’t as critical afaik, you often don’t need to connect that at all.
        The clock signal can’t just be split, so if the slot doesn’t provide an additional one, a clock buffer is needed. Other than that it is indeed as simple as wiring each set of lanes to the correct device in the correct order.

        In my experience, PCIe PCB layout isn’t really that difficult, as long as you pay attention to a few basic things, like impedance and length matching as you mentioned. Additionally it helps to keep in mind that you need an uninterrupted ground plane on the layer below and some ground vias around where your PCIe pairs switch layers.
        Even if you mess up a lot, PCIe is still very forgiving though, it can simply fall back to lower link widths and speeds until it does work so you’ll at least have something that works.

        1. Thank you for the detailed answer WifiCable.

          PCIe suddenly seems not out of reach, I’ve been playing around with some LLMs and image generators, and was thinking of building a custom PCIe bifurcation PCB to host multiple GPUs.

          Its a tall goal but one of these days I can hope…

          1. You might consider one of the $40-50 socket 2011 ‘mining’ boards that were designed for the Light Hash Rate 3060. It initially had a cheesy “is this an x8 slot” way to decide if it was in a mining board. And if it was it would slow hashing. So this motherboard has 5 PCIe x16 slots (x8 electrically) spaced out for the cards to get airflow. It ships with a cheesy BIOS that only enables 2 cores so they can cool the CPU with a low profile aluminum heatsink. You can grab a BIOS that unlocks the extra cores. But an 80w Ivy Bridge (E5 V2) 6 core is the fastest I could get booting IIRC. It has a single DDR3 slot, but worked great with a 32GB LRDIMM. They also make a 9 port one that uses 2 CPUs.

    2. I have a msi GT75 8rg laptop with an MXM gtx 1080. What other gpus could connect to that MXM socket that would be faster? There are also MXM to pcie cables to connect a desktop GPU to a laptop.

      1. Looking at pictures of the inside of that laptop, it looks like MSI used their own custom formfactor for the PCB of the MXM card on that model. It’s not gonna fit anything the heatsink isn’t specifically designed for. Maybe a card from a newer similar model of laptop might fit, but no guarantees.
        An MXM to external PCIe adapter as you mention might work, though display outputs connected to the MXM slot will definitely not work with that.

    1. I recovered Shah’s deleted x16 design and it looks like $12 for 5 boards shipped from pcbway. It is a much simpler design for sure, not sure if it is complete or workable. No traces to HDMI for one thing.

    2. Oh interesting, I never knew this one existed even though it’s been around since before I started mine.
      I should really consider making a more basic version like the deleted x16 one over there, would be a lot cheaper to produce for people who don’t need the full set of features.

  2. MXM cards tend to be pricey for what you get, but in reality you are paying for the size and a limited stock. It’s a hobby of mine to maintain some old HP computers as home servers (Compaq 8300 USDT and Elitedesk G1 800 USDT with 3rd/4th gen i-series processors respectively) which make use of the MXM type-a slot. It is getting harder to find type a cards for an affordable price, but it is a fun score when one pops up and it can be used for some light AI work (with some nvidia cuda capabilities), Plex transcoding (or a tdarr node if HEVC capable), or retroarch via Lakka.

  3. I have a workhorse HP Z2 i7 mini circa 2016 which has a MXM Nvidia Quadro GPU in it. I went down that slippery slope of trying to find a low end gaming GPU to replace the more CAD oriented one. In the end I gave up because of MXM type differences, form factor differences and lack of standards. Ultimately the stock GPU configuration with a few upgrades (faster NVME SSD, maxed out memory etc) were my go-tos as the machine aged. It’s still a daily driver to this day.

    1. HP’s Z2 Mini is a pretty neat box, I’ve been looking into them occasionally, they’re pretty interesting. Unfortuantely as far as I know HP machines are pretty picky about what MXM cards they take since they usually load the vbios from the motherboard, which needs to have an image compatible with the GPU you install. As for formfactor it’s just standard MXM Type-A, any card following that should at least physically fit.
      HP made a very interesting almost-Type-A Quadro RTX 3000 for the Z2 Mini G5 that might be a neat option to upgrade other less picky machines, if they have the small amount of extra space. The heatsink mounts are in the standard locations for that card as far as I can tell, but I doubt it’ll work in the older Z2 Mini machines.

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

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