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.
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.
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.
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.
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.
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.
* 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.
* Labeling vendor allocator libraries became necessary for some reason
after moving minigbm gralloc to APEX.
* Address remaining drm_hwcomposer denials.
* 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