RetroPie lag/missed key inputs on OEM PS3 bluetooth controllers
-
Hello!
I am having an issue with my PS3 controllers on the Raspberry Pi 3, running RetroPie 4.3. The issue is that if I sync more than one controller simultaneously, there becomes a delay with one of the one that is synced secondly.
Example: I turn on my first controller (it doesn't matter which one) and it syncs fine and controls fluid and responsively. I press the PS button on the next controller, and it will sync, but functions very delayed. If I press any button several times, some of the key presses will get missed. Or the button will get "stuck" sending the signal until the controller responds again. This happens no matter which area of the system I'm in, emulators, EmulationStation in the GUI, or in the RetroPie setup script. So the issue is not isolated to just emulation.
Also, I noticed that whichever controller I sync second, when the 1234 lights light up in sequence upon initializing, they have a delay. For example, on the first controller, the lights go back and before between 1 through 4 before it syncs, and it is a steady sequence. When I sync the second controller, the lights will hang longer on some of the numbers, so there's a definite delay of some kind when I get a second controller involved.
Again, it doesn't matter which controller I use, it only matters which one becomes the second controller. If I sync only one controller, there is no issue at all.
When I was on RetroPie 4.1, I didn't remember having any issues. But I didn't use my Raspberry Pi for almost a year, and sold one of my controllres with my PS3 since then. So I upgraded to 4.3 while having only one controller and never had a problem. I bought a new controller on Ebay and that turned out to be a very good fake, but a fake. So, I made a trip to Gamestop for a used OEM PS3 controller, and after looking at a fake and a non OEM controller, and connecting them to the Pi via USB to identify them, I can say with fairly good certainty that these two controllers are authentic. this is simply just to point out that the upgrade wasn't the only change since I last had two working controllers, and I wish I remembered more details about my old setup.
Just for good measure, after having synced a couple of non-OEM/fake controllers, I went to the Manager Driver Packages section of the RetroPie Setup script, and chose the option to remove controller configurations for the PS3 driver. I then rebooted and reinstalled the PS3 driver for official controllers.
I had my Pi over clocked to 1.4ghz and I set that back to normal as well, just in case.
I'm still having the same issue, and this is quite frustrating. I am just about out of ideas. I would like to try to avoid redoing the entire image, since I have a HUGE amount of data on the card, box arts, custom PS1 game controller configurations, etc.
Any suggestions or help would be much appreciated, thank you in advance!
Pi Model: Pi 3 - Model B
RetroPie Version Used: 4.3 (Upgraded from 4.1)
Built From: Pre-made image on official RetroPie website (4.1 premade image that was upgraded to 4.3)
USB Devices connected: None, Bluetooth PS3 controller
Controller used: 2 PS3 Controllers (Several indicators tell me they're both authentic)
Error messages received: No errors
Log found in /dev/shm/runcommand.log (if relevant): N/A
Guide used: N/A
File: N/A
Emulator: This issue is not isolated to only emuators
Attachment of config files: Please feel free to let me know which log file is needed for this issue. -
So I just wanted to follow up on this, since I was able to fix the problem, but it required a USB bluetooth adapter. I didn't realize there are existing input lag/delay issues on the Raspberry Pi 3's internal bluetooth device. I formatted another card with RetroPie on the same version and tested the controllers again with the same problem. I then installed RetroPie on a regular Linux laptop with built in bluetooth, and the problem didn't happen, using the same controllers.
So I determined that I needed a USB bluetooth dongle and this fixed the issue. For anyone out there, the fix is really easy, you just need to make sure you have a bluetooth dongle that works in Linux, and disable the onboard bluetooth on the Pi.
I bought the NS-PCY5BMA2 which I was able to pick up at Best Buy locally. Then, you want to add the line dtoverlay=pi3-disable-bt at the bottom of your /boot/config.txt
Once that's done, simply boot the Pi up with the USB bluetooth dongle inserted and re-sync your devices. I didn't even have to use RetroPie Setup. I simply just plugged my PS3 controller in, waited for the lights to flash 1 light, then all 4 came on. I unplugged it and pressed the PS button and it worked. I did the same with the second controller and noticed a difference immediately, they both synced up faster and games worked perfectly.
I would like to credit the following thread for the command to disable bluetooth: https://www.reddit.com/r/RetroPie/comments/6rc0iw/use_usb_bluetooth_adapter_instead_of_internal/
Hope this helps people in the future!
-
Great job on the writeup and answering your own question after the fact. This was the exact problem I was having and your solution worked perfectly for me.
Thanks!
-
@joeboese619 Hey, I'm glad this was helpful for you! It was driving me nuts since I really wanted to use the Pi for multiplayer.
Glad the solution worked for you! I'm pretty sure if you're unsure about the compatibility of a Bluetooth adapter with the pi, you can probably test it on a desktop Linux distribution. I'm betting that Retropie has similar device compatibility to desktop Linux distros
-
@retrogamer0897 Thanks, this worked perfectly for me on an rpi 3. Had all the same symptoms you describe. Yes the sync process (4 lights flashing in sequence back and forth as it connects as a certain player 1-4) of the ps3 controller is now much faster, and game lag (it was especially bad with two ps3 controllers attached) is gone.
Thanks!
P.S. I am using this adapter, I got it for $13 though right now on amazon it's more:
https://www.amazon.com/gp/product/B00DJ83070 -
@retrogamer0897 BTW, see this related thread:
https://retropie.org.uk/forum/topic/7712/fixing-dualshock-3-bluetooth-lag
Like the poster in that thread, I get better l2ping times from the onboard bluetooth (12ms instead of ~50ms) if I turn off wifi and set the mode to SLAVE... but it's useful to have wifi on! So I prefer the USB bluetooth dongle as a solution.
-
but it's useful to have wifi on!
There is a script in this thread relating to turn wifi on/off by controller input
https://retropie.org.uk/forum/topic/20303
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.