NES30/FC30 Controller via Bluetooth in keyboard mode
-
Hi,
I have installed the current 4.0 RC1 Version on my Raspberry 3. The following issues also occurred with the previous Retropie versions and my old Raspberry 2:
There are two problems with these 8bitdo controllers in keyboard mode (START+B,START+B+R).
1.Keyboard Mode is broken since controller firmware V2.61 (V2.52 is still fine). In the bluetooth setting the device would be found but when connecting the following error occurrs:
- if I stick to the older firmware version 2.52 I can register my both controllers in Gamepad and Keyboard mode. Each device and mode would connect and gets its own MAC-Address so I would see 4 different MAC-Addresses after registration. So far so good. Unfortunately I can only automatically connect the 2 devices/modes I registered last. So switching between the keyboard and joystick mode is simply not possible. That surprises me because of the unique MAC Address for each mode it should be possible to connect in another mode as well. There must be something else that prevents it from connecting.
Also tried switching the firmware mapping hack option on and off (even though that shouldn't help here)
Any idea what could be the issue? point 1 is probably a 8bitdo related firmware bug but point 2 could probably be easly fixed within Retropie. Question would be how...
I guess nobody reported this issue yet because most of the users would stick to the gamepad connection (START+R). But switching between the modes is very important if you use emulators like vice as well that would only work with keyboard inputs.
Thanks in advance
nbk -
I would say the second point is not a controller issue but a bug/missing feature, because even if I clear the controller cache and try to reconnect the device with a different mode it wouldn't reconnect - even though the controller use a different MAC address for each mode.
In the older Retropie 2.x versions the controller modes could be switched and the device would reconnect via bluez tool. I wrote a small script that ran in the background. The reconnection after restart didn't always run as smooth as with the new background connect function in 4.0 because depending on the timing sometimes it reconnected only when the next cronjob would start (1min later) but most of the times the connection worked right away and it made the switching between the modes (Keyboard,Gamepad) possible:
#!/bin/bash #sleep 7 # enter your MAC-Addresses for each mode here: st_mac1="XX:XX:XX:XX:XX:XX" st_mac2="XX:XX:XX:XX:XX:XX" st_mac3="XX:XX:XX:XX:XX:XX" st_mac4="XX:XX:XX:XX:XX:XX" # extracting mac address from hcitool scan result=$(hcitool scan | grep -i '[0-9A-F]\{2\}\:[0-9A-F]\{2\}\:[0-9A-F]\{2\}\:[0-9A-F]\{2\}\:[0-9A-F]\{2\}\:[0-9A-F]\{2\}' | cut -d$'\t' -f2) # assigning 1 mac address per variable mac1=$(echo $result | cut -d$' ' -f1) mac2=$(echo $result | cut -d$' ' -f2) #first attempt keyboard mode | START+R(+B) | P1 if [ "$mac1" = $st_mac1 ] || [ "$mac2" = $st_mac1 ] then sudo bluez-test-input connect $st_mac1 fi if [ $? = 1 ] then sudo bluez-test-device remove $st_mac1 sudo bluez-simple-agent hci0 $st_mac1 sudo bluez-test-device trusted $st_mac1 sudo bluez-test-input connect $st_mac1 fi #second attempt keyboard mode | START+R(+B) | P1 if [ $? = 1 ] then sudo bluez-test-input connect $st_mac1 fi #first attempt joystick / keyboard mode | START | P2 if [ "$mac1" = $st_mac2 ] || [ "$mac2" = $st_mac2 ] then sudo bluez-test-input connect $st_mac2 fi if [ $? = 1 ] then sudo bluez-test-device remove $st_mac2 sudo bluez-simple-agent hci0 $st_mac2 sudo bluez-test-device trusted $st_mac2 sudo bluez-test-input connect $st_mac2 fi #second attempt joystick / keyboard mode | START | P2 if [ $? = 1 ] then sudo bluez-test-input connect $st_mac2 fi #first attempt PC-Joystick Mode | START+R | P1 if [ "$mac1" = $st_mac3 ] || [ "$mac2" = $st_mac3 ] then sudo bluez-test-input connect $st_mac3 fi if [ $? = 1 ] then sudo bluez-test-device remove $st_mac3 sudo bluez-simple-agent hci0 $st_mac3 sudo bluez-test-device trusted $st_mac3 sudo bluez-test-input connect $st_mac3 fi #second attempt PC-Joystick Mode | START+R | P1 if [ $? = 1 ] then sudo bluez-test-input connect $st_mac3 fi #third attempt PC-Joystick Mode | START+R | P1 if [ $? = 1 ] then sudo bluez-test-input connect $st_mac3 fi #first attempt PC-Joystick Mode | START+R | P2 if [ "$mac1" = $st_mac4 ] || [ "$mac2" = $st_mac4 ] then sudo bluez-test-input connect $st_mac4 fi if [ $? = 1 ] then sudo bluez-test-device remove $st_mac4 sudo bluez-simple-agent hci0 $st_mac4 sudo bluez-test-device trusted $st_mac4 sudo bluez-test-input connect $st_mac4 fi #second attempt PC-Joystick Mode | START+R | P2 if [ $? = 1 ] then sudo bluez-test-input connect $st_mac4 fi #third attempt PC-Joystick Mode | START+R | P2 if [ $? = 1 ] then sudo bluez-test-input connect $st_mac4 fi exit 0
Important detail in this script: it always removed the registered device before pairing and connecting it again. Otherwise it wouldn't work properly. Maybe that's the issue with the new connection script in the later versions?
Any ideas?
-
@nbk you could format your post and make it readable :) use markdown.
-
Hi Buzz,
right after posting it an hour ago I edited it and corrected it. Looks perfectly fine here now...checked it with Firefox and Chrome...
-
@nbk I think I may have got a cached version or something. Looks good now :-)
-
I can't think of anything that changed in the code that would cause issue 2, but I can look into it.
-
That would be great BuZz. Thanks!
-
Hi BuZz. Were you able to check the issue already? Thanks in advance!
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.