{
  "schema": "koobique.station-design.v1",
  "revision": "R3.7-ID01",
  "title": "Station Compact",
  "status": "engineering_layout_not_qualified_hardware",
  "date": "2026-10-18",
  "units": "mm",
  "axes": {
    "x": "right",
    "y": "up",
    "z": "front"
  },
  "supersedes_visual": "R2 320 mm frame / 324 mm skins; historical text remains preserved",
  "envelope": {
    "base": [
      96,
      96,
      96
    ],
    "foot_height": 10,
    "skin": 2,
    "corner_radius": 8,
    "skin_seam": 2,
    "module": [
      34,
      96,
      96
    ],
    "module_gap": 2,
    "combined_with_feet": [
      132,
      106,
      96
    ]
  },
  "render": {
    "scene_units_per_mm": 0.025,
    "default_module": true,
    "shell_color": "#dbe1d8",
    "frame_color": "#23332f",
    "accent_color": "#18c594",
    "module_color": "#2e5146",
    "microfinish": "authored_visual_only"
  },
  "datums": {
    "A": "bottom inside seat y=-46",
    "B": "rear inside plane z=-46",
    "C": "left inside plane x=-46"
  },
  "layout": [
    {
      "id": "carrier",
      "label": "CM5-NANO-B carrier envelope",
      "zone": "base",
      "center": [
        20,
        0,
        -2
      ],
      "size": [
        10,
        41,
        55
      ],
      "source": "waveshare-nano",
      "kind": "occupied",
      "tolerance": 0.4,
      "note": "10 mm includes an assigned connector/component allowance; exact populated revision must be measured"
    },
    {
      "id": "cm5",
      "label": "CM5 installed envelope",
      "zone": "base",
      "center": [
        11.4,
        0,
        -2
      ],
      "size": [
        5,
        40,
        55
      ],
      "source": "cm5",
      "kind": "occupied",
      "tolerance": 0.2,
      "note": "4.94 mm mounted variant rounded to 5 mm; not 7.44 mm connector",
      "tolerance_basis": "assigned interface tolerance budget; not a supplier guarantee"
    },
    {
      "id": "cooler",
      "label": "CM5 cooler envelope",
      "zone": "base",
      "center": [
        2,
        0,
        -2
      ],
      "size": [
        12.7,
        41,
        56
      ],
      "source": "cooler",
      "kind": "occupied",
      "tolerance": 0.2,
      "note": "Separated conservative envelopes; thermal interface/contact must be resolved from supplier STEP and physical assembly",
      "tolerance_basis": "assigned interface tolerance budget; not a supplier guarantee"
    },
    {
      "id": "top_fan",
      "label": "Top exhaust fan",
      "zone": "base",
      "center": [
        0,
        36,
        0
      ],
      "size": [
        40,
        12,
        40
      ],
      "source": "noctua",
      "kind": "occupied",
      "tolerance": 0.3
    },
    {
      "id": "bottom_fan",
      "label": "Optional bottom intake fan",
      "zone": "base",
      "center": [
        0,
        -36,
        0
      ],
      "size": [
        40,
        12,
        40
      ],
      "source": "noctua",
      "kind": "optional_occupied",
      "tolerance": 0.3
    },
    {
      "id": "left_fan",
      "label": "Optional left intake fan",
      "zone": "base",
      "center": [
        -36,
        -7,
        0
      ],
      "size": [
        12,
        40,
        40
      ],
      "source": "noctua",
      "kind": "optional_occupied",
      "tolerance": 0.3
    },
    {
      "id": "bottom_filter",
      "label": "Front-removable bottom filter cassette",
      "zone": "base",
      "center": [
        0,
        -44,
        0
      ],
      "size": [
        54,
        2,
        54
      ],
      "source": "design",
      "kind": "occupied",
      "tolerance": 0.25
    },
    {
      "id": "left_filter",
      "label": "Removable left filter cassette",
      "zone": "base",
      "center": [
        -44,
        -7,
        0
      ],
      "size": [
        2,
        54,
        54
      ],
      "source": "design",
      "kind": "occupied",
      "tolerance": 0.25
    },
    {
      "id": "radio",
      "label": "FPC antenna region",
      "zone": "base",
      "center": [
        -6,
        20,
        43
      ],
      "size": [
        42,
        7,
        0.5
      ],
      "source": "taoglas",
      "kind": "occupied",
      "tolerance": 0.25,
      "note": "FXP830.07.0100C U.FL candidate; 0.5 mm envelope includes adhesive allowance; third-party RF approval required"
    },
    {
      "id": "supervisor",
      "label": "Fan / power supervisor reserved PCBA",
      "zone": "base",
      "center": [
        29,
        -21,
        -37
      ],
      "size": [
        20,
        24,
        6
      ],
      "source": "design",
      "kind": "occupied",
      "tolerance": 0.5
    },
    {
      "id": "power_entry",
      "label": "Protected 5 V entry reserved PCBA",
      "zone": "base",
      "center": [
        -22,
        -17,
        -39
      ],
      "size": [
        24,
        22,
        8
      ],
      "source": "design",
      "kind": "occupied",
      "tolerance": 0.5
    },
    {
      "id": "module_adapter",
      "label": "Vision PCIe-M.2 adapter reserved envelope",
      "zone": "module",
      "center": [
        59,
        0,
        -3
      ],
      "size": [
        3,
        48,
        58
      ],
      "source": "design",
      "kind": "occupied",
      "tolerance": 0.4
    },
    {
      "id": "module_card",
      "label": "Hailo-8L B+M 2242 envelope",
      "zone": "module",
      "center": [
        65,
        0,
        -3
      ],
      "size": [
        4.4,
        42,
        22
      ],
      "source": "hailo8l",
      "kind": "occupied",
      "tolerance": 0.2,
      "note": "4.4 mm reserved envelope includes depicted PCB and IC; purchased SKU dimensions remain a gate",
      "tolerance_basis": "assigned interface tolerance budget; not a supplier guarantee"
    },
    {
      "id": "module_heatsink",
      "label": "Vision vertical heat spreader envelope",
      "zone": "module",
      "center": [
        72.6,
        0,
        -3
      ],
      "size": [
        9.6,
        52,
        58
      ],
      "source": "design",
      "kind": "occupied",
      "tolerance": 0.2,
      "tolerance_basis": "assigned interface tolerance budget; not a supplier guarantee"
    },
    {
      "id": "module_blower",
      "label": "Reserved 25 mm axial exhaust envelope",
      "zone": "module",
      "center": [
        67,
        36,
        -3
      ],
      "size": [
        25,
        10,
        25
      ],
      "source": "design",
      "kind": "occupied",
      "tolerance": 0.4,
      "note": "Fan SKU, acoustic curve and life not selected; envelope only"
    },
    {
      "id": "module_tim",
      "label": "Vision thermal pad, compressed target",
      "zone": "module",
      "center": [
        67.5,
        0,
        -3
      ],
      "size": [
        0.6,
        13,
        13
      ],
      "source": "design",
      "kind": "mating",
      "tolerance": 0,
      "note": "Compression/force must be qualified with exact IC and spreader; no bare die load assumed"
    },
    {
      "id": "compute_tim",
      "label": "CM5 thermal interface reservation",
      "zone": "base",
      "center": [
        8.625,
        2,
        -6
      ],
      "size": [
        0.55,
        15,
        15
      ],
      "source": "design",
      "kind": "mating",
      "tolerance": 0,
      "note": "Supplier supplied thermal contact retained; reservation is not an order thickness"
    }
  ],
  "keepouts": [
    {
      "id": "rf",
      "center": [
        -6,
        20,
        43
      ],
      "size": [
        62,
        27,
        20.5
      ],
      "minimum_metal_clearance": 10,
      "exempt": [
        "radio"
      ],
      "note": "Assigned metal-free volume around FPC; polymer housing is allowed; actual RF pattern still requires chamber testing"
    },
    {
      "id": "rear_cable",
      "center": [
        -22,
        -17,
        -65
      ],
      "size": [
        30,
        30,
        34
      ],
      "note": "External plug and first cable bend; excluded from advertised body envelope"
    },
    {
      "id": "filter_service",
      "center": [
        0,
        -44,
        79
      ],
      "size": [
        56,
        4,
        56
      ],
      "note": "Free front extraction space, station switched off"
    },
    {
      "id": "module_service",
      "center": [
        114,
        0,
        0
      ],
      "size": [
        60,
        96,
        96
      ],
      "note": "60 mm clear to right for release and harness access, power disconnected"
    }
  ],
  "airflow": {
    "default_fans": [
      "top_fan"
    ],
    "test_fan_sets": [
      [
        "top_fan"
      ],
      [
        "top_fan",
        "bottom_fan"
      ],
      [
        "top_fan",
        "bottom_fan",
        "left_fan"
      ]
    ],
    "intakes": [
      "bottom",
      "left"
    ],
    "exhaust": "top",
    "base_design_heat_w": 16.5,
    "module_design_heat_w": 5,
    "ambient_test_c": [
      20,
      30,
      35
    ],
    "bulk_air_delta_c": 12,
    "air_density_kg_m3": 1.18,
    "air_cp_j_kg_k": 1006,
    "fan_mount_pitch": 32,
    "grille_slot_width": 2.8,
    "grille_slot_pitch": 4.8,
    "baffle_thickness": 1.2,
    "status": "path_hypothesis_not_CFD_or_measured_flow"
  },
  "power": {
    "input_v": 5,
    "qualified_input_a_required": 5,
    "admission_limit_w": 22.5,
    "budget_w": {
      "cm5": 12.5,
      "carrier_io": 1.5,
      "supervisor_radio": 0.75,
      "three_base_fans": 1.05,
      "vision_module_including_regulator_and_fan": 5,
      "cable_and_protection_loss": 0.7
    },
    "surge_reserve_w": 1,
    "usb_external_load_w": 0,
    "module_rail_a_limit": 1,
    "cold_plug_only": true,
    "note": "Design allocations, not measured powers. Verified 5 V/5 A contract required; higher-voltage PD is never applied to Nano carrier. Vision capability blocked unless full profile passes."
  },
  "mechanical_interface": {
    "side": "right",
    "key_rail_widths": [
      5,
      8
    ],
    "rail_length": 48,
    "rail_depth": 6.5,
    "rail_fit_total_clearance": 0.5,
    "latch": "two captive M2.5 screws for prototype",
    "harness": "16-pin PCIe FFC and separate protected keyed 5 V supply, accessible behind removable service cover",
    "blind_mate": false,
    "ffc_bend_radius_assumption": 5,
    "coax_bend_radius_assumption": 7,
    "connector_mating_force_to_pcb": false,
    "male_rail_x_range": [
      47,
      53.5
    ],
    "female_slot_x_range": [
      50.5,
      53.5
    ],
    "engagement_depth": 3
  },
  "materials": {
    "prototype_shell": "SLS PA12, supplier-qualified process; not fire-rated by default",
    "production_shell_candidate": "FR PC/ABS, nominal 2 mm; exact grade/colour/thickness qualification required",
    "internal_spreader": "6061-T6 aluminium, no structural radio enclosure",
    "feet": "replaceable silicone",
    "filter": "removable washable synthetic mesh, pressure curve to measure",
    "rib_to_wall_ratio": 0.6,
    "draft_deg_target": 2,
    "draft_texture_deg_target": 3,
    "prototype_assembly_clearance": 0.5,
    "moulded_assembly_clearance_target": 0.3
  },
  "verification": {
    "geometry": "AABB envelope checks and parametric artifact generation",
    "thermal": "not measured",
    "electrical": "no schematic or routed PCB release",
    "rf": "not certified",
    "manufacturing": "DFM proposal, tooling not released",
    "software": "module lifecycle proposal; production manager not implemented"
  },
  "sources": [
    {
      "id": "cm5",
      "url": "https://pip-assets.raspberrypi.com/categories/944-raspberry-pi-compute-module-5/documents/RP-008180-DS-6-cm5-datasheet.pdf",
      "checked": "2026-10-18"
    },
    {
      "id": "waveshare-nano",
      "url": "https://www.waveshare.com/product/cm5-nano-b.htm",
      "checked": "2026-10-18",
      "evidence": "official search index; direct page 403"
    },
    {
      "id": "cooler",
      "url": "https://datasheets.raspberrypi.com/cm5/cooler-product-brief.pdf",
      "checked": "2026-10-18"
    },
    {
      "id": "noctua",
      "url": "https://www.noctua.at/en/products/nf-a4x10-5v-pwm/specifications",
      "checked": "2026-10-18"
    },
    {
      "id": "fan-system",
      "url": "https://www.noctua.at/en/expertise/tech/axial-fans-in-series-or-parallel-operation",
      "checked": "2026-10-18"
    },
    {
      "id": "hailo8l",
      "url": "https://hailo.ai/products/ai-accelerators/hailo-8l-m-2-ai-acceleration-module-for-ai-light-applications/",
      "checked": "2026-10-18"
    },
    {
      "id": "taoglas",
      "url": "https://www.taoglas.com/datasheets/FXP830.07.0100C.pdf",
      "checked": "2026-10-18"
    },
    {
      "id": "rf-approval",
      "url": "https://www.raspberrypi.com/news/certifying-third-party-antennas-for-use-with-raspberry-pi-compute-modules/",
      "checked": "2026-10-18"
    },
    {
      "id": "pa12",
      "url": "https://www.eos.info/polymer-solutions/polymer-materials/multipurpose",
      "checked": "2026-10-18"
    },
    {
      "id": "pcabs",
      "url": "https://www.covestro.com/-/media/covestro/solution-center/brands/downloads/imported/1760081872.pdf?hash=5CB62F8BEE3DC5498CD2F51BF8BD32BC&rev=993685c632344d2ead1dd97dcf9d4d05",
      "checked": "2026-10-18"
    },
    {
      "id": "dfm",
      "url": "https://www.protolabs.com/services/injection-molding/plastic-injection-molding/design-guidelines/",
      "checked": "2026-10-18"
    }
  ],
  "service_geometry": {
    "front_filter_slot_width": 58,
    "front_filter_slot_top_y": -40,
    "filter_handle_max_z": 48,
    "filter_handle_width": 17,
    "filter_handle_height": 2.5,
    "front_lower_crossbar_y": -40,
    "filter_guide_x": [
      -29,
      29
    ],
    "filter_aperture_diameter": 42,
    "filter_media_diameter": 44,
    "filter_cassette_size": [
      54,
      54,
      2
    ],
    "filter_cassette_corner_radius": 3
  },
  "cable_routes": {
    "rf_coax": {
      "points": [
        [
          -6,
          20,
          42
        ],
        [
          -8,
          2,
          40
        ],
        [
          0,
          -12,
          34
        ],
        [
          16,
          -17,
          28
        ]
      ],
      "nominal_cable_length": 100,
      "service_reserve": 15,
      "maximum_curve_length": 85,
      "endpoint_status": "assigned connector approach region 2.5 mm ahead of PCB edge, not an asserted U.FL mating location; final termination must be resolved with supplier CAD",
      "minimum_bend_radius_target": 7,
      "curvature_verification_margin": 0.5,
      "cable_radius": 0.685
    }
  }
}
