Repository navigation
Troubleshooting
The computer does not see the phone as an ADB device. In order:
- Cable: a charge-only cable shows nothing. Try another cable and port.
- USB debugging on in Developer options (MIUI sometimes turns it off after an update or a reboot).
- USB mode: in the phone's USB notification, choose File transfer.
- Phone unlocked.
- Linux: udev rules and group (see Installation).
- Check the system sees it at all: macOS
system_profiler SPUSBDataType, Linuxlsusb. If the phone is not listed there, it is the cable or the port.
apex device listen --timeout 60 waits while you try.
The phone has not authorized this computer. Unlock it and accept Allow USB debugging? (tick Always allow). If the prompt does not appear: revoke USB debugging authorizations in Developer options, unplug, plug back.
A previous session was interrupted, or another program holds the USB interface.
- Stop any
adbserver:adb kill-server. - Run the command again; if it repeats, unplug and replug the phone.
Several phones are plugged in. apex device listen prints their serials; add
--serial <SERIAL>.
Another apex comes first on the PATH: which -a apex, apex --version.
See Installation.
Xiaomi / Redmi / POCO (MIUI, HyperOS) block simulated touches from ADB.
Developer options → USB debugging (Security settings): turn it on (it asks
for a Mi account, sometimes a SIM card). Record the change with
--phone-change. Other makers usually need nothing.
The app loaded older messages too slowly and two screens looked identical.
Raise --settle-ms (e.g. 2000) and run again.
The 30 digits do not match this backup. Each time backups are turned on again, Signal makes a new passphrase: use the one shown when this backup was made.
Xiaomi / Redmi / POCO refuse ADB installs unless Developer options →
Install via USB is on (Mi account); then accept the prompt on the phone.
Without it, APEX puts the lite agent in Download and waits 3 minutes for you
to install it from the phone; otherwise it goes on without the agent. If
Play Protect blocks the installation, tap OK: APEX goes on without the
agent.
Xiaomi ignores pm grant unless Developer options → USB debugging
(Security settings) is on. The corresponding agent sections come back
empty; the PV lists the refused permissions.
The case was acquired or imported without --mandate. Acquire or import it
again with the mandate reference.
The backup was collected but cannot be decrypted. .crypt14 needs files/key
from a lab extraction; .crypt15 needs files/encrypted_backup.key from an
extraction or the 64-digit key (--wa-key, no spaces). See
Communications and app data.
Newer Signal versions protect the database secret with the Android Keystore.
The lab must recover it; pass it with --signal-key <hex>.
Acquire with device acquire --storage, or import with --storage.
Files were written inside the case after acquisition (timeline.csv,
report.html). Not tampering, but keep outputs outside the case with -o.
The path is not a case directory (no device/packages.txt). Point to the
directory given to -o at acquisition or import.
seal needs the computer online and a reachable TSA URL. The phone does not
need a network.
The case lacks the phone's time zone (an extraction without
persist.sys.timezone): times are UTC, and APEX says so when importing.
APEX · mlab-sh/apex · This wiki is generated from the repository's wiki/ folder: edit it there, not here.
Getting started
On the phone
From an extraction
Analysis
Reporting and procedure
Static analysis
Concepts