Skip to content

enable CONFIG_INPUT_JOYDEV on all Qualcomm devices#2792

Merged
loki666 merged 1 commit into
ROCKNIX:nextfrom
aanze:enable-joydev-everywhere
Jun 1, 2026
Merged

enable CONFIG_INPUT_JOYDEV on all Qualcomm devices#2792
loki666 merged 1 commit into
ROCKNIX:nextfrom
aanze:enable-joydev-everywhere

Conversation

@aanze

@aanze aanze commented May 26, 2026

Copy link
Copy Markdown
Contributor

The Linux Gamepad API gamepad detection via navigator.getGamepads()) requires /dev/input/js* device nodes, which are provided by the joydev kernel driver.

Without CONFIG_INPUT_JOYDEV, the evdev events from gamepads (including those exposed as virtual controllers by InputPlumber) are not accessible through the HTML5 Gamepad API. This breaks gamepad input in Electron-based applications such as OpenNOW, cloud-gaming launchers, and any web-based emulator frontend.

All other ROCKNIX platforms (Rockchip RK3326/RK3399/RK3566/RK3576/RK3588, Amlogic S922X, Allwinner) already enable JOYDEV. This change aligns the Qualcomm SoCs (SM6115, SM8250, SM8550, SM8650, SM8750) and H700 with the rest of the tree.

Diagnosed and tested on AYN Odin 3 (SM8750) with OpenNOW v0.3.9: with CONFIG_INPUT_JOYDEV=y, /dev/input/js* nodes appear correctly and the Gamepad API exposes the InputPlumber-emulated DualSense controller as a standard mapped gamepad to Chromium.

Summary

Enables CONFIG_INPUT_JOYDEV on all Qualcomm devices and H700, aligning them with the rest of the supported platforms.

Problem

The Linux Gamepad API (used by Electron/Chromium apps for HTML5 gamepad detection via navigator.getGamepads()) requires /dev/input/js* device nodes, which are provided by the joydev kernel driver.

Without CONFIG_INPUT_JOYDEV, evdev events from gamepads (including the virtual controllers emulated by InputPlumber) are not accessible through the HTML5 Gamepad API. This breaks gamepad input in Electron-based applications such as:

  • OpenNOW (community GeForce NOW client)
  • Cloud-gaming launchers
  • Web-based emulator frontends

Current state in the tree

Platform JOYDEV
Rockchip RK3326, RK3399, RK3566, RK3576 =y
Rockchip RK3588 =m
Amlogic S922X =y
Allwinner (global) =y
Amlogic (global) =y
Qualcomm SM6115, SM8250, SM8550, SM8650, SM8750 disabled
H700 disabled (despite Allwinner global being =y)

This PR sets CONFIG_INPUT_JOYDEV=y on the 6 affected configs to match the majority.

Testing

Tested on AYN Odin 3 (SM8750) with OpenNOW v0.3.9 (Electron-based GeForce NOW client):

  • Before: navigator.getGamepads() returns [null, null, null, null] regardless of input activity; /dev/input/ contains only event* nodes, no js*.
  • After (verified by manually loading a out-of-tree joydev.ko compiled from the same kernel sources): /dev/input/js* nodes appear, and Chromium exposes the InputPlumber-emulated DualSense as a standard mapped gamepad. OpenNOW responds correctly to gamepad input.

I have not been able to test the other Qualcomm SoCs and H700, but the change is mechanical and identical to what already works on Rockchip/Amlogic/Allwinner.

AI Usage

While ROCKNIX doesn't have restrictions on AI tools in contributing, please be transparent about their usage as it
helps set the right context for reviewers.

Did you use AI tools to help write this code? PARTIALLY
AI was used to identify the cause of the gamepad not being detected in OpenNow application.

The Linux Gamepad API gamepad detection via navigator.getGamepads()) requires /dev/input/js*
device nodes, which are provided by the joydev kernel driver.

Without CONFIG_INPUT_JOYDEV, the evdev events from gamepads (including
those exposed as virtual controllers by InputPlumber) are not accessible
through the HTML5 Gamepad API. This breaks gamepad input in Electron-based
applications such as OpenNOW, cloud-gaming launchers,
and any web-based emulator frontend.

All other ROCKNIX platforms (Rockchip RK3326/RK3399/RK3566/RK3576/RK3588,
Amlogic S922X, Allwinner) already enable JOYDEV. This change aligns the
Qualcomm SoCs (SM6115, SM8250, SM8550, SM8650, SM8750) and H700 with
the rest of the tree.

Diagnosed and tested on AYN Odin 3 (SM8750) with OpenNOW v0.3.9: with
CONFIG_INPUT_JOYDEV=y, /dev/input/js* nodes appear correctly and the
Gamepad API exposes the InputPlumber-emulated DualSense controller as a
standard mapped gamepad to Chromium.
@github-actions github-actions Bot added the ai-generated This PR was generated or assisted by AI tools label May 26, 2026
@xzn

xzn commented May 26, 2026

Copy link
Copy Markdown
Contributor

Just hopping in to say good change! Now controller input works in Heroic Games Launcher. (I was wondering why it wasn't working before)

@loki666 loki666 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM.

This will be queued for next week, se we'll have a full month to check for any unwanted sides effet. (I don't expect any)

@loki666 loki666 enabled auto-merge May 26, 2026 19:41
@aanze aanze changed the title linux: enable CONFIG_INPUT_JOYDEV on all Qualcomm devices bugfix: enable CONFIG_INPUT_JOYDEV on all Qualcomm devices May 26, 2026
@loki666 loki666 disabled auto-merge May 27, 2026 07:24
@loki666 loki666 changed the title bugfix: enable CONFIG_INPUT_JOYDEV on all Qualcomm devices enable CONFIG_INPUT_JOYDEV on all Qualcomm devices May 27, 2026
@loki666 loki666 added this pull request to the merge queue Jun 1, 2026
Merged via the queue into ROCKNIX:next with commit 40c7fb5 Jun 1, 2026
5 of 6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ai-generated This PR was generated or assisted by AI tools

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants