Files

3.7 KiB

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)

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

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:

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.