Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

novacustom_nv4x_adl: add heads section #754

Merged
merged 27 commits into from
Feb 28, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
853f8c2
novacustom_nv4x_adl: draft of heads section
macpijan Jan 29, 2024
13ac882
docs/variants/novacustom_nv4x_adl/heads.md: fix typos and link
macpijan Feb 8, 2024
b5338cd
docs/variants/novacustom_nv4x_adl/heads.md: link DES
macpijan Feb 8, 2024
7b97535
novacustom_nv4x_adl/heads.md: add transition steps
mkopec Feb 21, 2024
b6517c8
novacustom_nv4x_adl/heads.md: add note about TOTP secrets
mkopec Feb 21, 2024
31a456c
novacustom_nv4x_adl/heads.md: minor fixes
mkopec Feb 21, 2024
5089bef
novacustom_nv4x_adl/heads.md: fix ver number
mkopec Feb 21, 2024
ac9f096
novacustom_nv4x_adl/heads.md: combine 2 build steps
mkopec Feb 21, 2024
6697085
novacustom_nv4x_adl/heads.md: add rollback to UEFI steps
mkopec Feb 21, 2024
56f3743
novacustom_nv4x_adl/heads.md: add initial release notes
mkopec Feb 22, 2024
b489a9a
novacustom/overview.md: add Heads and update layout
mkopec Feb 22, 2024
252e5f6
mkdocs.yml: enable Admonitions
mkopec Feb 22, 2024
7355fd7
novacustom: unify image dimensions for page layout uniformity
mkopec Feb 22, 2024
a25bd78
novacustom/hcl.md: add NV4x Heads tab
mkopec Feb 22, 2024
a55d118
novacustom/hcl.md: add note for Qubes users + minor fixes
mkopec Feb 22, 2024
fb57a31
novacustom/overview.md: coreboot + UEFI
mkopec Feb 23, 2024
f238152
novacustom/overview.md: address review comments
mkopec Feb 23, 2024
72bdda0
novacustom_nv4x_adl/heads.md: address review comments
mkopec Feb 23, 2024
1356362
novacustom_nv4x_adl/heads.md: fix typo
mkopec Feb 23, 2024
ea5ec8d
mkdocs.yml: enable emojis / symbols
mkopec Feb 23, 2024
585e0fb
novacustom_nv4x_adl/heads.md: expand the UEFI settings steps
mkopec Feb 23, 2024
dca73f8
novacustom_nv4x_adl/heads.md: add link to DTS fw update
mkopec Feb 23, 2024
e019555
novacustom/hcl.md: remove hubs section
mkopec Feb 23, 2024
483a0d7
docs/variants/novacustom_nv4x_adl/heads.md: Update release notes
miczyg1 Feb 28, 2024
fd6d636
novacustom_nv4x_adl/heads.md: fix link to coreboot rev
mkopec Feb 28, 2024
c1376c1
docs/variants/novacustom_nv4x_adl/heads.md: Add link to test results
miczyg1 Feb 28, 2024
5735d01
docs/variants/novacustom_nv4x_adl/heads.md: Fix links to signatures
miczyg1 Feb 28, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
Binary file modified docs/images/NS51-front-1.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/images/NV40-front-1.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/images/NV4x-front-1.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
15 changes: 15 additions & 0 deletions docs/unified/novacustom/hcl.md
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,21 @@ issue from which the report is sourced.
| Levin | 7-in-1 Type-C Hub Pro | v1.5.2 | No issues | Official support |
| Generic | 8-in-1 Type-C Hub | v1.5.2 | One video output usable at a time | Official support |

=== "NV4x 12th Gen __(Heads)__"
<div class="annotate" markdown>

### Docks

| Manufacturer | Model | Dasharo version | Notes | Source |
|---|---|---|---|---|
| Wavlink | UMD05 Pro (1) | v1.7.2 | No issues (2) | Official support |

</div>

1. Rev.C1 and Rev.E
2. DP Alt mode: Synaptics VMM5310 DP MST hub, two upstream DP 1.4 lanes,
DSC 1.2 decompression, up to 2x 4K60 + 1x 4K30 depending on source.

> **Note on DisplayLink compatibility:** DisplayLink requires a driver to
> function correctly. On Windows, the driver should install automatically if
> network is connected and Windows Update is enabled. On Linux, consult your
Expand Down
134 changes: 97 additions & 37 deletions docs/unified/novacustom/overview.md
Original file line number Diff line number Diff line change
@@ -1,57 +1,117 @@
# Overview

## Hardware
Select your Dasharo firmware flavor:

=== "NS5x/7x 12th Gen"
The `NovaCustom NS5x/7x 12th Gen` section is related to the two physical
NovaCustom laptops based on the 12th generation Intel Core processor:
=== "Dasharo (coreboot + UEFI)"
NovaCustom laptops come with this firmware variant out of the box.

- [NS51 Series](https://configurelaptop.eu/ns51-series/)
- [NS70 Series](https://configurelaptop.eu/ns70-series/)
## Hardware

![](/images/NS51-front-1.png)
=== "NS5x/7x 12th Gen"
__NovaCustom NS5x/7x 12th Gen__ are 15 and 17 inch laptops based on 12th
generation Intel Core processor (Alder Lake):

=== "NV4x 12th Gen"
The `NovaCustom NV4x 12th Gen` section is related to the one physical
NovaCustom laptops based on the 12th generation Intel Core processor:
![](/images/NS51-front-1.png){ align=right width=50% }

- [NV41 Series](https://configurelaptop.eu/nv41-series/)
<div class="grid cards" markdown>

![](/images/NV4x-front-1.png)
- [NS51 Series](https://configurelaptop.eu/ns51-series/)
- [NS70 Series](https://configurelaptop.eu/ns70-series/)

=== "NS5x/7x 11th Gen"
The `NovaCustom NS5x/7x 11th Gen` section is related to the two physical
NovaCustom laptops based on the 11th generation Intel Core processor:
</div>

- [NS51 Series](https://configurelaptop.eu/ns51-series/)
- [NS70 Series](https://configurelaptop.eu/ns70-series/)
=== "NV4x 12th Gen"
__NovaCustom NV4x 12th Gen__ is a 14 inch laptop based on 12th
generation Intel Core processor (Alder Lake):

![](/images/NS51-front-1.png)
![](/images/NV4x-front-1.png){ align=right width=50% }

=== "NV4x 11th Gen"
The `NovaCustom NV4x 11th Gen` section is related to the one physical
NovaCustom laptops based on the 11th generation Intel Core processor:
<div class="grid cards" markdown>

- [NV40 Series](https://configurelaptop.eu/nv40-series/)
- [NV41 Series](https://configurelaptop.eu/nv41-series/)

![](/images/NV40-front-1.png)
</div>

For more information on the hardware, please refer to the references in above
links.
=== "NS5x/7x 11th Gen"
__NovaCustom NS5x/7x 11th Gen__ are 15 and 17 inch laptops based on 11th
generation Intel Core processor (Tiger Lake):

## Firmware
![](/images/NS51-front-1.png){ align=right width=50% }

Each firmware release contains of two parts:
<div class="grid cards" markdown>

- [BIOS](https://en.wikipedia.org/wiki/BIOS) firmware,
- [EC (Embedded Controller)](https://en.wikipedia.org/wiki/Embedded_controller)
firmware.
- [NS51 Series](https://configurelaptop.eu/ns51-series/)
- [NS70 Series](https://configurelaptop.eu/ns70-series/)

They both interact with each other tightly, so keeping their compatible versions
in sync is important. Information on compatibility should always be explained
on the release pages:
</div>

- [NV4x 12th Gen](/variants/novacustom_nv4x_adl/releases/)
- [NV4x 11th Gen](/variants/novacustom_nv4x_tgl/releases/)
- [NS5x/7x 12th Gen](/variants/novacustom_ns5x_adl/releases/)
- [NS5x/7x 11th Gen](/variants/novacustom_ns5x_tgl/releases/)
=== "NV4x 11th Gen"
__NovaCustom NV4x 11th Gen__ is a 14 inch laptop based on 11th
generation Intel Core processor (Tiger Lake):

![](/images/NV40-front-1.png){ align=right width=50% }

<div class="grid cards" markdown>

- [NV41 Series](https://configurelaptop.eu/nv41-series/)

</div>

For more information on the hardware, please refer to the links above.

## Firmware

Each firmware release contains of two parts:

- [BIOS](https://en.wikipedia.org/wiki/BIOS) firmware,
- [EC (Embedded Controller)](https://en.wikipedia.org/wiki/Embedded_controller)
firmware.

They both interact with each other tightly, so keeping their compatible versions
in sync is important. Information on compatibility should always be explained
on the release pages:

- [NV4x 12th Gen](/variants/novacustom_nv4x_adl/releases/)
- [NV4x 11th Gen](/variants/novacustom_nv4x_tgl/releases/)
- [NS5x/7x 12th Gen](/variants/novacustom_ns5x_adl/releases/)
- [NS5x/7x 11th Gen](/variants/novacustom_ns5x_tgl/releases/)

=== "Dasharo (coreboot + Heads)"
Heads-based firmware is offered as a Dasharo Entry Subscription option.

!!! note

This section applies to users of the Heads-based firmware version. If
you are unsure which firmware version you're using, select
`coreboot + UEFI` instead.

## Hardware

=== "NV4x 12th Gen"
__NovaCustom NV4x 12th Gen__ is a 14 inch laptop based on 12th
generation Intel Core processor (Alder Lake):

![](/images/NV4x-front-1.png){ align=right width=50% }

<div class="grid cards" markdown>

- [NV41 Series](https://configurelaptop.eu/nv41-series/)

</div>

For more information on the hardware, please refer to the references in above
links.

## Firmware

Each firmware release contains of two parts:

- [BIOS](https://en.wikipedia.org/wiki/BIOS) firmware,
- [EC (Embedded Controller)](https://en.wikipedia.org/wiki/Embedded_controller)
firmware.

They both interact with each other tightly, so keeping their compatible versions
in sync is important. Information on compatibility should always be explained
on the release pages:

- [NV4x 12th Gen](/variants/novacustom_nv4x_adl/heads/)
208 changes: 208 additions & 0 deletions docs/variants/novacustom_nv4x_adl/heads.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,208 @@
# Dasharo (coreboot + Heads) firmware variant

For the NovaCustom NV4x 12th Gen, Heads-based variant of Dasharo firmware is
offered as a Technology Preview Release.

Please consider supporting the project financially by purchasing the
[Dasharo Entry Subscription](https://novacustom.com/product/dasharo-entry-subscription/).
With this subscription, you get access to the
[Transition from Dasharo UEFI to Heads variant](#transition-from-dasharo-uefi-to-heads-variant)
BeataZdunczyk marked this conversation as resolved.
Show resolved Hide resolved
feature in Dasharo Tools Suite and support from Dasharo directly via Matrix.
The subscription is not automatically renewed.

Following Release Notes describe status of development of Dasharo (coreboot +
Heads) firmware for NovaCustom NV4x 12th Gen.

## v0.9.0 - 2024-02-28

Test results for this release can be found
[here](https://docs.google.com/spreadsheets/d/1yWZ--zFPIsQhXZByf7nJIrasQYuRSf1yCi60lY_RGsQ/edit#gid=2042954457).

### Changed

- [This is a Dasharo Entry Subscription release](https://docs.dasharo.com/dev-proc/versioning/#dasharo-entry-subscription-releases)
- Heads Linux is used as a payload

### Known issues

- [Power button does not work in Qubes](https://github.com/Dasharo/dasharo-issues/issues/710)
- [Heads shuts down instead of rebooting](https://github.com/Dasharo/dasharo-issues/issues/711)
- [Existing Qubes installation is not found as bootable after transition back to EDK2](https://github.com/Dasharo/dasharo-issues/issues/713)
- [Builds are not fully reproducible](https://github.com/linuxboot/heads/issues/1616)

### Binaries

[sha256][novacustom_nv4x_adl_v0.9.0_heads.rom_hash]{.md-button}
[sha256.sig][novacustom_nv4x_adl_v0.9.0_heads.rom_sig]{.md-button}

This is a Dasharo Entry Subscription Release. To obtain access to the pre-built
binaries you will have to
[become the Dasharo Entry Subscription subscriber](../../ways-you-can-help-us.md#become-a-dasharo-entry-subscription-subscriber).
You will get the access to all of the firmware updates for the duration of the
subscription via Dasharo Entry Subscription newsletter.

To verify binary integrity with hash and signature please follow the
instructions in [Dasharo release signature verification](/guides/signature-verification)
using [this key](https://github.com/3mdeb/3mdeb-secpack/blob/master/customer-keys/novacustom/dasharo-release-0.9.x-for-novacustom-signing-key.asc)

### SBOM (Software Bill of Materials)

- [Dasharo heads fork based on v0.2.0 revision ccf49703](https://github.com/Dasharo/heads/tree/ccf49703)
- [Dasharo coreboot fork based on 4.21 revision 3a9aa3a4](https://github.com/Dasharo/coreboot/tree/3a9aa3a4)
- [Intel Management Engine based on v16.1.30.2307 revision d0b63476](https://github.com/Dasharo/dasharo-blobs/blob/d0b63476/novacustom/nv4x_adl/me.bin)
- [Intel Flash Descriptor based on v1.0 revision d0b63476](https://github.com/Dasharo/dasharo-blobs/blob/d0b63476/novacustom/nv4x_adl/descriptor.bin)
- [Intel Firmware Support Package based on ADL-P C.1.75.10 revision 481ea7cf](https://github.com/intel/FSP/tree/481ea7cf/AlderLakeFspBinPkg/Client/AlderLakeP)
- [Intel microcode based on ADL L0/R0 0x0000042c revision microcode-20230808](https://github.com/intel/Intel-Linux-Processor-Microcode-Data-Files/tree/microcode-20230808/intel-ucode/06-9a-04)
- [Intel microcode based on RPL J0/Q0 0x00004119 revision microcode-20230808](https://github.com/intel/Intel-Linux-Processor-Microcode-Data-Files/tree/microcode-20230808/intel-ucode/06-ba-02)

## Hardware Configuration Matrix

Generally, the same [hardware configuration](hardware-matrix.md) as for the
UEFI variant applies.

A notable addition is usage of the
[Nitrokey 3A Mini](https://novacustom.com/product/nitrokey-3a-mini/)
USB device, which is required for Heads installation and usage.

## Test Matrix

Please refer to the [tests results spreadsheet](https://docs.google.com/spreadsheets/d/1yWZ--zFPIsQhXZByf7nJIrasQYuRSf1yCi60lY_RGsQ).

## Building manual

This section presents the crucial steps required to build the Dasharo Heads
firmware. For more information, you may also refer to the official
[Heads building documentation](https://osresearch.net/general-building/).

### Requirements

This guide was verified on Ubuntu 22.04. In practice, any Linux distribution
with [Docker](https://www.docker.com/) support should be enough to complete it.

Make sure that you have following packages installed:

- Docker
+ follow [Install Docker Engine on Ubuntu](https://docs.docker.com/engine/install/ubuntu/)
+ follow [Post-installation steps for Linux](https://docs.docker.com/engine/install/linux-postinstall/)
- Git

```bash
sudo apt -y install git
```

### Building

1. Clone Dasharo Heads repository:

```bash
git clone https://github.com/Dasharo/heads.git
```

1. Navigate to the source code directory and checkout to the desired revision:

```bash
cd heads
git checkout novacustom_nv4x_adl_v0.9.0
```

1. Start the build inside the docker container:

```bash
docker run --rm -it -v $PWD:$PWD -w $PWD \
3mdeb/heads-docker:3.0.1 make BOARD=nitropad-nv41
```

This will produce a Dasharo binary placed in
`build/x86/nitropad-nv41/dasharo-nitropad-nv41-*.rom`.

## Switching from Dasharo UEFI to Heads

To change firmware branches from UEFI to Heads, because of how different the two
firmware types are, it's required to disable some security measures before
flashing. Follow the steps below to install Heads from an existing Dasharo UEFI
firmware installation:

- Hold down the ++f2++ key and press the ++power++ button to enter the UEFI
Setup Menu
- Enter the `Device Manager` submenu and disable `Secure Boot`
- Enter the `Dasharo System Features` submenu
- In the `Dasharo Security Options` submenu, disable:
+ SMM BIOS Write Protection
+ BIOS boot medium lock
- In the `Intel Management Engine Options` submenu disable the Management Engine

!!! tip

For a more detailed guide on the UEFI Setup Menu options, check out the
[Dasharo menu documentation](https://docs.dasharo.com/dasharo-menu-docs/).

- [Boot into Dasharo Tools Suite](https://docs.dasharo.com/dasharo-tools-suite/documentation/#running)
- Enter your DES subscription credentials
- Select `Update Dasharo firmware` to check for updates
- When asked to switch to Heads firmware, press `Y`
- Proceed with [DTS firmware update](https://docs.dasharo.com/dasharo-tools-suite/documentation/#firmware-update)
as usual

When the update is finished, your laptop will shut down automatically. Power it
back on to boot into your new Heads installation!

!!! warning "TOTP secrets warning"

On the first boot, you will be shown a warning about TOTP secrets. This is
normal and expected on the first boot. Run `OEM Factory Reset /
Re-Ownership` to finish deploying Heads.
BeataZdunczyk marked this conversation as resolved.
Show resolved Hide resolved

Check out [Heads documentation](https://osresearch.net/Configuring-Keys/#oem-factory-resetre-ownership)
for a detailed factory reset guide.

!!! note "Note for Qubes OS users"

After installing Qubes while Heads is installed, you will need to select
`Reset TPM` in the Heads menu to finish the installation.
BeataZdunczyk marked this conversation as resolved.
Show resolved Hide resolved

From the main menu, enter `Options` -> `TPM/TOTP/HOTP Options` and select
`Reset the TPM`.

Users upgrading to Heads while Qubes is already installed are not affected.

## Switching from Dasharo Heads back to UEFI

To revert back to UEFI, you will need to boot into DTS from a USB stick.

- Follow the [Dasharo Tools Suite documentation](https://docs.dasharo.com/dasharo-tools-suite/documentation/#running)
to boot DTS from a USB stick
- In the DTS main menu, select `Update Dasharo firmware` to check for available
updates.
- When prompted to revert back to UEFI, press `Y`
- Proceed with [DTS firmware update](https://docs.dasharo.com/dasharo-tools-suite/documentation/#firmware-update)
as usual

Once finished, your laptop will shut down automatically. Power it back on to
boot into your UEFI firmware.

> When reverting to UEFI, it's not possible to restore EFI boot manager entries
> that were added before installing Heads. Therefore, you may need to re-create
> your boot entries manually, or find your boot loader using `Boot From File`
> option in the UEFI setup menu.

## Logo customization

To replace the logo, one must rebuild the firmware. Other methods are not
supported as of now. You would need to replace the
`branding/Dasharo/bootsplash.jpg` with your own, and proceed with the
[Building manual](#building-manual).

## Initial deployment

The supported method is to follow the
[initial deployment](/unified/novacustom/initial-deployment.md), and then the
[Transition from Dasharo UEFI to Heads variant](#switching-from-dasharo-uefi-to-heads).

## Firmware update

[Build](#building-manual) or download Dasharo Heads firmware, and proceed with
the official [Heads update documentation](https://osresearch.net/Updating).

[newsletter]: https://newsletter.3mdeb.com/subscription/RJrTXDhWR
[novacustom_nv4x_adl_v0.9.0_heads.rom_hash]: https://dl.3mdeb.com/open-source-firmware/Dasharo/novacustom_nv4x_adl/heads/v0.9.0/novacustom_nv4x_adl_v0.9.0_heads.rom.sha256
[novacustom_nv4x_adl_v0.9.0_heads.rom_sig]: https://dl.3mdeb.com/open-source-firmware/Dasharo/novacustom_nv4x_adl/heads/v0.9.0/novacustom_nv4x_adl_v0.9.0_heads.rom.sha256.sig