ShiboSoftwareDev/linux-gameboy-advance

A multilayer PCB carrier/router board integrating USB-C power/data, battery charging and regulation, display/SD interfaces, UART/I²C/SPI headers, controls, audio/volume hardware, and RGB status LEDs with reviewed routed copper and vias.

Version
1.0.138
License
unset
Stars
0

mechanical/enclosure-spec.json

{
  "schemaVersion": 1,
  "designIntent": "Serviceable Linux handheld enclosure; every opening and PCB hole has an assigned function.",
  "datum": "PCB centre, PCB mid-plane Z=0, millimetres",
  "shell": {
    "frontMaterial": "FDM PETG candidate; fit and slicer qualification required",
    "rearMaterial": "FDM PETG candidate; fit and slicer qualification required",
    "nominalWallMm": 1.4,
    "closure": "Four side-entry ISO 7046 Type H M2x5 screws into CNC Kitchen M2 Short inserts in front-shell tabs; PCB fastening independent.",
    "pcbIsolation": "Four 3.2 ID x 7 OD x 0.5 mm nylon washers beneath top-entering M3x6 PCB screw heads.",
    "registration": "Four 8.4 mm rear-shell screw piers enter 9.0 mm cover-wall pockets; 0.30 mm seam. Upper port walls lift off with front cover."
  },
  "retention": [
    {
      "item": "PCB and shell",
      "method": "4 M3x6 PCB screws into rear-shell M3 Standard inserts; 4 separate M2x5 side-entry case screws into M2 Short inserts",
      "loadPath": "PCB screw head -> nylon washer -> PCB -> rear-shell boss; separate lid tabs -> M2 insert -> side screw -> rear wall"
    },
    {
      "item": "LCD",
      "method": "4 ISO 7045 M3x6 screws and 3.2 ID x 7 OD x 0.5 nylon washers into CNC Kitchen M3 Standard inserts; front 0.8 mm foam stock, rear 0.5 mm foam stock",
      "loadPath": "Front bezel -> foam -> LCD inactive border -> rear foam -> carrier; M3 screws through PCB anchor carrier independently."
    },
    {
      "item": "Face controls",
      "method": "Six rear-inserted flanged caps with switch-spring return; rocking D-pad over a 4 mm diameter x 0.7 mm silicone/PET pivot pad.",
      "loadPath": "Finger -> cap -> switch stem; D-pad centre -> pivot pad -> PCB."
    },
    {
      "item": "Shoulder controls",
      "method": "Two rounded captive sliding keys in close-fit rear guides, each with twin anti-yaw rails and independent hidden retaining tabs",
      "loadPath": "finger -> solid key face -> blind actuator pocket -> TS6695 stem; side tabs prevent pull-out"
    },
    {
      "item": "Battery",
      "method": "MPD BH4AAW with four alkaline AA cells facing the rear door. Two printed PCB-side keepers with M2x5 screws and M2 Short inserts capture the holder; four rear-shell corner ledges support its frame.",
      "loadPath": "Holder frame -> rear-shell ledges; closed holder back -> printed keepers -> M2 inserts -> rear-shell bosses. Cells are not clamped by the door."
    },
    {
      "item": "Speaker",
      "method": "CMS-23558N-L152B factory-wired 23 mm 8 ohm 1 W speaker, front gasket and retainer; two ISO 7046 Type H M2x4 screws into M2 Short inserts.",
      "loadPath": "retainer -> 2x M2 screws -> front-shell bosses and heat-set inserts; speaker seals against the front grille gasket"
    },
    {
      "item": "Volume extension",
      "method": "Split FDM PETG candidate collar concentric with the real 14 mm C231765 wheel, with twelve internal grip ribs and thirty-six shallow outer traction grooves; trial fit required",
      "loadPath": "finger -> printed collar -> serrated C231765 wheel; no secondary axle, friction idler, shell bearing or cantilever is used"
    }
  ],
  "pcbMounts": [
    {
      "name": "MH_TOP_LEFT",
      "x": -59.5,
      "y": -34,
      "fastener": "ISO 7045 M3x6"
    },
    {
      "name": "MH_TOP_RIGHT",
      "x": 55.5,
      "y": -38,
      "fastener": "ISO 7045 M3x6"
    },
    {
      "name": "MH_BOTTOM_LEFT",
      "x": -66,
      "y": 14,
      "fastener": "ISO 7045 M3x6"
    },
    {
      "name": "MH_BOTTOM_RIGHT",
      "x": 62,
      "y": 34.5,
      "fastener": "ISO 7045 M3x6"
    }
  ],
  "lcdMounts": [
    {
      "name": "MH_LCD_LT",
      "x": -48.75,
      "y": 32.75,
      "fastener": "ISO 7045 M3x6",
      "pcbHoleDiameterMm": 3.3
    },
    {
      "name": "MH_LCD_RT",
      "x": 51,
      "y": 33,
      "fastener": "ISO 7045 M3x6",
      "pcbHoleDiameterMm": 3.3
    },
    {
      "name": "MH_LCD_LB",
      "x": -20,
      "y": -35.5,
      "fastener": "ISO 7045 M3x6",
      "pcbHoleDiameterMm": 3.3
    },
    {
      "name": "MH_LCD_RB",
      "x": 66,
      "y": -31,
      "fastener": "ISO 7045 M3x6",
      "pcbHoleDiameterMm": 3.3
    }
  ],
  "externalOpenings": [
    {
      "id": "DISPLAY_WINDOW",
      "purpose": "Visible active LCD area",
      "userAccessible": true
    },
    {
      "id": "FACE_CONTROLS",
      "purpose": "D-pad, A/B/X/Y, Select and Start travel",
      "userAccessible": true
    },
    {
      "id": "SHOULDER_CONTROLS",
      "purpose": "Guides for captive L/R paddles",
      "userAccessible": true
    },
    {
      "id": "USB_C",
      "purpose": "Single 5 V power and USB2/FEL data port",
      "userAccessible": true
    },
    {
      "id": "MICROSD",
      "purpose": "Card insertion at the socket mouth",
      "userAccessible": true
    },
    {
      "id": "POWER_SLIDER",
      "purpose": "Guarded power control",
      "userAccessible": true
    },
    {
      "id": "VOLUME_WHEEL",
      "purpose": "Concentric curved-wall relief exposes a direct-drive printed collar on the real C231765 wheel",
      "userAccessible": true
    },
    {
      "id": "SPEAKER_GRILLE",
      "purpose": "Front acoustic outlet clear of the user's normal grip",
      "userAccessible": false
    },
    {
      "id": "BATTERY_DOOR",
      "purpose": "Replace four alkaline AA cells without removing the PCB",
      "userAccessible": true
    },
    {
      "id": "SIDE_CASE_SCREWS",
      "purpose": "Four intentional M2x5 case-closure fasteners, clear of controls",
      "userAccessible": false
    }
  ],
  "intentionallyInternal": [
    "J_BAT and battery wiring",
    "J_UART standard programmer",
    "J_I2C",
    "J_SPI",
    "SW_RESET",
    "JP_BOOT solder jumper",
    "J_SPK wiring",
    "D_STATUS RGB service/debug LED; inspect with the lid removed, no external opening or light pipe",
    "U_TEMP PCB temperature sensor; no external probe or enclosure opening"
  ],
  "battery": {
    "holder": "MPD BH4AAW",
    "cells": "Four 1.5 V alkaline AA; no mixing chemistries or old/new cells",
    "charging": "None. USB is power/data only and cannot recharge AA cells.",
    "nominalHolderEnvelopeMm": {
      "width": 57.15,
      "height": 61.72,
      "depth": 15.88
    },
    "maximumHolderEnvelopeMm": {
      "width": 57.65,
      "height": 62.22,
      "depth": 16.38
    },
    "bayCavityEnvelopeMm": {
      "width": 74.8,
      "height": 72.8,
      "depth": 20,
      "note": "Overall cavity before retention ledges, keepers and wiring; not clearance around the holder at every point."
    },
    "holderTopZMm": -4.5,
    "pcbUndersideZMm": -0.8,
    "retention": "Two anti-yaw guided keeper clamps with 1 mm vertical adjustment and four frame support ledges; installation before PCB; 2–3 mm M2 insert engagement across holder depth tolerance. Physical frame/contact and cell access still unverified.",
    "doorInstallation": "Insert upper tongue, pivot lower edge closed, then engage integral cantilever hook",
    "doorMaximumOpenAngleDeg": 8,
    "latchBeamMm": {
      "length": 16,
      "thickness": 1.2,
      "requiredDeflection": 0.55,
      "maximumDesignStrain": 0.01
    }
  },
  "requiredPrintedParts": [
    "GBA_CASE_BASE",
    "GBA_CASE_LID",
    "GBA_BATTERY_DOOR",
    "LCD_CARRIER",
    "SPK_RETAINER",
    "DPAD_CAP",
    "BUTTON_CAP_A",
    "BUTTON_CAP_B",
    "BUTTON_CAP_X",
    "BUTTON_CAP_Y",
    "BUTTON_CAP_SELECT",
    "BUTTON_CAP_START",
    "SHOULDER_PADDLE_L",
    "SHOULDER_PADDLE_R",
    "VOLUME_WHEEL_EXTENSION",
    "BATTERY_KEEPER_-1",
    "BATTERY_KEEPER_1"
  ],
  "nonPrintedMechanicalParts": [
    "MPD BH4AAW and four alkaline AA cells",
    "JST PHR-2 plus two SPH-002T-P0.5S contacts, on factory leads",
    "BuyDisplay ER-TFT035IPS-6 capacitive-touch display",
    "Same Sky CMS-23558N-L152B with factory SHR-02V-S-B plug",
    "8 ISO 7045 M3x6 screws",
    "8 CNC Kitchen M3 Standard 5.7x4.6 inserts",
    "8 nylon 3.2 ID x 7 OD x 0.5 washers",
    "6 ISO 7046 Type H M2x5 screws",
    "2 ISO 7046 Type H M2x4 screws",
    "8 CNC Kitchen M2 Short 3x3.6 inserts",
    "0.8 mm stock LCD front foam",
    "0.5 mm stock LCD rear foam",
    "0.4 mm speaker rim foam gasket",
    "4 mm diameter x 0.7 mm silicone/PET D-pad pivot pad"
  ],
  "prototypeGates": [
    "Print a shoulder-control coupon and confirm the 0.25 mm actuator rest gap, 0.40 mm guide clearances, concealed retaining-tab action and at least 0.40 mm usable switch stroke",
    "Verify LCD vendor tolerance and gasket compression with a real panel",
    "Cycle the battery latch and shoulder paddles at least 500 times",
    "Drop-test a populated prototype before production tooling",
    "Confirm the direct-drive volume collar's approximately 0.94 mm exterior reach, 0.45 mm radial shell clearance, axial retention, torque transfer and no shell rub over the complete adjustment range",
    "Verify face-cap return and free play on actual switches; measure D-pad diagonal and cardinal actuation through its 2.5-degree tilt and flange stop",
    "Verify real BH4AAW frame contacts, cell insertion and removal, holder tolerance, direct factory-lead routing and PHR-2 polarity.",
    "Measure Linux boot/peak load on USB alone and four alkaline AA at fresh and depleted voltage; qualify current limiting, dropout and speaker power. No runtime claim is made.",
    "Verify M2 side screw tool access, insert installation and engagement and M3 carrier washer clearances using physical parts."
  ],
  "status": "FDM_PROTOTYPE_NOT_PHYSICALLY_QUALIFIED"
}