Decoding TPM Header Pin Configurations: Compatibility Analysis Between TPM 1.2 and 2.0 Modules on ASRock H170M Pro4 Motherboard


2 views

The ASRock H170M Pro4 motherboard features a TPMS1 header with an unusual 17-pin (9x2 with one missing) configuration. Here's the pinout breakdown from the manual:

Bottom Row (left to right):
1. PCICLK
2. FRAME
3. PCIRST#
4. LAD3
5. +3V
6. LAD0
7. [NO PIN]
8. +3VSB
9. GND

Top Row (left to right):
10. GND
11. SMB_CLK_MAIN
12. SMB_DATA_MAIN
13. LAD2
14. LAD1
15. GND
16. S_WRDWN#
17. SERIRQ
18. GND

ASRock offers three distinct TPM module variants:

  • TPM-S Module (v1.2): Legacy TPM 1.2 implementation
  • TPM-S Module (v2.0): Updated version with same physical interface
  • TPM2-S Module (v2.0): Newer design with potential pinout differences

The confusion stems from different TPM implementations:

  1. 14-pin modules: Typically use LPC bus interface with reduced pin count
  2. 20-pin modules: Often include additional power/reset lines for enhanced functionality
  3. 17-pin (ASRock): Custom implementation with specific features:
    • Dedicated SMBus (pins 11-12) for system management
    • Separate 3V and 3VSB power rails

To programmatically verify TPM capabilities on Linux:

# Check TPM device presence
ls /dev/tpm*

# Get TPM version information
sudo tpm2_getcap properties-fixed

# Alternative check for TPM 1.2
sudo tpm_version

This C code snippet demonstrates low-level LPC bus communication that the TPM header uses:

#include 
#include 
#include 

#define TPM_BASE_ADDR 0xFED40000

int tpm_read(uint32_t offset, uint8_t *data, size_t len) {
    int fd = open("/dev/mem", O_RDWR);
    void *map = mmap(0, len, PROT_READ, MAP_SHARED, fd, TPM_BASE_ADDR + offset);
    memcpy(data, map, len);
    munmap(map, len);
    close(fd);
    return 0;
}

When choosing a TPM module for this motherboard:

  • Verify physical pin compatibility (17-pin with specific missing pin)
  • Check ASRock's QVL for tested modules
  • Consider Windows 11 requirements (mandates TPM 2.0)
  • For Linux systems, confirm kernel module support

If encountering detection problems:

  1. Verify +3VSB (standby power) is present
  2. Check LPC bus termination resistors
  3. Confirm BIOS settings enable TPM (often under Security settings)
  4. Update to latest UEFI firmware

The ASRock H170M Pro4 motherboard features a TPMS1 header with an unusual 17-pin (9x2 with one missing) configuration. This differs from the more common 14+1 or 20-pin TPM headers seen elsewhere. Here's the pinout breakdown from the manual:

Bottom row (left to right):
1. PCICLK
2. FRAME
3. PCIRST#
4. LAD3
5. +3V
6. LAD0
7. (No pin)
8. +3VSB
9. GND

Top row (left to right):
10. GND
11. SMB_CLK_MAIN
12. SMB_DATA_MAIN
13. LAD2
14. LAD1
15. GND
16. S_WRDWN#
17. SERIRQ
18. GND

ASRock offers three distinct TPM modules for different security requirements:

  • TPM-S Module (v1.2): Legacy TPM implementation using LPC bus
  • TPM-S Module (v2.0): Updated version maintaining the same physical interface
  • TPM2-S Module (v2.0): Alternative implementation with potential firmware differences

When working with TPM modules on this motherboard, consider these technical details:

// Example code to check TPM status in Linux
#include <stdio.h>
#include <tss2/tss2_tpm2_types.h>

int main() {
    TSS2_RC rc;
    TSS2_SYS_CONTEXT *sysContext;
    
    // Initialize TPM communication
    rc = Tss2_Sys_Initialize(sysContext);
    if (rc != TSS2_RC_SUCCESS) {
        printf("TPM initialization failed: 0x%x\n", rc);
        return 1;
    }
    
    // Check TPM version
    TPM2_CAPABILITY capability;
    rc = Tss2_Sys_GetCapability(sysContext, 
                               TPM2_CAP_TPM_PROPERTIES, 
                               TPM2_PT_FAMILY_INDICATOR, 
                               1, 
                               &capability);
    
    if (rc == TSS2_RC_SUCCESS) {
        printf("TPM version: %d.%d\n", 
              (capability.data.tpmProperties.tpmProperty[0].value >> 16) & 0xFF,
              capability.data.tpmProperties.tpmProperty[0].value & 0xFF);
    }
    
    Tss2_Sys_Finalize(sysContext);
    return 0;
}

The non-standard pin configuration presents these considerations:

  • Power delivery: Uses both +3V and +3VSB (standby power)
  • Bus interface: Utilizes LPC (Low Pin Count) bus signals
  • Missing pin: Pin 7 is intentionally omitted for keying

For Windows systems, verify TPM status with PowerShell:

# Check TPM version and status
Get-Tpm | Select-Object -Property TpmPresent, TpmReady, TpmVersion

# Detailed TPM information
tpmtool getdeviceinformation