LegendCTL — FAQ
Short answers to the common questions, with links to the deeper docs. If your question isn’t here, check Discussions or SUPPORT.md.
Trust & privacy
Is it safe? Will it brick my controller?
LegendCTL only writes the controller’s settings over standard USB-HID — the same kinds of values the official app changes. It is not a firmware flasher, so it can’t overwrite firmware. Before risky operations it captures a Restore Point where one can be taken, wrapper events are recorded to a local append-only ledger, and there are two recovery paths back (see Recovery in the README). That said, it writes to hardware and is provided “as is” — see Disclaimer & risk. Nothing can promise zero risk when touching hardware, but the safety net is real: every write reports its outcome, and the verifying paths read the value back and compare it.
Does it phone home? Any telemetry or tracking?
No. The LegendCTL process makes zero network calls — no telemetry, no analytics, no auto-update, no “usage data.” The only outbound action anywhere in the app is the About screen’s GitHub links, which hand a URL to your default browser; the app itself opens no socket. You don’t have to take that on faith: open the in-app Trust Self-Check (Diagnostics), which scans the shipped code for networking and driver/virtual-device imports and shows the evidence it found (it inspects the app’s own footprint, not system-wide services), then copies the result out — or verify it yourself with Resource Monitor in a couple of minutes.
Is it open source? Can I read/build it myself?
Yes — MIT licensed, the full source is on GitHub, and the README has a Build from source section. The “deliberately absent” constraints (no drivers, no network, no macros, …) are enforced by the test suite, not just promised.
Was this built with AI?
Yes — LegendCTL was built with substantial AI assistance, under human direction and review throughout: all changes are human-reviewed, and hardware-facing changes are tested on a real controller where applicable, before shipping. We say so plainly in the Acknowledgments — honesty is the whole point of the project. The code is fully open and test-enforced precisely so you don’t have to trust the process; you can read it.
Can I trust an unsigned app from a new, pseudonymous repo?
Fair question — you shouldn’t trust any of them blindly. Here’s what you can do
instead of trusting: read the source (it’s all here), build it yourself, run the
in-app Trust Self-Check (and export the evidence card), run the
no-network check, and verify the published SHA-256
of your download against SHA256SUMS.txt in each release. Code signing (via the
free SignPath Foundation program for open-source projects)
is planned once the project is eligible — see the
code-signing policy.
Installing & running
Why does Windows show “Windows protected your PC” (SmartScreen)?
Because the build is currently unsigned. That prompt is what Windows shows for any new unsigned app until it builds download reputation — it is not, by itself, a sign of malware. Verify the SHA-256 (above), then choose More info → Run anyway. Full detail under Distribution safety.
My antivirus flagged it — is it a virus?
Often a false positive for this packaging pattern — but verify rather than
assume. LegendCTL is packaged with PyInstaller, whose self-extracting bundle
pattern is a well-known source of heuristic AV false positives. Cross-check the
file on VirusTotal against many engines and
verify the SHA-256 against the release’s SHA256SUMS.txt; if a detection
doesn’t resolve on cross-check, don’t run the file. If you want zero packaged
binaries, build from source.
Do I need the official ZD app installed?
No. LegendCTL runs standalone — it talks directly to the controller over USB-HID, so the official ZD app is not required. (Firmware updates use ZD’s separate official firmware tool — not the config app, and not LegendCTL.) LegendCTL works independently and doesn’t depend on either.
Installer or portable ZIP — which should I use?
The portable ZIP is the simplest: no admin, no UAC, runs from any folder, and you uninstall by deleting the folder. Use the installer if you want a Start-Menu entry and an entry in Windows’ Apps list. Both ship the identical wrapper.
The official ZD app can’t find my controller — can LegendCTL help?
Maybe, depending on your goal. If Windows sees the controller in its normal wired mode, LegendCTL may still read and apply supported settings (deadzones, sensitivity, polling, buttons, lighting, vibration, profiles) and show live stick output — even when the official app is having trouble connecting. It can’t help with firmware flashing/recovery, official calibration, warranty/support, or app/account/pairing issues — those stay with ZD’s official tools. Quick triage: try a known-good cable and a direct USB port, confirm Windows lists it under Game Controllers, close other controller tools, and read state in LegendCTL before applying changes. If LegendCTL also can’t see it, please file a compatibility report.
Compatibility
Will it work on my controller?
If you have a ZD Ultimate Legend, the core settings very likely work. It was developed and bench-tested on a single unit (known-working firmware v1.18, incl. 8K polling, and v1.24, incl. 8-point sensitivity curves and the latest “0609” optimized-latency build). The controller ships in six variants with different stick modules/firmware; other variants and firmware are best-effort — the HID protocol may differ. The app is built to report unsupported paths and write-only fields explicitly rather than pretend a write succeeded. See the maintained compatibility matrix for the current evidence ledger across variants/firmware; if something’s off on your unit, please file a compatibility report.
Does the live stick tester work on non-ZD controllers?
The Live Verify stick/circularity view reads from XInput, so it is largely controller-agnostic for viewing. The full settings (deadzone, sensitivity, polling, etc.) are ZD-Ultimate-Legend-specific because they ride that controller’s HID protocol.
Why can’t I select 8K polling or 8-point stick curves?
Those paths are firmware-gated by the controller. 8000 Hz polling needs firmware tested at v1.18+, and 8-point sensitivity curves need v1.24+. On older firmware, LegendCTL reports the path as unsupported rather than faking a successful write. To enable them, update firmware with ZD’s official firmware tool, then reconnect and re-read state in LegendCTL — LegendCTL itself is not a firmware updater.
What it does
What settings can it actually change?
Polling rate, the button-binding matrix, stick deadzones / sensitivity curves / axis inversion / step-size, trigger range & modes, lighting, vibration, and back-paddle bindings, plus wrapper profiles and Restore Points. The full list is in the README Features section.
Does it have macros, turbo, or rapid-fire?
No — and that’s deliberate. Macros / turbo / automation / input injection / a background service are intentionally absent (and enforced by tests). LegendCTL configures your controller; it doesn’t play it for you.
That boundary is useful, but it is not a tournament/legal guarantee — LegendCTL has no macros, turbo, or input-injection by design, but tournament rules, game anti-cheat, and competition-firmware requirements are outside its control. If you play somewhere regulated, check the event/game/controller rules.
Does it update or change my controller’s firmware?
No. It reads and writes settings via HID. It is not a firmware updater and cannot flash firmware.
About the project
Is this affiliated with ZD Gaming?
No. It’s an independent, unofficial third-party project — not developed by, affiliated with, or endorsed by ZD Gaming. ZD asked the project to carry a short disclaimer, which it does verbatim. Trademarks belong to their owners.
How do I report a bug or ask a question?
See SUPPORT.md. Reproducible bugs → a Bug report Issue; questions and “is this expected?” → Discussions; hardware that wasn’t on the bench → a Compatibility report. There’s no private DM/email support channel — keeping it public means the next person finds the answer.