Relaypad
Relaypad has no account system and no server of ours between you and your game console. Your gameplay, your console and your sign-in never pass through us.
Relaypad is an independent, unofficial Android app that turns your phone into a controller for a game console and streams the console's picture to your device. This policy explains what happens to information when you use it.
It covers the Relaypad app as published on Google Play. It does not cover your console or the services run by its manufacturer, Google Play itself, your router, or any modified build of Relaypad distributed by someone else.
Relaypad is free software licensed under the AGPL-3.0, so the statements in this policy can be checked against its source code: codeberg.org/geektech54/gamec.
Questions, requests or complaints: simplelifefirst@gmail.com.
This is every destination the app sends data to, and what triggers each one. Nothing else leaves your device.
| Destination | What it receives, and when |
|---|---|
| Your console | Discovery and wake-up broadcasts on your local network, pairing requests, controller input, text you type when the console asks for it, microphone audio while the mic is on, and the video and audio stream coming back. This is a direct connection between your device and your console, either on your local network or through the manufacturer's remote play service when you play away from home. We are not part of it and never see it. |
| The console manufacturer's services | Only if you sign in. You sign in on the manufacturer's own web page, and the app then uses the resulting token with the manufacturer's services. §5 lists exactly what for. |
| A public account-ID lookup service | Only if you choose "look up by Online ID" during setup: the Online ID you type is sent to psn.flipscreen.games, an independent third-party service, which returns the matching account ID. See §6. |
| Public STUN servers | When you run the connection doctor, connect from outside your home network, or register a console without a pairing code: short packets to public STUN servers so the app can learn how your network translates addresses. These servers see the public IP address your connection comes from, the same thing any website sees. Nothing that identifies you is attached. See §7. |
| GitHub | Rarely: if the app's built-in STUN server list cannot be used for a remote connection, it downloads a public list of STUN servers from raw.githubusercontent.com. The request carries nothing that identifies you. |
| Your router | UPnP requests on your local network when the connection doctor runs, when a remote or code-free connection is set up (which may add a temporary port mapping), and when you use automatic port mapping. This stays inside your home network. |
| Google Play | When you buy the app, buy or restore Pro, or rate the app. Google processes the payment; we never see your payment details. See §8 and §9. |
| Google Analytics for Firebase | Anonymous usage events, while the statistics switch in Settings is on. See §4. |
| Firebase Remote Config | A request for our current configuration values, made when the app starts, including when statistics are switched off. See §9. |
| Apps you choose | Only when you tap to send feedback, share a screenshot or share a connection-doctor report: your email app or the app you pick receives it, and what happens next is up to you and that app. See §10. |
Relaypad keeps what it needs in Android's private storage for the app, which other apps cannot read. Uninstalling the app or using Android's Clear storage deletes all of it. The one exception is stream screenshots, described below the table.
| What | Details |
|---|---|
| Pairing keys | The registration keys your console issues when you pair. Encrypted with AES-256-GCM using a key held in the Android Keystore, which cannot be extracted from the device. |
| Sign-in tokens and device ID | If you signed in: the access and refresh tokens issued by the manufacturer, encrypted the same way. Also a random device identifier the app generates for remote play (§5). Removing the account in the app deletes the tokens. |
| Account details | The account ID your console needs before it will pair, your Online ID if known, and which sign-in method you used. Never sent to us, never attached to usage statistics. |
| Your consoles | For each console: the name you gave it, its local and MAC address, generation and firmware version, the console's own ID from the manufacturer, the console passcode if you entered one, whether Remote Play was enabled, the game or app it last reported running, and when you paired and last connected. This lets the app find, wake and reconnect to it. |
| Your settings and layouts | Stream, controller, network and display preferences, controller layouts you create, button mappings for physical gamepads (with the gamepad's name), vibration strength, theme, the statistics switch, and small flags such as which tips you have already seen. |
| Purchase state | Whether Pro is unlocked, with the product ID, order ID and purchase time reported by Google Play, so the app works offline. |
| Caches | Cookies and cache from the in-app sign-in page; a per-network note of whether your router supports UPnP and what the last address-translation test found, filed under a one-way hash of the network rather than its name or address; and the state of the home-screen widget. |
| Connection-doctor summary | One line summarising the last run, kept so it can be included if you choose to send feedback. |
Screenshots. If you take a screenshot during a stream, it is saved as a picture on your device: on Android 10 and newer in Pictures/Relaypad, where it stays after you uninstall the app; on Android 8 and 9 in the app's own folder, which is removed on uninstall. A temporary copy is kept in the app's cache so it can be shared.
Backup and transfer. The app excludes all of its data from Android backup and from device-to-device transfer, so none of it is copied into your Google account's cloud backup or moved to a new phone when you set it up from an old one.
The cost of keeping keys on the device: pairing keys and sign-in tokens cannot be restored to a new phone or recovered after a factory reset. On a new device you sign in and pair again. We cannot recover them for you, because we never had them.
Relaypad uses Google Analytics for Firebase to count how features are used, so we can see which screens fail and which parts are worth improving. Statistics are on by default and can be switched off in Settings → Privacy → Usage statistics. Switching them off stops collection straight away and it stays off.
The events the app sends itself are a fixed set, defined in the source code:
Each event carries at most one short label, for example which entry point opened the paywall, which setting changed and its new value, or which failure category a sign-in, pairing or remote connection ended in. These labels never contain your account ID, your IP address, your console's name or the name of an external display, and the app's analytics interface is built to keep it that way.
Google Analytics also records its own standard events, such as first open, app update and time spent in the app. Google attaches an app-instance identifier and standard device information: model, OS version, language, and an approximate country derived from your IP address. Google does not give us the IP address itself. We have removed the advertising-ID permissions that the analytics library would otherwise add, so no advertising identifier is collected. Events are kept for 14 months and then deleted.
Relaypad contains no advertising SDK, no attribution SDK and no crash-reporting SDK. There are no ads anywhere in the app.
Remote play, and registering a console without a pairing code, require signing in to the console manufacturer's account. When you do:
What the manufacturer does with your account activity is governed by its own privacy policy, not this one. If you never sign in, none of this happens: you can still pair and play on your home network using an account ID obtained another way (§6).
Your console only pairs with an app that presents your account ID. The app offers four ways to get it:
psn.flipscreen.games, a third-party service we do not run and are not affiliated with, which returns the account ID. Nothing else is sent, and the request carries nothing that identifies your device.The connection doctor, and the app when it sets up a remote connection, examine your network so they can tell you why a connection fails. The analysis runs on your device.
Results are shown to you, and a one-line summary is kept on the device for the feedback email. They are not uploaded. If you share or copy the full report yourself (§10), note that it includes your console's name, local addresses and your public IP address.
Whether you pay for Relaypad on Google Play or unlock Pro with a one-time in-app purchase, the payment is processed by Google Play. Google handles the payment and tells the app whether you are entitled to Pro; we never receive or store your payment method, card details or billing address. The app caches the entitlement on your device (§3) so it keeps working offline.
Refunds follow Google Play's terms and the refund policy shown in the app. If you email us for a refund, the order number you include is used only to find and refund the purchase.
Firebase Remote Config fetches our current configuration, for example the free-tier quality limit, switches that let us turn off a feature if a console update breaks it, lists of hardware video decoders known to misbehave, a compatibility notice, whether the rating prompt is enabled, paywall options and the launch-price deadline. The request carries a Firebase installation identifier and basic app and device information, such as app version and language, so that Google can deliver the right values. It is not linked to your account or your consoles, and because the app needs it to work properly, it is made even when usage statistics are switched off.
The rating prompt is Google Play's official in-app review card. Whether you rate, and what you write, is handled entirely by Google Play, and the app never sees it. Relaypad only keeps a few values on your device to decide whether to ask at all: how many controller sessions you have started, whether a stream has run for 20 minutes, and how many times and when it last asked Google Play to show the card. It asks at most twice in the app's lifetime, with at least 60 days between asks.
If you tap "Send feedback", the app opens your email app with a message addressed to us and pre-filled with: app version; device model, manufacturer and codename; Android version, API level and ROM build; language; for each paired console, its generation, firmware version and the name you gave it; the one-line summary of your last connection-doctor run; your purchase status, with product ID, order ID and purchase date if you have bought Pro; and whether Google Play Billing is reachable.
Nothing is sent until you press send in your own email app, and you can edit or delete any of it first. If you send it, we receive it at simplelifefirst@gmail.com and keep it only as long as needed to help you.
You can share a stream screenshot, or share or copy a connection-doctor report, through Android's share sheet or clipboard. The report includes your console's name, the local addresses of your phone and console, and your public IP address. It goes only where you send it, and from then on the app you picked, not this policy, governs what happens to it.
Relaypad can forward your microphone to the console, the same way a headset does, so you can talk in a game. Audio is captured only while you have the microphone turned on during a session, is sent directly to your console, and is never recorded, stored or uploaded. Android asks for the microphone permission the first time you use it, and denying it only disables that feature.
When the console asks for text, such as a search term, a message or a sign-in passcode, what you type in the app is sent directly to the console over the session. The app does not store or log it.
These are the permissions in the released app and what each is for. Those marked "from a library" come with Google or Android components the app uses, rather than from a feature we wrote.
| Permission | Why |
|---|---|
INTERNET | Talk to your console, and reach the destinations listed in §2. |
ACCESS_NETWORK_STATE | Tell whether you are on Wi-Fi or mobile data, including when a VPN hides the underlying network, and whether a VPN is active. Used by the connection doctor and to lower stream quality on mobile data. |
ACCESS_WIFI_STATE | Read the Wi-Fi band (2.4 GHz or 5 GHz) for the connection doctor. |
BLUETOOTH (Android 11 and older) | Read whether Bluetooth is on, because it can interfere with 2.4 GHz Wi-Fi. Not requested on Android 12 and newer. |
RECORD_AUDIO | Forward your microphone to the console during a session (§11). Requested only when you use it. |
VIBRATE | Turn rumble from the console into vibration, and give button presses haptic feedback at the strength you choose. |
com.android.vending.BILLING | Buy and restore Pro through Google Play. |
WAKE_LOCK, BIND_GET_INSTALL_REFERRER_SERVICE | From a library: added by Google Analytics for Firebase. |
FOREGROUND_SERVICE, RECEIVE_BOOT_COMPLETED | From a library: added by WorkManager, which the home-screen widget library uses. Relaypad runs no foreground service of its own. After a restart the library may briefly reschedule pending widget updates, but the app does not otherwise start itself. |
DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION | From a library (AndroidX Core): an internal permission, invisible to other apps, that keeps the app's own system-event receivers private. |
We explicitly remove three permissions that the analytics library would otherwise add, the advertising ID and two ad-attribution permissions, because Relaypad has no ads and does no ad attribution.
Relaypad requests no location, contacts, calendar, SMS, call-log, photo or file permissions, and does not read the list of apps installed on your device.
Separately from anything the app does, Google Play gives every developer aggregate statistics about their app's installs, uninstalls, ratings and crashes (Android vitals). Google produces these figures; the app does not send them to us, and they do not identify you.
Relaypad is a utility for people who own a game console and is not directed to children under 13. We do not knowingly collect personal information from children. The app has no account system of its own, no social features, no user-generated content and no advertising. If you believe a child has sent us personal information through the feedback email, write to us and we will delete it.
We do not sell or share personal information, and we do not use it for cross-context behavioural advertising. There is no advertising in Relaypad at all.
Where the GDPR applies, our legal bases are: performance of our agreement with you for the features you ask for (pairing, streaming, remote play, purchases); our legitimate interest in keeping the app working, for Remote Config and the network checks described in §7; and your consent for usage statistics, which you can withdraw at any time with the switch in Settings.
Retention: data on your device stays until you delete it or uninstall the app; usage events are kept by Google for 14 months; emails you send us are kept only as long as needed to help you.
Google processes analytics and configuration data on servers that may be outside your country, under its own data-transfer safeguards. We run no servers of our own.
Pairing keys and sign-in tokens are encrypted with AES-256-GCM under a key held in the Android Keystore. Everything else the app stores is protected by Android's app sandbox. Connections to the manufacturer's services, the lookup service and Google use HTTPS, and the stream between your device and your console is encrypted by the console's remote play protocol. No method of storage or transmission is perfect, but there is no central database of users to breach, because there is no server of ours.
If we change what the app does with data, we update this page and the effective date at the top. Material changes are also mentioned in the app's release notes on Google Play. The current version of this policy is always the one at this address.
Relaypad · simplelifefirst@gmail.com
Source code: codeberg.org/geektech54/gamec