Menu

#2201 Logitech F310 (Dual Action) not detected on macOS unless SDL_JOYSTICK_MFI=0

v3.x
open
nobody
None
SDL2x
x64sc
2026-04-19
2026-02-05
Steve
No

Description
On macOS, the Logitech F310 controller (reporting as “Logitech Dual Action”) is not enumerated by VICE when using the default SDL configuration.

If VICE is launched with the environment variable SDL_JOYSTICK_MFI=0, the controller is detected and functions correctly.

Environment
VICE version: 3.10 (SDL2 build)
Bundled SDL version: 2.32.10
Platform: macOS (Apple Silicon)
Controller: Logitech F310 (D-mode, appears as “Logitech Dual Action”)

Steps to Reproduce

  1. Connect Logitech F310 (switched to D)
  2. Launch VICE normally:
    x64sc -verbose -debug
  3. Observe the output
    SDLJoystick: No joysticks found.

Workaround

  1. Launch VICE with MFi joystick support disabled:
    SDL_JOYSTICK_MFI=0 x64sc -verbose -debug
  2. Observe the output
    SDLJoystick: Got 1 potential devices.
    SDLJoystick: SDL_JoystickNameForIndex(0) = "Logitech Dual Action"

Controller input works correctly when C64 port 2 is configured as a real joystick:
-joydev2 4

Control Tests

  • PS4 controller detected correctly without workaround
  • THEC64 Competition Pro USB joystick detected correctly without workaround
  • SDL testjoystick utility detects the F310 correctly

Discussion

  • gpz

    gpz - 2026-02-05

    Have you tried other SDL based apps? I don't think we can do much about it (in the SDL port anyway)

     
  • Steve

    Steve - 2026-02-05

    I tried it with the SDL testjoystick utility. Is there another (relatively simple) SDL based app you would like me to try it with?

     
  • gpz

    gpz - 2026-02-05

    No idea really (even less which are ported to macOS, those i had in mind only have windows binaries apparently)

    Did you build the testjoystick program yourself? And which SDL version does it use? Seems odd that it works with that, but not in VICE

     
  • Steve

    Steve - 2026-02-05

    Yes. I built SDL’s testjoystick utility myself from source using SDL release-2.30.9. The resulting binary is statically linked and reports: SDL-release-2.30.9-0-gc98c4fb. VICE, by contrast, is dynamically linked against SDL 2.32.10

    To make sure it wasn't an issue with SDL 2.32.10 I copied the VICE app, and replaced the linked 2.32.10 SDL lib with the 2.30.9 one. When I ran VICE is till reported No joysticks found, unless disabled MFi joystick support

     
  • gpz

    gpz - 2026-02-08

    BTW, what happens if you switch the pad to xinput? (Isn't that the preferred way anyway?)

     
  • Steve

    Steve - 2026-02-08

    X-Input is less likely to work on linux and macs (or so all the documentation tells me). I tried it just in case , but no luck.

     

    Last edit: Steve 2026-04-20
  • dqh

    dqh - 2026-02-08

    Does it work in the GTK build?

    That env var looks like it disables SDL use of the modern macOS game controller APIs. I think we need to make this into an SDL+macos only setting. It's good that you have a workaround.

     
  • gpz

    gpz - 2026-04-18

    i am undecided on this one... is this a common controller (old?). And does the problem exist on other OSs? Since a workaround exists, i lean towards "document and time will fix it" rather than yet another obscure option that almost noone needs shrug

     
  • Steve

    Steve - 2026-04-18

    is this a common controller (old?

    It's Logitech's current wired controller. I also have a F710 - will check if I get similar issues
    https://www.logitechg.com/en-gb/shop/c/gamepads-controllers

     
  • Steve

    Steve - 2026-04-18

    And does the problem exist on other OSs?

    I haven't got another setup to test on for sure, but had what I suspect was a similar issue with THEC64, which is linux based. Both the F310 and F710 used to work with it, but stopped after an update.

     

    Last edit: Steve 2026-04-18
  • gpz

    gpz - 2026-04-18

    Ah i see, F710 rings a bell.

    Yeah we really need some testing on other OSs (and also GTK port). I am not a big friend of adding extra options or workarounds to the code for that matter - IF it can be solved by creating a custom mapping file :) That said, this stuff is still in motion and some things that should be there (like "invert this axis" - which afaik we need for this controller, on some OSs perhaps maybe) does not exist yet. Oh well

     

    Last edit: gpz 2026-04-18
  • Steve

    Steve - 2026-04-19

    This is with the F710 (in D-mode)

    ./x64sc -verbose -debug
    SDLJoystick: No joysticks found.
    
    SDL_JOYSTICK_MFI=0 ./x64sc -verbose -debug
    SDLJoystick: Got 1 potential devices.
    SDLJoystick: SDL_JoystickNameForIndex(0) = "Logitech Cordless RumblePad 2"
    Joystick: Registered device "Logitech Cordless RumblePad 2" [046d:c219] (4 axes, 12 buttons, 1 hat)
    
     
  • Steve

    Steve - 2026-04-19

    vice-arm64-gtk3-3.10 detects the F710

    ./x64sc -verbose -debug
    Joystick: Registered device "Logitech Cordless RumblePad 2" [046d:c219] (2 axes, 1 button, 1 hat)
    Joystick: joystick_init(): resource JoyDevice2: opening device 0 (Logitech Cordless RumblePad 2)
    
     

Log in to post a comment.

MongoDB Logo MongoDB