Skip to content

Commit

Permalink
docs: Add hardkernel-odroid-h4-plus placeholder files
Browse files Browse the repository at this point in the history
Signed-off-by: Filip Gołaś <[email protected]>

mkdocs.yml: Add hardkernel odroid h4 pages

Signed-off-by: Filip Gołaś <[email protected]>

hardkernel_odroid_h4_plus/releases.md: Add

Signed-off-by: Filip Gołaś <[email protected]>

hardkernel_odroid_h4/releases.md: Add newsletter subscribe url

Signed-off-by: Filip Gołaś <[email protected]>

hardkernel_odroid_h4/releases.md: Add note "Coming soon."

Co-authored-by: Michał Żygowski <[email protected]>

hardkernel_odroid_h4/releases.md: Dasharo Pro Package

Signed-off-by: Filip Gołaś <[email protected]>

unified/hardkernel/overview.md: Add

Signed-off-by: Filip Gołaś <[email protected]>

hardkernel_odroid_h4/overview.md: Add missing links

Signed-off-by: Filip Gołaś <[email protected]>

odroid_h4 overview.md: Add a short description

Signed-off-by: Filip Gołaś <[email protected]>

odroid_h4 overview.md: Add an image of the device

Signed-off-by: Filip Gołaś <[email protected]>

odroid_h4 overview.md: Add link to device's blogpost

Signed-off-by: Filip Gołaś <[email protected]>

odroid_h4 overview: Remove the term "open source hardware"

Signed-off-by: Filip Gołaś <[email protected]>

unified/hardkernel/building-manual.md: Add

Signed-off-by: Filip Gołaś <[email protected]>

Update docs/variants/hardkernel_odroid_h4/building-manual.md

Co-authored-by: Michał Żygowski <[email protected]>

hardkernel_odroid_h4/building-manual.md: Remove tab

Signed-off-by: Filip Gołaś <[email protected]>

unified/hardkernel/initial-deployment.md: Add

Signed-off-by: Filip Gołaś <[email protected]>

hardkernel_odroid_h4/initial_deployment.md: Mention DTS

Signed-off-by: Filip Gołaś <[email protected]>

odroid_h4 initial-deployment.md: Add G3&CMOS reset if fails to boot

Signed-off-by: Filip Gołaś <[email protected]>

odroid_h4/initial-deployment.md: Update link to DTS zero touch

Signed-off-by: Filip Gołaś <[email protected]>

unified/hardkernel/firmware-update.md: Add

Signed-off-by: Filip Gołaś <[email protected]>

hardkernel_odroid_h4/firmware_update.md: update flash command

Co-authored-by: Michał Żygowski <[email protected]>
Signed-off-by: Filip Gołaś <[email protected]>

hardkernel_odroid_h4/firmware_update.md: Mention DTS

Signed-off-by: Filip Gołaś <[email protected]>

hardkernel_odroid_h4/firmware-update.md: Update section name

Co-authored-by: Michał Żygowski <[email protected]>

unified/hardkernel/recovery.md: Add

Signed-off-by: Filip Gołaś <[email protected]>

hardkernel_odroid_h4/recovery.md: Describe using flash jumper

Signed-off-by: Filip Gołaś <[email protected]>

docs hardkernel: pre-commit

Signed-off-by: Filip Gołaś <[email protected]>

hardkernel_odroid_h4/recovery.md: Reword dual bios recovery

Co-authored-by: Michał Żygowski <[email protected]>

hardkernel_odroid_h4/recovery.md: Remove tab

Co-authored-by: Michał Żygowski <[email protected]>

hardkernel_odroid_h4/recovery.md: Fix redirect to other section

Signed-off-by: Filip Gołaś <[email protected]>

hardkernel_odroid_h4/recovery.md: URL to ODROID wiki recovery

Signed-off-by: Filip Gołaś <[email protected]>

hardkernel_odroid_h4/recovery.md: Suggest hard reset after flashing

Signed-off-by: Filip Gołaś <[email protected]>

odroid_h4 recovery.md: Link dual bios recovery instructions from WIKI

Signed-off-by: Filip Gołaś <[email protected]>

hardkernel_odroid_h4_plus/hardware-matrix.md: Add

Signed-off-by: Filip Gołaś <[email protected]>

hardkernel_odroid_h4/hardware-matrix.md: Fix PSU

Signed-off-by: Filip Gołaś <[email protected]>

hardkernel_odroid_h4/hardware-matrix.md: Add RAM model from dmidecode

Signed-off-by: Filip Gołaś <[email protected]>

unified/hardkernel/test-matrix.md: Add only Dasharo Compatibility

Signed-off-by: Filip Gołaś <[email protected]>

unified/hardkernel/test-matrix.md: Add reference from script

Signed-off-by: Filip Gołaś <[email protected]>

hardkernel_odroid_h4/test-matrix.md: Add compatibility links

hardkernel_odroid_h4/test-matrix.md: Add performance tests

Signed-off-by: Filip Gołaś <[email protected]>

hardkernel_odroid_h4/test-matrix.md: Add stability

Signed-off-by: Filip Gołaś <[email protected]>

hardkernel_odroid_h4/test-matrix.md: Add performance

Signed-off-by: Filip Gołaś <[email protected]>

hard\/test-matrix.md: Align table columns

Signed-off-by: Filip Gołaś <[email protected]>

odroid_h4 hardware/test matrices: remove SATA

Signed-off-by: Filip Gołaś <[email protected]>
  • Loading branch information
philipandag committed Jan 16, 2025
1 parent ea47e6f commit c68a6ad
Show file tree
Hide file tree
Showing 11 changed files with 466 additions and 0 deletions.
Binary file added docs/images/odroid_flash_switch.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/odroid_h4.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
52 changes: 52 additions & 0 deletions docs/variants/hardkernel_odroid_h4/building-manual.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
# Dasharo firmware building guide

## Intro

This guide shows how to build Dasharo firmware for Hardkernel devices.

## Requirements

- 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
+ `sudo apt-get install git`

## Building

To build Dasharo firmware image, first clone the coreboot repository:

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

then follow the steps below:

1. To build a specific version checkout to the version's tag.
Skip this step otherwise.

```bash
cd coreboot
git checkout hardkernel_odroid_h4_<version>
```

For example

```bash
git checkout hardkernel_odroid_h4_v0.9.0
```

2. Checkout submodules:

```bash
git submodule update --init --checkout
```

3. Build the firmware:

```bash
./build.sh odroid_h4
```

The resulting coreboot image will be placed in the coreboot directory as
`hardkernel_odroid_h4_<version>.rom`.
41 changes: 41 additions & 0 deletions docs/variants/hardkernel_odroid_h4/firmware-update.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
# Firmware update

The following documentation describes the process of Dasharo open-source
firmware update. If your device is currently flashed with the proprietary
firmware please refer to the [Initial deployment](initial-deployment.md)
documentation.

The update process may be different, depending on the currently installed
Dasharo firmware version.

For simplicity of the process we recommend using
[Dasharo Tools Suite](../../dasharo-tools-suite/overview.md).

Before starting the update procedure be sure to disable Dasharo BIOS Boot
medium lock and Secure Boot:

1. Power on the device.
2. While the device is booting, hold the `DELETE` key to enter the UEFI Setup
Menu.
3. Enter the `Dasharo System Features` menu using the arrow keys and Enter.
4. Enter the [Dasharo Security Options](https://docs.dasharo.com/dasharo-menu-docs/dasharo-system-features/#dasharo-security-options)
submenu.
5. Verify the state of the `Lock the BIOS boot medium` option - if the option
is chosen, press `Space` and then `F10` to save the changes.
6. Go back to the main menu using the `ESC` key.
7. Enter the `Device Manager` menu.
8. Enter the [Secure Boot Configuration](https://docs.dasharo.com/dasharo-menu-docs/device-manager/#secure-boot-configuration)
submenu.
9. Verify that the `Current Secure Boot State` field says Disabled - if not,
unselect the `Attempt Secure Boot` option below then press `F10` to save
the changes.
10. Reboot the device to properly apply the changes.

The settings of all the above options can be restored after a firmware
update.

## Updating Dasharo manually

```bash
flashrom -p internal -w hardkernel_odroid_h4_v<version>.rom --fmap -i WP_RO -i RW_SECTION_A
```
26 changes: 26 additions & 0 deletions docs/variants/hardkernel_odroid_h4/hardware-matrix.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# Hardware configuration matrix

## Introduction

This document describes the hardware configuration used for validation of
Dasharo on the Hardkernel ODROID H4.

## Hardkernel ODROID H4+

| Component | Description |
|--------------------------------|---------------------------------------------|
| **CPU** | Intel(R) Processor N97 |
| **RAM** | Samsung M425R1GB4BB0-CWMOD |
| **SSD** | Samsung SSD PRO 900 1TB |
| **eMMC** | MMC PJ3032 |
| **Flash memory** | Winbond W25Q128JV |
| **USB Keyboard** | DELL KB216 |
| **USB Mouse** | None |
| **USB pendrives** | 1. SanDisk Ultra Flair USB 3.0 16 GB |
| **Display** | HDMI 1920x1080p |
| **Ethernet controller** | Intel i210 (on-board) |
| **Network** | Local network wired connection |
| **Remote Testing Environment** | RTE v1.1.0 |
| **Power Control** | RTE v1.1.0 |
| **Power supply** | ULLPOWER ICP65-150-4000 15V 5A |
| **KVM** | PiKVM based on Raspberry Pi Zero 2w |
45 changes: 45 additions & 0 deletions docs/variants/hardkernel_odroid_h4/initial-deployment.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
# Initial deployment

Initial flashing of Dasharo firmware can be done from Linux using flashrom with
the internal programmer or using the Dasharo Tools Suite included in the Dasharo
Pro Package subscription (formerly Dasharo Entry Subscription). An instruction
on how to use the DTS can be found in the [DTS documentation](../../dasharo-tools-suite/documentation/features.md#dasharo-zero-touch-initial-deployment)

This document describes the process of building, installing and running
flashrom on Ubuntu 24.04.

## Build flashrom

Please follow generic guide for [Dasharo flashrom fork](../../osf-trivia-list/deployment.md#how-to-install-dasharo-flashrom-fork).

## Reading flash contents

Always prepare a backup of the current firmware image. To read from the flash
and save it to a file (`dump.rom`), execute the following command:

```bash
flashrom -p internal -r dump.rom
```

If you forgot to do this, you can get the original, proprietary
firmware from the [ODROID wiki website](https://wiki.odroid.com/odroid-h4/hardware/h4_bios_update#bios_release)
to restore it in case it is bricked. Using the firmware other than
your own backup should be the last resort.

## Flashing Dasharo

To flash Dasharo on the platform, execute the following command - replace `[path]`
with the path to the Dasharo image you want to flash, e.g. `hardkernel_odroid_h4_v0.9.0.rom`.

```bash
sudo flashrom -p internal -w [path] --ifd -i bios
```

After successful operation reboot the platform.

If the platforms fails to boot, try performing a CMOS reset:

1. Disconnect the power supply and the CMOS battery.
1. Wait for 10 seconds
1. Reconnect the power supply and the CMOS battery
1. Press the power button
33 changes: 33 additions & 0 deletions docs/variants/hardkernel_odroid_h4/overview.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# Overview

## Hardkernel ODROID-H4 PLUS

<center>
![](../../images/odroid_h4.jpg)
</center>

Hardkernel ODROID-H4 PLUS is a small single-board computer with rich schematics
and documentation. One of it's most noteworthy features is the use of two
distinct switchable BIOS flash memory chips. This makes it a perfect device
for experimenting with firmware by making the recovery process after bricking
the device a breeze.

The device is described in detail on [blog.3mdeb.com](https://blog.3mdeb.com/2024/2024-07-25-odroid-h4-getting-started/)

## Documentation

- [Releases](./releases.md) - Groups information about all releases.
- [Building Manual](./building-manual.md) - Describes how to build Dasharo
compatible with the ODROID-H4 PLUS.
- [Initial Deployment](./initial-deployment.md) - Describes initial Dasharo
deployment methods (i. e. flashing new firmware) compatible with ODROID-H4
PLUS.
- [Firmware Update](./firmware-update.md) - Explains supported Dasharo
open-source firmware update methods.
- [Recovery](./recovery.md) - Gathers information on how to recover the platform
from potential failure.
- [Hardware Configuration Matrix](./hardware-matrix.md) - Describes the
platform's hardware configuration used during the Dasharo firmware
validation procedure.
- [Test Matrix](./test-matrix.md) - Describes validation scope used during
Dasharo firmware validation procedure.
112 changes: 112 additions & 0 deletions docs/variants/hardkernel_odroid_h4/recovery.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
# Recovery

## Intro

The following documentation describes the process of recovering hardware from
the brick state using an [RTE](../../transparent-validation/rte/introduction.md)
and Dasharo open-source firmware.

## Dual BIOS

The **ODROID H4+ and ODROID-H4 Ultra** devices both have the Dual BIOS
feature. If the device does not boot properly, the backup flash chip can be
selected using the flash selector jumper.

![](../../images/odroid_flash_switch.jpg)
*First bios chip selected using the flash selector*

1. Move the flash selector jumper to select the backup flash chip. If the
device does not boot from any of the flash chips, an external flashing
needs to be performed. In that case continue with the
[External flashing](#external-flashing) section.
2. If the device boots, boot to an OS.
3. Move the flash selector jumper back to it's original position selecting the
previous flash chip, from which the device does not boot.
4. With the device working, an OS booted and the flash chip selector moved
back, the firmware can be flashed using the command:

```bash
flashrom -p internal -w [path_to_binary]
```

5. After the flashing finishes reboot the device. If the platform does not boot
a CMOS reset and boot from G3 state may be needed:

1. Unplug the CMOS battery and the power supply
2. Wait for 10 seconds
3. Plug the CMOS battery and power supply back in
4. Press the power button

### Additional methods

Additional methods for flashing the firmware on Windows and using the UEFI Shell
can be found on the [ODROID Wiki](https://wiki.odroid.com/odroid-h4/hardware/restore_h4_bios).

## External flashing

=== "RTE"
### Prerequisites

* [Prepared RTE](../../transparent-validation/rte/v1.1.0/quick-start-guide.md)
* 6x female-female wire cables

### Connections

To prepare the stand for flashing follow the steps described in
the [Generic test stand setup](../../unified-test-documentation/generic-testing-stand-setup.md#detailed-description-of-the-process)

### Firmware flashing

To flash firmware follow the steps described below:

1. Login to RTE via `ssh` or `minicom`.
2. Turn on the platform by connecting the power supply.
3. Wait at least 5 seconds.
4. Turn off the platform by using the power button.
5. Wait at least 3 seconds.
6. Set the proper state of the SPI by using the following commands on RTE:

```bash
# set SPI Vcc to 3.3V
echo 1 > /sys/class/gpio/gpio405/value
# SPI Vcc on
echo 1 > /sys/class/gpio/gpio406/value
# SPI lines ON
echo 1 > /sys/class/gpio/gpio404/value
```

7. Wait at least 2 seconds.
8. Disconnect the power supply from the platform.
9. Wait at least 2 seconds.
10. Check if the flash chip is connected properly

```bash
flashrom -p linux_spi:dev=/dev/spidev1.0,spispeed=16000
```

11. Flash the platform by using the following command:

```bash
flashrom -p linux_spi:dev=/dev/spidev1.0,spispeed=16000 -w [path_to_binary]
```

> Flashing with flashrom takes about 1 minute.

12. Change back the state of the SPI by using the following commands:

```bash
echo 0 > /sys/class/gpio/gpio404/value
echo 0 > /sys/class/gpio/gpio405/value
echo 0 > /sys/class/gpio/gpio406/value
```

13. Turn on the platform by connecting the power supply.

The first boot of the platform after proceeding with the above procedure can
take much longer than normal.

=== "CH341A"
For instructions on how to perform a recovery
using the CH341A external programmer refer to
the [ODROID Wiki](https://wiki.odroid.com/odroid-h3/hardware/restore_h3_bios_usbprogrammer#with_usb_programmer_module_ch341a)
.
19 changes: 19 additions & 0 deletions docs/variants/hardkernel_odroid_h4/releases.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# Dasharo compatible with Hardkernel ODROID H4+

Following Release Notes describe status of Open Source Firmware development for
Hardkernel ODROID H4

For details about our release process please read
[Dasharo Standard Release Process](../../dev-proc/standard-release-process.md).

<center>

[Subscribe to Hardkernel ODROID H4 Dasharo Release Newsletter]
[newsletter]{ .md-button .md-button--primary .center }

</center>

Coming soon in the [Dasharo Pro Package for Network Appliance](https://shop.3mdeb.com/shop/dasharo-pro-package/1-year-dasharo-entry-subscription-for-network-appliance/).

<!-- TODO -->
[newsletter]: https://newsletter.3mdeb.com/subscription/pULA4K0Eo
Loading

0 comments on commit c68a6ad

Please sign in to comment.