1 # This file is part of systemd.
3 # The lookup keys are composed in:
6 # Note: The format of the "sensor:" prefix match key is a contract between the
7 # rules file and the hardware data, it might change in later revisions to
8 # support more or better matches, it is not necessarily expected to be a stable
11 # Match string formats:
12 # sensor:modalias:<parent modalias pattern>:dmi:<dmi pattern>
14 # The device modalias can be seen in the `modalias` file of the sensor parent,
16 # cat /sys/`udevadm info -q path -n /dev/iio:device0`/../modalias
18 # The full DMI string of the running machine can be read from
19 # /sys/class/dmi/id/modalias
20 # That requires a kernel built with CONFIG_DMIID set, which is common.
21 # The full DMI string is not needed here and the meaning of individual parts
22 # can be seen in the source of the DMIID kernel module
23 # https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/firmware/dmi-id.c
25 # To add local entries, create a new file
26 # /etc/udev/hwdb.d/61-sensor-local.hwdb
27 # and add your rules there. To load the new rules execute (as root):
29 # udevadm trigger -v -p DEVNAME=/dev/iio:deviceXXX
30 # where /dev/iio:deviceXXX is the device in question.
32 # If your changes are generally applicable, preferably send them as a pull
34 # https://github.com/systemd/systemd
35 # or create a bug report on https://github.com/systemd/systemd/issues and
36 # include your new rules, a description of the device, and the output of
37 # udevadm info --export-db
39 # For hwdb format and systemd behavior:
40 # https://www.freedesktop.org/software/systemd/man/hwdb.html
42 # Allowed properties are:
43 # ACCEL_MOUNT_MATRIX=<matrix>
44 # PROXIMITY_NEAR_LEVEL=<value>
46 # where <matrix> is a mount-matrix in the format specified in the IIO
47 # subsystem[1]. The default, when unset, is equivalent to:
48 # ACCEL_MOUNT_MATRIX=1, 0, 0; 0, 1, 0; 0, 0, 1
49 # eg. the identity matrix,
50 # and <value> is an integer value above which an object is considered
51 # close by a proximity sensor:
52 # PROXIMITY_NEAR_LEVEL=100
54 # [1]: https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=dfc57732ad38f93ae6232a3b4e64fd077383a0f1
56 # Note for devices where the display (LCD panel) is mounted non upright
57 # in the device's casing, e.g. mounted upside-down or 90 degree rotated,
58 # the ACCEL_MOUNT_MATRIX should be such that the x and y axis matches the
59 # x and y axis of the display, not those of the casing, so that desktop
60 # environments using the accelerometer data for rotation will e.g.
61 # automatically flip their output for an upside-down display when the device
64 # ACCEL_LOCATION=<location>
66 # where <location> is the location of the sensor. This value could be 'base'
67 # or 'display'. The default, when unset, is equivalent to:
68 # ACCEL_LOCATION=display
70 # A note about setting ACCEL_MOUNT_MATRIX for ACCEL_LOCATION=base sensors,
71 # on 360 degree hinges style 2-in-1s with 2 sensors (one in the display and
72 # 1 in the base). Userspace will use both sensors to calculate the angle between
73 # the 2 halves and the angle is defined as being 0 when the device is folded
74 # as a regular clamshell laptop with its lid closed. This means that the
75 # base-accelerometer's mount-matrix must be such, that after applying
76 # the mount-matrices to both sensors, the base-accelerometer's readings must
77 # be identical to the display-accelerometer's readings (when the lid is
80 # Sort by brand, model
82 #########################################
84 #########################################
85 sensor:modalias:acpi:KIOX0009*:dmi:*:svnAcer:pnAspireSW3-016:*
86 ACCEL_MOUNT_MATRIX=0, -1, 0; -1, 0, 0; 0, 0, -1
88 sensor:modalias:acpi:INVN6500*:dmi:*svn*Acer*:*pn*AspireSW5-011:*
89 ACCEL_MOUNT_MATRIX=0, -1, 0; -1, 0, 0; 0, 0, 1
91 sensor:modalias:acpi:INVN6500*:dmi:*svn*Acer*:*pn*AspireSW5-012:*
92 ACCEL_MOUNT_MATRIX=0, 1, 0; 1, 0, 0; 0, 0, 1
94 sensor:modalias:acpi:BOSC0200*:dmi:*svnAcer*:*TP-SW5-017-17BU:*
95 ACCEL_MOUNT_MATRIX=0, 1, 0; 1, 0, 0; 0, 0, -1
97 sensor:modalias:acpi:BMA250E*:dmi:*:svnAcer:pnIconiaW1-810:*
98 ACCEL_MOUNT_MATRIX=1, 0, 0; 0, -1, 0; 0, 0, 1
100 sensor:modalias:acpi:SMO8500:*:dmi:*Acer*:pnOneS1002:*
101 ACCEL_MOUNT_MATRIX=-1, 0, 0; 0, 1, 0; 0, 0, -1
103 sensor:modalias:acpi:KIOX0009*:dmi:*:svnAcer:pnOneS1003:*
104 ACCEL_MOUNT_MATRIX=1, 0, 0; 0, -1, 0; 0, 0, 1
106 sensor:modalias:acpi:BOSC0200*:dmi:*:svnAcer*:pnSwitchSW312-31:*
107 ACCEL_MOUNT_MATRIX=0, -1, 0; -1, 0, 0; 0, 0, 1
109 sensor:modalias:acpi:BOSC0200*:dmi:*svn*Acer*:*pn*Spin*SP111-32:*
110 sensor:modalias:acpi:BOSC0200*:dmi:*svn*Acer*:*pn*Spin*SP111-33:*
111 sensor:modalias:acpi:BOSC0200*:dmi:*svnAcer*:*pnSpinSP111-34:*
112 ACCEL_MOUNT_MATRIX=0, 1, 0; 1, 0, 0; 0, 0, 1
114 #########################################
116 #########################################
117 sensor:modalias:acpi:SMO8500*:dmi:*:svnARCHOS:pnARCHOS80Cesium:*
118 ACCEL_MOUNT_MATRIX=-1, 0, 0; 0, 1, 0; 0, 0, 1
120 #########################################
122 #########################################
123 sensor:modalias:acpi:INVN6500*:dmi:*svnASUSTeK*:*pnT100CHI:*
124 ACCEL_MOUNT_MATRIX=-1, 0, 0; 0, 1, 0; 0, 0, 1
126 sensor:modalias:acpi:INVN6500*:dmi:*svnASUSTeK*:pnT300CHI:*
127 ACCEL_MOUNT_MATRIX=0, -1, 0; 1, 0, 0; 0, 0, 1
129 sensor:modalias:acpi:INVN6500*:dmi:*svnASUSTeK*:*pnM80TA:*
130 sensor:modalias:acpi:INVN6500*:dmi:*svnASUSTeK*:*pnT100TA:*
131 sensor:modalias:acpi:INVN6500*:dmi:*svnASUSTeK*:pnT200TA:*
132 ACCEL_MOUNT_MATRIX=1, 0, 0; 0, -1, 0; 0, 0, 1
134 sensor:modalias:acpi:INVN6500*:dmi:*svnASUSTeK*:*pnTP201SA:*
135 sensor:modalias:acpi:INVN6500*:dmi:*svnASUSTeK*:pn*E205SA:*
136 ACCEL_MOUNT_MATRIX=0, -1, 0; -1, 0, 0; 0, 0, 1
138 sensor:modalias:acpi:INVN6500*:dmi:*svn*ASUSTeK*:*pn*TP300LA:*
139 sensor:modalias:acpi:INVN6500*:dmi:*svn*ASUSTeK*:*pn*TP300LD:*
140 ACCEL_MOUNT_MATRIX=0, 1, 0; 1, 0, 0; 0, 0, 1
142 sensor:modalias:acpi:INVN6500*:dmi:*svnASUSTeK*:*pn*Q551LN:*
143 ACCEL_MOUNT_MATRIX=0, 1, 0; -1, 0, 0; 0, 0, 1
145 sensor:modalias:acpi:KXJ2109*:dmi:*:svnASUSTeK*:pnME176C:*
146 ACCEL_MOUNT_MATRIX=-1, 0, 0; 0, 1, 0; 0, 0, 1
148 sensor:modalias:acpi:SMO8500*:dmi:*svn*ASUSTeK*:*pn*TP300LJ:*
149 ACCEL_MOUNT_MATRIX=0, -1, 0; -1, 0, 0; 0, 0, 1
151 sensor:modalias:acpi:SMO8500*:dmi:*svn*ASUSTeK*:*pn*TP500LAB:*
152 sensor:modalias:acpi:SMO8500*:dmi:*svn*ASUSTeK*:*pn*TP500LB:*
153 ACCEL_MOUNT_MATRIX=0, 1, 0; 1, 0, 0; 0, 0, 1
155 sensor:modalias:acpi:SMO8500*:dmi:*svn*ASUSTeK*:*pn*TP300LD:*
156 sensor:modalias:acpi:SMO8500*:dmi:*svn*ASUSTeK*:*pn*TP300LAB:*
157 ACCEL_MOUNT_MATRIX=0, -1, 0; -1, 0, 0; 0, 0, 1
159 sensor:modalias:acpi:BOSC0200*:dmi:*svn*ASUSTeK*:*pn*TP412UA:*
160 ACCEL_MOUNT_MATRIX=0, -1, 0; 1, 0, 0; 0, 0, 1
162 #########################################
164 #########################################
165 sensor:modalias:acpi:SMO8500*:dmi:*:svnStandard:pnWCBT1011::*
166 ACCEL_MOUNT_MATRIX=-1, 0, 0; 0, 1, 0; 0, 0, 1
168 #########################################
170 #########################################
173 sensor:modalias:acpi:BMA250E*:dmi:bvnINSYDECorp.:bvrCHUWI.D86JLBNR*:svnInsyde:pni86:*
174 ACCEL_MOUNT_MATRIX=0, -1, 0; -1, 0, 0; 0, 0, 1
176 # Chuwi Vi8 Plus (CWI519)
177 sensor:modalias:acpi:BOSC0200*:dmi:*:svnHampoo:pnD2D3_Vi8A1:*
178 ACCEL_MOUNT_MATRIX=0, -1, 0; -1, 0, 0; 0, 0, 1
180 # Chuwi Vi10 (CWI505)
181 sensor:modalias:acpi:BMA250E*:dmi:bvnINSYDECorp.:bvrG1D_S165*:svnilife:pnS165:*
182 ACCEL_MOUNT_MATRIX=0, 1, 0; 1, 0, 0; 0, 0, 1
185 sensor:modalias:acpi:BMA250E*:dmi:*svnilife*:pnS806:*
186 ACCEL_MOUNT_MATRIX=1, 0, 0; 0, -1, 0; 0, 0, 1
188 # Chuwi Hi8 Pro (CWI513)
189 sensor:modalias:acpi:BOSC0200*:dmi:*:svnHampoo:pnX1D3_C806N:*
190 ACCEL_MOUNT_MATRIX=0, -1, 0; -1, 0, 0; 0, 0, 1
192 # Chuwi Hi10 (CWI515)
193 sensor:modalias:acpi:BOSC0200*:dmi:bvnAmericanMegatrendsInc.:bvr5.11:*:svnDefaultstring:pnDefaultstring:*
194 ACCEL_MOUNT_MATRIX=0, -1, 0; -1, 0, 0; 0, 0, 1
196 # Chuwi Hi10 (CWI1515)
197 sensor:modalias:acpi:BOSC0200*:dmi:bvnAmericanMegatrendsInc.:bvrP02A_C106.60E:*:svnDefaultstring:pnDefaultstring:*
198 ACCEL_MOUNT_MATRIX=0, -1, 0; -1, 0, 0; 0, 0, 1
201 sensor:modalias:acpi:BOSC0200*:dmi:*:svn*CHUWIINNOVATIONANDTECHNOLOGY*:pnHi10protablet:*
202 ACCEL_MOUNT_MATRIX=0, -1, 0; -1, 0, 0; 0, 0, 1
205 sensor:modalias:acpi:MXC6655*:dmi:*:svnCHUWIInnovationAndTechnology*:pnHi10X:*
206 ACCEL_MOUNT_MATRIX=0, 1, 0; 1, 0, 0; 0, 0, 1
209 sensor:modalias:acpi:BOSC0200*:dmi:*:svnHampoo:pnP02BD6_HI-122LP:*
210 sensor:modalias:acpi:BOSC0200*:dmi:*:svnDefaultstring:pnDefaultstring:*
211 sensor:modalias:acpi:BOSC0200*:dmi:*:svnHampoo:pnE4D6_HI-122LP:*
212 ACCEL_MOUNT_MATRIX=1, 0, 0; 0, -1, 0; 0, 0, 1
215 sensor:modalias:acpi:KIOX000A*:dmi:*:svnChuwi*:pnHi13:*
216 ACCEL_MOUNT_MATRIX=1, 0, 0; 0, -1, 0; 0, 0, 1
219 # Chuwi HiBook does not have its product name filled, so we
220 # match the entire dmi-alias, assuming that the use of a BOSC0200 +
221 # bios-version + bios-date combo is unique
222 sensor:modalias:acpi:BOSC0200*:dmi:bvnAmericanMegatrendsInc.:bvr5.11:bd05/07/2016:svnDefaultstring:pnDefaultstring:pvrDefaultstring:rvnHampoo:rnCherryTrailCR:rvrDefaultstring:cvnDefaultstring:ct3:cvrDefaultstring:*
223 sensor:modalias:acpi:BOSC0200*:dmi:bvnAmericanMegatrendsInc.:bvr5.11:bd05/28/2016:svnDefaultstring:pnDefaultstring:pvrDefaultstring:rvnHampoo:rnCherryTrailCR:rvrDefaultstring:cvnDefaultstring:ct3:cvrDefaultstring:*
224 ACCEL_MOUNT_MATRIX=1, 0, 0; 0, -1, 0; 0, 0, 1
226 # Chuwi HiBook Pro (CWI526)
227 sensor:modalias:acpi:BOSC0200*:dmi:*:svnHampoo*:pnP1D6_C109K:*
228 ACCEL_MOUNT_MATRIX=1, 0, 0; 0, -1, 0; 0, 0, 1
231 # Chuwi CoreBook does not have its product name filled, so we
232 # match the entire dmi-alias
233 sensor:modalias:acpi:BOSC0200*:dmi:bvnAmericanMegatrendsInc.:bvrY13D_KB133.103:bd06/01/2018:svnHampoo:pnDefaultstring:pvrV100:rvnHampoo:rnY13D_KB133:rvrV100:cvnDefaultstring:ct9:cvrDefaultstring:*
234 ACCEL_MOUNT_MATRIX=-1, 0, 0; 0, 1, 0; 0, 0, 1
236 #########################################
238 #########################################
239 sensor:modalias:acpi:KIOX000A*:dmi:*:svnConnect:pnTablet9:*
240 ACCEL_MOUNT_MATRIX=0, 1, 0; 1, 0, 0; 0, 0, 1
242 #########################################
244 #########################################
247 sensor:modalias:acpi:KIOX000A*:dmi:*:svncube:pni1-TF:*
248 ACCEL_MOUNT_MATRIX=1, 0, 0; 0, -1, 0; 0, 0, 1
251 sensor:modalias:acpi:SMO8500*:dmi:*:svncube:pni7:*
252 ACCEL_MOUNT_MATRIX=1, 0, 0; 0, -1, 0; 0, 0, 1
255 sensor:modalias:acpi:KIOX000A*:dmi:*:svnCube:pni7Stylus:*
256 ACCEL_MOUNT_MATRIX=-1, 0, 0; 0, 1, 0; 0, 0, 1
259 sensor:modalias:acpi:KIOX000A*:dmi:*:svnCube:pni16:*
260 ACCEL_MOUNT_MATRIX=-1, 0, 0; 0, 1, 0; 0, 0, 1
262 # Cube i7 Stylus I8L Model
263 sensor:modalias:acpi:KIOX000A*:dmi:*:svnCube:pni8-L:*
264 ACCEL_MOUNT_MATRIX=-1, 0, 0; 0, 1, 0; 0, 0, 1
266 # Cube iWork 10 Flagship
267 sensor:modalias:acpi:BOSC0200*:dmi:*:svnCube:pnI15-TC:*
268 ACCEL_MOUNT_MATRIX=1, 0, 0; 0, -1, 0; 0, 0, 1
270 # Cube iWork 11 Stylus
271 sensor:modalias:acpi:KIOX000A*:dmi:*:svncube:pni8-T:*
272 ACCEL_MOUNT_MATRIX=0, 1, 0; 1, 0, 0; 0, 0, 1
275 sensor:modalias:acpi:KIOX000A*:dmi:*:svnALLDOCUBE:pni1102:*
276 ACCEL_MOUNT_MATRIX=-1, 0, 0; 0, 1, 0; 0, 0, 1
278 #########################################
280 #########################################
281 sensor:modalias:acpi:*KIOX000A*:dmi:*svn*CytrixTechnology:*pn*Complex11t:*
282 ACCEL_MOUNT_MATRIX=-1, 0, 0; 0, 1, 0; 0, 0, 1
284 #########################################
286 #########################################
287 sensor:modalias:platform:HID-SENSOR-200073:dmi:*svnDell*:pnVostro5581:*
290 sensor:modalias:platform:HID-SENSOR-200073:dmi:*svnDell*:pnLatitude9520:*:ct10:*
293 sensor:modalias:platform:HID-SENSOR-200073:dmi:*svnDell*:pnLatitude7420:*
296 # Dell Venue 8 Pro 3845
297 sensor:modalias:acpi:INVN6500*:dmi:*svnDellInc.*:pnVenue8Pro3845:*
298 ACCEL_MOUNT_MATRIX=0, -1, 0; -1, 0, 0; 0, 0, 1
300 # Dell Venue 10 Pro 5055
301 sensor:modalias:acpi:INVN6500*:dmi:*svnDell*:pnVenue10Pro5055:*
302 ACCEL_MOUNT_MATRIX=0, -1, 0; 1, 0, 0; 0, 0, 1
304 #########################################
306 #########################################
307 sensor:modalias:acpi:SMO8500*:dmi:*svn*DEXP*:*pn*DEXPOEM:*
308 ACCEL_MOUNT_MATRIX=0, -1, 0; -1, 0, 0; 0, 0, 1
310 #########################################
312 #########################################
315 sensor:modalias:acpi:BOSC0200*:dmi:*:svnDigma:pnCITIE203ES2010EW:*
316 ACCEL_MOUNT_MATRIX=0, 1, 0; 1, 0, 0; 0, 0, 1
318 #########################################
320 #########################################
321 sensor:modalias:acpi:ACCE0001*:dmi:*svnEndless*:*pnELT-NL3:*
322 ACCEL_MOUNT_MATRIX=0, 1, 0; 0, 0, -1; -1, 0, 0
324 #########################################
326 #########################################
327 sensor:modalias:acpi:KIOX000A*:dmi:*:svnEVE*:pnEveV:*
328 ACCEL_MOUNT_MATRIX=0, 1, 0; -1, 0, 0; 0, 0, 1
330 #########################################
332 #########################################
335 sensor:modalias:acpi:KIOX010A*:dmi:*:svnGEO*:pnGeoFlex*:*
336 ACCEL_MOUNT_MATRIX=-1, 0, 0; 0, -1, 0; 0, 0, 1
338 #########################################
340 #########################################
341 sensor:modalias:platform:cros-ec-accel:dmi:*:svnGOOGLE:*
342 ACCEL_MOUNT_MATRIX=-1, 0, 0; 0, -1, 0; 0, 0, -1
344 # caroline board (Samsung Chromebook Pro) reports itself as svnGoogle
345 sensor:modalias:platform:cros-ec-accel:dmi:*:svnGoogle:pnCaroline*:*
346 ACCEL_MOUNT_MATRIX=-1, 0, 0; 0, -1, 0; 0, 0, -1
348 # Dell Inspiron Chromebook 14 2-in-1
349 sensor:modalias:platform:cros-ec-accel:dmi:*svnGoogle:pnVayne*:*
350 ACCEL_MOUNT_MATRIX=-1, 0, 0; 0, -1, 0; 0, 0, -1
352 # nocturne board (Google Pixel Slate)
353 sensor:modalias:platform:cros-ec-accel:dmi:*Google_Nocturne*:*
354 ACCEL_MOUNT_MATRIX=1, 0, 0; 0, -1, 0; 0, 0, 1
356 #########################################
358 #########################################
359 sensor:modalias:acpi:KIOX000A*:dmi:bvnINSYDECorp.:bvrBYT70A.YNCHENG.WIN.007:*:svnInsyde:pnT701:*
360 ACCEL_MOUNT_MATRIX=0, -1, 0; -1, 0, 0; 0, 0, 1
362 #########################################
364 #########################################
366 # GPD win (version 1, with the X5-Z8750 CPU)
367 # Note we match all dmi fields including the BIOS date checking for all known
368 # BIOS dates, since the strings are unfortunately very generic.
369 # Out of a sample set of 15 similar boards only the GPDwin has board_vendor=AMI
370 # and no other devices have both board_name *and* product_name set to
371 # "Default string". So combined with the sensor modalias and BIOS date this
372 # should be unique enough to identify the GPDwin
373 sensor:modalias:acpi:KIOX000A*:dmi:bvnAmericanMegatrendsInc.:bvr5.11:bd10/25/2016:svnDefaultstring:pnDefaultstring:pvrDefaultstring:rvnAMICorporation:rnDefaultstring:rvrDefaultstring:cvnDefaultstring:ct3:cvrDefaultstring:*
374 sensor:modalias:acpi:KIOX000A*:dmi:bvnAmericanMegatrendsInc.:bvr5.11:bd11/18/2016:svnDefaultstring:pnDefaultstring:pvrDefaultstring:rvnAMICorporation:rnDefaultstring:rvrDefaultstring:cvnDefaultstring:ct3:cvrDefaultstring:*
375 sensor:modalias:acpi:KIOX000A*:dmi:bvnAmericanMegatrendsInc.:bvr5.11:bd12/23/2016:svnDefaultstring:pnDefaultstring:pvrDefaultstring:rvnAMICorporation:rnDefaultstring:rvrDefaultstring:cvnDefaultstring:ct3:cvrDefaultstring:*
376 sensor:modalias:acpi:KIOX000A*:dmi:bvnAmericanMegatrendsInc.:bvr5.11:bd12/26/2016:svnDefaultstring:pnDefaultstring:pvrDefaultstring:rvnAMICorporation:rnDefaultstring:rvrDefaultstring:cvnDefaultstring:ct3:cvrDefaultstring:*
377 sensor:modalias:acpi:KIOX000A*:dmi:bvnAmericanMegatrendsInc.:bvr5.11:bd02/21/2017:svnDefaultstring:pnDefaultstring:pvrDefaultstring:rvnAMICorporation:rnDefaultstring:rvrDefaultstring:cvnDefaultstring:ct3:cvrDefaultstring:*
378 sensor:modalias:acpi:KIOX000A*:dmi:bvnAmericanMegatrendsInc.:bvr5.11:bd03/20/2017:svnDefaultstring:pnDefaultstring:pvrDefaultstring:rvnAMICorporation:rnDefaultstring:rvrDefaultstring:cvnDefaultstring:ct3:cvrDefaultstring:*
379 sensor:modalias:acpi:KIOX000A*:dmi:bvnAmericanMegatrendsInc.:bvr5.11:bd05/25/2017:svnDefaultstring:pnDefaultstring:pvrDefaultstring:rvnAMICorporation:rnDefaultstring:rvrDefaultstring:cvnDefaultstring:ct3:cvrDefaultstring:*
382 #########################################
384 #########################################
386 # Most HP Laptop using the lis3lv02d device have it in the base,
387 # mark these sensors as such.
388 sensor:modalias:platform:lis3lv02d:dmi:*svn*Hewlett-Packard*:*
389 sensor:modalias:platform:lis3lv02d:dmi:*svn*HP*:*
392 sensor:modalias:acpi:SMO8500*:dmi:*:svnHewlett-Packard:pnHPStream7Tablet:*
393 sensor:modalias:acpi:SMO8500*:dmi:*:svnHewlett-Packard:pnHPStream8Tablet:*
394 ACCEL_MOUNT_MATRIX=0, 1, 0; 1, 0, 0; 0, 0, 1
396 # HP Pavillion X2 10-n000nd
397 sensor:modalias:i2c:bmc150_accel:dmi:*:svnHewlett-Packard:pnHPPavilionx2Detachable:*:rn815D:*
398 ACCEL_MOUNT_MATRIX=0, -1, 0; -1, 0, 0; 0, 0, 1
400 #########################################
402 #########################################
404 # The I.T.Works TW891 2-in-1's DMI has the product-name field set, but not
405 # the sys-vendor field. This makes the DMI data a bit generic, so we match
406 # the whole dmi modalias, except for the BIOS version/date
407 sensor:modalias:acpi:KIOX000A*:dmi:bvnAmericanMegatrendsInc.:*:svnTobefilledbyO.E.M.:pnTW891:pvrTobefilledbyO.E.M.:rvnTobefilledbyO.E.M.:rnTW891:rvr1.0:cvnToBeFilledByO.E.M.:ct3:cvrToBeFilledByO.E.M.:*
408 ACCEL_MOUNT_MATRIX=0, 1, 0; 1, 0, 0; 0, 0, 1
410 # I.T.Works TW701 7" windows tablet, same hw as Trekstor ST70416-6
411 sensor:modalias:acpi:BMA250*:dmi:*:bvritWORKS.G.WI71C.JGBMRB*:*:svnInsyde:pni71c:*
412 ACCEL_MOUNT_MATRIX=0, 1, 0; 1, 0, 0; 0, 0, 1
414 #########################################
416 #########################################
419 sensor:modalias:acpi:BOSC0200*:dmi:*:svnIRBIS:pnTW90:*
420 ACCEL_MOUNT_MATRIX=0, 1, 0; -1, 0, 0; 0, 0, 1
423 sensor:modalias:acpi:KIOX010A*:dmi:*svn*IRBIS*:*pn*NB111:*
424 ACCEL_MOUNT_MATRIX=0, 1, 0; 1, 0, 0; 0, 0, 1
427 sensor:modalias:acpi:BOSC0200*:dmi:*:svnIRBIS:pnTW118:*
428 ACCEL_MOUNT_MATRIX=1, 0, 0; 0, -1, 0; 0, 0, 1
430 #########################################
432 #########################################
433 sensor:modalias:acpi:KIOX000A*:dmi:*svn*iOTA*:*pn*IOTA2210:*
434 ACCEL_MOUNT_MATRIX=0, -1, 0; -1, 0, 0; 0, 0, 1
436 #########################################
438 #########################################
441 sensor:modalias:acpi:BOSC0200*:dmi:bvnINSYDECorp.:bvrjumperx.T87.KFBNEE:*
442 ACCEL_MOUNT_MATRIX=0, -1, 0; -1, 0, 0; 0, 0, 1
445 sensor:modalias:acpi:BOSC0200*:dmi:*:svnJumper:pnEZpad:*:rvr.A006:*
446 ACCEL_MOUNT_MATRIX=-1, 0, 0; 0, -1, 0; 0, 0, 1
449 sensor:modalias:acpi:KIOX000A*:dmi:bvnAmericanMegatrendsInc.:*:svnjumper:pnEZpad:*:ct31:*
450 ACCEL_MOUNT_MATRIX=1, 0, 0; 0, -1, 0; 0, 0, 1
452 #########################################
454 #########################################
455 sensor:modalias:acpi:KIOX000A*:dmi:bvnINSYDECorp.:bvrVISION.I22K*:svnKAZAM:pnVISION:*
456 ACCEL_MOUNT_MATRIX=0, 1, 0; 1, 0, 0; 0, 0, 1
458 #########################################
460 #########################################
461 sensor:modalias:acpi:SMO8500*:dmi:*svnLamina*:*pnT701BR.SE:*
462 ACCEL_MOUNT_MATRIX=-1, 0, 0; 0, 1, 0; 0, 0, 1
464 sensor:modalias:acpi:KIOX000A*:dmi:*svnLAMINA:pnT-1016BNORD:*
465 ACCEL_MOUNT_MATRIX=0, 1, 0; 1, 0, 0; 0, 0, 1
467 #########################################
469 #########################################
470 sensor:modalias:acpi:NCPE0388*:dmi:*:rnLenovoYOGA510-14IKB:*
471 ACCEL_MOUNT_MATRIX=-1, 0, 0; 0, -1, 0; 0, 0, 1
473 sensor:modalias:acpi:BOSC0200*:dmi:*ThinkPadYoga11e3rdGen:*
474 ACCEL_MOUNT_MATRIX=0, 1, 0; -1, 0, 0; 0, 0, -1
476 sensor:modalias:acpi:BOSC0200*:dmi:*:svnLENOVO:*pvrThinkPadYoga11e4thGen:*
477 ACCEL_MOUNT_MATRIX=0, 1, 0; -1, 0, 0; 0, 0, -1
480 sensor:modalias:acpi:BMA250E*:dmi:bvnLENOVO:*:pvrLenovoMIIX3-1030:*
481 ACCEL_MOUNT_MATRIX=0, -1, 0; -1, 0, 0; 0, 0, 1
484 sensor:modalias:acpi:SMO8500*:dmi:bvnLENOVO:*:pvrLenovoMIIX3-830:*
485 ACCEL_MOUNT_MATRIX=-1, 0, 0; 0, 1, 0; 0, 0, 1
488 sensor:modalias:acpi:BOSC0200*:dmi:*:svnLENOVO:pn81H3:*
489 ACCEL_MOUNT_MATRIX=0, 1, 0; -1, 0, 0; 0, 0, 1
492 sensor:modalias:acpi:SMO8500*:dmi:bvnLENOVO:*:pvrMIIX300-*:*
493 ACCEL_MOUNT_MATRIX=0, -1, 0; -1, 0, 0; 0, 0, 1
495 # IdeaPad Miix 310 note this only is for BIOS version (bvr) 1HCN4?WW and 1HCN2?WW, which has
496 # a portrait LCD panel, versions with bvr 1HCN3?WW have a landscape panel
497 sensor:modalias:acpi:KIOX000A*:dmi:bvnLENOVO:bvr1HCN4?WW:*:svnLENOVO:pn80SG:*
498 sensor:modalias:acpi:KIOX000A*:dmi:bvnLENOVO:bvr1HCN2?WW:*:svnLENOVO:pn80SG:*
499 ACCEL_MOUNT_MATRIX=0, 1, 0; 1, 0, 0; 0, 0, 1
501 # IdeaPad Miix 320, different batches use a different sensor
502 sensor:modalias:acpi:*BOSC0200*:dmi:*:svnLENOVO*:pn80XF:*
503 sensor:modalias:acpi:SMO8840*:dmi:*:svnLENOVO:pn80XF:pvrLenovoMIIX320:*
504 ACCEL_MOUNT_MATRIX=0, -1, 0; -1, 0, 0; 0, 0, 1
506 # IdeaPad Miix 510, multiple expressions match different internal names
507 # pn80U1 matches IdeaPad Miix510-12ISK
508 sensor:modalias:acpi:*BOSC0200*:dmi:*:svnLENOVO*:pn80XE:*
509 sensor:modalias:acpi:*BOSC0200*:dmi:*:svnLENOVO*:pn80U1:*
510 ACCEL_MOUNT_MATRIX=0, -1, 0; -1, 0, 0; 0, 0, 1
512 #########################################
514 #########################################
517 sensor:modalias:acpi:BOSC0200*:dmi:*:svnLINX*:pnLINX1010B:*
518 ACCEL_MOUNT_MATRIX=-1, 0, 0; 0, 1, 0; 0, 0, -1
520 # Linx 12X64 and 12V64
521 sensor:modalias:acpi:KIOX000A*:dmi:*:svnLINX*:pnLINX12*64:*
522 ACCEL_MOUNT_MATRIX=0, 1, 0; 1, 0, 0; 0, 0, 1
524 #########################################
526 #########################################
528 # Medion Akoya E1239T MD60568
529 sensor:modalias:acpi:KIOX0009*:dmi:*:svnMEDION:pnE1239TMD60568:*
530 ACCEL_MOUNT_MATRIX=1, 0, 0; 0, -1, 0; 0, 0, 1
532 # Medion Akoya E2212T MD99720
533 sensor:modalias:acpi:SMO8500*:dmi:*:svnMEDION:pnAkoyaE2212TMD99720:*
534 ACCEL_MOUNT_MATRIX=-1, 0, 0; 0, 1, 0; 0, 0, 1
536 # Medion Akoya E2215T MD60198
537 sensor:modalias:acpi:KIOX000A*:dmi:*svnMEDION:pnE2215TMD60198:*
538 # Medion Akoya E3216 MD60900
539 # Medion Akoya E3221 MD61237
540 # Medion Akoya E2292 MD63390
541 # Medion Akoya E2293 MD61130
542 # Medion Akoya E2293 MD61144
543 # Medion Akoya E3222 MD62450
544 # and presumably all other Akoya Exxxx
545 sensor:modalias:acpi:KIOX010A*:dmi:*:svnMEDION:pnE*:*
546 # Medion Akoya E3222 MD62450
547 sensor:modalias:acpi:KIOX010A*:dmi:*:svnMEDION:pnMEDION*:*
548 ACCEL_MOUNT_MATRIX=0, -1, 0; -1, 0, 0; 0, 0, 1
549 ACCEL_LOCATION=display
551 # Same as above, but for base sensor
552 sensor:modalias:acpi:KIOX020A*:dmi:*:svnMEDION:pnE*:*
553 sensor:modalias:acpi:KIOX020A*:dmi:*:svnMEDION:pnMEDION*:*
554 ACCEL_MOUNT_MATRIX=-1, 0, 0; 0, 1, 0; 0, 0, -1
557 #########################################
559 #########################################
561 # MPMAN Converter 9, same hw as the I.T.Works TW891 2-in-1
562 sensor:modalias:acpi:SMO8500*:dmi:*:svnMPMAN:pnConverter9:*
563 ACCEL_MOUNT_MATRIX=0, 1, 0; 1, 0, 0; 0, 0, 1
566 sensor:modalias:acpi:BMA250E*:dmi:*:svnMPMAN:pnMPWIN8900CL:*
567 ACCEL_MOUNT_MATRIX=1, 0, 0; 0, -1, 0; 0, 0, 1
569 #########################################
571 #########################################
572 sensor:modalias:acpi:SMO8500*:dmi:*:svnMicro-StarInternationalCo.,Ltd.:pnS100:*
573 ACCEL_MOUNT_MATRIX=0, -1, 0; 1, 0, 0; 0, 0, 1
575 #########################################
577 #########################################
580 sensor:modalias:acpi:BOSC0200*:dmi:*:svnCompletElectroServ:pnMY8307:*
581 ACCEL_MOUNT_MATRIX=-1, 0, 0; 0, 1, 0; 0, 0, 1
583 #########################################
585 #########################################
587 # Nuvision/TMAX 8" Windows signature edition. TM800W560L
588 sensor:modalias:acpi:KIOX000A*:dmi:*:svnTMAX:pnTM800W560L:*
589 ACCEL_MOUNT_MATRIX=1, 0, 0; 0, -1, 0; 0, 0, 1
591 # Nuvision Solo 10 Draw. TM101W610L
592 sensor:modalias:acpi:KIOX000A*:dmi:*:svnTMAX:pnTM101W610L:*
593 ACCEL_MOUNT_MATRIX=0, -1, 0; -1, 0, 0; 0, 0, 1
595 # Nuvision Encite Split 11. NES11-C432SSA
596 sensor:modalias:acpi:BOSC0200*:dmi:*:svnNuvision:pnNES11:*
597 ACCEL_MOUNT_MATRIX=1, 0, 0; 0, -1, 0; 0, 0, 1
599 #########################################
601 #########################################
602 sensor:modalias:acpi:BOSC0200*:dmi:bvnINSYDECorp.:bvrODYS.FUSIONWIN12:*
603 ACCEL_MOUNT_MATRIX=-1, 0, 0; 0, 1, 0; 0, 0, 1
605 #########################################
607 #########################################
608 sensor:modalias:acpi:BOSC0200*:dmi:*:svnONDA:pnV80PLUS:*
609 ACCEL_MOUNT_MATRIX=0, -1, 0; -1, 0, 0; 0, 0, 1
611 sensor:modalias:acpi:BMA250E*:dmi:bvnINSYDECorp.:bvrONDA.D89*:svnInsyde:pnONDATablet:*
612 sensor:modalias:acpi:BMA250E*:dmi:bvnINSYDECorp.:bvrONDA.D86*:svnONDA:pnV820wDualOS:*
613 sensor:modalias:acpi:BMA250E*:dmi:bvnINSYDECorp.:bvrONDA.W89*:svnInsyde:pnONDATablet:*
614 ACCEL_MOUNT_MATRIX=0, -1, 0; -1, 0, 0; 0, 0, 1
616 # Onda v975w, generic DMI strings, match entire dmi modalias inc. bios-date
617 sensor:modalias:acpi:SMO8500*:dmi:bvnAmericanMegatrendsInc.:bvr5.6.5:bd07/25/2014:svnTobefilledbyO.E.M.:pnTobefilledbyO.E.M.:pvrTobefilledbyO.E.M.:rvnAMICorporation:rnAptioCRB:rvrTobefilledbyO.E.M.:cvnToBeFilledByO.E.M.:ct3:cvrToBeFilledByO.E.M.:*
618 ACCEL_MOUNT_MATRIX=0, -1, 0; -1, 0, 0; 0, 0, 1
620 #########################################
622 #########################################
624 # One-netbook OneMix 3 Pro
625 sensor:modalias:acpi:BOSC0200*:dmi:*svnONE-NETBOOKTECHNOLOGYCO*:pnOne-Mix3Pro:*
626 ACCEL_MOUNT_MATRIX=-1, 0, 0; 0, 1, 0; 0, 0, 1
628 #########################################
630 #########################################
631 sensor:modalias:acpi:SMO8500*:dmi:*:svnPEAQ:pnPEAQPMMC1010MD99187:*
632 ACCEL_MOUNT_MATRIX=-1, 0, 0; 0, 1, 0; 0, 0, 1
634 #########################################
636 #########################################
637 sensor:modalias:acpi:KIOX000A*:dmi:*:svnPIPO:pnW2S:*
638 ACCEL_MOUNT_MATRIX=1, 0, 0; 0, -1, 0; 0, 0, 1
641 sensor:modalias:acpi:SMO8500*:dmi:*:bvrV8L_WIN32_CHIPHD_*_DX:*:rvnAMICorporation:rnAptioCRB:*
642 ACCEL_MOUNT_MATRIX=0, -1, 0; -1, 0, 0; 0, 0, 1
644 #########################################
646 #########################################
647 sensor:modalias:acpi:BMA250E*:dmi:*:svnShenzhenPLOYER*:pnMOMO7W:*
648 ACCEL_MOUNT_MATRIX=0, 1, 0; 1, 0, 0; 0, 0, 1
650 #########################################
652 #########################################
654 # The Point of View TAB-P800W does not have its product name filled, so we
655 # match the entire dmi-alias, assuming that the use of a BMA250E +
656 # bios-version + bios-date combo is unique
657 sensor:modalias:acpi:BMA250E*:dmi:bvnAmericanMegatrendsInc.:bvr3BAIR1013:bd08/22/2014:svnTobefilledbyO.E.M.:pnTobefilledbyO.E.M.:pvrTobefilledbyO.E.M.:rvnAMICorporation:rnAptioCRB:rvrTobefilledbyO.E.M.:cvnToBeFilledByO.E.M.:ct3:cvrToBeFilledByO.E.M.:*
658 sensor:modalias:acpi:BMA250E*:dmi:bvnAmericanMegatrendsInc.:bvr3BAIR1014:bd10/24/2014:svnTobefilledbyO.E.M.:pnTobefilledbyO.E.M.:pvrTobefilledbyO.E.M.:rvnAMICorporation:rnAptioCRB:rvrTobefilledbyO.E.M.:cvnToBeFilledByO.E.M.:ct3:cvrToBeFilledByO.E.M.:*
659 ACCEL_MOUNT_MATRIX=0, 1, 0; 1, 0, 0; 0, 0, 1
661 # Point of View TAB-P1005W-232 (v2.0)
662 sensor:modalias:acpi:KIOX000A*:dmi:*:rvnPOV:rnI102A:*
663 ACCEL_MOUNT_MATRIX=1, 0, 0; 0, -1, 0; 0, 0, 1
665 # Point of View TAB-P1006W-232-3G (v1.0)
666 sensor:modalias:i2c:bmc150_accel:dmi:bvnINSYDECorp.:*:svnInsyde:pnBayTrail:*:rvn105B:rn0E57:*
667 ACCEL_MOUNT_MATRIX=1, 0, 0; 0, -1, 0; 0, 0, 1
669 #########################################
671 #########################################
673 # Predia Basic tablet, most DMI strings are generic, match on BIOS version
674 sensor:modalias:acpi:BOSC0200*:dmi:bvnINSYDECorp.:bvrMx.WT107.KUBNGEA*svnInsyde:pnCherryTrail:*
675 ACCEL_MOUNT_MATRIX=0, -1, 0; -1, 0, 0; 0, 0, 1
677 #########################################
679 #########################################
680 sensor:modalias:acpi:SMO8500*:dmi:*:svnProwise:pnPT301:*
681 ACCEL_MOUNT_MATRIX=-1, 0, 0; 0, 1, 0; 0, 0, 1
683 #########################################
685 #########################################
688 sensor:modalias:acpi:BOSC0200*:dmi:bvnAmericanMegatrendsInc.:bvrSCH12i.WJ210Z.KtBJRCA03:*
689 ACCEL_MOUNT_MATRIX=-1, 0, 0; 0, 1, 0; 0, 0, 1
691 #########################################
693 #########################################
695 sensor:modalias:acpi:KIOX010A*:dmi:*:svnTECLAST:pnF5:*
696 ACCEL_MOUNT_MATRIX=0, 1, 0; 1, 0, 0; 0, 0, 1
698 # Teclast F6 Pro (2 sensors)
699 sensor:modalias:acpi:KIOX010A*:dmi:*:svnTECLAST:pnF6Pro:*
700 ACCEL_MOUNT_MATRIX=-1, 0, 0; 0, -1, 0; 0, 0, -1
701 ACCEL_LOCATION=display
703 sensor:modalias:acpi:KIOX020A*:dmi:*:svnTECLAST:pnF6Pro:*
704 ACCEL_MOUNT_MATRIX=0, 1, 0; 1, 0, 0; 0, 0, 1
707 # Teclast X80 Plus (H5C5)
708 sensor:modalias:acpi:KIOX000A*:dmi:*:svnTECLAST:pnDefaultstring:*
709 ACCEL_MOUNT_MATRIX=0, 1, 0; 1, 0, 0; 0, 0, 1
711 # Teclast X80 Pro (E3E6)
712 sensor:modalias:acpi:KIOX000A*:dmi:*:svnTECLAST:pnX80Pro:*
713 ACCEL_MOUNT_MATRIX=0, 1, 0; 1, 0, 0; 0, 0, 1
715 # Teclast X89 (E7ED), "tPAD" is too generic also match on BIOS date
716 sensor:modalias:acpi:SMO8500*:dmi:*bd12/19/2014:*:rvnTECLAST:rntPAD:*
717 ACCEL_MOUNT_MATRIX=1, 0, 0; 0, -1, 0; 0, 0, 1
719 # Teclast X98 Plus I (A5C6), generic DMI strings, match entire dmi modalias inc. bios-date
720 sensor:modalias:acpi:KIOX000A*:dmi:bvnAmericanMegatrendsInc.:bvr5.011:bd11/03/2015:svnTobefilledbyO.E.M.:pnTobefilledbyO.E.M.:pvrTobefilledbyO.E.M.:rvnAMICorporation:rnCherryTrailCR:rvrTobefilledbyO.E.M.:cvnToBeFilledByO.E.M.:ct3:cvrToBeFilledByO.E.M.:*
721 ACCEL_MOUNT_MATRIX=0, 1, 0; 1, 0, 0; 0, 0, 1
723 # Teclast X98 Plus II
724 sensor:modalias:acpi:KIOX000A*:dmi:*:svnTECLAST:pnX98PlusII:*
725 ACCEL_MOUNT_MATRIX=1, 0, 0; 0, -1, 0; 0, 0, 1
727 #########################################
729 #########################################
731 # Thundersoft TST168 tablet, generic DMI strings, match entire dmi modalias inc. bios-date
732 sensor:modalias:acpi:BMA250E*:dmi:bvnAmericanMegatrendsInc.:bvr5.6.5:bd04/15/2014:svnTobefilledbyO.E.M.:pnTobefilledbyO.E.M.:pvrTobefilledbyO.E.M.:rvnAMICorporation:rnAptioCRB:rvrTobefilledbyO.E.M.:cvnToBeFilledByO.E.M.:ct3:cvrToBeFilledByO.E.M.:*
733 ACCEL_MOUNT_MATRIX=-1, 0, 0; 0, 1, 0; 0, 0, 1
735 #########################################
737 #########################################
739 # Toshiba Encore WT10A tablet
740 sensor:modalias:acpi:INVN6500*:dmi:*:svnTOSHIBA:pnTOSHIBAWT10-A-103:*
741 ACCEL_MOUNT_MATRIX=0, -1, 0; -1, 0, 0; 0, 0, 1
743 #########################################
745 #########################################
746 sensor:modalias:acpi:BMA250*:dmi:*:bvrTREK.G.WI71C.JGBMRBA*:*:svnInsyde:pnST70416-6:*
747 sensor:modalias:acpi:BMA250*:dmi:*:bvrTREK.G.WI71C.JGBMRBA*:*:svnTrekStor:pnSurfTabwintron7.0ST70416-6:*
748 ACCEL_MOUNT_MATRIX=0, 1, 0; 1, 0, 0; 0, 0, 1
750 sensor:modalias:acpi:KIOX000A*:dmi:*:svnTrekStor:pnSurfTabtwin10.1:*
751 ACCEL_MOUNT_MATRIX=-1, 0, 0; 0, 1, 0; 0, 0, 1
753 sensor:modalias:acpi:KIOX000A*:dmi:*:svnTREKSTOR*:pnPrimetabS11B:*
754 sensor:modalias:acpi:KIOX000A*:dmi:*:svnTREKSTOR:pnPrimetabT13B:*
755 sensor:modalias:acpi:BOSC0200*:dmi:*:svnTrekStor*:pnSurfTabtwin11.6:*
756 ACCEL_MOUNT_MATRIX=1, 0, 0; 0, -1, 0; 0, 0, 1
758 # alternative version of Trekstor's SurfTab Twin 11.6
759 sensor:modalias:acpi:BOSC0200*:dmi:*:bvrTP15-VT5.2.1.3:*:svnTrekStor*:pnSurfTabtwin11.6:*
760 ACCEL_MOUNT_MATRIX=-1, 0, 0; 0, 1, 0; 0, 0, -1
762 sensor:modalias:acpi:KIOX010A*:dmi:*:svnTREKSTOR:pnPrimebookC11B:*
763 sensor:modalias:acpi:KIOX010A*:dmi:*:svnTREKSTOR:pnPRIMEBOOKC11B:*
764 ACCEL_MOUNT_MATRIX=-1, 0, 0; 0, -1, 0; 0, 0, -1
765 ACCEL_LOCATION=display
767 sensor:modalias:acpi:KIOX020A*:dmi:*:svnTREKSTOR:pnPrimebookC11B:*
768 sensor:modalias:acpi:KIOX020A*:dmi:*:svnTREKSTOR:pnPRIMEBOOKC11B:*
769 ACCEL_MOUNT_MATRIX=0, 1, 0; 1, 0, 0; 0, 0, 1
772 #########################################
774 #########################################
775 sensor:modalias:acpi:KIOX000A*:dmi:*:svnUMAX:pnVisionBook10WiPro:*
776 ACCEL_MOUNT_MATRIX=1, 0, 0; 0, -1, 0; 0, 0, 1
778 sensor:modalias:acpi:SMO8500*:dmi:*:svnUMAX:pnVisionBook10WiPlus:*
779 ACCEL_MOUNT_MATRIX=0, -1, 0; -1, 0, 0; 0, 0, 1
781 #########################################
783 #########################################
785 # The Winpad A15 does not have its product name filled, so we
786 # match the entire dmi-alias, assuming that the use of a SMO8500 +
787 # bios-version + bios-date combo is unique
788 sensor:modalias:acpi:SMO8500*:dmi:bvnAmericanMegatrendsInc.:bvr5.6.5:bd11/20/2014:br5.6:svnTobefilledbyO.E.M.:pnTobefilledbyO.E.M.:pvrTobefilledbyO.E.M.:rvnAMICorporation:rnAptioCRB:rvrTobefilledbyO.E.M.:cvnToBeFilledByO.E.M.:ct3:cvrToBeFilledByO.E.M.:*
789 ACCEL_MOUNT_MATRIX=0, -1, 0; 1, 0, 0; 0, 0, -1
791 #########################################
793 #########################################
794 sensor:modalias:acpi:KIOX000A*:dmi:*:svnWortmann_AG:pnTERRA_PAD_1061:*
795 ACCEL_MOUNT_MATRIX=0, -1, 0; 1, 0, 0; 0, 0, -1
797 #########################################
799 #########################################
800 sensor:modalias:acpi:BMA250E*:dmi:*:svnYOURS:pnY8W81:*
801 ACCEL_MOUNT_MATRIX=0, -1, 0; -1, 0, 0; 0, 0, 1