Open lucadellasantina opened 1 year ago
I have SN30 controllers as well and can replicate this issue. If we can provide any logs, just let us know
Can confirm issue is in v37 as well
troubleshooting included running through a manual pair/connect/trust and watching in bluetoothctl a disconnect/reconnect. Unit connects to BT just fine but doesn't appear available at all in evtest
The bug is a slight different with the original switch pro controller: the controller pairs correctly but after a few minutes of use it automatically shuts off and restart trying to reconnect but without ever reaching connection state.
During the failed attempts to reconnection, this is the output of bluetoothclt:
[root@BATOCERA /userdata/system]# bluetoothctl
Agent registered
[CHG] Device 28:CF:51:A5:62:6F Connected: no
[CHG] Device 28:CF:51:A5:62:6F Connected: yes
As if the bluetooth stack thinks the controller is reconnected, although the lights on the controller are still blinking and the none of the buttons operates emulationstation.
For this controller there is no need to re-pair. Rebooting batocera allows to reconnect the controller temporarily until the connection drops again after some minutes of use.
None of these issues exist when the same controllers are connected via USB cable, it consistently happens only when connected via bluetooth.
Is there a certain reason, why you want to use Switch Mode (Start + Y) instead of X-Input or D-Input mode?
For 8bitdo controllers,this enables data streaming from the gyroscope. For the switch pro controller, this is the only mode of bluetooth connectivity.
Any updates on this issue?
Any updates on this issue? x2
I'm on the latest beta of Batocera Beta v38 and it seems to be working better. There are still instances where it doesn't reconnect but most of the time it does. I'm using a cheap knockoff Switch controller.
same issue with 8Bitdo SN30 pro on the latest batocera beta, any help?
same issue with 8Bitdo SN30 pro on the latest batocera beta, any help?
which mode do you use? x-input, d-input or switch mode? and how long did you wait? i noticed on some of my 8bitdo controllers, that reconnecting via bluetooth after a re-/new start of my machine can take up to 20-30 seconds.
i was using x-input, but with d-input it works fine. layer 8 issue..... now i need to figure out how the hotkey is mapped start+select is not working
i was using x-input, but with d-input it works fine. layer 8 issue..... now i need to figure out how the hotkey is mapped start+select is not working
out-of-the-box the hotkey on 8bitdo controllers is either the star or the heart button. but you can always self define the hotkey to your liking by going into Controller Settings and do the button mapping.
works perfectly fine - thank you
works perfectly fine - thank you
Is this issue resolved?
I'm facing the same issue in v38 with an 8bitdo SN30 pro. As OP explained, X-input works fine for pretty much everything in batocera, but Switch input comes in handy when I want to play with motion controls (dolphin-emu/wii, for instance). Switch-input connection works fine after pairing, but the controller does not reconnect after shutting it off and on again, and I need to re-pair it to make it work.
I'll test later this week if the beta v39 resolves this.
I just tried in the latest beta build (x86_64 - 39-dev-c092931dfa 2024/01/11), the issue is still there in the exact same way: the controller pairs just fine in switch mode, works perfectly, but once it disconnects and you try to reconnect it, batocera/es does not recognize it anymore.
The led on the controller actually lights up, as if it were reconnected, but it is unresponsive in ES and there is no "controller connected" notification, so from ES's pov it's as if it wasn't there.
From that point on you have to re-start the pairing process to be able to use the controller in Switch input mode again. Essentially, you have to re-pair it every time.
Another detail: there are four led indicators on 8bitdo controllers, indicating the player # status (first led = player 1, first + second = player 2, etc to player 4). Every time the controller is paired again, it cycles through those different led/player status. Meaning:
As far as I can tell this behaviour (the whole issue) is exactly the same in stable v38 and in the beta build I tested.
I can confirm this behavior on the latest batocera dev build.
Hello, I have a similar problem with a Fake "switch Pro controller" , on Batocera 38 and "Bus 003 Device 004: ID 8087:0026 Intel Corp. AX201 Bluetooth". I have a computer with processeur Intel N100. My controller works at the first connection, but if the controller turn off, when I turn on it, the controller is detected and connected, but nothing works when I press the buttons.
However, sometimes the controller works: I need to turn off and turn on it several times, 3 or 6 times (it's random), and then button presses are well detected.
I noticed that when the Pro controller not works, on screen of Batocera, I can see "0%" next to the detected controller (in the top left corner), AND when it works I can see "100%".
I suspect a conflict with another module or there is a bug during new controller initialization ...
Does anyone have an idea how to fix this bug?
Update: I tested with the USB 8bitdo Adapter, I can pair it without issue, but if I turn off and turn of again , the controller can not longer reconnect. I tested on Windows or Mac OS, there is not problem. I think that my problem is probably a bug with the firmware of my controller at initialization time. (I use a VooFun controller)
New update: I tested Batocera 39 on another computer, and the problem still remains. Then I sniffed packet with hcidump, and I noticed that my controller send in loop this data "3F 00 00 08 00 80 00 80 00 80 00 80" My computer send in output some datas, but the controller doesn't catch them. If anyone is interested, I can send my dump file with the sniffed data.
Hi,
I have the same issue. Batocera 38.
Just bought a 8bitdo SN30 pro controler. Pairing is perfect and everything works great, but has to be re-done after every restart.
I only tried in switch mode for now. I'll try to confirm that it works in d-mode.
EDIT :
I confirm that it reconnects correctly in D-mode,and X-mode. X-mode seems not te be recognized by steam. D-mode i have issues with right joystick in yuzu i don't know why yet. Switch mode was working out of the box everywhere.
I also have the same symptom in switch mode, the light looks light it paired correctly, but no message in yuzu and of course no response to the inputs.
From that point on you have to re-start the pairing process to be able to use the controller in Switch input mode again. Essentially, you have to re-pair it every time.
Another detail: there are four led indicators on 8bitdo controllers, indicating the player # status (first led = player 1, first + second = player 2, etc to player 4). Every time the controller is paired again, it cycles through those different led/player status. Meaning:
- first pairing, only the first led is lit;
- second pairing, the two first leds are on;
- third pairing, 3 leds on
- fourth pairing, 4 leds on
- fifth pairing, back to only one led on.
Similar with EasySMX T39 controller. It cycles through different LEDs on Power cycle (blue,red,green,purple). Support told me those are different users. But i just need to restart Batocera in order to get it working. My guess is that Switch controllers change some information on reconnect which Linux thinks it is a different controller. When its not working, but controller thinks its connected, the controller symbol on top left shows 0%. But its not consistent, sometimes it doesnt connect at all. Sometimes i just need to powercycle a few times to get it back.
Bluetoothctl also shows multiple reconnects: Agent registered [CHG] Device 98:B6:E9:D2:C6:4A Connected: yes [CHG] Device 98:B6:E9:D2:C6:4A Connected: no [CHG] Device 98:B6:E9:D2:C6:4A Connected: yes [CHG] Device 98:B6:E9:D2:C6:4A Connected: no
bluetoothctl info shows: [CHG] Device 98:B6:E9:D2:C6:4A UUIDs: 00001124-0000-1000-8000-00805f9b34fb [CHG] Device 98:B6:E9:D2:C6:4A UUIDs: 00001200-0000-1000-8000-00805f9b34fb why there are 2 UUID? normal?
/var/log/messages: Feb 21 20:44:47 batocera kernel: [ 462.770638] input: Pro Controller (IMU) as /devices/pci0000:00/0000:00:14.0/usb1/1-9/1-9:1.0/bluetooth/hci0/hci0:21/0005:057E:2009.0005/input/input25 Feb 21 20:44:47 batocera kernel: [ 462.770786] input: Pro Controller as /devices/pci0000:00/0000:00:14.0/usb1/1-9/1-9:1.0/bluetooth/hci0/hci0:21/0005:057E:2009.0005/input/input24
after reboot: Feb 21 20:47:01 batocera kernel: [ 65.026542] input: Pro Controller (IMU) as /devices/pci0000:00/0000:00:14.0/usb1/1-9/1-9:1.0/bluetooth/hci0/hci0:21/0005:057E:2009.0004/input/input23 Feb 21 20:47:01 batocera kernel: [ 65.026595] input: Pro Controller as /devices/pci0000:00/0000:00:14.0/usb1/1-9/1-9:1.0/bluetooth/hci0/hci0:21/0005:057E:2009.0004/input/input22
note the different inputxx name and also different bluetooth address
somebody was testing if the controller works on different Linux? It could be possible that bluez is the problem, which is a very problematic module. https://bbs.archlinux.org/viewtopic.php?id=284149
Edit: On same PC i started Linux Mint Mate actual version. Gamepad can be tested with gamepad-tester.com. I had some initial problems on pairing but it works now and i also can switch off/on the controller without problems. The LED on the controller will also not change. However i cannot test the restart behaviour because its a Live USB system. bluetoothd -v shows bluez 5.64 here. Batocera seems to have 5.68 that may also explain why i read it was working on older Batocera 32. Also have impression that the controller stays on Mint a much longer time than on Batocera. Are there energy saving settings too aggressive?
hey, i can also confirm the problem
batocera v39 beta BT-adapter: rtl8821ce third party switch pro controller from amazon x64 system with N100 booting from nvme over usb
I pair the controller and it workes fine, until is goes into sleeping mode or i turn it off. After turning it on again, it connects but doesnt work anymore. After restarting the system it works again until the controller turns off again. The same controller works fine with same PC (Setup Retrobat on Windows 11), rpi 5 with newest Batocera beta, RK3588 (Radxa) with RTL8852BE and Adroid 12
I'm glad I found this, as I was starting to think I was going crazy with the controller consistently stopping working after each play session. I can confirm that this issue persists on V39, with both of my 8BitDo SN30 Pro controllers running the latest firmware, V2.04.
i have this issue with the 8bitdo micro controller
So grateful for this thread, I was going crazy today trying to fix this. on v38, happening to me with SN30 pro in Y+input mode. Controller works fine though in X+input mode.
/usr/bin/btmgmt ssp off
fixes the reconnect issue for me... I have not figured out how to automate this on boot yet... And it's not a full fix by itself.. because having ssp off prevents pairing new controllers until you turn it back on.
Hi All, I too am having this issue of my gamepad not reconnecting after first use. I don't have an 8BitDo gamepad but my reconnect issues were so similar to this thread... I decided to reply on this issue. I am running Batocera [v39] on a x86_64 mini PC. I have a PS4 Dual Shock gamepad (unbranded clone bought off Amazon).
After doing a ton of reading and trying things, it seems the bluetooth driver feature "Secure Simple Pairing" is somehow conflicting/preventing my gamepad's ability to reconnect and staying connected...
Here is what I did that is reproducible and consistent for all 3 of my gamepads (all different brands but same PS4 style clone gamepads)
/usr/bin/btmgmt ssp off
/usr/bin/btmgmt ssp on
(yes back on) before you can pair a new gamepad.I have tried adding this command into the /userdata/system/custom.sh
file. The btmgmt command in the custom.sh file seems to have no effect. Gamepads don't reconnect unless I SSH back in and run the command manually.
I am guessing it's a timing issue, maybe bluetooth has not been loaded yet when the custom.sh
script runs so that is why it has no effect? hmmmm but the /userdata/system/custom.sh
does run last according to the docs... I will try adding a bunch of "sleep" commands or "waiting for bluetoothd PID" type stuff next...
I am also not ruling out the fact that I may not be setting up custom.sh
properly but it is a simple #!/bin/bash script and the docs even say things like this:
"Be aware that the script will be executed independently of the executable (x) attribute being set to the script file or not!"
https://wiki.batocera.org/launch_a_script?s[]=custom&s[]=sh#customlast_during_startup_first_after_shutdown
Okay so my custom.sh
script WAS running but it was instantly crashing on the /usr/bin/btmgmt ssp off
command and exiting. I tried looking for logs or piping the output into a file but no luck, this command works when SSH'ed in but not when run from the custom.sh
file... hmmmm
So I then thought to try using the "bluetoothctl" command to do it which is /usr/bin/bluetoothctl mgmt.ssp off
and it worked...! Not sure what the difference was on why this command works vs why the btmgmt command did not... but hey it's working! So now my custom.sh
script does not crash or exit early and my controllers can right away wake up and connect to Batocera after a reboot. So cool.
(Again this is not a permanent fix, just discussing more about this quirk and what I am noticing, still hoping someone else can try to turn of their bluetooth SSP and see if it fixes their reconnect gamepad issue.)
@spiffyguy Thanks for your suggestion, but this method seems to only work for DS4 controllers. It does not work for me with 8bitdo SN30Pro+ controllers. I have paired one controller with my notebook (arch with kernel 6.9) and the behavior is the same. In switch mode this controller pairs and works but after a disconnect or reboot it has to be removed and re-paired to work again. In the other modes it works as expected.
@AndyX90, thanks for letting me know. Dang...! I thought this would help. The issue listed seems so close to what I experienced with the DS4 controllers.
I need to get an 8Bitdo controller so I can mess around with things. I am new to Batocera but I have been enjoying setting things up and seeing what works! I found this SSR conflict through trial and error and pouring over the logs.... Now with the fix I discovered here, my controllers pair easily now every time. (Side note: I ended up making a service, in /userdata/system/services/
that is enabled by default, but I can disable it if I want to pair a new controller.)
Anyways, sorry my idea didn't pan out for your controllers. The "oddity" perhaps on the BlueZ driver still stands I think though... I mean... I know SSR is a good thing and introduced with Bluetooth 2.1... but what I don't understand why turning it off/on changes anything related to already paired devices... right? I mean if it's a method to help "pair" then it should only be on if you are actively searching to pair/trust a NEW bluetooth device/gamepad/controller... hmmmm
Maybe there is another bluetooth spec/feature related to pairing that should be turned off if you are NOT pairing... some other feature like SSR that turning off could help reconnect trusted/paired devices (and by extension turn on / be "Active" if you are scanning for new bluetooth devices.)
I will try to get an 8bitdo controller soon and see if I can find something that helps. No promises on timeline but I would love to find out why this issue exists. It's just.... odd.
I have this issue as well with the switch pro controller. As far as I know, this is also an issue on windows and from a steam forum I found, it seems the issue involves bluetooth 5.0 as many found the problem to go away when they downgraded to a bluetooth 4.0 dongle.
@Rolen28 I have just tested with a bluetooth 4.0 usb dongle and the issue is the same as with the onboard bluetooth 5.x. At least with 8Bitdo SN30Pro+ in switch mode.
Hi, just before disabling notifications on this topic in case that could be of interest for anyone : i sent back my sn30pro+ controler to amazon befor it was too late (it's a pity i really liked it) and my workaround since then is using the 8bitdo ultimate with the beta firmware that allows it to work in switch mode through 2.4 RF.
It works well (with motion and all), and there's no bluetooth-specific issues. Only issue i have left is when the controller goes to sleep. but that's another topic.
Still a problem in V39 Using the info spiffyguy provided I've been able to permantly pair multiple game pads. Thank you!
imho it looks like the system is having a problem re-authenticating the SN30pro after restarting. It just gets stuck in a loop.
anyway here is my custom.sh
#!/bin/bash
# Code here will be executed on every boot and shutdown.
# Fix for SN30pro 8BitDo reconnect after restart or shutdown.
# Set 'mgmt.ssp on' to add additional BT controllers.
# Location: /userdata/system/custom.sh
/usr/bin/bluetoothctl mgmt.ssp off
EDIT: So I had to come back to this because this stopped working. To be clear I was using the #2Dongle to connect, but Dongle was sometimes recognized as a 360 gamepad. Eventually, I gave up using the dongle and sucessfully and permantely connected the SN30pro to the RasPi 02 BluTooth directly. No problems. Connected immediately and without issue.
Adding another voice to the chorus. If anyone needs exact details about my setup let me know, but at this point it seems superfluous. Hope this can get fixed for v40, or at least eventually.
Here are my summarized findings:
My controllers are 8bitdo SN30 Pro + but as far as i read in other posts, it should also affect the newer Pro 2. The problem refers to the use of the switch mode (usage with enabled motion controls).
Environment: Controllers: 3 x 8Bitdo SN30 Pro + OS Version: Batocera 39 Bluetooth-Version: 5.2
Description: You can pair the controller in switch mode and use it like every other controller. After a connection loss (ie. through power off the controller or a system shutdown/reboot) it cannot be used anymore. If you power on the controller after a disconnect it shows as connected (on the led bar) but the system does not recognize it anymore, no input is possible.
The only way to use the controller again is to delete it and re-pair it after every reboot/disconnect.
Attempted solutions
Notes: The problem does not only occur on batocera but also on other linux distros (i tested on arch-linux with bluez 1.76 and the problem is the same).
We have to differenciate between 8bitdo controllers and other 3rd party ones where above solutions seem to work.
Conclusion For me it seems that the problem we are facing can't be solved on batoceras side. I think it has to be solved on the bluez side or with an updated firmware from 8bitdo.
i also have the 8bitdo sn30 pro, and my problem is very similar. when i go into an emulation with it and switch controller for playing wii for example, it is loosing the connection after some time and turning off. when i turn it on again it connects but i cant press any keys. when i reconnect the controller in the main menu, the controller usually connects and works, also after second, third time etc... some other bluetooth devices that i have also are working even in an emulation... weird things are going on with these
when i go into an emulation with it and switch controller for playing wii for example, it is loosing the connection after some time and turning off
What exactly do you mean by that? You start a Wii game with the 8bitdo pad, but then use a Wiimote to play (so the 8bitdo pad stays on, but is not used)?
If so, then: 8bitdo pads switch off automatically after a certain period of non-use. This is completely normal and is because it is programmed into the 8bitdo firmware. Other controllers, such as Sony PS3 controllers (DualShock/Sixaxis) behave differently. They stay on until either the system is switched off (i.e. the Bluetooth connection is interrupted) or the controller's battery is empty. These are behaviors that are embedded in the controller firmware and over which batocera has no control. If you want the 8bitdo pad not to switch itself off after a certain period of non-use, you have to contact 8bitdo and ask for a firmware for this pad where this (automatic switch-off after a certain period of non-use) does not happen. However, I suspect that 8bitdo will not do this as they see this behavior as a useful feature (it prevents the battery from running down).
There is also this problem, which may still be involved here, which affects Wii (dolphin), PS2 (pcsx2) and possibly other emulators, and which unfortunately cannot be fixed (the issues have therefore already been closed): https://github.com/batocera-linux/batocera.linux/issues/9847 https://github.com/batocera-linux/batocera.linux/issues/9091
ah ok, so i will add a ps4 controller someday to my collection :) the other bluetooth devices that i mean are a BT-remote control and a BT-Keyboard with touchpad. These devices work flawlessly. I can start dolphin for example, and then switch on the keyboad (via on/off switch) and it is working. I am not a bluetooth expert, but i think the sn30 pro have some trouble with reaching its mapping somehow while in emulation? because the led on it says, that it is connecting to the hardware...
@spiffyguy @erexx23 & @AndyX90 thanks so much for your work on this!
I've used a number of generic PS4 Controllers over the years that won't reconnect after reboot. The model I most often use is the P4-Plus T28 on v38. I've seen where some identical looking controllers will and some won't, assuming there is a revision or firmware version in play. I use BlueZ PS3 Bluetooth driver and confirmed that the /usr/bin/btmgmt ssp off
command does allow them to reconnect after reboot.
Going to setup the custom.sh method above to fix on reboot, but wanted to ask: Is there someway to add the /usr/bin/btmgmt ssp on
command to the beginning of the batocera Bluetooth script for automatically detecting bluetooth controllers? I suppose it would need to turn it back off as well at the end, but if that is a user editable script this would result in a pretty clean fix for most of these issues.
Also apologies if this is a thread highjack, maybe we should pull this out into a separate issue? [v38][v39] Bluetooth Controllers (Multiple) can't reconnect after first use
I tried adding /usr/bin/btmgmt ssp off
& /usr/bin/bluetoothctl mgmt.ssp off
is my /system/custom.sh file, but neither seems to have any affect. If I try to run /usr/bin/bluetoothctl mgmt.ssp off
from the console, I get:
[root@BATOCERA /userdata/system]# /usr/bin/bluetoothctl mgmt.ssp off
Invalid command in menu main: mgmt
Use "help" for a list of available commands in a menu.
Use "menu <submenu>" if you want to enter any submenu.
Use "back" if you want to return to menu main.
Adding that v40 still has this same issue, I was hopeful the Bluez update would resolve. I've also found the new T50 model (looks pretty similar to T28) Generic P4 Controller has the same problem. I never got the custom.sh workaround to work for me either.
Happy to do some testing if anyone is looking at solving this...
v40 still has this same issue
Can you please in detail describe this issue? Which 8bitdo pad models do you use exactly? Firmware up to date? And most important question: Which mode do you use? Switch, D-Input or X-Input?
Apologies, I'm not using an 8bitdo, see my other posts above for more details. I was observing generic china made P4 controllers (T28, T50 models) have this same issue where they won't reconnect after a system reboot but running the /usr/bin/btmgmt ssp off
command lets them reconnect same as the 8bitdo controllers.
I discovered T39 controller has also wireless xbox mode (x+home button). The controller will not loose connection when batocera is running but on reboot the controller has to be removed and added again. Still think the problem was introduced after bluez 5.64.
Batocera 40 was upgraded from bluez 5.68 to 5.76: /usr/libexec/bluetooth]# bluetoothctl -v bluetoothctl: 5.76
see also bluez related issues: https://github.com/bluez/bluez/issues/673 https://github.com/bluez/bluez/issues/824
I am experiencing a strange bug limited only to 8bitdo (SN30 pro and similar) bluetooth controllers connected in switch mode (pressing Start+Y on the controller before pairing):
After the first pairing, calibration and use, the following time the controller is reconnected, emulationstation does not respond anymore to any button pressed on the controller. The same happens but inconsistently using the original pro controller.
To replicate the bug: 1) Turn on the SN30 pro controller in switch mode using Start+Y 2) Pair the controller in batocera using automatic bluetooth device pairing 3) Configure button mapping and navigate emulationstation to confirm all is working 4) Shut off the controller or restart batocera 5) Reconnect the controller in switch mode using Start+Y 6) Emulationstation does not respond anymore to buttons being pressed.
The only solution at this point is forgetting the bluetooth device and re-pairing it for another one-time use. The same controller works perfectly when connected using Xinput mode (Start+X). I am running batocera stable v36 and the controllers are updated with the latest 8itDo firmware.
Please let me know if there are any logs I can provide to identify this bug.
Thank you.