With the recent launch of Windows 11 Microsoft also made having a hardware TPM module mandatory. Although this technology is not new (it was introduced in Windows 10 and Windows Server 2016), now, that most people can’t upgrade to Windows 11, it will (slowly) become mainstream. (My personal opinion on it is that is probably a step in the right direction, but Microsoft could have handled mandating it better..)
Several months ago, when I heard about this new requirement, I checked how much this upgrade for me would cost. At the time prices for a TPM2.0 module for my motherboard (Gigabyte AORUS GAMING 3) started at around €150, which is not much less then, but definitely comparable with, the price of the motherboard itself. Not prepared to pay that much for a “free” Windows 11 upgrade, I started to look into if and how I could create the same thing on my own.
Research, things I learnt
During the research for this module I learnt that these modules are not identical for each motherboard brand and model, which makes it somewhat difficult for the average user to buy the correct one. I found that the modules required for the various motherboards vary in only two parameters:
- The interface between the motherboard and the TPM2.0 module. Some motherboards communicate with the TPM2.0 module via SPI, some use I2C, other LPC. My motherboard uses the LPC interface.
- The physical socket/connector. There are many variations on this, my motherboard has a 6 * 2 pin header on it.
I also found a manufacturer of such TPM chips, Infineon. They have a whole range of chips catering for the older, TPM1.2 standard and the current, TPM2.0 standard, in all the different communications interface combinations.
My motherboard requires a chip with the LPC interface, so I ordered a few SLB9665 chips on eBay. It turns out that in small quantities I can buy this chip for around €3 apiece. Also, according to the datasheet, it needs almost no external parts to make it work with the motherboard.
Schematics and Circuit board
I designed the schematics using the Typical Application Circuit in the datasheet with minor changes also based on the recommendations in the datasheet. It contains little more than the SLB9665 chip and the connector to plug the whole thing in the motherboard:
All this fit nicely on a tiny PCB of 28mm*16.3mm:
A word about the sponsor of this PCB
Although it would be possible to make this PCB at home, I opted for a professionally made one by PCBWay. I have used them in the past with success and I knew that the PCBs I order would turn out great. The ordering process was smooth, and within 24 hours of ordering, the finished PCBs were handed over to the post. The PCBs arrived in perfect condition, with plenty of protection around them. The soldering pads were all clean and soldering was a breeze, no cleaning of the PCBs first was necessary. And get this: I ordered 10 PCBs, but I got 21 in the box. Way to go, PCBWay! If you also want your own custom PCB professionally manufactured, click on the picture to the left and order your PCBs today!
Results and … surprise!
After populating the PCB I couldn’t wait to try it out. I double and triple checked all soldering points, tested the board for short circuit and when I was satisfied that no red lights were blinking in my head, I proceeded and plugged it in the motherboard. Or at least that’s what I had in mind. However, to my grief I realized, that the header on the motherboard had a 2.0 mm pitch and I designed my PCB with a 2.54mm pitch connector! I was so mad at myself…
Luckily, I had a 2.0 mm pitch socket at home. Of course, it wouldn’t fit the 2.54mm pitch holes in the PCB. Still, with a bit of tinkering I was able to solder it to the board, using some tiny extension wires. The resulting piece of art is definitely not eye candy, but it did the job. I am writing these lines on a PC, that has my own (slightly ugly) TPM2.0 module and Windows 11 installed. All in all a success.
And this is how the final masterpiece looks connected to the motherboard. It’s been there for a while now, so it is dusty…:
Based on the above, TPM2.0 modules for various other brands/models can be created with minimal effort.
You can find the design files in my Github repo.