Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
diagnose_joysticks_issues [2022/02/20 02:39] – minor cleanup (WIP), added section about connection issues atari | diagnose_joysticks_issues [2023/11/12 17:37] (current) – [No controller detected even when connected via USB] syslinux.cfg path for v39 maximumentropy | ||
---|---|---|---|
Line 1: | Line 1: | ||
====== Input problems ====== | ====== Input problems ====== | ||
- | ==== ROMs take a long time to load ==== | + | <WRAP center round todo> |
+ | Under construction. | ||
+ | </ | ||
- | This is caused by the X-Input settings due XBOX ONE and some 8bitdo Pads. It took 30-45s | + | ===== ROMs take a long time to load ===== |
- | ==== Bluetooth Connection ==== | + | Some controllers (including Xbox One and 8-bitdo ones) can cause certain cores to take a long time to load a ROM, upwards of thirty seconds. In these situations, it can be worked around by setting the controller to D-input mode (may be referred to as " |
- | This is a phenomena causes with some issues and like input lag (especially if you connect more than one BT controller) | + | ===== Bluetooth connection ===== |
- | | + | |
- | - Try to disable internal WiFi - this helps to extent signal strength, you can use '' | + | |
- | | + | |
- | | + | |
- | ==== No controller detected even when connected via USB ==== | + | ===== No controller detected even when connected via USB ===== |
Few things to try: | Few things to try: | ||
* 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' | ||
+ | * D-input typically works best, followed by X-input, then " | ||
* Disable IOMMU setting in BIOS | * Disable IOMMU setting in BIOS | ||
* Ensure there' | * Ensure there' | ||
+ | * Add '' | ||
* 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' | ||
- | * D-input typically works best, followed by X-input, then " | ||
* Scream | * Scream | ||
- | ==== Controller connected and detected, but no inputs ==== | + | If all else fails, please provide a [[: |
+ | |||
+ | ===== Controller connected and detected, but no inputs | ||
Try configuring the controller by manually editing the ''/ | Try configuring the controller by manually editing the ''/ | ||
- | ===== Diagnose Joysticks Issues | + | ===== Controller connected, detected and making inputs, but they are unexpected/ |
- | Physical joystick <--> linux driver <--> linux events stack < | + | Ensure that all of the controller' |
- | From your joystick | + | If that still gives unexpected ghost inputs during mapping, try to repair |
- | In case of issues, there are 2 mains tools, evtest | + | |
+ | <WRAP center round tip> | ||
+ | Run '' | ||
+ | </ | ||
- | evtest acts on point A to analyse linux events while sdl2-jstest acts on point B to analyse events going to EmulationStation. | + | ===== When using " |
+ | |||
+ | You can increase the deadzone for pad2key' | ||
+ | |||
+ | - [[: | ||
+ | - Download the following file and save it to ''/ | ||
+ | { " | ||
+ | |||
+ | </ | ||
+ | - Launch a game using the feature and test the cursor. If it's still drifting, increase the " | ||
+ | - When a suitable value has been found, run '' | ||
+ | |||
+ | ===== Diagnose joysticks issues ===== | ||
+ | |||
+ | Physical joystick <--> Linux driver <--> Linux events stack < | ||
+ | |||
+ | From your joystick to Batocera' | ||
+ | |||
+ | '' | ||
==== evtests ==== | ==== evtests ==== | ||
- | events in the linux kernel are the way to handle mouses, keyboards, joysticks, etc... | + | '' |
sdl2 is a library to help to code program compatible with linux, windows, mac os x, ... it converts linux events to a common way to define events. On linux, events are define in / | sdl2 is a library to help to code program compatible with linux, windows, mac os x, ... it converts linux events to a common way to define events. On linux, events are define in / | ||
#define KEY_YELLOW 0x190 (1*16*16 + 9*16 + 0 = 400) | #define KEY_YELLOW 0x190 (1*16*16 + 9*16 + 0 = 400) | ||
Line 73: | Line 98: | ||
==== sdl2-jstest ==== | ==== sdl2-jstest ==== | ||
- | - run sdl2-jstest --list to check what emulationstation | + | Run '' |
In my case, it displays : | In my case, it displays : | ||
# export DISPLAY=: | # export DISPLAY=: | ||
Line 99: | Line 124: | ||
SDL_JOYBUTTONUP: | SDL_JOYBUTTONUP: | ||
... | ... | ||
+ | |||
+ | You can see a graphical representation of your controller by running: | ||
+ | |||
+ | < | ||
+ | sdl2-jstest --test # | ||
+ | </ | ||
+ | |||
+ | where ''#'' | ||
+ | |||
+ | {{: | ||
+ | |||
+ | ===== 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 '' | ||
+ | - Run '' | ||
+ | |||
+ | On the other session: | ||
+ | - Run '' | ||
+ | - 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: | ||
+ | |||
+ | < | ||
+ | <input name="< | ||
+ | </ | ||
+ | |||
+ | 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 '' | ||
+ | * **type** is the type of input being scanned for. This can be either '' | ||
+ | * **id** is the number affected in the '' | ||
+ | * **value** is the value that the control is " | ||
+ | * **code** is the code that the control is " | ||
+ | |||
+ | So for instance a button input line might look like this: | ||
+ | |||
+ | < | ||
+ | <input name=" | ||
+ | </ | ||
+ | |||
+ | An axis might look like this: | ||
+ | |||
+ | < | ||
+ | <input name=" | ||
+ | </ | ||
+ |
- diagnose_joysticks_issues.1645321169.txt.gz
- Last modified: 2 years ago
- by atari