Difference between revisions of "Hybris"

From postmarketOS
Jump to: navigation, search
(Install the hybris related packages: libhybris-7.1-caf if no more, X11 support is optional)
(10 intermediate revisions by 3 users not shown)
Line 3: Line 3:
 
== Using libhybris with your device ==
 
== Using libhybris with your device ==
  
''This is a stub copied from chat messages in #postmarketOS. Please extend if you are porting your device to libhybris.''
+
=== libhybris current usage ===
 +
It is used for the [[Planet_Computers_Gemini_PDA_(planet-geminipda)|Gemini PDA]] (non-CAF) and [[Samsung_Galaxy_S4_Mini_dual_sim|Samsung s4 mini duos]] (CAF) device ports.
  
* convert the halium system.img to a mountable image (basically what the [https://github.com/Halium/halium-scripts/blob/master/halium-install#L41-L52 halium install script] does)
+
=== Android system image ===
* install postmarketOS on the device without user interface and copy the new system.img to the device, to <code>/var/lib/lxc/android/system.img</code>
+
 
* install the hybris related packages:
+
First thing to do is convert the halium generated '''system.img''' to a mountable image (basically what the [https://github.com/Halium/halium-scripts/blob/master/halium-install#L41-L52 halium install script] does)
 +
and the new '''system.img''' to the device, to <code>/var/lib/lxc/android/system.img</code>
 +
 
 +
The way to do attain this, is:
 +
* Port halium 7.1 (https://docs.halium.org , https://halium.org) to your device. This may take considerable effort. Note that we only have hybris 7.1 packaged at the moment.
 +
* Get it running to a point where you have at least graphics operational
 +
* It works if you run the same kernel source for both, and apply all defconfig changes needed for the halium port to your postmarketos port
 +
* Boot your halium-running device into android recovery, and download the <code>/data/system.img</code> file from it. This is the systemimage you've built for halium, with the modifications that the installation script has done.
 +
* Flash postmarketOS to your device, where you've included the necessary changes for halium
 +
* Upload the system.img file to <code>/var/lib/lxc/android/system.img</code>
 +
 
 +
=== Install the hybris related packages ===
  
 
<syntaxhighlight lang="shell-session">
 
<syntaxhighlight lang="shell-session">
 
$ sudo apk add lxc-android \
 
$ sudo apk add lxc-android \
              xf86-video-hwcomposer \
 
              xf86-video-hwcomposer-7.1-caf \
 
 
               libhybris \
 
               libhybris \
 +
              libhybris-7.1 \
 
               libhybris-egl \
 
               libhybris-egl \
 
               libhybris-gles \
 
               libhybris-gles \
 
               libhybris-libwayland-egl \
 
               libhybris-libwayland-egl \
              libhybris-7.1-caf \
 
 
               wayland-libs-client \
 
               wayland-libs-client \
 
               wayland-libs-server
 
               wayland-libs-server
 
</syntaxhighlight>
 
</syntaxhighlight>
  
* start the service:
+
For X11 support, install the following, depending if you need software which is built for Code Aurora Forum’s Android for MSM (generally nicknamed “CAF” for short):
 
<syntaxhighlight lang="shell-session">
 
<syntaxhighlight lang="shell-session">
$ sudo rc-service lxc-android start
+
$ sudo apk add xf86-video-hwcomposer xf86-video-hwcomposer-7.1-caf             
 
</syntaxhighlight>
 
</syntaxhighlight>
  
== Test whether lxc-android works properly and kernel is correctly configured ==
+
For all the other devices:
 
+
<syntaxhighlight lang="shell-session">
1) Ensure you installed the packages above, started the lxc-android service and checked that it's running
+
$ sudo apk add xf86-video-hwcomposer xf86-video-hwcomposer-7.1             
 +
</syntaxhighlight>
  
2) Download the Halium reference rootfs from bshah’s personal server: http://bshah.in/halium/halium-rootfs-20170630-151006.tar.gz
+
=== Start the android container ===
 
 
3) Extract to a temporary folder
 
 
 
4) Bind some folders into the halium rootfs
 
 
<syntaxhighlight lang="shell-session">
 
<syntaxhighlight lang="shell-session">
$ mount --bind /dev /tmp/halium-rootfs/dev
+
$ sudo rc-service lxc-android start
$ mount --bind /sys /tmp/halium-rootfs/sys
 
$ mount --bind /proc /tmp/halium-rootfs/proc
 
$ mount --bind /vendor /tmp/halium-rootfs/vendor
 
$ mount --bind /system /tmp/halium-rootfs/system
 
 
</syntaxhighlight>
 
</syntaxhighlight>
  
5) Chroot into halium
+
=== Configure Xorg ===
<syntaxhighlight lang="shell-session">
+
 
$ chroot /tmp/halium-rootfs /bin/bash
+
You need to create the <code>/etc/X11/xorg.conf.d/10-<device>.conf</code> with the following:
 +
<syntaxhighlight>
 +
Section "Device"
 +
  Identifier "Card0"
 +
  Driver "hwcomposer"
 +
EndSection
 
</syntaxhighlight>
 
</syntaxhighlight>
  
6) Update
+
=== Run hardware composer test (to verify it all works) ===
 +
For a CAF device, use this command:
 
<syntaxhighlight lang="shell-session">
 
<syntaxhighlight lang="shell-session">
$ echo "deb http://repo.halium.org/caf xenial main" >> /etc/apt/sources.list.d/halium-caf.list
+
$ EGL_PLATFORM=hwcomposer test_hwcomposer_7_caf
$ apt-get update
 
$ apt-get dist-upgrade
 
 
</syntaxhighlight>
 
</syntaxhighlight>
  
7) Test
+
For a non-CAF device, use this command:
 
<syntaxhighlight lang="shell-session">
 
<syntaxhighlight lang="shell-session">
 
$ EGL_PLATFORM=hwcomposer test_hwcomposer
 
$ EGL_PLATFORM=hwcomposer test_hwcomposer
 
</syntaxhighlight>
 
</syntaxhighlight>
 
  
 
== See also ==
 
== See also ==
Line 68: Line 74:
 
* [https://postmarketos.org/blog/2018/06/09/one-year/#libhybris-and-optional-proprietary-components One year of postmarketOS: libhybris and optional proprietary components]
 
* [https://postmarketos.org/blog/2018/06/09/one-year/#libhybris-and-optional-proprietary-components One year of postmarketOS: libhybris and optional proprietary components]
 
* [https://postmarketos.org/blog/2017/12/31/219-days-of-postmarketOS/#libre-drivers-and-libhybris 219 days of postmarketOS: libre drivers and libhybris]
 
* [https://postmarketos.org/blog/2017/12/31/219-days-of-postmarketOS/#libre-drivers-and-libhybris 219 days of postmarketOS: libre drivers and libhybris]
 +
 +
 +
[[Category:Technical Reference]]

Revision as of 08:25, 25 May 2019

Libhybris allows devices lacking FLOSS drivers to make full use of their hardware by using the proprietary drivers from Android. Mainlining and using free software drivers is of course the better approach, but it is not possible for all devices. We will not list devices that need hybris as featured devices (see postmarketos.org#83).

Using libhybris with your device

libhybris current usage

It is used for the Gemini PDA (non-CAF) and Samsung s4 mini duos (CAF) device ports.

Android system image

First thing to do is convert the halium generated system.img to a mountable image (basically what the halium install script does) and the new system.img to the device, to /var/lib/lxc/android/system.img

The way to do attain this, is:

  • Port halium 7.1 (https://docs.halium.org , https://halium.org) to your device. This may take considerable effort. Note that we only have hybris 7.1 packaged at the moment.
  • Get it running to a point where you have at least graphics operational
  • It works if you run the same kernel source for both, and apply all defconfig changes needed for the halium port to your postmarketos port
  • Boot your halium-running device into android recovery, and download the /data/system.img file from it. This is the systemimage you've built for halium, with the modifications that the installation script has done.
  • Flash postmarketOS to your device, where you've included the necessary changes for halium
  • Upload the system.img file to /var/lib/lxc/android/system.img

Install the hybris related packages

$ sudo apk add lxc-android \
               libhybris \
               libhybris-7.1 \
               libhybris-egl \
               libhybris-gles \
               libhybris-libwayland-egl \
               wayland-libs-client \
               wayland-libs-server

For X11 support, install the following, depending if you need software which is built for Code Aurora Forum’s Android for MSM (generally nicknamed “CAF” for short):

$ sudo apk add xf86-video-hwcomposer xf86-video-hwcomposer-7.1-caf

For all the other devices:

$ sudo apk add xf86-video-hwcomposer xf86-video-hwcomposer-7.1

Start the android container

$ sudo rc-service lxc-android start

Configure Xorg

You need to create the /etc/X11/xorg.conf.d/10-<device>.conf with the following:

Section "Device"
  Identifier "Card0"
  Driver "hwcomposer"
EndSection

Run hardware composer test (to verify it all works)

For a CAF device, use this command:

$ EGL_PLATFORM=hwcomposer test_hwcomposer_7_caf

For a non-CAF device, use this command:

$ EGL_PLATFORM=hwcomposer test_hwcomposer

See also