Device management
The ADB page in the operator dashboard reconciles your configured fleet (stored in db/state/wos.db) with whatever adb devices is currently reporting on the host. It picks the fastest viable capture/input backend per device automatically and gives you one-click controls to fix the rare cases when it can’t.
What you get
Section titled “What you get”- Configured vs live — two side-by-side tables: what you’ve declared in the SQLite devices table (configured) and what
adb devicesis reporting right now (live). Mismatches are obvious at a glance. - Auto-picked capture backend per device. Physical phones default to scrcpy. Emulators default to quartz (a software path that doesn’t need
/dev/uinput). Override per device by settingcapture_backend: scrcpy | quartz | adb | autoin the devices table. - Auto-picked input backend per device. adb input is the universal-compatibility default (~50–80 ms/tap). mintouch is the fast path (~5–20 ms/tap) but needs
/dev/uinputaccess (rooted devices or accessible emulators). Opt in withinput_backend: mintouchin the devices table. - Live binary status. For each connected device, the page shows whether scrcpy-server and mintouch are installed, with the actual architecture (e.g.
arm64-v8a · android-33). - One-click recovery. Per-device action buttons:
- Reinstall scrcpy — push
scrcpy-server.jaronto the device. - Reinstall mintouch — same for the input binary.
- Reset screen — clear any
wm size/wm densityoverrides the bot might have applied during a failed run (a common cause of “everything’s drifted by 8 pixels” mysteries).
- Reinstall scrcpy — push
- Refresh scan — re-runs
adb devicesand the binary probes without restarting anything.
Backend trade-offs
Section titled “Backend trade-offs”| Backend | Latency | Requires |
|---|---|---|
adb input | ~50–80 ms/tap | nothing — works everywhere |
mintouch input | ~5–20 ms/tap | /dev/uinput (rooted device or --allow-root emulator) |
quartz capture | ~30–60 ms/frame | nothing — software path |
scrcpy capture | live H.264 stream | scrcpy-server jar installed on device (page handles install) |
The defaults are chosen for safety (works-everywhere). Opt into the fast path when your emulator/device supports it and you need the extra throughput — e.g. when running many instances on one host.