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: 19+ 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 1:39 ` [PATCH v13 03/18] HID: asus: add gamepad configuration Denis Benato
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: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:39 ` [PATCH v13 12/18] HID: asus: add support for btn remapping Denis Benato
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: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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®