PS3 (Sixad) controller won't disconnect and reconnect in Retropie
-
Pi Model: 3
Power Supply: 2.5A@5V
RetroPie Version: 4.2.7
Built From: Basic install on top of Jessie Lite
Controller used: PS3 (Gasia only driver)
Emulator: All emulators testedHello all, I have been having this issue for quite a while now. I have 4 PS3 knockoff controllers: SZMY-POWER which work fine with the Gasia only PS3 driver. The connect and disconnect just fine when in the Emulation Station menus. However when I'm running an emulator, if I leave the controller idle for 5 minutes and it goes to "sleep", sixad will not fully disconnect the controller, and therefore I cannot connect it again. The logs show as follows.
In Emulation Station menu, connecting controller:
raspberrypi kernel: [ 370.063156] input: PLAYSTATION(R)3 Controller as /devices/virtual/input/input3
raspberrypi sixad-sixaxis[2676]: Connected 'PLAYSTATION(R)3 Controller (00:4B:C5:00:00:00)' [Battery 03]In Emulation Station menu, disconnecting controller (sleep):
raspberrypi sixad-sixaxis[2676]: Bad Sixaxis buffer (out of battery?), disconnecting now...
raspberrypi sixad-sixaxis[2676]: Disconnected "00:4B:C5:00:00:00"When Retropie (any emulator) is running, connecting controller:
raspberrypi kernel: [ 1871.405974] input: PLAYSTATION(R)3 Controller as /devices/virtual/input/input4
raspberrypi sixad-sixaxis[9552]: Connected 'PLAYSTATION(R)3 Controller (00:4B:C5:00:00:00)' [Battery 03]When Retropie (any emulator) is running, disconnecting controller (sleep):
raspberrypi sixad-sixaxis[9552]: Bad Sixaxis buffer (out of battery?), disconnecting now...
Notice how there is no "Disconnected" notification. So then the next time I try to connect the controller I get...
raspberrypi kernel: [ 2637.160730] input: PLAYSTATION(R)3 Controller as /devices/virtual/input/input5
And no "Connected" notification, so the controller will no longer respond and the lights will continue to blink until I either kill sixad or reboot the Pi. So something is preventing the controller from fully disconnecting and therefore reconnecting when Retropie is running. Does anybody have an idea as to any "tweaks" to try and make it track the connection properly? For reference I have tested this with 4 different controllers and multiple emulators including NES, SNES and PSX default emulators.
-
I have exactly the same problem on all (4) retropie installation.
with genuine controllers ps3 or gasia or shanwa
but only in non retroarch emulators (vice, mupen 64plus in my case).All retroarch emulator work corretcly with gasia , ps3 original or shanwa.
Working in retroarch :
Dec 18 21:31:28 retro sixad-sixaxis[1439]: started
Dec 18 21:31:28 retro sixad[529]: sixad-sixaxis[1439]: started
Dec 18 21:31:28 retro kernel: [ 192.673834] input: PLAYSTATION(R)3 Controller as /devices/virtual/input/input2
Dec 18 21:31:28 retro sixad-sixaxis[1439]: Connected 'PLAYSTATION(R)3 Controller (00:26:5C:00:70:9D)' [Battery 04]
Dec 18 21:31:28 retro sixad[529]: sixad-sixaxis[1439]: Connected 'PLAYSTATION(R)3 Controller (00:26:5C:00:70:9D)' [Battery 04]
Dec 18 21:36:18 retro sixad[529]: sixad-sixaxis[1439]: Bad Sixaxis buffer (out of battery?), disconnecting now...
Dec 18 21:36:18 retro sixad-sixaxis[1439]: Bad Sixaxis buffer (out of battery?), disconnecting now...
Dec 18 21:36:18 retro sixad-sixaxis[1439]: Disconnected "00:26:5C:00:70:9D"
Dec 18 21:36:18 retro sixad[529]: sixad-sixaxis[1439]: Disconnected "00:26:5C:00:70:9D"Non Working mupen64
Dec 18 21:52:00 retro kernel: [ 1424.367597] input: PLAYSTATION(R)3 Controller as /devices/virtual/input/input5
Dec 18 21:52:00 retro sixad[529]: sixad-sixaxis[4394]: Connected 'PLAYSTATION(R)3 Controller (00:26:5C:00:70:9D)' [Battery 04]
Dec 18 21:52:00 retro sixad-sixaxis[4394]: Connected 'PLAYSTATION(R)3 Controller (00:26:5C:00:70:9D)' [Battery 04]
Dec 18 21:52:02 retro rsyslogd-2007: action 'action 17' suspended, next retry is Mon Dec 18 21:52:32 2017 [try http://www.rsyslog.com/e/2007 ]
Dec 18 21:52:45 retro rsyslogd-2007: action 'action 17' suspended, next retry is Mon Dec 18 21:53:15 2017 [try http://www.rsyslog.com/e/2007 ]
Dec 18 21:57:33 retro sixad-sixaxis[4394]: Bad Sixaxis buffer (out of battery?), disconnecting now...
Dec 18 21:57:33 retro rsyslogd-2007: action 'action 17' suspended, next retry is Mon Dec 18 21:58:03 2017 [try http://www.rsyslog.com/e/2007 ]
Dec 18 21:57:33 retro sixad[529]: sixad-sixaxis[4394]: Bad Sixaxis buffer (out of battery?), disconnecting now...But never properly disconnected , tried ssh and stop sixad freeze the whole system ...
You must reboot rpi to reconnect controller , this bug is present for a long time but it has never been resolved, that's why for my installations mupen64 is unusable under retropie without a keyboard to reboot or ssh to restart system.
-
Finally, here's how I did to temporarily fix this bug.
edit or create /opt/retropie/runcommand-onstart.sh
add these lines
##reset bluetooth when launching mupen64,vice (fix controller cannot reconnect after get disconnected)
if [ "$1" == "c64" ] || [ "$1" == "n64" ] ; then
sudo hciconfig hci0 reset
fieach time you launch a N64 or c64 game, you must reconnect (simply press ps button) the controller when game is started.
now if controller get disconnected or out of battery , you can reconnect without issue.
it also work if during the game a second controller want to connect, it is now recognized.
hope this help
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.