~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/Documentation/wmi/devices/dell-wmi-ddv.rst

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /Documentation/wmi/devices/dell-wmi-ddv.rst (Version linux-6.12-rc7) and /Documentation/wmi/devices/dell-wmi-ddv.rst (Version linux-5.12.19)


  1 .. SPDX-License-Identifier: GPL-2.0-or-later      
  2                                                   
  3 ============================================      
  4 Dell DDV WMI interface driver (dell-wmi-ddv)      
  5 ============================================      
  6                                                   
  7 Introduction                                      
  8 ============                                      
  9                                                   
 10 Many Dell notebooks made after ~2020 support a    
 11 retrieving various system data like battery te    
 12 and fan/thermal sensor data.                      
 13                                                   
 14 This interface is likely used by the `Dell Dat    
 15 so it was called `DDV`. Currently the ``dell-w    
 16 version 2 and 3 of the interface, with support    
 17 easily added.                                     
 18                                                   
 19 .. warning:: The interface is regarded as inte    
 20              documentation is available. All k    
 21              trial-and-error, please keep that    
 22                                                   
 23 Dell ePPID (electronic Piece Part Identificati    
 24 ==============================================    
 25                                                   
 26 The Dell ePPID is used to uniquely identify co    
 27 including batteries. It has a form similar to     
 28 and contains the following information:           
 29                                                   
 30 * Country code of origin (CC).                    
 31 * Part number with the first character being a    
 32 * Manufacture Identification (MMMMM).             
 33 * Manufacturing Year/Month/Date (YMD) in base     
 34   of the year.                                    
 35 * Manufacture Sequence Number (SSSS).             
 36 * Optional Firmware Version/Revision (FFF).       
 37                                                   
 38 The `eppidtool <https://pypi.org/project/eppid    
 39 to decode and display this information.           
 40                                                   
 41 All information regarding the Dell ePPID was g    
 42 documentation and `this website <https://telco    
 43                                                   
 44 WMI interface description                         
 45 =========================                         
 46                                                   
 47 The WMI interface description can be decoded f    
 48 data using the `bmfdec <https://github.com/pal    
 49                                                   
 50 ::                                                
 51                                                   
 52  [WMI, Dynamic, Provider("WmiProv"), Locale("M    
 53  class DDVWmiMethodFunction {                     
 54    [key, read] string InstanceName;               
 55    [read] boolean Active;                         
 56                                                   
 57    [WmiMethodId(1), Implemented, read, write,     
 58    [WmiMethodId(2), Implemented, read, write,     
 59    [WmiMethodId(3), Implemented, read, write,     
 60    [WmiMethodId(4), Implemented, read, write,     
 61    [WmiMethodId(5), Implemented, read, write,     
 62    [WmiMethodId(6), Implemented, read, write,     
 63    [WmiMethodId(7), Implemented, read, write,     
 64    [WmiMethodId(8), Implemented, read, write,     
 65    [WmiMethodId(9), Implemented, read, write,     
 66    [WmiMethodId(10), Implemented, read, write,    
 67    [WmiMethodId(11), Implemented, read, write,    
 68    [WmiMethodId(12), Implemented, read, write,    
 69    [WmiMethodId(13), Implemented, read, write,    
 70    [WmiMethodId(14), Implemented, read, write,    
 71    [WmiMethodId(15), Implemented, read, write,    
 72    [WmiMethodId(16), Implemented, read, write,    
 73    [WmiMethodId(17), Implemented, read, write,    
 74    [WmiMethodId(18), Implemented, read, write,    
 75    [WmiMethodId(32), Implemented, read, write,    
 76    [WmiMethodId(34), Implemented, read, write,    
 77  };                                               
 78                                                   
 79 Each WMI method takes an ACPI buffer containin    
 80 with the first 8 bit being used to specify the    
 81 WMI methods. Other WMI methods may ignore this    
 82 differently. The WMI method output format vari    
 83                                                   
 84 * if the function has only a single output, th    
 85   of the corresponding type is returned           
 86 * if the function has multiple outputs, when a    
 87   containing the outputs in the same order is     
 88                                                   
 89 The format of the output should be thoroughly     
 90 return malformed data in case of an error.        
 91                                                   
 92 The data format of many battery-related method    
 93 `Smart Battery Data Specification`, so unknown    
 94 likely to follow this standard in some way.       
 95                                                   
 96 WMI method GetBatteryDesignCapacity()             
 97 -------------------------------------             
 98                                                   
 99 Returns the design capacity of the battery in     
100                                                   
101 WMI method BatteryFullCharge()                    
102 ------------------------------                    
103                                                   
104 Returns the full charge capacity of the batter    
105                                                   
106 WMI method BatteryManufactureName()               
107 -----------------------------------               
108                                                   
109 Returns the manufacture name of the battery as    
110                                                   
111 WMI method BatteryManufactureDate()               
112 -----------------------------------               
113                                                   
114 Returns the manufacture date of the battery as    
115 The date is encoded in the following manner:      
116                                                   
117 - bits 0 to 4 contain the manufacture day.        
118 - bits 5 to 8 contain the manufacture month.      
119 - bits 9 to 15 contain the manufacture year bi    
120                                                   
121 .. note::                                         
122    The data format needs to be verified on mor    
123                                                   
124 WMI method BatterySerialNumber()                  
125 --------------------------------                  
126                                                   
127 Returns the serial number of the battery as an    
128                                                   
129 WMI method BatteryChemistryValue()                
130 ----------------------------------                
131                                                   
132 Returns the chemistry of the battery as an ASC    
133 Known values are:                                 
134                                                   
135 - "Li-I" for Li-Ion                               
136                                                   
137 WMI method BatteryTemperature()                   
138 -------------------------------                   
139                                                   
140 Returns the temperature of the battery in tent    
141                                                   
142 WMI method BatteryCurrent()                       
143 ---------------------------                       
144                                                   
145 Returns the current flow of the battery in mA     
146 Negative values indicate discharging.             
147                                                   
148 WMI method BatteryVoltage()                       
149 ---------------------------                       
150                                                   
151 Returns the voltage flow of the battery in mV     
152                                                   
153 WMI method BatteryManufactureAccess()             
154 -------------------------------------             
155                                                   
156 Returns a manufacture-defined value as an u16.    
157                                                   
158 WMI method BatteryRelativeStateOfCharge()         
159 -----------------------------------------         
160                                                   
161 Returns the capacity of the battery in percent    
162                                                   
163 WMI method BatteryCycleCount()                    
164 ------------------------------                    
165                                                   
166 Returns the cycle count of the battery as an u    
167                                                   
168 WMI method BatteryePPID()                         
169 -------------------------                         
170                                                   
171 Returns the ePPID of the battery as an ASCII s    
172                                                   
173 WMI method BatteryeRawAnalyticsStart()            
174 --------------------------------------            
175                                                   
176 Performs an analysis of the battery and return    
177                                                   
178 - ``0x0``: Success                                
179 - ``0x1``: Interface not supported                
180 - ``0xfffffffe``: Error/Timeout                   
181                                                   
182 .. note::                                         
183    The meaning of this method is still largely    
184                                                   
185 WMI method BatteryeRawAnalytics()                 
186 ---------------------------------                 
187                                                   
188 Returns a buffer usually containing 12 blocks     
189 Those blocks contain:                             
190                                                   
191 - a block number starting with 0 (u8)             
192 - 31 bytes of unknown data                        
193                                                   
194 .. note::                                         
195    The meaning of this method is still largely    
196                                                   
197 WMI method BatteryDesignVoltage()                 
198 ---------------------------------                 
199                                                   
200 Returns the design voltage of the battery in m    
201                                                   
202 WMI method BatteryeRawAnalyticsABlock()           
203 ---------------------------------------           
204                                                   
205 Returns a single block of analytics data, with    
206 of the index being used for selecting the bloc    
207                                                   
208 *Supported since WMI interface version 3!*        
209                                                   
210 .. note::                                         
211    The meaning of this method is still largely    
212                                                   
213 WMI method ReturnVersion()                        
214 --------------------------                        
215                                                   
216 Returns the WMI interface version as an u32.      
217                                                   
218 WMI method FanSensorInformation()                 
219 ---------------------------------                 
220                                                   
221 Returns a buffer containing fan sensor entries    
222 with a single ``0xff``.                           
223 Those entries contain:                            
224                                                   
225 - fan type (u8)                                   
226 - fan speed in RPM (little endian u16)            
227                                                   
228 WMI method ThermalSensorInformation()             
229 -------------------------------------             
230                                                   
231 Returns a buffer containing thermal sensor ent    
232 with a single ``0xff``.                           
233 Those entries contain:                            
234                                                   
235 - thermal type (u8)                               
236 - current temperature (s8)                        
237 - min. temperature (s8)                           
238 - max. temperature (s8)                           
239 - unknown field (u8)                              
240                                                   
241 .. note::                                         
242    TODO: Find out what the meaning of the last    
243                                                   
244 ACPI battery matching algorithm                   
245 ===============================                   
246                                                   
247 The algorithm used to match ACPI batteries to     
248 which was found inside the logging messages of    
249                                                   
250 Basically for each new ACPI battery, the seria    
251 indices 1 till 3 are compared with the serial     
252 Since the serial number of the ACPI battery ca    
253 integer or as a hexadecimal value, both cases     
254 index with a matching serial number is then se    
255                                                   
256 A serial number of 0 indicates that the corres    
257 with an actual battery, or that the associated    
258                                                   
259 Some machines like the Dell Inspiron 3505 only    
260 ignore the battery index. Because of this the     
261 hook mechanism to discover batteries.             
262                                                   
263 .. note::                                         
264    The ACPI battery matching algorithm current    
265    outdated and does not match the algorithm d    
266    this are differences in the handling of the    
267    Linux and Windows, which distorts the seria    
268    machines. Until this issue is resolved, the    
269    algorithm.                                     
270                                                   
271 Reverse-Engineering the DDV WMI interface         
272 =========================================         
273                                                   
274 1. Find a supported Dell notebook, usually mad    
275 2. Dump the ACPI tables and search for the WMI    
276 3. Decode the corresponding bmof data and look    
277 4. Try to deduce the meaning of a certain WMI     
278    flow with other ACPI methods (_BIX or _BIF     
279    for example).                                  
280 5. Use the built-in UEFI diagnostics to view s    
281    related methods (sometimes overwriting stat    
282    to test different sensor type values, since    
283    not reinitialized upon a warm reset).          
284                                                   
285 Alternatively:                                    
286                                                   
287 1. Load the ``dell-wmi-ddv`` driver, use the `    
288    if necessary.                                  
289 2. Use the debugfs interface to access the raw    
290 3. Compare the data with the built-in UEFI dia    
291                                                   
292 In case the DDV WMI interface version availabl    
293 supported or you are seeing unknown fan/therma    
294 bugreport on `bugzilla <https://bugzilla.kerne    
295 to the ``dell-wmi-ddv`` driver.                   
296                                                   
297 See Documentation/admin-guide/reporting-issues    
                                                      

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php