During boot time it is possible to enter the BIOS menu.
This is most easily done using the expansion board’s HDMI output to a monitor and having a USB keyboard and mouse attached via a USB HUB to the USB Type-A connector on the expansion board.
Alternatively, this can be done using only the serial communication interface to a PC running a shell session manager, or in combination with the HDMI output as described below.
Booting to BIOS from a Serial Terminal and HDMI Output
During boot-up, you will see something similar to this in the serial terminal console (the HDMI output will be blank at this point):
MRC REVISION ID 1.52.29
MMRC REVISION ID 1.09
BIOS ID = GTPP1F1A.X64.0143.B30.1704132245
BIOS stored EEPROM image for Intel's Tuchuck, version 00000000
EEPROM stored EEPROM image for Intel's Tuchuck, version 00000000
In this example the reference BIOS version “1F1” is used, as stated by the BIOS ID. Information is also given about the versions of the configuration EEPROM image contained both in the BIOS code and expansion board’s EEPROM. See configuration EEPROM for more information.
Next, as part of the POST procedure the option to enter the BIOS configuration will be given, as shown by the serial terminal text and HDMI image below.
Start showing progress bar...
- Press any key to stop it! 
- Press F2 or b to enter BIOS setup.
- Press F5 or d to enter Device Manager.
- Press F7 or m to enter Boot Manager.
- Press F9 or o to enter Boot Order.
- Press GP button to go to the Shell for flashing.
Showing progress bar...Remaining 5 second!
Showing progress bar...Remaining 4 second!
Showing progress bar...Remaining 3 second!
By default, this option to enter the BIOS will remain for 5 seconds after which, if no key is pressed, EFI will load the kernel, and the kernel will start booting.
|Note: The first boot takes a bit longer, as the OS/user-space will generate the files it needs for its operation and once initialized, the OS will automatically start the X-Desktop environment and the XFCE GUI will appear.|
If either the F2 key or UP keys are pressed on a connected keyboard before this countdown finishes the BIOS configuration menu will loaded. This will be shown as a graphical interface to the monitor and as a simplified text version of the same over the serial terminal. These are both shown below.
|Note: As shown in the image above, depending on the serial terminal application used and the character mapping chosen some of the characters in the text version will not be equivalent to those used in the graphical version.|
From the main menu of the BIOS you can navigate to all configuration sections using the keyboard, for example, to see an overview of the system information go to Device Manager > System Setup > Main.
Flashing the BIOS/IFWI
See BIOS Update Steps for instructions to flash (update) the BIOS.
The flashing tool dldrcli is inside every BIOS/IFWI zip package in DNX\DNX-dldrcli. The Linux version is in DNX\DNX-dldrcli\linux. No drivers are needed for linux. Install the debian(deb) or rpm package depending on your linux distro or get the tarball (tar.gz) and unpack it (tar zxvf <filename>.tar.gz).
The correct dldrcli commands are:
dldrcli --command downloadfwos --fw_dnx "<firmware dnx file - use the PROD dnx:DNXP_0x1-prod.bin>" --device emmc --idx 0 --fw_image "<firmware/ifwi/bios image - use the Joule_C0-X64-Release-<release number>_DNX.bin from the main/root directory of the package>"
replacing the text within the < and > with appropriate filenames.
Next, clear the memory. This is always required after flashing the IFWI image.
dldrcli --command clearrpmb --fw_dnx "<firmware dnx file - use the PROD dnx:DNXP_0x1-prod.bin>" --device 2 --idx 0
To Change the Boot Order
You can also change the boot order. See Changing the Boot Order for details.
See https://github.com/akatrevorjay/intel-joule-bios-flash-linux/blob/master/flash.sh for more information.
In order to enable dynamic debug traces for a specific kernel module during the boot, it is necessary to change the kernel command line. Kernel command line can be changed in the 5xx machine configuration file: ”meta-ref-os-iot/meta-5xx/conf/machine/intel-5xx-64.conf”.
As an example, for the i2c_designware_core kernel module, the APPEND_append line should be extended to look like this:
APPEND_append = " console=ttyS2,115200 video=efifb maxcpus=4 reboot=efi kmemleak=off net.ifnames=0 i915.disable_hpd_poll=1 i2c_designware_core.dyndbg=+p"
Rebuild the SW image and boot the device. The traces from the module can then be found in the log that the “dmesg” command outputs.
A security feature can be enabled to require that a user must enter a password when trying to enter the BIOS Setup on device boot.
The password setting can be found in the BIOS Setup from Device Manager > System Setup > Security Configuration. The configuration is enabled by default when flashing the BIOS but will not take effect until a password is set (i.e., a blank password is set by default).
To set a password follow these steps:
- From the BIOS go to Device Manager > System Setup > Security Configuration page.
- Choose User Password.
- Type your new password and press Enter.
- Confirm the password by typing it again and press Enter.
- Press the Esc key once to go back to the System Setup page.
- Select Commit Changes and Exit and press Enter.
- Press Enter again to confirm that you want to save the changes.
- You will be told that the TPM has changed and to press Enter to restart the system.
If you simply save (press F4) after typing the password in steps 3 and 4, the password will not save correctly. The steps above must be followed in sequence for the password to be changed.
Changes to the BIOS, including changing the password, can now only be done after correctly giving the current password. The password will still be required even after re-flashing the BIOS due to the feature being enabled by default.
Troubleshooting - My development platform won’t boot from a USB drive or microSD* card
First, make sure that your microSD card or USB device is securely connected to the development platform. Also make sure you don't have a microSD card and a USB drive plugged into the development platform at the same time.
Then try booting your board and changing the boot order to boot from your bootable device first. You may also want to try redoing the steps to create your bootable device and rebooting the development platform. For detailed steps, see Creating a bootable device and Installing your operating system.
For users of Reference Operating System for IoT: Be sure to extract the .xz archive file and write the Reference Operating System for IoT image to the bootable device, not the archive file!