The official description says: Multipath TCP (MPTCP) connections send and receive data over multiple subflows in order to utilize multiple network paths. Each subflow uses the TCP protocol, and TCP options carry header information for MPTCP. Thanks to MPTCP, being able to use multiple paths in parallel or simultaneously brings new use-cases: - Seamless handovers: switching from one path to another while preserving established connections -- Apple is using it for this reason since 2013. - Best network selection: using the "best" available path (latency, losses, cost, bandwidth) -- one path can be used as a "backup" one. - Network aggregation: using multiple paths at the same time to have a higher throughput -- e.g. to combine a fixed an mobile network to send files faster. For example, for HA, it is possible to keep a SSH connection alive when switching from one network to another (e.g. while travelling). To be able to use MPTCP, both ends need to support it. An application has to request it, by creating an MPTCP socket instead of a TCP one. The rest in unchanged. An alternative is to use 'mptcpize' tool, which relies on LD_PRELOAD to create an MPTCP socket instead of a TCP one. Note that a MPTCP-enabled server continues to accept regular TCP connections that do not use the Multipath TCP extension without any performance impact. When a connection request is received, and is linked to a listening socket with MPTCP support, the kernel will simply check if MPTCP options are present. If not, the accepted socket will be a "plain" TCP one, with the same impact as before. To use multiple paths at the same time, additional IP addresses need to be configured, e.g. via the 'ip' tool (IPRoute2). MPTCP in the kernel is enabled in most main Linux distributions (Debian, Ubuntu, RedHat, Fedora, etc.), but in more specific ones like Raspbian. It is available in the Linux kernel since v5.6. Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
Home Assistant Operating System
Home Assistant Operating System (formerly HassOS) is a Linux based operating system optimized to host Home Assistant and its Add-ons.
Home Assistant Operating System uses Docker as its container engine. By default it deploys the Home Assistant Supervisor as a container. Home Assistant Supervisor in turn uses the Docker container engine to control Home Assistant Core and Add-Ons in separate containers. Home Assistant Operating System is not based on a regular Linux distribution like Ubuntu. It is built using Buildroot and it is optimized to run Home Assistant. It targets single board compute (SBC) devices like the Raspberry Pi or ODROID but also supports x86-64 systems with UEFI.
Features
- Lightweight and memory-efficient
- Minimized I/O
- Over The Air (OTA) updates
- Offline updates
- Modular using Docker container engine
Supported hardware
- Raspberry Pi
- Hardkernel ODROID
- Asus Tinker Board
- Generic x86-64 (e.g. Intel NUC)
- Virtual appliances
See the full list and specific models here
Getting Started
If you just want to use Home Assistant the official getting started guide and installation instructions take you through how to download Home Assistant Operating System and get it running on your machine.
If you're interested in finding out more about Home Assistant Operating System and how it works read on...
Development
If you don't have experience with embedded systems, Buildroot or the build process for Linux distributions it is recommended to read up on these topics first (e.g. Bootlin has excellent resources).
The Home Assistant Operating System documentation can be found on the Home Assistant Developer Docs website.
Components
- Bootloader:
- Operating System:
- Buildroot LTS Linux
- File Systems:
- Container Platform:
- Docker Engine for running Home Assistant components in containers
- Updates:
- RAUC for Over The Air (OTA) and USB updates
- Security:
- AppArmor Linux kernel security module
Development builds
The Development build GitHub Action Workflow is a manually triggered workflow which creates Home Assistant OS development builds. The development builds are available at https://os-artifacts.home-assistant.io/index.html.