Board Testing HOWTO
The wiki is being retired!
Documentation is now handled by the same processes we use for code: Add something to the Documentation/ directory in the coreboot repo, and it will be rendered to https://doc.coreboot.org/. Contributions welcome!
This page gives you hints on how to test the coreboot support for your mainboard and all components present on the board.
We try to maintain one build tutorial / status page for every supported coreboot mainboard. The status table is always implemented using the status template in this wiki. A usage example is available, but you can also look at existing status pages.
For each item in the status table, this page describes how you can test the respective hardware part.
- Test at least one "full-speed" (USB 1.1) device (e.g. USB keyboard) and one "hi-speed" (USB 2.0) device (e.g. DVB-T adapter).
- Test both of the above devices on all available USB connectors. This includes the usual on-board connectors, but there may also be pin headers on the board where you can add further USB connectors.
Legacy / Super I/O
- Try loading the ppdev and parport_pc kernel modules: modprobe ppdev; modprobe parport_pc. Check if there were errors using dmesg.
- Try to actually use a parallel port device (e.g. a printer).
- If there are errors/problems, please post the superiotool -dV output on the mailing list and ask the developers for help.
- Try to create a beep on the PC speaker. There are various ways to do that, e.g. you can use the Debian package beep (apt-get install beep).
- If that doesn't work, check that you actually have a speaker correctly attached and also try modprobe pcspkr.
- DO NOT ATTEMPT TO FOLLOW THESE INSTRUCTIONS UNLESS YOU KNOW WHAT YOU ARE DOING! THIS CAN RENDER YOUR MAINBOARD TOTALLY UNUSABLE! YOU HAVE BEEN WARNED!
- To check whether flashrom knows about your chipset and ROM chip, run flashrom.
- If it says "Found chipset CHIPSETNAME..." and "CHIPNAME found at..." that's a good first sign.
- To check if you can read the existing BIOS image from the chip, run flashrom -r backup.bin.
- Now the really important part, checking if writing an image on the chip works:
- First make sure you have a backup chip containing the original BIOS. Also, you should have verified that it actually boots your system successfully. Put away that backup chip somewhere safe.
- Try inserting a ROM chip which you can safely overwrite (e.g. an empty one you bought). Then write an image onto the chip, which is different from what's on the chip right now: flashrom -wv new.bin. If this works and flashrom reports "VERIFIED" your board is supported by flashrom.
- If not, you might try to enable the "Enable BIOS Update" or "Write-protect BIOS" or similar options in your BIOS CMOS menu first, or set a jumper on your board (this is highly board-dependent). Also, you might have to use the flashrom --mainboard switch for some boards.
- If none of the above helps (but flashrom still does detect your chipset and ROM chip), there's quite likely a board-specific initialization required in flashrom, which is non-trivial to add (e.g. toggling certain custom GPIO lines etc).
- If you can't risk a write on a given chip and if the chip is SPI, the following guidelines may help:
- Try probing.
- For ICH/VIA SPI, lockdown can mean probe works, but write/erase doesn't. It can also mean that probe does not work, but write/read/erase (or any subset thereof) would work. For all other SPI chipsets, there is no such lockdown, so you can issue any erase/write/read command.
- However, some SPI chips have a WP# pin which causes the block protection bits to become readonly. Now if flashrom had a generic block protection checker, we'd be able to figure out if write/erase is possible. Basically, you can check if you need a board enable by setting all block protection bits, then unsetting them. If either of the operations fail, you need a board enable. If they succeed, erase and write are guaranteed to work.
- Please check/update the list of boards supported by flashrom accordingly (whether it works or does not work on your board).
|This work is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or any later version. This work is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.|