Sober is a community-driven project that allows Linux users to play Roblox natively, bridging the gap created by the lack of an official client. However, because Sober relies on the Android version of Roblox running through a compatibility layer, certain controller inputs, particularly the D-pad, may not work as expected. This is often due to how Android interprets D-pad inputs and how Sober translates them to Roblox’s gamepad system.
When you plug in a USB or Bluetooth controller, Sober attempts to map physical buttons to virtual Android inputs. The D-pad is frequently treated as a set of axes or buttons that require explicit configuration. Without proper mapping, Roblox will not receive D-pad presses, leaving you stuck in games that rely on these inputs.
Step-by-Step Troubleshooting
Check Your Controller’s Linux Recognition
Before diving into Sober-specific fixes, confirm that your system sees the controller and its D-pad correctly. Open a terminal and use the following command to list input devices:
ls /dev/input/
Look for entries like eventX or jsX that correspond to your gamepad. You can then test the controller with jstest-gtk (install it via your package manager). This tool shows all axes and buttons. Press the D-pad and verify that the inputs are registered. If the D-pad does not produce any response, the issue is at the driver or hardware level. Ensure the controller is properly connected and that Linux has the necessary drivers, which are usually built into the kernel.
Enable Gamepad Support in Sober Settings
Sober includes a set of configuration options that control how controllers are emulated. Launch Sober and navigate to its settings menu before starting Roblox. Look for a section labeled “Gamepad” or “Controller”. There should be a toggle to enable virtual gamepad support. Enable it and then restart Sober. Sometimes Sober defaults to a keyboard-only mode, ignoring all controller inputs. Turning on this feature tells Sober to create a virtual Android gamepad that Roblox can recognize.
If the option is already on, try toggling it off and on again. A configuration cache might be stale, and forcing a refresh can resolve the mapping.
Configuring D-Pad Mapping Manually
Sober uses an internal mapping file to translate physical buttons to Android keycodes. You can edit this file to correct D-pad assignments. The file is typically located at ~/.config/sober/gamepad_mappings.conf or a similar path. Open it with a text editor. You may see entries like:
[Default]dpad_up = 19dpad_down = 20dpad_left = 21dpad_right = 22
The numbers represent Android keycodes (e.g., 19 for DPAD_UP). If your D-pad isn’t working, these lines might be missing or mapped incorrectly. You can manually add them or adjust the keycodes. To find the correct keycodes for your controller, run evtest and select your device. Press each D-pad direction and note the code that appears. Then update the configuration file accordingly. Save the file and restart Sober for changes to take effect.
Using Steam Input as a Translation Layer
If manual mapping fails, you can use Steam’s controller configuration tool to convert D-pad inputs into keyboard presses that Roblox understands. Add Sober as a non-Steam game to your Steam library. Then, in Steam’s Big Picture mode, go to the controller settings for Sober and create a custom configuration. Map the D-pad directions to the keyboard keys Roblox uses for movement (typically WASD or the arrow keys). This workaround bypasses the gamepad layer entirely, sending keyboard events to Sober. It is a reliable method if all else fails.
Roblox In-Game Settings to Check
Once your D-pad is recognized by Sober, you need to ensure Roblox itself is using gamepad input. Launch the game and go to the in-game settings menu (usually found by pressing Escape). Under the “Controls” or “Input” tab, check for a “Gamepad” or “Controller” option. Some Roblox experiences require you to manually switch from keyboard/mouse to controller mode. If the game defaults to keyboard, the D-pad might be ignored even if Sober is sending the correct inputs. Set the input mode to “Controller” and test the D-pad again.
Additionally, some games have their own control schemes that disable D-pad functionality. Try other Roblox experiences to see if the D-pad works elsewhere. If it works in one game but not another, the problem is specific to that game’s code, not Sober.
Software and Kernel Considerations
Outdated kernel modules or missing firmware can cause controller issues. Ensure your system is up-to-date by running:
sudo apt update && sudo apt upgrade
(use your distribution’s package manager). Also, install the Steam udev rules if you haven’t already, as they provide proper permissions for many controllers. On Ubuntu/Debian, you can do this with:
sudo apt install steam-devices
After installing, reboot or replug your controller. This often resolves detection problems.
Alternative Controller Software
If Sober’s built-in mapping continues to give trouble, consider using external tools like xboxdrv or sc-controller to remap inputs at the system level. With xboxdrv, you can create a virtual Xbox controller that translates D-pad presses into stick movements or other commands that Roblox may handle better. For example:
sudo xboxdrv --detach-kernel-driver --dpad-as-button
This forces the D-pad to appear as four separate buttons rather than a hat switch, which is often more compatible with Android apps. After starting xboxdrv, relaunch Sober and test.
Frequently Asked Questions
Why does my D-pad work in other Linux games but not in Sober for Roblox?
Other Linux games use the SDL or native Linux input layer, which handle D-pads via a standard API. Sober uses the Android input stack, which expects D-pad inputs in a specific format. The translation layer may not map your controller’s D-pad correctly. That’s why manual mapping or a tool like Steam Input is often needed.
Can I use a PlayStation controller’s D-pad with Sober?
Yes, but the D-pad on PlayStation controllers is frequently read as an axis by Linux. Sober might interpret this as an analog stick instead of discrete directional presses. You can use Steam Input or xboxdrv to remap the D-pad to appropriate Android keycodes. Refer to the manual mapping section above.
Does Sober support wireless controllers?
Sober does not have its own wireless drivers; it relies on the system’s Bluetooth or adapter drivers. As long as the controller is paired and visible to Linux, Sober should see it. However, some wireless modes may cause input lag or incomplete mappings. Testing with a wired connection can help isolate if the issue is wireless-specific.
After mapping the D-pad, it still doesn’t work in some Roblox games. Why?
Many Roblox experiences have unique input handling. Some disable gamepad D-pad input entirely or tie it to specific in-game actions. Try a popular game like “Adopt Me!” or “Jailbreak” to verify that the D-pad works at a basic level. If it does, the problem lies with the game you’re trying to play. You may need to contact the game developer or use keyboard emulation for that specific game.
Will resetting Sober’s configuration fix the D-pad?
Yes, sometimes a corrupted configuration file can cause mapping failures. You can delete or rename the ~/.config/sober folder, then restart Sober to regenerate defaults. This will reset all settings, so you’ll need to reconfigure any custom mappings afterward. It’s a good last-resort step if you’ve tried everything else.

