[DEV][ROM][UNOFFICIAL] LineageOS 19 (Android 12L) for Raspberry Pi 4 B

Search This thread

juniorhero

Senior Member
Jun 8, 2015
73
5
apps shows device is rooted even without installing magisk.

safetynet cts profile is failing

how to fix? also please provide boot.img to patch magisk
 

KonstaT

Senior Member
Jan 20, 2016
726
438
KonstaKANG.com
apps shows device is rooted even without installing magisk.

safetynet cts profile is failing

how to fix? also please provide boot.img to patch magisk
Raspberry Pi is not an Android device to begin with so it has never been Google certified (i.e. it has never passed CTS). I'm not spoofing any device identifiers nor plan to.

Please read the FAQ on how to install Magisk. I've already provided an installer. If you want to spoof SafetyNet you can do it using Magisk modules just like on any other device.
 

juniorhero

Senior Member
Jun 8, 2015
73
5
Raspberry Pi is not an Android device to begin with so it has never been Google certified (i.e. it has never passed CTS). I'm not spoofing any device identifiers nor plan to.

Please read the FAQ on how to install Magisk. I've already provided an installer. If you want to spoof SafetyNet you can do it using Magisk modules just like on any other device.
i have already installed magisk
can you provide magisk flashable zip for magisk latest version 25.1
i tried with boot.img and seems it is not the usable method for flashing magisk
please provide updated magisk zip or provide method to generate the zip
 
Last edited:

KonstaT

Senior Member
Jan 20, 2016
726
438
KonstaKANG.com
i have already installed magisk
can you provide magisk flashable zip for magisk latest version 25.1
i tried with boot.img and seems it is not the usable method for flashing magisk
please provide updated magisk zip or provide method to generate the zip
v24.3 works just fine and there's no reason why you would need newer Magisk for this. Updating it to the latest version is somewhere in my TODO but there's no immediate plans.

Raspberry Pi doesn't have boot.img (as it's not an Android device to begin with).

If you must have this now, you can create boot.img from kernel (Image) and ramdisk.img (both on the boot partition) using 'mkbootimg' tool -> patch boot.img with Magisk -> split patched boot.img using 'unpackbootimg' -> replace ramdisk.img on the boot partition with the Magisk patched one.
 
Last edited:

juniorhero

Senior Member
Jun 8, 2015
73
5
v24.3 works just fine and there's no reason why you would need newer Magisk for this. Updating it to the latest version is somewhere in my TODO but there's no immediate plans.

Raspberry Pi doesn't have boot.img (as it's not an Android device to begin with).

If you must have this now, you can create boot.img from kernel (Image) and ramdisk.img (both on the boot partition) using 'mkbootimg' tool -> patch boot.img with Magisk -> split patched boot.img using 'unpackbootimg' -> replace ramdisk.img on the boot partition with the Magisk patched one.
thanks
i need to remove TWRP completely. it is causing root detection in android.
i could not find /twrp directory. where is it location
need help
 

juniorhero

Senior Member
Jun 8, 2015
73
5
It's not. There's no way any app would know what recovery you have. There's other means to check device integrity but that's not one of them.

TWRP is /boot/ramdisk-recovery.img.
ok

I am getting following issues in the rom

selinux permissive
data not encrypted, mount parameters are modified
seccomp is disabled
debugging mode is enabled

Is there anyway to fix the ROM ?
i am curious to also know if rom is released as such with all security features disabled
 

KonstaT

Senior Member
Jan 20, 2016
726
438
KonstaKANG.com
ok

I am getting following issues in the rom

selinux permissive
data not encrypted, mount parameters are modified
seccomp is disabled
debugging mode is enabled

Is there anyway to fix the ROM ?
i am curious to also know if rom is released as such with all security features disabled
Sorry but you're mistaken if you think that custom AOSP builds are about security. Even your "regular" Android device is compromised the moment you unlock the bootloader. If security is something that you're interested in, you might want to look into GrapheneOS or CalyxOS that allow you to relock the bootloader. AFAIK this option is currently only available on Pixel devices, though.

Raspberry Pi is completely different animal as it's not even Android device to begin with. My goal is to keep the device customizable/hackable for the end user as well. Android has four major security features from device perspective. On Raspberry Pi these would only prevent all the things that are fun. :)

1. Bootloader

Unlocking the bootloader allows to boot unsigned boot/recovery images. Raspberry Pi is not an Android device to begin with so my builds don't have Android bootloader or even traditional Android boot/recovery images. This is the main security feature as unlocked bootloader allows to boot any boot/recovery image (e.g. TWRP) where you'll have root access i.e. basically full access on the device.

2. dm-verity / Android Verified Boot (AVB)

Verifies that system/vendor partitions are unmodified. dm-verity is disabled on all custom ROMs (excluding the two mentioned above) as you wouldn't be able to install gapps or make any other modifications to system/vendor partitions.

3. SELinux

Enforces access control for system processes. Like noted under 'Issues' SELinux is in permissive mode in my builds so it only logs any denials. There wouldn't too much work for SELinux enforcing but it easily gets away e.g. whenever trying to add support for a new piece of external hardware.

4. data encryption

Contents of userdata can't be read without decrypting the partition with the right pin/password/etc from the user. Not enabled by default on my builds but userdata can be encrypted from Settings -> Security > Encryption and credentials -> Encrypt tablet. Prevents e.g. mounting the sdcard on your Linux machine and making changes on data partition which is something I want to do on occasions.

And USB debugging can be disabled from developer options of course (there's was upstream issue on AOSP/LineageOS which left this enabled by default https://review.lineageos.org/c/LineageOS/android_build/+/330448).
 

juniorhero

Senior Member
Jun 8, 2015
73
5
It's not. There's no way any app would know what recovery you have. There's other means to check device integrity but that's not one of them.

TWRP is /boot/ramdisk-recovery.img.
ok

I am getting following issues in the rom

selinux permissive
data not encrypted, mount parameters are modified
seccomp is disabled
debugging mode is enabled

Is there anyway to fix the ROM ?
i am curious to also know if rom is released as such with all security features disabled
Sorry but you're mistaken if you think that custom AOSP builds are about security. Even your "regular" Android device is compromised the moment you unlock the bootloader. If security is something that you're interested in, you might want to look into GrapheneOS or CalyxOS that allow you to relock the bootloader. AFAIK this option is currently only available on Pixel devices, though.

Raspberry Pi is completely different animal as it's not even Android device to begin with. My goal is to keep the device customizable/hackable for the end user as well. Android has four major security features from device perspective. On Raspberry Pi these would only prevent all the things that are fun. :)

1. Bootloader

Unlocking the bootloader allows to boot unsigned boot/recovery images. Raspberry Pi is not an Android device to begin with so my builds don't have Android bootloader or even traditional Android boot/recovery images. This is the main security feature as unlocked bootloader allows to boot any boot/recovery image (e.g. TWRP) where you'll have root access i.e. basically full access on the device.

2. dm-verity / Android Verified Boot (AVB)

Verifies that system/vendor partitions are unmodified. dm-verity is disabled on all custom ROMs (excluding the two mentioned above) as you wouldn't be able to install gapps or make any other modifications to system/vendor partitions.

3. SELinux

Enforces access control for system processes. Like noted under 'Issues' SELinux is in permissive mode in my builds so it only logs any denials. There wouldn't too much work for SELinux enforcing but it easily gets away e.g. whenever trying to add support for a new piece of external hardware.

4. data encryption

Contents of userdata can't be read without decrypting the partition with the right pin/password/etc from the user. Not enabled by default on my builds but userdata can be encrypted from Settings -> Security > Encryption and credentials -> Encrypt tablet. Prevents e.g. mounting the sdcard on your Linux machine and making changes on data partition which is something I want to do on occasions.

And USB debugging can be disabled from developer options of course (there's was upstream issue on AOSP/LineageOS which left this enabled by default https://review.lineageos.org/c/LineageOS/android_build/+/330448).
cool
thanks for explanation.

i have observed that flashing MindTheGapps zip with twrp is causing root detection in apps. I did not install magisk nor rooted my devices

i am trying to avoid root detection
any other Gapps or alternative way to do this
 

KonstaT

Senior Member
Jan 20, 2016
726
438
KonstaKANG.com
cool
thanks for explanation.

i have observed that flashing MindTheGapps zip with twrp is causing root detection in apps. I did not install magisk nor rooted my devices

i am trying to avoid root detection
any other Gapps or alternative way to do this
I doubt that would be the case either. SafetyNet API is part of Google Play services of course (i.e. only available after installing gapps) but in that case I doubt such apps would work without Play services to begin with.

Ironically you would install Magisk and use whatever is currently the best method it offers for hiding root (you would need to check Magisk forums/discussion about that because I'm not keeping up). I updated my Magisk installer to v25.1 today BTW.
 

juniorhero

Senior Member
Jun 8, 2015
73
5
I doubt that would be the case either. SafetyNet API is part of Google Play services of course (i.e. only available after installing gapps) but in that case I doubt such apps would work without Play services to begin with.

Ironically you would install Magisk and use whatever is currently the best method it offers for hiding root (you would need to check Magisk forums/discussion about that because I'm not keeping up). I updated my Magisk installer to v25.1 today BTW.
ok
i have magisk v25.1 running fine now

so i need to run Shamiko a magisk module best method to hide root https://github.com/LSPosed/LSPosed.github.io/releases

i tried but i am getting sepolicy error on magisk module installation. i tried it on other devices with latest magisk, everywhere else no sepolicy error

please help me out
 

Attachments

  • Screenshot from 2022-07-20 19-34-44.png
    Screenshot from 2022-07-20 19-34-44.png
    524.1 KB · Views: 23

KonstaT

Senior Member
Jan 20, 2016
726
438
KonstaKANG.com
ok
i have magisk v25.1 running fine now

so i need to run Shamiko a magisk module best method to hide root https://github.com/LSPosed/LSPosed.github.io/releases

i tried but i am getting sepolicy error on magisk module installation. i tried it on other devices with latest magisk, everywhere else no sepolicy error

please help me out
Thanks for the report. There was some sepolicy changes in Magisk v25.x.

You can try using an older version. https://androidfilehost.com/?w=files&flid=329389

You can't patch the ramdisk again with the installer. If you don't want to start with a clean installation again you need to restore the original unpatched ramdisk (copy /boot/ramdisk-orig.img as /boot/ramdisk.img).
 

juniorhero

Senior Member
Jun 8, 2015
73
5
Thanks for the report. There was some sepolicy changes in Magisk v25.x.

You can try using an older version. https://androidfilehost.com/?w=files&flid=329389

You can't patch the ramdisk again with the installer. If you don't want to start with a clean installation again you need to restore the original unpatched ramdisk (copy /boot/ramdisk-orig.img as /boot/ramdisk.img).
i tried older versions of magisk, i got same error
do you have zip for magisk v23?
how to generate magisk zip for same?
 

LVSasquatch

New member
Jul 22, 2022
2
0
Hi there, I'm having an issue getting it to load at all. I have the 2gb Res Pi 4 module B. I'm using the Ras Pi 7" touchscreen. I've tried flashing from windows 10 and for the pi itself using twister os on a thumb drive and have the same problem. I've also tried different versions of 19 and 18 of your build. what happens is when I go to boot it up I get a screen that transition from black to white then back to black. It's like it's trying to displaying a splash screen but it's just white. Then nothing else happens. I can see that the screen is no but it's not displaying anything. What sort of stupid thing am I missing to make this work?
 

LVSasquatch

New member
Jul 22, 2022
2
0
Hey KonstaT,

I'm having real issues with trying to get my android to shut down. I'm trying to use it in a car environment, so want my android to shutdown cleanly before I turn power off via relay.

Things I've tried:
1. In config.txt, I've used the gpio-shutdown on a number of pins, each one does the same thing, momentary press turns off the display, long press brings up the power menu.
2. Tried to add your script you wrote for previous lineages versions, I understand they are in a different place now and saw the twrp way to install doesn't work any more. I created the file in the correct spot /vendor/etc/init.d and put in exactly what you had in there with the correct permissions, didn't appear to work.

Each time I've tried it, it just brings up the power menu, instead of shutting down. Is there something different in 12l that has changed? Or can I even do what I want to do?

Cheers for your work on this, it's awesome, I have everything else working well, including a BigTreeTech 5inch screen working perfectly!
How did you get the 800x480 screen to work? I can't only get it to work if it's hook via HDMI to my 1080p monitor. I tried moding the resolution file to 800x480 and deleting all together that didn't work. Did you have to make changed to the config.txt file?
 

KonstaT

Senior Member
Jan 20, 2016
726
438
KonstaKANG.com
Hi there, I'm having an issue getting it to load at all. I have the 2gb Res Pi 4 module B. I'm using the Ras Pi 7" touchscreen. I've tried flashing from windows 10 and for the pi itself using twister os on a thumb drive and have the same problem. I've also tried different versions of 19 and 18 of your build. what happens is when I go to boot it up I get a screen that transition from black to white then back to black. It's like it's trying to displaying a splash screen but it's just white. Then nothing else happens. I can see that the screen is no but it's not displaying anything. What sort of stupid thing am I missing to make this work?
Please read the FAQ on how to use the official 7" DSI display. There's a settings option that you need to enable to make the required changes to configs.
why Hardware video decoding & encoding not working?
There's already support for very experimental H.264 hw video decoding. Current issue with it is that hw codecs on Pi don't produce linear buffers but use their on own tiling modifier instead.

Raspberry Pi has a stateless H.265 hw decoder so that's currently not in the scope with v4l2_codec2 that is used on Android.
 

heist82

New member
Jun 4, 2022
3
0
How did you get the 800x480 screen to work? I can't only get it to work if it's hook via HDMI to my 1080p monitor. I tried moding the resolution file to 800x480 and deleting all together that didn't work. Did you have to make changed to the config.txt file?

This is my config file:

the main bot to get it working was this i beleive:

# Display panel
[gpio21=1]
#dtoverlay=cutiepi-panel
dtoverlay=vc4-kms-dsi-7inch
#dtoverlay=vc4-kms-dsi-lt070me05000
#dtoverlay=vc4-kms-dsi-lt070me05000-v2
[all]
dtoverlay=rpi-backlight

Code:
# Kernel
arm_64bit=1
kernel=Image

# Ramdisk
gpio=21=ip,pu
[gpio21=1]
initramfs ramdisk.img followkernel
[gpio21=0]
initramfs ramdisk-recovery.img followkernel
[all]

# Audio
dtparam=audio=on

# Audio DAC
#dtoverlay=hifiberry-dacplus

# Boot device
dtoverlay=android-sdcard
#dtoverlay=android-usb

# Camera
camera_auto_detect=1
start_x=1

# Display
[HDMI:0]
[HDMI:1]
hdmi_force_hotplug=1
hdmi_drive=2
hdmi_group=1
hdmi_mode=4
disable_overscan=1
[all]

# Display panel
[gpio21=1]
#dtoverlay=cutiepi-panel
dtoverlay=vc4-kms-dsi-7inch
#dtoverlay=vc4-kms-dsi-lt070me05000
#dtoverlay=vc4-kms-dsi-lt070me05000-v2
[all]
dtoverlay=rpi-backlight

# Fan
#dtoverlay=gpio-fan
#dtoverlay=rpi-poe
#dtoverlay=rpi-poe-plus

# Graphics acceleration
[gpio21=1]
dtoverlay=vc4-kms-v3d
dtoverlay=cma,cma-384
[all]

# I2C
dtparam=i2c_arm=on

# I2S
#dtparam=i2s=on

# IR
#dtoverlay=gpio-ir,gpio_pin=18

# Keys
dtoverlay=gpio-key,gpio=21,keycode=116,label="POWER"
#dtoverlay=gpio-key,gpio=26,keycode=115,label="VOLUME_UP"
#dtoverlay=gpio-key,gpio=20,keycode=114,label="VOLUME_DOWN"

# Overclock
over_voltage=0
arm_freq=1500

# RTC
#dtoverlay=i2c-rtc,ds3231

# Sensors
#dtoverlay=android-i2c-sensor,mpu6050

# Serial console
enable_uart=1

# SPI
dtparam=spi=on

# Touchscreen
#dtoverlay=ads7846,cs=1,penirq=25,penirq_pull=2,speed=50000,keep_vref_on=0,swapxy=0,pmax=255,xohms=150,xmin=200,xmax=3900,ymin=200,ymax=3900
#dtoverlay=edt-ft5406
#dtoverlay=goodix

# USB
dtoverlay=dwc2,dr_mode=peripheral
[cm4]
dtoverlay=dwc2,dr_mode=otg
[all]

# V4L2
#dtoverlay=rpivid-v4l2
 

KonstaT

Senior Member
Jan 20, 2016
726
438
KonstaKANG.com
This is my config file:

the main bot to get it working was this i beleive:

# Display panel
[gpio21=1]
#dtoverlay=cutiepi-panel
dtoverlay=vc4-kms-dsi-7inch
#dtoverlay=vc4-kms-dsi-lt070me05000
#dtoverlay=vc4-kms-dsi-lt070me05000-v2
[all]
dtoverlay=rpi-backlight

Code:
# Kernel
arm_64bit=1
kernel=Image

# Ramdisk
gpio=21=ip,pu
[gpio21=1]
initramfs ramdisk.img followkernel
[gpio21=0]
initramfs ramdisk-recovery.img followkernel
[all]

# Audio
dtparam=audio=on

# Audio DAC
#dtoverlay=hifiberry-dacplus

# Boot device
dtoverlay=android-sdcard
#dtoverlay=android-usb

# Camera
camera_auto_detect=1
start_x=1

# Display
[HDMI:0]
[HDMI:1]
hdmi_force_hotplug=1
hdmi_drive=2
hdmi_group=1
hdmi_mode=4
disable_overscan=1
[all]

# Display panel
[gpio21=1]
#dtoverlay=cutiepi-panel
dtoverlay=vc4-kms-dsi-7inch
#dtoverlay=vc4-kms-dsi-lt070me05000
#dtoverlay=vc4-kms-dsi-lt070me05000-v2
[all]
dtoverlay=rpi-backlight

# Fan
#dtoverlay=gpio-fan
#dtoverlay=rpi-poe
#dtoverlay=rpi-poe-plus

# Graphics acceleration
[gpio21=1]
dtoverlay=vc4-kms-v3d
dtoverlay=cma,cma-384
[all]

# I2C
dtparam=i2c_arm=on

# I2S
#dtparam=i2s=on

# IR
#dtoverlay=gpio-ir,gpio_pin=18

# Keys
dtoverlay=gpio-key,gpio=21,keycode=116,label="POWER"
#dtoverlay=gpio-key,gpio=26,keycode=115,label="VOLUME_UP"
#dtoverlay=gpio-key,gpio=20,keycode=114,label="VOLUME_DOWN"

# Overclock
over_voltage=0
arm_freq=1500

# RTC
#dtoverlay=i2c-rtc,ds3231

# Sensors
#dtoverlay=android-i2c-sensor,mpu6050

# Serial console
enable_uart=1

# SPI
dtparam=spi=on

# Touchscreen
#dtoverlay=ads7846,cs=1,penirq=25,penirq_pull=2,speed=50000,keep_vref_on=0,swapxy=0,pmax=255,xohms=150,xmin=200,xmax=3900,ymin=200,ymax=3900
#dtoverlay=edt-ft5406
#dtoverlay=goodix

# USB
dtoverlay=dwc2,dr_mode=peripheral
[cm4]
dtoverlay=dwc2,dr_mode=otg
[all]

# V4L2
#dtoverlay=rpivid-v4l2
Which is exactly what you'd have after enabling Settings -> System -> Raspberry Pi settings -> Touchscreen. In addition this will change /boot/resolution.txt to 800x400.

So, it's just best use a HDMI display first and enable the option for the official display. This way these config changes are also persisted over OTA updates.
 

Top Liked Posts

  • There are no posts matching your filters.
  • 1
    New builds.

    • switch to clang kernel build
    • allow VNC input to wake the device
    • add /boot/config_user.txt for user specific options to backup/restore during OTAs
    • update to Mesa 22.1.7
    • update to Linux 5.10.144 kernel and patch known vulnerabilities (CVE-xxxx-xxxx, and more)
    • Android security patch level: 5 September 2022 (merged)

    • add option to restrict new USB connections
    • add option for left-handed mouse
    • include Raspberry Pi userland tools (vcgencmd, etc) and libdrm modetest
    • switch to clang kernel build
    • allow VNC input to wake the device
    • add /boot/config_user.txt for user specific options to backup/restore during OTAs
    • update to Mesa 22.1.7
    • update to Linux 5.10.144 kernel and patch known vulnerabilities (CVE-xxxx-xxxx, and more)
    • Android security patch level: 5 September 2022 (merged)
  • 19
    Here’s my build of LineageOS 19 for Raspberry Pi 4 Model B, Pi 400, and Compute Module 4. It is unofficial and unsupported by the LineageOS team. It’s for advanced users only. Pi 4 model with at least 2GB of RAM is required to run this build.

    Important! This image includes parts that are licensed under non-commercial license (Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International). You may use this build freely in personal/educational/etc use. Commercial use is not allowed with this build! You can contact me by email to discuss creating customized Android builds for commercial purposes.

    Screenshot_20220313-200456_Settings.png


    There is also Android TV version available.

    Screenshot_20220114-084413_Settings.png


    Working:
    • Audio (HDMI, 3.5mm jack, USB microphones, bluetooth speakers/headphones, etc)
    • Audio DAC (using GPIO DACs e.g. Hifiberry DAC+)
    • Bluetooth (and bluetooth tethering)
    • Camera (using official Pi camera modules & UVC USB webcams)
    • GPIO
    • GPS (using external USB modules e.g. U-Blox 7)
    • Ethernet
    • Hardware accelerated graphics (V3D, OpenGL & Vulkan)
    • HDMI display (and HDMI-CEC)
    • I2C
    • IR remotes (using external GPIO IR modules e.g. TSOP4838)
    • RTC (using external GPIO I2C modules e.g. DS3231)
    • Sensors (using external GPIO I2C modules e.g. MPU6050, LSM6DS3, LSM303DLHC, BME280/BMP280, and APDS9930 accelerometer, gyroscope, magnetometer, temperature, pressure, humidity, ambient light, and proximity)
    • Serial console (using external GPIO serial console adapters e.g. PL2303)
    • SPI
    • Touchscreen/multi-touch (official 7" touchscreen, USB touchscreens, Waveshare SPI touchscreens)
    • USB (mouse, keyboard, storage, etc)
    • USB-C (ADB, MTP, PTP, USB tethering)
    • Wifi (and wifi tethering)

    Not working:
    • Hardware video decoding & encoding (software decoding & encoding works, option to test highly experimental H.264 hardware video decoding)

    Issues:
    • Camcorder (i.e. recording videos) & some third party camera apps don't work with official Pi camera modules (works with UVC USB webcams)
    • SELinux is in permissive mode
    • and more…

    Sources:

    Thanks:
    • Peter Yoon and android-rpi project
    • Roman Stratiienko and GloDroid project
    • AOSP reference board developers (dragonboard, hikey, yukawa)
    • E. Anholt for V3D graphics driver
    • Maxime Ripard for Pi 4 KMS driver
    • Android-x86 project
    • LineageOS team and everyone who has contributed to LineageOS 19
    4
    New build.


    -switch to Linux 5.10 kernel by default
    -fix VC4 HDMI audio with 5.10 kernel (3.5mm jack is now used by default so select the right HDMI device from the settings)
    -add support for the official 7" touchscreen display with hw accelerated graphics (enable configurations for the touchscreen from the settings)
    -minor brightness fixes for the official 7" display
    -add support for Pi camera modules using libcamera, preview & photos work - camcorder doesn't (thanks to Roman Stratiienko)
    -fix UVC USB webcams that use external camera HAL (camera needs to support MJPG format - preview, photos & camcorder works)
    -add option to enable currently very WIP H.264 hardware video decoding using v4l2_codec2 (enable experimental feature from the settings)
    -fix reboots related to Hotspot 2.0 networks/ANQP requests (see issue #6)
    -Vulkan 1.1 (thanks to people at Igalia for Vulkan 1.1 conformance and Roman Stratiienko for latest Mesa fixes)
    -update to Mesa 21.3.1
    -update to Linux 5.10.83 kernel and patch known vulnerabilities (CVE-xxxx-xxxx, and more)
    -Android security patch level: 5 December 2021 (merged)
    3
    New build. Added optional Linux 5.10 kernel add-on to test a lot of WIP stuff.


    -add option to show virtual volume down, volume up, and power keys on navigation bar (requires reboot)
    -add option for old TCP-based ADB over network
    -show IP address and port for ADB/SSH/VNC options
    -update to TWRP 3.6.0_11-0-KonstaKANG
    -update to Mesa 21.3.0
    -update to Linux 5.4.161 kernel and patch known vulnerabilities (CVE-xxxx-xxxx, and more)
    -Android security patch level: 5 November 2021 (merged)

    Linux 5.10 kernel: (optional add-on)
    -various KMS driver improvements (DSI panel support, etc)
    -support for Pi camera modules using libcamera, preview & photos work - camcorder doesn’t (thanks to Roman Stratiienko)
    -option to test currently very WIP H.264 hardware video decoding using v4l2_codec2 (Settings -> System -> Advanced settings -> Hardware video decoding)
    -HDMI audio is not supported! (see issue #4651 & issue #4654)
    -new Raspberry Pi Android kernel bring-up based on AOSP android12-5.10-lts
    -update to Linux 5.10.81 kernel and patch known vulnerabilities (CVE-xxxx-xxxx, and more)
    3
    Wow I didn't expect latest Android being supported on the Pie, thanks for the great work!
    I have two small questions though :
    • Do you know how is support for microG? It doesn't cause any problem? (was wondering about casting videos for example)
    MicroG requires a patch for signature spoofing that is not included in LineageOS for security reasons. I think this is also something that can be achieved using Magisk (which is now supported) but haven't looked into it.
    • I know it has been asked few times already, but now that Android 12 has been released are you confident it will be possible to have support for hardware acceleration soon? Would make a big difference to have a steady 1080p/60fps
    I'm pretty confident it will work eventually. Soon(™) is also a relative term.

    Short term goal is to get some proof of concept that stateful H.264 V4L2 dec/enc can work on Android on Pi 4. Just made some minor progress with v4l2_codec2 couple of days ago and got the dec/enc codec2 component to even do something in the first place. Not sure if the current issues I'm having are due to memory allocation or the codec component negotiating with the kernel driver. There's also still some hardcoded buffer sizes, etc that depend on the video resolution you're trying to dec/enc. Only real hardware that I'm aware that just recently has this working at least to some extent is dragonboard and John Stultz has tweeted some updates on the matter so check those out if you're interested.

    Sorry if this wasn't the news you were looking for but things like this take time.
    3
    Short term goal is to get some proof of concept that stateful H.264 V4L2 dec/enc can work on Android on Pi 4.
    And that didn't even take too long. \o/ But yes, H.264 V4L2 hardware decoding can work on Android on the Pi 4!

    Something still getting messed up somewhere in the pipeline so the colors are not correct and there's a green tint on the bottom half of the playback.
    https://www.dropbox.com/s/hlvcv23ejfpinn5/VID_20211108_194739.mp4?dl=0