EDIT: Scroll down and read Arne.F’s comment before following my instructions. I wasn’t aware that there was an even easier way to do this and that only certain BIOS versions are supported. That being said, this did work fine for my APU2D4 and seems to run just fine on version 4.11.0.5.
This post comes as a result of seeing an old post about this same topic here and realizing that there is another way to do this that does not involve installing another small Linux distribution onto your APUx to do the BIOS upgrade. Also I want to give credit where I got some of this information at the following link which is also where I bought it.
https://teklager.se/en/knowledge-base/apu-bios-upgrade/
These instructions assume that your APUx will first boot and install IPFire before updating the BIOS.
IPFire now has “flashrom” available as a add-on.
https://wiki.ipfire.org/addons/flashrom
After installing IPFire, log into the web admin page on your web browser. From the horizontal menu selections across the top select “IPFire” then “Pakfire”. Scroll down the list of available add-ons until you find “flashrom” and select it, then click on the + sign below to install the add-on.
You will need to preferably connect via the USB to serial cable with Putty (Needed for the very last step), or SSH into IPFire with a Linux terminal. Remember that SSH is not enabled by default. You can enable it from the web admin log in page at the menus “System > SSH Access”
First find the link for the correct binary files (.rom) for your model router. And be sure it is indeed the correct file as I suspect the flashrom command argument I used forces it onto the motherboard regardless of the version being correct or not, which could brick your router if using the wrong file.
BIOS files are at the link below:
https://pcengines.github.io/
I’ve been using the mainline releases as recommended and as of today updated to version 4.11.0.5. Copy the link to the file.
Log into “root” on your IPFire install and run the command “wget” and paste the link you copied right after it. If you’re using a Linux terminal the paste command is “Ctrl+Shift+V”. If you are using Putty a single middle mouse button click will paste. This downloads the file onto your IPFire router. You can verify the file is there by doing a “ls”, or “ls -l” (for more detail) command.
So for example, the command I used was:
wget https://3mdeb.com/open-source-firmware/pcengines/apu2/apu2_v4.11.0.5.rom
Now lets verify that the file has not been corrupted or altered by using the “sha256sum” command. The format is sha256sum and the name of the file that you can start typing a few letters and press the “Tab” to auto fill the rest.
My example was:
sha256sum apu2_v4.11.0.5.rom
Highlight the resulting sum output only and copy it to the clipboard. Linux terminal is Ctrl+Shift+C. Putty is single middle mouse click to copy and the same to paste elsewhere. Paste this into a text editor. Then using the above mentioned pcengines link, click on the “SHA256” button just to the right of the file you copied the link from, click on this and copy the entire line and paste it into the next line down in the same text editor you did the prior paste. Make sure each pasted line is different after the sum so as to show you did two separate pastes and not accidentally paste the same line twice. In this example the first line would be just the sum copied from the IPFire router results, and the second line would be the sum plus the file name from the pcengines SHA256 link.
6d64a388dc41943d65285cbe8af1472184bd4230ee4b368c6d6bcfb88b3ff1b6
6d64a388dc41943d65285cbe8af1472184bd4230ee4b368c6d6bcfb88b3ff1b6 apu2_v4.11.0.5.rom
Verify each sum is the same. If it is, it’s time to flash the BIOS. If not, double check which file you chose versus the SHA256 sum, or try the download again.
To flash the BIOS, the command format is:
flashrom -w your_file_name.rom -p internal:boardmismatch=force
What I used is:
flashrom -w apu2_v4.11.0.5.rom -p internal:boardmismatch=force
Adjust the file name depending on what it is.
Be patient and do not power off the router until it is done. You’ll know it’s done when the last line it gives you is:
Verifying flash... VERIFIED.
And then it puts you back at the command or terminal prompt.
To check that the BIOS is updated you’ll need to be connected with the USB to serial cable with Putty and re-boot the router. Watch the BIOS version numbers at the very beginning. It should match up with what you upgraded to. All done!