From: Denis Benato <denis.benato@linux.dev>
To: linux-kernel@vger.kernel.org
Cc: platform-driver-x86@vger.kernel.org, linux-input@vger.kernel.org,
kernel@lists.opengamingcollective.org,
"Benjamin Tissoires" <bentiss@kernel.org>,
"Jiri Kosina" <jikos@kernel.org>,
"Luke D . Jones" <luke@ljones.dev>,
"Mateusz Schwartz" <matthew.schwartz@linux.dev>,
"Denis Benato" <benato.denis96@gmail.com>,
"Jonathan LoBue" <jlobue10@gmail.com>,
"Khamunetri Clark" <khamunetriclark@gmail.com>,
"Derek J. Clark" <derekjohn.clark@gmail.com>,
"Joshua Leivenzon" <hacker1024@users.sourceforge.net>,
"Nathan Chancellor" <nathan@kernel.org>,
"Rebecca Mara Müller" <rebecca.mara@posteo.de>,
"Ivan Levchenko" <me@livan.pro>,
"Corentin Chary" <corentin.chary@gmail.com>,
"Hans de Goede" <hansg@kernel.org>,
"Ilpo Järvinen" <ilpo.jarvinen@linux.intel.com>,
"Denis Benato" <denis.benato@linux.dev>
Subject: [PATCH v13 16/18] HID: asus: document ROG Ally sysfs attributes
Date: Wed, 4 Nov 2026 01:39:33 +0000 [thread overview]
Message-ID: <20261104013935.512713-17-denis.benato@linux.dev> (raw)
In-Reply-To: <20261104013935.512713-1-denis.benato@linux.dev>
The driver publishes the gamepad configuration of the ROG Ally
handhelds through sysfs: the controller emulation and the
operating mode, the per-motor vibration strength, the per-axis
joystick calibration (dead zone, outer threshold, anti-dead
zone and response curve), the trigger activation ranges, and
the per-button mapping, macro and turbo settings.
Document each file: where it is created, what a read returns,
which values a write accepts, and the error returned when the
controller lacks the capability.
Signed-off-by: Denis Benato <denis.benato@linux.dev>
---
.../ABI/testing/sysfs-driver-hid-asus | 389 ++++++++++++++++++
1 file changed, 389 insertions(+)
diff --git a/Documentation/ABI/testing/sysfs-driver-hid-asus b/Documentation/ABI/testing/sysfs-driver-hid-asus
index 30e0d17d4cec..515eb7c550fc 100644
--- a/Documentation/ABI/testing/sysfs-driver-hid-asus
+++ b/Documentation/ABI/testing/sysfs-driver-hid-asus
@@ -93,3 +93,392 @@ Description:
Access: Read only
Valid values: a single line of text
+
+What: /sys/bus/hid/drivers/asus/<dev>/xbox_controller
+Date: October 2026
+Contact: linux-input@vger.kernel.org
+Description:
+ Enable or disable the Xbox controller emulation of the
+ gamepad.
+
+ The file is created on the configuration interface of a
+ bound ASUS ROG Ally or ROG Ally X controller. A read
+ returns 1 when the emulation is enabled and 0 when it
+ is disabled; the emulation is enabled by default.
+
+ Reading and writing return -EOPNOTSUPP when the
+ controller does not report the capability.
+
+ Access: Read/Write
+ Valid values: 0, 1
+
+What: /sys/bus/hid/drivers/asus/<dev>/gamepad_mode
+Date: October 2026
+Contact: linux-input@vger.kernel.org
+Description:
+ Operating mode of the gamepad. In "gamepad" mode the
+ buttons report gamepad codes, in "desktop" mode they
+ report keyboard, mouse and media codes. The default
+ mode is gamepad.
+
+ The file is created on the configuration interface of a
+ bound ASUS ROG Ally or ROG Ally X controller. A switch
+ asks the controller to change mode and resets the
+ recorded button mappings to the firmware defaults of
+ the new mode, so the remap, macro and remap_available
+ files report those defaults afterwards.
+
+ Access: Read/Write
+ Valid values: "gamepad", "desktop"
+
+What: /sys/bus/hid/drivers/asus/<dev>/gamepad_mode_index
+Date: October 2026
+Contact: linux-input@vger.kernel.org
+Description:
+ List of the operating modes the gamepad_mode file
+ accepts, space separated.
+
+ The file is created on the configuration interface of a
+ bound ASUS ROG Ally or ROG Ally X controller.
+
+ Access: Read only
+ Valid values: "gamepad desktop"
+
+What: /sys/bus/hid/drivers/asus/<dev>/left_vibration/intensity
+ /sys/bus/hid/drivers/asus/<dev>/right_vibration/intensity
+Date: October 2026
+Contact: linux-input@vger.kernel.org
+Description:
+ Strength of the left or the right rumble motor, in
+ percent of the maximum intensity. The controller does
+ not keep the strength across a reset: the driver sends
+ the recorded values again when it re-initializes the
+ controller.
+
+ The files are created on the configuration interface of
+ a bound ASUS ROG Ally or ROG Ally X controller. Both
+ motors default to 100 and a write is rejected when the
+ value is above 100.
+
+ Access: Read/Write
+ Valid values: an unsigned number 0..100
+
+What: /sys/bus/hid/drivers/asus/<dev>/left_vibration/intensity_range
+ /sys/bus/hid/drivers/asus/<dev>/right_vibration/intensity_range
+Date: October 2026
+Contact: linux-input@vger.kernel.org
+Description:
+ Range of the values the sibling intensity file accepts.
+
+ The files are created on the configuration interface of
+ a bound ASUS ROG Ally or ROG Ally X controller.
+
+ Access: Read only
+ Valid values: "0 100"
+
+What: /sys/bus/hid/drivers/asus/<dev>/left_joystick_axis/inner_threshold
+ /sys/bus/hid/drivers/asus/<dev>/right_joystick_axis/inner_threshold
+Date: October 2026
+Contact: linux-input@vger.kernel.org
+Description:
+ Size of the inner dead zone of the joystick, in percent
+ of the axis range. The default is 10.
+
+ The files are created on the configuration interface of
+ a bound ASUS ROG Ally or ROG Ally X controller. Reading
+ and writing return -EOPNOTSUPP when the controller does
+ not report user calibration support.
+
+ Access: Read/Write
+ Valid values: an unsigned number 0..50
+
+What: /sys/bus/hid/drivers/asus/<dev>/left_joystick_axis/outer_threshold
+ /sys/bus/hid/drivers/asus/<dev>/right_joystick_axis/outer_threshold
+Date: October 2026
+Contact: linux-input@vger.kernel.org
+Description:
+ Outer threshold of the joystick, in percent of the axis
+ range: at and beyond this deflection the joystick
+ reports full deflection. The default is 90.
+
+ The files are created on the configuration interface of
+ a bound ASUS ROG Ally or ROG Ally X controller. Reading
+ and writing return -EOPNOTSUPP when the controller does
+ not report user calibration support.
+
+ Access: Read/Write
+ Valid values: an unsigned number 70..100
+
+What: /sys/bus/hid/drivers/asus/<dev>/left_joystick_axis/inner_threshold_range
+ /sys/bus/hid/drivers/asus/<dev>/right_joystick_axis/inner_threshold_range
+Date: October 2026
+Contact: linux-input@vger.kernel.org
+Description:
+ Range of the values the sibling inner_threshold file
+ accepts.
+
+ The files are created on the configuration interface of
+ a bound ASUS ROG Ally or ROG Ally X controller.
+
+ Access: Read only
+ Valid values: "0 50"
+
+What: /sys/bus/hid/drivers/asus/<dev>/left_joystick_axis/outer_threshold_range
+ /sys/bus/hid/drivers/asus/<dev>/right_joystick_axis/outer_threshold_range
+Date: October 2026
+Contact: linux-input@vger.kernel.org
+Description:
+ Range of the values the sibling outer_threshold file
+ accepts.
+
+ The files are created on the configuration interface of
+ a bound ASUS ROG Ally or ROG Ally X controller.
+
+ Access: Read only
+ Valid values: "70 100"
+
+What: /sys/bus/hid/drivers/asus/<dev>/left_joystick_axis/anti_deadzone
+ /sys/bus/hid/drivers/asus/<dev>/right_joystick_axis/anti_deadzone
+Date: October 2026
+Contact: linux-input@vger.kernel.org
+Description:
+ Anti-dead zone of the joystick, in percent of the axis
+ range: the deflection the controller applies to
+ counteract the inner dead zone. The default is 0.
+
+ The files are created on the configuration interface of
+ a bound ASUS ROG Ally or ROG Ally X controller. Reading
+ and writing return -EOPNOTSUPP when the controller does
+ not report anti-dead zone support.
+
+ Access: Read/Write
+ Valid values: an unsigned number 0..100
+
+What: /sys/bus/hid/drivers/asus/<dev>/left_joystick_axis/anti_deadzone_range
+ /sys/bus/hid/drivers/asus/<dev>/right_joystick_axis/anti_deadzone_range
+Date: October 2026
+Contact: linux-input@vger.kernel.org
+Description:
+ Range of the values the sibling anti_deadzone file
+ accepts.
+
+ The files are created on the configuration interface of
+ a bound ASUS ROG Ally or ROG Ally X controller.
+
+ Access: Read only
+ Valid values: "0 100"
+
+What: /sys/bus/hid/drivers/asus/<dev>/left_joystick_axis/response_curve
+ /sys/bus/hid/drivers/asus/<dev>/right_joystick_axis/response_curve
+Date: October 2026
+Contact: linux-input@vger.kernel.org
+Description:
+ Response curve of the joystick, as four points. Each
+ point is a pair: a move percentage, the deflection at
+ which the point is placed, and a response percentage,
+ applied from that point on.
+
+ The write is all-or-nothing: it is rejected when any
+ value is out of range or the move percentages are not
+ strictly increasing, and the recorded curve is left
+ untouched. The default is the linear curve
+ "0 0 33 33 66 66 100 100".
+
+ The files are created on the configuration interface of
+ a bound ASUS ROG Ally or ROG Ally X controller. Reading
+ and writing return -EOPNOTSUPP when the controller does
+ not report response curve support.
+
+ Access: Read/Write
+ Valid values: eight unsigned numbers 0..100, the move
+ ones strictly increasing
+
+What: /sys/bus/hid/drivers/asus/<dev>/left_joystick_axis/response_curve_index
+ /sys/bus/hid/drivers/asus/<dev>/right_joystick_axis/response_curve_index
+Date: October 2026
+Contact: linux-input@vger.kernel.org
+Description:
+ Explanation of the format of the sibling response_curve
+ file.
+
+ The files are created on the configuration interface of
+ a bound ASUS ROG Ally or ROG Ally X controller.
+
+ Access: Read only
+ Valid values: a single line of text
+
+What: /sys/bus/hid/drivers/asus/<dev>/left_trigger/range_lower_limit
+ /sys/bus/hid/drivers/asus/<dev>/right_trigger/range_lower_limit
+Date: October 2026
+Contact: linux-input@vger.kernel.org
+Description:
+ Lower limit of the analog trigger activation range, in
+ percent of the trigger travel: below this deflection
+ the trigger reports zero. The default is 0.
+
+ The files are created on the configuration interface of
+ a bound ASUS ROG Ally or ROG Ally X controller. Reading
+ and writing return -EOPNOTSUPP when the controller does
+ not report user calibration support.
+
+ Access: Read/Write
+ Valid values: an unsigned number 0..50
+
+What: /sys/bus/hid/drivers/asus/<dev>/left_trigger/range_upper_limit
+ /sys/bus/hid/drivers/asus/<dev>/right_trigger/range_upper_limit
+Date: October 2026
+Contact: linux-input@vger.kernel.org
+Description:
+ Upper limit of the analog trigger activation range, in
+ percent of the trigger travel: at and beyond this
+ deflection the trigger reports full deflection. The
+ default is 100.
+
+ The files are created on the configuration interface of
+ a bound ASUS ROG Ally or ROG Ally X controller. Reading
+ and writing return -EOPNOTSUPP when the controller does
+ not report user calibration support.
+
+ Access: Read/Write
+ Valid values: an unsigned number 70..100
+
+What: /sys/bus/hid/drivers/asus/<dev>/left_trigger/range_lower_limit_range
+ /sys/bus/hid/drivers/asus/<dev>/right_trigger/range_lower_limit_range
+Date: October 2026
+Contact: linux-input@vger.kernel.org
+Description:
+ Range of the values the sibling range_lower_limit file
+ accepts.
+
+ The files are created on the configuration interface of
+ a bound ASUS ROG Ally or ROG Ally X controller.
+
+ Access: Read only
+ Valid values: "0 50"
+
+What: /sys/bus/hid/drivers/asus/<dev>/left_trigger/range_upper_limit_range
+ /sys/bus/hid/drivers/asus/<dev>/right_trigger/range_upper_limit_range
+Date: October 2026
+Contact: linux-input@vger.kernel.org
+Description:
+ Range of the values the sibling range_upper_limit file
+ accepts.
+
+ The files are created on the configuration interface of
+ a bound ASUS ROG Ally or ROG Ally X controller.
+
+ Access: Read only
+ Valid values: "70 100"
+
+What: /sys/bus/hid/drivers/asus/<dev>/<btn>/remap
+Date: October 2026
+Contact: linux-input@vger.kernel.org
+Description:
+ Target the button is remapped to, by name. A write
+ sends the mapping to the controller and is rejected
+ when the name is unknown or not valid for the button
+ in the current mode; the recorded mapping is restored
+ when the controller rejects it.
+
+ "NONE" is always valid. In "gamepad" mode only gamepad
+ codes are valid, in "desktop" mode only keyboard,
+ mouse and media codes are; btn_m1 and btn_m2 accept
+ every code.
+
+ The file is created in one directory per button of the
+ configuration interface of a bound ASUS ROG Ally or
+ ROG Ally X controller. <btn> is one of: btn_a, btn_b,
+ btn_x, btn_y, btn_lb, btn_rb, dpad_up, dpad_down,
+ dpad_left, dpad_right, btn_l3, btn_r3, btn_menu,
+ btn_view, btn_m1 and btn_m2.
+
+ Access: Read/Write
+ Valid values: one name from the sibling
+ remap_available file
+
+What: /sys/bus/hid/drivers/asus/<dev>/<btn>/macro
+Date: October 2026
+Contact: linux-input@vger.kernel.org
+Description:
+ Macro target of the button, by name. The macro target
+ is not restricted by the controller mode: every name
+ the controller knows is valid for every button.
+
+ The file is created in the <btn> directories listed
+ for the remap file.
+
+ Access: Read/Write
+ Valid values: one name; the btn_m1 and btn_m2
+ remap_available files list them all
+
+What: /sys/bus/hid/drivers/asus/<dev>/<btn>/remap_available
+Date: October 2026
+Contact: linux-input@vger.kernel.org
+Description:
+ Names the remap file of this button accepts in the
+ current mode, space separated. The btn_m1 and btn_m2
+ files list every known name in every mode.
+
+ The file is created in the <btn> directories listed
+ for the remap file.
+
+ Access: Read only
+ Valid values: a single line of text
+
+What: /sys/bus/hid/drivers/asus/<dev>/<btn>/turbo_period
+Date: October 2026
+Contact: linux-input@vger.kernel.org
+Description:
+ Repeat period of the turbo function of the button, in
+ firmware units: while turbo is on, the button is
+ automatically pressed again at this period. The period
+ 0, the default, disables the function.
+
+ The file is created in the <btn> directories listed
+ for the remap file, only when the controller reports
+ turbo support.
+
+ Access: Read/Write
+ Valid values: an unsigned number 0..20
+
+What: /sys/bus/hid/drivers/asus/<dev>/<btn>/toggle_period
+Date: October 2026
+Contact: linux-input@vger.kernel.org
+Description:
+ Toggle period of the turbo function of the button, in
+ firmware units.
+
+ The file is created in the <btn> directories listed
+ for the remap file, only when the controller reports
+ turbo support.
+
+ Access: Read/Write
+ Valid values: an unsigned number 0..255
+
+What: /sys/bus/hid/drivers/asus/<dev>/<btn>/turbo_period_range
+Date: October 2026
+Contact: linux-input@vger.kernel.org
+Description:
+ Range of the values the sibling turbo_period file
+ accepts.
+
+ The file is created in the <btn> directories listed
+ for the remap file, only when the controller reports
+ turbo support.
+
+ Access: Read only
+ Valid values: "0 20"
+
+What: /sys/bus/hid/drivers/asus/<dev>/<btn>/toggle_period_range
+Date: October 2026
+Contact: linux-input@vger.kernel.org
+Description:
+ Range of the values the sibling toggle_period file
+ accepts.
+
+ The file is created in the <btn> directories listed
+ for the remap file, only when the controller reports
+ turbo support.
+
+ Access: Read only
+ Valid values: "0 255"
--
2.47.3
next prev parent reply other threads:[~2026-11-04 1:41 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-11-04 1:39 [PATCH v13 00/18] HID: asus: add support for ROG Ally handhelds Denis Benato
2026-11-04 1:39 ` [PATCH v13 01/18] HID: asus: size feature reports from the HID report descriptor Denis Benato
2026-11-04 1:39 ` [PATCH v13 02/18] HID: asus: add support for ROG Ally handhelds Denis Benato
2026-11-04 2:07 ` sashiko-bot
2026-11-04 1:39 ` [PATCH v13 03/18] HID: asus: add gamepad configuration Denis Benato
2026-11-04 1:59 ` sashiko-bot
2026-11-04 1:39 ` [PATCH v13 04/18] HID: asus: add vibration strength configuration Denis Benato
2026-11-04 1:39 ` [PATCH v13 05/18] HID: asus: add joysticks inner and outer range configuration Denis Benato
2026-11-04 1:53 ` sashiko-bot
2026-11-04 1:39 ` [PATCH v13 06/18] HID: asus: add triggers " Denis Benato
2026-11-04 1:39 ` [PATCH v13 07/18] HID: asus: add joysticks anti-deadzone configuration Denis Benato
2026-11-04 1:39 ` [PATCH v13 08/18] HID: asus: add support for response curve Denis Benato
2026-11-04 1:39 ` [PATCH v13 09/18] HID: asus: add support to force feedback Denis Benato
2026-11-04 1:39 ` [PATCH v13 10/18] HID: asus: add support for gamepad mode Denis Benato
2026-11-04 1:39 ` [PATCH v13 11/18] HID: asus: add support for turbo buttons Denis Benato
2026-11-04 1:52 ` sashiko-bot
2026-11-04 1:39 ` [PATCH v13 12/18] HID: asus: add support for btn remapping Denis Benato
2026-11-04 1:58 ` sashiko-bot
2026-11-04 1:39 ` [PATCH v13 13/18] HID: asus: identify XG Mobile stations and bind the LED to the reported model Denis Benato
2026-11-04 1:39 ` [PATCH v13 14/18] HID: asus: expose XG Mobile identity and firmware information Denis Benato
2026-11-04 1:39 ` [PATCH v13 15/18] HID: asus: document ROG XG Mobile sysfs attributes Denis Benato
2026-11-04 1:39 ` Denis Benato [this message]
2026-11-04 1:55 ` [PATCH v13 16/18] HID: asus: document ROG Ally " sashiko-bot
2026-11-04 1:39 ` [PATCH v13 17/18] platform/x86: asus-armoury: pick the eGPU activation from the reported GPU Denis Benato
2026-11-04 1:39 ` [PATCH v13 18/18] MAINTAINERS: add maintainer for the ASUS HID driver Denis Benato
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20261104013935.512713-17-denis.benato@linux.dev \
--to=denis.benato@linux.dev \
--cc=benato.denis96@gmail.com \
--cc=bentiss@kernel.org \
--cc=corentin.chary@gmail.com \
--cc=derekjohn.clark@gmail.com \
--cc=hacker1024@users.sourceforge.net \
--cc=hansg@kernel.org \
--cc=ilpo.jarvinen@linux.intel.com \
--cc=jikos@kernel.org \
--cc=jlobue10@gmail.com \
--cc=kernel@lists.opengamingcollective.org \
--cc=khamunetriclark@gmail.com \
--cc=linux-input@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=luke@ljones.dev \
--cc=matthew.schwartz@linux.dev \
--cc=me@livan.pro \
--cc=nathan@kernel.org \
--cc=platform-driver-x86@vger.kernel.org \
--cc=rebecca.mara@posteo.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.