Skip to content

Latest commit

 

History

95 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RosettaPad

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

What's the Point?

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.

Features

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.

What Works Right Now?

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.

What's In Progress?

Feature Status Notes
Touchpad as precision right stick ๐Ÿšง It works, just not as well as I hoped

What's Planned?

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

What Can't Be Emulated

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.

Setup

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.

Hardware Requirements

  • 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

Quick Start

  1. Flash Raspberry Pi OS Lite (64-bit) for Zero 2W or OS Lite (32-bit) for Zero W.
  2. Update system and install Git:
sudo apt update && sudo apt upgrade -y && sudo apt install -y git
  1. Install RosettaPad:
git clone https://github.com/ihasTaco/RosettaPad.git
cd RosettaPad
chmod +x install_debian.sh
sudo ./install_debian.sh
  1. 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.
  2. 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
  1. Plug the Pi into the PS3 via the data port.
  2. Done!

Troubleshooting

Controller not detected

# 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)

Buttons not working

  • The DualSense creates multiple hidraw devices; RosettaPad automatically finds the correct one (VID 054c, PID 0ce6)
  • Ensure the controller is connected via Bluetooth, not USB

Credits & Attributions

Contribution

See CONTRIBUTION.md for guidelines on submitting issues and pull requests.

License

See LICENSE for details. If you use protocol documentation or findings from this project, please provide attribution by linking back to this repository.

About

A DualSense (PS5) controller adapter for the PS3 with working PS (home) button and rumble using a Raspberry Pi Zero 2 W with no jailbreak required.

Topics

Resources

Stars

9 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages