Control4Free
Use your phone or PC as a PS4 controller: on the home screen, at sign-in, and in games.
Control4Free adds up to four extra DualShock 4 controllers to a jailbroken PS4. Open its page in a browser on your network, pick a controller, and choose who's playing on the PS4's own "Who's using this controller?" screen. Play with touch, a keyboard, or the gamepad you already have: Xbox, DualSense, Switch Pro and most others work through the phone or PC. There's nothing to install on the phone or computer.
Why it's different
Controller plugins live inside games, so they can't reach the home screen or the sign-in screen. Control4Free is a GoldHEN payload that goes through Sony's own virtual-device system, the one Remote Play uses. The PS4 sees a virtual DualShock 4, which provides:
- on the home screen and in every menu, PS button included;
- at sign-in, through the PS4's own user picker, for real users and guests alike;
- in games, with DS4 input and no per-game plugin setup. See the limits below for motion and accessories.
Features
- Up to four controllers, from as many phones, tablets or computers as you like.
- See who's playing. Each controller shows the name of the PS4 user signed in on it.
- Invite friends with a QR code. One button on the page shows its address as a QR code: friends scan it and they're in.
- A full DualShock 4 on the screen: analog sticks, a two-finger touchpad, L3/R3, PS, Share and Options. Move, resize or hide any button with the layout editor; each device keeps its own layout.
- The gamepads you already have. Connect one to the phone or PC and give it a controller. One computer can run all four.
- A keyboard, with keys you choose on the same picture.
- Your own gamepad mapping. Map any gamepad on a picture of a DualShock 4: click a control, then press the button you want. Map browser-exposed buttons and axes from gamepads, wheels, guitars and pedals to DS4 controls; wheel and guitar model compatibility remains unverified. See Gamepad mapping.
- Rumble and light bar. When a game rumbles, your phone buzzes (Android), and so does your gamepad, though not every controller supports vibration in the browser. The page glows in the controller's light-bar colour, the one the PS4 or the game sets.
- DualShock 4 and DualSense touchpads, including two finger positions, when linked in Chrome or Edge on a computer. Experimental Sony controller support also adds direct rumble and PS4 light-bar colours.
- Experimental motion controls from a phone or a linked DualShock 4 / DualSense, and trigger rumble on supported Xbox controllers and a linked DualSense. Turn them on in Settings → Experimental. See Experimental features for what each switch does and setup.
- WebRTC controller connections keep newer input moving while reliable messages handle controller selection and status. See why the connection changed.
- Reconnects after a brief interruption, reclaiming controllers the service still retains.
- An app on the PS4 that shows the address and a QR code, how many controllers are connected, and starts or stops Control4Free. Use a controller or your TV remote through HDMI-CEC.
- Test controllers on the PS4. Press Options in the app to see what each signed-in user's controller sends: buttons, sticks, analog triggers, touchpad and motion. Check connection latency and test rumble, light-bar colours and orientation. See Testing controllers.
- Starts by itself. One button in the app sets up GoldHEN's AutoRun, so Control4Free is ready after every restart.
- On your phone's home screen, like an app.
- Stays awake: your phone's screen doesn't turn off while you play.
- Gets through rest mode. After the PS4 wakes up, open the page and pick your controller again.
Controller connection
The controller page now connects directly to the PS4 through WebRTC data channels over UDP. Previously, all messages travelled through one ordered WebSocket connection over TCP: if a packet was lost, newer input could wait behind its retransmission. For a controller, that can turn a brief loss into late presses or several updates arriving together.
WebRTC lets the page use separate channels for different jobs. Controller input is unordered and is not retransmitted; the PS4 accepts newer state and ignores older updates arriving late. Controller selection and status use a reliable channel. A short history of button changes helps recover isolated missed presses, and automatic reconnection restores controllers after a brief interruption.
The improvement is how input behaves when the connection loses packets. An already healthy connection may have a similar round-trip time. For the implementation and message formats, see How it works and Protocol.
Quick start
- Download
Control4Free-<version>.pkgfrom the latest release. - Install it with GoldHEN's Package Installer: Settings → Debug Settings → Game → Package Installer, from a
USB drive or
/data/pkg/. - Enable GoldHEN → Server Settings → Enable PayLoader Server, then open Control4Free from Library → Applications and press Cross. It sets up auto-start and starts Control4Free.
- On your phone or PC, scan the QR code or open the address shown, for example
http://192.168.1.20:4264. Pick a controller, then choose your user on the PS4.
New to GoldHEN packages? The installation guide walks through every step.
Screenshots
| Home screen on a phone | On a PC | The app on the PS4 |
|---|---|---|
![]() |
![]() |
![]() |
| Controller test | Controller tools |
|---|---|
![]() |
![]() |
Documentation
- Installation: requirements, installing, auto-start, updating, uninstalling.
- Playing: signing in, touch, keyboard and gamepads, the layout editor, settings.
- Gamepad mapping: profiles, calibration and using several input devices together.
- HDMI-CEC navigation: using your TV remote in the PS4 app.
- Troubleshooting: the messages you might see and what to do about each.
- How it works: the virtual-device API, sign-in, and what runs where.
- Virtual DS4 controls and values: individual buttons, sticks, triggers, touch, motion, and motor/light-bar feedback exposed by Control4Free.
- Protocol: the WebRTC channels and messages between the page and the console.
- Security: what being open on your home network does and doesn't mean.
- Contributing: building, testing and code style.
- Changelog.
Requirements and compatibility
- A PS4 with GoldHEN v2.4b18.10 or later. Tested on firmware 10.01, 11.02, 13.02, 13.04 and 13.52; the compatibility table lists every firmware and the GoldHEN version it needs.
- A phone, tablet or computer with a browser supporting WebRTC data channels, on the same network as the PS4. TCP and UDP port 4264 must be reachable; guest Wi-Fi or client isolation can block the connection.
- To start the service directly from the app, enable GoldHEN → Server Settings → Enable PayLoader Server. AutoRun can start it without this server.
- Turn off other GoldHEN controller plugins in games you play with Control4Free. A plugin that takes over a signed-in user's controller can stop games from reading the virtual ones.
- A Remote Play session (chiaki-ng, for example) works alongside Control4Free.
Limitations
- The PS4 always sees a DualShock 4. Mapping does not provide native wheel or guitar identity, or wheel force feedback. Games requiring native accessories are outside this release; native accessory emulation remains a separate, unproven research question.
- Browser input limits apply. Hidden buttons and lost input identity cannot be recovered by mapping. With several Xbox controllers, some Chrome/Edge Windows backends combine their Xbox buttons; see the GameInput workaround.
- Eight connections at a time. Up to eight phones or computers can connect to the service at once.
- Motion and direct controller lights are experimental. Browsers only give motion sensors and direct
controller access to secure pages, and the console's page is plain
http. Chrome and Edge can treat it as secure with one setting; Safari on an iPhone can't. Direct controller access works in Chrome and Edge on a computer only. See Experimental features. - iPhones don't vibrate. Safari doesn't let pages use the phone's vibration. A gamepad connected to the iPhone can still rumble, if the browser supports it.
- One controller is added at a time. If two people pick at once, the second is asked to try again a moment later.
- Rest mode signs everyone out, so controllers have to be picked again after the PS4 wakes up, just like real ones.
- No pairing or password. Anyone on your network can take a free controller. Read SECURITY.md and keep TCP and UDP port 4264 off the internet.
Support
Found a bug? Install the diagnostic package from the latest release first, then open an issue with its screenshots (see Reporting a problem). I maintain this project and read every report. If Control4Free is useful to you, you can help keep it going on Liberapay.
Credits
Control4Free's virtual-device code is ported from SplashDown by seregonwar. The other code, fonts and artwork it uses, and their licenses, are listed in THIRD_PARTY.md.
Built with AI help
Control4Free was built with the help of AI models, Claude Opus 5.5 by Anthropic and Astra GPT-6 by OpenAI, which worked on the code, tests and documentation with me. AI-written code can look right and still be wrong. Reviews are very welcome: if you spot AI slop (dead code, wrong assumptions, needless complexity), please open an issue or send a pull request.
License
Control4Free is free software under the GNU General Public License v3. Copyright © 2026 MoHadiShibli.





