Core Development

HALium

Hardware Abstraction Layer for GNU/Linux under Android

Halium is an open-source project which bridges the gap between Android hardware abstraction layers (HAL) and Ubuntu Touch. It leverages libhybris, which allows the system to use Android hardware drivers, making it possible to use hardware like camera's and sensors. libhybris in effect translates Android-specific drivers to non-Android Linux kernels.​

​How's it work?

As you can see in the diagram, the system uses Halium to enable Linux distributions, such as Ubuntu Touch, to run on Android-based devices. At the core, the Android Linux Kernel operates the device, while systemd manages all the services.

Libhybris serves as the bridge between the Android hardware drivers and the distribution, enabling compatibility. The Android container uses chroot to interact with shared Android components like system and vendor partitions, while the Android management scripts ensure that hardware functions are maintained. 


​The way to port.

Almost all modern Ubuntu Touch ports run on top of Halium. This makes it possible to use hardware that normally wouldn't work, such as on-device camera's or biometric authentication.

​A common base.

While every device is different, Halium offers a common base that makes porting Ubuntu Touch a tad easier. You only care about the specific hardware that you're working on.

​Detailed docs.

Halium offers detailed documentation on how to start porting to your device, making it easier to get your foot in the door.