Commit Graph

339 Commits

Author SHA1 Message Date
oxmc c2bb90a406 BoardConfig.mk: re-enable recovery via new UI-plugin design
Old block inherited a full TWRP recovery.mk fork and was disabled
pending Android 16 TWRP support. Current design keeps stock
bootable/recovery unforked and points TARGET_RECOVERY_UI_LIB at
librecovery_ui_pawlet_twrp (vendor/pawlet/recovery_ui), which
recovery_main.cpp dlopen()s at runtime. Not build-tested yet —
libaosprecovery (vendor/pawlet/recovery_toolkit/helpers) has no
Android.bp yet, so this module won't link until that's ported.
2026-07-11 19:41:02 -07:00
oxmc 8d5f56fd05 Sync to upstream android-17.0 (AOSP17)
Pull in raspberry-vanilla's AOSP17 device tree changes for rpi4 while
keeping all PawletOS customizations (A/B partition layout, sepolicy,
zram, TWRP recovery scaffolding, ALSA HDMI pre-warm, product/overlay
structure) intact on top.

Upstream changes absorbed:
- AOSP17 audio HAL refactor (StreamAlsa split into StreamAlsaBase/
  StreamAlsaMonoPipe, Utils.cpp -> UtilsAlsa.cpp, new Bluetooth/stub
  helper classes, libeffects AIDL rebuild via *_ndk_shared defaults)
- API level 36 -> 37, FCM matrix level 202504 -> 202604
- QuickSettings tile default split (SystemUIRpiOverlay, ported into
  pawlet_rpi_common where this overlay now lives)
- vendor_tracing_descriptors added to enforce-product-packages-exist
- misc AOSP17 logging header switch (android-base/logging.h -> Log.h)

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-04 00:16:17 -07:00
oxmc 3963268947 vendor.cfg: enable setup wizard by default 2026-06-16 20:14:40 -07:00
oxmc bce8f248ba init.rpi4.rc: enable console and logcat_uart on debuggable builds
start console (was incorrectly stop) so the UART shell is interactive.
Add logcat_uart service writing to /dev/ttyS0 so Java crashes are
visible on the serial console.
2026-06-16 09:38:49 +00:00
oxmc 0c0975b507 sepolicy: drop platform_app serialno_prop rule (neverallow) 2026-06-13 23:01:22 -07:00
oxmc c44e92841f sepolicy: allow platform_app to read serialno_prop 2026-06-13 05:04:02 -07:00
oxmc c43805e28c overlays: strip shared defaults into SettingsProviderRpiCommonOverlay 2026-06-13 03:56:26 -07:00
oxmc 12a4c88ac3 SettingsProviderRpiOverlay: set default Monet seed color to #83EBE1 2026-06-13 03:54:24 -07:00
oxmc 25470fec6d overlays: remove shared overlays, now live in pawlet_rpi_common
AndroidRpiOverlay, AndroidTvRpiOverlay, BluetoothRpiOverlay,
CarServiceRpiOverlay, SettingsRpiOverlay, and SystemUIRpiOverlay have
moved to device/pawlet/rpi (pawlet_rpi_common). Module names are
unchanged so no PRODUCT_PACKAGES edits are needed.
2026-06-13 03:43:15 -07:00
oxmc bde8f10d7a overlay: disable Taskbar via config_taskbarEnabled=false in SystemUI overlay
On RPi 4/CM4 the density override (wm density 160) makes smallestScreenWidthDp
exceed 600 dp, which causes NavigationBarControllerImpl to route navigation
through TaskbarDelegate instead of creating a traditional NavigationBar window.
Lawnchair's Taskbar is not active, so no navigation buttons are shown at all.

Setting config_taskbarEnabled=false in the SystemUI overlay (backed by the
sysui-taskbar-navfix.patch in vendor/pawlet) makes supportsTaskbar() return
false, falling back to the traditional 3-button navigation bar.
2026-06-13 02:06:12 -07:00
oxmc 8a6b997313 overlay: disable config_isDesktopModeSupported to restore nav bar
On Android 16, config_isDesktopModeSupported=true on a large screen
triggers desktop windowing mode, which skips navigation bar creation
entirely (expecting the taskbar to handle it). With config_enableTaskbar
also false, the result is no navigation at all.

Disabling desktop mode restores the standard nav bar. Freeform windows
remain available via developer options without this flag.
2026-06-13 00:32:29 -07:00
oxmc 810325fb77 rpi4: inherit default-vendor-config; update vendor.cfg to new keys
Switch all build variants to inherit vendor/pawlet/config/default-vendor-config.mk
for the common vendor.cfg. Per-device vendor.cfg copy is wired up and commented
out, ready to activate when device-specific config is needed.

Update configs/provisioner/vendor.cfg to new ConfigProvisioner key names
(enable_configapk_service, device_provisioned, enable_setupwizard) and
point config_apk_url to https://oxmc.me/aosp_apis/data/default-config.apk.
2026-06-12 18:10:14 -07:00
oxmc 0d6551f178 rpi4: partition layout, boot setup, slow_storage, BootControl, wrimg for Android 16
Partition layout:
- BoardConfig: system 8 GB, vendor 2 GB
- mkimg: matching system/vendor partition sizes
- fstab: remove discard from metadata; make discard opt-in via
  BOARD_STORAGE_SUPPORTS_DISCARD to avoid boot-time I/O stalls
- slow_storage.mk: raise Watchdog timeout so first-boot SELinux label pass
  does not kill system_server on slow SD cards

Boot:
- mkbootimg: use stamp file for rpiboot; uppercase FAT volume label for
  compatibility with some UEFI firmware
- rpi4: set androidboot.boot_devices for by-name symlink creation
- wrimg: stamp androidboot.slot_suffix in cmdline.txt after each A/B write
- rpi4: disable AVB (no vbmeta partition in this layout)

A/B / BootControl:
- sepolicy: add BootControl HAL policy and fix partition file_contexts
- wrimg: switch to PARTLABEL-based device detection; fix system_ext brackets

Packages:
- product: add LawnchairQuickStep to PRODUCT_PACKAGES

SELinux:
- Fix remaining Android 16 boot-log denials and permission labels
2026-06-11 09:14:11 -07:00
oxmc 42a953db99 Fix selinux perms 2026-06-03 22:17:33 -07:00
oxmc ade925a5d1 Fix package name 2026-06-03 01:43:57 -07:00
oxmc 649ec17187 Fix paths 2026-05-30 01:58:48 -07:00
oxmc 7146b57b90 Fix include path and disable recovery/twrp 2026-05-30 01:13:14 -07:00
oxmc ba08776aca Seperate into new repo 2026-05-26 06:37:23 -07:00
oxmc 05d2abb265 Update to upstream 2026-05-26 05:54:26 -07:00
oxmc 36e87623ea Common stuff 2026-03-20 06:17:27 -07:00
oxmc ea675a2b9f Fix partition layout 2026-03-05 00:40:38 -08:00
oxmc 58e19810d1 Update to same as upstream 2026-03-04 22:17:40 -08:00
oxmc d3064f9f9d wifi: start wpa_supplicant as user wifi (same as upstream) 2026-01-17 04:41:05 +00:00
oxmc 0cd3897c6a Upd 2025-12-21 23:21:27 -08:00
oxmc a648de1043 Update BoardConfig.mk 2025-12-02 10:37:52 -08:00
oxmc ee3762f0fe Move recovery before kernel info 2025-12-02 10:28:50 -08:00
oxmc 29a91cf576 Recovery support (Part 1) 2025-12-02 09:26:21 -08:00
oxmc 83afede4c7 Update mkimg.sh 2025-11-29 15:37:07 -08:00
oxmc c0d1170ebc Update mkimg.sh 2025-11-29 15:35:37 -08:00
oxmc 5c9811edfc Update mkimg.sh 2025-11-29 15:30:14 -08:00
oxmc fb79f9bcef vendor_block_device does not exist, change to system 2025-11-29 15:10:30 -08:00
oxmc 7374f09ad6 Sync with upstream 2025-11-28 23:17:16 -08:00
oxmc 7c4a027c2d Reset to upstream, add my changes 2025-11-17 23:21:36 -08:00
Konsta c4e5943489 overlay: enable desktop mode
* Also add required permission for freeform windows.
2025-11-17 13:37:51 +02:00
Konsta d3b908641d overlay: update qs tiles for AOSP16 QPR1 2025-11-17 13:37:32 +02:00
Konsta b3a5f4f3cc keylayout: update for AOSP16 QPR1
* Changes from frameworks/base/data/keyboards/Generic.kl.
2025-11-17 13:37:07 +02:00
Konsta bd50cc7af3 sepolicy: update for AOSP16 QPR1
* Gets blocked by neverallow rules.
2025-11-17 13:36:59 +02:00
Konsta 6bad1bb773 car: update for AOSP16 QPR1
* liblargeparcelablejni was added to
  packages/services/Car/car_product/build/car_system.mk in AOSP16 QPR1 [1].
* TODO: It seems packages/services/Car/car_product/build/car.mk hasn't been
  kept up-to-date in a while. Look into inheriting partition specific
  configuration instead.

[1]: https://android.googlesource.com/platform/packages/services/Car/+/28dd44d3a708e1c2f49a0529a6e87e3f5fe38fb6
2025-11-17 13:36:47 +02:00
Konsta 5e5a9602ab apex: disable compressed packages
* Decompressing APEX can take couple of minutes on the very first boot.
  For some reason this is significantly slower on AOSP16 than it was
  on AOSP15.
* This takes ~170 MB more space on the system partition which we can
  afford.
2025-11-17 13:36:24 +02:00
Konsta 37b8d116fe overlay: rename car package
* Targets com.android.car.updatable so this should be packagename.rpi.
2025-11-14 10:11:33 +02:00
Konsta a396f66529 overlay: rename bluetooth package
* Targets com.android.bluetooth so this should be packagename.rpi.
2025-11-14 10:11:24 +02:00
Konsta 9be5356185 virtualization: move hypervisor property from cmdline
* This would get parsed into ro.boot property by init's property service
  in any case.
2025-11-14 10:10:56 +02:00
Konsta a048ca6668 wifi: move country code property from cmdline
* This would get parsed into ro.boot property by init's property service
  in any case.
2025-11-14 10:10:28 +02:00
Konsta d892451740 sepolicy: graphics: address some denials
* Labeling vendor allocator libraries became necessary for some reason
  after moving minigbm gralloc to APEX.
* Address remaining drm_hwcomposer denials.
2025-11-10 17:26:35 +02:00
Konsta 449252648b sepolicy: graphics: label drm_hwcomposer properties 2025-11-10 17:26:35 +02:00
Konsta 4519cc9d62 graphics: switch to new property to force display mode
* https://github.com/raspberry-vanilla/android_external_drm_hwcomposer/commit/e2e9c8cff77ac20816e4c44c75b1189437e4232c
2025-11-10 17:26:25 +02:00
Konsta 144b79a3b1 remove hidl services
* All HALs in Rasberry Vanilla have been updated to AIDL and packaged
  into APEX. \o/
2025-11-06 13:19:34 +02:00
Konsta 1b6c5be734 audio: build apex hal
* Update audio policy configuration based on cuttlefish [1] & [2].
* Update product package and copy file definitions to build the new APEX
  HAL instead of the legacy HAL.
* Update to system properties used in the new AIDL HAL.
* Use stub to simulate input as Raspberry Pi doesn't have any built-in
  hardware for audio input. It's still required to have primary input
  defined in audio policy config for many applications to function.

[1]: https://android.googlesource.com/device/google/cuttlefish/+/refs/tags/android-16.0.0_r1/shared/config/audio/policy/audio_policy_configuration.xml
[2]: https://android.googlesource.com/device/google/cuttlefish/+/refs/tags/android-16.0.0_r1/shared/config/audio/policy/primary_audio_policy_configuration.xml
2025-11-06 13:18:58 +02:00
Konsta fcf256df2a audio: hook refine position to alsa stream
* Fixes audio syncronization during video playback.
* Account start_threshold as device specific latency for ALSA HDMI and
  tinyalsa [1] (3.5mm jack, DAC & USB) output.
* Remove unneeded pcm call to query buffer size.

[1]: https://android.googlesource.com/platform/external/tinyalsa_new/+/refs/tags/android-16.0.0_r1/include/tinyalsa/pcm.h#214
2025-11-06 13:18:30 +02:00
Konsta c72ec93b0b audio: probe pcm card from property
* Valid values for the audio device property are 'jack', 'hdmi0', 'hdmi1',
  and 'dac'.
* If 'jack' is selected, first PCM card with name 'Headphones' is used.
  If 'dac' is selected, first PCM card that doesn't match the name for 3.5mm
  or HDMI devices is used. HDMI audio uses virtual ALSA devices instead of
  using tinyalsa to open a PCM card directly.
* Allow forcing specific PCM card for debugging/development purposes.
* PCM card numbers are different between Pi 4 and Pi 5 and order can change
  depending on the DAC driver that's enabled.

Pi 4:

console:/ # cat /proc/asound/cards
 0 [Headphones     ]: bcm2835_headpho - bcm2835 Headphones
                      bcm2835 Headphones
 1 [vc4hdmi0       ]: vc4-hdmi - vc4-hdmi-0
                      vc4-hdmi-0
 2 [vc4hdmi1       ]: vc4-hdmi - vc4-hdmi-1
                      vc4-hdmi-1
Pi 5 with DAC:

console:/ # cat /proc/asound/cards
 0 [vc4hdmi0       ]: vc4-hdmi - vc4-hdmi-0
                      vc4-hdmi-0
 1 [vc4hdmi1       ]: vc4-hdmi - vc4-hdmi-1
                      vc4-hdmi-1
 2 [sndrpihifiberry]: HifiberryDacp - snd_rpi_hifiberry_dacplus
                      snd_rpi_hifiberry_dacplus
2025-11-06 13:18:21 +02:00