---
name: "jedec_dimm"
section: "4"
platform: "freebsd"
package: "base"
version: "16.0-CURRENT-20261027-61c70dc16a79"
release: "FreeBSD 16.0-CURRENT (2026-10-27)"
platforms: ["freebsd"]
url: "https://new.carta.tech/jedec_dimm"
---

# jedec\_dimm(4)

report asset information and temperatures for JEDEC DDR3 / DDR4 DIMMs

## NAME

**jedec\_dimm** – report asset information and temperatures for JEDEC DDR3 / DDR4 DIMMs

## SYNOPSIS

**device jedec\_dimm** **device smbus**

Alternatively, to load the driver as a module at boot time, place the following line in [loader.conf(5)](/loader.conf/5.md):

```
jedec_dimm_load="YES"
```

Addressing information must be manually specified in */boot/device.hints*:

```
hint.jedec_dimm.0.at="smbus0"
hint.jedec_dimm.0.addr="0xa0"
hint.jedec_dimm.0.slotid="Silkscreen"
```

## DESCRIPTION

The **jedec\_dimm** driver reports asset information (Part Number, Serial Number) encoded in the “Serial Presence Detect” (SPD) data on JEDEC DDR3 and DDR4 DIMMs. It also calculates and reports the memory capacity of the DIMM, in megabytes. If the DIMM includes a “Thermal Sensor On DIMM” (TSOD), the temperature is also reported.

The **jedec\_dimm** driver accesses the SPD and TSOD over the [smbus(4)](/smbus/4.md).

The data is reported via a [sysctl(8)](/sysctl/8.md) interface; all values are read-only:

- *dev.jedec\_dimm.X.%desc*

  a string description of the DIMM, including TSOD and slotid info if present.

- *dev.jedec\_dimm.X.capacity*

  the DIMM's memory capacity, in megabytes

- *dev.jedec\_dimm.X.mfg\_week*

  the week within the year in which the DIMM was manufactured

- *dev.jedec\_dimm.X.mfg\_year*

  the year in which the DIMM was manufactured

- *dev.jedec\_dimm.X.part*

  the manufacturer's part number of the DIMM

- *dev.jedec\_dimm.X.serial*

  the manufacturer's serial number of the DIMM

- *dev.jedec\_dimm.X.slotid*

  a copy of the corresponding hint, if set

- *dev.jedec\_dimm.X.temp*

  if a TSOD is present, the reported temperature

- *dev.jedec\_dimm.X.type*

  the DIMM type (DDR3 or DDR4)

These values are configurable for **jedec\_dimm** via [device.hints(5)](/device.hints/5.md):

- *hint.jedec\_dimm.X.at*

  the [smbus(4)](/smbus/4.md) to which the DIMM is connected

- *hint.jedec\_dimm.X.addr*

  the SMBus address of the SPD. JEDEC specifies that the four most-significant bits of the address are the “Device Type Identifier” (DTI), and that the DTI of the SPD is 0xa. Since the least-significant bit of an SMBus address is the read/write bit, and is always written as 0, that means the four least-significant bits of the address must be even.

- *hint.jedec\_dimm.X.slotid*

  optional slot identifier. If populated with the DIMM slot name silkscreened on the motherboard, this provides a mapping between the DIMM slot name and the DIMM serial number. That mapping is useful for detailed asset tracking, and makes it easier to physically locate a specific DIMM when doing a replacement. This is useful when assembling multiple identical systems, as might be done by a system vendor. The mapping between bus/address and DIMM slot must first be determined, either through motherboard documentation or trial-and-error.

If the DIMMs are on an I2C bus behind an [iicbus(4)](/iicbus/4.md) controller, then the [iicsmb(4)](/iicsmb/4.md) bridge driver can be used to attach the [smbus(4)](/smbus/4.md).

## EXAMPLES

Consider two DDR4 DIMMs with the following hints:

```
hint.jedec_dimm.0.at="smbus0"
hint.jedec_dimm.0.addr="0xa0"
hint.jedec_dimm.0.slotid="A1"
hint.jedec_dimm.6.at="smbus1"
hint.jedec_dimm.6.addr="0xa8"
```

Their [sysctl(8)](/sysctl/8.md) output (sorted):

```
dev.jedec_dimm.0.%desc: DDR4 DIMM w/ Atmel TSOD (A1)
dev.jedec_dimm.0.%driver: jedec_dimm
dev.jedec_dimm.0.%location: addr=0xa0
dev.jedec_dimm.0.%parent: smbus0
dev.jedec_dimm.0.%pnpinfo:
dev.jedec_dimm.0.capacity: 16384
dev.jedec_dimm.0.mfg_week: 30
dev.jedec_dimm.0.mfg_year: 17
dev.jedec_dimm.0.part: 36ASF2G72PZ-2G1A2
dev.jedec_dimm.0.serial: 0ea815de
dev.jedec_dimm.0.slotid: A1
dev.jedec_dimm.0.temp: 32.7C
dev.jedec_dimm.0.type: DDR4
dev.jedec_dimm.6.%desc: DDR4 DIMM w/ TSE2004av compliant TSOD
dev.jedec_dimm.6.%driver: jedec_dimm
dev.jedec_dimm.6.%location: addr=0xa8
dev.jedec_dimm.6.%parent: smbus1
dev.jedec_dimm.6.%pnpinfo:
dev.jedec_dimm.6.capacity: 8192
dev.jedec_dimm.6.mfg_week: 13
dev.jedec_dimm.6.mfg_year: 19
dev.jedec_dimm.6.part: VRA9MR8B2H1603
dev.jedec_dimm.6.serial: 0c4c46ad
dev.jedec_dimm.6.temp: 43.1C
dev.jedec_dimm.6.type: DDR4
```

You can use [smbmsg(8)](/smbmsg/8.md) to probe for devices.

## COMPATIBILITY

**jedec\_dimm** implements a superset of the functionality of the now-deleted jedec\_ts(4). Hints for jedec\_ts(4) can be mechanically converted for use with **jedec\_dimm**. Two changes are required:

1. In all jedec\_ts(4) hints, replace “jedec\_ts” with “jedec\_dimm”

2. In jedec\_ts(4) “addr” hints, replace the TSOD DTI “0x3” with the SPD DTI “0xa”

The following [sed(1)](/sed/1.md) script will perform the necessary changes:

```
sed -i ".old" -e 's/jedec_ts/jedec_dimm/' \
    -e '/jedec_dimm/s/addr="0x3/addr="0xa/' /boot/device.hints
```

## SEE ALSO

[iicbus(4)](/iicbus/4.md), [iicsmb(4)](/iicsmb/4.md), [smbus(4)](/smbus/4.md), [sysctl(8)](/sysctl/8.md)

## STANDARDS

JEDEC, *Standard 21-C, Annex K*.

JEDEC, *Standard 21-C, TSE2002av*.

JEDEC, *Standard 21-C, Annex L*.

JEDEC, *Standard 21-C, TSE2004av*.

## HISTORY

The **jedec\_dimm** driver first appeared in FreeBSD 12.0.

## AUTHORS

The **jedec\_dimm** driver and this manual page were written by Ravi Pokala ⟨*rpokala@FreeBSD.org*⟩. They are both based in part on the now-deleted jedec\_ts(4) driver and manual page, written by Andriy Gapon ⟨*avg@FreeBSD.org*⟩.
