Add BIOS flash guide: backup, flash modded ROM via J4004, settings

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-09 17:39:49 -04:00
co-authored by Claude Fable 5
parent 414c43d74b
commit beecda8993
+98
View File
@@ -0,0 +1,98 @@
# BC-250 Console — BIOS Flash Guide
Why this is needed: stock firmware locks the RAM split at 8/8 or 4/12
(CPU/GPU) and hides the menu that changes it. The console needs
**512 MB VRAM** (the GPU then shares the rest dynamically), and that setting
only exists in Segfault's modded firmware.
Files (local `firmware/` folder, NOT in this repo):
| File | Purpose |
|---|---|
| `BC250_3.00_CHIPSETMENU.ROM` | **Flash this** — P3.00 with the chipset menu exposed |
| `BC250_3.00.ROM` | Segfault's stock P3.00 dump — reference/recovery only |
| `SHA256SUMS` | Verify both before flashing |
> ⚠️ A bad flash without a backup = brick. The rules: **dump your own
> board's firmware first**, verify the dump twice, and never flash with the
> board powered.
## 0. What you need
- CH347 programmer (or Raspberry Pi Pico running serprog firmware)
- 6 female-female DuPont jumper wires (short ones — SPI hates long wires)
- `flashrom` on the PC driving the programmer: `sudo apt install flashrom`
- The board **completely disconnected from the PSU** (not just "off")
The BIOS chip is a Winbond 16 MiB SPI flash (`BIOS_A1`), but you don't touch
the chip itself — the board exposes it on the **J4004** 2.54 mm header:
```
[ GND SCLK MOSI UNK ] UNK: leave unconnected
[ VCC CS MISO ] VCC is 3.3 V — NEVER connect a 5 V programmer line
^ (pin-1 triangle)
```
Wire GND, SCLK, MOSI, VCC, CS, MISO to the matching pins on the programmer
(CH347: use its 3.3 V setting/jumper). The programmer's 3.3 V powers just
the flash chip while the board itself stays dead.
## 1. Backup (do not skip, do not rush)
```bash
flashrom -p ch347_spi # should detect a W25Q128-series chip
flashrom -p ch347_spi -r stock-A.rom
flashrom -p ch347_spi -r stock-B.rom
cmp stock-A.rom stock-B.rom && echo "backup consistent"
```
(Pi Pico instead: `-p serprog:dev=/dev/ttyACM0:115200`.)
- Two identical reads = wiring is solid. If they differ, fix wiring/wire
length before going further — a flaky read means a flaky write.
- Copy `stock-A.rom` somewhere safe (this folder + another machine). This is
YOUR board's firmware, including any board-specific data — Segfault's
stock dump is not a substitute.
## 2. Flash
```bash
sha256sum -c SHA256SUMS # verify the modded ROM first
flashrom -p ch347_spi -w BC250_3.00_CHIPSETMENU.ROM
```
flashrom verifies after writing and prints `VERIFIED`. If the write or
verify fails: do not power the board — re-check wiring and re-flash. The
board is only bricked if you power it up with a half-written chip and give
up; the same header always lets you write again.
Disconnect the programmer completely before connecting the PSU.
## 3. BIOS settings (first boot after the flash)
Connect DisplayPort + keyboard, power on, mash `Del` to enter setup.
1. `Chipset → GFX Configuration → GFX Configuration`:
- `Integrated Graphics Controller` = **Forced**
- `UMA Mode` = **UMA_SPECIFIED**
- `UMA Frame Buffer Size` = **512M**
2. **Disable IOMMU** (in the newly exposed chipset/NBIO menus).
3. Confirm the `AUTO_PWRON1` jumper is on pins 1-2 (factory default) so the
board boots when the PSU switches on — this is the console's power-switch
design (see WIRING.md §5).
4. Save & exit.
Note: if your board shipped on firmware P4.00G, the memory split can get
"stuck" — pull the CR2032 coin cell and use the `CLRCMOS1` jumper (pins 2-3
momentarily, then back to 1-2), then redo the settings.
## 4. Sanity check
Boot the Bazzite installer USB (or the installed console). Once in Linux:
```bash
free -h # total RAM should be ~15 GB (16 GB minus 512 MB VRAM)
```
If you see ~8 GB or ~4 GB, the UMA setting didn't take — revisit §3/§4.
Then proceed with the install per BUILD-CONSOLE.md.