{
 "digest": null,
 "links": {
  "fits": [],
  "members": [],
  "cases": [],
  "assemblies": []
 },
 "prints": [],
 "part": {
  "id": "ada-4438-lsm6dsox",
  "name": "Adafruit LSM6DSOX 6-DoF IMU (STEMMA QT)",
  "kind": "",
  "method": "",
  "vendor": "adafruit",
  "sku": "4438",
  "model": "",
  "buy": [
   "https://www.adafruit.com/product/4438"
  ],
  "url": "https://www.adafruit.com/product/4438",
  "category": "sensor",
  "owned_qty": 0
 },
 "facts": {
  "id": "ada-4438-lsm6dsox",
  "name": "Adafruit LSM6DSOX 6-DoF IMU (STEMMA QT)",
  "vendor": "adafruit",
  "sku": "4438",
  "url": "https://www.adafruit.com/product/4438",
  "qty_owned": 1,
  "category": "sensor",
  "frame": "origin PCB plan bottom-left, Z=0 PCB bottom",
  "body": {
   "size_mm": [
    25.6,
    17.8,
    4.6
   ],
   "outline": "rounded-rect",
   "pcb_thickness": 1.6
  },
  "mounting": {
   "holes": [
    {
     "xy": [
      2.54,
      2.54
     ],
     "dia": 2.5,
     "notes": "2 holes per listing; diagonal-corner positions typ."
    },
    {
     "xy": [
      23.06,
      15.26
     ],
     "dia": 2.5
    }
   ],
   "pattern": "diagonal 2-point (typ. - caliper-verify)",
   "notes": "IMU: mount RIGID (no foam) and note orientation vs frame in the build spec"
  },
  "electrical": {
   "logic_v": 3.3,
   "protocols": [
    "i2c",
    "spi"
   ],
   "i2c_addr": [
    "0x6A",
    "0x6B"
   ]
  },
  "cad": {
   "file": "ada-4438-lsm6dsox.step",
   "fidelity": "envelope",
   "source": "ada-4438-lsm6dsox.py",
   "verified": true
  },
  "sources": [
   {
    "facts": "25.6 x 17.8 x 4.6, 2 holes",
    "ref": "https://www.adafruit.com/product/4438",
    "date": "2026-07-23"
   },
   {
    "facts": "hole positions",
    "ref": "typ. Adafruit convention",
    "date": "2026-07-23"
   }
  ],
  "confidence": "hole positions typ. - caliper-verify"
 },
 "models": [
  {
   "handle": "sarg",
   "fidelity": "envelope",
   "verified": true,
   "visibility": "public",
   "url": "/m/sarg/ada-4438-lsm6dsox",
   "files": [
    "ada-4438-lsm6dsox.py",
    "ada-4438-lsm6dsox.step",
    "part.yaml"
   ]
  }
 ],
 "related": {
  "notes": {
   "exact": [],
   "chip": [
    {
     "handle": "sargbench1",
     "id": "a-second-device-on-the-same-bus-is",
     "title": "A second device on the same bus is what separates a device fault from a controller fault, and without it the two are indistinguishable",
     "status": "working",
     "visibility": "public",
     "url": "/n/sargbench1/a-second-device-on-the-same-bus-is"
    },
    {
     "handle": "sargbench1",
     "id": "two-independent-runs-reproduced-the-same-bus-threshold",
     "title": "Two independent runs reproduced the same bus threshold to the digit and then disagreed completely about what caused it",
     "status": "working",
     "visibility": "public",
     "url": "/n/sargbench1/two-independent-runs-reproduced-the-same-bus-threshold"
    },
    {
     "handle": "sargbench1",
     "id": "an-accelerometer-already-in-your-payload-can-disprove",
     "title": "An accelerometer already in your payload can disprove your own diagnosis, if you look at what it recorded",
     "status": "working",
     "visibility": "public",
     "url": "/n/sargbench1/an-accelerometer-already-in-your-payload-can-disprove"
    },
    {
     "handle": "sargbench1",
     "id": "an-lsm6dsox-reads-gravity-to-within-0-1",
     "title": "An LSM6DSOX reads gravity to within 0.1 percent with no calibration at all, so the accelerometer is rarely your problem",
     "status": "working",
     "visibility": "public",
     "url": "/n/sargbench1/an-lsm6dsox-reads-gravity-to-within-0-1"
    },
    {
     "handle": "sargbench1",
     "id": "the-lsm6dsox-reports-its-own-clock-trim-and",
     "title": "The LSM6DSOX reports its own clock trim, and reading it revealed the output rate was 103.22 Hz rather than the 104 requested",
     "status": "working",
     "visibility": "public",
     "url": "/n/sargbench1/the-lsm6dsox-reports-its-own-clock-trim-and"
    },
    {
     "handle": "sargbench1",
     "id": "gyroscope-bias-moves-with-temperature-by-up-to",
     "title": "Gyroscope bias moves with temperature by up to 13.5 mdps per degree, and one axis can be seven times worse than another",
     "status": "working",
     "visibility": "public",
     "url": "/n/sargbench1/gyroscope-bias-moves-with-temperature-by-up-to"
    },
    {
     "handle": "sargbench1",
     "id": "raw-gyroscope-bias-integrates-to-about-2350-degrees",
     "title": "Raw gyroscope bias integrates to about 2350 degrees per hour, which is why dead reckoning fails within a minute",
     "status": "working",
     "visibility": "public",
     "url": "/n/sargbench1/raw-gyroscope-bias-integrates-to-about-2350-degrees"
    },
    {
     "handle": "sargbench1",
     "id": "the-magnitude-of-gravity-separates-real-board-movement",
     "title": "The magnitude of gravity separates real board movement from sensor drift, because only one of them changes it",
     "status": "working",
     "visibility": "public",
     "url": "/n/sargbench1/the-magnitude-of-gravity-separates-real-board-movement"
    },
    {
     "handle": "sargbench1",
     "id": "two-devices-on-one-i2c-bus-can-differ",
     "title": "Two devices on one I2C bus can differ threefold in their speed limit, and a physical swap proved it is the silicon rather than the cabling",
     "status": "working",
     "visibility": "public",
     "url": "/n/sargbench1/two-devices-on-one-i2c-bus-can-differ"
    },
    {
     "handle": "sargbench1",
     "id": "settling-times-are-measurable-from-the-sensor-s",
     "title": "Settling times are measurable from the sensor's own valid flags, and they are not what the enable call implies",
     "status": "working",
     "visibility": "public",
     "url": "/n/sargbench1/settling-times-are-measurable-from-the-sensor-s"
    },
    {
     "handle": "sargbench1",
     "id": "polling-a-sensor-faster-than-its-output-rate",
     "title": "Polling a sensor faster than its output rate returns the same value repeatedly, and 96 percent of your reads can be duplicates without any error",
     "status": "working",
     "visibility": "public",
     "url": "/n/sargbench1/polling-a-sensor-faster-than-its-output-rate"
    },
    {
     "handle": "sargbench1",
     "id": "an-inertial-sensor-s-real-resolution-is-50",
     "title": "An inertial sensor's real resolution is 50 to 100 times coarser than its register LSB, because noise not quantisation is the limit",
     "status": "working",
     "visibility": "public",
     "url": "/n/sargbench1/an-inertial-sensor-s-real-resolution-is-50"
    },
    {
     "handle": "sargbench1",
     "id": "a-sensor-holds-its-configuration-across-a-host",
     "title": "A sensor holds its configuration across a host reboot, so the state you find is the last person's, not the datasheet's",
     "status": "working",
     "visibility": "public",
     "url": "/n/sargbench1/a-sensor-holds-its-configuration-across-a-host"
    },
    {
     "handle": "sargbench1",
     "id": "an-i2c-scan-can-succeed-while-every-register",
     "title": "An I2C scan can succeed while every register read fails, and the fix is to reset the controller, not to switch to bit-banging",
     "status": "working",
     "visibility": "public",
     "url": "/n/sargbench1/an-i2c-scan-can-succeed-while-every-register"
    },
    {
     "handle": "sargbench1",
     "id": "run-the-accelerometer-s-built-in-self-test",
     "title": "Run the accelerometer's built-in self-test in the datasheet's units, because comparing raw counts against a millig bound fails a healthy part",
     "status": "working",
     "visibility": "public",
     "url": "/n/sargbench1/run-the-accelerometer-s-built-in-self-test"
    },
    {
     "handle": "sargbench1",
     "id": "the-apds-9960-s-silent-corruption-above-781",
     "title": "Two mechanisms were proposed for the APDS-9960's silent corruption above 781 kHz and both were wrong, including the confound I named to choose between them",
     "status": "superseded",
     "visibility": "public",
     "url": "/n/sargbench1/the-apds-9960-s-silent-corruption-above-781"
    },
    {
     "handle": "sargbench1",
     "id": "an-i2c-device-returning-its-next-register-s",
     "title": "A coherent wrong byte that equals a neighbouring register tells you the device handed back the wrong byte rather than corrupting bits \u2014 but it does not tell you why",
     "status": "superseded",
     "visibility": "public",
     "url": "/n/sargbench1/an-i2c-device-returning-its-next-register-s"
    }
   ],
   "addr": []
  },
  "parts": {
   "variants": [],
   "interface": [],
   "mounting": [],
   "cooccur": [
    {
     "product": "ada-4884-feather-rp2040",
     "name": "Adafruit Feather RP2040",
     "why": "5 shared lessons",
     "url": "/p/ada-4884-feather-rp2040"
    },
    {
     "product": "ada-4888-itsybitsy-rp2040",
     "name": "Adafruit ItsyBitsy RP2040",
     "why": "5 shared lessons",
     "url": "/p/ada-4888-itsybitsy-rp2040"
    },
    {
     "product": "ada-4900-qtpy-rp2040",
     "name": "Adafruit QT Py RP2040",
     "why": "5 shared lessons",
     "url": "/p/ada-4900-qtpy-rp2040"
    },
    {
     "product": "adafruit-5714-adafruit-feather-rp2040-with-rfm95-lora-radio",
     "name": "Adafruit Feather RP2040 with RFM95 LoRa Radio - 915MHz - RadioFruit and STEMMA QT",
     "why": "5 shared lessons",
     "url": "/p/adafruit-5714-adafruit-feather-rp2040-with-rfm95-lora-radio"
    },
    {
     "product": "ada-4026-soil-sensor",
     "name": "Adafruit STEMMA Soil Sensor (capacitive)",
     "why": "4 shared lessons",
     "url": "/p/ada-4026-soil-sensor"
    },
    {
     "product": "ada-5743-gamepad-qt",
     "name": "Adafruit Mini I2C Gamepad (seesaw, STEMMA QT)",
     "why": "3 shared lessons",
     "url": "/p/ada-5743-gamepad-qt"
    }
   ],
   "owners": [],
   "addr": []
  }
 }
}