From cbcf9ae34ebe929406a97089b4133d8e044939d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20=C4=8Cerm=C3=A1k?= Date: Thu, 7 Aug 2025 11:35:02 +0200 Subject: [PATCH] Migrate docs to developers.home-assistant.io (#4215) * Migrate docs to developers.home-assistant.io Move all documentation (except the kernel.md, for which it makes sense to be kept here) to developers.home-assistant.io. Just bluetooth.md was intentionally not preserved, as the information value was low and it was out of date anyway. See home-assistant/developers.home-assistant#2748 * Fix reference links --- Documentation/README.md | 12 +- Documentation/bluetooth.md | 12 -- Documentation/boards/README.md | 62 ------ Documentation/boards/asus/README.md | 31 --- .../boards/generic-aarch64/README.md | 36 ---- Documentation/boards/generic-x86-64/README.md | 62 ------ Documentation/boards/hardkernel/README.md | 28 --- Documentation/boards/hardkernel/odroid-c2.md | 22 -- Documentation/boards/hardkernel/odroid-c4.md | 16 -- Documentation/boards/hardkernel/odroid-m1.md | 50 ----- Documentation/boards/hardkernel/odroid-m1s.md | 58 ------ Documentation/boards/hardkernel/odroid-n2.md | 18 -- Documentation/boards/hardkernel/odroid-xu4.md | 29 --- Documentation/boards/ova/README.md | 22 -- Documentation/boards/raspberrypi/README.md | 50 ----- Documentation/configuration.md | 63 ------ Documentation/network.md | 193 ------------------ Documentation/usb-disk.png | Bin 68576 -> 0 bytes 18 files changed, 6 insertions(+), 758 deletions(-) delete mode 100644 Documentation/bluetooth.md delete mode 100644 Documentation/boards/README.md delete mode 100644 Documentation/boards/asus/README.md delete mode 100644 Documentation/boards/generic-aarch64/README.md delete mode 100644 Documentation/boards/generic-x86-64/README.md delete mode 100644 Documentation/boards/hardkernel/README.md delete mode 100644 Documentation/boards/hardkernel/odroid-c2.md delete mode 100644 Documentation/boards/hardkernel/odroid-c4.md delete mode 100644 Documentation/boards/hardkernel/odroid-m1.md delete mode 100644 Documentation/boards/hardkernel/odroid-m1s.md delete mode 100644 Documentation/boards/hardkernel/odroid-n2.md delete mode 100644 Documentation/boards/hardkernel/odroid-xu4.md delete mode 100644 Documentation/boards/ova/README.md delete mode 100644 Documentation/boards/raspberrypi/README.md delete mode 100644 Documentation/configuration.md delete mode 100644 Documentation/network.md delete mode 100644 Documentation/usb-disk.png diff --git a/Documentation/README.md b/Documentation/README.md index 85a046fe2..cb0223a03 100644 --- a/Documentation/README.md +++ b/Documentation/README.md @@ -1,9 +1,9 @@ # Documentation -## Contents +Documentation for the Home Assistant Operating System is available at [developers.home-assistant.io/docs/operating-system/][docs]. +If you want to contribute to this documentation, please refer to the [home-assistant/developers.home-assistant][docs-repo] repository. -- [Configuration](./configuration.md) - how users can configure HAOS -- [Network](./network.md) - approach to networking -- [Bluetooth](./bluetooth.md) - approach to bluetooth -- [Kernel](./kernel.md) - kernel versions -- [Boards](./boards/README.md) - board specific documentation +For the list of Linux kernel versions used currently in this branch of Home Assistant Operating System, see [kernel.md](./kernel.md). + +[docs]: https://developers.home-assistant.io/docs/operating-system/ +[docs-repo]: https://github.com/home-assistant/developers.home-assistant/ diff --git a/Documentation/bluetooth.md b/Documentation/bluetooth.md deleted file mode 100644 index c94b4a446..000000000 --- a/Documentation/bluetooth.md +++ /dev/null @@ -1,12 +0,0 @@ -# Bluetooth - -We support `bluetoothctl` on the host. Later we want to support Bluetooth through the UI. -All pairs and settings are persistent over reboots and updates. - -If you want to setup Bluetooth on the host, use the `bluetoothctl` utility. - -## Scan devices - -``` -[bluetooth]# scan on -``` diff --git a/Documentation/boards/README.md b/Documentation/boards/README.md deleted file mode 100644 index 0e500283e..000000000 --- a/Documentation/boards/README.md +++ /dev/null @@ -1,62 +0,0 @@ -# Boards - -## Overview - -The following boards/devices are supported: - -- Nabu Casa - - [Home Assistant Green](https://www.home-assistant.io/green/) - - [Home Assistant Yellow](https://www.home-assistant.io/yellow/) (based custom carrier board and powered by a Raspberry Pi 4 Compute Module) - - [Home Assistant Blue](https://www.home-assistant.io/blue/) (based on ODROID-N2+) -- Raspberry Pi - - Pi 5 ([4 GB](https://www.raspberrypi.com/products/raspberry-pi-5/?variant=raspberry-pi-5-4gb) and [8 GB](https://www.raspberrypi.com/products/raspberry-pi-5/?variant=raspberry-pi-5-8gb) model) 64-bit - - Pi 4 Model B ([1 GB](https://www.raspberrypi.com/products/raspberry-pi-4-model-b/?variant=raspberry-pi-4-model-b-1gb), [2 GB](https://www.raspberrypi.com/products/raspberry-pi-4-model-b/?variant=raspberry-pi-4-model-b-2gb), [4 GB](https://www.raspberrypi.com/products/raspberry-pi-4-model-b/?variant=raspberry-pi-4-model-b-4gb) and [8 GB](https://www.raspberrypi.com/products/raspberry-pi-4-model-b/?variant=raspberry-pi-4-model-b-8gb) model) 32-bit or 64-bit (recommended) - - [Pi 3 Model B](https://www.raspberrypi.com/products/raspberry-pi-3-model-b/) and [B+](https://www.raspberrypi.com/products/raspberry-pi-3-model-b-plus/) 32-bit or 64-bit (recommended) - - [Pi 2](https://www.raspberrypi.com/products/raspberry-pi-2-model-b/) (not recommended) -- Hardkernel - - [ODROID-C2](https://www.hardkernel.com/shop/odroid-c2/) (discontinued) - - [ODROID-C4](https://www.hardkernel.com/shop/odroid-c4/) - - [ODROID-M1](https://www.hardkernel.com/shop/odroid-m1/) - - ODROID-M1S [4 GB](https://www.hardkernel.com/shop/odroid-m1s-with-4gbyte-ram/) or [8 GB](https://www.hardkernel.com/shop/odroid-m1s-with-8gbyte-ram/) - - [ODROID-N2](https://www.hardkernel.com/shop/odroid-n2/) (discontinued) - - ODROID-N2+ [2 GB](https://www.hardkernel.com/shop/odroid-n2-with-2gbyte-ram-2/) or [4 GB](https://www.hardkernel.com/shop/odroid-n2-with-4gbyte-ram-2/) - - [ODROID-XU4](https://www.hardkernel.com/shop/odroid-xu4-special-price/) -- Asus - - [Tinker Board](https://tinker-board.asus.com/product/tinker-board.html) -- Generic x86-64 (UEFI, not suited for virtualization) - - [Intel NUC5CPYH](https://www.intel.com/content/www/us/en/products/sku/85254/intel-nuc-kit-nuc5cpyh/specifications.html) - - [Intel NUC6CAYH](https://www.intel.com/content/www/us/en/products/sku/95062/intel-nuc-kit-nuc6cayh/specifications.html) - - [Intel NUC10I3FNK2](https://www.intel.com/content/www/us/en/products/sku/195503/intel-nuc-10-performance-kit-nuc10i3fnk/specifications.html) - - [Gigabyte GB-BPCE-3455](https://www.gigabyte.com/Mini-PcBarebone/GB-BPCE-3455-rev-10/sp#sp) - - Computers supporting x86-64 architecture and UEFI boot should generally work -- Virtual appliance (x86_64/UEFI): - - VMDK - - OVA ? - - VHDX ? - - VDI ? - - QCOW2 ? - -Notes: - - see ? above: are these currently supported? see ova documentation which explains issues with previous OVA distribution) - -## Board specifics - -|Board|Build|Config|Docs| -|-----|----|------|----| -|Green |`make green` |[green](../../buildroot-external/configs/green_defconfig)|-| -|Yellow |`make yellow` |[yellow](../../buildroot-external/configs/yellow_defconfig)|-| -|Pi5 64-bit |`make rpi5_64` |[rpi5_64](../../buildroot-external/configs/rpi5_64_defconfig)|[raspberrypi](./raspberrypi/)| -|Pi4B 64-bit |`make rpi4_64` |[rpi4_64](../../buildroot-external/configs/rpi4_64_defconfig)|[raspberrypi](./raspberrypi/)| -|Pi4B 32-bit |`make rpi4` |[rpi4](../../buildroot-external/configs/rpi4_defconfig)|[raspberrypi](./raspberrypi/)| -|Pi3B 64-bit |`make rpi3_64` |[rpi3_64](../../buildroot-external/configs/rpi3_64_defconfig)|[raspberrypi](./raspberrypi/)| -|Pi3B 32-bit |`make rpi3` |[rpi3](../../buildroot-external/configs/rpi3_defconfig)|[raspberrypi](./raspberrypi/)| -|Pi2 |`make rpi2` |[rpi2](../../buildroot-external/configs/rpi2_defconfig)|[raspberrypi](./raspberrypi/)| -|ODROID-C2 |`make odroid_c2` |[odroid_c2](../../buildroot-external/configs/odroid_c2_defconfig)|[hardkernel](./hardkernel/)| -|ODROID-C4 |`make odroid_c4` |[odroid_c4](../../buildroot-external/configs/odroid_c4_defconfig)|[hardkernel](./hardkernel/)| -|ODROID-M1 |`make odroid_m1` |[odroid_m1](../../buildroot-external/configs/odroid_m1_defconfig)|[hardkernel](./hardkernel/)| -|ODROID-M1S |`make odroid_m1s` |[odroid_m1s](../../buildroot-external/configs/odroid_m1s_defconfig)|[hardkernel](./hardkernel/)| -|ODROID-N2/N2+ |`make odroid_n2` |[odroid_n2](../../buildroot-external/configs/odroid_n2_defconfig)|[hardkernel](./hardkernel/)| -|ODROID-XU4 |`make odroid_xu4` |[odroid_xu4](../../buildroot-external/configs/odroid_xu4_defconfig)|[hardkernel](./hardkernel/)| -|Tinker Board |`make tinker` |[tinker](../../buildroot-external/configs/tinker_defconfig)|[asus](./asus/)| -|Generic x86-64|`make generic_x86_64`|[generic_x86_64](../../buildroot-external/configs/generic_x86_64_defconfig)|[generic-x86-64](./generic-x86-64/)| -|OVA |`make ova` |[ova](../../buildroot-external/configs/ova_defconfig)|[ova](./ova/)| diff --git a/Documentation/boards/asus/README.md b/Documentation/boards/asus/README.md deleted file mode 100644 index 9cb5f60be..000000000 --- a/Documentation/boards/asus/README.md +++ /dev/null @@ -1,31 +0,0 @@ -# Tinker Board - -## Supported Hardware - -| Device | Release Date | Support | Config | -|----------------|---------------|---------|----------| -| Tinker RK3288 | April 2017 | yes | [tinker](../../../buildroot-external/configs/tinker_defconfig) | -| Tinker S RK3288| January 2018 | yes | [tinker](../../../buildroot-external/configs/tinker_defconfig) | -| Tinker Edge T | November 2019 | no? | | -| Tinker Edge R | November 2019 | no? | | - -## eMMC - -eMMC support is provided with the same image. Just flash the image to the eMMC by connecting your Tinker Board S to your PC via Micro-USB. Refer to the Tinkerboard documentation how-to flash using Micro-USB and UMS. - -The Home Assistant OS provided U-Boot does support UMS as well, -however manual intervention is necessary: - - 1. Set the jumper between Micro-USB and HDMI the maskrom mode - 2. Insert SD card and connect the board via Micro-USB to your PC - 3. Continusly press Ctrl+C to interrupt boot - 4. Set the jumper back to the park position - 5. Start UMS using: -``` -ums 0 mmc 0 -``` - 6. A mass storage device should appear. Flash Home Assistant OS to it. - -## Serial console - -To access the terminal over serial console, add `console=ttyS2,115200` to `cmdline.txt`. GPIO pins are: 34 = GND / 32 = UART TXD / 33 = UART RXD. diff --git a/Documentation/boards/generic-aarch64/README.md b/Documentation/boards/generic-aarch64/README.md deleted file mode 100644 index 8cf8e9f8e..000000000 --- a/Documentation/boards/generic-aarch64/README.md +++ /dev/null @@ -1,36 +0,0 @@ -# Generic aarch64 - -## Supported Hardware - -This board configuration aims to support most aarch64 systems with UEFI boot -Hardware it has been tested with is listed below. - -## Tested Hardware - -| Device | Release Date | Support | Config | -|-----------------------|--------------|---------|-------------| -| QEMU | QEMU | yes | [generic_aarch64](../../../buildroot-external/configs/generic_aarch64_defconfig) | - - -## Requirements - -- aarch64 support -- UEFI boot - -## Wifi - -WiFi is untested. - -## Bluetooth - -Bluetooth is untested. - -## Installation - -Make sure secure boot is disabled in the UEFI BIOS settings. - -Currently there is no shiny installation method. Checklist: -- Boot PC to live environment using PXE or USB -- Copy or download the Home Assistant OS image into your live environment -- unxz the image and dd to the local hard disk -- Reboot diff --git a/Documentation/boards/generic-x86-64/README.md b/Documentation/boards/generic-x86-64/README.md deleted file mode 100644 index 0965e280e..000000000 --- a/Documentation/boards/generic-x86-64/README.md +++ /dev/null @@ -1,62 +0,0 @@ -# Generic x86-64 - -## Supported Hardware - -This board configuration aims to support most x86-64 systems with UEFI boot. The -main aim is to support Intel NUC mini PCs and similar systems. Hardware it has -been tested with is listed below. - -## Tested Hardware - -| Device | Release Date | Support | Config | -|-----------------------|--------------|---------|-------------| -| Intel NUC5CPYH | Q3 2015 | yes | [generic_x86_64](../../../buildroot-external/configs/generic_x86_64_defconfig) | -| Intel NUC6CAYH | Q4 2016 | yes | [generic_x86_64](../../../buildroot-external/configs/generic_x86_64_defconfig) | -| Intel NUC6CAYS | Q4 2016 | yes | [generic_x86_64](../../../buildroot-external/configs/generic_x86_64_defconfig) | -| Intel NUC7i3DNHE | Q3 2017 | yes | [generic_x86_64](../../../buildroot-external/configs/generic_x86_64_defconfig) | -| Intel NUC10i3FNK2 | Q4 2019 | yes | [generic_x86_64](../../../buildroot-external/configs/generic_x86_64_defconfig) | -| Gigabyte GB-BPCE-3455 | 2017 | yes* | [generic_x86_64](../../../buildroot-external/configs/generic_x86_64_defconfig) | - -\* needs 'nomodeset' in cmdline.txt if you want a console - - -## Requirements - -- x86-64 support -- UEFI boot -- SATA/AHCI or eMMC storage -- Supported NIC: - - Intel Gigabit NIC (e1000, igb - via Linux mainline) - - Intel PCIe Gigabit NIC (e1000e - via out-of-tree module in *buildroot-external/package/intel-e1000e*) - - Realtek Gigabit NIC (r8169) - - Intel Wireless Wifi 802.11ac (iwlwifi, see below) - -## Wifi - -The following cards are supported: - -- Intel Wireless 3160 -- Intel Wireless 7260 -- Intel Wireless 7265 -- Intel Wireless-AC 3165 -- Intel Wireless-AC 3168 -- Intel Wireless-AC 8260 -- Intel Wireless-AC 8265 -- Intel Wireless-AC 9260 -- Intel Wireless-AC 9461 -- Intel Wireless-AC 9462 -- Intel Wireless-AC 9560 - -## Bluetooth - -Bluetooth integrated in Intel Wireless cards working OK, other options untested. - -## Installation - -Make sure secure boot is disabled in the UEFI BIOS settings. - -Currently there is no shiny installation method. Checklist: -- Boot PC to live environment using PXE or USB -- Copy or download the Home Assistant OS image into your live environment -- unxz the image and dd to the local hard disk -- Reboot diff --git a/Documentation/boards/hardkernel/README.md b/Documentation/boards/hardkernel/README.md deleted file mode 100644 index 6cf27f047..000000000 --- a/Documentation/boards/hardkernel/README.md +++ /dev/null @@ -1,28 +0,0 @@ -# ODROID - -## Supported Hardware - -| Device | Release Date | Support | Config | -|----------------|---------------|--------------|-----------| -| ODROID-C2 | 2016 | yes | [odroid_c2](../../../buildroot-external/configs/odroid_c2_defconfig) | -| ODROID-C4 | 2020 | yes | [odroid_c4](../../../buildroot-external/configs/odroid_c4_defconfig) | -| ODROID-M1 | 2022 | yes | [odroid_m1](../../../buildroot-external/configs/odroid_m1_defconfig) | -| ODROID-M1S | 2023 | yes | [odroid_m1s](../../../buildroot-external/configs/odroid_m1s_defconfig)| -| ODROID-N2 | 2019 | yes | [odroid_n2](../../../buildroot-external/configs/odroid_n2_defconfig) | -| ODROID-XU4 | 2015 | yes | [odroid_xu4](../../../buildroot-external/configs/odroid_xu4_defconfig)| - -See separate documentation for each board. - -## Connectivity devices - -### Wi-Fi - -The following devices have been tested on Home Assistant OS 5.8: - -- [Bluetooth Module 2](https://www.hardkernel.com/shop/bluetooth-module-2/) -- [WiFi Module 3](https://www.hardkernel.com/shop/wifi-module-3/) - -The [WiFi Module 5A](https://www.hardkernel.com/shop/wifi-module-5a/) is not -recommended as there is no upstream driver support available. The driver -currently compatible with recent Linux kernel version seems to have issues -connecting to 5GHz networks. diff --git a/Documentation/boards/hardkernel/odroid-c2.md b/Documentation/boards/hardkernel/odroid-c2.md deleted file mode 100644 index 86f522996..000000000 --- a/Documentation/boards/hardkernel/odroid-c2.md +++ /dev/null @@ -1,22 +0,0 @@ -# ODROID-C2 - -## eMMC - -eMMC support is provided transparently. Just flash the image to the eMMC board as you would an SD card. - -## Console - -By default, console access is granted over the serial header and over HDMI. Certain startup messages will only appear on the serial console by default. To show the messages on the HDMI console instead, swap the order of the two consoles in the `cmdline.txt` file on the boot partition. You can also delete the AML0 console if you don't plan on using the serial adapter. -eg. `console=ttyAML0,115200n8 console=tty0` - -## USB - -A long-standing kernel bug currently results in some odd behavior. To use the USB, a device must be plugged into one of the USB ports at hard boot. If all devices are removed from the USB ports, the USB will cease to function until a reboot. - -### OTG - -The OTG USB is untested. - -## GPIO - -Refer to [the odroid wiki](https://wiki.odroid.com/odroid-c2/hardware/expansion_connectors). diff --git a/Documentation/boards/hardkernel/odroid-c4.md b/Documentation/boards/hardkernel/odroid-c4.md deleted file mode 100644 index 23bd158ed..000000000 --- a/Documentation/boards/hardkernel/odroid-c4.md +++ /dev/null @@ -1,16 +0,0 @@ -# ODROID-C4 - -## Experimental - -ODROID-C4 support is based heavily on the Odroid-C2 and N2 configurations. Given the similarity of the SoCs, as well as the comparable level of support in the Linux kernel, the C4 should hopefully present few surprises. However, Home Assistant support should be regarded as experimental. - -Please also refer to the documentation pages for the [ODROID-C2](./odroid-c2.md) and [Odroid-N2](./odroid-n2.md), as some of that information may apply to the C4 as well. - -Common C4 issues that have been specifically tested and appear to be working: -- boot from SD -- boot from eMMC -- MAC address obtained from eFuse - -## GPIO - -Refer to [the odroid wiki](https://wiki.odroid.com/odroid-c4/hardware/expansion_connectors). diff --git a/Documentation/boards/hardkernel/odroid-m1.md b/Documentation/boards/hardkernel/odroid-m1.md deleted file mode 100644 index 56fff2866..000000000 --- a/Documentation/boards/hardkernel/odroid-m1.md +++ /dev/null @@ -1,50 +0,0 @@ -# ODROID-M1 - -Home Assistant OS 10 and newer support the ODROID-M1 board. - -## SD-card - -SD-card boot is supported via on-board bootloader (SPL) or recovery button. - -## eMMC - -eMMC boot via on-board bootloader requires a newer version of Petitboot -(spiboot 20230328 or later). To install the latest version download the SPI boot image -from [linuxfactory.or.kr][1] as follows: - -1. Download `spiupdate_odroidm1_20240415.img.xz` -2. Use balenaEtcher or another tool to flash the updater onto an SD card -3. Download `spiboot-20240109.img` -4. Rename the `spiboot-20240109.img` file to`spiboot.img`. -5. Paste the `spiboot.img` file onto the FAT partition of that same SD card. -6. Plug-in that SD card to your ODROID-M1. Petitboot will update itself, you can verify the progress on the HDMI output. -7. If you see the version 20240109 in the top left corner, the installation was successful.\ - If you see any other version there, the installation failed. - -Once Petitboot is updated you can flash Home Assistant OS directly onto an eMMC. - -## NVMe - -Booting directly from NVMe is not supported. The NVMe card can be used as a data disk. - -## Technical notes on boot flow - -The Home Assistant OS image is bootable by the SoC directly. This means that no help -from the Hardkernel provided and pre-installed bootloader Petitboot is necessary. -However, the ODROID-M1 automatically boots from internal SPI. To boot -directly off the SD-card or eMMC you need to press the recovery button. - -The SPI flashed U-Boot SPL tries searches for an U-Boot binary on the SD-card -(and from eMMC with Petitboot 20230328 and later). This mechanism allows you to -boot the Home Assistant OS U-Boot without pressing the recovery button. - -## Console - -By default, console access is available on the serial header (CON1) and on HDMI. -The serial console's baudrate is 1500000 by default. - -The systemd startup messages will only appear on the serial console by default. -To show the messages on the HDMI console instead, add the console manually -to the `cmdline.txt` file on the boot partition (e.g. `console=tty0`). - -[1]: http://ppa.linuxfactory.or.kr/images/petitboot/odroidm1/ diff --git a/Documentation/boards/hardkernel/odroid-m1s.md b/Documentation/boards/hardkernel/odroid-m1s.md deleted file mode 100644 index bc2647f14..000000000 --- a/Documentation/boards/hardkernel/odroid-m1s.md +++ /dev/null @@ -1,58 +0,0 @@ -# ODROID-M1S - -Home Assistant OS 12 and newer support the ODROID-M1S board. - -## SD-card - -ODROID-M1S can boot HAOS directly from an SD card, as it has higher priority than the system on the eMMC. Simply flash the image to the SD card using your favorite tool and insert it to the micro SD slot on the board. This works even when the eMMC is wiped, or when it contains the factory-default U-Boot SPL loader, which is still able to load U-Boot provided in the HAOS image. In the second case, however, if the SD card fails to probe (e.g. due to a hardware failure), the system on the eMMC may be booted instead of HAOS. - -## eMMC - -HAOS can be installed directly to the eMMC using a special boot image, to do that: - -1. Download the _UMS Utility_ image: [`ODROID-M1S_EMMC2UMS.img`][1]. The _UMS Utility_ is a special image that switches ODROID-M1S to USB Mass Storage device. -2. Use balenaEtcher or another tool to flash the _UMS utility_ onto an SD card. -3. Plug-in that SD card to your ODROID-M1S and boot it. Connect your PC to the Micro USB OTG port. -4. The eMMC will show as a drive on your PC and you can directly flash the HAOS image with balenaEther. - -Installing HAOS replaces the firmware and SPL on the eMMC with the mainline version provided by HAOS. As a result, it is not possible to use the SD card with the EMMC2UMS image anymore, because the mainline SPL is not compatible with U-Boot in the EMMC2UMS image at this time (February 2024). This does not pose any problem for standard use, just makes it more complicated in case you want to return to the Hardkernel-provided OS. - -A reliable way of reflashing the eMMC in this case is to use HAOS booted from an SD card. To do that, insert the SD card with HAOS to the micro SD slot and plug the board in. Once the device boots to the HA CLI, enter `login` to enter the root shell and use `curl` to download an image and `dd` it to the eMMC block device: - -```sh -curl https://dn.odroid.com/RK3566/ODROID-M1S/Installer/ODROID-M1S_EMMC2UMS.img | dd of=/dev/mmcblk0 -``` - -This way the device will start in the UMS mode on the next boot with the SD card removed. Alternatively you can use the [Hardkernel installer image][2] directly instead of the EMMC2UMS image. - -## NVMe - -Booting directly from NVMe is not supported. The NVMe card can be used as a data disk. - -## Technical notes on boot flow - -The Home Assistant OS image is bootable by the SoC directly. Refer to the [boot sequence documentation][3] for the details on what part of the boot is executed from the eMMC and what from the SD card. The steps documented above should however cover all scenarios that a standard user may encounter during usage. - -## Console - -By default, console access is available on the serial header (UART) and on HDMI. -The serial console's baudrate is 1500000 by default. - -The systemd startup messages will only appear on the serial console by default. -To show the messages on the HDMI console instead, add the console manually -to the `cmdline.txt` file on the boot partition (e.g. `console=tty0`). - -## GPIO - -Odroid-M1S introduces a new 14pin expansion header. Refer to [the ODROID wiki][4]. -At this point not all functionality is supported by the upstream kernel used by Home Assistant OS. -Supported modules include: -- UPS -- Internal USB -- Mini IO board (partial support) - - -[1]: https://dn.odroid.com/RK3566/ODROID-M1S/Installer/ODROID-M1S_EMMC2UMS.img -[2]: https://wiki.odroid.com/odroid-m1s/getting_started/os_installation_guide#user_installer -[3]: https://wiki.odroid.com/odroid-m1s/board_support/boot_sequence -[4]: https://wiki.odroid.com/odroid-m1s/hardware/expansion_connectors diff --git a/Documentation/boards/hardkernel/odroid-n2.md b/Documentation/boards/hardkernel/odroid-n2.md deleted file mode 100644 index 2968b07b5..000000000 --- a/Documentation/boards/hardkernel/odroid-n2.md +++ /dev/null @@ -1,18 +0,0 @@ -# ODROID-N2 - -## eMMC - -eMMC support is provided transparently. Just flash the image to the eMMC board as you would an SD card. - -## Console - -By default, console access is granted over the serial header and over HDMI. Certain startup messages will only appear on the serial console by default. To show the messages on the HDMI console instead, swap the order of the two consoles in the `cmdline.txt` file on the boot partition. You can also delete the AML0 console if you don't plan on using the serial adapter. -eg. `console=ttyAML0,115200n8 console=tty0` - -## GPIO - -Refer to [the odroid wiki](https://wiki.odroid.com/odroid-n2/hardware/expansion_connectors). -At this point not all functionality is supported by the upstream kernel used -by Home Assistant OS. - -The GPIO on pin 11 is used as a low active power button input. diff --git a/Documentation/boards/hardkernel/odroid-xu4.md b/Documentation/boards/hardkernel/odroid-xu4.md deleted file mode 100644 index 8314969d3..000000000 --- a/Documentation/boards/hardkernel/odroid-xu4.md +++ /dev/null @@ -1,29 +0,0 @@ -# ODROID-XU4 - -## eMMC - -The ODROID XU4 uses the eMMC boot partition to boot from. Typically eMMC readers can't write to this eMMC boot partition. There are a couple of possibilities: - -1. **Working** e.g. the eMMC already had a working image before flashing HassOS: - - It will be booting to U-Boot (but no further). - - If you have the serial adapter, you should be able to enter `distro_bootcmd` at the uboot prompt to continue booting. - - If not, flash the HassOS image to an SD card and boot off that temporarily (while the eMMC is also plugged in). - - Once booted, login at the prompts and then enter `dd if=/dev/mmcblk0 of=/dev/mmcblk0boot0 bs=512 skip=63 seek=62 count=1440` at the linux prompt. - - Reboot with eMMC (don't forget to flip the boot switch to eMMC) -2. **Not Working** e.g. a clean/wiped/corruped eMMC boot partition: - - You'll need to follow [Hardkernel's instructions](https://forum.odroid.com/viewtopic.php?f=53&t=6173) to get a working boot sector. Then flash HassOS and follow instructions above. - - Alternatively, you can try flash HassOS to both an SD and eMMC, then boot off the SD with the eMMC also plugged in, then run `dd if=/dev/mmcblk1 of=/dev/mmcblk0boot0 bs=512 skip=1 seek=0 count=16381` at the Linux prompt. Note that this is untested, but in theory should work.. - -If you are getting permissions issues when using the dd command, try disabling RO: -`echo 0 > /sys/block/mmcblk0boot0/force_ro` -to re-enable after running dd: -`echo 1 > /sys/block/mmcblk0boot0/force_ro` - -## Console - -By default, console access is granted over the serial header and over HDMI. Certain startup messages will only appear on the serial console by default. To show the messages on the HDMI console instead, swap the order of the two consoles in the `cmdline.txt` file on the boot partition. You can also delete the SAC2 console if you don't plan on using the serial adapter. -eg. `console=tty1 console=ttySAC2,115200` - -## GPIO - -Refer to [the odroid wiki](https://wiki.odroid.com/odroid-xu4/hardware/expansion_connectors). diff --git a/Documentation/boards/ova/README.md b/Documentation/boards/ova/README.md deleted file mode 100644 index 648b05a55..000000000 --- a/Documentation/boards/ova/README.md +++ /dev/null @@ -1,22 +0,0 @@ -# Virtual Machine - -## Supported Hypervisors - -| Hypervisor | Vendor | Support | Config | -|---------------------|-----------|-----------------|--------------------| -| HyperV | Microsoft | yes, via VMDK | [ova](../../../buildroot-external/configs/ova_defconfig) | -| VirtualBox | Oracle | yes, via VMDK | [ova](../../../buildroot-external/configs/ova_defconfig) | -| VMware | VMware | yes, via VMDK | [ova](../../../buildroot-external/configs/ova_defconfig) | - -Currently we only publish a VMDK virtual disk due to issues with our previous OVA distribution. We are investigating our options to bring back the OVA distribution, however, the VMDK works for the hypervisors listed above. - -## Requirements - -Using this VMDK in a virtual machine requires the following: - -- Operating system: Other 4.x or later Linux (64-bit) -- Enabled support for UEFI boot -- SATA disk controller -- Minimal of 1GB RAM -- At least 2x vCPU -- An assigned network diff --git a/Documentation/boards/raspberrypi/README.md b/Documentation/boards/raspberrypi/README.md deleted file mode 100644 index 23d68a83f..000000000 --- a/Documentation/boards/raspberrypi/README.md +++ /dev/null @@ -1,50 +0,0 @@ -# Raspberry PI - -## Supported Hardware - -| Device | Release Date | Support | Config | -|---------------------|---------------|-----------------|--------------------| -| Raspberry Pi 2 B |2015 | not recommended | [rpi2](../../../buildroot-external/configs/rpi2_defconfig) | -| Raspberry Pi 3 B/B+ |2016/2018 | yes | [rpi3](../../../buildroot-external/configs/rpi3_defconfig) / [rpi3_64](../../../buildroot-external/configs/rpi3_64_defconfig) | -| Raspberry Pi 4 B |2019 | yes | [rpi4](../../../buildroot-external/configs/rpi4_defconfig) / [rpi4_64](../../../buildroot-external/configs/rpi4_64_defconfig) | -| Raspberry Pi 5 |2023 | yes (beta) | [rpi5_64](../../../buildroot-external/configs/rpi5_64_defconfig) | - -## Serial console - -For access to terminal over serial console, add `console=ttyAMA0,115200` to `cmdline.txt` and `enable_uart=1`, `dtoverlay=pi3-disable-bt` into `config.txt`. GPIO pins are: 6 = GND / 8 = UART TXD / 10 = UART RXD. - -## I2C - -Add `dtparam=i2c1=on` and `dtparam=i2c_arm=on` to `config.txt`. After that we create a module file on host with [config usb stick][config] or direct into `/etc/modules-load.d`. - -rpi-i2c.conf: -``` -i2c-dev -i2c-bcm2708 -``` - -## USB Boot - -USB mass storage boot is available on Raspberry Pi 4 (64-bit only), 3B, 3B+, 3A+, and 2B v1.2. - -For Raspberry 3B, 3A+ and 2B v1.2, to enable USB boot, add `program_usb_boot_mode=1` into `config.txt`. Note that this **permanently** alters the one-time programmable memory of the device. - -For Raspberry 4 - -* Make sure to update the bootloader to a stable release supporting USB mass storage boot (see [bcm2711_bootloader_config.md](https://www.raspberrypi.org/documentation/hardware/raspberrypi/bcm2711_bootloader_config.md#usbmassstorageboot)). -* If no SD card is used add `sd_poll_once=on` to `dtparam` in `config.txt` (comma separated). This gets rid of `mmc0: timeout waiting for hardware interrupt` kernel errors. -* If install still fails, then your SSD likely needs quirks enabled to work correctly (see [Finding the VID and PID of your USB SSD](https://www.raspberrypi.org/forums/viewtopic.php?t=245931)). Once you find your adapter's ID, add the quirks parameter in `cmdline.txt`. - -For more information see [RaspberryPi](https://www.raspberrypi.org/documentation/hardware/raspberrypi/bootmodes/msd.md). - -### Caveats - -* All bootable SD cards must be removed. -* Boot time can be significantly longer with USB. This is due to the boot process first attempting to boot from SD card, failing, and resorting to USB. -* Many USB drives simply do not work for boot. This is likely due to minimal driver support in uboot and will not be fixed. If you can't get it to boot on one drive, try a different brand/model. SanDisk Cruzer drives seem to have a higher rate of issues. - -## Tweaks - -If you don't need bluetooth, disabled it with add `dtoverlay=pi3-disable-bt` into `config.txt`. - -[config]: ../../configuration.md#automatic diff --git a/Documentation/configuration.md b/Documentation/configuration.md deleted file mode 100644 index fa31eb8dd..000000000 --- a/Documentation/configuration.md +++ /dev/null @@ -1,63 +0,0 @@ -# Configuration - -## Automatic - -You can use an USB drive with HassOS to configure network options, SSH access to the host and to install updates. -Format a USB stick with FAT32/EXT4/NTFS and name it `CONFIG` (in all capitals). Alternative you can create a `CONFIG` folder inside the `boot` partition. Use the following directory structure within the USB drive: - -```text -network/ -modules/ -modprobe/ -udev/ -authorized_keys -timesyncd.conf -hassos-xy.raucb -``` - -- The `network` folder can contain any kind of NetworkManager connection files. For more information see [Network][network.md]. -- The `modules` folder is for modules-load configuration files. -- The `modprobe` folder is for modules configuration files (/etc/modprobe.d) -- The `udev` folder is for udev rules files. -- The `authorized_keys` file activates debug SSH access on port `22222`. See [Debugging Home Assistant][debug-homeassistant]. -- The `timesyncd.conf` file allow you to set different NTP servers. HassOS won't boot without correct working time servers! -- The `hassos-*.raucb` file is a firmware OTA update which will be installed. These can be found on on the [release][hassos-release] page. - -Text files that are on USB stick must have Unix (LF) end of line characters. If you create USB stick on Windows machine, be sure to use Notepad++, Visual Studio Code or any other editor, that supports different line endings. In Notepad++ LF EOL can be enabled with setting `Edit -> EOL Conversion -> Unix (LF)`. - -You can put this USB stick into the device and it will be read on startup and files written to the correct places. You can also trigger this process later using `ha os import` from the CLI or by calling `systemctl restart hassos-config` on the OS shell. *The USB Stick just needs to be inserted to the device during this setup process and can be removed afterwards.* - -## Local - -### Bootargs - -You can edit or create a `cmdline.txt` in your boot partition. That will be read from the bootloader. - -### Kernel-Module - -The kernel module folder `/etc/modules-load.d` is persistent and you can add your configuration files there. See [Systemd modules load][systemd-modules]. You can add the modules configuration files in `/etc/modprobe.d` that is also persistent. - -### Udev rules - -The udev rules folder `/etc/udev/rules.d` is persistent and you can add your configuration files there. - -### Network - -You can manual add, edit or remove connections configurations from `/etc/NetworkManager/system-connections`. - -### NTP - -You can manual edit the systemd timesync file on `/etc/systemd/timesyncd.conf`. - -Our default NTP configuration look like: - -``` -[Time] -NTP=time.cloudflare.com -FallbackNTP=0.pool.ntp.org 1.pool.ntp.org 2.pool.ntp.org 3.pool.ntp.org -``` - -[systemd-modules]: https://www.freedesktop.org/software/systemd/man/modules-load.d.html -[network.md]: network.md -[hassos-release]: https://github.com/home-assistant/hassos/releases/ -[debug-homeassistant]: https://developers.home-assistant.io/docs/operating-system/debugging diff --git a/Documentation/network.md b/Documentation/network.md deleted file mode 100644 index 5292f9813..000000000 --- a/Documentation/network.md +++ /dev/null @@ -1,193 +0,0 @@ -# Network - -Home Assistant Operating System uses NetworkManager to control the host network. - -## Configure network - -By default the device will be in DHCP state. - -Basic network settings can be set through the Supervisor frontend in the System -tab. Advanced configurations such as VLAN are also available through the -`ha network` CLI command. - -To restore the default configuration the `ha network` CLI command can be used as -well: - -``` -ha network update default --ipv4-method auto -``` - -If more advanced network settings are required network connection files can be -placed on a USB drive and imported to the host as described in -[Configuration][configuration-usb]. - -## Manual Network Configuration - -If the frontend or `ha network` CLI cannot meet your use case, it is still -possible to configure the underlying NetworkManager manually. - -You can read the [NetworkManager manual][nm-manual] or find many configuration -examples across the internet. Note that changes to `NetworkManager.conf` are -not supported currently, only connection keyfiles are supported. Keep in mind -that the system is read-only. If you don't want the IP address to change on -every boot, you should modify the UUID property to a generic [UUID4][uuid]. -Inside the `\CONFIG\network\` directory on the USB drive or SD card, create a -file called `my-network` and add the appropriate contents below: - -**NOTE: Please make sure to save this file with UNIX line endings (LF, and not Windows' default CRLF endings). You can do this using Notepad these days!** - -### Default - -A preinstalled connection profile for wired network is active by default: - -```ini -[connection] -id=Home Assistant OS default -uuid=f62bf7c2-e565-49ff-bbfc-a4cf791e6add -type=802-3-ethernet -llmnr=2 -mdns=2 - -[ipv4] -method=auto - -[ipv6] -addr-gen-mode=stable-privacy -method=auto -``` - -### Wired connection to the LAN - -```ini -[connection] -id=my-network -uuid=d55162b4-6152-4310-9312-8f4c54d86afa -type=802-3-ethernet -llmnr=2 -mdns=2 - -[ipv4] -method=auto - -[ipv6] -addr-gen-mode=stable-privacy -method=auto -``` - -### Wireless LAN WPA/PSK - -```ini -[connection] -id=my-network -uuid=72111c67-4a5d-4d5c-925e-f8ee26efb3c3 -type=802-11-wireless - -[802-11-wireless] -mode=infrastructure -ssid=MY_SSID -# Uncomment below if your SSID is not broadcasted -#hidden=true - -[802-11-wireless-security] -auth-alg=open -key-mgmt=wpa-psk -psk=MY_WLAN_SECRET_KEY - -[ipv4] -method=auto - -[ipv6] -addr-gen-mode=stable-privacy -method=auto -``` - -### Static IP - -Replace the following configuration: - -```ini -[ipv4] -method=manual -address=192.168.1.111/24;192.168.1.1 -dns=8.8.8.8;8.8.4.4; -``` - -For `address`, the value before the semicolon is the IP address and subnet prefix bitlength. The second value (after the semicolon) is the IP address of the local gateway. - -## Tips - -### Reset network - -If you want to reset the network configuration back to the default connection -profile using DHCP, use the following commands on the host console: - -```bash -# rm -r /mnt/overlay/etc/NetworkManager/system-connections -# reboot -``` - -Home Assistant OS will recreate the default connection profile during boot. - -### Enabling Wi-Fi - -Wi-Fi is discouraged for reliability reasons. However, if you still prefer to use Wi-Fi, you can us the `ha network` command to set up Wi-Fi (example for a Raspberry Pi 4, check `ha network info` to check if your board supports Wi-Fi and the name of the Wi-Fi device): - -```bash -ha network update wlan0 --ipv4-method auto --wifi-auth wpa-psk --wifi-mode infrastructure --wifi-ssid "MY-SSID" --wifi-psk MY_PASS -```` - -### Powersave - -If you have trouble with powersave then apply the following changes: - -```ini -[wifi] -# Values are 0 (use default), 1 (ignore/don't touch), 2 (disable) or 3 (enable). -powersave=0 -``` - -## Using `nmcli` to set a static IPv4 address - -Log into the the Home Assistant OS base system via a console: - -```bash -Welcome to Home Assistant -homeassistant login: -``` - -- Login as `root` (no password needed). At the `ha >` prompt, type `login` (as instructed). - -From there you use the `nmcli` configuration tool. - -- `# nmcli con show` will list the "Home Assistant OS default" connection in use. -- `# nmcli con show "Home Assistant OS default"` will list all the properties of the connection. - -To start editing the configuration setting for "Home Assistant OS default": - -```bash -# nmcli con edit "Home Assistant OS default" -``` - -To add your static IP address (select 'yes' for manual method); - -```bash -nmcli> set ipv4.addresses 192.168.100.10/24 -Do you also want to set 'ipv4.method' to 'manual'? [yes]: -``` - -In addition, it's recommended to set the DNS server and the local gateway. For most home routers the DNS server will have the same IP address as the router itself. If you are using Pi-Hole or a third-party DNS system then you can set the DNS server to that. - -```bash -nmcli> set ipv4.dns 192.168.100.1 -nmcli> set ipv4.gateway 192.168.100.1 -``` - -`nmcli> print ipv4` will show you the IPv4 properties of this connection. With `nmcli> save` you will save the changes afterwards. - -If you now view the default connection `cat /etc/NetworkManager/system-connections/default` you should see the method is manual and the address is set. - -Doing a `nmcli con reload` does not always work, so restart the virtual machine or the physical system. - -[nm-manual]: https://networkmanager.dev/docs/api/1.40/manpages.html -[configuration-usb]: configuration.md -[uuid]: https://www.uuidgenerator.net/version4 diff --git a/Documentation/usb-disk.png b/Documentation/usb-disk.png deleted file mode 100644 index c06cebdf66babd66112f84409564848deba4f179..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 68576 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­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%0AN}|-V%)p~h&UrnS?XX#I0X8P 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 QH26nJPEEE%+BEQg081`B=l}o!