ShiboSoftwareDev/f1c100s-linux-gameboy

Restores PCB assembly metadata by assigning part numbers, managing 3D CAD models and orientations, removing test-point bodies, and validating top-side SMT solder-paste features.

Version
1.0.8
License
unset
Stars
0

Files

README.md

# F1C100S Linux Game Boy

A 106 Ɨ 150 mm, four-layer handheld Linux board built in tscircuit from the
tested F1C100S Linux dev board. It integrates the F1C100S and its 32 MiB RAM,
16 MiB SPI NOR, a removable 2.8-inch ILI9341 SPI display, ten game buttons,
speaker amplifier and volume control, USB-C/FEL, and a 3 Ɨ AA boost supply.

## Hardware

- Allwinner F1C100S with the proven power, clock, DDR and boot-flash circuit
- LCDWiki MSP2807/ILI9341 display on a keyed 14-pin 2.54 mm header
- PCA9535 I²C GPIO expander for Up/Down/Left/Right, A/B/X/Y, Select and Start
- F1C100S analog codec output, wheel volume control, PAM8403 mono BTL amplifier,
  filtered speaker output and JST connector
- USB-C device/power port with 5.1 kΩ CC pull-downs and USB ESD protection
- 3 Ɨ AA input, power slide switch, MT3608 5 V boost and automatic USB/battery
  isolation
- UART0 debug pads and removable SPI-flash CS boot/FEL jumper
- Single-sided component placement; through-hole connectors insert from the top

The display module and speaker are user-fitted accessories. Every fitted PCB
component has an explicit JLCPCB/LCSC part number; current availability is in
`fabrication/jlcpcb-availability.json`.

## LCD header

| Pin | Signal | F1C100S |
|---:|---|---|
| 1 | +5 V display power | — |
| 2 | Ground | — |
| 3 | Chip select | PE7 / SPI1 CS |
| 4 | Reset | PE3 |
| 5 | Data/command | PE2 |
| 6 | MOSI | PE8 / SPI1 MOSI |
| 7 | Clock | PE9 / SPI1 CLK |
| 8 | +3.3 V logic | — |
| 9 | MISO | PE10 / SPI1 MISO |
| 10–14 | Not connected | — |

The four display mounting holes use the LCDWiki mechanical pattern. Confirm the
exact module outline and header orientation before purchasing an enclosure.

## Linux

`firmware/carrier.dtsi` enables the SPI flash, ILI9341 display, PCA9535 gamepad,
native audio codec, UART console and USB peripheral controller against upstream
`suniv-f1c100s.dtsi`. See `firmware/README.md` for kernel options and integration
notes. A compact Buildroot-style image is appropriate for the 32 MiB RAM and
16 MiB flash budget. A bootable binary image is not bundled because flash
partitioning and emulator selection are product choices.

Normal boot uses the SPI flash with `JP_BOOT` fitted. The jumper is in the
right-side service area beside the LCD, outside the display outline. Remove the
shunt to force the SoC ROM into USB FEL for recovery/programming. UART0 is 3.3 V logic at
115200 8N1: board TX to adapter RX, board RX to adapter TX, and common ground.

## Build and verify

```sh
npm ci
npm run typecheck
npm run build
npm run verify
npm run check
```

`npm run check` runs the tscircuit source, netlist, pin-specification and shorts
checks. `npm run verify` independently asserts the board size/layer count,
zero emitted error elements, all critical connectivity, explicit JLC identifiers,
top-only assembly, and every routed via at exactly 0.30 mm drill / 0.45 mm pad.

The manufacturing outputs are in `fabrication/`: Gerbers and drill files,
JLCPCB BOM/CPL, generic BOM/PnP, PCB render, schematic PDF, circuit JSON and the
machine-readable verification report.

## Manufacturing notes

- Order as a four-layer, 1.6 mm FR-4 board. Confirm the fabricator stack-up and
  impedance settings before ordering; geometric DRC alone does not guarantee
  USB 90 Ī© differential impedance.
- Requested via geometry is 0.30 mm finished drill and 0.45 mm copper pad for
  every routed via.
- The 5 mm battery-cable notch is unplated and opens through the lower board
  edge; do not convert it to a closed plated slot.
- The LCD and speaker are not SMT assembly line items. Fit them after assembly.
- The class-D speaker output is differential. Do not connect either speaker lead
  to ground.
- Begin bring-up from current-limited USB power before testing the battery path.
- This design is derived from a tested Linux core, but the new handheld carrier
  and its power/audio/display integration still require first-article electrical,
  thermal and enclosure validation.

## References

- [Tested F1C100S Linux dev board](https://tscircuit.com/seveibar/f1c100s-linux-dev-board)
- [Reference tscircuit Game Boy](https://tscircuit.com/abse/gameboy)
- [Upstream F1C100S device tree](https://github.com/torvalds/linux/blob/master/arch/arm/boot/dts/allwinner/suniv-f1c100s.dtsi)
- [Upstream ILI9341 binding](https://www.kernel.org/doc/Documentation/devicetree/bindings/display/ilitek,ili9341.txt)