opd_version: 0.4.0 product: EC-1 Wireless Controller category: [game-controller, consumer-electronics, battery-powered, wireless] maker: Example Devices (fictional) maker_endorsed: false synthetic: true revision_examined: EC-1 rev B, SKU EC1-BLK (fictional) units_examined: 30 methods: [ct, teardown, caliper, cmm, xrf] license: CC-BY-4.0 base_opd: null base_relation: null trust_level: draft layers: [parts, electronics, bom, process, line, risk, sim, compliance, issues, variants] metrics: observed_share: 0.367 bom_coverage_by_cost: 0.966 station_evidence_share: 0.455 card_completeness: 1.0 rebuild_check: true
EC-1 Wireless Controller
Synthetic example. EC-1 and Example Devices don't exist. Every number in this OPD is made up to show what an OPD holds and how the pieces connect. Use it to learn the format, build tools against it, or test an agent. Don't use it to make decisions about a real product.
Summary
A compact two-handed Bluetooth controller: one analog stick, four face buttons, two shoulder buttons, a 6-axis IMU, a 10 mm haptic motor and a 600 mAh cell, charged over USB-C. 120 x 56 x 22 mm, 69 g.
This OPD covers the product and the line that builds it, from parts to the packed box. It describes:
- 23 parts and 4 assemblies
- 16 operations on an 11-station U-shaped cell
- 6 inspection plans and 11 tests
- 12 PFMEA rows and 4 issues with their fixes
- a study of 5 line and design variants scored against the baseline
Trust level: draft. Inferred from 30 units "from the box", not yet corrected by the maker.
Intended uses
- Learn how a controller like this is built, and why each station exists.
- Simulate the line: the feature spreads feed Monte Carlo, the USD scene feeds MuJoCo.
- Quote it: a CM can price it from the BOM, the routing and
line/capex.csv. - Design your own: fork it, change what you'd change, and score your variant on the same scorecard.
Out of scope: counterfeits, and firmware, which an OPD never includes. Not endorsed by the maker.
Metrics
| Metric | Value | Badge |
|---|---|---|
| Observed share (claims measured or observed) | 36.7% (97 of 264) | self-reported |
| BOM coverage by cost | 96.6% | self-reported |
| Station evidence share | 45.5% (5 of 11) | self-reported |
| Card completeness | 100% | self-reported |
| Rebuild check | passed | self-reported |
| Reproduction agreement | not yet | self-reported |
Simulated line, baseline: rolled throughput yield 92.2% (Monte Carlo, 20,000 draws). Cycle time 30 s against a 36 s takt, estimated. Bottleneck: flash and RF test (sta:t1). Conversion cost 1.92 USD per good unit. Materials 10.20 USD, landed 12.97 USD.
Known gaps
- We see the spread across 30 units, not the factory's scrap. Yields are simulated from those spreads and the PFMEA, not measured on a line.
- Cycle times are time-study estimates. Line balance needs a discrete-event simulator the engine doesn't have yet.
- Passive values on the PCBA aren't identified, only counted (about 120 from CT).
- Should-cost is inferred, with low to medium confidence.
Layers and files
| Layer | Files |
|---|---|
| Everything, machine-readable | opd.yaml |
| Parts | parts/*.step (CAD), parts/*.glb (web), parts/materials.yaml, parts/tolerances.yaml, parts/stackups/ |
| 3D | model/ec-1.glb, model/ec-1-exploded.glb, sim/scene.usda |
| Electronics | electronics/board.yaml, ics.csv, interfaces.yaml |
| BOM and cost | bom/bom.csv, sourcing.csv, cost.csv |
| Process | process/flow.yaml, routing.csv |
| Line | line/layout.usda, line/layout.glb, line/sops/, sampling.yaml, test-plan.yaml, control-plan.csv, capex.csv |
| Risk | risk/pfmea.csv |
| Simulation inputs | sim/mc-inputs.yaml |
| Compliance | compliance/marks.yaml |
| Lessons | issues/*.yaml |
| Variants | variants/study.yaml |
| Raw data | raw/ (measurements, end-of-line sample, XRF, markings, teardown log, CT scan log) |
| Analysis | analysis/spreads.py rebuilds every derived number from raw/ |
| Pre-registration | prereg/predictions.yaml and its hash |
How to reproduce
Buy units, tear down, measure, then run python analysis/spreads.py. The full method is in REPRODUCE.md.
Cite, changes and contacts
Cite as: EC-1 Wireless Controller, OPD 0.4.0, synthetic example, Open Product, 2026. Changes: CHANGELOG.md. Corrections, disputes and takedowns: open an issue on this OPD, or email security@openproduct.co for anything sensitive.