← Documents Documentation/wmi/devices/lenovo-wmi-gamezone.rst GitHub 원문 ↗

Linux 6.18.37 · WMI / Device Drivers

Lenovo WMI Interface Gamezone Driver

Lenovo Gaming Series의 platform profile, fan curve, overclock data와 WMI event interface를 설명합니다.

Source pathDocumentation/wmi/devices/lenovo-wmi-gamezone.rst
Source versionLinux v6.18.37
TranslationDUJINLABS 전문 번역 + 해설

요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.

1. 요약·해설

원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.

요약·해설

lenovo-wmi-gamezone.rst:1-203

Lenovo Gaming Series의 platform profile, fan curve, overclock data와 WMI event interface를 설명합니다.

2. 영어 원문 전체

번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.

원문 전체 펼치기
1 .. SPDX-License-Identifier: GPL-2.0-or-later
2
3 ==========================================================
4 Lenovo WMI Interface Gamezone Driver (lenovo-wmi-gamezone)
5 ==========================================================
6
7 Introduction
8 ============
9 The Lenovo WMI gamezone interface is broken up into multiple GUIDs,
10 The primary "Gamezone" GUID provides advanced features such as fan
11 profiles and overclocking. It is paired with multiple event GUIDs
12 and data block GUIDs that provide context for the various methods.
13
14 Gamezone Data
15 -------------
16
17 WMI GUID ``887B54E3-DDDC-4B2C-8B88-68A26A8835D0``
18
19 The Gamezone Data WMI interface provides platform-profile and fan curve
20 settings for devices that fall under the "Gaming Series" of Lenovo devices.
21 It uses a notifier chain to inform other Lenovo WMI interface drivers of the
22 current platform profile when it changes.
23
24 The following platform profiles are supported:
25 - low-power
26 - balanced
27 - balanced-performance
28 - performance
29 - custom
30
31 Balanced-Performance
32 ~~~~~~~~~~~~~~~~~~~~
33 Some newer Lenovo "Gaming Series" laptops have an "Extreme Mode" profile
34 enabled in their BIOS. For these devices, the performance platform profile
35 corresponds to the BIOS Extreme Mode, while the balanced-performance
36 platform profile corresponds to the BIOS Performance mode. For legacy
37 devices, the performance platform profile will correspond with the BIOS
38 Performance mode.
39
40 For some newer devices the "Extreme Mode" profile is incomplete in the BIOS
41 and setting it will cause undefined behavior. A BIOS bug quirk table is
42 provided to ensure these devices cannot set "Extreme Mode" from the driver.
43
44 Custom Profile
45 ~~~~~~~~~~~~~~
46 The custom profile represents a hardware mode on Lenovo devices that enables
47 user modifications to Package Power Tracking (PPT) and fan curve settings.
48 When an attribute exposed by the Other Mode WMI interface is to be modified,
49 the Gamezone driver must first be switched to the "custom" profile manually,
50 or the setting will have no effect. If another profile is set from the list
51 of supported profiles, the BIOS will override any user PPT settings when
52 switching to that profile.
53
54 Gamezone Thermal Mode Event
55 ---------------------------
56
57 WMI GUID ``D320289E-8FEA-41E0-86F9-911D83151B5F``
58
59 The Gamezone Thermal Mode Event interface notifies the system when the platform
60 profile has changed, either through the hardware event (Fn+Q for laptops or
61 Legion + Y for Go Series), or through the Gamezone WMI interface. This event is
62 implemented in the Lenovo WMI Events driver (lenovo-wmi-events).
63
64
65 WMI interface description
66 =========================
67
68 The WMI interface description can be decoded from the embedded binary MOF (bmof)
69 data using the `bmfdec <https://github.com/pali/bmfdec>`_ utility:
70
71 ::
72
73 [WMI, Dynamic, Provider("WmiProv"), Locale("MS\\0x409"), Description("LENOVO_GAMEZONE_DATA class"), guid("{887B54E3-DDDC-4B2C-8B88-68A26A8835D0}")]
74 class LENOVO_GAMEZONE_DATA {
75 [key, read] string InstanceName;
76 [read] boolean Active;
77
78 [WmiMethodId(4), Implemented, Description("Is SupportGpu OverClock")] void IsSupportGpuOC([out, Description("Is SupportGpu OverClock")] uint32 Data);
79 [WmiMethodId(11), Implemented, Description("Get AslCode Version")] void GetVersion ([out, Description("AslCode version")] UINT32 Data);
80 [WmiMethodId(12), Implemented, Description("Fan cooling capability")] void IsSupportFanCooling([out, Description("Fan cooling capability")] UINT32 Data);
81 [WmiMethodId(13), Implemented, Description("Set Fan cooling on/off")] void SetFanCooling ([in, Description("Set Fan cooling on/off")] UINT32 Data);
82 [WmiMethodId(14), Implemented, Description("cpu oc capability")] void IsSupportCpuOC ([out, Description("cpu oc capability")] UINT32 Data);
83 [WmiMethodId(15), Implemented, Description("bios has overclock capability")] void IsBIOSSupportOC ([out, Description("bios has overclock capability")] UINT32 Data);
84 [WmiMethodId(16), Implemented, Description("enable or disable overclock in bios")] void SetBIOSOC ([in, Description("enable or disable overclock in bios")] UINT32 Data);
85 [WmiMethodId(18), Implemented, Description("Get CPU temperature")] void GetCPUTemp ([out, Description("Get CPU temperature")] UINT32 Data);
86 [WmiMethodId(19), Implemented, Description("Get GPU temperature")] void GetGPUTemp ([out, Description("Get GPU temperature")] UINT32 Data);
87 [WmiMethodId(20), Implemented, Description("Get Fan cooling on/off status")] void GetFanCoolingStatus ([out, Description("Get Fan cooling on/off status")] UINT32 Data);
88 [WmiMethodId(21), Implemented, Description("EC support disable windows key capability")] void IsSupportDisableWinKey ([out, Description("EC support disable windows key capability")] UINT32 Data);
89 [WmiMethodId(22), Implemented, Description("Set windows key disable/enable")] void SetWinKeyStatus ([in, Description("Set windows key disable/enable")] UINT32 Data);
90 [WmiMethodId(23), Implemented, Description("Get windows key disable/enable status")] void GetWinKeyStatus ([out, Description("Get windows key disable/enable status")] UINT32 Data);
91 [WmiMethodId(24), Implemented, Description("EC support disable touchpad capability")] void IsSupportDisableTP ([out, Description("EC support disable touchpad capability")] UINT32 Data);
92 [WmiMethodId(25), Implemented, Description("Set touchpad disable/enable")] void SetTPStatus ([in, Description("Set touchpad disable/enable")] UINT32 Data);
93 [WmiMethodId(26), Implemented, Description("Get touchpad disable/enable status")] void GetTPStatus ([out, Description("Get touchpad disable/enable status")] UINT32 Data);
94 [WmiMethodId(30), Implemented, Description("Get Keyboard feature list")] void GetKeyboardfeaturelist ([out, Description("Get Keyboard feature list")] UINT32 Data);
95 [WmiMethodId(31), Implemented, Description("Get Memory OC Information")] void GetMemoryOCInfo ([out, Description("Get Memory OC Information")] UINT32 Data);
96 [WmiMethodId(32), Implemented, Description("Water Cooling feature capability")] void IsSupportWaterCooling ([out, Description("Water Cooling feature capability")] UINT32 Data);
97 [WmiMethodId(33), Implemented, Description("Set Water Cooling status")] void SetWaterCoolingStatus ([in, Description("Set Water Cooling status")] UINT32 Data);
98 [WmiMethodId(34), Implemented, Description("Get Water Cooling status")] void GetWaterCoolingStatus ([out, Description("Get Water Cooling status")] UINT32 Data);
99 [WmiMethodId(35), Implemented, Description("Lighting feature capability")] void IsSupportLightingFeature ([out, Description("Lighting feature capability")] UINT32 Data);
100 [WmiMethodId(36), Implemented, Description("Set keyboard light off or on to max")] void SetKeyboardLight ([in, Description("keyboard light off or on switch")] UINT32 Data);
101 [WmiMethodId(37), Implemented, Description("Get keyboard light on/off status")] void GetKeyboardLight ([out, Description("Get keyboard light on/off status")] UINT32 Data);
102 [WmiMethodId(38), Implemented, Description("Get Macrokey scan code")] void GetMacrokeyScancode ([in, Description("Macrokey index")] UINT32 idx, [out, Description("Scan code")] UINT32 scancode);
103 [WmiMethodId(39), Implemented, Description("Get Macrokey count")] void GetMacrokeyCount ([out, Description("Macrokey count")] UINT32 Data);
104 [WmiMethodId(40), Implemented, Description("Support G-Sync feature")] void IsSupportGSync ([out, Description("Support G-Sync feature")] UINT32 Data);
105 [WmiMethodId(41), Implemented, Description("Get G-Sync Status")] void GetGSyncStatus ([out, Description("Get G-Sync Status")] UINT32 Data);
106 [WmiMethodId(42), Implemented, Description("Set G-Sync Status")] void SetGSyncStatus ([in, Description("Set G-Sync Status")] UINT32 Data);
107 [WmiMethodId(43), Implemented, Description("Support Smart Fan feature")] void IsSupportSmartFan ([out, Description("Support Smart Fan feature")] UINT32 Data);
108 [WmiMethodId(44), Implemented, Description("Set Smart Fan Mode")] void SetSmartFanMode ([in, Description("Set Smart Fan Mode")] UINT32 Data);
109 [WmiMethodId(45), Implemented, Description("Get Smart Fan Mode")] void GetSmartFanMode ([out, Description("Get Smart Fan Mode")] UINT32 Data);
110 [WmiMethodId(46), Implemented, Description("Get Smart Fan Setting Mode")] void GetSmartFanSetting ([out, Description("Get Smart Setting Mode")] UINT32 Data);
111 [WmiMethodId(47), Implemented, Description("Get Power Charge Mode")] void GetPowerChargeMode ([out, Description("Get Power Charge Mode")] UINT32 Data);
112 [WmiMethodId(48), Implemented, Description("Get Gaming Product Info")] void GetProductInfo ([out, Description("Get Gaming Product Info")] UINT32 Data);
113 [WmiMethodId(49), Implemented, Description("Over Drive feature capability")] void IsSupportOD ([out, Description("Over Drive feature capability")] UINT32 Data);
114 [WmiMethodId(50), Implemented, Description("Get Over Drive status")] void GetODStatus ([out, Description("Get Over Drive status")] UINT32 Data);
115 [WmiMethodId(51), Implemented, Description("Set Over Drive status")] void SetODStatus ([in, Description("Set Over Drive status")] UINT32 Data);
116 [WmiMethodId(52), Implemented, Description("Set Light Control Owner")] void SetLightControlOwner ([in, Description("Set Light Control Owner")] UINT32 Data);
117 [WmiMethodId(53), Implemented, Description("Set DDS Control Owner")] void SetDDSControlOwner ([in, Description("Set DDS Control Owner")] UINT32 Data);
118 [WmiMethodId(54), Implemented, Description("Get the flag of restore OC value")] void IsRestoreOCValue ([in, Description("Clean this flag")] UINT32 idx, [out, Description("Restore oc value flag")] UINT32 Data);
119 [WmiMethodId(55), Implemented, Description("Get Real Thremal Mode")] void GetThermalMode ([out, Description("Real Thremal Mode")] UINT32 Data);
120 [WmiMethodId(56), Implemented, Description("Get the OC switch status in BIOS")] void GetBIOSOCMode ([out, Description("OC Mode")] UINT32 Data);
121 [WmiMethodId(59), Implemented, Description("Get hardware info support version")] void GetHardwareInfoSupportVersion ([out, Description("version")] UINT32 Data);
122 [WmiMethodId(60), Implemented, Description("Get Cpu core 0 max frequency")] void GetCpuFrequency ([out, Description("frequency")] UINT32 Data);
123 [WmiMethodId(62), Implemented, Description("Check the Adapter type fit for OC")] void IsACFitForOC ([out, Description("AC check result")] UINT32 Data);
124 [WmiMethodId(63), Implemented, Description("Is support IGPU mode")] void IsSupportIGPUMode ([out, Description("IGPU modes")] UINT32 Data);
125 [WmiMethodId(64), Implemented, Description("Get IGPU Mode Status")] void GetIGPUModeStatus([out, Description("IGPU Mode Status")] UINT32 Data);
126 [WmiMethodId(65), Implemented, Description("Set IGPU Mode")] void SetIGPUModeStatus([in, Description("IGPU Mode")] UINT32 mode, [out, Description("return code")] UINT32 Data);
127 [WmiMethodId(66), Implemented, Description("Notify DGPU Status")] void NotifyDGPUStatus([in, Description("DGPU status")] UINT32 status, [out, Description("return code")] UINT32 Data);
128 [WmiMethodId(67), Implemented, Description("Is changed Y log")] void IsChangedYLog([out, Description("Is changed Y Log")] UINT32 Data);
129 [WmiMethodId(68), Implemented, Description("Get DGPU Hardwawre ID")] void GetDGPUHWId([out, Description("Get DGPU Hardware ID")] string Data);
130 };
131
132 [WMI, Dynamic, Provider("WmiProv"), Locale("MS\\0x409"), Description("Definition of CPU OC parameter list"), guid("{B7F3CA0A-ACDC-42D2-9217-77C6C628FBD2}")]
133 class LENOVO_GAMEZONE_CPU_OC_DATA {
134 [key, read] string InstanceName;
135 [read] boolean Active;
136
137 [WmiDataId(1), read, Description("OC tune id.")] uint32 Tuneid;
138 [WmiDataId(2), read, Description("Default value.")] uint32 DefaultValue;
139 [WmiDataId(3), read, Description("OC Value.")] uint32 OCValue;
140 [WmiDataId(4), read, Description("Min Value.")] uint32 MinValue;
141 [WmiDataId(5), read, Description("Max Value.")] uint32 MaxValue;
142 [WmiDataId(6), read, Description("Scale Value.")] uint32 ScaleValue;
143 [WmiDataId(7), read, Description("OC Order id.")] uint32 OCOrderid;
144 [WmiDataId(8), read, Description("NON-OC Order id.")] uint32 NOCOrderid;
145 [WmiDataId(9), read, Description("Delay time in ms.")] uint32 Interval;
146 };
147
148 [WMI, Dynamic, Provider("WmiProv"), Locale("MS\\0x409"), Description("Definition of GPU OC parameter list"), guid("{887B54E2-DDDC-4B2C-8B88-68A26A8835D0}")]
149 class LENOVO_GAMEZONE_GPU_OC_DATA {
150 [key, read] string InstanceName;
151 [read] boolean Active;
152
153 [WmiDataId(1), read, Description("P-State ID.")] uint32 PStateID;
154 [WmiDataId(2), read, Description("CLOCK ID.")] uint32 ClockID;
155 [WmiDataId(3), read, Description("Default value.")] uint32 defaultvalue;
156 [WmiDataId(4), read, Description("OC Offset freqency.")] uint32 OCOffsetFreq;
157 [WmiDataId(5), read, Description("OC Min offset value.")] uint32 OCMinOffset;
158 [WmiDataId(6), read, Description("OC Max offset value.")] uint32 OCMaxOffset;
159 [WmiDataId(7), read, Description("OC Offset Scale.")] uint32 OCOffsetScale;
160 [WmiDataId(8), read, Description("OC Order id.")] uint32 OCOrderid;
161 [WmiDataId(9), read, Description("NON-OC Order id.")] uint32 NOCOrderid;
162 };
163
164 [WMI, Dynamic, Provider("WmiProv"), Locale("MS\\0x409"), Description("Fancooling finish event"), guid("{BC72A435-E8C1-4275-B3E2-D8B8074ABA59}")]
165 class LENOVO_GAMEZONE_FAN_COOLING_EVENT: WMIEvent {
166 [key, read] string InstanceName;
167 [read] boolean Active;
168
169 [WmiDataId(1), read, Description("Fancooling clean finish event")] uint32 EventId;
170 };
171
172 [WMI, Dynamic, Provider("WmiProv"), Locale("MS\\0x409"), Description("Smart Fan mode change event"), guid("{D320289E-8FEA-41E0-86F9-611D83151B5F}")]
173 class LENOVO_GAMEZONE_SMART_FAN_MODE_EVENT: WMIEvent {
174 [key, read] string InstanceName;
175 [read] boolean Active;
176
177 [WmiDataId(1), read, Description("Smart Fan Mode change event")] uint32 mode;
178 [WmiDataId(2), read, Description("version of FN+Q")] uint32 version;
179 };
180
181 [WMI, Dynamic, Provider("WmiProv"), Locale("MS\\0x409"), Description("Smart Fan setting mode change event"), guid("{D320289E-8FEA-41E1-86F9-611D83151B5F}")]
182 class LENOVO_GAMEZONE_SMART_FAN_SETTING_EVENT: WMIEvent {
183 [key, read] string InstanceName;
184 [read] boolean Active;
185
186 [WmiDataId(1), read, Description("Smart Fan Setting mode change event")] uint32 mode;
187 };
188
189 [WMI, Dynamic, Provider("WmiProv"), Locale("MS\\0x409"), Description("POWER CHARGE MODE Change EVENT"), guid("{D320289E-8FEA-41E0-86F9-711D83151B5F}")]
190 class LENOVO_GAMEZONE_POWER_CHARGE_MODE_EVENT: WMIEvent {
191 [key, read] string InstanceName;
192 [read] boolean Active;
193
194 [WmiDataId(1), read, Description("POWER CHARGE MODE Change EVENT")] uint32 mode;
195 };
196
197 [WMI, Dynamic, Provider("WmiProv"), Locale("MS\\0x409"), Description("Thermal Mode Real Mode change event"), guid("{D320289E-8FEA-41E0-86F9-911D83151B5F}")]
198 class LENOVO_GAMEZONE_THERMAL_MODE_EVENT: WMIEvent {
199 [key, read] string InstanceName;
200 [read] boolean Active;
201
202 [WmiDataId(1), read, Description("Thermal Mode Real Mode")] uint32 mode;
203 };
204

3. 한국어 전문 번역

영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.

여러 GUID로 구성된 Gamezone interface

1-13

Lenovo WMI gamezone interface는 여러 GUID로 나뉩니다. 주 `Gamezone` GUID는 fan profile과 overclocking 같은 고급 기능을 제공하고, 여러 event GUID와 data block GUID가 각 method에 필요한 context를 제공합니다.

.. SPDX-License-Identifier: GPL-2.0-or-later

==========================================================
Lenovo WMI Interface Gamezone Driver (lenovo-wmi-gamezone)
==========================================================

Introduction
============
The Lenovo WMI gamezone interface is broken up into multiple GUIDs,
The primary "Gamezone" GUID provides advanced features such as fan
profiles and overclocking. It is paired with multiple event GUIDs
and data block GUIDs that provide context for the various methods.

platform profile과 notifier chain

14-30

GUID `887B54E3-DDDC-4B2C-8B88-68A26A8835D0`의 Gamezone Data interface는 Lenovo Gaming Series 장치에 platform profile과 fan curve 설정을 제공합니다.

profile이 바뀌면 notifier chain을 통해 다른 Lenovo WMI interface driver에 현재 profile을 알립니다. 지원 profile은 low-power, balanced, balanced-performance, performance, custom입니다.

지원 platform profile
Profile용도
low-power전력 절감
balanced균형 mode
balanced-performance균형 성능 mode
performance최고 성능 mode
custom사용자 PPT·fan curve 설정

Gamezone driver가 노출하는 profile 목록입니다.

Gamezone Data
-------------

WMI GUID ``887B54E3-DDDC-4B2C-8B88-68A26A8835D0``

The Gamezone Data WMI interface provides platform-profile and fan curve
settings for devices that fall under the "Gaming Series" of Lenovo devices.
It uses a notifier chain to inform other Lenovo WMI interface drivers of the
current platform profile when it changes.

The following platform profiles are supported:
 - low-power
 - balanced
 - balanced-performance
 - performance
 - custom

Extreme Mode와 balanced-performance

31-43

일부 신형 Gaming Series laptop은 BIOS에서 `Extreme Mode`가 활성화됩니다. 이 장치에서 Linux `performance` profile은 BIOS Extreme Mode에, `balanced-performance`는 BIOS Performance mode에 대응합니다. 구형 장치에서는 `performance`가 BIOS Performance mode에 대응합니다.

일부 신형 장치의 Extreme Mode는 BIOS 구현이 불완전해 설정하면 정의되지 않은 동작을 일으킵니다. driver는 BIOS bug quirk table로 해당 장치에서 Extreme Mode를 설정하지 못하게 막습니다.

Balanced-Performance
~~~~~~~~~~~~~~~~~~~~
Some newer Lenovo "Gaming Series" laptops have an "Extreme Mode" profile
enabled in their BIOS. For these devices, the performance platform profile
corresponds to the BIOS Extreme Mode, while the balanced-performance
platform profile corresponds to the BIOS Performance mode. For legacy
devices, the performance platform profile will correspond with the BIOS
Performance mode.

For some newer devices the "Extreme Mode" profile is incomplete in the BIOS
and setting it will cause undefined behavior. A BIOS bug quirk table is
provided to ensure these devices cannot set "Extreme Mode" from the driver.

custom profile과 PPT

44-53

custom profile은 Package Power Tracking(PPT)과 fan curve를 사용자가 변경할 수 있게 하는 Lenovo hardware mode입니다.

Other Mode WMI interface의 속성을 바꾸기 전에 Gamezone driver를 수동으로 `custom` profile로 전환해야 하며, 그렇지 않으면 설정이 효과를 내지 않습니다. 다른 지원 profile로 전환하면 BIOS가 사용자 PPT 설정을 덮어씁니다.

Custom Profile
~~~~~~~~~~~~~~
The custom profile represents a hardware mode on Lenovo devices that enables
user modifications to Package Power Tracking (PPT) and fan curve settings.
When an attribute exposed by the Other Mode WMI interface is to be modified,
the Gamezone driver must first be switched to the "custom" profile manually,
or the setting will have no effect. If another profile is set from the list
of supported profiles, the BIOS will override any user PPT settings when
switching to that profile.

thermal mode 변경 event

54-64

GUID `D320289E-8FEA-41E0-86F9-911D83151B5F`의 Gamezone Thermal Mode Event는 laptop의 Fn+Q, Go Series의 Legion+Y hardware event 또는 Gamezone WMI interface를 통해 platform profile이 바뀔 때 system에 알립니다.

이 event의 구현은 Lenovo WMI Events driver인 `lenovo-wmi-events`에 있습니다.

profile 변경 알림
Fn+Q·Legion+Y 또는 Gamezone WMI로 profile 변경Thermal Mode Event 발생lenovo-wmi-events가 event 처리notifier chain으로 현재 profile 전파

hardware key와 software 설정이 같은 event 경로로 수렴합니다.

Gamezone Thermal Mode Event
---------------------------

WMI GUID ``D320289E-8FEA-41E0-86F9-911D83151B5F``

The Gamezone Thermal Mode Event interface notifies the system when the platform
profile has changed, either through the hardware event (Fn+Q for laptops or
Legion + Y for Go Series), or through the Gamezone WMI interface. This event is
implemented in the Lenovo WMI Events driver (lenovo-wmi-events).

LENOVO_GAMEZONE_DATA method

65-130

embedded binary MOF는 `bmfdec`로 decode할 수 있습니다. `LENOVO_GAMEZONE_DATA` class에는 overclock, fan cooling, key·touchpad, lighting, G-Sync, Smart Fan, charge, Over Drive, GPU mode 등 52개 WMI method가 선언됩니다.

Gamezone WMI method
IDMethod설명
4IsSupportGpuOCGPU overclock 지원 여부
11GetVersionASL code version 조회
12IsSupportFanCoolingfan cooling 지원 여부
13SetFanCoolingfan cooling 켜기·끄기
14IsSupportCpuOCCPU overclock 지원 여부
15IsBIOSSupportOCBIOS overclock 지원 여부
16SetBIOSOCBIOS overclock 활성화·비활성화
18GetCPUTempCPU 온도 조회
19GetGPUTempGPU 온도 조회
20GetFanCoolingStatusfan cooling 상태 조회
21IsSupportDisableWinKeyWindows key 비활성화 지원 여부
22SetWinKeyStatusWindows key 상태 설정
23GetWinKeyStatusWindows key 상태 조회
24IsSupportDisableTPtouchpad 비활성화 지원 여부
25SetTPStatustouchpad 상태 설정
26GetTPStatustouchpad 상태 조회
30GetKeyboardfeaturelistkeyboard 기능 목록 조회
31GetMemoryOCInfomemory overclock 정보 조회
32IsSupportWaterCoolingwater cooling 지원 여부
33SetWaterCoolingStatuswater cooling 상태 설정
34GetWaterCoolingStatuswater cooling 상태 조회
35IsSupportLightingFeaturelighting 기능 지원 여부
36SetKeyboardLightkeyboard light 끄기 또는 최대 밝기 켜기
37GetKeyboardLightkeyboard light 상태 조회
38GetMacrokeyScancodemacro key index의 scan code 조회
39GetMacrokeyCountmacro key 수 조회
40IsSupportGSyncG-Sync 지원 여부
41GetGSyncStatusG-Sync 상태 조회
42SetGSyncStatusG-Sync 상태 설정
43IsSupportSmartFanSmart Fan 지원 여부
44SetSmartFanModeSmart Fan mode 설정
45GetSmartFanModeSmart Fan mode 조회
46GetSmartFanSettingSmart Fan setting mode 조회
47GetPowerChargeModepower charge mode 조회
48GetProductInfogaming product 정보 조회
49IsSupportODOver Drive 지원 여부
50GetODStatusOver Drive 상태 조회
51SetODStatusOver Drive 상태 설정
52SetLightControlOwnerlight control owner 설정
53SetDDSControlOwnerDDS control owner 설정
54IsRestoreOCValueoverclock 값 복원 flag 조회·지우기
55GetThermalMode실제 thermal mode 조회
56GetBIOSOCModeBIOS overclock switch 상태 조회
59GetHardwareInfoSupportVersionhardware 정보 지원 version 조회
60GetCpuFrequencyCPU core 0 최대 frequency 조회
62IsACFitForOCadapter type의 overclock 적합성 검사
63IsSupportIGPUModeIGPU mode 지원 여부
64GetIGPUModeStatusIGPU mode 상태 조회
65SetIGPUModeStatusIGPU mode 설정과 return code
66NotifyDGPUStatusDGPU 상태 알림과 return code
67IsChangedYLogY log 변경 여부
68GetDGPUHWIdDGPU hardware ID 조회

WmiMethodId와 method의 선언상 목적을 일대일로 번역했습니다.

WMI interface description
=========================

The WMI interface description can be decoded from the embedded binary MOF (bmof)
data using the `bmfdec <https://github.com/pali/bmfdec>`_ utility:

::

  [WMI, Dynamic, Provider("WmiProv"), Locale("MS\\0x409"), Description("LENOVO_GAMEZONE_DATA class"), guid("{887B54E3-DDDC-4B2C-8B88-68A26A8835D0}")]
  class LENOVO_GAMEZONE_DATA {
    [key, read] string InstanceName;
    [read] boolean Active;

    [WmiMethodId(4), Implemented, Description("Is SupportGpu OverClock")] void IsSupportGpuOC([out, Description("Is SupportGpu OverClock")] uint32 Data);
    [WmiMethodId(11), Implemented, Description("Get AslCode Version")] void GetVersion ([out, Description("AslCode version")] UINT32 Data);
    [WmiMethodId(12), Implemented, Description("Fan cooling capability")] void IsSupportFanCooling([out, Description("Fan cooling capability")] UINT32 Data);
    [WmiMethodId(13), Implemented, Description("Set Fan cooling on/off")] void SetFanCooling ([in, Description("Set Fan cooling on/off")] UINT32 Data);
    [WmiMethodId(14), Implemented, Description("cpu oc capability")] void IsSupportCpuOC ([out, Description("cpu oc capability")] UINT32 Data);
    [WmiMethodId(15), Implemented, Description("bios has overclock capability")] void IsBIOSSupportOC ([out, Description("bios has overclock capability")] UINT32 Data);
    [WmiMethodId(16), Implemented, Description("enable or disable overclock in bios")] void SetBIOSOC ([in, Description("enable or disable overclock in bios")] UINT32 Data);
    [WmiMethodId(18), Implemented, Description("Get CPU temperature")] void GetCPUTemp ([out, Description("Get CPU temperature")] UINT32 Data);
    [WmiMethodId(19), Implemented, Description("Get GPU temperature")] void GetGPUTemp ([out, Description("Get GPU temperature")] UINT32 Data);
    [WmiMethodId(20), Implemented, Description("Get Fan cooling on/off status")] void GetFanCoolingStatus ([out, Description("Get Fan cooling on/off status")] UINT32 Data);
    [WmiMethodId(21), Implemented, Description("EC support disable windows key capability")] void IsSupportDisableWinKey ([out, Description("EC support disable windows key capability")] UINT32 Data);
    [WmiMethodId(22), Implemented, Description("Set windows key disable/enable")] void SetWinKeyStatus ([in, Description("Set windows key disable/enable")] UINT32 Data);
    [WmiMethodId(23), Implemented, Description("Get windows key disable/enable status")] void GetWinKeyStatus ([out, Description("Get windows key disable/enable status")] UINT32 Data);
    [WmiMethodId(24), Implemented, Description("EC support disable touchpad capability")] void IsSupportDisableTP ([out, Description("EC support disable touchpad capability")] UINT32 Data);
    [WmiMethodId(25), Implemented, Description("Set touchpad disable/enable")] void SetTPStatus ([in, Description("Set touchpad disable/enable")] UINT32 Data);
    [WmiMethodId(26), Implemented, Description("Get touchpad disable/enable status")] void GetTPStatus ([out, Description("Get touchpad disable/enable status")] UINT32 Data);
    [WmiMethodId(30), Implemented, Description("Get Keyboard feature list")] void GetKeyboardfeaturelist ([out, Description("Get Keyboard feature list")] UINT32 Data);
    [WmiMethodId(31), Implemented, Description("Get Memory OC Information")] void GetMemoryOCInfo ([out, Description("Get Memory OC Information")] UINT32 Data);
    [WmiMethodId(32), Implemented, Description("Water Cooling feature capability")] void IsSupportWaterCooling ([out, Description("Water Cooling feature capability")] UINT32 Data);
    [WmiMethodId(33), Implemented, Description("Set Water Cooling status")] void SetWaterCoolingStatus ([in, Description("Set Water Cooling status")] UINT32 Data);
    [WmiMethodId(34), Implemented, Description("Get Water Cooling status")] void GetWaterCoolingStatus ([out, Description("Get Water Cooling status")] UINT32 Data);
    [WmiMethodId(35), Implemented, Description("Lighting feature capability")] void IsSupportLightingFeature ([out, Description("Lighting feature capability")] UINT32 Data);
    [WmiMethodId(36), Implemented, Description("Set keyboard light off or on to max")] void SetKeyboardLight ([in, Description("keyboard light off or on switch")] UINT32 Data);
    [WmiMethodId(37), Implemented, Description("Get keyboard light on/off status")] void GetKeyboardLight ([out, Description("Get keyboard light on/off status")] UINT32 Data);
    [WmiMethodId(38), Implemented, Description("Get Macrokey scan code")] void GetMacrokeyScancode ([in, Description("Macrokey index")] UINT32 idx, [out, Description("Scan code")] UINT32 scancode);
    [WmiMethodId(39), Implemented, Description("Get Macrokey count")] void GetMacrokeyCount ([out, Description("Macrokey count")] UINT32 Data);
    [WmiMethodId(40), Implemented, Description("Support G-Sync feature")] void IsSupportGSync ([out, Description("Support G-Sync feature")] UINT32 Data);
    [WmiMethodId(41), Implemented, Description("Get G-Sync Status")] void GetGSyncStatus ([out, Description("Get G-Sync Status")] UINT32 Data);
    [WmiMethodId(42), Implemented, Description("Set G-Sync Status")] void SetGSyncStatus ([in, Description("Set G-Sync Status")] UINT32 Data);
    [WmiMethodId(43), Implemented, Description("Support Smart Fan feature")] void IsSupportSmartFan ([out, Description("Support Smart Fan feature")] UINT32 Data);
    [WmiMethodId(44), Implemented, Description("Set Smart Fan Mode")] void SetSmartFanMode ([in, Description("Set Smart Fan Mode")] UINT32 Data);
    [WmiMethodId(45), Implemented, Description("Get Smart Fan Mode")] void GetSmartFanMode ([out, Description("Get Smart Fan Mode")] UINT32 Data);
    [WmiMethodId(46), Implemented, Description("Get Smart Fan Setting Mode")] void GetSmartFanSetting ([out, Description("Get Smart Setting Mode")] UINT32 Data);
    [WmiMethodId(47), Implemented, Description("Get Power Charge Mode")] void GetPowerChargeMode ([out, Description("Get Power Charge Mode")] UINT32 Data);
    [WmiMethodId(48), Implemented, Description("Get Gaming Product Info")] void GetProductInfo ([out, Description("Get Gaming Product Info")] UINT32 Data);
    [WmiMethodId(49), Implemented, Description("Over Drive feature capability")] void IsSupportOD ([out, Description("Over Drive feature capability")] UINT32 Data);
    [WmiMethodId(50), Implemented, Description("Get Over Drive status")] void GetODStatus ([out, Description("Get Over Drive status")] UINT32 Data);
    [WmiMethodId(51), Implemented, Description("Set Over Drive status")] void SetODStatus ([in, Description("Set Over Drive status")] UINT32 Data);
    [WmiMethodId(52), Implemented, Description("Set Light Control Owner")] void SetLightControlOwner ([in, Description("Set Light Control Owner")] UINT32 Data);
    [WmiMethodId(53), Implemented, Description("Set DDS Control Owner")] void SetDDSControlOwner ([in, Description("Set DDS Control Owner")] UINT32 Data);
    [WmiMethodId(54), Implemented, Description("Get the flag of restore OC value")] void IsRestoreOCValue ([in, Description("Clean this flag")] UINT32 idx, [out, Description("Restore oc value flag")] UINT32 Data);
    [WmiMethodId(55), Implemented, Description("Get Real Thremal Mode")] void GetThermalMode ([out, Description("Real Thremal Mode")] UINT32 Data);
    [WmiMethodId(56), Implemented, Description("Get the OC switch status in BIOS")] void GetBIOSOCMode ([out, Description("OC Mode")] UINT32 Data);
    [WmiMethodId(59), Implemented, Description("Get hardware info support version")] void GetHardwareInfoSupportVersion ([out, Description("version")] UINT32 Data);
    [WmiMethodId(60), Implemented, Description("Get Cpu core 0 max frequency")] void GetCpuFrequency ([out, Description("frequency")] UINT32 Data);
    [WmiMethodId(62), Implemented, Description("Check the Adapter type fit for OC")] void IsACFitForOC ([out, Description("AC check result")] UINT32 Data);
    [WmiMethodId(63), Implemented, Description("Is support IGPU mode")] void IsSupportIGPUMode ([out, Description("IGPU modes")] UINT32 Data);
    [WmiMethodId(64), Implemented, Description("Get IGPU Mode Status")] void GetIGPUModeStatus([out, Description("IGPU Mode Status")] UINT32 Data);
    [WmiMethodId(65), Implemented, Description("Set IGPU Mode")] void SetIGPUModeStatus([in, Description("IGPU Mode")] UINT32 mode, [out, Description("return code")] UINT32 Data);
    [WmiMethodId(66), Implemented, Description("Notify DGPU Status")] void NotifyDGPUStatus([in, Description("DGPU status")] UINT32 status, [out, Description("return code")] UINT32 Data);
    [WmiMethodId(67), Implemented, Description("Is changed Y log")] void IsChangedYLog([out, Description("Is changed Y Log")] UINT32 Data);
    [WmiMethodId(68), Implemented, Description("Get DGPU Hardwawre ID")] void GetDGPUHWId([out, Description("Get DGPU Hardware ID")] string Data);
  };

CPU overclock data block

131-147

GUID `B7F3CA0A-ACDC-42D2-9217-77C6C628FBD2`의 `LENOVO_GAMEZONE_CPU_OC_DATA`는 CPU overclock parameter 하나를 설명합니다.

CPU OC field
IDField설명
1TuneidOC tune ID
2DefaultValue기본값
3OCValue현재 OC 값
4MinValue최솟값
5MaxValue최댓값
6ScaleValuescale 값
7OCOrderidOC order ID
8NOCOrderidnon-OC order ID
9Interval지연 시간(ms)

WmiDataId별 값의 의미입니다.


  [WMI, Dynamic, Provider("WmiProv"), Locale("MS\\0x409"), Description("Definition of CPU OC parameter list"), guid("{B7F3CA0A-ACDC-42D2-9217-77C6C628FBD2}")]
  class LENOVO_GAMEZONE_CPU_OC_DATA {
    [key, read] string InstanceName;
    [read] boolean Active;

    [WmiDataId(1), read, Description("OC tune id.")] uint32 Tuneid;
    [WmiDataId(2), read, Description("Default value.")] uint32 DefaultValue;
    [WmiDataId(3), read, Description("OC Value.")] uint32 OCValue;
    [WmiDataId(4), read, Description("Min Value.")] uint32 MinValue;
    [WmiDataId(5), read, Description("Max Value.")] uint32 MaxValue;
    [WmiDataId(6), read, Description("Scale Value.")] uint32 ScaleValue;
    [WmiDataId(7), read, Description("OC Order id.")] uint32 OCOrderid;
    [WmiDataId(8), read, Description("NON-OC Order id.")] uint32 NOCOrderid;
    [WmiDataId(9), read, Description("Delay time in ms.")] uint32 Interval;
  };

GPU overclock data block

148-163

GUID `887B54E2-DDDC-4B2C-8B88-68A26A8835D0`의 `LENOVO_GAMEZONE_GPU_OC_DATA`는 GPU P-state와 clock별 overclock offset 범위를 설명합니다.

GPU OC field
IDField설명
1PStateIDP-state ID
2ClockIDclock ID
3defaultvalue기본값
4OCOffsetFreqOC offset frequency
5OCMinOffsetOC 최소 offset
6OCMaxOffsetOC 최대 offset
7OCOffsetScaleOC offset scale
8OCOrderidOC order ID
9NOCOrderidnon-OC order ID

WmiDataId별 값의 의미입니다.

  [WMI, Dynamic, Provider("WmiProv"), Locale("MS\\0x409"), Description("Definition of GPU OC parameter list"), guid("{887B54E2-DDDC-4B2C-8B88-68A26A8835D0}")]
  class LENOVO_GAMEZONE_GPU_OC_DATA {
    [key, read] string InstanceName;
    [read] boolean Active;

    [WmiDataId(1), read, Description("P-State ID.")] uint32 PStateID;
    [WmiDataId(2), read, Description("CLOCK ID.")] uint32 ClockID;
    [WmiDataId(3), read, Description("Default value.")] uint32 defaultvalue;
    [WmiDataId(4), read, Description("OC Offset freqency.")] uint32 OCOffsetFreq;
    [WmiDataId(5), read, Description("OC Min offset value.")] uint32 OCMinOffset;
    [WmiDataId(6), read, Description("OC Max offset value.")] uint32 OCMaxOffset;
    [WmiDataId(7), read, Description("OC Offset Scale.")] uint32 OCOffsetScale;
    [WmiDataId(8), read, Description("OC Order id.")] uint32 OCOrderid;
    [WmiDataId(9), read, Description("NON-OC Order id.")] uint32 NOCOrderid;
  };

fan·Smart Fan·charge·thermal event

164-203

나머지 bmof class는 fan cooling 완료, Smart Fan mode 변경, Smart Fan setting mode 변경, power charge mode 변경, 실제 thermal mode 변경을 WMI event로 전달합니다.

Smart Fan mode event는 mode와 Fn+Q version을 함께 제공하고, 다른 event는 각각 완료 EventId 또는 변경된 mode를 제공합니다.

Gamezone event class
ClassPayload의미
LENOVO_GAMEZONE_FAN_COOLING_EVENTEventIdfan cooling clean 완료
LENOVO_GAMEZONE_SMART_FAN_MODE_EVENTmode, versionSmart Fan mode와 Fn+Q version 변경
LENOVO_GAMEZONE_SMART_FAN_SETTING_EVENTmodeSmart Fan setting mode 변경
LENOVO_GAMEZONE_POWER_CHARGE_MODE_EVENTmodepower charge mode 변경
LENOVO_GAMEZONE_THERMAL_MODE_EVENTmode실제 thermal mode 변경

event GUID class와 payload입니다.

  [WMI, Dynamic, Provider("WmiProv"), Locale("MS\\0x409"), Description("Fancooling finish event"), guid("{BC72A435-E8C1-4275-B3E2-D8B8074ABA59}")]
  class LENOVO_GAMEZONE_FAN_COOLING_EVENT: WMIEvent {
    [key, read] string InstanceName;
    [read] boolean Active;

    [WmiDataId(1), read, Description("Fancooling clean finish event")] uint32 EventId;
  };

  [WMI, Dynamic, Provider("WmiProv"), Locale("MS\\0x409"), Description("Smart Fan mode change event"), guid("{D320289E-8FEA-41E0-86F9-611D83151B5F}")]
  class LENOVO_GAMEZONE_SMART_FAN_MODE_EVENT: WMIEvent {
    [key, read] string InstanceName;
    [read] boolean Active;

    [WmiDataId(1), read, Description("Smart Fan Mode change event")] uint32 mode;
    [WmiDataId(2), read, Description("version of FN+Q")] uint32 version;
  };

  [WMI, Dynamic, Provider("WmiProv"), Locale("MS\\0x409"), Description("Smart Fan setting mode change event"), guid("{D320289E-8FEA-41E1-86F9-611D83151B5F}")]
  class LENOVO_GAMEZONE_SMART_FAN_SETTING_EVENT: WMIEvent {
    [key, read] string InstanceName;
    [read] boolean Active;

    [WmiDataId(1), read, Description("Smart Fan Setting mode change event")] uint32 mode;
  };

  [WMI, Dynamic, Provider("WmiProv"), Locale("MS\\0x409"), Description("POWER CHARGE MODE Change EVENT"), guid("{D320289E-8FEA-41E0-86F9-711D83151B5F}")]
  class LENOVO_GAMEZONE_POWER_CHARGE_MODE_EVENT: WMIEvent {
    [key, read] string InstanceName;
    [read] boolean Active;

    [WmiDataId(1), read, Description("POWER CHARGE MODE Change EVENT")] uint32 mode;
  };

  [WMI, Dynamic, Provider("WmiProv"), Locale("MS\\0x409"), Description("Thermal Mode Real Mode change event"), guid("{D320289E-8FEA-41E0-86F9-911D83151B5F}")]
  class LENOVO_GAMEZONE_THERMAL_MODE_EVENT: WMIEvent {
    [key, read] string InstanceName;
    [read] boolean Active;

    [WmiDataId(1), read, Description("Thermal Mode Real Mode")] uint32 mode;
  };