ASRock H370M-ITX/ac Mini-ITX Motherboard
This page describes how to run coreboot on the [ASRock H370m-ITX/ac].
Technology
CPU |
Intel 8th/9th Gen (Coffeelake-S) Core Processors (LGA-1151)
CPUs over 95W will be limited due to power design
|
DRAM |
2 DIMM slots, DDR4 2666/2400/2133 MT/s |
Chipset |
Intel H370 |
SuperIO |
Nuvoton NCT5567D-B |
Boot |
USB, SATA, NVMe |
Required proprietary blobs
To build full working image of coreboot, the following blobs are required:
Binary file |
Apply |
Required/Optional |
|---|---|---|
FSP-M & FSP-S |
Intel Firmware Support Package 2.1 9th Generation Intel® Core™ processors and chipsets (formerly Coffee Lake) |
Required |
IFD |
Intel Flash Descriptor |
Required |
ME |
Intel Management Engine |
Required |
GBE |
Gigabit Ethernet Configuration |
Optional (MAC for LAN2) |
FSP
Intel company provides Firmware Support Package (2.1) to initialize this generation silicon. Please see this document.
IFD, ME, GBE
Use the vendor’s firmware version 1.80 to extract the IFD, ME, GBE blobs from it, according to the Intel IFD Binary Extraction Tutorial.
wget --tries=5 "https://web.archive.org/web/20260412110351/https://download.asrock.com/BIOS/1151/H370M-ITXac(4.30E)ROM.zip"
unzip "H370M-ITXac\(4.30E\)ROM.zip"
ifdtool --platform cnl -x H37MIA4.30E
File H37MIA4.30E is 16777216 bytes
Flash Region 0 (Flash Descriptor): 00000000 - 00000fff
Flash Region 1 (BIOS): 00300000 - 00ffffff
Flash Region 2 (Intel ME): 00003000 - 002fffff
Flash Region 3 (GbE): 00001000 - 00002fff
Building coreboot
The following commands will help quickly configure and build a project for this board:
make distclean && \
touch .config && \
./util/scripts/config --enable VENDOR_ASROCK --enable BOARD_ASROCK_H370M_ITX && \
make olddefconfig
make
Payloads
OS / Payload |
EDK2 |
SeaBIOS |
|---|---|---|
Ubuntu 24.04 |
V |
|
Nix 23.11 |
V |
V |
Windows 10 |
V |
|
Windows 11 |
V |
SeaBIOS (1.17.0)
EDK2 (mrchromebox, tag: uefipayload_2603)
Additional information
Ubuntu 24.04 (Linux 6.8.0-41-generic)
NixOS 23.11 (Linux 6.19.2-cachyos-lto)
Microsoft Windows 10 Pro (22H2 2022)
Microsoft Windows 11 Pro (25H2)
Flashing coreboot
Type |
Value |
|---|---|
Socketed flash |
no |
Model |
W25Q128JVSIQ |
Size |
16 MiB |
Package |
SOIC-8 |
Write protection |
chipset PRR |
Dual BIOS feature |
no |
Internal flashing |
after flashing coreboot |
The SPI flash can be accessed using flashrom. By default, only the BIOS region of the flash is writable:
flashrom -p internal -N -w coreboot.rom --ifd -i bios
If you wish to change any other region, such as the Management Engine or firmware descriptor, then an external programmer is required. More information about this here.
External flashing pinout
The SPI flash is an 8-pin SOIC device. A nearby 10-pin header (PH1) exposes the SPI signals.
Orientation: Top view, CPU socket is at the top.
CPU SOCKET (TOP)
────────────────
DI (IO0 / MOSI) - 01 10 - GND
CLK - 02 09 - NC
__ 08 - DO (IO1 / MISO)
VCC (3.3V) - 04 07 - /CS
HOLD#/RESET (IO3) - 05 06 - /WP (IO2)
Notes:
Pin 3 is not present on this header.
Pin 9 is not connected (NC).
Signals correspond directly to the SPI flash pins.
Use a 3.3V-compatible programmer only.
Incorrect wiring may permanently damage the board.
Working
Dual Channel DDR4 2666/2400/2133 MHz
Intel UHD Graphics
DP
HDMI
VGA Option ROM
libgfxinit
GOP
PCIe x16 Slot (Gen3)
SATA ports
USB 2.0 ports
USB 3.2 ports
M.2 Key-E 2230 slot for Wireless (PCIe x1, USB 2.0)
M.2 Key-M 2242/2260/2280 for SSD/NVMe (PCIE x4, SATA3, needs manual switching see next chapter)
LAN1 Intel I211AT, 10/100/1000 Mbps
LAN2 Intel I219V, 10/100/1000 Mbps
Realtek ALC892 HD Audio (line-out, mic-in)
S3 suspend and wake
Wake on LAN on both ports
fTPM
disabling ME with me_cleaner XutaxKamay fork (v1.2-9-gf20532d)
Unknown/untested
external TPM
Display output notes
libgfxinit GMBUS pin patch required for HDMI 2
libgfxinit uses Broxton-era GMBUS pin assignments which are incorrect for the Cannon Point PCH (H370). Without patching, HDMI 2 (DDI D) fails to read EDID and produces no output in SeaBIOS. All ports work correctly under Linux since i915 has its own CNP-specific pin table.
A patch to 3rdparty/libgfxinit/common/hw-gfx-gma-i2c.adb is required. In the GMBUS_Alternative_Pins branch of GMBUS0_PIN_PAIR_SELECT, apply the following:
DDI |
Correct GMBUS Pin |
libgfxinit Default |
|---|---|---|
DDI B |
4 (GMBUS_PIN_4_CNP) |
1 (BXT_B) ✗ |
DDI C |
2 (GMBUS_PIN_2_BXT) |
2 (BXT_C) ✓ |
DDI D |
1 (GMBUS_PIN_1_BXT) |
3 (BXT_D) ✗ |
This board’s DDC wiring swaps DDI B and DDI D relative to the CNP reference design. The pin values match the VBT DDC pin fields from the vendor firmware.
Display port mapping
Physical Connector |
DDI |
libgfxinit Port |
|---|---|---|
DisplayPort |
DDI B |
DP1 |
HDMI 1 |
DDI C |
HDMI2 |
HDMI 2 |
DDI D |
HDMI3 |
DDI A (eDP) and DDI E are not routed to any physical connector.
VBT patching
The vendor VBT declares two phantom child devices: an eDP panel on DDI A (LFP1, device type 0x78c6) and a DisplayPort output on DDI E (EFP4, device type 0x68c6). These can be removed by zeroing out the respective device type fields in the VBT binary.
SATA/PCIe muxing on M.2 slot
The ASRock H370M-ITX features a single M.2 Key-M slot that supports both SATA and PCIe (NVMe) storage devices. Unlike some boards that use physical jumper pins or automatic hardware sensing, ASRock implements this switching via Intel Soft Straps within the Flash Descriptor (FD).
The PCH uses High Speed I/O (HSIO) lanes that are multiplexed. Depending on the values of specific soft straps, the HSIO lanes connected to the M.2 slot are routed either to the internal SATA controller or the PCIe controller.
Configuration Straps
The protocol is determined by the following PCH Straps:
Strap |
Offset |
PCIe (NVMe) Value |
SATA Value |
|---|---|---|---|
PCHSTRP28 |
|
|
|
PCHSTRP81 |
|
|
|
Note: In PCHSTRP81, the nibble for Lane 25 switches from 5 to 7, and Lane 27 switches from 7 to 5 when moving from PCIe to SATA.
Switching Protocols
Since these settings reside in the Flash Descriptor, they cannot be changed by the BIOS at runtime. To switch the protocol, the Flash Descriptor must be modified and reflashed.
You can use ifdtool from the coreboot tree to manually set these straps using the -S and -V flags
# To switch to SATA mode using ifdtool:
ifdtool -S 28 -V 0x00010000 -S 81 -V 0x77577555 your_bios.bin
# To switch to PCIe mode using ifdtool:
ifdtool -S 28 -V 0x00000000 -S 81 -V 0x77775555 your_bios.bin
Warning: These straps are specific to the electrical routing of the ASRock H370M-ITX. Applying these values to other H370 boards may disable HSIO lanes used for USB, Ethernet, or other critical peripherals.
For more information on how the PCH handles these configurations, see the Soft Straps section.
SATA Port Conflict
Important: Due to HSIO lane sharing, using a SATA-type M.2 device has a hardware trade-off:
If the M.2 slot is set to SATA mode and a device is present, physical port SATA3_1 will be disabled.
If using an NVMe (PCIe) device, all physical SATA ports remain functional.