Skip to content

Commit 01e486a

Browse files
committed
docs/variants/novacustom_nuc_box/: add
Signed-off-by: Filip Lewiński <[email protected]>
1 parent 20e18c8 commit 01e486a

File tree

10 files changed

+363
-0
lines changed

10 files changed

+363
-0
lines changed
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
# Dasharo firmware building guide
2+
3+
## Intro
4+
5+
This guide shows how to build Dasharo firmware for the NovaCustom NUC BOX.
6+
7+
## Requirements
8+
9+
- Docker
10+
+ follow [Install Docker Engine on Ubuntu](https://docs.docker.com/engine/install/ubuntu/)
11+
+ follow [Post-installation steps for Linux](https://docs.docker.com/engine/install/linux-postinstall/)
12+
- Git
13+
+ `sudo apt-get install git`
14+
15+
## Building
16+
17+
To build Dasharo firmware image, first clone the coreboot repository:
18+
19+
```bash
20+
git clone https://github.com/Dasharo/coreboot.git
21+
```
22+
23+
then follow the steps below:
24+
25+
1. To build a specific version checkout to the version's tag.
26+
Skip this step otherwise.
27+
28+
```bash
29+
cd coreboot
30+
git checkout novacustom_nuc_box<version>
31+
```
32+
33+
For example
34+
35+
```bash
36+
git checkout novacustom_nuc_box_v0.9.0
37+
```
38+
39+
2. Checkout submodules:
40+
41+
```bash
42+
git submodule update --init --checkout
43+
```
44+
45+
3. Build the firmware:
46+
47+
```bash
48+
./build.sh novacustom_nuc_box
49+
```
50+
51+
The resulting coreboot image will be placed in the coreboot directory as
52+
`novacustom_nuc_box_<version>.rom`.
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
# Firmware update
2+
3+
The following documentation describes the process of Dasharo open-source
4+
firmware update. If your device is currently flashed with the proprietary
5+
firmware please refer to the [Initial deployment](initial-deployment.md)
6+
documentation.
7+
8+
The update process may be different, depending on the currently installed
9+
Dasharo firmware version.
10+
11+
For simplicity of the process we recommend using
12+
[Dasharo Tools Suite](../../dasharo-tools-suite/overview.md).
13+
14+
Before starting the update procedure be sure to disable Dasharo BIOS Boot
15+
medium lock and Secure Boot:
16+
17+
1. Power on the device.
18+
2. While the device is booting, hold the `DELETE` key to enter the UEFI Setup
19+
Menu.
20+
3. Enter the `Dasharo System Features` menu using the arrow keys and Enter.
21+
4. Enter the [Dasharo Security Options](https://docs.dasharo.com/dasharo-menu-docs/dasharo-system-features/#dasharo-security-options)
22+
submenu.
23+
5. Verify the state of the `Lock the BIOS boot medium` option - if the option
24+
is chosen, press `Space` and then `F10` to save the changes.
25+
6. Go back to the main menu using the `ESC` key.
26+
7. Enter the `Device Manager` menu.
27+
8. Enter the [Secure Boot Configuration](https://docs.dasharo.com/dasharo-menu-docs/device-manager/#secure-boot-configuration)
28+
submenu.
29+
9. Verify that the `Current Secure Boot State` field says Disabled - if not,
30+
unselect the `Attempt Secure Boot` option below then press `F10` to save
31+
the changes.
32+
10. Reboot the device to properly apply the changes.
33+
34+
The settings of all the above options can be restored after a firmware
35+
update.
36+
37+
## Updating Dasharo manually
38+
39+
```bash
40+
flashrom -p internal -w novacustom_nuc_box_v<version>.rom --fmap -i WP_RO -i RW_SECTION_A
41+
```
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# Hardware Configuration Matrix
2+
3+
## Introduction
4+
5+
This document describes the hardware configuration used for validation of
6+
Dasharo on the NovaCustom NUC BOX-155H.
7+
8+
## NovaCustom NUC BOX-155H
9+
10+
| Component | Description |
11+
|--------------------------------|---------------------------------------------|
12+
| **CPU** | Intel® Core™ Ultra 7 155H (6P + 8E) |
13+
| **RAM** | Slot 1: W-NM56S516G |
14+
| **SSD** | Goodram PX700 1TB |
15+
| **Flash memory** | Socketed WSON8 SPI (W25Q256JV) |
16+
| **USB Keyboard** | DELL KB216 |
17+
| **USB pendrives** | 1. SanDisk Ultra Flair USB 3.0 16 GB |
18+
| **Display** | HDMI 2.1 / DP 2.1 / DP 1.4a (Quad-display capable) |
19+
| **Ethernet controller** | LAN1: Intel® I226LM, LAN2: Intel® I226V (2.5GbE) |
20+
| **Network** | Local network wired connection |
21+
| **Remote Testing Environment** | RTE v1.1.0 |
22+
| **Power Control** | Sonoff |
23+
| **Power supply** | 19V/120W Power Adapter |
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
# Initial deployment
2+
3+
Initial flashing of Dasharo firmware can be done from Linux using flashrom with
4+
the internal programmer.
5+
6+
This document describes the process of building, installing and running
7+
flashrom on Ubuntu 24.04.
8+
9+
## Build flashrom
10+
11+
Please follow generic guide for [Dasharo flashrom fork](../../osf-trivia-list/deployment.md#how-to-install-dasharo-flashrom-fork).
12+
13+
## Reading flash contents
14+
15+
Always prepare a backup of the current firmware image. To read from the flash
16+
and save it to a file (`dump.rom`), execute the following command:
17+
18+
```bash
19+
flashrom -p internal -r dump.rom
20+
```
21+
22+
## Flashing Dasharo
23+
24+
To flash Dasharo on the platform, execute the following command - replace `[path]`
25+
with the path to the Dasharo image you want to flash, e.g. `novacustom_nuc_box_v0.9.0.rom`.
26+
27+
```bash
28+
sudo flashrom -p internal -w [path]
29+
```
30+
31+
After successful operation, power off the platform, unplug power from the
32+
platform, plug it back in and power the platform back on.
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
# Dasharo Openness Score
2+
3+
This page contains the [Dasharo Openness
4+
Score](../../glossary.md#dasharo-openness-score) for NovaCustom NUC BOX
5+
Dasharo releases. The content of the page is generated with [Dasharo Openness
6+
Score utility](https://github.com/Dasharo/Openness-Score).
7+
8+
## v0.9.0
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
# Overview
2+
3+
## NovaCustom NUC BOX-155H
4+
5+
<center>
6+
![](../../images/nuc_box.jpg)
7+
</center>
8+
9+
NovaCustom NUC BOX-155H is a compact, high-performance small form factor PC
10+
based on Intel® Core™ Ultra (Meteor Lake-H) processors. Designed for robust
11+
applications and reliability, it supports advanced features like DDR5 memory,
12+
quad-display output, and dual 2.5G Ethernet. Its modular expansion options and
13+
rich I/O make it a versatile platform for both consumer and industrial use.
14+
15+
## Documentation
16+
17+
- [Releases](./releases.md) - Groups information about all releases.
18+
- [Building Manual](./building-manual.md) - Describes how to build Dasharo
19+
compatible with the NUC BOX-155H.
20+
- [Initial Deployment](./initial-deployment.md) - Describes initial Dasharo
21+
deployment methods (i.e. flashing new firmware) compatible with NUC BOX-155H.
22+
- [Firmware Update](./firmware-update.md) - Explains supported Dasharo open-
23+
source firmware update methods.
24+
- [Recovery](./recovery.md) - Gathers information on how to recover the
25+
platform from potential failure.
26+
- [Hardware Configuration Matrix](./hardware-matrix.md) - Describes the
27+
platform's hardware configuration used during the Dasharo firmware validation procedure.
28+
- [Test Matrix](./test-matrix.md) - Describes validation scope used during
29+
Dasharo firmware validation procedure.
Lines changed: 144 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,144 @@
1+
# Recovery
2+
3+
## Intro
4+
5+
The following documentation describes the process of recovering the NovaCustom
6+
NUC BOX-155H platform from a brick state using Dasharo open-source firmware and
7+
one of two methods:
8+
9+
- **WSON8 chip flashing using a CH341A and socket adapter**
10+
- **Remote/automated flashing via
11+
[qspimux](https://github.com/felixheld/qspimux) and
12+
[RTE](../../transparent-validation/rte/introduction.md)**
13+
14+
The default BIOS flash chip is a **WSON8 package**, mounted in a socket —
15+
meaning **there are no exposed pins** for clip-on programmers. This makes
16+
traditional flashing using Pomona clips impossible.
17+
18+
> ⚠️ Important: Repeated mechanical re-seating of the WSON8 chip may degrade
19+
the socket or damage the chip. This method is **not suited for remote or
20+
automated workflows**.
21+
22+
## External flashing
23+
24+
### CH341A with WSON8 socket adapter
25+
26+
This method involves manually extracting the BIOS chip and flashing it outside
27+
the board using a CH341A programmer.
28+
29+
#### Prerequisites
30+
31+
- CH341A USB programmer
32+
- WSON8 to SOIC8 socket adapter
33+
- Known good firmware binary
34+
- [flashrom](https://flashrom.org/) installed on host PC
35+
36+
#### Firmware flashing procedure
37+
38+
1. Power off the NUC BOX-155H and disconnect all power.
39+
2. Carefully remove the WSON8 flash chip from the socket.
40+
3. Insert it into the WSON8-to-SOIC8 adapter, ensuring correct orientation.
41+
4. Plug the adapter into the CH341A programmer.
42+
5. Connect the programmer to your PC.
43+
6. Flash the firmware:
44+
45+
```bash
46+
flashrom -p ch341a_spi -w [path_to_binary]
47+
```
48+
49+
7. Once completed, remove the chip from the adapter and reinsert it into the
50+
board’s socket.
51+
8. Power on the platform.
52+
53+
> ⚠️ Note: This process is manual, not scalable, and fragile. It is **not
54+
recommended for repetitive tasks** or automated CI setups.
55+
56+
---
57+
58+
### qspimux with RTE (recommended for automation)
59+
60+
The [qspimux](https://github.com/felixheld/qspimux) setup enables **remote
61+
firmware flashing** without manually removing the flash chip. It supports SPI
62+
muxing between the host board and an external flasher like the RTE.
63+
64+
> ⚠️ This method requires **hardware modifications**. The factory-mounted
65+
WSON8 socket must be desoldered and replaced with a 9-pin qspimux header.
66+
This involves **fine-pitch SMD soldering** and should only be done by
67+
experienced individuals. Proceed at your own risk.
68+
69+
#### Benefits
70+
71+
- Fully automated flashing possible via
72+
[RTE](../../transparent-validation/rte/introduction.md)
73+
- No physical chip handling after initial setup
74+
- Safer and repeatable in lab/validation environments
75+
76+
#### Required mods
77+
78+
- Desolder the original WSON8 socket
79+
- Solder a DIP-8 (or qspimux-compatible) header in its place
80+
- Wire the RTE and qspimux per pinouts below
81+
82+
#### Prerequisites
83+
84+
- [RTE](https://3mdeb.com/open-source-hardware/#rte)
85+
- qspimux board with WSON8 flash soldered onto SOIC8 adapter
86+
- Proper GPIO lines connected for mux control
87+
- `flashrom` installed on RTE
88+
89+
#### Pin Mapping (J7 to qspimux J101)
90+
91+
| RTE header J7 pin | qspimux J101 pin |
92+
|-------------------|------------------------|
93+
| 1 (VCC) | 2 (VCC_PROG) |
94+
| 2 (GND) | 7 (GND) |
95+
| 3 (CS) | 1 (CS_PROG#) |
96+
| 4 (SCLK) | 6 (CLK_PROG) |
97+
| 5 (MISO) | 8 (IO0_DI_PROG) |
98+
| 6 (MOSI) | 3 (IO1_DO_PROG) |
99+
100+
#### Extra GPIOs for qspimux control
101+
102+
| RTE header J10 pin | qspimux J101 pin | Purpose |
103+
|--------------------|-----------------------|------------------------|
104+
| 1 (GPIO400) | 9 (MUX_SEL) | Select board or programmer access |
105+
| 2 (GPIO401) | 4 (IO3_HOLD_PROG) | Deassert HOLD# |
106+
| 3 (GPIO402) | 5 (IO2_WP_PROG) | Control #WP (write protect) |
107+
108+
#### Flashing procedure
109+
110+
1. Wire the RTE and qspimux according to tables above.
111+
2. Tie `IO3_HOLD_PROG` high (3.3V) if not using GPIO401.
112+
3. Set mux to programmer:
113+
114+
```bash
115+
echo "0" > /sys/class/gpio/gpio400/value # MUX_SEL = 0 (external)
116+
echo "1" > /sys/class/gpio/gpio401/value # HOLD# = high
117+
echo "1" > /sys/class/gpio/gpio402/value # WP# = high (write enabled)
118+
```
119+
120+
4. Flash the firmware:
121+
122+
```bash
123+
flashrom -p linux_spi:dev=/dev/spidev1.0,spispeed=16000 -w firmware.bin
124+
```
125+
126+
5. Switch back to board:
127+
128+
```bash
129+
echo "1" > /sys/class/gpio/gpio400/value # MUX_SEL = 1 (board)
130+
```
131+
132+
6. Optionally, reassert write protection:
133+
134+
```bash
135+
echo "0" > /sys/class/gpio/gpio402/value
136+
```
137+
138+
> ⚠️ First boot after flashing may take longer. Always confirm stable power
139+
before flashing.
140+
141+
![](../../images/qspimux_pin_header.jpg)
142+
143+
More details and schematics:
144+
[qspimux.pdf](https://github.com/felixheld/qspimux/blob/master/qspimux/qspimux.pdf).
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
# NovaCustom NUC BOX Dasharo Release Notes
2+
3+
Following Release Notes describe status of open-source firmware development for
4+
NovaCustom NUC BOX
5+
6+
For details about our release process please read
7+
[Dasharo Standard Release Process](../../dev-proc/standard-release-process.md).
8+
9+
{{ subscribe_form("d982d4ac-f1b5-4926-9d89-e7bb71457dd9",
10+
"Subscribe to NovaCustom Nuc Box 14th Gen Dasharo Release Newsletter") }}
11+
12+
## v0.9.0 - TBA
13+
14+
Coming soon...
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
# Test matrix
2+
3+
## About
4+
5+
The test matrix is used to determine the scope of tests which the DUT is
6+
subjected from before the release of the new binary.
7+
8+
Please refer to the [tests results repository](https://github.com/Dasharo/osfv-results/tree/main/boards/NovaCustom/MTL_14th_Gen/NUC_BOX/).
9+
You can preview the testing scope for upcoming releases and see the results for
10+
releases which already have been tested.

mkdocs.yml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -410,6 +410,16 @@ nav:
410410
- 'Hardware Configuration Matrix': variants/hardkernel_odroid_h4/hardware-matrix.md
411411
- 'Test matrix': variants/hardkernel_odroid_h4/test-matrix.md
412412
- 'Openness score': variants/hardkernel_odroid_h4/openness_score.md
413+
- 'NovaCustom NUC BOX':
414+
- 'Overview': variants/novacustom_nuc_box/overview.md
415+
- 'Releases': variants/novacustom_nuc_box/releases.md
416+
- 'Building manual': variants/novacustom_nuc_box/building-manual.md
417+
- 'Initial deployment': variants/novacustom_nuc_box/initial-deployment.md
418+
- 'Firmware update': variants/novacustom_nuc_box/firmware-update.md
419+
- 'Recovery': variants/novacustom_nuc_box/recovery.md
420+
- 'Hardware Configuration Matrix': variants/novacustom_nuc_box/hardware-matrix.md
421+
- 'Test matrix': variants/novacustom_nuc_box/test-matrix.md
422+
- 'Openness score': variants/novacustom_nuc_box/openness_score.md
413423
# - 'Development Environment':
414424
# - 'Nix': dev-env/nix-dev-env.md
415425
- 'Guides':

0 commit comments

Comments
 (0)