# 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.