Made some progress on 2 Generic (Shanwan) PS3 Controllers via Bluetooth on Pi 3 & RetroPie 3.6
-
Looks like others are having problems getting PS3 (OEM or generic) controllers working with RetroPie 3.6 and the Raspberry Pi 3.
I have successfully paired 2 of these generic controllers and had them both working in EmulationStation on a Pi 3 with RetroPie 3.6; mostly.
Just a bit of background on why I'm going down this road, I'm trying to spec out a performant RetroPie build for ~$100 for myself and some friends and family who are interested in building their own.
I've got an Amazon list that puts together a nice little system with a Pi 3, 64GB MicroSD, Case, Power Adapter, Heatsinks, 6' HDMI Cable, and 2 Generic PS3 Dualshock 3 Controllers for ~ $103 - I think that is a great price!
The Pi 3's performance + integrated Wifi and Bluetooth seems like the simplest path forward; I didn't like having to use a WiFi dongle and Xbox dongle on my Pi 1 - too much "stuff" hanging off.
And, I do NOT want to spend $45 EACH for USED OEM Dualshock 3 controllers for a lastgen console - that is crazy. If you can find them at GameStop or Ebay, they're more than the Pi 3 for each one!
So, for $23 I'm pretty happy with these Generic (Shanwan) Dualshock 3 controllers, assuming I can get them working!
I built the system and installed RetroPie 3.6 today. I tried to use the instructions here to set up the controllers.
There is a nice menu in the RetroPie Setup that says that it allows you to install / pair PS3 Controllers. (It has install options for OEM, Shanwan, and Gasia clones). When I plug in the controllers linked above and do a dmesg, I see Shanwan, so, I assume the ones I have are Shanwan clones. (This could be wrong).
I installed the Shanwan clone and then plugged in the first controller via USB as instructed and after a few seconds, the controller started rumbling and the lights went from all 4 blinking to just lights 2 and 3 blinking.
I disconnected the USB and pushed the "PS" button, but nothing happened and eventually the controller turned off.
With the USB connected, I figured I should be at least able to use the controllers in emulation station; they worked fine in jstest and on a windows machine. EmulationStation discovered the gamepad, however, button presses would not register in the EmulationStation controller config.
I found @MameKid 's post on this forum about a hotfix for having EmulationStation recognize the PS3 controller (via USB) and that took quite some time but it did work (via usb)!
Still wanting to get the bluetooth to work, I dropped to the console and tried to mess around with sixpair and i didn't see any bluetooth interfaces.
It dawned on me that maybe RetroPie 3.6 image didn't enable the onboard bluetooth. I confirmed this and found that I needed to run:
sudo apt-get install pi-bluetooth
Then, sixpair would show a bluetooth controller / mac address.
Once I did that, with the controller connected via USB, I was able to run sixpair, and then
sudo sixad --start
I could then remove the USB cable and then, when I hit the PS button.... I saw a message that a PlayStation controller was paired!
When I connected the second controller, it did the same sort of thing - although it lit up buttons 123 - I'm guessing this is showing that it is being identified as a different controller than the first one (which had lit up 2&3) ?
I then removed the USB connection, hit the PS button and the second controller paired.
Now, both controllers had all 4 lights blinking, (not 1 & 2 respectively as you'd expect) - but, they appeared to be paired....the problem was, sixad was still running and I couldn't do anything. If i hit Ctrl+c to kill sixadd and then start emulationstation, no gamepads were found.
It dawned on me to instead run sixadd --start & which let me repeat the pairing process and then run emulationstation with sixadd still working.
EmulationStation reported 2 gamepads found - both were connected via Bluetooth!
I configured them both, and the EmulationStation GUI responded as expected to both!
However, this is about as far as I got; neither controller worked for SNES or Genesis games, even though I could launch them from ES. They both showed something like "PlayStation controller 0/0 not configured" when launching and there was essentially no controller in the emulator.
I also tried rebooting, and, even making sure I hit the PS button on both controllers at boot time, neither paired and EmulationStation started no gamepads found.
I tried to add sixadd to the boot configuration using:
sudo update-rc.d sixad defaults but that did not appear to make a difference.
So, I think there is some progress here, I just can't them to survive a reboot or work in games.
Any help would be appreciated; I'll even offer to send a pair of these to someone on the project to get them officially supported and reliable. :)
-
RaspberryPi3 with Bluetooth PS3 controller (Original, garsia, Shanwan) crash the system. This is a bug with no solution yet. Perhaps the best thing and expect this error to be fixed. see https://github.com/raspberrypi/linux/issues/1360
-
Ok, that is good to know, but, feel this (the successful paring and surviving of reboots) of the PS3 controllers can be handled separately than the eventual crash issue.
As for the controller working in emulation station but not in games, I checked to see that udev was already set, and it was. But that didn't work.
I found this video from @herb_fargus that showed how to set the controller config in retroarch; not sure why this doesn't get set from the EmulationStation configuration like it did with my Xbox 360 controllers, but once I did the steps here, the controller showed as configured at game launch and worked as expected in the games.
-
Ok, I made some progress with getting sixad to survive reboots so now every reboot you can re-pair the controllers via dropping to the command line, running sixadd --start & and then going back into emulationstation.
For whatever reason, running** sudo update-rc.d sixad defaults ** didn't do anything. Well, it did make sixad service start up, but, it didn't actually work.
I found an issue from the retropie GitHub where joolswills mentioned he had success by adding
sixad –start in rc.local
I tried this, but, it ended up halting startup waiting for sixad events.
But, if you include an & it works, emulationstation boots up, and at any time you can hit the p3 button and you'll be paired. You'll still see the "no gamepad" screen, but, once the controller(s) is paired, you can just hit left or right and it will work as intended.
To recap:
sudo nano /etc/rc.local
Add:“sixad --start &”
Without the quotes above:
“Exit 0” -
Hey @Prindle19 , did you succesfull paired at the same time 2 generic PS3 cotnroller via bluettoth ?
-
@Ornitorick yes. have paired 4 of them actually
-
@Ornitorick heres details of how i did it with adding a 3rd party dbt dongle: https://retropie.org.uk/forum/topic/265/bluetooth-with-ps3-sixaxis-still-not-connecting/7
-
@Prindle19
Nice! Thank you, ill try this. I alredy have succesfull paired one controller, but the second juts dont pair....
Let se what can i get! -
@Prindle19 hum... the first one i can succesfull pair, but the second just work wen it is on the cable.
I cant pair the second controller wiresly .Didi you have this trouble too, wen you was trying to resolve this?
Contributions to the project are always appreciated, so if you would like to support us with a donation you can do so here.
Hosting provided by Mythic-Beasts. See the Hosting Information page for more information.