Updated intructions
Starting with 1.2 we’ve refactored the autoconf system. From 1.2.2 onwards the process to configure and contribute autoconf files is as follows:
Useful tools:
These tools are useful in cases where you can’t navigate the gui (no touchscreen or no supported controllers available) Option 1, navigate the screen with a touchscreen or a mouse
- Load RetroArch
- Set your autoconf dir to some directory were you can read/write (if your device is rooted you can skip this step)
- Update autoconf profiles in case there is something new
- Navigate to Input Settings (use the touchscreen)
- Select User 1 default all
- Select User 1 bind all, bind anything that you don’t have to a single button
- Go back to the previous menu and select Input 1 User Binds and try to correct anything that might be mapped wrong, the GUI is a bit to sensitive, also clean up any binds for buttons you don’t have
- Go to input settings and select User 1 Save Autoconfig Then make sure to select User 1 default all so the manual bindings are cleared, restart and test, if everything went smoothly it should now detect your controller just fine
You’ll end up with a file like this:
input_vendor_id = 14368
input_product_id = 9
input_driver = "android"
input_device = "8Bitdo NES30 Pro"
input_b_btn = "97"
input_y_btn = "100"
input_select_btn = "109"
input_start_btn = "108"
input_up_btn = "h0up"
input_down_btn = "h0down"
input_left_btn = "h0left"
input_right_btn = "h0right"
input_a_btn = "96"
input_x_btn = "99"
input_l_btn = "102"
input_r_btn = "103"
input_l2_btn = "104"
input_r2_btn = "105"
input_l3_btn = "106"
input_r3_btn = "107"
input_l_x_plus_axis = "+0"
input_l_x_minus_axis = "-0"
input_l_y_plus_axis = "+1"
input_l_y_minus_axis = "-1"
input_r_x_plus_axis = "+2"
input_r_x_minus_axis = "-2"
input_r_y_plus_axis = "+3"
input_r_y_minus_axis = "-3"
Autoconf now works based on a score system, matching VID/PID adds 3 points, an exact name adds 2 points, and a partial name match adds 1 point so the more information the better. VID/PID won’t be saved unless you’re running commit 766b6b811ee678e847053f215be70c7c995717e3 or later.
Now the touch ups to the file if you want to submit the file
input_display_name = "NES30 Pro Controller"
Add this to add a friendly display name, cosmetic only, many devices just print “Virtual” or “Broadcom Bluetooth”, so this makes the osd message “better”
input_vendor_id = 14368
input_product_id = 9
Add these if they weren’t added to make sure the match is exact
input_b_btn_label = "B"
input_y_btn_label = "A"
input_select_btn_label = "SELECT"
input_start_btn_label = "START"
input_up_axis_label = "D-Pad Up"
input_down_axis_label = "D-Pad Down"
input_left_axis_label = "D-Pad Left"
input_right_axis_label = "D-Pad Right"
input_a_btn_label = "A"
input_x_btn_label = "X"
input_l_btn_label = "L"
input_r_btn_label = "R"
input_l2_btn_label = "L2"
input_r2_btn_label = "R2"
input_l3_btn_label = "L3"
input_r3_btn_label = "R3"
input_l_x_plus_axis_label = "Left Analog X+"
input_l_x_minus_axis_label = "Left Analog X-"
input_l_y_plus_axis_label = "Left Analog Y+"
input_l_y_minus_axis_label = "Left Analog Y-"
input_r_x_plus_axis_label = "Right Analog X+"
input_r_x_minus_axis_label = "Right Analog X-"
input_r_y_plus_axis_label = "Right Analog Y+"
input_r_y_minus_axis_label = "Right Analog Y-"
Add these to have friendly labels in the input binds, follow retropad button naming convention
That should be it, that file should work perfectly to hotplug your pads and you could contribute it to the autoconf repo I’ll try to streamline the process in the future and maybe even have a submit option… who knows
Option 2, use the external tools
-
Load USB host viewer and write down the VID/PID for your device, it should be something like this (if your controller is BT this might not be available):
-
Convert those digits with a calculator (Google will do, just type 0x0955 to decimal) and write them down in a text file:
input_vendor_id = 2389
input_product_id = 29187
-
Go to bluetooth settings and write down the name of the controller EXACTLY as it’s shown there
-
Add that to your cfg
input_vendor_id = 2389
input_product_id = 29187
input_device = "8Bitdo NES30 Pro"
Now use keytest to determine the keycodes for your controller, write them down and add them to the config file, sadly keytest doesn’t support analogs, but this should get you going at least:
input_vendor_id = 14368
input_product_id = 9
input_driver = "android"
input_device = "8Bitdo NES30 Pro"
input_b_btn = "97"
input_y_btn = "100"
input_select_btn = "109"
input_start_btn = "108"
input_up_btn = "h0up"
input_down_btn = "h0down"
input_left_btn = "h0left"
input_right_btn = "h0right"
input_a_btn = "96"
input_x_btn = "99"
input_l_btn = "102"
input_r_btn = "103"
input_l2_btn = "104"
input_r2_btn = "105"
input_l3_btn = "106"
input_r3_btn = "107"
input_l_x_plus_axis = "+0"
input_l_x_minus_axis = "-0"
input_l_y_plus_axis = "+1"
input_l_y_minus_axis = "-1"
input_r_x_plus_axis = "+2"
input_r_x_minus_axis = "-2"
input_r_y_plus_axis = "+3"
input_r_y_minus_axis = "-3"
Then save the cfg and push it to your device somehow, or push them to the repo and wait for the next nightly. If you want to push to the builtin location, you should write to /data/data/com.retroarch/autoconfig/android
Edit: From 4b234a onwards you should be able to get the VID/PID from the system information panel, this only shows once a pad is autoconfigured but it’s still useful to be able to touch up the config after creating it.