xref: /linux/Documentation/admin-guide/laptops/alienware-wmi.rst (revision 1193e205dbb6feca917dc8e1862ffcdf2194234b)
1*3e48767aSKurt Borja.. SPDX-License-Identifier: GPL-2.0-or-later
2*3e48767aSKurt Borja
3*3e48767aSKurt Borja====================
4*3e48767aSKurt BorjaAlienware WMI Driver
5*3e48767aSKurt Borja====================
6*3e48767aSKurt Borja
7*3e48767aSKurt BorjaKurt Borja <kuurtb@gmail.com>
8*3e48767aSKurt Borja
9*3e48767aSKurt BorjaThis is a driver for the "WMAX" WMI device, which is found in most Dell gaming
10*3e48767aSKurt Borjalaptops and controls various special features.
11*3e48767aSKurt Borja
12*3e48767aSKurt BorjaBefore the launch of M-Series laptops (~2018), the "WMAX" device controlled
13*3e48767aSKurt Borjabasic RGB lighting, deep sleep mode, HDMI mode and amplifier status.
14*3e48767aSKurt Borja
15*3e48767aSKurt BorjaLater, this device was completely repurpused. Now it mostly deals with thermal
16*3e48767aSKurt Borjaprofiles, sensor monitoring and overclocking. This interface is named "AWCC" and
17*3e48767aSKurt Borjais known to be used by the AWCC OEM application to control these features.
18*3e48767aSKurt Borja
19*3e48767aSKurt BorjaThe alienware-wmi driver controls both interfaces.
20*3e48767aSKurt Borja
21*3e48767aSKurt BorjaAWCC Interface
22*3e48767aSKurt Borja==============
23*3e48767aSKurt Borja
24*3e48767aSKurt BorjaWMI device documentation: Documentation/wmi/devices/alienware-wmi.rst
25*3e48767aSKurt Borja
26*3e48767aSKurt BorjaSupported devices
27*3e48767aSKurt Borja-----------------
28*3e48767aSKurt Borja
29*3e48767aSKurt Borja- Alienware M-Series laptops
30*3e48767aSKurt Borja- Alienware X-Series laptops
31*3e48767aSKurt Borja- Alienware Aurora Desktops
32*3e48767aSKurt Borja- Dell G-Series laptops
33*3e48767aSKurt Borja
34*3e48767aSKurt BorjaIf you believe your device supports the AWCC interface and you don't have any of
35*3e48767aSKurt Borjathe features described in this document, try the following alienware-wmi module
36*3e48767aSKurt Borjaparameters:
37*3e48767aSKurt Borja
38*3e48767aSKurt Borja- ``force_platform_profile=1``: Forces probing for platform profile support
39*3e48767aSKurt Borja- ``force_hwmon=1``: Forces probing for HWMON support
40*3e48767aSKurt Borja
41*3e48767aSKurt BorjaIf the module loads successfully with these parameters, consider submitting a
42*3e48767aSKurt Borjapatch adding your model to the ``awcc_dmi_table`` located in
43*3e48767aSKurt Borja``drivers/platform/x86/dell/alienware-wmi-wmax.c`` or contacting the maintainer
44*3e48767aSKurt Borjafor further guidance.
45*3e48767aSKurt Borja
46*3e48767aSKurt BorjaStatus
47*3e48767aSKurt Borja------
48*3e48767aSKurt Borja
49*3e48767aSKurt BorjaThe following features are currently supported:
50*3e48767aSKurt Borja
51*3e48767aSKurt Borja- :ref:`Platform Profile <platform-profile>`:
52*3e48767aSKurt Borja
53*3e48767aSKurt Borja  - Thermal profile control
54*3e48767aSKurt Borja
55*3e48767aSKurt Borja  - G-Mode toggling
56*3e48767aSKurt Borja
57*3e48767aSKurt Borja- :ref:`HWMON <hwmon>`:
58*3e48767aSKurt Borja
59*3e48767aSKurt Borja  - Sensor monitoring
60*3e48767aSKurt Borja
61*3e48767aSKurt Borja  - Manual fan control
62*3e48767aSKurt Borja
63*3e48767aSKurt Borja.. _platform-profile:
64*3e48767aSKurt Borja
65*3e48767aSKurt BorjaPlatform Profile
66*3e48767aSKurt Borja----------------
67*3e48767aSKurt Borja
68*3e48767aSKurt BorjaThe AWCC interface exposes various firmware defined thermal profiles. These are
69*3e48767aSKurt Borjaexposed to user-space through the Platform Profile class interface. Refer to
70*3e48767aSKurt Borja:ref:`sysfs-class-platform-profile <abi_file_testing_sysfs_class_platform_profile>`
71*3e48767aSKurt Borjafor more information.
72*3e48767aSKurt Borja
73*3e48767aSKurt BorjaThe name of the platform-profile class device exported by this driver is
74*3e48767aSKurt Borja"alienware-wmi" and it's path can be found with:
75*3e48767aSKurt Borja
76*3e48767aSKurt Borja::
77*3e48767aSKurt Borja
78*3e48767aSKurt Borja grep -l "alienware-wmi" /sys/class/platform-profile/platform-profile-*/name | sed 's|/[^/]*$||'
79*3e48767aSKurt Borja
80*3e48767aSKurt BorjaIf the device supports G-Mode, it is also toggled when selecting the
81*3e48767aSKurt Borja``performance`` profile.
82*3e48767aSKurt Borja
83*3e48767aSKurt Borja.. note::
84*3e48767aSKurt Borja   You may set the ``force_gmode`` module parameter to always try to toggle this
85*3e48767aSKurt Borja   feature, without checking if your model supports it.
86*3e48767aSKurt Borja
87*3e48767aSKurt Borja.. _hwmon:
88*3e48767aSKurt Borja
89*3e48767aSKurt BorjaHWMON
90*3e48767aSKurt Borja-----
91*3e48767aSKurt Borja
92*3e48767aSKurt BorjaThe AWCC interface also supports sensor monitoring and manual fan control. Both
93*3e48767aSKurt Borjaof these features are exposed to user-space through the HWMON interface.
94*3e48767aSKurt Borja
95*3e48767aSKurt BorjaThe name of the hwmon class device exported by this driver is "alienware_wmi"
96*3e48767aSKurt Borjaand it's path can be found with:
97*3e48767aSKurt Borja
98*3e48767aSKurt Borja::
99*3e48767aSKurt Borja
100*3e48767aSKurt Borja grep -l "alienware_wmi" /sys/class/hwmon/hwmon*/name | sed 's|/[^/]*$||'
101*3e48767aSKurt Borja
102*3e48767aSKurt BorjaSensor monitoring is done through the standard HWMON interface. Refer to
103*3e48767aSKurt Borja:ref:`sysfs-class-hwmon <abi_file_testing_sysfs_class_hwmon>` for more
104*3e48767aSKurt Borjainformation.
105*3e48767aSKurt Borja
106*3e48767aSKurt BorjaManual fan control on the other hand, is not exposed directly by the AWCC
107*3e48767aSKurt Borjainterface. Instead it let's us control a fan `boost` value. This `boost` value
108*3e48767aSKurt Borjahas the following aproximate behavior over the fan pwm:
109*3e48767aSKurt Borja
110*3e48767aSKurt Borja::
111*3e48767aSKurt Borja
112*3e48767aSKurt Borja pwm = pwm_base + (fan_boost / 255) * (pwm_max - pwm_base)
113*3e48767aSKurt Borja
114*3e48767aSKurt BorjaDue to the above behavior, the fan `boost` control is exposed to user-space
115*3e48767aSKurt Borjathrough the following, custom hwmon sysfs attribute:
116*3e48767aSKurt Borja
117*3e48767aSKurt Borja=============================== ======= =======================================
118*3e48767aSKurt BorjaName				Perm	Description
119*3e48767aSKurt Borja=============================== ======= =======================================
120*3e48767aSKurt Borjafan[1-4]_boost			RW	Fan boost value.
121*3e48767aSKurt Borja
122*3e48767aSKurt Borja					Integer value between 0 and 255
123*3e48767aSKurt Borja=============================== ======= =======================================
124*3e48767aSKurt Borja
125*3e48767aSKurt Borja.. note::
126*3e48767aSKurt Borja   In some devices, manual fan control only works reliably if the ``custom``
127*3e48767aSKurt Borja   platform profile is selected.
128