{
 "digest": null,
 "links": {
  "fits": [],
  "members": [],
  "cases": [],
  "assemblies": []
 },
 "prints": [],
 "part": {
  "id": "ada-6399-feathers3d",
  "name": "FeatherS3[D] ESP32-S3 (Unexpected Maker)",
  "kind": "",
  "method": "",
  "vendor": "adafruit",
  "sku": "6399",
  "model": "",
  "buy": [
   "https://www.adafruit.com/product/6399"
  ],
  "url": "https://www.adafruit.com/product/6399",
  "category": "board",
  "owned_qty": 0
 },
 "facts": {
  "id": "ada-6399-feathers3d",
  "name": "FeatherS3[D",
  "aka": [
   "FeatherS3",
   "UM FeatherS3D"
  ],
  "vendor": "adafruit",
  "sku": "6399",
  "url": "https://www.adafruit.com/product/6399",
  "qty_owned": 1,
  "category": "board",
  "frame": "origin PCB plan bottom-left per vendor STEP, +X long edge, Z=0 PCB bottom (tiny -0.005 pad protrusion); USB-C overhangs to x=-1.53",
  "body": {
   "size_mm": [
    52.79,
    22.86,
    6.5
   ],
   "outline": "rounded-rect",
   "pcb_thickness": 0.91,
   "max_height_top": 5.59,
   "max_height_bottom": 0.005
  },
  "mounting": {
   "holes": [
    {
     "xy": [
      2.54,
      2.54
     ],
     "dia": 2.5,
     "thread": null,
     "keepout_dia": 4.8
    },
    {
     "xy": [
      2.54,
      20.32
     ],
     "dia": 2.5,
     "thread": null,
     "keepout_dia": 4.8
    },
    {
     "xy": [
      48.72,
      2.54
     ],
     "dia": 2.54,
     "thread": null,
     "keepout_dia": 4.8
    }
   ],
   "pattern": "17.78 / 46.18 / 49.485 (3-post)",
   "notes": "4th hole (2.00 at 50.26,21.86) unusable - castellated corner, no boss; posts via lib/fits.py::feathers3d_posts()"
  },
  "ports": [
   {
    "type": "usb-c",
    "edge": "X=0",
    "center_y": 11.46,
    "center_z_above_pcb": 1.65,
    "w": 8.94,
    "overhang": 1.53,
    "notes": "wall cutout 13 x 8 R3 centered on shell center"
   },
   {
    "type": "jst-ph-2 battery",
    "edge": "+Y near x=10.8",
    "h": 5.59
   },
   {
    "type": "stemma-qt",
    "body": "6.0 x 2.9 x 4.26 tall, bbox center (22.33, 16.67), mates facing +Y"
   }
  ],
  "electrical": {
   "vin": "5V USB / 1S LiPo",
   "logic_v": 3.3,
   "protocols": [
    "i2c",
    "spi",
    "uart",
    "wifi",
    "ble"
   ],
   "connector": "JST-PH 2.0 2-pin battery; STEMMA QT I2C"
  },
  "cad": {
   "file": "ada-6399-feathers3d.step",
   "fidelity": "vendor",
   "source": "UnexpectedMaker/esp32s3 repo, series_d/3d models/ (copy of hardware/ref/FeatherS3D.STEP)",
   "verified": true
  },
  "sources": [
   {
    "facts": "all mechanical",
    "ref": "hardware/feathers3d.md (measured from vendor STEP, 2-pass)",
    "date": "2026-07-23"
   }
  ],
  "confidence": "high - vendor STEP independently measured twice; hand-measured Y was 0.36 under, prefer STEP"
 },
 "models": [
  {
   "handle": "sarg",
   "fidelity": "vendor",
   "verified": true,
   "visibility": "public",
   "url": "/m/sarg/ada-6399-feathers3d",
   "files": [
    "ada-6399-feathers3d.step",
    "part.yaml"
   ]
  }
 ],
 "related": {
  "notes": {
   "exact": [
    {
     "handle": "sarg",
     "id": "espressif-usb-device-may-be-coldcard-sparrow-holds-ports",
     "title": "Fix for mistaking another USB device for the target ESP32 board \u2014 a locked 'Espressif Systems Espressif Device' turned out to be the user's Coldcard setup, and Sparrow holds every serial port",
     "status": "provisional",
     "visibility": "public",
     "url": "/n/sarg/espressif-usb-device-may-be-coldcard-sparrow-holds-ports"
    }
   ],
   "chip": [
    {
     "handle": "sarg",
     "id": "feathers3d-get-battery-voltage-phantom-4-86v-use-max17048",
     "title": "Fix for feathers3 get_battery_voltage() reading a rock-steady 4.86 V on FeatherS3D \u2014 the D variant has no divider, read the MAX17048 fuel gauge at 0x36 instead",
     "status": "working",
     "visibility": "public",
     "url": "/n/sarg/feathers3d-get-battery-voltage-phantom-4-86v-use-max17048"
    },
    {
     "handle": "sarg",
     "id": "stemma-soil-sensor-and-max17048-both-0x36-separate-buses",
     "title": "STEMMA soil sensor and MAX17048 fuel gauge both default to I2C 0x36 \u2014 on FeatherS3D put the soil sensor on the second STEMMA port (IO16/IO15, a separate bus)",
     "status": "working",
     "visibility": "public",
     "url": "/n/sarg/stemma-soil-sensor-and-max17048-both-0x36-separate-buses"
    }
   ],
   "addr": []
  },
  "parts": {
   "variants": [],
   "interface": [],
   "mounting": [],
   "cooccur": [
    {
     "product": "adafruit-5364-esp32-s3-devkitc-1-esp32-s3-wroom-2-32mb-flash",
     "name": "ESP32-S3-DevKitC-1 - ESP32-S3-WROOM-2 - 32MB Flash 16MB PSRAM",
     "why": "2 shared lessons",
     "url": "/p/adafruit-5364-esp32-s3-devkitc-1-esp32-s3-wroom-2-32mb-flash"
    },
    {
     "product": "goouuu-esp32-s3-cam-case-wall-mount-and-din-rail-bodies",
     "name": "GOOUUU ESP32-S3-CAM case - wall-mount and DIN-rail bodies",
     "why": "2 shared lessons",
     "url": "/p/goouuu-esp32-s3-cam-case-wall-mount-and-din-rail-bodies"
    },
    {
     "product": "goouuu-esp32-s3-cam-tripod-case-body-lid",
     "name": "GOOUUU ESP32-S3-CAM tripod case (body + lid)",
     "why": "2 shared lessons",
     "url": "/p/goouuu-esp32-s3-cam-tripod-case-body-lid"
    },
    {
     "product": "goouuu-esp32s3cam",
     "name": "GOOUUU ESP32-S3-CAM (DevKitC-style camera dev board)",
     "why": "2 shared lessons",
     "url": "/p/goouuu-esp32s3cam"
    },
    {
     "product": "waveshare-esp32-s3-cam-gc0308-tripod-case-body-lid",
     "name": "Waveshare ESP32-S3-CAM-GC0308 tripod case (body + lid)",
     "why": "2 shared lessons",
     "url": "/p/waveshare-esp32-s3-cam-gc0308-tripod-case-body-lid"
    },
    {
     "product": "waveshare-esp32s3-cam-gc0308",
     "name": "Waveshare ESP32-S3-CAM-GC0308 (AIoT camera dev board)",
     "why": "2 shared lessons",
     "url": "/p/waveshare-esp32s3-cam-gc0308"
    },
    {
     "product": "ada-4026-soil-sensor",
     "name": "Adafruit STEMMA Soil Sensor (capacitive)",
     "why": "1 shared lesson",
     "url": "/p/ada-4026-soil-sensor"
    }
   ],
   "owners": [],
   "addr": []
  }
 }
}