How to update the ODROID-H3's BIOS

  • H3 BIOS files can only be used on the ODROID-H3 and H3+.
  • Do NOT use these BIOS files on the ODROID-H2 and H2+.
  • Conversely do NOT use the H2 BIOS files on the ODROID-H3 and H3+.
For the impatient who already flashed an ODROID-H3 BIOS before and who does not want to read the whole thing again: once the BIOS has been flashed, you MUST cold reboot your ODROID-H3. To do so, once the utility confirmed the successful flashing. Pull the power cable off your machine and plug in it back after a few seconds. Power on your ODROID-H3. The first boot process will take a longer than usual time and then reboot on its own. Then you can use your ODROID-H3.


The reasons you will want to flash the ODROID-H3 BIOS are:

  • Hardkernel has released a new version that brings new or enhanced features and/or bug fixes.
  • A Hardkernel support engineer told you on the forum to flash a specific BIOS version.
  • You want to switch between the 1 X x4 lanes and 4 X x1 lanes PCIe bifurcation of the NVMe slot. The former is for using a PCIe Gen 3 x4 NVMe SSD. The latter is for using the ODROID H-series Net card.
It is a good idea to flash the BIOS while the ODROID-H3 is powered via a UPS. A power outage or an unstable power may interrupt the flashing operation and this will leave the BIOS in an unknown state and can make your ODROID-H3 inoperable afterwards. The UPS will prevent such incidents and will power the ODROID-H3 long enough for the flashing to complete.


Accessing the BIOS

  1. Power off your ODROID-H3.
  2. Press the Power button on your ODROID-H3, then Press “DEL” key while booting. You will get access to the BIOS screen shown below.
  3. Check the Project Version and Build Date.

On Windows

1. Plug the USB key drive into your PC.
2. Right click on the USB key drive icon and then select Format… from the contextual menu.

3. Set the parameters as they appear in screenshot shown below and then click on Start.

On Linux Ubuntu

1. Plug the USB key drive into your PC.
2. Run the Disks utility (see screenshot shown below).

3. Format the partition as FAT (see screenshots shown below).

You can download the BIOS update tool and firmware using this link: https://dn.odroid.com/ODROID-H3/bios/

1. Download bios zip and related sha256sum hash file.
2. Verify the bios zip file with SHA256sum hash value whether is OK or not.

C:\Users\neal.DESKTOP-NEAL\Downloads>ls JSL-H3_B1.06.zip*
JSL-H3_B1.06.zip  JSL-H3_B1.06.zip.sha256
C:\Users\neal.DESKTOP-NEAL\Downloads>sha256sum -c JSL-H3_B1.06.zip.sha256
JSL-H3_B1.06.zip: OK

3. unzip the .zip archive file you just downloaded.
4. Copy the extracted files to the USB key drive.
5. Make sure the USB key drive now contains the files as they appear in the screenshot shown below.

You MUST cold reboot your ODROID-H3.
Pull the power cable off and at the same time pull off the backup battery on your machine and plug them back in after a few seconds.
The reason why it has the process is to make clear the current bios settings and then load the new bios settings correctly after the new bios update is done.

Enter the BIOS

  1. Power off your ODROID-H3 and pull off the backup battery.
  2. Press the Power button on your ODROID-H3, then Press “DEL” key while booting.
  3. Move to “Save & Exit” tab.

Enter an EFI shell and Run a fb.nsh

Go to the Save & Exit page. In the Boot Override section, select the USB key + Enter.
You will boot directly from the USB Key.
Go to the Boot page. In the Boot Priorities section, change Boot option #1 to a USB key.
From the next booting, you will boot directly from the USB key.

Find the fs node of your memory stick

Enter fs0: or fs1: etc… which is marked as Removable HardDisk.

To ensure that you select a proper disk, enter ls and see the files on the root directory of the disk.

  • Do not use blk0, blk1, …. It showed like aliased with corresponding fs locations, but the update binary won't work under the blk location.

Run the nsh batch file

  • fb.nsh : H3/H3+ regular bios update
  • fbnet.nsh : H3/H3+ for Net Card

fb.nsh file is just execute this command Fpt.efi -f JSL-H3_B1.04.bin.
If you want to update the specific bios version - In this example shows the bios for Net card ( JSL-H3_B1.04-netcard.bin ), write down and execute like this Fpt.efi -f JSL-H3_B1.04-netcard.bin

Do not turn off your ODROID-H3 while the BIOS is updating.

You can see the results like the screenshot below when the update is finished.

Reboot and Check the updated BIOS version

Then pull out the power code ( UPS also pulls out, if it connected ), and after a couple of seconds, plug the power code back into the ODROID-H3.
The BIOS will be loaded with the new settings on the ODROID-H3. After that, you can put the backup battery on it.
To enter the bios mode, press “DEL” key while booting.

BIOS Release

  • Project Version: JSL-H3 1.15 x64
  • Build Date and Time: 07/19/2023 10:44:14


  • Project Version: JSL-H3 1.14 x64
  • Build Date and Time: 02/27/2023 19:37:12


  • Support generating UUID through MAC address.
  • Project Version: JSL-H3 1.13 x64
  • Build Date and Time: 02/14/2023 14:05:41


  • Add a menu to toggle the VT feature. ( Advanced –> CPU Configuration )

  • Project Version: JSL-H3 1.12 x64
  • Build Date and Time: 01/18/2023 16:59:58


  • Fixed the flooding IRQ16 interrupts issue caused by floating SMB_ALERT# signal.
  • Project Version: JSL-H3 1.11 x64
  • Build Date and Time: 01/07/2023 15:56:29


  • Fix the missing C-State problem in B1.09.
  • Fix the flooding ACPI alerts in Linux kernel messages. We've tested with NVMe, SATA, eMMC and USB boot media.
  • Project Version: JSL-H3 1.09 x64
  • Build Date and Time: 11/28/2022 11:58:01


  • Improve the DDR4 memory module speed detection.
  • Fix the ACPI ERROR message while boot from eMMC/SATA/USB storage devices.
  • Add a menu to manually configure the memory module timingp. ( Chipset –> System Agent (SA) Configuration –> Memory Configuration )

  • Project Version: JSL-H3 1.08 x64
  • Build Date and Time: 11/10/2022 16:58:12


  • Fix the compatibility issue a couple of XMP capable DDR4 DRAM modules.
  • Reduce the very first booting time from ~90 seconds to ~35 seconds.
  • Add up(K)-down(M) keys to scroll the description in Setup page.
  • Set the ASPM settings to 'Auto' as default in NetCard version and 'Disabled' as default in Normal version.

Note that you have to manually change the ASPM value of the PCIe Lane #1 and #2 to 'Auto' to reduce the power consumption about 1.5Watt.

  • Reduce the ACPI BIOS warning texts in the Linux kernel message.
  • Add a menu to setup the VT-d function like below the picture.

  • Project Version: JSL-H3 1.06 x64
  • Build Date and Time: 10/25/2022 18:25:19


  • Change the default value of the PCIe ASPM option to 'Disabled' from 'Auto' for better compatibility with M.2 NVMe storage devices. According to our measurements, the power consumption difference was negligible.
  • Support the PCIe-to-SATA host controller JMB585 by adding a JMicron BIOS extension code : 5 SATA-III Ports
  • Improved the description of the PL4 configuration menu
  • Project Version: JSL-H3 1.04 x64
  • Build Date and Time: 10/12/2022 09:31:07


  • Added I2C clock speed selection among 100Khz, 400Khz, 1Mhz and 3.4Mhz.
  • Fixed the wrong explanation about Unlimited Performance Mode.
  • Project Version: JSL-H3 1.02 x64
  • Build Date and Time: 08/23/2022 10:00:27


  • The first production BIOS

If you have a memory module which is not recognized, you can try this BIOS.
But you need a compatible module to run the BIOS update process ironically.

  • odroid-h3/hardware/h3_bios_update.txt
  • Last modified: 2024/07/10 10:59
  • by neal