oxmc 590f38f028 ProvisioningService: disable PawletSetupWizard when setup wizard is off
Add me.pawlet.setupwizard to the list of packages disabled when
enable_setupwizard=false. Remove org.lineageos.setupwizard (not shipped).
Update README to reflect real default config APK URL.
2026-06-16 07:47:36 -07:00
2025-08-21 01:11:21 -07:00
2025-08-21 01:11:21 -07:00

Config Provisioner

A privileged system app that provisions PawletOS devices on first boot.

How it works

On BOOT_COMPLETED, the provisioner reads /vendor/etc/config_provisioner/vendor.cfg (or falls back to built-in defaults) and does three things:

  1. Config APK — if enable_configapk_service=true, reads settings and APNs from the pre-installed config APK and applies them.
  2. Device provisioned — sets DEVICE_PROVISIONED and USER_SETUP_COMPLETE according to device_provisioned.
  3. Setup wizard — enables or disables setup wizard packages according to enable_setupwizard.

On USER_PRESENT (after the screen is first unlocked), if enable_configapk_service=true and config_apk_url is set, it downloads an updated config APK and re-applies settings.

Control keys

These three keys drive the core behaviour. All have built-in defaults so the device auto-provisions correctly even with no vendor.cfg present.

Key Default Description
enable_configapk_service true Apply settings/APNs from the config APK and check for OTA config updates.
device_provisioned true Mark the device as provisioned (DEVICE_PROVISIONED=1, USER_SETUP_COMPLETE=1). Set false to leave setup incomplete.
enable_setupwizard false false = disable setup wizard packages. true = leave them enabled.

Supporting keys

Key Default Description
config_apk_package app.pawlet.config Package name of the pre-installed config APK.
config_apk_url (empty) URL to download an updated config APK on unlock. Leave empty to disable OTA config updates.
vendor_id default_vendor Identifier logged during provisioning.
network_timeout 30000 Download timeout in milliseconds.
ota_check_interval_ms 86400000 Minimum time between OTA config update checks (default: 24 h).

Keys can also be set via system properties (persist.configprovisioner.<key>), which are used as a fallback when the config file is absent or the key is missing.

Example vendor.cfg

enable_configapk_service=true
device_provisioned=true
enable_setupwizard=false
config_apk_package=app.pawlet.config
config_apk_url=https://oxmc.me/aosp_apis/data/default-config.apk

Config APK format

The config APK provides:

  • res/xml/settings.xml<secure>, <system>, or <global> tags with name/value attributes. Wrap in <if> to apply conditionally by manufacturer, brand, model, sdk, sdk_min, sdk_max, form_factor (phone/tablet/tv/flip), or feature.
  • res/xml/apns.xml or assets/apns/*.xml — APN entries inserted into the telephony provider (duplicates are skipped).

Permissions

  • CHANGE_COMPONENT_ENABLED_STATE — disable setup wizard packages
  • WRITE_SECURE_SETTINGS — write USER_SETUP_COMPLETE / DEVICE_PROVISIONED
  • INSTALL_PACKAGES — install downloaded config APK
  • WRITE_APN_SETTINGS — insert APN entries

License

GNU General Public License v3.0 — see LICENSE.

Description
No description provided
Readme GPL-3.0 104 KiB
Languages
Java 100%