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

8Bitdo NES30 Pro Bluetooth controllers not registering right analog left and right positions properly



  • Raspberry Pi 3 Model B
    2.5A Power Supply with USB 3 cable)
    RetroPie Version 4.4.8 (5dff90ef)
    Built From: 4.4 SD Image from retropie.org.uk
    USB Devices connected: flash drive for movie file watching on Kodi
    Controller used: 2 x 8Bitdo NES30 Pro Bluetooth controller
    Emulationstation version 2.8.1RP
    Error messages received: None (see below)

    I noticed this issue after the last two updates.
    I have two 8Bitdo NES30 Pro Bluetooth controllers, both are detected properly through the Bluetooth RetroPie-Setup Script and input configuration goes well in ES until the right analog stick left and right positions, I'm able to map right to +2 but left will not detect movement at all, same behavior for both controllers.
    Editing the mapping files for both Retroarch and ES has no effect.
    Happy to provide more details if this helps.


  • Global Moderator

    @GeekOB Thanks for opening a new topic. Can you try to see if the Left/Right joystick movements are registered by RetroPie ? Exit Emulationstation (leave just one Joystick connected), then type on the command line

    jstest /dev/input/js0
    

    It should print a map of your gamepad (buttons/joysticks) and you can press buttons/toggle joysticks to see if the action is registered.

    These controllers have multiple 'connect' modes (Android/PC/Switch, etc.) - did you choose a specific 'mode' to connect ?



  • @mitu Thanks for the quick reply:
    I obtained same results for both controllers:

    Axes:
    0: action registered (left stick, x axis)
    1: action registered (left stick, y axis)
    2: action registered (right stick, x axis)
    3: action registered (right stick, y axis)
    4: stuck at -32767, action registered and changed to 32767 when R2 button, identified as button 9 below, is pressed
    5: stuck at -32767, action registered and changed to 32767 when L2 button, identified as button 8 below, is pressed
    6: action registered (D-Pad)
    7: action registered (D-Pad)

    Buttons:
    0: action registered (A)
    1: action registered (B)
    2: action registered (on/off button)
    3: action registered (X)
    4: action registered (Y)
    5: none
    6: action registered (L1)
    7: action registered (R1)
    8: action registered (L2)
    9: action registered (R2)
    10: action registered (Select)
    11: action registered (Start)
    12: none
    13: action registered (Left Analog stick thumb push)
    14: action registered (Right Analog stick thumb push)
    15: none

    I didn't have to select any mode to connect.
    There were no buttons pressed for the tagged as none. So I guess the controllers are fully working :)


  • Global Moderator

    @GeekOB Seems that L2/R2 are registered as axis and not buttons ? That sounds like an Xbox compatible adapter. I'd try one of the following

    • install the xpad driver and see if you get anything different.
    • start the controller in Switch mode (Start + Y) and re-pair it via BT, then configure it in ES.


  • @mitu It is possible that they're being detected as "triggers"?
    would your suggestions work to fix the right analog stick issue? I'm actually interested in that, not the L2/R2 buttons :)
    Thanks!


  • Global Moderator

    @GeekOB Try the Switch mode for the connection.



  • @mitu Thanks for your guidance, I now realize what you meant by the modes. I had been using the Android mode since the beginning (press and hold the Power button). The Switch mode works perfectly fine, I was able to configure and map all buttons and axes, the controllers are now detected as "Pro Controller" instead of "8Bitdo NES30 Pro"
    My question is, Android mode used to work before, is it possible to make it work again? It's definitely better to not press a combination of keys every single time you want to turn on a controller.
    Thank you once again!


  • Global Moderator

    @GeekOB I think that depends on the firmware - the button mapping. AFAIK once you start the controller with one 'mode', subsequent starts will start in the same 'mode' as it was paired - so you don't have to start it with 'Start + Y' every time - give it a try.



  • I have the same problem at the OP, and switching the mode did fix it, but you have to start the controller each time in that mode.

    so to get it in pro controller mode you have to hold the power and y each time. just pushing the power will just power on the controller on android mode.

    i have both a FC30 PRO and a NES30 PRO and i have to do it to both. and i have firmware 4.10 on both

    stinks that something changed where android mode does not work now :(



  • I just wanted to chime in that I had the same problem with my N30 Pro 2 controller not registering the right analog stick pressing left in bluetooth mode, and that uninstalling and reinstalling the xpad driver fixed it. This was running it in D-Input mode.



  • @G30FF is your controller in android mode. i have tryed the reinstall xpad install and it did nothing. the only way i got my right stick to be seen was to have the controller boot into switch mode



  • @GeekOB Have you tried older versions of the firmware for the NES30 Pro?

    Here you can find all the releases for every 8bitdo controller that's been made from the official website. Not easy to find but it's there.



  • well after testing i cant my N30 Pro or FC30 pro to work once i update my Pi to version 4.4.9 and yes i have also gone up to version 4.4.11

    i have downloaded all the firmwares from what @Rion posted and nothing seems to work, and yes i have uninstalled and reinstalled xpad drivers

    so far nothing seems to work.

    posted issue on github


  • Global Moderator

    @ExarKunIv Can you try updating your Emulationstation package ? There was a recent update for the SDL libraries and since Emulationstation is technically at fault here, it might help to test with the new updated SDL2.

    EDIT: just to confirm, is your controller started in Dinput mode - otherwise I don't think the xpad driver would have any effect ?



  • @mitu I did update the Emulationstation package. No luck.

    I'm not sure I get what mode you are talking about. As far as I know it is just a default one. The one that is just with the power button. I'm not pressing any other buttons when I'm powering on the controller


  • Global Moderator

    @ExarKunIv OK, then let's debug this further.

    Exit Emulationstation, then from the terminal run

    emulationstation --debug
    

    Emulationstation should start in debug mode, and more messages are logged in it's log file. Run the input configuration again and map the buttons, then exit emulationstation.

    Save the following files:

    • /home/pi/.emulationstation/es_log.txt
    • /home/pi/.emulationstation/es_input.cfg
    • /opt/retropie/configs/all/retroarch-joypads/<controller-name.cfg

    Paste their output to pastebin.com so we can take a look and see how the input is managed by ES and the configuration file is generated.



  • @mitu thanks for getting back to me

    heres what you asked me to do

    es_log txt
    8bitdo FC30 Pro cfg
    es_input cfg


  • Global Moderator

    Looking at your controller mapping session, I see that RightAnalogLeft button is not mapped in Emulationstation

     Mapping [Axis 1-] -> LeftAnalogUp
    Mapping [Axis 1+] -> LeftAnalogDown
    Mapping [Axis 0-] -> LeftAnalogLeft
    Mapping [Axis 0+] -> LeftAnalogRight
    Mapping [Axis 3-] -> RightAnalogUp
    Mapping [Axis 3+] -> RightAnalogDown
    Mapping [Axis 2+] -> RightAnalogRight
    

    The 8Bitdo FC30 Pro.cfg file for RetroArch (that you posted) is obviously also missing that part:

    # Entries re-arranged for readability
    
    # Left joystick
    input_l_x_minus_axis = "-0"
    input_l_x_plus_axis = "+0"
    input_l_y_minus_axis = "-1"
    input_l_y_plus_axis = "+1"
    
    # Right Joystick
    input_r_x_plus_axis = "+2"
    input_r_y_minus_axis = "-3"
    input_r_y_plus_axis = "+3"
    

    Looking into a RetroArch auto-configuration file for a similar gamepad - see https://github.com/libretro/retroarch-joypad-autoconfig/blob/master/udev/8Bitdo_Pro_F30_BT.cfg -, I see that the joystick controls are similarly mapped, the only difference is the added input_r_x_minus_axis (i.e. the RightAnalogLeft missing from your mapping session in Emulationstation).

    So, are you sure you actually mapped the Right Joystick Left trigger in Emulationstation and you didn't accidentally skip it ? Does it not register at all in Emulationstation in the input configuration dialog ?



  • @mitu nope i have done it more times then i would like to say. each time it just will not see it. i have skipped it and gone back to it. it just does not see it

    but if i map it on a clean 4.4 load with out updating anything it will work like a champ.

    but if i put the controller into switch mode. which Emulationstation will see it as a pro controller. then it will work. but i will have to remember that i need to boot the controller in switch mode each time

    and i did use jstest and the 2 axes which it the right stick, left and right. it does show a number code as i move it about, both positive and negative


  • Global Moderator

    @ExarKunIv Can you download and install sdl-jstest and then repeat the controller testing ?



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.