Switch Joycon Config under Android

Now with the Android on Switch, when using the Joycons, it comes up as Unknown. They can still be used, but for some reason, the Core/App Closes out/Crashes when starting to use them.

Run RetroArch

Use Joycons - Message ‘Android Gamepad(1406/8198) Not Configured, using fallback’

Select Core and Game

When In-Game, attempt to use the Joycons…RA Crashes.

If you can run a Game (example MAME->mk.zip), none of the Buttons work.


Ever figure this out? Android on Switch entirely from SD card is amazing because it really opens up all the potential of the Switch without risk of getting banned by Nintendo for anything. But RetroArch, as far as I’m concerned, is a very important part of that potential (if not the most important). Without proper Joy-Con support, it’s just a massive shame.

I haven’t personally tried it yet, but I wonder if this is very specific to the Switch flavor of Android (LineageOS)? Have you tried pairing your Joy-Cons to any other Android device and testing RetroArch there?

1 Like

For anyone else stumbling upon this: I’ve got my JoyCons working with RetroArch in Android (LineageOS) on the Switch. (I haven’t tested this with JoyCons connected to Android on any other device.)

You’ll need to install the joycon fix via the built-in TWRP if you haven’t already (just like you would have done if you installed GApps or shieldifier). This was all in the official XDA thread for installing LineageOS on your Switch. You’ll also need to install Magisk the same way (or get yourself root access some other way).

Then you need to replace the existing autoconfig file for the JoyCon with a file that contains the following:

input_driver = "android"
input_device = "Nintendo JoyCons"
input_device_display_name = "Nintendo JoyCons"
input_vendor_id = "1406"
input_product_id = "8198"
input_b_btn = "97"
input_y_btn = "99"
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 = "100"
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"

input_b_btn_label = "B"
input_y_btn_label = "Y"
input_select_btn_label = "Minus"
input_start_btn_label = "Plus"
input_up_btn_label = "D-Pad Up"
input_down_btn_label = "D-Pad Down"
input_left_btn_label = "D-Pad Left"
input_right_btn_label = "D-Pad Right"
input_a_btn_label = "A"
input_x_btn_label = "X"
input_l_btn_label = "Left Bumper"
input_r_btn_label = "Right Bumper"
input_l2_axis_label = "Left Trigger"
input_r2_axis_label = "Right Trigger"
input_l3_btn_label = "Left Thumb"
input_r3_btn_label = "Right Thumb"
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-"

The file, by default, is found somewhere like /data/data/com.retroarch/autoconfigs/android. That’s why you need root access.

You’ll be able to use the analog sticks in the GUI, but they won’t work in games because despite the system seeing them as analog sticks, they are only sending digital data (8-point D-Pad) so RetroArch isn’t getting the actual data it needs from them to use them as analog sticks. It’s going to take someone making a new driver for Android for them to work as analog sticks, so keep checking in on the development over at XDA.

1 Like