Privacy Policy — LudusCtrl

Last updated: 16 October 2026

LudusCtrl does not collect, transmit, or share any personal data. There are no accounts, no analytics, no advertising, no crash reporting, no tracking, and no third-party SDKs of any kind. The only way anything reaches the developer is if you choose to send a problem report by email, described below.

LudusCtrl is developed by Josip Parlov. This policy covers the LudusCtrl Android app and the LudusCtrl receiver for Windows, and explains what they do and do not do with your data. It is short because they collect nothing.

What the Android app does

LudusCtrl forwards input from a gamepad paired to your device over Bluetooth to a computer on your own local network. To do this it:

All of this traffic stays on your local network. Nothing is sent to the developer, and nothing is sent to any internet server.

Data stored on your device

The app saves the last receiver address and port you used, and whether you enabled dim-screen mode, so you do not have to set them again. For each computer you pair with, it also keeps a random ID for your phone, the computer’s random ID, address and port, the key created during pairing, the date you paired, and a link counter. You can remove a computer with Paired PCs > Forget. All of this is stored only in the app’s private storage on your device. It is not included in Android’s cloud or device-to-device backups (the app turns backup off), it is removed when you uninstall the app, and it is never transmitted anywhere.

Reporting a problem

If you tap Report a problem, the app opens your own email app with a pre-filled message to josipparlov@protonmail.com. The message contains:

You can read and change the message before sending it. Nothing is sent unless you send it yourself from your email app. If your device has no email app, the report is copied to the clipboard instead, and again goes nowhere unless you paste and send it.

A report you send is used only to look into the problem and reply to you, and is not shared with anyone. You can ask for it to be deleted at the same address.

The Windows receiver

The receiver runs on your computer and accepts controller input only from your local network. It sends nothing to the developer or to any internet server.

It keeps its files in %LOCALAPPDATA%\LudusCtrl on your PC:

The browser client

The receiver can optionally serve a web page on your local network, so a phone without the app (an iPhone, for example) can send controller input from its browser. It is off unless you turn it on.

Permissions (Android)

Permission Why it is needed
INTERNET Opens a UDP socket to send input to your PC on the local network. Despite the name, Android requires this for any network socket, including local-only ones.
ACCESS_NETWORK_STATE Watches the Wi-Fi network so the connection can be tied to it and stop cleanly when it drops.
CHANGE_WIFI_MULTICAST_STATE Holds a multicast lock so discovery broadcasts are not dropped while the Wi-Fi radio is in power-save mode.
WAKE_LOCK Keeps Wi-Fi in its low-latency mode while a connection is running.

The app requests no location, contacts, storage, camera, or microphone permissions.

Children

The app is not directed at children and collects no data from anyone, regardless of age.

Third parties

None. Neither the app nor the receiver contains third-party analytics, advertising, or tracking libraries. A problem report you choose to send passes through your own email provider and the developer’s (Proton), as any email does.

Changes to this policy

If this policy changes, the updated version will be published at this same address, and in the receiver’s source repository at https://github.com/parl0v/ludusctrl/blob/main/PRIVACY.md, with a revised date above. Any future version that introduces data collection will say so explicitly.

Contact

Questions about this policy: josipparlov@protonmail.com