Logitech F310 Gamepad broken detection/mapping
Nobody has claimed this yet.
- Dominant language
- C
- Stars
- 14.1k
- Forks
- 2.2k
- Avg merge
- 7h 35m
- Merged PRs (30d)
- 51
Description
Is there an existing issue for this?
- This is a bug in RetroArch frontend
- I have searched the existing issues
Description
I have an Oppo A74 5G, running ColorOS 13 (Android 13)
My Logitech F310 Gamepad via OTG USB is detected in a way that makes it partially functional, and so my controller is basically unusable
I've looked at other issues mentioning this same controller, but none describing my situation
In substance the behaviour is that pressing different buttons/joysticks as the first input changes the detected controllers oddly and partially, and only some buttons/joysticks even trigger the input device detection, and unplugging/replugging duplicates it to a new port
I didn't test every facet of this yet, it's a really strange behaviour
- On XInput setting (switch on the back of the controller set to "X"): pressing a button will show "Virtual 0,0 not configured, using fallback" and then pressing another button may show "Logitech F310 configured in port [n]" and it'll show up in a different port (maybe it thinks two separate controllers are connected?) and only some of the buttons are mapped
- On DirectInput setting (switch set to "D") it only gets detected as "Logitec Dual Action" but still only part of the buttons work
From my experience pressing the "mode" button doesn't have any effect, same for the shoulder buttons
Trying to set up inputs manually ("set all controls" setting) doesn't work either, because only some of the buttons are recognised for a specific port and pressing the others simply doesn't do anything and the setup exits by itself because the time expires
Sorry if the information isn't exactly complete, it's such a strange behaviour that testing and listing all combinations of buttons and detected controllers would take a while
Expected behavior
Of course that the controller works correctly upon being plugged in
If the behaviour of unplugging and replugging duplicating the controller to other ports is normal then ignore it but for all I know it could either be a side effect of the main issue or a separate bug altogether
Steps to reproduce the bug
It's not exactly easy to define precise steps more than just connecting a Logitech F310 Gamepad controller and pressing buttons observing the detected input devices and trying the controls on different states (of detected controllers) inside and outside of games
- Connect the controller via OTG with a USB cable to an Android phone
- Open the RetroArch app
- Press the controller's buttons, only some of which will trigger controller detection
- Open a game and verify only some buttons work
- or alternatively start the input configuration in the settings ("Input settings" > "RetroPad bindings" > any of the ports the controller is recognised in > "Set all inputs") and verify that only some of the buttons will be recognised, and some won't be registered at all and the time will expire, exiting automatically the manual setup
- Verify the input mapping is broken
- Unplugging/replugging also triggers new device detections, so you can have a new controller pop up in port 3 and so on
Version/Commit
1.22.2 (commit 69a4f0e)
Bisect Results
No response
Present in the nightly version
Yes, this is reproduced in the nightly build
Platform & operating system
ColorOS 13 (Android 13) on an Oppo A74 5G
Affected Cores
No response
Environment information
No response
Relevant log output
[Autoconf] Config files scanned: driver "android", name "Logitech Gamepad F310" (046d/c21d), phys "", affinity 30.
[Autoconf] Logitech F310 configured in port 4.
[Autoconf] First unconfigured / unreserved player is 4.
[Autoconf] Device "Logitech Gamepad F310" (46d:c21d) is not reserved for any player slot.
[EGL] Current context: 0x72123c6280.
[Core] Using content: "saf://content:%2F%2Fcom.android.externalstorage.documents%2Ftree%2Fprimary%253ADownload%252FDownload%2520Old/Super Mario Bros 2 (E) [!].zip#Super Mario Bros 2 (E) [!].nes".
[Audio] Stopped audio driver "opensl".
[Core] Unloading core...
[Core] Unloading core symbols...
[Video] Average monitor Hz: 54.226994 Hz. (441.015 % frame time deviation, based on 2048 last samples).
RetroArch 1.22.2 (Git d0fd865)
=== Build =======================================
Capabilities: ASIMD
[INFO] Version: 1.22.2
[INFO] Git: d0fd865
[INFO] Built: May 25 2026
[INFO] =================================================
[Input] Found input driver: "android".
[Core] Loading dynamic libretro core from: "/data/user/0/com.retroarch/cores/fceumm_libretro_android.so".
[Override] Redirecting save file to "/storage/emulated/0/RetroArch/saves/FCEUmm/Super Mario Bros 2 (E) [!].srm".
[Override] Redirecting save state to "/storage/emulated/0/RetroArch/states/FCEUmm/Super Mario Bros 2 (E) [!].state".
[Environ] SET_CONTROLLER_INFO.
[Environ] GET_VFS_INTERFACE. Core requested version >= V1, providing V4.
[Environ] SET_CONTENT_INFO_OVERRIDE.
[Content Override] File Extension: 'fds' - need_fullpath: FALSE, persistent_data: FALSE
[Content Override] File Extension: 'nes' - need_fullpath: FALSE, persistent_data: FALSE
[Content Override] File Extension: 'unf' - need_fullpath: FALSE, persistent_data: FALSE
[Content Override] File Extension: 'unif' - need_fullpath: FALSE, persistent_data: FALSE
[Environ] GET_LOG_INTERFACE.
[Environ] SET_SUPPORT_ACHIEVEMENTS: yes.
[Environ] GET_MESSAGE_INTERFACE_VERSION.
[Environ] GET_LANGUAGE: "0".
[Content] Loading content file: "saf://content:%2F%2Fcom.android.externalstorage.documents%2Ftree%2Fprimary%253ADownload%252FDownload%2520Old/Super Mario Bros 2 (E) [!].zip#Super Mario Bros 2 (E) [!].nes".
[Content] CRC32: 0xc3dd80af.
[Environ] GET_GAME_INFO_EXT.
[Environ] SET_PIXEL_FORMAT: RGB565.
Frontend supports RGB565 - will use that instead of XRGB1555.
[Environ] SET_PERFORMANCE_LEVEL: 5 (Deprecated).
[Environ] GET_SYSTEM_DIRECTORY: "/storage/emulated/0/RetroArch/system".
[Environ] GET_CORE_OPTIONS_VERSION.
[Environ] GET_LANGUAGE: "0".
[Environ] SET_CORE_OPTIONS_V2_INTL.
[Environ] SET_CORE_OPTIONS_DISPLAY: fceumm_show_adv_system_options = hidden
[Environ] SET_CORE_OPTIONS_DISPLAY: fceumm_show_adv_sound_options = hidden
[Environ] GET_VARIABLE: fceumm_game_genie = "disabled"
FCEU_MakeFName: /storage/emulated/0/RetroArch/system/nes.pal
[Environ] SET_INPUT_DESCRIPTORS.
[Environ] GET_VARIABLE: fceumm_ramstate = "fill $ff"
[Environ] GET_VARIABLE: fceumm_ntsc_filter = "disabled"
[Environ] GET_VARIABLE: fceumm_palette = "default"
[Environ] GET_VARIABLE: fceumm_up_down_allowed = "disabled"
[Environ] GET_VARIABLE: fceumm_nospritelimit = "disabled"
[Environ] GET_VARIABLE: fceumm_overclocking = "disabled"
[Environ] GET_VARIABLE: fceumm_zapper_mode = "clightgun"
[Environ] GET_VARIABLE: fceumm_arkanoid_mode = "mouse"
[Environ] GET_VARIABLE: fceumm_zapper_tolerance = "6"
[Environ] GET_VARIABLE: fceumm_mouse_sensitivity = "100"
[Environ] GET_VARIABLE: fceumm_show_crosshair = "enabled"
[Environ] GET_VARIABLE: fceumm_zapper_trigger = "enabled"
[Environ] GET_VARIABLE: fceumm_zapper_sensor = "enabled"
[Environ] GET_VARIABLE: fceumm_overscan_h_left = "0"
[Environ] GET_VARIABLE: fceumm_overscan_h_right = "0"
[Environ] GET_VARIABLE: fceumm_overscan_v_top = "8"
[Environ] GET_VARIABLE: fceumm_overscan_v_bottom = "8"
[Environ] GET_VARIABLE: fceumm_aspect = "8:7 PAR"
[Environ] GET_VARIABLE: fceumm_turbo_enable = "None"
[Environ] GET_VARIABLE: fceumm_turbo_delay = "3"
[Environ] GET_VARIABLE: fceumm_region = "Auto"
[Environ] GET_VARIABLE: fceumm_sndquality = "Low"
[Environ] GET_VARIABLE: fceumm_sndlowpass = "disabled"
[Environ] GET_VARIABLE: fceumm_sndstereodelay = "disabled"
[Environ] GET_VARIABLE: fceumm_sndvolume = "7"
[Environ] GET_VARIABLE: fceumm_swapduty = "disabled"
[Environ] GET_VARIABLE: fceumm_apu_1 = "enabled"
[Environ] GET_VARIABLE: fceumm_apu_2 = "enabled"
[Environ] GET_VARIABLE: fceumm_apu_3 = "enabled"
[Environ] GET_VARIABLE: fceumm_apu_4 = "enabled"
[Environ] GET_VARIABLE: fceumm_apu_5 = "enabled"
[Environ] SET_MEMORY_MAPS.
[SRAM] Skipping SRAM load.
[Core] Version of libretro API: 1, Compiled against API: 1
[Core] Geometry: 256x224, Aspect: 1.306, FPS: 50.01, Sample rate: 48000.00 Hz.
[Video] Set video size to: 879x672.
[Android] EGL: GLES version = 2.
[EGL] Falling back to eglGetDisplay.
[EGL] EGL version: 1.5.
[GL] Found GL context: "egl_android".
[GL] Config requires windowed mode, but context driver does not support it. Forcing fullscreen for this session.
[GL] Detecting screen resolution: 0x0.
[EGL] Current context: 0x72123c6a00.
[GL] Vendor: Qualcomm, Renderer: Adreno (TM) 619.
[GL] Version: OpenGL ES 3.2 V@0530.0 (GIT@badfd2c428, Ic89c6ea852, 1626248638) (Date:07/14/21).
[GL] Using resolution 1080x2290.
[GL] Default shader backend found: glsl.
[GL] Using GLSL shader backend.
[GLSL] Stock GLSL shaders will be used.
[GLSL] Found GLSL vertex shader.
[GLSL] Found GLSL fragment shader.
[GLSL] Linking GLSL program.
[GLSL] Found GLSL vertex shader.
[GLSL] Found GLSL fragment shader.
[GLSL] Linking GLSL program.
[GLSL] Found GLSL vertex shader.
[GLSL] Found GLSL fragment shader.
[GLSL] Linking GLSL program.
[GL] Using 4 textures.
[GL] Loaded 1 program(s).
[Input] Found joypad driver: "android".
[Video] Found display server: "android".
[Audio] Set audio input rate to: 48000.00 Hz.
[Video] Timings deviate too much. Will not adjust. (Target = 60.00 Hz, Game = 50.01 Hz)
[Overlay] Checking for viewport key: overlay0_viewport
[Overlay] Checking for viewport key: overlay1_viewport
[OpenSL] Requested audio latency: 128 ms.
[Overlay] Checking for viewport key: overlay2_viewport
[Overlay] Checking for viewport key: overlay3_viewport
[Overlay] Checking for viewport key: overlay4_viewport
[Overlay] Checking for viewport key: overlay5_viewport
[Overlay] Checking for viewport key: overlay6_viewport
[Overlay] Checking for viewport key: overlay7_viewport
[Overlay] Checking for viewport key: overlay8_viewport
[Overlay] Checking for viewport key: overlay9_viewport
[Overlay] Checking for viewport key: overlay10_viewport
[Overlay] Checking for viewport key: overlay11_viewport
[OpenSL] Setting audio latency: Block size = 768, Blocks = 32, Total = 24576...
[Audio] Started synchronous audio driver.
[Display] Found display driver: "gl".
Player 1: Gamepad
Player 2: Gamepad
Player 3: None Connected
Player 4: None Connected
Famicom Expansion: None Connected
[Playlist] Loading favorites file: "/storage/emulated/0/RetroArch/playlists/builtin/content_favorites.lpl".
[Playlist] Loading history file: "/storage/emulated/0/RetroArch/playlists/builtin/content_history.lpl".
[Playlist] Loading history file: "/storage/emulated/0/RetroArch/playlists/builtin/content_image_history.lpl".
[Playlist] Loading history file: "/storage/emulated/0/RetroArch/playlists/builtin/content_music_history.lpl".
[Audio] Started audio driver "opensl" (is_shutdown=false)
[Overlay] Checking for viewport key: overlay0_viewport
[Overlay] Checking for viewport key: overlay1_viewport
[Overlay] Checking for viewport key: overlay2_viewport
[Overlay] Checking for viewport key: overlay3_viewport
[Overlay] Checking for viewport key: overlay4_viewport
[Overlay] Checking for viewport key: overlay5_viewport
[Overlay] Checking for viewport key: overlay6_viewport
[Overlay] Checking for viewport key: overlay7_viewport
[Overlay] Checking for viewport key: overlay8_viewport
[Overlay] Checking for viewport key: overlay9_viewport
[Overlay] Checking for viewport key: overlay10_viewport
[Overlay] Checking for viewport key: overlay11_viewport
[Playlist] Written to file: "/storage/emulated/0/RetroArch/playlists/builtin/content_history.lpl".
[Autoconf] Config files scanned: driver "android", name "Logitech Gamepad F310" (046d/c21d), phys "", affinity 30.
[Autoconf] Logitech F310 configured in port 1.
[Autoconf] First unconfigured / unreserved player is 1.
[Autoconf] Device "Logitech Gamepad F310" (46d:c21d) is not reserved for any player slot.
[Autoconf] Config files scanned: driver "android", name "Virtual" (0000/0000), phys "", affinity 0.
[Autoconf] Virtual (0/0) not configured, using fallback.
[Autoconf] First unconfigured / unreserved player is 2.
[Autoconf] Device "Virtual" (0:0) is not reserved for any player slot.
[EGL] Current context: 0x72123c6a00.
[Audio] Stopped audio driver "opensl".
[Runtime] Content ran for a total of: 00 hours, 00 minutes, 32 seconds.
[Runtime] Saving runtime log file: "/storage/emulated/0/RetroArch/playlists/logs/FCEUmm/Super Mario Bros 2 (E) [!].lrtl".
[Core] No content, starting dummy core.
[Core] Unloading game...
[Core] Unloading core...
[Core] Unloading core symbols...
[Core] Saved core options file to "/storage/emulated/0/RetroArch/config/FCEUmm/FCEUmm.opt".
[Video] Does not have enough samples for monitor refresh rate estimation. Requires to run for at least 4096 frames.
RetroArch 1.22.2 (Git d0fd865)
=== Build =======================================
Capabilities: ASIMD
[INFO] Version: 1.22.2
[INFO] Git: d0fd865
[INFO] Built: May 25 2026
[INFO] =================================================
[Input] Found input driver: "android".
[Environ] SET_PIXEL_FORMAT: RGB565.
[Core] Version of libretro API: 1, Compiled against API: 1
[Core] Geometry: 320x240, Aspect: 1.333, FPS: 60.00, Sample rate: 48000.00 Hz.
[Video] Set video size to: 960x720.
[Android] EGL: GLES version = 2.
[EGL] Falling back to eglGetDisplay.
[EGL] EGL version: 1.5.
[GL] Found GL context: "egl_android".
[GL] Config requires windowed mode, but context driver does not support it. Forcing fullscreen for this session.
[GL] Detecting screen resolution: 0x0.
[EGL] Current context: 0x72123c6080.
[GL] Vendor: Qualcomm, Renderer: Adreno (TM) 619.
[GL] Version: OpenGL ES 3.2 V@0530.0 (GIT@badfd2c428, Ic89c6ea852, 1626248638) (Date:07/14/21).
[GL] Using resolution 1080x2290.
[GL] Default shader backend found: glsl.
[GL] Using GLSL shader backend.
[GLSL] Stock GLSL shaders will be used.
[GLSL] Found GLSL vertex shader.
[GLSL] Found GLSL fragment shader.
[GLSL] Linking GLSL program.
[GLSL] Found GLSL vertex shader.
[GLSL] Found GLSL fragment shader.
[GLSL] Linking GLSL program.
[GLSL] Found GLSL vertex shader.
[GLSL] Found GLSL fragment shader.
[GLSL] Linking GLSL program.
[GL] Using 4 textures.
[GL] Loaded 1 program(s).
[Input] Found joypad driver: "android".
[Video] Found display server: "android".
[Overlay] Checking for viewport key: overlay0_viewport
[Audio] Set audio input rate to: 48000.00 Hz.
[Overlay] Checking for viewport key: overlay1_viewport
[Overlay] Checking for viewport key: overlay2_viewport
[Overlay] Checking for viewport key: overlay3_viewport
[OpenSL] Requested audio latency: 128 ms.
[Overlay] Checking for viewport key: overlay4_viewport
[Overlay] Checking for viewport key: overlay5_viewport
[Overlay] Checking for viewport key: overlay6_viewport
[Overlay] Checking for viewport key: overlay7_viewport
[Overlay] Checking for viewport key: overlay8_viewport
[Overlay] Checking for viewport key: overlay9_viewport
[Overlay] Checking for viewport key: overlay10_viewport
[Overlay] Checking for viewport key: overlay11_viewport
[OpenSL] Setting audio latency: Block size = 768, Blocks = 32, Total = 24576...
[Audio] Started synchronous audio driver.
[Display] Found display driver: "gl".
[Playlist] Loading favorites file: "/storage/emulated/0/RetroArch/playlists/builtin/content_favorites.lpl".
[Playlist] Loading history file: "/storage/emulated/0/RetroArch/playlists/builtin/content_history.lpl".
[Playlist] Loading history file: "/storage/emulated/0/RetroArch/playlists/builtin/content_image_history.lpl".
[Playlist] Loading history file: "/storage/emulated/0/RetroArch/playlists/builtin/content_music_history.lpl".
[Core info] Wrote to cache file: "/data/user/0/com.retroarch/info/core_info.cache".
[Playlist] Written to file: "/storage/emulated/0/RetroArch/playlists/Nintendo - Nintendo Entertainment System.lpl".
[Core] Using content: "saf://content:%2F%2Fcom.android.externalstorage.documents%2Ftree%2Fprimary%253ADownload%252FDownload%2520Old/Super Mario Bros 2 (E) [!].zip#Super Mario Bros 2 (E) [!].nes".
[Audio] Stopped audio driver "opensl".
[Core] Unloading core...
[Core] Unloading core symbols...
[Video] Does not have enough samples for monitor refresh rate estimation. Requires to run for at least 4096 frames.
RetroArch 1.22.2 (Git d0fd865)
=== Build =======================================
Capabilities: ASIMD
[INFO] Version: 1.22.2
[INFO] Git: d0fd865
[INFO] Built: May 25 2026
[INFO] =================================================
[Input] Found input driver: "android".
[Core info] Wrote to cache file: "/data/user/0/com.retroarch/info/core_info.cache".
[Core] Loading dynamic libretro core from: "/data/user/0/com.retroarch/cores/mesen_libretro_android.so".
[Override] Redirecting save file to "/storage/emulated/0/RetroArch/saves/Mesen/Super Mario Bros 2 (E) [!].srm".
[Override] Redirecting save state to "/storage/emulated/0/RetroArch/states/Mesen/Super Mario Bros 2 (E) [!].state".
[Environ] GET_CORE_OPTIONS_VERSION.
[Environ] GET_LANGUAGE: "0".
[Environ] SET_CORE_OPTIONS_V2_INTL.
[Environ] SET_CONTROLLER_INFO.
[Environ] SET_CONTENT_INFO_OVERRIDE.
[Content Override] File Extension: 'nes' - need_fullpath: FALSE, persistent_data: FALSE
[Content Override] File Extension: 'fds' - need_fullpath: FALSE, persistent_data: FALSE
[Content Override] File Extension: 'unf' - need_fullpath: FALSE, persistent_data: FALSE
[Content Override] File Extension: 'unif' - need_fullpath: FALSE, persistent_data: FALSE
[Environ] GET_LOG_INTERFACE.
[Content] Loading content file: "saf://content:%2F%2Fcom.android.externalstorage.documents%2Ftree%2Fprimary%253ADownload%252FDownload%2520Old/Super Mario Bros 2 (E) [!].zip#Super Mario Bros 2 (E) [!].nes".
[Content] CRC32: 0xc3dd80af.
[Environ] GET_SYSTEM_DIRECTORY: "/storage/emulated/0/RetroArch/system".
[Environ] GET_SAVE_DIRECTORY: "/storage/emulated/0/RetroArch/saves/Mesen".
[Environ] SET_PIXEL_FORMAT: XRGB8888.
[Environ] GET_VARIABLE: mesen_nospritelimit = "disabled"
[Environ] GET_VARIABLE: mesen_hdpacks = "enabled"
[Environ] GET_VARIABLE: mesen_mute_triangle_ultrasonic = "enabled"
[Environ] GET_VARIABLE: mesen_reduce_dmc_popping = "enabled"
[Environ] GET_VARIABLE: mesen_swap_duty_cycle = "disabled"
[Environ] GET_VARIABLE: mesen_disable_noise_mode_flag = "disabled"
[Environ] GET_VARIABLE: mesen_fdsautoinsertdisk = "disabled"
[Environ] GET_VARIABLE: mesen_fdsfastforwardload = "disabled"
[Environ] GET_VARIABLE: mesen_fake_stereo = "disabled"
[Environ] GET_VARIABLE: mesen_ntsc_filter = "Disabled"
[Environ] GET_VARIABLE: mesen_palette = "Default"
[Environ] GET_VARIABLE: mesen_overclock_type = "Before NMI (Recommended)"
[Environ] GET_VARIABLE: mesen_overclock = "None"
[Environ] GET_VARIABLE: mesen_overscan_left = "None"
[Environ] GET_VARIABLE: mesen_overscan_right = "None"
[Environ] GET_VARIABLE: mesen_overscan_up = "None"
[Environ] GET_VARIABLE: mesen_overscan_down = "None"
[Environ] GET_VARIABLE: mesen_aspect_ratio = "Auto"
[Environ] GET_VARIABLE: mesen_region = "Auto"
[Environ] GET_VARIABLE: mesen_ramstate = "All 0s (Default)"
[Environ] GET_VARIABLE: mesen_screenrotation = "None"
[Environ] GET_VARIABLE: mesen_controllerturbospeed = "Fast"
[Environ] GET_VARIABLE: mesen_shift_buttons_clockwise = "disabled"
[Environ] GET_VARIABLE: mesen_audio_sample_rate = "48000"
[Environ] SET_GEOMETRY: 256x240, Aspect: 1.219.
[Environ] GET_GAME_INFO_EXT.
Loading rom: Super Mario Bros 2 (E) [!].nes
PRG CRC32: 0x08AF16A0
PRG+CHR CRC32: 0xE94E883D
[iNes] Mapper: 4 Sub:0
[iNes] PRG ROM: 128 KB
[iNes] CHR ROM: 128 KB
[iNes] Mirroring: Horizontal
[iNes] Battery: No
[Environ] SET_INPUT_DESCRIPTORS.
[Environ] SET_MEMORY_MAPS.
[SRAM] Skipping SRAM load.
[Core] Version of libretro API: 1, Compiled against API: 1
[Core] Geometry: 256x240, Aspect: 1.479, FPS: 50.01, Sample rate: 48000.00 Hz.
[Video] Set video size to: 1065x720.
[Android] EGL: GLES version = 2.
[EGL] Falling back to eglGetDisplay.
[EGL] EGL version: 1.5.
[GL] Found GL context: "egl_android".
[GL] Config requires windowed mode, but context driver does not support it. Forcing fullscreen for this session.
[GL] Detecting screen resolution: 0x0.
[EGL] Current context: 0x72123c6580.
[GL] Vendor: Qualcomm, Renderer: Adreno (TM) 619.
[GL] Version: OpenGL ES 3.2 V@0530.0 (GIT@badfd2c428, Ic89c6ea852, 1626248638) (Date:07/14/21).
[GL] Using resolution 1080x2290.
[GL] Default shader backend found: glsl.
[GL] Using GLSL shader backend.
[GLSL] Stock GLSL shaders will be used.
[GLSL] Found GLSL vertex shader.
[GLSL] Found GLSL fragment shader.
[GLSL] Linking GLSL program.
[GLSL] Found GLSL vertex shader.
[GLSL] Found GLSL fragment shader.
[GLSL] Linking GLSL program.
[GLSL] Found GLSL vertex shader.
[GLSL] Found GLSL fragment shader.
[GLSL] Linking GLSL program.
[GL] Using 4 textures.
[GL] Loaded 1 program(s).
[Input] Found joypad driver: "android".
[Overlay] Checking for viewport key: overlay0_viewport
[Overlay] Checking for viewport key: overlay1_viewport
[Overlay] Checking for viewport key: overlay2_viewport
[Overlay] Checking for viewport key: overlay3_viewport
[Overlay] Checking for viewport key: overlay4_viewport
[Overlay] Checking for viewport key: overlay5_viewport
[Overlay] Checking for viewport key: overlay6_viewport
[Overlay] Checking for viewport key: overlay7_viewport
[Overlay] Checking for viewport key: overlay8_viewport
[Overlay] Checking for viewport key: overlay9_viewport
[Overlay] Checking for viewport key: overlay10_viewport
[Overlay] Checking for viewport key: overlay11_viewport
[Video] Found display server: "android".
[Audio] Set audio input rate to: 48000.00 Hz.
[Video] Timings deviate too much. Will not adjust. (Target = 60.00 Hz, Game = 50.01 Hz)
[OpenSL] Requested audio latency: 128 ms.
[OpenSL] Setting audio latency: Block size = 768, Blocks = 32, Total = 24576...
[Audio] Started synchronous audio driver.
[Display] Found display driver: "gl".
[Core info] Wrote to cache file: "/data/user/0/com.retroarch/info/core_info.cache".
[Playlist] Loading favorites file: "/storage/emulated/0/RetroArch/playlists/builtin/content_favorites.lpl".
[Playlist] Loading history file: "/storage/emulated/0/RetroArch/playlists/builtin/content_history.lpl".
[Playlist] Loading history file: "/storage/emulated/0/RetroArch/playlists/builtin/content_image_history.lpl".
[Playlist] Loading history file: "/storage/emulated/0/RetroArch/playlists/builtin/content_music_history.lpl".
[Audio] Started audio driver "opensl" (is_shutdown=false)
[Overlay] Checking for viewport key: overlay0_viewport
[Overlay] Checking for viewport key: overlay1_viewport
[Overlay] Checking for viewport key: overlay2_viewport
[Overlay] Checking for viewport key: overlay3_viewport
[Overlay] Checking for viewport key: overlay4_viewport
[Overlay] Checking for viewport key: overlay5_viewport
[Overlay] Checking for viewport key: overlay6_viewport
[Overlay] Checking for viewport key: overlay7_viewport
[Overlay] Checking for viewport key: overlay8_viewport
[Overlay] Checking for viewport key: overlay9_viewport
[Overlay] Checking for viewport key: overlay10_viewport
[Overlay] Checking for viewport key: overlay11_viewport
[Playlist] Written to file: "/storage/emulated/0/RetroArch/playlists/builtin/content_history.lpl".
[Autoconf] Config files scanned: driver "android", name "Logitech Gamepad F310" (046d/c21d), phys "", affinity 30.
[Autoconf] First unconfigured / unreserved player is 1.
[Autoconf] Device "Logitech Gamepad F310" (46d:c21d) is not reserved for any player slot.
[Autoconf] Config files scanned: driver "android", name "Virtual" (0000/0000), phys "", affinity 0.
[Autoconf] Virtual (0/0) not configured, using fallback.
[Autoconf] First unconfigured / unreserved player is 2.
[Autoconf] Device "Virtual" (0:0) is not reserved for any player slot.
[EGL] Current context: 0x72123c6580.
[Autoconf] Config files scanned: driver "android", name "Logitech Logitech Dual Action" (046d/c216), phys "", affinity 50.
[Autoconf] Logitech Dual Action configured in port 3.
[Autoconf] First unconfigured / unreserved player is 3.
[Autoconf] Device "Logitech Logitech Dual Action" (46d:c216) is not reserved for any player slot.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
No source file, test, or entry point is named. Start by reproducing the Logitech F310 issue on Android 13 with the controller in XInput and DirectInput modes, then trace the Android input detection and mapping path using the supplied autoconf logs. Done means the controller is detected once, all buttons and sticks map correctly, and manual binding completes without timing out.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- android, c
- Domain
- frontend, mobile
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Needs clarification
- Newbie friendliness
- 35/100