RetroPie forum home
    • Recent
    • Tags
    • Popular
    • Home
    • Docs
    • Register
    • Login
    Please do not post a support request without first reading and following the advice in https://retropie.org.uk/forum/topic/3/read-this-first

    NES30/FC30 Controller via Bluetooth in keyboard mode

    Scheduled Pinned Locked Moved Help and Support
    8 Posts 2 Posters 2.4k Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • N
      nbk
      last edited by nbk

      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:

      0_1470936307947_error.jpg

      1. 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

      N 1 Reply Last reply Reply Quote 0
      • N
        nbk @nbk
        last edited by 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?

        BuZzB 1 Reply Last reply Reply Quote 0
        • BuZzB
          BuZz administrators @nbk
          last edited by

          @nbk you could format your post and make it readable :) use markdown.

          To help us help you - please make sure you read the sticky topics before posting - https://retropie.org.uk/forum/topic/3/read-this-first

          1 Reply Last reply Reply Quote 0
          • N
            nbk
            last edited by

            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...

            BuZzB 1 Reply Last reply Reply Quote 0
            • BuZzB
              BuZz administrators @nbk
              last edited by

              @nbk I think I may have got a cached version or something. Looks good now :-)

              To help us help you - please make sure you read the sticky topics before posting - https://retropie.org.uk/forum/topic/3/read-this-first

              BuZzB 1 Reply Last reply Reply Quote 0
              • BuZzB
                BuZz administrators @BuZz
                last edited by

                I can't think of anything that changed in the code that would cause issue 2, but I can look into it.

                To help us help you - please make sure you read the sticky topics before posting - https://retropie.org.uk/forum/topic/3/read-this-first

                1 Reply Last reply Reply Quote 0
                • N
                  nbk
                  last edited by

                  That would be great BuZz. Thanks!

                  1 Reply Last reply Reply Quote 0
                  • N
                    nbk
                    last edited by

                    Hi BuZz. Were you able to check the issue already? Thanks in advance!

                    1 Reply Last reply Reply Quote 0
                    • First post
                      Last post

                    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.