Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
diagnose_joysticks_issues [2022/06/29 11:25] – added info about pad2key cursor deadzone, minor cleanup ataridiagnose_joysticks_issues [2023/11/12 17:37] (current) – [No controller detected even when connected via USB] syslinux.cfg path for v39 maximumentropy
Line 21: Line 21:
   * Use a different USB port   * Use a different USB port
   * Ensure controller itself is even functional   * Ensure controller itself is even functional
 +  * If using a third-party controller, switch the input mode on it (refer to your controller's manual)
 +    * D-input typically works best, followed by X-input, then "Mac" and Android modes
   * Disable IOMMU setting in BIOS   * Disable IOMMU setting in BIOS
   * Ensure there's no other obvious settings in the BIOS that could be disabling USB functionality   * Ensure there's no other obvious settings in the BIOS that could be disabling USB functionality
 +  * Add ''hid.ignore_special_drivers=1'' to the ''APPEND'' line in ''/boot/EFI/batocera/syslinux.cfg'' (for Batocera **v39** or higher) or ''/boot/EFI/BOOT/syslinux.cfg'' (for Batocera **v38** or lower) in the [[:edit_boot_partition|boot partition]]. The line should look similar to: ''%%APPEND label=BATOCERA console=tty3 quiet loglevel=0 vt.global_cursor_default=0 mitigations=off hid.ignore_special_drivers=1%%'' [[https://forum.batocera.org/d/7360-set-hidignore-special-drivers1-on-x86-architecture/8|Detailed forum post.]]
   * Clean the contacts with rubbing alcohol (when everything is turned off and disconnected from power), let it dry, and try again   * Clean the contacts with rubbing alcohol (when everything is turned off and disconnected from power), let it dry, and try again
-  * If using a third-party controller, switch the input mode on it (refer to your controller's manual) 
-    * D-input typically works best, followed by X-input, then "Mac" and Android modes 
   * Scream   * Scream
  
Line 133: Line 134:
  
 {{:sdl2-jstest_-t_0.png?500|A very old joystick indeed!}} {{:sdl2-jstest_-t_0.png?500|A very old joystick indeed!}}
 +
 +===== Configuring es_input manually =====
 +
 +Although Batocera should be able to handle the mapping of nearly any controller, there comes a time where it is only feasibly possible to map a controller manually, such as when the controller is sending multiple signals at once for a single button press or when Batocera thinks the gyroscope is an input for all buttons.
 +
 +Open up two SSH sessions to Batocera. Yes, you can do that, just open the program twice. On one session:
 +  - Run ''sdl2-jstest -l'' and remember the number of the joystick you intend to remap.
 +  - Run ''%%sdl2-jstest --test #%%'', where # is the joystick number.
 +
 +On the other session:
 +  - Run ''evtest''.
 +  - Type in the number of the input device you intend to remap (this may be different from the one in the other session).
 +
 +You now have all the input information you need to make a manual remap.
 +
 +==== es_input syntax ====
 +
 +The syntax for each input line mapped:
 +
 +<code>
 + <input name="<name>" type="<type>" id="<#>" value="<#>" code="<#>" />
 +</code>
 +
 +The two leading spaces are tabs, not spaces. This is important.
 +
 +Explanation of the attributes:
 +  * **name** is the virtual button on the Batocera Retropad. This is most similar to a SNES controller, however ''pageup'' and ''pagedown'' represent ''[L1]'' and ''[R1]'' respectively.
 +  * **type** is the type of input being scanned for. This can be either ''button'' or ''axis''. It does not have to match up with the kind of control specified in **name**.
 +  * **id** is the number affected in the ''sdl2-jstest'' session when the button/axis is manipulated. This behaves differently for hats, as they determine their direction pressed from value alone (when there is only one hat, it is always 0).
 +  * **value** is the value that the control is "pressed" on in the ''evtest'' session. Typically 0 or 1 for buttons, -1 to 1 for axis.
 +  * **code** is the code that the control is "pressed" on in the ''evtest'' session. This should be unique to every input.
 +
 +So for instance a button input line might look like this:
 +
 +<code>
 + <input name="a" type="button" id="0" value="1" code="304" />
 +</code>
 +
 +An axis might look like this:
 +
 +<code>
 + <input name="joystick1left" type="axis" id="0" value="-1" code="0" />
 +</code>
  
  • diagnose_joysticks_issues.1656494747.txt.gz
  • Last modified: 22 months ago
  • by atari