Portable ADB installer for Pixel Guard Device Owner deployment.
Pixel Guard is a no-VPN-slot Android Device Owner guard for Pixel devices. It blocks risky carrier/device-lock/config packages on metered Wi‑Fi through Android DevicePolicyManager and manages Wi‑Fi as metered suggestions.
Pixel Guard Deploy — это переносимый установщик для развёртывания Pixel Guard на телефоне через ADB. Основной сценарий: дать обычному пользователю архив/папку, он подключает телефон по USB и запускает установщик. На Windows не нужен установленный ADB и не нужен PowerShell: используется PixelGuardDeploy.cmd / PixelGuardDeploy.exe с встроенным ADB.
Pixel Guard — это Android-приложение, которое становится Device Owner и применяет политики Android Enterprise. Цель — не занять VPN-слот и не создавать tun0, а заблокировать интернет для опасных системных компонентов carrier/device-lock/config на уровне штатных политик Android.
Ключевая идея: обычный интернет для пользователя остаётся, но пакеты из списка риска получают METERED_ADMIN_DISABLED на metered-сетях. Wi‑Fi сети добавляются не через обычные Settings, а через Pixel Guard как metered Wi‑Fi suggestions.
После установки скрипт назначает компонент com.pixel.guard/.AdminReceiver владельцем устройства (Device Owner). Только после этого приложение получает право применять нужные политики.
Что делает Pixel Guard на телефоне:
-
Блокирует сетевой доступ опасным пакетам на metered-сетях. Приложение вызывает
DevicePolicyManager.setMeteredDataDisabledPackages()для carrier/device-lock/config пакетов, напримерcom.google.android.apps.work.oobconfig,com.android.devicelockcontroller, carrier setup/eUICC/config updater компонентов и т.п. На рабочей metered Wi‑Fi сети Android показывает для их UID состояние вродеMETERED_ADMIN_DISABLED. -
Не использует VPN. В приложении нет
VpnService, не включается Always-on VPN, не создаётсяtun0. VPN-слот остаётся свободным для обычного VPN пользователя. -
Запрещает обычное добавление Wi‑Fi сетей через Settings. Включается
DISALLOW_ADD_WIFI_CONFIG, чтобы пользователь или системный UI не создали обычную saved Wi‑Fi network вне контроля Pixel Guard. При этомDISALLOW_CONFIG_WIFIспециально не держится активным для user 0, чтобы Wi‑Fi экран не был полностью заблокирован. -
Добавляет разрешённые Wi‑Fi сети как metered suggestions. Пользователь открывает Pixel Guard, нажимает поиск Wi‑Fi, выбирает SSID, вводит пароль, и приложение создаёт
WifiNetworkSuggestionсsetIsMetered(true). Это принципиально: DPM-блокировка опасных пакетов работает именно на metered network. -
Ведёт allowlist SSID через Device Owner policy. Для разрешённых сетей применяется
WifiSsidPolicy, чтобы Android не подключался к произвольным SSID вне списка. -
Хранит registry управляемых Wi‑Fi сетей. SSID, режим WPA2/WPA3 и passphrase сохраняются в app-private device-protected storage. Это нужно, чтобы после перезагрузки или переустановки приложения восстановить managed suggestions, если Android Wi‑Fi suggestion store потерял или отключил их.
-
Восстанавливает Wi‑Fi suggestions после reboot/package replace.
BootReceiverнаBOOT_COMPLETEDиMY_PACKAGE_REPLACEDзаново применяет guard policies и вызывает repair для managed Wi‑Fi networks. -
Переключает управляемые сети внутри Pixel Guard. Кнопка
Make active: <SSID>пересобирает suggestions так, чтобы выбранная сеть была единственным autojoin-кандидатом, а остальные managed сети временно не участвовали в autojoin. Это надёжнее, чем пытаться переключаться через обычные Android Settings. -
Показывает диагностический статус. В UI видны
admin,deviceOwner,allowedSsids,managedSsids, текущие suggestions и результаты операций. Установщик дополнительно проверяет Device Owner, VPN slot, metered state и наличиеMETERED_ADMIN_DISABLED.
Что приложение не делает:
- не разблокирует уже заблокированную SIM или устройство;
- не прошивает телефон;
- не требует root;
- не меняет bootloader;
- не занимает VPN;
- не создаёт обычные saved Wi‑Fi networks.
Установщик — это host-side wrapper над ADB:
- Находит встроенный или системный
adb. - Проверяет, что подключено ровно одно авторизованное устройство.
- Устанавливает
app/pixel-guard.apk. - Выполняет
dpm set-active-admin --user 0 com.pixel.guard/.AdminReceiver. - Выполняет
dpm set-device-owner --user 0 com.pixel.guard/.AdminReceiver. - Открывает Pixel Guard на телефоне.
- Запускает verify checks.
На Windows основной путь — PixelGuardDeploy.cmd / PixelGuardDeploy.exe. Внутри есть меню: активировать защиту, проверить состояние, открыть приложение, попытаться вернуть stock-like состояние, показать ADB devices.
Пункт Restore stock-like state пытается выполнить dpm remove-active-admin и удалить приложение. Это работает только если Android разрешает снятие Device Owner для данной testOnly-сборки. Если Android отказывает, это не обходится скриптом; raw dpm output является источником истины.
Pixel Guard is preventive. It blocks the carrier/device-lock/config path from getting usable network access after Pixel Guard has been deployed.
It does not unlock a SIM or device that has already been locked.
If the SIM/device is already locked, the practical recovery/deployment flow is:
- Remove Google accounts from the phone first, if Android UI still allows it. This avoids Factory Reset Protection surprises.
- Factory reset the phone.
- During initial setup, keep the phone offline: no SIM data, no Wi‑Fi, no Internet.
- Enable Developer options and USB debugging.
- Run this deploy tool from the computer.
- Only after Pixel Guard is Device Owner, enroll Wi‑Fi networks inside Pixel Guard.
If Android refuses dpm set-device-owner, the raw Android error is the source of truth. ADB Device Owner provisioning is state-dependent; many already-set-up devices require factory reset or QR/MDM provisioning.
- Uses bundled
adbwhen available. - Installs
app/pixel-guard.apk. - Sets
com.pixel.guard/.AdminReceiveras Device Owner. - Opens Pixel Guard.
- Runs verification checks.
Included now:
tools/adb/darwin-universal/adb— macOS universal binary, works on Apple Silicon and Intel Macs.tools/adb/windows-x64/platform-tools/adb.exe— Windows x64 ADB from official Android SDK Platform-Tools, with required DLLs.
Supported by scripts if you add binaries later:
tools/adb/linux-x64/adb
Bundled Windows Platform-Tools files include Google NOTICE.txt and source.properties under tools/adb/windows-x64/platform-tools/.
You can always override ADB explicitly:
PIXEL_GUARD_ADB=/absolute/path/to/adb ./install.shPowerShell:
$env:PIXEL_GUARD_ADB="C:\path\to\adb.exe"
.\install.ps1- Exactly one Android device connected over USB.
- Developer options enabled.
- USB debugging enabled and authorized.
- Device state must allow ADB Device Owner provisioning.
- No other Device Owner already configured.
Android permits only one Device Owner. If dpm set-device-owner fails, the raw Android error is authoritative; many already-set-up devices require factory reset or QR/MDM provisioning for Device Owner enrollment.
Do not use PowerShell as the primary path. Windows often blocks .ps1 by default.
Use the portable launcher instead:
- Download/extract the full repository/bundle.
- Double-click
PixelGuardDeploy.cmd, or runPixelGuardDeploy.exedirectly. - Choose:
[1] Activate protections + install app[2] Verify current state[3] Open Pixel Guard on phone[4] Restore stock-like state
The Windows launcher uses bundled ADB from:
tools\adb\windows-x64\platform-tools\adb.exe
No system-wide ADB install and no PowerShell execution-policy change is required.
chmod +x install.sh verify.sh scripts/adb.sh tools/adb/darwin-universal/adb
./install.shFrom PowerShell:
.\install.ps1Prefer PixelGuardDeploy.exe / PixelGuardDeploy.cmd. PowerShell may be blocked by default Windows execution policy.
On the phone:
- Open Pixel Guard.
- Enroll allowed Wi‑Fi networks inside Pixel Guard.
- Do not add Wi‑Fi networks from Android Settings.
- Use Pixel Guard
Make activebuttons to switch between managed networks.
./verify.shExpected properties:
com.pixel.guardis Device Owner.always_on_vpn_app=null.always_on_vpn_lockdown=0.- Connected Wi‑Fi is metered from netpolicy perspective.
- Risky package UIDs show
METERED_ADMIN_DISABLEDwhen present. - Saved Wi‑Fi networks remain empty; Pixel Guard uses metered suggestions.
app/pixel-guard.apk Prebuilt APK installed by scripts
pixel-guard-poc/ Source snapshot used to build APK
scripts/adb.sh Shared POSIX ADB selection/preflight
install.sh macOS/Linux installer
verify.sh macOS/Linux verification
install.ps1 Windows PowerShell installer
PixelGuardDeploy.exe Windows portable menu app
PixelGuardDeploy.cmd Double-click Windows launcher
windows-deployer/ Go source for Windows portable menu app
tools/adb/darwin-universal/adb Bundled macOS ADB
tools/adb/windows-x64/platform-tools Bundled Windows ADB + DLLs + notices
- The GitHub token used to publish this repository is not stored here.
- Pixel Guard does not occupy Android's VPN slot.
- Pixel Guard does not create saved Wi‑Fi networks; it uses metered Wi‑Fi suggestions.
- Removing a Device Owner is intentionally not a normal app uninstall path; plan deployment accordingly.