Update Gigabyte Motherboard BIOS with Ubuntu
I found a few other references to using FreeDOS to flash the BIOS firmware - but none quite worked for me immediately. (Here and here for example)
So, this is what I did to get it working.
Scary warnings
Be very careful when updating motherboard BIOS firmware. If you flash the wrong file, or power is cut during the process, there is a good chance you will brick the motherboard. Only update the BIOS if you have a need to do so - typically, if the system is working with the current BIOS firmware then it is better to leave it alone.
1. Obtain BIOS firmware
In my case, there are files on the Gigabyte website which have the updated firmware. The latest firmware for my board is revision F4. So, download this ZIP file.
It should contain three files:
autoexec.bat
Efiflash.exe
J190ND3V.F4
2. Download FreeDOS
We'll need the "USB Full" FreeDOS image, from their website.
Once downloaded, extract the FD12FULL.img
file.
3. Write FreeDOS to a USB flash disk
My machine has no CD drive (and obviously no floppy) - but is able to boot from USB drives just fine.
Take the extracted image file from above, and write it to USB flash disk with dd.
First check that /dev/sdf
is the right path for your USB flash disk!!
sudo dd if=~/Downloads/FD12FULL.img of=/dev/sdf bs=1M
4. Copy BIOS flash files to USB flash disk
Copy the Efiflash.exe
and J190ND3V.F4
files to the root of the flash disk.
Next, we need to change the FreeDOS scripts slightly so that instead of trying to install itself when it boots, it will run the flash tool.
Open the autoexec.bat
from your Gigabyte download - it should contain a simple line like:
Efiflash J190ND3V.F4
Now open the SETUP.BAT
file on the FreeDOS disk, and delete its entire contents and replace it with the one line from the autoexec.bat
file, i.e. the FreeDOS SETUP.BAT
should now contain the single line Efiflash J190ND3V.F4
(of course if you have a different motherboard or firmware version this line will change).
Note that the FreeDOS disk will also have a AUTOEXEC.BAT
file - leave this one alone, it is needed to initialise the system when you boot from the FreeDOS disk
5. Boot FreeDOS and flash the BIOS
Now you will be able to boot from the FreeDOS disk. You will most likely need to change the boot order from the BIOS menu to do this, or unplug the existing hard drives.
Once FreeDOS boots, it should then load the Efiflash
tool automatically and flash the BIOS with no user input required. Wait until this is done and confirmed, then reboot the machine back into Ubuntu. The BIOS has now been updated.
So, just to confirm it (since it was hard for me to find really anything about this motherboard on Linux) - the Gigabyte GA-J1900N-D3V works great with Linux, and the Mini-PCIe slot can be used for SATA controllers instead of just Wi-Fi as the product page suggests. (make sure to choose a SATA controller that has Linux support)
Some boards provide the Q-Flash utility, which can read the BIOS image file (the .f4, .12e, ...) from an USB stick formatted with FAT32/16 directly.
During startup, you can launch Q-Flash by pressing a key that's displayed (e.g. End). Then, USB sticks can be read for a BIOS update. src