How to Reflash a BIOS Chip Using a CH341A Programmer

Background

My coworker corrupted the BIOS on an ASUS G301QE laptop. After exhausting standard recovery methods like ASUS BIOS Flashback and battery disconnection, I proposed direct chip flashing using a CH341A programmer — a tool I previously purchased for Libreboot projects.

Requirements

  • CH341A USB programmer
  • BIOS compatibility verification for your motherboard
  • Flashrom application (command-line flashing utility)
  • Correct BIOS .bin file matching your exact motherboard model
  • SOIC8/SOP8 test clip
  • Adapter connecting CH341A to SOP8 clip
  • Optional: Bundle kits containing programmer, clip, and adapter together

Flashrom is standard on most Linux distributions and can be installed via package manager or built from source using Meson.

Setting Up the Programmer

Step 1: Identify Pin 1

On the SOP8 clip, pin 1 is marked by a red cable. On the programmer, look for a dot, notch, or marking indicating pin 1.

Step 2: Connect the Adapter

  1. Connect adapter to clip first
  2. Lift the lever on the socket
  3. Push pins into correct positions
  4. Pull down lever to lock everything

Step 3: Attach the Clip to the BIOS Chip

Locate the marking on the chip (dot or notch) showing pin 1’s location. Align the clip’s red cable with this pin and ensure firm contact across all pins.

Step 4: Plug in the Programmer

Insert the CH341A into a USB port. A red light should illuminate:

  • No light: Try a different USB port or computer
  • Dim red light: Possible short circuit or incorrect pin connection
  • Green light: Everything may be functioning correctly

Verifying Your Setup

Run flashrom to confirm installation:

flashrom

Expected output shows version information and confirmation that flashrom is installed.

Creating Verified Backups

Before writing, create two separate backups and compare their MD5 checksums to verify consistent, reliable reads:

flashrom --programmer ch341a_spi -r backupone.bin
flashrom --programmer ch341a_spi -r backuptwo.bin
md5sum backupone.bin
md5sum backuptwo.bin

Matching checksums indicate good reads and readiness to proceed. Mismatched checksums suggest clip connection issues requiring re-seating and retry.

Verifying File Sizes

Confirm that your downloaded BIOS file and backup are identical in size:

ls -l

Both files should show the exact same byte count. Size discrepancies indicate a potential wrong BIOS file — do not proceed if they don’t match.

Flashing the BIOS

flashrom --programmer ch341a_spi -w GV301QE.bin

Replace the filename with your actual BIOS file. Flashrom will erase, write, and verify the new BIOS — typically completing in 1-3 minutes. Wait for success confirmation before disconnecting anything.

Troubleshooting: File Size Mismatch

Downloaded BIOS files sometimes include headers added by manufacturers for their official flashing tools. Strip unnecessary headers using dd:

dd if=downloaded_bios.bin of=bios_no_header.bin bs=1 skip=4096

Adjust the skip value based on how many bytes larger the file is. Verify sizes match after stripping.


Last modified on 2025-10-29