01Why you'd want this
Honest answer first: most of the time, you wouldn't — any laptop does this faster and with less ceremony. But there's one scenario where the phone earns its place, and it's a very this-site scenario: the archive-it-now emergency. You're away from your machines, you learn a manifest you care about still gets a request code — a game's delisting, an update is landing tomorrow, the status page just turned a shade redder — and the window won't wait for the weekend. A phone with Termux and enough free storage is a real depot-pulling machine in that moment. Beyond that: grabbing workshop items or small config depots on the go, and the simple satisfaction of it working at all. If your portable machine is a handheld rather than a phone, the Steam Deck guide covers running the tool there, where you get a real Linux userland and none of the PRoot tax.
02How it works — and why PRoot is involved
DepotDownloader's Linux ARM64 build expects a regular Linux userland — glibc, the standard dynamic linker. Android has neither in the place programs look: its libc is Bionic, and a glibc-linked binary greets you with "cannot execute: required file not found". The community fix is TermuxDepotDownloader: a script that installs PRoot (a no-root containerization layer) with a minimal Alpine Linux environment inside Termux, and puts DepotDownloader inside that. You get the genuine, unmodified tool — same flags, same behaviour, same error catalogue — running in a tiny Linux bubble your phone doesn't need to be rooted for.
03The install
Step 1 — get the right Termux. Not the Play Store one: that build is frozen years out of date and the bootstrap will fail on it. Install Termux from F-Droid or the project's GitHub releases.
Step 2 — storage access. Inside Termux, run termux-setup-storage and grant the permission, so downloads can land somewhere you can actually reach from the rest of the phone.
Step 3 — the bootstrap one-liner:
$ bash <(curl -sSL "https://raw.githubusercontent.com/TheKingFireS/TermuxDepotDownloader/alpine/installproot.sh")It fetches PRoot, the Alpine image and DepotDownloader, and wires up a depotdownloader wrapper command. If the package steps die with mirror errors — a Termux classic — run termux-change-repo, pick another mirror, and rerun the script. That mirror error is exactly what bit me on my first run; switching to a different mirror cleared it on the second try.
04Using it
$ depotdownloader -app 220 -depot 221 -username you -dir HL2 -validateFrom here it's the same tool this whole site documents — manifest downgrades, anonymous servers, all of it. Phone-specific advice: passwords with special characters need quoting (the shell is still a shell), or sidestep typing entirely — -remember-password after the first login means one painful thumb-typed password ever (what that stores). One genuinely awkward note: -qr is the wrong tool on the phone itself — the QR renders on the same screen the Steam app would need to scan. On a phone, the password prompt is the practical route.
05The quirk list
- Play Store Termux. Worth repeating because it's the #1 failure: if the bootstrap dies immediately, check where Termux came from. F-Droid or GitHub, nothing else.
- Sleep kills downloads. Android dozes background apps mid-pull. Run
termux-wake-lockbefore a big download (andtermux-wake-unlockafter), or keep the screen on and the phone plugged in — a multi-gigabyte depot is a battery event. - Storage reality. Game depots are desktop-sized; your phone isn't. Check free space first, point
-dirat shared storage you can offload from, and treat the phone as a courier — pull, transfer to real storage, delete. - Flag parsing oddities. The wrapper has shown an occasional "Error: -app not specified!" on commands that look correct — reordering flags (app first) has been the community workaround. It's a wrapper quirk, not a DepotDownloader bug.
- Maintenance honesty. TermuxDepotDownloader is a small community script, updated occasionally rather than continuously — the bundled DepotDownloader may trail the latest release. The DIY fallback if the script breaks:
proot-distrowith a regular distro and the official linux-arm64 build inside it — same architecture, more typing. - Slow is normal. PRoot taxes syscalls and phone flash isn't NVMe. It'll finish; it won't race your desktop.
Stuck on something that doesn't look Termux-specific? Then it probably isn't — the 401 diagnostic and login error decoder apply on a phone exactly as they do anywhere else. If it were my emergency archive run, I'd keep the phone plugged in with a wake-lock held and treat it strictly as a courier — it got the job done for me, but I wouldn't make it my main rig.