# Requirements

This file lists what the board needs to do and every design decision made so far.
Items marked **TBD** (to be decided) or **provisional** still need an answer or a test.

## Must have

1. Display the word "RITHESH" (7 letters) using addressable RGB LEDs (WS2812-style).
2. Control the LEDs over Wi-Fi.
3. Be powered from a USB-C phone charger (5 V).

## Decisions made

| Decision | Choice | Notes |
|----------|--------|-------|
| Board size | About 300 x 70 mm | "Large" option. |
| Letter pattern | 5 x 7 grid per letter (5 columns wide, 7 rows tall) | Only the grid spots that form the letter get an LED. Patterns below. |
| LED spacing | 7 mm, center to center | Same spacing across and down. |
| LED type | **XL-5050RGBC-2812B** (XINGLIGHT, JLCPCB C2843785) - **PROVISIONAL** | 5.0 x 5.0 mm, rated 3.5-5.5 V, 12 mA per color. Stays provisional until the LED timing pre-check passes (see "Prototype plan"). |
| Total LEDs | **107** | Counted from the letter patterns below. |
| Power input | USB-C, 5 V, up to 3 A | Simplest option for a first board. |
| LED power limit | **WLED Maximum PSU Current = 2,000 mA** for the whole board | WLED reserves 120 mA for the ESP32, leaving approximately 1,880 mA for the LEDs. See "Power budget". |
| Wi-Fi chip | **ESP32-C3** (as a ready-made module) | Small, low cost, built-in USB (program over the same USB-C port), runs WLED. |
| Wi-Fi module | **ESP32-C3-MINI-1-N4** (JLCPCB C2838502) | 13.2 x 16.6 mm, 4 MB memory. Pads underneath, so it needs factory assembly. |
| Assembly | **Factory-assembled** by the PCB manufacturer | The manufacturer solders all parts. |
| Manufacturer | **JLCPCB** (board + assembly) | Parts come from JLCPCB's library, preferring "basic" parts (no setup fee). |
| Part placement | **All parts on the front** (single-sided assembly) | Cheaper and easier to check. Parts are visible, which is fine for v1. |
| Buttons | **3 buttons: Reset, Boot, and one user button** | The user button turns the display **on/off with a short press** (WLED button feature). |
| Button labels | **RESET**, **BOOT**, **ON/OFF** printed next to each button | White silkscreen text on the front, large enough to read easily. |
| Input protection | **TPS259531 eFuse** + SMAJ5.0A surge diode + USBLC6 USB ESD chip | The eFuse **replaces the resettable fuse**: soft start, current limit, and a 5.7 V overvoltage clamp in one chip. See "Input protection and power path". |
| Bulk capacitors | **4 footprints for 220 µF 16 V**, spread along the LED power rail; **2 populated, 2 marked DNP** | Extra capacitance can be added after prototype testing without a redesign. |
| Charger detection | **Wired now, used later** | Both USB-C CC pins connect to ESP32 analog pins (GPIO0 and GPIO1). Standard WLED first; detection can be added later in software. |
| 3.3 V regulator | **TI TLV76733DRVR** (JLCPCB C2848334) | 1 A, input rated to 16 V (18 V absolute max), low dropout. **10 µF ceramic in and 10 µF ceramic out** (X5R/X7R). |
| Test pads | 5 V in, 5 V out, 3.3 V, GND, LED data, eFuse FLT, eFuse ILM, **GPIO20 (RX), GPIO21 (TX)** | For measuring the prototype and for serial debugging. See "Test pads". |
| USB data resistors | **22 Ω in series on USB D+ and D-** (R14, R15), plus **2 capacitor spots to GND, not fitted** (C13, C14) | Espressif recommends reserving these near the chip (initial 22-33 Ω; capacitors initially unpopulated). Can be changed later without a redesign. |
| LED data resistor | **33 Ω in series** between the level shifter and LED1 (R13) | Damps ringing on the LED data line. Standard practice. |
| First order | **Small prototype batch only** | A larger order waits until every prototype test passes. |
| Mounting holes | **4 x M3** (3.2 mm, non-plated), centres 3.2 mm in from each corner edge, 7 mm keep-out circles; screw heads/washers up to 7.0 mm (6.4 mm to stay inside the board edge) | Checked against the LED grid, corners, antenna area and JLCPCB rules. See `hardware/pcb-layout-notes.md`. |
| LED labels on the board | **Individual LED names hidden** on the silkscreen; a clear **LED1** marker and data-direction arrows are printed | LED names stay in KiCad and the assembly files. |
| Edge rails | **JLCPCB may add 5 mm rails** on the long edges for assembly; removed afterwards, board stays 300 x 70 mm | Extra cost to be read from JLCPCB's quote before ordering. |

### Letter patterns (● = LED, · = empty)

```
  R        I        T        H        E        S        H
●●●●·    ·●●●·    ●●●●●    ●···●    ●●●●●    ·●●●●    ●···●
●···●    ··●··    ··●··    ●···●    ●····    ●····    ●···●
●···●    ··●··    ··●··    ●···●    ●····    ●····    ●···●
●●●●·    ··●··    ··●··    ●●●●●    ●●●●·    ·●●●·    ●●●●●
●·●··    ··●··    ··●··    ●···●    ●····    ····●    ●···●
●··●·    ··●··    ··●··    ●···●    ●····    ····●    ●···●
●···●    ·●●●·    ··●··    ●···●    ●●●●●    ●●●●·    ●···●
 18       11       11       17       18       15       17     = 107
```

### Quick size check

- One letter: 5 columns -> 4 gaps x 7 mm = 28 mm, plus 5 mm for the LED = about 33 mm wide.
  7 rows -> 6 gaps x 7 mm = 42 mm, plus 5 mm = about 47 mm tall.
- Whole word: with one empty column between letters, 7 x 5 + 6 = 41 columns ->
  40 gaps x 7 mm + 5 mm = about **285 mm wide**, leaving about 7 mm margin each side.
- Height: letters take about 47 mm of the 70 mm, leaving about 23 mm for the ESP32,
  power parts, and connectors. The ESP32 module (16.6 mm tall) sits at the bottom
  edge so its antenna has clear space.

## Power budget

The charger gives at most 3 A:

| Where the power goes | Current |
|----------------------|---------|
| All LEDs together (WLED limit), including standby current | **about 1.88 A** |
| ESP32 chip and its regulator (Wi-Fi bursts up to about 0.35 A) | up to 0.5 A |
| Safety margin (so the charger never runs at its limit) | at least 0.62 A |
| **Total** | **3.0 A** |

How this maps to WLED:

- WLED setting: **Maximum PSU Current = 2,000 mA for the whole board.** WLED reserves
  120 mA for the ESP32, leaving approximately **1,880 mA for the LEDs**
  (`MA_FOR_ESP = 120` in WLED's `wled00/bus_manager.h`).
- WLED estimates each LED at **55 mA** at full white (its default). The XL LED's
  datasheet gives 12 mA per color, so **36 mA per LED** at full white. WLED's estimate
  is therefore **intentionally conservative**: real LED current will be lower than
  WLED calculates. Keep the default 55 mA setting.
- The ESP32-C3 can briefly draw up to 335 mA during Wi-Fi transmit (datasheet), more
  than WLED's 120 mA estimate, so the worst case is about 1,880 + 335 = **2.2 A**.

What this means in practice:

- All 107 LEDs at full white would draw 107 x 36 mA = **3.85 A**. Standby is about
  0.3 mA per LED (about 32 mA total).
- WLED dims everything automatically to stay within the limit. Full white ends up
  at about 30% of full brightness; single colors can run much brighter.

## Charger and USB-C rules

- Use a USB-C charger labeled **"5V ⎓ 3A"**, or a USB-C Power Delivery (PD) charger
  rated **15 W or more**, with a **USB-C to USB-C** cable.
- Older or small chargers, laptop USB ports, and USB-A to USB-C cables may give only
  0.5 to 1.5 A.
- The board has two **5.1 kΩ resistors** on the USB-C "CC" pins. Without them, a
  USB-C charger will not turn on its 5 V output.
- USB-C allows at most **10 µF** on the 5 V line at plug-in (for boards that do not
  negotiate Power Delivery). The eFuse soft start keeps the board within this: the
  charger only sees about 5 µF (see below).
- The USB-C connector chosen in the schematic must be rated for at least 3 A.

## Input protection and power path

Order from the USB-C connector: **surge diode + USB ESD chip + 4.7 µF -> eFuse ->
board 5 V rail** (LEDs, bulk capacitors, level shifter, 3.3 V regulator).

| Job | Part | JLCPCB # | Key values |
|-----|------|----------|------------|
| 5 V surge diode (TVS) | SMAJ5.0A | C2925443 | 5.0 V standoff, 6.4 V breakdown, clamps to about 9.2 V in a big surge. "Preferred extended" part. |
| USB data ESD protection | USBLC6-2SC6 (ST) | C7519 | Protects D+ and D-. |
| Charger-side capacitor | 4.7 µF ceramic, X5R/X7R, 10 V or more | standard | Total seen by the charger at plug-in about 5 µF (USB-C allows 1-10 µF). |
| **eFuse** | **TPS259531DSGR** (TI) | **C2155674** | Replaces the resettable fuse. 34 mΩ switch, 20 V absolute max input. |
| Current-limit resistor (ILM pin) | **750 Ω, 1%** | standard | Limit **2.71 A typical, 2.49-2.90 A guaranteed range** (TI formula I = 2000 / R + 0.04, about ±7% plus resistor tolerance). Stays below the charger's 3 A and above the board's 2.2 A maximum. |
| Soft-start capacitor (dVdt pin) | **100 nF**, X7R, 10 V or more | standard | Output ramps at about 0.42 V/ms (about 12 ms to 5 V). Plug-in current at most about 0.6 A even with all four 220 µF fitted. |
| Enable / undervoltage divider (EN/UVLO pin) | **100 kΩ (top) + 39 kΩ (bottom)** | standard | Board turns on above about 4.3 V (4.0-4.5 V) and off below about 3.9 V. Keeps the EN pin under its 7 V limit even at a 20 V input. |
| Fault pin (FLT) | **100 kΩ pull-up to 3.3 V** + test pad | standard | Reads high normally, low during a fault. Not connected to the ESP32. |
| Current monitor (ILM pin) | test pad | - | Voltage proportional to current, about **0.21 V per amp** with 750 Ω (TI: 276 µA/A). Response speed not verified. |

What the TPS259531 does (this exact version, from TI's device comparison table):

- **Overvoltage clamp:** starts at 5.5-5.9 V and holds the output at 5.2-5.7 V
  (5.45 V typical). Normal 5.0-5.2 V chargers never trigger it.
- **Faults restart automatically:** overload or short -> current limit -> if it gets too
  hot (157 °C), it turns off, cools, and **retries about every 93 ms**. No need to unplug.
  (The TPS259530 locks off and the TPS259533 has an inverted enable - do not substitute.
  TPS259535 is the only acceptable alternate.)
- **Start-up heat:** about 1.75 W for 9-17 ms with all four bulk capacitors fitted, far
  below the chip's thermal shutdown time (TI Fig. 26). Normal running at 2.2 A: about
  0.23 W, about +15 °C.
- **Short circuit:** reacts within 5 µs, then cycles off/on through thermal shutdown
  (about 5% on-time) until the short is removed.

The resettable fuse (1812L300/24GR, C20627123) is **no longer used**.

## Bulk capacitors (LED power rail)

| Item | Value |
|------|-------|
| Part | 220 µF 16 V aluminum electrolytic, 6.3 x 7.7 mm, JLCPCB **C72496** |
| Footprints | **4**, spread along the LED power rail: start, one-third, two-thirds, far end |
| Populated | **2** at first (start and far end); the other 2 marked **DNP** (do not populate) |
| Silkscreen | "+" polarity mark next to every footprint, so parts can be added later safely |
| Ripple rating | 110 mA at 120 Hz; about 140 mA at the LEDs' 2-4 kHz PWM (datasheet factor 1.25 at 1 kHz, 1.40 at 10 kHz) |

- Empty footprints cause no electrical problem: they are just pads joined to 5 V and
  GND copper, behind the eFuse.
- The 100 nF soft start already covers all four being fitted.
- Whether 2 are enough depends on whether the LEDs' PWM pulses line up (see
  "Prototype risks"). The prototype test decides.

## ESP32-C3 pin plan

Chosen so the CC wiring does not disturb booting, USB programming, or the LED signal.

| ESP32-C3 pin | Used for | Why this pin |
|--------------|----------|--------------|
| GPIO0 (ADC1 channel 0) | USB-C **CC1** reading | Analog-capable, not a boot pin, not used by USB. |
| GPIO1 (ADC1 channel 1) | USB-C **CC2** reading | Same as above. |
| GPIO9 | **BOOT** button | The ESP32-C3's built-in boot pin. |
| EN (chip enable) | **RESET** button | Pulling EN low restarts the chip. Standard 10 kΩ + 1 µF delay so the chip starts after 3.3 V is steady. |
| GPIO18 / GPIO19 | USB D- / D+ (through 22 Ω resistors R15 / R14) | Fixed by the chip for built-in USB. |
| GPIO10 | LED data (through the level shifter) | Plain digital pin. Has a **10 kΩ pull-down**. |
| GPIO5 | **ON/OFF** user button | Plain digital pin. Has a **10 kΩ pull-up**. |
| GPIO2, GPIO8 | Not used (pulled high) | Boot "strapping" pins, kept free. |
| GPIO20 / GPIO21 | Serial debug pads TP9 (RX) / TP10 (TX, via 499 Ω) | Backup way to talk to the chip if USB or WLED fails. |

Why the CC wiring is safe:
- The CC pins sit between 0 V and about 2 V, within the ESP32-C3's 0-2.5 V measuring
  range. The datasheet shows GPIO0/GPIO1 have no built-in pull resistors.
- The ESP32 pins only listen, so the charger still sees the 5.1 kΩ resistors normally.
- Both use ADC1 (ADC2 is unreliable while Wi-Fi is on).

Extra resistors (GPIO5 and GPIO10 have no built-in pull resistor at power-on):

| Resistor | Where | Why |
|----------|-------|-----|
| **10 kΩ pull-down** | LED data line, level shifter input (GPIO10 side) to GND | LEDs do not flash random colors at plug-in. |
| **10 kΩ pull-up** | ON/OFF button line (GPIO5) to 3.3 V | Button reads "not pressed" until pressed. The button connects GPIO5 to GND. |

## Wi-Fi and LED signal notes

- **Antenna:** the module's antenna sits at the board edge with no copper underneath.
- **LED signal level:** a 74AHCT1G125 level shifter (powered from the 5 V rail)
  turns the ESP32's 3.3 V signal into a 5 V signal for the LEDs.
- **Software:** standard **WLED**, LED type "WS281x".

## Test pads

| Pad | What it measures |
|-----|------------------|
| 5V_IN | Charger voltage, before the eFuse |
| 5V_OUT | Board 5 V rail, after the eFuse |
| 3V3 | ESP32 supply |
| GND | Ground reference (more than one, near the other pads) |
| LED_DIN | LED data signal (timing check) |
| FLT | eFuse fault output (high = OK, low = fault) |
| ILM | eFuse current monitor (about 0.21 V per amp) |
| IO20_RX | ESP32 serial receive (GPIO20 / U0RXD). Connect a 3.3 V USB-serial adapter's TX here. |
| IO21_TX | ESP32 serial transmit (GPIO21 / U0TXD), through a 499 Ω resistor (Espressif recommendation). Connect the adapter's RX here. |

The serial pads are a backup if USB programming or WLED ever fails. Use only a **3.3 V**
adapter, and connect its GND to a GND pad. Place one GND pad next to them at layout.

## Prototype risks (documented)

| # | Risk | Status / plan |
|---|------|---------------|
| 1 | **XL LED timing margin.** WLED sends a 400 ns "0" bit. The XL datasheet table says 200-350 ns; its note says the chip reads "0" up to 410 ns (only 10 ns margin). The "1" bit low time (450 ns) is also outside the table (200-350 ns), likely a datasheet error but unconfirmed. | The XL LED stays **provisional** until the timing pre-check passes. |
| 2 | **5.7 V fault exposure.** The XL LED is rated to 5.5 V. In a fault (charger above about 5.5-5.9 V), the eFuse can hold the output up to 5.7 V, up to 0.2 V over the rating. Normal chargers (up to 5.5 V) stay within rating. | Accepted as a **documented prototype risk**. |
| 3 | **LED PWM synchronization.** The LED datasheets do not say whether the LEDs' PWM cycles line up. If they do, peaks could reach about 4.3 A, and 2 x 220 µF would dip the rail by about 1.1 V and exceed the capacitors' ripple rating (estimate). | Prototype test decides. Two spare footprints available. |
| 4 | **eFuse fast short-circuit threshold** is not given as a number by TI. | Checked indirectly by the prototype tests (no false trips). |
| 5 | **JLCPCB "basic" part status** could not be confirmed with the Adom tool. | Re-check on jlcpcb.com before ordering. |

### Footprint compatibility (not yet confirmed)

The XL-5050RGBC-2812B and WS2812B-B/T have the **same pin order** (1 VDD, 2 data out,
3 GND, 4 data in) but different bodies (5.0 x 5.0 mm vs 5.0 x 5.4 mm).

Pad comparison (done 2026-09-23, details in `hardware/schematic-review.md`): the two
recommended pad patterns differ (XL: 1.3 x 1.3 mm pads; WS2812B: 1.5 x 0.9 mm pads). A
"superset" footprint containing both looks possible on paper, but it is **not yet confirmed
safe**: it must be checked when the footprint is drawn at layout and in JLCPCB's assembly
review. The XL LED remains the provisional selected part.

### If the XL timing pre-check fails

Do **not** automatically switch to the WS2812B-B/T: its 5.3 V maximum would reopen the
voltage-protection issue (normal USB-C chargers may supply up to 5.5 V). Instead, stop and
decide between these, in this order:

1. **Adjust the firmware timing** so the "0" bit is about 300 ns (NeoPixelBus already has
   timings like this, for example its WS2811 timing of 300 ns / 900 ns), which fits the
   XL datasheet table. This needs a custom WLED build.
2. **Choose another LED rated to at least 5.5 V** whose datasheet timing matches WLED's,
   and repeat the pre-check with it.
3. Only if neither works: consider the WS2812B-B/T, **with a new, separate decision on how
   to keep its supply at or below 5.3 V** during normal use (up to 5.5 V input) and faults,
   without excessive loss when the input is as low as 4.75 V.

## Prototype plan

**Step 1 - LED timing pre-check (before ordering the PCB)**

- Solder 5-10 loose XL-5050RGBC-2812B LEDs onto a 5050 breakout.
- Drive them from an ESP32-C3 dev board running WLED (type "WS281x") through a
  74AHCT1G125 level shifter powered from 5 V, the same as the real board.
- Pass if: every LED shows the correct colors with no random flashes during color
  changes, effects, and brightness changes for 30 minutes, and the measured "0" high
  time on the data line is about 400 ns (oscilloscope).
- Pass -> XL LED is no longer provisional. Fail -> see "If the XL timing pre-check fails".

**Step 2 - Small prototype batch**

- Order JLCPCB's minimum assembled quantity only, with 2 of the 4 bulk capacitors fitted.

**Step 3 - Prototype tests**

Each test runs 30 minutes with Wi-Fi active: all-white at the WLED limit, the Strobe
effect, and rapid brightness changes. Repeat with **two different 5 V / 3 A chargers**,
and **plug in 20 times**. Measure the 5 V rail and current with an oscilloscope
(20 MHz bandwidth limit), plus an inline USB-C power meter.

| Area | Pass if |
|------|---------|
| 5 V LED rail (at the far-end LED) | Average **≥ 4.5 V**; brief dips **≥ 4.3 V**; never above **5.5 V** in normal use |
| 3.3 V rail | Never below **3.2 V** |
| eFuse | FLT stays high; no flat-topped current at about 2.5-2.9 A (current limiting); no thermal shutdown; **≤ 30 °C above room** |
| Current | Average **≤ 2.2 A** (power meter); scope trace saved. A clear 2-4 kHz square wave reaching about 3.5-4.3 A means the LEDs are synchronized. |
| ESP32 stability | No restarts during any 30-minute test (WLED Info page uptime keeps counting, no brown-out reset reason); Wi-Fi stays connected; web page responds; USB programming works |
| Capacitors | **≤ 10 °C above room** after the hardest test |
| LEDs | All 107 light in the right order and colors, no random flashes, far-end LEDs look the same as near-end |
| Plug-in | Board starts every time; neither charger shuts off |

**If a test fails**

- Rail dips, capacitor heating, or the synchronized current pattern -> fit the 2 spare
  220 µF capacitors and retest.
- Still failing -> design change (for example low-ESR polymer capacitors), then a new
  prototype.
- LED timing problems -> see "If the XL timing pre-check fails".

**Step 4 - Larger order**

- Only after **every** row above passes.

## Pre-schematic questions (all answered)

| # | Question | Answer |
|---|----------|--------|
| 1 | Which PCB manufacturer? | **JLCPCB** |
| 2 | Which side of the board do the parts go on? | **All on the front** |
| 3 | Which buttons? | **Reset + Boot + ON/OFF**, all clearly labeled |
| 4 | Which protection parts? | **TPS259531 eFuse + SMAJ5.0A + USBLC6** (see "Input protection and power path") |
| 5 | Detect weaker chargers automatically? | **Wired now (GPIO0/GPIO1), used later** |

## Included by default (no decision needed)

- A 100 nF capacitor next to each LED.
- The 74AHCT1G125 level shifter for the LED data signal.
- Pull-up resistors on GPIO2 and GPIO8 (boot pins).
- The 3.3 V regulator's capacitors (10 µF in, 10 µF out) and the ESP32's own
  decoupling capacitors.
- Two 5.1 kΩ resistors on the USB-C CC pins.
- The ESP32 enable delay (10 kΩ + 1 µF).

## Schematic pin audit (2026-09-23)

- Every pin of the four project-made symbols (ESP32-C3-MINI-1, TPS259531, TLV76733, XL LED)
  matches the manufacturer's datasheet pin table.
- The KiCad library symbols used for the USB protection chip (ST USBLC6-2SC6) and the level
  shifter (74AHCT1G125, SOT-23-5; TI SN74AHCT1G125DBVR fitted, same pinout) were also checked against their datasheets.
- All power and ground pins, and all exposed/thermal pads (eFuse, 3.3 V regulator, ESP32
  EPAD), are connected. All 16 USB-C pins plus the shield are accounted for. The surge diode's
  cathode (pin 1, band side) goes to VBUS. Unused pins are intentionally unconnected.
- Details and the checking scripts: `hardware/schematic-review.md`, `hardware/tools/`.

## Parts chosen for JLCPCB assembly (2026-09-23)

Every part now has a JLCPCB/LCSC number, stored in the schematic's `LCSC` field. The full
table, with footprints and stock, is in `hardware/pcb-layout-notes.md` (Step 4).

- **Level shifter:** TI **SN74AHCT1G125DBVR** (C7484, about 23,000 in stock), used instead
  of the Nexperia version (about 3,600 in stock). Both have the same pins: 1 OE, 2 A, 3 GND,
  4 Y, 5 VCC.
- **Lowest stock:** the TPS259531 eFuse (C2155674, about 2,000). That is enough for a
  prototype batch, but check it again just before ordering.
- **Extended-part fees:** the tool can't confirm which parts JLCPCB counts as "basic".
  Expect about 8 to 12 "extended" part types at about $3 each per order. Check the exact
  fee on the JLCPCB quote before ordering.

## PCB layout decisions (final, approved 2026-09-24)

- **Board:** 300 × 70 mm, 2 layers, 1.6 mm FR-4, 1 oz copper, four M3 holes (3.2 mm, 3.2 mm from the corners).
- **Copper:**
  - back layer: solid ground plane
  - front layer: 5 V fill over the LED area plus a ground fill in the USB/ESP32 strip
  - antenna keep-out empty on both layers
- **Buttons:** RESET, ON/OFF, BOOT (left to right).
- **USB:**
  - ESD chip right at the connector, with D+/D- flowing through it
  - the pair passes under the ESP32 on the back layer (4 vias; USB pins are on the module's far side)
  - ground stitching vias at every layer change
- **Vias:** 0.3 mm drill / 0.6 mm pad, tented. No vias inside pads, and every hole at least 0.1 mm from any pad opening.
- **Thermal reliefs** on all fill connections, except solid copper for the ESP32 ground pads and the eFuse/regulator exposed pads.
- **LED capacitors:** each has a direct 5 V track to its LED; each LED and capacitor ground pad has its own via.
- **LED footprint:** the XL-5050RGBC-2812B manufacturer pattern only. No shared WS2812B "superset" footprint was used
  (the "Footprint compatibility" note above is superseded).
- **LED order:** LED1 (top-left of "R") → LED107, zig-zag within each letter. The WLED LED maps are in `firmware/`.
- Full details and all numbers: `hardware/pcb-layout-notes.md` (Steps 1–5b).

## Accepted prototype risks (added at PCB approval)

| # | Risk | Decision |
|---|------|----------|
| 6 | **USB differential impedance** about 113–122 Ω (2-layer board; 90 Ω would need ~1 mm traces) | Accepted: irrelevant at 12 Mbit/s over an 8 cm route |
| 7 | **USB-C VBUS contacts:** one pad pair carries 58–87 % of the current, so it reaches its 2.5 A rating only during the eFuse's brief 2.9 A limit | Accepted: within rating at the 2.2 A design maximum |
| 8 | **JLCPCB rotations:** the pick-and-place file uses KiCad's rotations | Check every part in JLCPCB's placement preview before paying |

Risks 1–5 (above) still apply.

## Required before ordering

1. **XL LED timing pre-check passes** (Prototype plan, Step 1). If it fails, follow "If the XL timing pre-check fails".
2. **JLCPCB review:**
   - DFM check passes
   - every part's position, rotation and pin 1 correct in the placement preview
   - parts in stock
   - the assembly service accepts a 300 mm board
   - final price including extended-part fees
3. Only then, order the **small prototype batch** (Prototype plan, Step 2) and run the prototype tests.
