From 04a65c36b3a71d9b0298b4f4edfe7c7467d044b0 Mon Sep 17 00:00:00 2001 From: David Hedlund Date: Tue, 6 Aug 2024 12:00:14 +0200 Subject: [PATCH 01/20] Update controller-autoconfiguration.md Updated "Default-off configs" section: Removed example controller after re-evaluation. --- docs/guides/controller-autoconfiguration.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/guides/controller-autoconfiguration.md b/docs/guides/controller-autoconfiguration.md index 3ad89844aa..e494aaada1 100644 --- a/docs/guides/controller-autoconfiguration.md +++ b/docs/guides/controller-autoconfiguration.md @@ -153,7 +153,7 @@ If you are happy with your profile, you can submit it to RetroArch so that other When developing controller configurations, it's essential to anticipate and mitigate potential conflicts. These issues often arise in the following situations: 1. When multiple autoconfig files exist for a single device, causing confusion in the system. This primarily occurs with controllers that require different configurations based on kernel versions. For example, the Nintendo Switch Pro Controller on Linux, where older kernels necessitate a different button mapping compared to newer kernels. -2. With unlicensed controllers that mimic the vendor ID and product ID of official controllers but require their own specific autoconfig because they only partially emulate the original device's mappings. For example, the Data Frog P02 mimics a PlayStation 4 controller's vendor ID and product ID, but features a different input_menu_toggle_btn value, necessitating a unique configuration. +2. With poorly constructed unlicensed controllers. Even a single mismatched button can break compatibility, necessitating custom configuration. Here's how to set up a default-off configuration: From 14d0a60aa7da89aecf9c042dc25e191d23ed4d5f Mon Sep 17 00:00:00 2001 From: David Hedlund Date: Tue, 6 Aug 2024 12:15:12 +0200 Subject: [PATCH 02/20] Update controller-autoconfiguration.md Emphasizes the importance of creating new entries for "input_l2_axis" and "input_r2_axis" instead of altering existing "input_l2_btn" and "input_r2_btn" settings --- docs/guides/controller-autoconfiguration.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/guides/controller-autoconfiguration.md b/docs/guides/controller-autoconfiguration.md index e494aaada1..61fa834375 100644 --- a/docs/guides/controller-autoconfiguration.md +++ b/docs/guides/controller-autoconfiguration.md @@ -123,6 +123,8 @@ input_l2_axis = "+2" input_r2_axis = "+5" ``` +**Note:** When modifying the config file, ensure you add new lines for "input_l2_axis" and "input_r2_axis" rather than changing existing "input_l2_btn" or "input_r2_btn" entries. The "_axis" suffix is crucial for proper analog functionality. + This manual configuration allows the analog triggers to work properly until the bug in RetroArch's control mapping UI is fixed. ### Inspect the file @@ -305,7 +307,7 @@ input_l2_axis = "+2" input_r2_axis = "+5" ``` -Note: These variable values are examples and should not be directly copied to your configuration file. +Note: A common mistake These variable values are examples and should not be directly copied to your configuration file. ###### Label variables The term "Analog" is included in the variable values for the analog inputs to clearly indicate that these inputs are analog in nature. From 037cd8aec6ef616ecdad0ea23b3c7b2c116f3f33 Mon Sep 17 00:00:00 2001 From: David Hedlund Date: Tue, 6 Aug 2024 12:35:56 +0200 Subject: [PATCH 03/20] Update controller-autoconfiguration.md 1. **Variable Replacement:** - Replace `input_l2_btn` with `input_l2_axis` - Replace `input_r2_btn` with `input_r2_axis` 2. **Suffix Importance:** The `_axis` suffix is essential for ensuring proper analog functionality. Simply changing values without updating the suffix from `_btn` to `_axis` will not achieve the desired result. 3. **Common Pitfall:** Users often unintentionally incorporate analog variable values without properly adjusting the existing variable names to reflect their analog nature. This oversight frequently results in configuration problems within the system. --- docs/guides/controller-autoconfiguration.md | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/docs/guides/controller-autoconfiguration.md b/docs/guides/controller-autoconfiguration.md index 61fa834375..2464b66fe3 100644 --- a/docs/guides/controller-autoconfiguration.md +++ b/docs/guides/controller-autoconfiguration.md @@ -123,9 +123,16 @@ input_l2_axis = "+2" input_r2_axis = "+5" ``` -**Note:** When modifying the config file, ensure you add new lines for "input_l2_axis" and "input_r2_axis" rather than changing existing "input_l2_btn" or "input_r2_btn" entries. The "_axis" suffix is crucial for proper analog functionality. - -This manual configuration allows the analog triggers to work properly until the bug in RetroArch's control mapping UI is fixed. +When modifying your autoconfig file for analog triggers, it's crucial to pay attention to both variable names and values. A common oversight is focusing solely on the values while neglecting to update the variable names themselves. + +1. **Variable Replacement:** + - Replace `input_l2_btn` with `input_l2_axis` + - Replace `input_r2_btn` with `input_r2_axis` +2. **Suffix Importance:** + The `_axis` suffix is essential for ensuring proper analog functionality. Simply changing values without updating the suffix from `_btn` to `_axis` will not achieve the desired result. +3. **Common Pitfall:** Users often unintentionally incorporate analog variable values without properly adjusting the existing variable names to reflect their analog nature. This oversight frequently results in configuration problems within the system. +By carefully updating both the variable names and values, you can ensure that your analog triggers are correctly configured for optimal performance. + ### Inspect the file From 8308e42ef1beaf27eaa57defa6d36fac54ba301e Mon Sep 17 00:00:00 2001 From: David Hedlund Date: Wed, 7 Aug 2024 12:29:27 +0200 Subject: [PATCH 04/20] Update controller-autoconfiguration.md Mention analog labels in the "Manual analog L2/R2 remapping" section --- docs/guides/controller-autoconfiguration.md | 37 +++++++++++++++------ 1 file changed, 26 insertions(+), 11 deletions(-) diff --git a/docs/guides/controller-autoconfiguration.md b/docs/guides/controller-autoconfiguration.md index 2464b66fe3..e49adbe403 100644 --- a/docs/guides/controller-autoconfiguration.md +++ b/docs/guides/controller-autoconfiguration.md @@ -102,7 +102,7 @@ If your joypad is not recognized by RetroArch even after updating the profiles, 7. The new profile file (also known as the autoconfig file) will be saved to your disk: [Controller profile directory]/[Controller driver]/[Device index].cfg. 8. For analog L2/R2 triggers (pressure-sensitive triggers) you must manually edit the autoconfig file (see the [Analog L2/R2 remapping](#analog-l2r2-remapping) section) due to a bug in RetroArch. -### Analog L2/R2 remapping +### Manual analog L2/R2 remapping RetroArch has a bug([ref1](https://github.com/libretro/RetroArch/issues/6920), [ref2](https://github.com/libretro/RetroArch/issues/16767)) that causes analog L2/R2 triggers to be incorrectly mapped as digital buttons instead of analog axes when configuring controls through the UI. This affects pressure-sensitive triggers on controllers like PlayStation 2 and later, making some games unplayable due to the lack of analog input. To work around this issue, you need to manually edit the RetroArch config file to set the correct analog axis mappings for L2 and R2. Here's how to find the proper axis values: @@ -114,25 +114,40 @@ To work around this issue, you need to manually edit the RetroArch config file t * In the autoconfig file, set: ``` input_l2_axis = "+X" (where X is the L2 axis number) -input_r2_axis = "+Y" (where Y is the R2 axis number) +input_r2_axis = "+Y" (where Y is the R2 axis number) + +input_l2_axis_label = "L2 Analog" +input_r2_axis_label = "R2 Analog" +``` + +For [example](https://github.com/libretro/retroarch-joypad-autoconfig/pull/1135), if L2 is axis 2 and R2 is axis 5, you would: + +Replace: ``` +input_l2_btn = "6" +input_r2_btn = "7" + +input_l2_btn_label = "L2" +input_r2_btn_label = "R2" -For [example](https://github.com/libretro/retroarch-joypad-autoconfig/pull/1135), if L2 is axis 2 and R2 is axis 5, you would set: +``` + +With ``` input_l2_axis = "+2" input_r2_axis = "+5" + +input_l2_axis_label = "L2 Analog" +input_r2_axis_label = "R2 Analog" ``` -When modifying your autoconfig file for analog triggers, it's crucial to pay attention to both variable names and values. A common oversight is focusing solely on the values while neglecting to update the variable names themselves. +Note: These variable values are examples and should not be directly copied to your configuration file. -1. **Variable Replacement:** - - Replace `input_l2_btn` with `input_l2_axis` - - Replace `input_r2_btn` with `input_r2_axis` -2. **Suffix Importance:** - The `_axis` suffix is essential for ensuring proper analog functionality. Simply changing values without updating the suffix from `_btn` to `_axis` will not achieve the desired result. -3. **Common Pitfall:** Users often unintentionally incorporate analog variable values without properly adjusting the existing variable names to reflect their analog nature. This oversight frequently results in configuration problems within the system. -By carefully updating both the variable names and values, you can ensure that your analog triggers are correctly configured for optimal performance. +When modifying your autoconfig file for analog triggers, it's crucial to pay attention to both variable names and values. A common oversight is focusing solely on the values while neglecting to update the variable names themselves. The `_axis` suffix is essential for ensuring proper analog functionality. Simply changing values without updating the suffix from `_btn` to `_axis` will not achieve the desired result. +####Common Pitfall +Users often unintentionally incorporate analog variable values without properly adjusting the existing variable names to reflect their analog nature. This oversight frequently results in configuration problems within the system. +By carefully updating both the variable names and values, you can ensure that your analog triggers are correctly configured for optimal performance. ### Inspect the file From 3031bada52723695f35972f47cabd251884451ef Mon Sep 17 00:00:00 2001 From: David Hedlund Date: Thu, 8 Aug 2024 19:38:22 +0200 Subject: [PATCH 05/20] Update controller-autoconfiguration.md linuxraw is specifically an input driver option within RetroArch, and not a standalone component used by other software like sdl2, or udev. --- docs/guides/controller-autoconfiguration.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/guides/controller-autoconfiguration.md b/docs/guides/controller-autoconfiguration.md index e49adbe403..2ba453d28c 100644 --- a/docs/guides/controller-autoconfiguration.md +++ b/docs/guides/controller-autoconfiguration.md @@ -13,7 +13,7 @@ The matching algorithm considers several key factors: RetroArch evaluates each of these factors against its database of controller profiles. It then calculates a matching score for each profile, with the highest-scoring profile being selected to configure the controller. -RetroArch automatically utilizes the linuxraw driver, which operates differently than other drivers by providing only a device name instead of Vendor ID (VID) and Product ID (PID) information. This means that controller matching with the linuxraw driver depends primarily on the device name (Device Index), accessed through the JSIOCGNAME ioctl command, rather than the typical vid:pid identifiers. +linuxraw is specifically an input driver option within RetroArch, and not a standalone component used by other software like sdl2, or udev. However, linuxraw which operates differently than other drivers by providing only a device name instead of Vendor ID (VID) and Product ID (PID) information. This means that controller matching with the linuxraw driver depends primarily on the device name (Device Index), accessed through the JSIOCGNAME ioctl command, rather than the typical vid:pid identifiers. It's worth noting that the Vendor ID and Product ID pair is often abbreviated as "vid:pid" in technical discussions. From 34d4c93a203e98741d70fb6fdd204fc54457757f Mon Sep 17 00:00:00 2001 From: David Hedlund Date: Sat, 10 Aug 2024 16:48:10 +0200 Subject: [PATCH 06/20] Update controller-autoconfiguration.md linuxraw depends on multiple Device Indexes --- docs/guides/controller-autoconfiguration.md | 44 +++++++-------------- 1 file changed, 15 insertions(+), 29 deletions(-) diff --git a/docs/guides/controller-autoconfiguration.md b/docs/guides/controller-autoconfiguration.md index 2ba453d28c..c4c0048641 100644 --- a/docs/guides/controller-autoconfiguration.md +++ b/docs/guides/controller-autoconfiguration.md @@ -216,41 +216,27 @@ This dual functionality ensures that RetroArch can correctly identify and apply Importantly, this name remains consistent across various controller drivers, such as udev, sdl2, and linuxraw, as specified in **Settings > Drivers > Controller**. -#### Variability of the Device Index +### linuxraw depends on multiple Device Indexes -The Device Index may change depending on the version of the system, particularly the Linux kernel version. To ensure compatibility, we utilize the most recent Device Index that is supported by the system. +The linuxraw controller driver relies on the `input_device` variable in the autoconfig file generated by the Device Index (described below) and does not use the `input_vendor_id` or `input_product_id` variables in the autoconfig file. -#### Example: Nintendo Switch Pro Controller on GNU/Linux +The Device Index may vary depending on the system version, particularly the Linux kernel version. To ensure compatibility, you must compare the Device Index across different Linux kernels and generate autoconfig files when they differ. The easiest way to do this is to run GNU/Linux distributions in live mode or as installed virtual machines. -The following table illustrates how the Device Index for the Nintendo Switch Pro Controller varies across different Linux kernel versions, along with its HID support and corresponding autoconfig file names. As a side-note, the notation "(default-off)" indicates that the configuration is disabled by default to avoid +#### Example: Nintendo Switch Pro Controller -| Linux Kernel Version | Device Index in RetroArch | Nintendo Switch Pro Controller HID Support | Selected Device Index for the autoconfiguration file | -|----------------------|-------------------------------------------|-------------------------------------------|----------------------------------------------| -| 5.15 | Pro Controller | No | Pro Controller | -| 5.19 | Nintendo Switch Pro Controller | Yes | | -| 6.2.0 | Nintendo Switch Pro Controller | Yes | | -| 6.8.0 | Nintendo Co., Ltd. Pro Controller | Yes | Nintendo Co.,Ltd. Pro Controller | +| Linux Kernel Version | HID Support | Device Index in RetroArch | +|----------------------|-------------|-----------------------------------| +| 5.15 | No | Pro Controller | +| 5.19 | Yes | Nintendo Switch Pro Controller | +| 6.2.0 | Yes | Nintendo Switch Pro Controller | +| 6.8.0 | Yes | Nintendo Co., Ltd. Pro Controller | -##### Configuration file examples +In the above list, three unique Device Index entries are identified, which require these autoconfig files for the controller to be identified for linuxraw: +- `Pro Controller.cfg` with variable: `input_device = "Pro Controller"` +- `Nintendo Switch Pro Controller.cfg` with variable: `input_device = "Nintendo Switch Pro Controller"` +- `Nintendo Co., Ltd. Pro Controller.cfg` with variable: `input_device = "Nintendo Co., Ltd. Pro Controller"` -###### Pro Controller (default-off).cfg -``` -# This file uses the legacy Device Index "Pro Controller" (generated by RetroArch on Linux 5.15) -# "(default-off)" was added to the file name to indicate that the autoconfig file is not active by default. See comments for input_vendor_id and input_product_id. -input_device = "Pro Controller" -# Due to the uncommon nature of this device, the autoconfig file is not active by default. This precaution is taken to avoid potential conflicts with the widely-used Nintendo Switch Pro Controller (nintendo-hid version) file. Button layouts are not compatible. To activate this configuration: -# 1) Comment out the input_vendor_id and input_product_id lines in the "Nintendo Co.,Ltd. Pro Controller.cfg" file. -# 2) Uncomment the input_vendor_id and input_product_id lines below: -# input_vendor_id = "1406" -# input_product_id = "8201" -``` - -###### Nintendo Co.,Ltd. Pro Controller.cfg -``` -input_device = "Nintendo Co.,Ltd. Pro Controller" -input_vendor_id = "1406" -input_product_id = "8201" -``` +*Note: The rest of the file should be a copy of the previous entry, `Nintendo Switch Pro Controller.cfg`, since both have HID support.* ## Troubleshooting If your joypad is not configured properly, you should [generate a RetroArch log](/docs/guides/generating-retroarch-logs.md). Your log will show if a profile has been matched for your pad and the path of the corresponding profile. From 1f8de5b3bcc12c134952a1d67efb0929206fcb8b Mon Sep 17 00:00:00 2001 From: David Hedlund Date: Sat, 10 Aug 2024 20:12:14 +0200 Subject: [PATCH 07/20] Update controller-autoconfiguration.md - Comment above input_device: `# "Nintendo Co., Ltd. Pro Controller.cfg", and "Nintendo Switch Pro Controller.cfg", are copies except for the `input_device` variable value, which is modified to ensure the `linuxraw` driver can detect the controller across various Linux kernel versions.` --- docs/guides/controller-autoconfiguration.md | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/docs/guides/controller-autoconfiguration.md b/docs/guides/controller-autoconfiguration.md index c4c0048641..79112a0e36 100644 --- a/docs/guides/controller-autoconfiguration.md +++ b/docs/guides/controller-autoconfiguration.md @@ -232,11 +232,17 @@ The Device Index may vary depending on the system version, particularly the Linu | 6.8.0 | Yes | Nintendo Co., Ltd. Pro Controller | In the above list, three unique Device Index entries are identified, which require these autoconfig files for the controller to be identified for linuxraw: -- `Pro Controller.cfg` with variable: `input_device = "Pro Controller"` -- `Nintendo Switch Pro Controller.cfg` with variable: `input_device = "Nintendo Switch Pro Controller"` -- `Nintendo Co., Ltd. Pro Controller.cfg` with variable: `input_device = "Nintendo Co., Ltd. Pro Controller"` - -*Note: The rest of the file should be a copy of the previous entry, `Nintendo Switch Pro Controller.cfg`, since both have HID support.* +- **Pro Controller.cfg**: + - Variable: `input_device = "Pro Controller"` + +- **Nintendo Switch Pro Controller.cfg**: + - Comment above input_device: `# "Nintendo Co., Ltd. Pro Controller.cfg", and "Nintendo Switch Pro Controller.cfg", are copies except for the `input_device` variable value, which is modified to ensure the `linuxraw` driver can detect the controller across various Linux kernel versions.` + - Variable: `input_device = "Nintendo Switch Pro Controller"` + +- **Nintendo Co., Ltd. Pro Controller.cfg**: + - Comment above input_device: `# "Nintendo Co., Ltd. Pro Controller.cfg", and "Nintendo Switch Pro Controller.cfg", are copies except for the `input_device` variable value, which is modified to ensure the `linuxraw` driver can detect the controller across various Linux kernel versions.` + - Variable: `input_device = "Nintendo Co., Ltd. Pro Controller"` + - The rest of the file should be a copy of the previous entry, `Nintendo Switch Pro Controller.cfg`, since both have HID support. ## Troubleshooting If your joypad is not configured properly, you should [generate a RetroArch log](/docs/guides/generating-retroarch-logs.md). Your log will show if a profile has been matched for your pad and the path of the corresponding profile. From 7f51eb3dc16a58f4f20cf05b16ba6049e00ab1b5 Mon Sep 17 00:00:00 2001 From: David Hedlund Date: Sat, 10 Aug 2024 20:12:55 +0200 Subject: [PATCH 08/20] Update controller-autoconfiguration.md minor --- docs/guides/controller-autoconfiguration.md | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/guides/controller-autoconfiguration.md b/docs/guides/controller-autoconfiguration.md index 79112a0e36..545e204df8 100644 --- a/docs/guides/controller-autoconfiguration.md +++ b/docs/guides/controller-autoconfiguration.md @@ -242,7 +242,6 @@ In the above list, three unique Device Index entries are identified, which requi - **Nintendo Co., Ltd. Pro Controller.cfg**: - Comment above input_device: `# "Nintendo Co., Ltd. Pro Controller.cfg", and "Nintendo Switch Pro Controller.cfg", are copies except for the `input_device` variable value, which is modified to ensure the `linuxraw` driver can detect the controller across various Linux kernel versions.` - Variable: `input_device = "Nintendo Co., Ltd. Pro Controller"` - - The rest of the file should be a copy of the previous entry, `Nintendo Switch Pro Controller.cfg`, since both have HID support. ## Troubleshooting If your joypad is not configured properly, you should [generate a RetroArch log](/docs/guides/generating-retroarch-logs.md). Your log will show if a profile has been matched for your pad and the path of the corresponding profile. From 28ced3d9e2aa19d5fe34c77fcf21b929350bc7f7 Mon Sep 17 00:00:00 2001 From: David Hedlund Date: Sat, 10 Aug 2024 20:17:25 +0200 Subject: [PATCH 09/20] Update controller-autoconfiguration.md minor --- docs/guides/controller-autoconfiguration.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/docs/guides/controller-autoconfiguration.md b/docs/guides/controller-autoconfiguration.md index 545e204df8..a2d31db89a 100644 --- a/docs/guides/controller-autoconfiguration.md +++ b/docs/guides/controller-autoconfiguration.md @@ -236,13 +236,15 @@ In the above list, three unique Device Index entries are identified, which requi - Variable: `input_device = "Pro Controller"` - **Nintendo Switch Pro Controller.cfg**: - - Comment above input_device: `# "Nintendo Co., Ltd. Pro Controller.cfg", and "Nintendo Switch Pro Controller.cfg", are copies except for the `input_device` variable value, which is modified to ensure the `linuxraw` driver can detect the controller across various Linux kernel versions.` + - Comment above input_device: [1] - Variable: `input_device = "Nintendo Switch Pro Controller"` - **Nintendo Co., Ltd. Pro Controller.cfg**: - - Comment above input_device: `# "Nintendo Co., Ltd. Pro Controller.cfg", and "Nintendo Switch Pro Controller.cfg", are copies except for the `input_device` variable value, which is modified to ensure the `linuxraw` driver can detect the controller across various Linux kernel versions.` + - Comment above input_device: [1] - Variable: `input_device = "Nintendo Co., Ltd. Pro Controller"` +1: `# The files "Nintendo Co., Ltd. Pro Controller.cfg" and "Nintendo Switch Pro Controller.cfg" are the same except for the input_devicevariable. This difference allows thelinuxraw driver to recognize the controller on various Linux kernel versions. If you modify this file, wait for the PR to be approved, then update this file too to ensure they function identically.` + ## Troubleshooting If your joypad is not configured properly, you should [generate a RetroArch log](/docs/guides/generating-retroarch-logs.md). Your log will show if a profile has been matched for your pad and the path of the corresponding profile. From 0e38bcfa36b328b6bed4db25a60fcbc0de0fd13d Mon Sep 17 00:00:00 2001 From: David Hedlund Date: Sat, 10 Aug 2024 20:24:06 +0200 Subject: [PATCH 10/20] Update controller-autoconfiguration.md Naming scheme for udev, and sdl2 --- docs/guides/controller-autoconfiguration.md | 36 ++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/docs/guides/controller-autoconfiguration.md b/docs/guides/controller-autoconfiguration.md index a2d31db89a..976e8b86d3 100644 --- a/docs/guides/controller-autoconfiguration.md +++ b/docs/guides/controller-autoconfiguration.md @@ -216,7 +216,41 @@ This dual functionality ensures that RetroArch can correctly identify and apply Importantly, this name remains consistent across various controller drivers, such as udev, sdl2, and linuxraw, as specified in **Settings > Drivers > Controller**. -### linuxraw depends on multiple Device Indexes +### Naming scheme for udev, and sdl2 + +#### Example: Nintendo Switch Pro Controller on GNU/Linux + +The following table illustrates how the Device Index for the Nintendo Switch Pro Controller varies across different Linux kernel versions, along with its HID support and corresponding autoconfig file names. As a side-note, the notation "(default-off)" indicates that the configuration is disabled by default to avoid + +| Linux Kernel Version | Device Index in RetroArch | Nintendo Switch Pro Controller HID Support | Selected Device Index for the autoconfiguration file | +|----------------------|-------------------------------------------|-------------------------------------------|----------------------------------------------| +| 5.15 | Pro Controller | No | Pro Controller | +| 5.19 | Nintendo Switch Pro Controller | Yes | | +| 6.2.0 | Nintendo Switch Pro Controller | Yes | | +| 6.8.0 | Nintendo Co., Ltd. Pro Controller | Yes | Nintendo Co.,Ltd. Pro Controller | + +##### Configuration file examples + +###### Pro Controller (default-off).cfg +``` +# This file uses the legacy Device Index "Pro Controller" (generated by RetroArch on Linux 5.15) +# "(default-off)" was added to the file name to indicate that the autoconfig file is not active by default. See comments for input_vendor_id and input_product_id. +input_device = "Pro Controller" +# Due to the uncommon nature of this device, the autoconfig file is not active by default. This precaution is taken to avoid potential conflicts with the widely-used Nintendo Switch Pro Controller (nintendo-hid version) file. Button layouts are not compatible. To activate this configuration: +# 1) Comment out the input_vendor_id and input_product_id lines in the "Nintendo Co.,Ltd. Pro Controller.cfg" file. +# 2) Uncomment the input_vendor_id and input_product_id lines below: +# input_vendor_id = "1406" +# input_product_id = "8201" +``` + +###### Nintendo Co.,Ltd. Pro Controller.cfg +``` +input_device = "Nintendo Co.,Ltd. Pro Controller" +input_vendor_id = "1406" +input_product_id = "8201" +``` + +### Naming scheme for linuxraw (depends on multiple Device Indexes) The linuxraw controller driver relies on the `input_device` variable in the autoconfig file generated by the Device Index (described below) and does not use the `input_vendor_id` or `input_product_id` variables in the autoconfig file. From bb3ad423f850b6839ab84268419338d2b41f5c7e Mon Sep 17 00:00:00 2001 From: David Hedlund Date: Sat, 10 Aug 2024 20:28:45 +0200 Subject: [PATCH 11/20] Update controller-autoconfiguration.md minor --- docs/guides/controller-autoconfiguration.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/guides/controller-autoconfiguration.md b/docs/guides/controller-autoconfiguration.md index 976e8b86d3..fac69e767f 100644 --- a/docs/guides/controller-autoconfiguration.md +++ b/docs/guides/controller-autoconfiguration.md @@ -277,7 +277,7 @@ In the above list, three unique Device Index entries are identified, which requi - Comment above input_device: [1] - Variable: `input_device = "Nintendo Co., Ltd. Pro Controller"` -1: `# The files "Nintendo Co., Ltd. Pro Controller.cfg" and "Nintendo Switch Pro Controller.cfg" are the same except for the input_devicevariable. This difference allows thelinuxraw driver to recognize the controller on various Linux kernel versions. If you modify this file, wait for the PR to be approved, then update this file too to ensure they function identically.` +1: `# The files "Nintendo Co., Ltd. Pro Controller.cfg" and "Nintendo Switch Pro Controller.cfg" should have identical content except for the input_devicevariable. This difference allows thelinuxraw driver to recognize the controller on various Linux kernel versions.` ## Troubleshooting If your joypad is not configured properly, you should [generate a RetroArch log](/docs/guides/generating-retroarch-logs.md). Your log will show if a profile has been matched for your pad and the path of the corresponding profile. From 868b599df50101e9c9f44819350db61a5c3c3d6d Mon Sep 17 00:00:00 2001 From: David Hedlund Date: Sat, 10 Aug 2024 20:29:35 +0200 Subject: [PATCH 12/20] Update controller-autoconfiguration.md minor --- docs/guides/controller-autoconfiguration.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/guides/controller-autoconfiguration.md b/docs/guides/controller-autoconfiguration.md index fac69e767f..417ffa4fbc 100644 --- a/docs/guides/controller-autoconfiguration.md +++ b/docs/guides/controller-autoconfiguration.md @@ -277,7 +277,7 @@ In the above list, three unique Device Index entries are identified, which requi - Comment above input_device: [1] - Variable: `input_device = "Nintendo Co., Ltd. Pro Controller"` -1: `# The files "Nintendo Co., Ltd. Pro Controller.cfg" and "Nintendo Switch Pro Controller.cfg" should have identical content except for the input_devicevariable. This difference allows thelinuxraw driver to recognize the controller on various Linux kernel versions.` +1: `# The files "Nintendo Co., Ltd. Pro Controller.cfg" and "Nintendo Switch Pro Controller.cfg" should have identical content except for the input_device variable. This difference allows thelinuxraw driver to recognize the controller on various Linux kernel versions.` ## Troubleshooting If your joypad is not configured properly, you should [generate a RetroArch log](/docs/guides/generating-retroarch-logs.md). Your log will show if a profile has been matched for your pad and the path of the corresponding profile. From 83efd614ad3b0c82f0b644b39df50a019f0f4956 Mon Sep 17 00:00:00 2001 From: David Hedlund Date: Mon, 12 Aug 2024 18:50:42 +0200 Subject: [PATCH 13/20] Update controller-autoconfiguration.md - **Modification Restrictions:** Existing autoconfig files cannot be altered. Non-HID files (with "(default-off)" in their names) are disabled by default and require uncommenting of `input_vendor_id` and `input_product_id`. Conversely, these IDs must be commented in HID files. --- docs/guides/controller-autoconfiguration.md | 37 ++++++++++++--------- 1 file changed, 21 insertions(+), 16 deletions(-) diff --git a/docs/guides/controller-autoconfiguration.md b/docs/guides/controller-autoconfiguration.md index 417ffa4fbc..c25dbdb969 100644 --- a/docs/guides/controller-autoconfiguration.md +++ b/docs/guides/controller-autoconfiguration.md @@ -45,26 +45,31 @@ Having automatically configured joypads makes it a lot easier to navigate the Re Make sure that you run the latest version of RetroArch, to generate a file name and file content via `Settings` -> `Input` -> `RetroPad Binds` -> `Port 1 Controls` -> `Save Controller Profile` that is up to date with our current policies. -## Change the Controller Profiles Directory to make it accessible for non-root users -Both Flatpak and Android versions require adjusting the Controller Profiles Directory for essential functionality and proper operation. +## Modify the Controller Profiles Directory for Non-Root User Accessibility -### Android configuration +Both the Flatpak and Android versions of RetroArch need adjustments to the Controller Profiles Directory to ensure essential functionality and smooth operation. -#### Challenge -Most Android devices aren't rooted, and RetroArch's default autoconfig directory requires root access. This leads to two problems: -* Users can't save custom profiles through `Settings -> Input -> RetroPad Binds -> Port 1 Controls -> Save Controller Profile`. -* Restricted File Access: Users can update controller profiles through `Main Menu -> Online Updater -> Update Controller Profiles`. However, they cannot read these files stored in /data/user/0/com.retroarch/autoconfig. Unlike GNU/Linux systems, Android's security model is designed to prevent non-root users from reading certain files or gaining root access. This limitation makes it impossible for users to compare the updated profiles with their custom-generated controller files, significantly impeding effective profile management and customization. +**Challenges for Android and Flatpak:** +- Users are unable to save custom profiles through the path: `Settings -> Input -> RetroPad Binds -> Port 1 Controls -> Save Controller Profile`. -#### Resolution -- Create the directory `/storage/emulated/0/RetroArch/autoconfig/android` -- In RetroArch, navigate to `Settings` -> `Directory` -> `Controller Profiles` from the default value `/data/user/0/com.retroarch/autoconfig` (root) to `/storage/emulated/0/RetroArch/autoconfig`. The `Settings` -> `Input` -> `RetroPad Binds` -> `Port 1 Controls` -> `Save Controller Profile` step above will now save the Android autoconfig files in `/storage/emulated/0/RetroArch/autoconfig/android` +### Android Configuration -### Flatpak configuration - -#### Challenge -The default autoconfig directory in Flatpak RetroArch requires root access, preventing users from: -* Downloading and extracting profiles via `Main Menu` -> `Online Updater` -> `Update Controller Profiles`. -* Saving custom profiles through `Settings -> Input -> RetroPad Binds -> Port 1 Controls -> Save Controller Profile`. +**Challenge:** +Most Android devices are not rooted, and RetroArch's default autoconfig directory requires root access, leading to the following issues: +- **Restricted File Access:** Users can update controller profiles via `Main Menu -> Online Updater -> Update Controller Profiles`, but cannot access these files in `/data/user/0/com.retroarch/autoconfig`. Android's security model prevents non-root users from reading certain files, making it difficult to compare updated profiles with custom-generated ones, thus hindering effective profile management and customization. +- **Modification Restrictions:** Existing autoconfig files cannot be altered. Non-HID files (with "(default-off)" in their names) are disabled by default and require uncommenting of `input_vendor_id` and `input_product_id`. Conversely, these IDs must be commented in HID files. + +**Resolution:** +- Create the directory `/storage/emulated/0/RetroArch/autoconfig/android`. +- In RetroArch, change the directory path under `Settings` -> `Directory` -> `Controller Profiles` from `/data/user/0/com.retroarch/autoconfig` (root) to `/storage/emulated/0/RetroArch/autoconfig`. This adjustment allows the autoconfig files to be saved in `/storage/emulated/0/RetroArch/autoconfig/android` when using `Settings` -> `Input` -> `RetroPad Binds` -> `Port 1 Controls` -> `Save Controller Profile`. + +### Flatpak Configuration + +**Challenge:** +The default autoconfig directory in Flatpak RetroArch also requires root access, which prevents users from: +- Downloading and extracting profiles through `Main Menu` -> `Online Updater` -> `Update Controller Profiles`. +- Saving custom profiles via `Settings -> Input -> RetroPad Binds -> Port 1 Controls -> Save Controller Profile`. +- Facing similar issues as Android users if the GNU/Linux user lacks root access, as existing autoconfig files cannot be modified when necessary (refer to the Android section for more details). #### Resolution To address this issue, configure RetroArch as follows: From 87cd60f64488e3f203760ac19f8dc994d11b199f Mon Sep 17 00:00:00 2001 From: David Hedlund Date: Mon, 12 Aug 2024 19:10:02 +0200 Subject: [PATCH 14/20] Update controller-autoconfiguration.md - Modification Restrictions: You are not allowed to change existing autoconfig files. Files that are initially disabled have "(default-off)" in their names. Without root access, you cannot modify these files to toggle the input_vendor_id and input_product_id settings. This restriction applies to both the "(default-off)" files and the "original" autoconfig files, which are more widely used and have been set to be enabled by default. These original files must also be commented to make changes. This limitation affects both HID and non-HID files, as well as controllers with multiple autoconfig files, such as the Sony DualSense controller, which includes several Android autoconfig files. --- docs/guides/controller-autoconfiguration.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/docs/guides/controller-autoconfiguration.md b/docs/guides/controller-autoconfiguration.md index c25dbdb969..32f5308298 100644 --- a/docs/guides/controller-autoconfiguration.md +++ b/docs/guides/controller-autoconfiguration.md @@ -51,13 +51,14 @@ Both the Flatpak and Android versions of RetroArch need adjustments to the Contr **Challenges for Android and Flatpak:** - Users are unable to save custom profiles through the path: `Settings -> Input -> RetroPad Binds -> Port 1 Controls -> Save Controller Profile`. +- Modification Restrictions: You are not allowed to change existing autoconfig files. Files that are initially disabled have "(default-off)" in their names. Without root access, you cannot modify these files to toggle the input_vendor_id and input_product_id settings. This restriction applies to both the "(default-off)" files and the "original" autoconfig files, which are more widely used and have been set to be enabled by default. These original files must also be commented to make changes. This limitation affects both HID and non-HID files, as well as controllers with multiple autoconfig files, such as the Sony DualSense controller, which includes several Android autoconfig files. ### Android Configuration **Challenge:** Most Android devices are not rooted, and RetroArch's default autoconfig directory requires root access, leading to the following issues: -- **Restricted File Access:** Users can update controller profiles via `Main Menu -> Online Updater -> Update Controller Profiles`, but cannot access these files in `/data/user/0/com.retroarch/autoconfig`. Android's security model prevents non-root users from reading certain files, making it difficult to compare updated profiles with custom-generated ones, thus hindering effective profile management and customization. -- **Modification Restrictions:** Existing autoconfig files cannot be altered. Non-HID files (with "(default-off)" in their names) are disabled by default and require uncommenting of `input_vendor_id` and `input_product_id`. Conversely, these IDs must be commented in HID files. +- Restricted File Access: Users can update controller profiles via `Main Menu -> Online Updater -> Update Controller Profiles`, but cannot access these files in `/data/user/0/com.retroarch/autoconfig`. Android's security model prevents non-root users from reading certain files, making it difficult to compare updated profiles with custom-generated ones, thus hindering effective profile management and customization. +- Modification Restrictions: Existing autoconfig files cannot be modified when necessary (refer to the base section for more details). **Resolution:** - Create the directory `/storage/emulated/0/RetroArch/autoconfig/android`. @@ -69,7 +70,7 @@ Most Android devices are not rooted, and RetroArch's default autoconfig director The default autoconfig directory in Flatpak RetroArch also requires root access, which prevents users from: - Downloading and extracting profiles through `Main Menu` -> `Online Updater` -> `Update Controller Profiles`. - Saving custom profiles via `Settings -> Input -> RetroPad Binds -> Port 1 Controls -> Save Controller Profile`. -- Facing similar issues as Android users if the GNU/Linux user lacks root access, as existing autoconfig files cannot be modified when necessary (refer to the Android section for more details). +- Modification Restrictions: Facing similar issues as Android users if the GNU/Linux user lacks root access, as existing autoconfig files cannot be modified when necessary (refer to the base section for more details). #### Resolution To address this issue, configure RetroArch as follows: From 086e6ca893815fadc6faae8f8cf938c183194d88 Mon Sep 17 00:00:00 2001 From: David Hedlund Date: Tue, 13 Aug 2024 16:43:58 +0200 Subject: [PATCH 15/20] Update controller-autoconfiguration.md Added an "Addressing controller navigation issues on non-touchscreen devices" section for Android --- docs/guides/controller-autoconfiguration.md | 54 ++++++++++++++++++++- 1 file changed, 53 insertions(+), 1 deletion(-) diff --git a/docs/guides/controller-autoconfiguration.md b/docs/guides/controller-autoconfiguration.md index 32f5308298..b5ac09150c 100644 --- a/docs/guides/controller-autoconfiguration.md +++ b/docs/guides/controller-autoconfiguration.md @@ -62,7 +62,59 @@ Most Android devices are not rooted, and RetroArch's default autoconfig director **Resolution:** - Create the directory `/storage/emulated/0/RetroArch/autoconfig/android`. -- In RetroArch, change the directory path under `Settings` -> `Directory` -> `Controller Profiles` from `/data/user/0/com.retroarch/autoconfig` (root) to `/storage/emulated/0/RetroArch/autoconfig`. This adjustment allows the autoconfig files to be saved in `/storage/emulated/0/RetroArch/autoconfig/android` when using `Settings` -> `Input` -> `RetroPad Binds` -> `Port 1 Controls` -> `Save Controller Profile`. +- In RetroArch, change the directory path under `Settings` -> `Directory` -> `Controller Profiles` from `/data/user/0/com.retroarch/autoconfig` (root) to `/storage/emulated/0/RetroArch/autoconfig`. +- This adjustment allows the autoconfig files to be saved in `/storage/emulated/0/RetroArch/autoconfig/android` when using `Settings` -> `Input` -> `RetroPad Binds` -> `Port 1 Controls` -> `Save Controller Profile`. + +#### Addressing controller navigation issues on non-touchscreen devices + +If your controller lacks an existing autoconfig or fallback configuration, or if the autoconfig is only partially functional—missing settings for the DPAD and "OK" button—you won't be able to use the controller to navigate to `Settings -> Input -> RetroPad Binds -> Port 1 Controls` and select `Set All Controls` and `Save Controller Profile`. This isn't an issue for typical Android devices like smartphones and tablets, as you can still navigate using the touchscreen. However, in Google TV (an Android-based OS used by Chromecast), where a touchscreen isn't available, this becomes problematic. Additionally, Chromecast's voice remote control lacks an autoconfig and is incompatible with RetroArch navigation. Even if your controller has a touchpad, it is ineffective because the touchpad button doesn't work (PS4/PS5 controllers tested), and the cursor remains invisible due to a [bug](https://github.com/libretro/RetroArch/issues/16853). + +**Proposed Solution:** + +To resolve this issue, follow these steps: + +- **Create a Custom Configuration File:** + - Create the file `retroarch.cfg` in the directory `/storage/emulated/0/Android/com.retroarch/files/retroarch.cfg` with the following line: + ``` + joypad_autoconfig_dir = /storage/emulated/0/RetroArch/autoconfig/ + ``` + +- **Set Up a Fallback Configuration:** + - Create a file named `fallback.cfg` in the directory `/storage/emulated/0/RetroArch/autoconfig/android/` with the following configuration settings: +``` +input_b_btn = "96" +input_y_btn = "97" +input_select_btn = "98" +input_start_btn = "99" +input_up_btn = "h0up" +input_down_btn = "h0down" +input_left_btn = "h0left" +input_right_btn = "h0right" +input_a_btn = "100" +input_x_btn = "101" +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" +``` + +- **Launch RetroArch:** + - Start the RetroArch application. + +- **Button Testing:** + - Test the controller buttons to identify which ones correspond to the "OK" and "Back" functions. This will allow you to navigate and temporarily reconfigure RetroArch. + +By applying this solution, you allow your controller to configure RetroArch, enabling navigation to Settings -> Input -> RetroPad Binds -> Port 1 Controls and the selection of Set All Controls and Save Controller Profile. This setup also permits the saving of autoconfig files in the directory /storage/emulated/0/RetroArch/autoconfig/android. ### Flatpak Configuration From cdaa649c89fd5e1ed621d1a050d1d5d7a32d8caa Mon Sep 17 00:00:00 2001 From: David Hedlund Date: Tue, 13 Aug 2024 17:05:57 +0200 Subject: [PATCH 16/20] Update controller-autoconfiguration.md * **Back**: Needed to return to `Main Menu -> Quit` after configuring `Settings -> Directory -> Controller Profiles`, ensuring the settings are saved to retroarch.cfg. --- docs/guides/controller-autoconfiguration.md | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/docs/guides/controller-autoconfiguration.md b/docs/guides/controller-autoconfiguration.md index b5ac09150c..e3b75c99d5 100644 --- a/docs/guides/controller-autoconfiguration.md +++ b/docs/guides/controller-autoconfiguration.md @@ -66,8 +66,13 @@ Most Android devices are not rooted, and RetroArch's default autoconfig director - This adjustment allows the autoconfig files to be saved in `/storage/emulated/0/RetroArch/autoconfig/android` when using `Settings` -> `Input` -> `RetroPad Binds` -> `Port 1 Controls` -> `Save Controller Profile`. #### Addressing controller navigation issues on non-touchscreen devices +If your controller lacks an existing autoconfiguration or if the fallback configuration is ineffective, you may encounter issues with the following components: -If your controller lacks an existing autoconfig or fallback configuration, or if the autoconfig is only partially functional—missing settings for the DPAD and "OK" button—you won't be able to use the controller to navigate to `Settings -> Input -> RetroPad Binds -> Port 1 Controls` and select `Set All Controls` and `Save Controller Profile`. This isn't an issue for typical Android devices like smartphones and tablets, as you can still navigate using the touchscreen. However, in Google TV (an Android-based OS used by Chromecast), where a touchscreen isn't available, this becomes problematic. Additionally, Chromecast's voice remote control lacks an autoconfig and is incompatible with RetroArch navigation. Even if your controller has a touchpad, it is ineffective because the touchpad button doesn't work (PS4/PS5 controllers tested), and the cursor remains invisible due to a [bug](https://github.com/libretro/RetroArch/issues/16853). +* **DPAD**: Essential for navigating menus. +* **OK**: Necessary for applying settings, such as navigating to `Settings -> Input -> RetroPad Binds -> Port 1 Controls`, and selecting `Set All Controls` and `Save Controller Profile`. +* **Back**: Needed to return to `Main Menu -> Quit` after configuring `Settings -> Directory -> Controller Profiles`, ensuring the settings are saved to retroarch.cfg. + +While these issues are not problematic for typical Android devices like smartphones and tablets, which offer touchscreen navigation, they become significant on Google TV (an Android-based OS used by Chromecast) where a touchscreen is unavailable. Additionally, Chromecast's voice remote control lacks autoconfiguration and is incompatible with RetroArch navigation. Even controllers with touchpads are ineffective, as the touchpad button does not function (as observed with PS4/PS5 controllers), and the cursor remains invisible due to a known [bug](https://github.com/libretro/RetroArch/issues/16853). **Proposed Solution:** @@ -80,8 +85,13 @@ To resolve this issue, follow these steps: ``` - **Set Up a Fallback Configuration:** - - Create a file named `fallback.cfg` in the directory `/storage/emulated/0/RetroArch/autoconfig/android/` with the following configuration settings: + - Find the Product ID and Vendor ID of your controller + - Create a file named `fallback.cfg` in the directory `/storage/emulated/0/RetroArch/autoconfig/android/` with the following configuration settings (don't forget to replace `input_vendor_id = "[XXXX]"` and `input_product_id = "[YYYY]"` with the values of your controller: ``` +input_driver = "android" +input_device = "Fallback device" +input_vendor_id = "[XXXX]" +input_product_id = "[YYYY]" input_b_btn = "96" input_y_btn = "97" input_select_btn = "98" From 805bddec3d73d8aedb901ef8ebdec359aeb0cd81 Mon Sep 17 00:00:00 2001 From: David Hedlund Date: Tue, 13 Aug 2024 17:17:42 +0200 Subject: [PATCH 17/20] Update controller-autoconfiguration.md - Identify the Product ID and Vendor ID of your controller: Ensure that the directory /storage/emulated/0/RetroArch/autoconfig/ remains empty, then restart RetroArch. This action will compel RetroArch to enter fallback mode, displaying a message like "[Controller name] ([Vendor ID]/[Product ID]) not configured, using fallback". Record the four-digit numbers for both IDs. --- docs/guides/controller-autoconfiguration.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/guides/controller-autoconfiguration.md b/docs/guides/controller-autoconfiguration.md index e3b75c99d5..2823681978 100644 --- a/docs/guides/controller-autoconfiguration.md +++ b/docs/guides/controller-autoconfiguration.md @@ -85,13 +85,13 @@ To resolve this issue, follow these steps: ``` - **Set Up a Fallback Configuration:** - - Find the Product ID and Vendor ID of your controller - - Create a file named `fallback.cfg` in the directory `/storage/emulated/0/RetroArch/autoconfig/android/` with the following configuration settings (don't forget to replace `input_vendor_id = "[XXXX]"` and `input_product_id = "[YYYY]"` with the values of your controller: + - Identify the Product ID and Vendor ID of your controller: Ensure that the directory /storage/emulated/0/RetroArch/autoconfig/ remains empty, then restart RetroArch. This action will compel RetroArch to enter fallback mode, displaying a message like "[Controller name] ([Vendor ID]/[Product ID]) not configured, using fallback". Record the four-digit numbers for both IDs. + - Create a file named `fallback.cfg` in the directory `/storage/emulated/0/RetroArch/autoconfig/android/` with the following configuration settings (don't forget to replace `input_vendor_id = "[Vendor ID]"` and `input_product_id = "[Product ID]"` with the values of your controller: ``` input_driver = "android" input_device = "Fallback device" -input_vendor_id = "[XXXX]" -input_product_id = "[YYYY]" +input_vendor_id = "[Vendor ID]" +input_product_id = "[Product ID]" input_b_btn = "96" input_y_btn = "97" input_select_btn = "98" From 7ecf63c6ad8103e5c13a51ea11f92fd181b1acf1 Mon Sep 17 00:00:00 2001 From: David Hedlund Date: Tue, 13 Aug 2024 17:24:53 +0200 Subject: [PATCH 18/20] Update controller-autoconfiguration.md Optionally, temporarily connect another controller with a functioning autoconfig "Back" button and adjust the Controller Profiles directory: --- docs/guides/controller-autoconfiguration.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/docs/guides/controller-autoconfiguration.md b/docs/guides/controller-autoconfiguration.md index 2823681978..058f0bdaff 100644 --- a/docs/guides/controller-autoconfiguration.md +++ b/docs/guides/controller-autoconfiguration.md @@ -84,6 +84,11 @@ To resolve this issue, follow these steps: joypad_autoconfig_dir = /storage/emulated/0/RetroArch/autoconfig/ ``` +Optionally, temporarily connect another controller with a functioning autoconfig "Back" button and adjust the Controller Profiles directory: +- `Settings -> Directory -> Controller Profiles`. +- `Main Menu -> Quit` -- ensuring the settings are saved to retroarch.cfg. +- Disconnect the controller from BlueTooth. + - **Set Up a Fallback Configuration:** - Identify the Product ID and Vendor ID of your controller: Ensure that the directory /storage/emulated/0/RetroArch/autoconfig/ remains empty, then restart RetroArch. This action will compel RetroArch to enter fallback mode, displaying a message like "[Controller name] ([Vendor ID]/[Product ID]) not configured, using fallback". Record the four-digit numbers for both IDs. - Create a file named `fallback.cfg` in the directory `/storage/emulated/0/RetroArch/autoconfig/android/` with the following configuration settings (don't forget to replace `input_vendor_id = "[Vendor ID]"` and `input_product_id = "[Product ID]"` with the values of your controller: From 02fe880c92f7e10ced572f5f9d131f188d0043e0 Mon Sep 17 00:00:00 2001 From: David Hedlund Date: Tue, 13 Aug 2024 17:42:35 +0200 Subject: [PATCH 19/20] Update controller-autoconfiguration.md minor --- docs/guides/controller-autoconfiguration.md | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/docs/guides/controller-autoconfiguration.md b/docs/guides/controller-autoconfiguration.md index 058f0bdaff..3b689cfce7 100644 --- a/docs/guides/controller-autoconfiguration.md +++ b/docs/guides/controller-autoconfiguration.md @@ -66,11 +66,14 @@ Most Android devices are not rooted, and RetroArch's default autoconfig director - This adjustment allows the autoconfig files to be saved in `/storage/emulated/0/RetroArch/autoconfig/android` when using `Settings` -> `Input` -> `RetroPad Binds` -> `Port 1 Controls` -> `Save Controller Profile`. #### Addressing controller navigation issues on non-touchscreen devices -If your controller lacks an existing autoconfiguration or if the fallback configuration is ineffective, you may encounter issues with the following components: +Your controller will use the Controller Profile directory `/data/user/0/com.retroarch/autoconfig` by default in Android. Any autoconfig file that mathces your controller (Vendor ID/Product ID) be used by RetroArch automatically. However, you will not be able to generate a **new** autoconfig file for your controller if a default autoconfig file encounter issues with the following components: * **DPAD**: Essential for navigating menus. * **OK**: Necessary for applying settings, such as navigating to `Settings -> Input -> RetroPad Binds -> Port 1 Controls`, and selecting `Set All Controls` and `Save Controller Profile`. -* **Back**: Needed to return to `Main Menu -> Quit` after configuring `Settings -> Directory -> Controller Profiles`, ensuring the settings are saved to retroarch.cfg. +* **Back**: Needed to return to `Main Menu -> Quit` after configuring `Settings -> Directory -> Controller Profiles`, ensuring the settings are saved to retroarch.cfg. Workaround if you have access to another controller: Temporarily connect another controller with a functioning autoconfig "Back" button and adjust the Controller Profiles directory: + - `Settings -> Directory -> Controller Profiles`. + - `Main Menu -> Quit` -- ensuring the settings are saved to retroarch.cfg. + - Disconnect the controller from BlueTooth. While these issues are not problematic for typical Android devices like smartphones and tablets, which offer touchscreen navigation, they become significant on Google TV (an Android-based OS used by Chromecast) where a touchscreen is unavailable. Additionally, Chromecast's voice remote control lacks autoconfiguration and is incompatible with RetroArch navigation. Even controllers with touchpads are ineffective, as the touchpad button does not function (as observed with PS4/PS5 controllers), and the cursor remains invisible due to a known [bug](https://github.com/libretro/RetroArch/issues/16853). @@ -84,11 +87,6 @@ To resolve this issue, follow these steps: joypad_autoconfig_dir = /storage/emulated/0/RetroArch/autoconfig/ ``` -Optionally, temporarily connect another controller with a functioning autoconfig "Back" button and adjust the Controller Profiles directory: -- `Settings -> Directory -> Controller Profiles`. -- `Main Menu -> Quit` -- ensuring the settings are saved to retroarch.cfg. -- Disconnect the controller from BlueTooth. - - **Set Up a Fallback Configuration:** - Identify the Product ID and Vendor ID of your controller: Ensure that the directory /storage/emulated/0/RetroArch/autoconfig/ remains empty, then restart RetroArch. This action will compel RetroArch to enter fallback mode, displaying a message like "[Controller name] ([Vendor ID]/[Product ID]) not configured, using fallback". Record the four-digit numbers for both IDs. - Create a file named `fallback.cfg` in the directory `/storage/emulated/0/RetroArch/autoconfig/android/` with the following configuration settings (don't forget to replace `input_vendor_id = "[Vendor ID]"` and `input_product_id = "[Product ID]"` with the values of your controller: From 30b67b7d4a3e8da17e75ba94c26b5a2d08e183e1 Mon Sep 17 00:00:00 2001 From: David Hedlund Date: Tue, 13 Aug 2024 17:43:44 +0200 Subject: [PATCH 20/20] Update controller-autoconfiguration.md minor --- docs/guides/controller-autoconfiguration.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/guides/controller-autoconfiguration.md b/docs/guides/controller-autoconfiguration.md index 3b689cfce7..a12f7e8996 100644 --- a/docs/guides/controller-autoconfiguration.md +++ b/docs/guides/controller-autoconfiguration.md @@ -83,9 +83,9 @@ To resolve this issue, follow these steps: - **Create a Custom Configuration File:** - Create the file `retroarch.cfg` in the directory `/storage/emulated/0/Android/com.retroarch/files/retroarch.cfg` with the following line: - ``` - joypad_autoconfig_dir = /storage/emulated/0/RetroArch/autoconfig/ - ``` +``` +joypad_autoconfig_dir = /storage/emulated/0/RetroArch/autoconfig/ +``` - **Set Up a Fallback Configuration:** - Identify the Product ID and Vendor ID of your controller: Ensure that the directory /storage/emulated/0/RetroArch/autoconfig/ remains empty, then restart RetroArch. This action will compel RetroArch to enter fallback mode, displaying a message like "[Controller name] ([Vendor ID]/[Product ID]) not configured, using fallback". Record the four-digit numbers for both IDs.