Use a DualSense controller on your PS3 to get a working PS (Home) button, motion controls and rumble!
RosettaPad runs on a Raspberry Pi Zero 2 W and makes the PS3 see your DualSense as a genuine DualShock 3, so features that generic third-party adapters lose (PS/Home button, motion controls, rumble, battery status) work as expected. Setup takes about 15 minutes.
Note
Current Status: Currently RosettaPad is active for DualSense (PS5/DS5) controller support on the PS3. I would like to expand to more controllers and systems, but for now the scope is one controller, one system, and some tools that will help make adding your favorite controllers easier.
View Directory
You may be asking, "I can connect my DualSense/DS4/8BitDo controllers to the PS3 right now."
Yep.
So the PS3 is kinda dumb, well at least the gamepad driver is. If it isn't specifically a DualShock 3 controller, it deems the controller "generic" and switches to an all purpose gamepad driver that disables stuff like PS button, rumble, motion controls, etc. So if for some reason you wanted to exit a game and go to the XMB, you just.... can't.
Okay, so I'm kinda cheap and didn't really want to buy a thing to plug in and have it just work when I could probably just make it myself. It probably would've cost me $50, and then I'd have to wait like 2 days ๐คฎ So instead I spent every waking moment for a month reading as much material as I can find on the dualshock 3 HID and bluetooth handshake, doing my own testing, and finally building RosettaPad.
Was it worth it? Probably not lol
Basically, I wanted a free alternative to something like the Brook Wingman XE2, Mayflash Magic-S and GIMX adapters that are expensive or needlessly complicated to setup.
What should you expect if you setup RosettaPad right now?
Setup for RosettaPad takes about 15 minutes from start to finish. Once setup you will have all the features you'd expect on a normal DualShock 3 controller but on a DualSense, including the home button, motion controls and rumble working with a few features thrown in on top like a usable trackpad that works as a precision right analog stick.
So, can you use a DualSense on a PS3? Yes! It works great with RosettaPad.
| Feature | Status | Notes |
|---|---|---|
| DualSense to Raspberry Pi connection via bluetooth | โ | Works without issues. |
| Raspberry Pi to PS3 connection via USB | โ | Works without issues. |
| Raspberry Pi to PS3 connection via bluetooth | โ | Works without issues. |
| Motion controls (Sixaxis) | โ | Works. Axis orientation tuned against a real DS3 |
| Complete button translation | โ | Works without issues. This includes all face, d-pad, shoulders, triggers, and PS button. See What Can't Be Emulated |
| Complete analog input translation | โ | Works without issues. This includes analog sticks and analog triggers. |
| Rumble | โ | Both motors work without issues |
| PS3 Wake from Standby | โ | Works without issues. |
| Battery display on PS3 | โ | I know this is a small feature, but im proud of this one lol. The DualSense sends current battery status (Whether it is plugged in and charging, charged, or discharging) and it gets displayed in the PS3 UI. |
| Safe Mode | โ | Works without issues. |
| Feature | Status | Notes |
|---|---|---|
| Touchpad as precision right stick | ๐ง | It works, just not as well as I hoped |
| Feature | Status | Notes |
|---|---|---|
| Web Configuration Panel | ๐ | Backend API stubbed, frontend in progress - Dev Web Panel Branch |
| Pico 2W Port | โธ๏ธ | Dev Pico Port Branch |
| Button Remapping | โ๏ธ | Architecture ready, UI needed |
| DualSense Adaptive triggers | โ๏ธ | N/A - Waiting for Web Configuration Panel |
| Lightbar Customization | โ๏ธ | N/A - Waiting for Web Configuration Panel |
| Macros | โ๏ธ | N/A - Waiting for Web Configuration Panel |
| TAS recording, editing & playback | โ๏ธ | N/A - Waiting for Macros |
| Additional controller support | ๐ | N/A |
| Additional console support | โ๏ธ | N/A |
For the most part, the only thing RosettaPad can't emulate (see below) is the pressure sensitive face buttons. This is mostly due to the fact that the DualSense (and DualShock 4) controller does not have pressure sensitive face buttons.
In the case where the controller does not have pressure sensitive buttons, RosettaPad will just map the pressure sensitive bits to 00 (for not pressed) or FF (for pressed).
If you require this functionality, you will need to get a controller that has pressure sensitive buttons. (Then RosettaPad can map those to the correct DualShock 3 layout)
Here's a list of games that use pressure sensitive buttons.
Tip
New to this? Is the quick start guide too quick?
You can find more detailed instructions that go step-by step from beginning to end here. Just in case you need them.
- Raspberry Pi Zero 2W (or Zero W) - Minor testing has been done on Zero W, but it does work.
- An SD Card - I think anything over 8gb is overkill.
- Micro USB data cable - Connects Raspberry Pi's "USB" port to PS3.
- Micro USB power cable - Connects Raspberry Pi's "PWR In" port to any power source. (recommended not to plug this into PS3. The PS3 turns off power to USB ports when it's off. This may not be needed in future updates of RosettaPad, if you see this, it's still required.)
- DualSense controller - See How to pair the controller via bluetooth
- A computer - Needed to flash Raspberry Pi OS and configure RosettaPad.
- SD Card reader - Only needed to flash Raspberry Pi OS
- Flash Raspberry Pi OS Lite (64-bit) for Zero 2W or OS Lite (32-bit) for Zero W.
- Update system and install Git:
sudo apt update && sudo apt upgrade -y && sudo apt install -y git- Install RosettaPad:
git clone https://github.com/ihasTaco/RosettaPad.git
cd RosettaPad
chmod +x install_debian.sh
sudo ./install_debian.sh- The install script will update the system, install dependencies, enable usb gadget mode, build the source into an executable and finally create a service for you before rebooting.
- Once back up, run
bluetoothctl, then:
scan on
# Put DualSense in pairing mode: hold Create + PS until light flashes rapidly
# Replace XX:XX:XX:XX:XX:XX with your controllers MAC address.
pair XX:XX:XX:XX:XX:XX
trust XX:XX:XX:XX:XX:XX
connect XX:XX:XX:XX:XX:XX
quit- Plug the Pi into the PS3 via the data port.
- Done!
# Check if DualSense is connected
ls /dev/hidraw*
# Verify it's the right device
cat /sys/class/hidraw/hidraw*/device/uevent | grep -E "HID_NAME|PRODUCT"
# Should show: 054C:0CE6 (Sony DualSense)- The DualSense creates multiple hidraw devices; RosettaPad automatically finds the correct one (VID
054c, PID0ce6) - Ensure the controller is connected via Bluetooth, not USB
- Eleccelerator Wiki - DualShock 3 protocol documentation
- Linux hid-sony driver - Reference implementation
- USB Host Shield Library - SIXAXIS enable details
See CONTRIBUTION.md for guidelines on submitting issues and pull requests.
See LICENSE for details. If you use protocol documentation or findings from this project, please provide attribution by linking back to this repository.