New upstream version 252.6

This commit is contained in:
Luca Boccassi 2023-02-16 21:29:35 +00:00
parent 2808577866
commit 82126c1317
92 changed files with 11771 additions and 1906 deletions

View File

@ -34,6 +34,9 @@ actions:
- "sed -i '/%files ukify/d' .packit_rpm/systemd.spec" - "sed -i '/%files ukify/d' .packit_rpm/systemd.spec"
- "sed -i '/%files standalone-repart/d' .packit_rpm/systemd.spec" - "sed -i '/%files standalone-repart/d' .packit_rpm/systemd.spec"
- "sed -i '/%files standalone-shutdown/d' .packit_rpm/systemd.spec" - "sed -i '/%files standalone-shutdown/d' .packit_rpm/systemd.spec"
# These options were added in 253
- "sed -i '/-Ddefault-timeout-sec/d' .packit_rpm/systemd.spec"
- "sed -i '/-Ddefault-user-timeout-sec/d' .packit_rpm/systemd.spec"
# [0] https://github.com/mesonbuild/meson/issues/7360 # [0] https://github.com/mesonbuild/meson/issues/7360
# [1] https://github.com/systemd/systemd/pull/18908#issuecomment-792250110 # [1] https://github.com/systemd/systemd/pull/18908#issuecomment-792250110
- 'sed -i "/^CONFIGURE_OPTS=(/a--werror" .packit_rpm/systemd.spec' - 'sed -i "/^CONFIGURE_OPTS=(/a--werror" .packit_rpm/systemd.spec'

4
README
View File

@ -215,7 +215,9 @@ REQUIREMENTS:
During runtime, you need the following additional During runtime, you need the following additional
dependencies: dependencies:
util-linux >= v2.27.1 required util-linux >= v2.27.1 required (including but not limited to: mount,
umount, swapon, swapoff, sulogin,
agetty, fsck)
dbus >= 1.4.0 (strictly speaking optional, but recommended) dbus >= 1.4.0 (strictly speaking optional, but recommended)
NOTE: If using dbus < 1.9.18, you should override the default NOTE: If using dbus < 1.9.18, you should override the default
policy directory (--with-dbuspolicydir=/etc/dbus-1/system.d). policy directory (--with-dbuspolicydir=/etc/dbus-1/system.d).

View File

@ -1,18 +1,24 @@
# SPDX-License-Identifier: LGPL-2.1-or-later # SPDX-License-Identifier: LGPL-2.1-or-later
in_files = [ in_files = [
'systemd.bg.catalog',
'systemd.be.catalog', 'systemd.be.catalog',
'systemd.be@latin.catalog', 'systemd.be@latin.catalog',
'systemd.bg.catalog',
'systemd.catalog',
'systemd.da.catalog',
'systemd.de.catalog', 'systemd.de.catalog',
'systemd.fr.catalog', 'systemd.fr.catalog',
'systemd.hr.catalog',
'systemd.hu.catalog',
'systemd.it.catalog', 'systemd.it.catalog',
'systemd.ko.catalog',
'systemd.pl.catalog', 'systemd.pl.catalog',
'systemd.pt_BR.catalog', 'systemd.pt_BR.catalog',
'systemd.ru.catalog', 'systemd.ru.catalog',
'systemd.sr.catalog',
'systemd.zh_CN.catalog', 'systemd.zh_CN.catalog',
'systemd.zh_TW.catalog', 'systemd.zh_TW.catalog',
'systemd.catalog'] ]
support_url = get_option('support-url') support_url = get_option('support-url')
support_sed = 's~%SUPPORT_URL%~@0@~'.format(support_url) support_sed = 's~%SUPPORT_URL%~@0@~'.format(support_url)

View File

@ -298,9 +298,9 @@ care should be taken to avoid naming conflicts. `systemd` (and in particular
you cannot link them to each other. you cannot link them to each other.
4. Do not pretend that the real VTs are available in the container. The VT 4. Do not pretend that the real VTs are available in the container. The VT
subsystem consists of all the devices `/dev/tty*`, `/dev/vcs*`, `/dev/vcsa*` subsystem consists of all the devices `/dev/tty[0-9]*`, `/dev/vcs*`,
plus their `sysfs` counterparts. They speak specific `ioctl()`s and `/dev/vcsa*` plus their `sysfs` counterparts. They speak specific `ioctl()`s
understand specific escape sequences, that other ptys don't understand. and understand specific escape sequences, that other ptys don't understand.
Hence, it is explicitly not OK to mount a pty to `/dev/tty1`, `/dev/tty2`, Hence, it is explicitly not OK to mount a pty to `/dev/tty1`, `/dev/tty2`,
`/dev/tty3`. This is explicitly not supported. `/dev/tty3`. This is explicitly not supported.

File diff suppressed because it is too large Load Diff

View File

@ -66,6 +66,9 @@ acpi:BOSC*:
acpi:BRCM*: acpi:BRCM*:
ID_VENDOR_FROM_DATABASE=Broadcom Corporation ID_VENDOR_FROM_DATABASE=Broadcom Corporation
acpi:CIXH*:
ID_VENDOR_FROM_DATABASE=Cix Technology (Shanghai) Co., Ltd.
acpi:CMHR*: acpi:CMHR*:
ID_VENDOR_FROM_DATABASE=COMHEAR, INC. ID_VENDOR_FROM_DATABASE=COMHEAR, INC.
@ -105,6 +108,9 @@ acpi:ELAS*:
acpi:ESSX*: acpi:ESSX*:
ID_VENDOR_FROM_DATABASE=Everest Semiconductor Co., Ltd. ID_VENDOR_FROM_DATABASE=Everest Semiconductor Co., Ltd.
acpi:ETDS*:
ID_VENDOR_FROM_DATABASE=EyeTech Digital Systems
acpi:EXAR*: acpi:EXAR*:
ID_VENDOR_FROM_DATABASE=Exar Corporation ID_VENDOR_FROM_DATABASE=Exar Corporation
@ -213,6 +219,9 @@ acpi:LTSC*:
acpi:MCHP*: acpi:MCHP*:
ID_VENDOR_FROM_DATABASE=Microchip Technology Inc ID_VENDOR_FROM_DATABASE=Microchip Technology Inc
acpi:MCRY*:
ID_VENDOR_FROM_DATABASE=Micro Crystal AG
acpi:MIPI*: acpi:MIPI*:
ID_VENDOR_FROM_DATABASE=MIPI Alliance ID_VENDOR_FROM_DATABASE=MIPI Alliance
@ -2253,6 +2262,9 @@ acpi:DYN*:
acpi:DYX*: acpi:DYX*:
ID_VENDOR_FROM_DATABASE=Dynax Electronics (HK) Ltd ID_VENDOR_FROM_DATABASE=Dynax Electronics (HK) Ltd
acpi:EAC*:
ID_VENDOR_FROM_DATABASE=Emotiva Audio Corp.
acpi:EAG*: acpi:EAG*:
ID_VENDOR_FROM_DATABASE=ELTEC Elektronik AG ID_VENDOR_FROM_DATABASE=ELTEC Elektronik AG
@ -6264,6 +6276,9 @@ acpi:SGL*:
acpi:SGM*: acpi:SGM*:
ID_VENDOR_FROM_DATABASE=SAGEM ID_VENDOR_FROM_DATABASE=SAGEM
acpi:SGN*:
ID_VENDOR_FROM_DATABASE=Shenzhen Soogeen Electronics Co., LTD.
acpi:SGO*: acpi:SGO*:
ID_VENDOR_FROM_DATABASE=Logos Design A/S ID_VENDOR_FROM_DATABASE=Logos Design A/S

View File

@ -1,5 +1,5 @@
--- 20-acpi-vendor.hwdb.base 2022-10-31 11:15:33.457268398 +0000 --- 20-acpi-vendor.hwdb.base 2023-02-15 18:03:45.791408751 +0000
+++ 20-acpi-vendor.hwdb 2022-10-31 11:15:33.461268485 +0000 +++ 20-acpi-vendor.hwdb 2023-02-15 18:03:45.799408909 +0000
@@ -3,6 +3,8 @@ @@ -3,6 +3,8 @@
# Data imported from: # Data imported from:
# https://uefi.org/uefi-pnp-export # https://uefi.org/uefi-pnp-export
@ -19,7 +19,7 @@
acpi:AMDI*: acpi:AMDI*:
ID_VENDOR_FROM_DATABASE=AMD ID_VENDOR_FROM_DATABASE=AMD
@@ -343,6 +342,9 @@ @@ -352,6 +351,9 @@
acpi:AAA*: acpi:AAA*:
ID_VENDOR_FROM_DATABASE=Avolites Ltd ID_VENDOR_FROM_DATABASE=Avolites Ltd
@ -29,7 +29,7 @@
acpi:AAE*: acpi:AAE*:
ID_VENDOR_FROM_DATABASE=Anatek Electronics Inc. ID_VENDOR_FROM_DATABASE=Anatek Electronics Inc.
@@ -370,6 +372,9 @@ @@ -379,6 +381,9 @@
acpi:ABO*: acpi:ABO*:
ID_VENDOR_FROM_DATABASE=D-Link Systems Inc ID_VENDOR_FROM_DATABASE=D-Link Systems Inc
@ -39,7 +39,7 @@
acpi:ABS*: acpi:ABS*:
ID_VENDOR_FROM_DATABASE=Abaco Systems, Inc. ID_VENDOR_FROM_DATABASE=Abaco Systems, Inc.
@@ -415,7 +420,7 @@ @@ -424,7 +429,7 @@
acpi:ACO*: acpi:ACO*:
ID_VENDOR_FROM_DATABASE=Allion Computer Inc. ID_VENDOR_FROM_DATABASE=Allion Computer Inc.
@ -48,7 +48,7 @@
ID_VENDOR_FROM_DATABASE=Aspen Tech Inc ID_VENDOR_FROM_DATABASE=Aspen Tech Inc
acpi:ACR*: acpi:ACR*:
@@ -691,6 +696,9 @@ @@ -700,6 +705,9 @@
acpi:AMT*: acpi:AMT*:
ID_VENDOR_FROM_DATABASE=AMT International Industry ID_VENDOR_FROM_DATABASE=AMT International Industry
@ -58,7 +58,7 @@
acpi:AMX*: acpi:AMX*:
ID_VENDOR_FROM_DATABASE=AMX LLC ID_VENDOR_FROM_DATABASE=AMX LLC
@@ -739,6 +747,9 @@ @@ -748,6 +756,9 @@
acpi:AOA*: acpi:AOA*:
ID_VENDOR_FROM_DATABASE=AOpen Inc. ID_VENDOR_FROM_DATABASE=AOpen Inc.
@ -68,7 +68,7 @@
acpi:AOE*: acpi:AOE*:
ID_VENDOR_FROM_DATABASE=Advanced Optics Electronics, Inc. ID_VENDOR_FROM_DATABASE=Advanced Optics Electronics, Inc.
@@ -748,6 +759,9 @@ @@ -757,6 +768,9 @@
acpi:AOT*: acpi:AOT*:
ID_VENDOR_FROM_DATABASE=Alcatel ID_VENDOR_FROM_DATABASE=Alcatel
@ -78,7 +78,7 @@
acpi:APC*: acpi:APC*:
ID_VENDOR_FROM_DATABASE=American Power Conversion ID_VENDOR_FROM_DATABASE=American Power Conversion
@@ -926,7 +940,7 @@ @@ -935,7 +949,7 @@
ID_VENDOR_FROM_DATABASE=ALPS ALPINE CO., LTD. ID_VENDOR_FROM_DATABASE=ALPS ALPINE CO., LTD.
acpi:AUO*: acpi:AUO*:
@ -87,7 +87,7 @@
acpi:AUR*: acpi:AUR*:
ID_VENDOR_FROM_DATABASE=Aureal Semiconductor ID_VENDOR_FROM_DATABASE=Aureal Semiconductor
@@ -1006,6 +1020,9 @@ @@ -1015,6 +1029,9 @@
acpi:AXE*: acpi:AXE*:
ID_VENDOR_FROM_DATABASE=Axell Corporation ID_VENDOR_FROM_DATABASE=Axell Corporation
@ -97,7 +97,7 @@
acpi:AXI*: acpi:AXI*:
ID_VENDOR_FROM_DATABASE=American Magnetics ID_VENDOR_FROM_DATABASE=American Magnetics
@@ -1162,6 +1179,9 @@ @@ -1171,6 +1188,9 @@
acpi:BML*: acpi:BML*:
ID_VENDOR_FROM_DATABASE=BIOMED Lab ID_VENDOR_FROM_DATABASE=BIOMED Lab
@ -107,7 +107,7 @@
acpi:BMS*: acpi:BMS*:
ID_VENDOR_FROM_DATABASE=BIOMEDISYS ID_VENDOR_FROM_DATABASE=BIOMEDISYS
@@ -1174,6 +1194,9 @@ @@ -1183,6 +1203,9 @@
acpi:BNO*: acpi:BNO*:
ID_VENDOR_FROM_DATABASE=Bang & Olufsen ID_VENDOR_FROM_DATABASE=Bang & Olufsen
@ -117,7 +117,7 @@
acpi:BNS*: acpi:BNS*:
ID_VENDOR_FROM_DATABASE=Boulder Nonlinear Systems ID_VENDOR_FROM_DATABASE=Boulder Nonlinear Systems
@@ -1417,6 +1440,9 @@ @@ -1426,6 +1449,9 @@
acpi:CHA*: acpi:CHA*:
ID_VENDOR_FROM_DATABASE=Chase Research PLC ID_VENDOR_FROM_DATABASE=Chase Research PLC
@ -127,7 +127,7 @@
acpi:CHD*: acpi:CHD*:
ID_VENDOR_FROM_DATABASE=ChangHong Electric Co.,Ltd ID_VENDOR_FROM_DATABASE=ChangHong Electric Co.,Ltd
@@ -1579,6 +1605,9 @@ @@ -1588,6 +1614,9 @@
acpi:COD*: acpi:COD*:
ID_VENDOR_FROM_DATABASE=CODAN Pty. Ltd. ID_VENDOR_FROM_DATABASE=CODAN Pty. Ltd.
@ -137,7 +137,7 @@
acpi:COI*: acpi:COI*:
ID_VENDOR_FROM_DATABASE=Codec Inc. ID_VENDOR_FROM_DATABASE=Codec Inc.
@@ -1988,7 +2017,7 @@ @@ -1997,7 +2026,7 @@
ID_VENDOR_FROM_DATABASE=Dragon Information Technology ID_VENDOR_FROM_DATABASE=Dragon Information Technology
acpi:DJE*: acpi:DJE*:
@ -146,7 +146,7 @@
acpi:DJP*: acpi:DJP*:
ID_VENDOR_FROM_DATABASE=Maygay Machines, Ltd ID_VENDOR_FROM_DATABASE=Maygay Machines, Ltd
@@ -2326,6 +2355,9 @@ @@ -2338,6 +2367,9 @@
acpi:EIN*: acpi:EIN*:
ID_VENDOR_FROM_DATABASE=Elegant Invention ID_VENDOR_FROM_DATABASE=Elegant Invention
@ -156,7 +156,7 @@
acpi:EKA*: acpi:EKA*:
ID_VENDOR_FROM_DATABASE=MagTek Inc. ID_VENDOR_FROM_DATABASE=MagTek Inc.
@@ -2596,6 +2628,9 @@ @@ -2608,6 +2640,9 @@
acpi:FCG*: acpi:FCG*:
ID_VENDOR_FROM_DATABASE=First International Computer Ltd ID_VENDOR_FROM_DATABASE=First International Computer Ltd
@ -166,7 +166,7 @@
acpi:FCS*: acpi:FCS*:
ID_VENDOR_FROM_DATABASE=Focus Enhancements, Inc. ID_VENDOR_FROM_DATABASE=Focus Enhancements, Inc.
@@ -2972,7 +3007,7 @@ @@ -2984,7 +3019,7 @@
ID_VENDOR_FROM_DATABASE=General Standards Corporation ID_VENDOR_FROM_DATABASE=General Standards Corporation
acpi:GSM*: acpi:GSM*:
@ -175,7 +175,7 @@
acpi:GSN*: acpi:GSN*:
ID_VENDOR_FROM_DATABASE=Grandstream Networks, Inc. ID_VENDOR_FROM_DATABASE=Grandstream Networks, Inc.
@@ -3082,6 +3117,9 @@ @@ -3094,6 +3129,9 @@
acpi:HEC*: acpi:HEC*:
ID_VENDOR_FROM_DATABASE=Hisense Electric Co., Ltd. ID_VENDOR_FROM_DATABASE=Hisense Electric Co., Ltd.
@ -185,7 +185,7 @@
acpi:HEL*: acpi:HEL*:
ID_VENDOR_FROM_DATABASE=Hitachi Micro Systems Europe Ltd ID_VENDOR_FROM_DATABASE=Hitachi Micro Systems Europe Ltd
@@ -3214,6 +3252,9 @@ @@ -3226,6 +3264,9 @@
acpi:HSD*: acpi:HSD*:
ID_VENDOR_FROM_DATABASE=HannStar Display Corp ID_VENDOR_FROM_DATABASE=HannStar Display Corp
@ -195,7 +195,7 @@
acpi:HSM*: acpi:HSM*:
ID_VENDOR_FROM_DATABASE=AT&T Microelectronics ID_VENDOR_FROM_DATABASE=AT&T Microelectronics
@@ -3340,6 +3381,9 @@ @@ -3352,6 +3393,9 @@
acpi:ICI*: acpi:ICI*:
ID_VENDOR_FROM_DATABASE=Infotek Communication Inc ID_VENDOR_FROM_DATABASE=Infotek Communication Inc
@ -205,7 +205,7 @@
acpi:ICM*: acpi:ICM*:
ID_VENDOR_FROM_DATABASE=Intracom SA ID_VENDOR_FROM_DATABASE=Intracom SA
@@ -3436,6 +3480,9 @@ @@ -3448,6 +3492,9 @@
acpi:IKE*: acpi:IKE*:
ID_VENDOR_FROM_DATABASE=Ikegami Tsushinki Co. Ltd. ID_VENDOR_FROM_DATABASE=Ikegami Tsushinki Co. Ltd.
@ -215,7 +215,7 @@
acpi:IKS*: acpi:IKS*:
ID_VENDOR_FROM_DATABASE=Ikos Systems Inc ID_VENDOR_FROM_DATABASE=Ikos Systems Inc
@@ -3484,6 +3531,9 @@ @@ -3496,6 +3543,9 @@
acpi:IMX*: acpi:IMX*:
ID_VENDOR_FROM_DATABASE=arpara Technology Co., Ltd. ID_VENDOR_FROM_DATABASE=arpara Technology Co., Ltd.
@ -225,7 +225,7 @@
acpi:INA*: acpi:INA*:
ID_VENDOR_FROM_DATABASE=Inventec Corporation ID_VENDOR_FROM_DATABASE=Inventec Corporation
@@ -4003,6 +4053,9 @@ @@ -4015,6 +4065,9 @@
acpi:LAN*: acpi:LAN*:
ID_VENDOR_FROM_DATABASE=Sodeman Lancom Inc ID_VENDOR_FROM_DATABASE=Sodeman Lancom Inc
@ -235,7 +235,7 @@
acpi:LAS*: acpi:LAS*:
ID_VENDOR_FROM_DATABASE=LASAT Comm. A/S ID_VENDOR_FROM_DATABASE=LASAT Comm. A/S
@@ -4051,6 +4104,9 @@ @@ -4063,6 +4116,9 @@
acpi:LED*: acpi:LED*:
ID_VENDOR_FROM_DATABASE=Long Engineering Design Inc ID_VENDOR_FROM_DATABASE=Long Engineering Design Inc
@ -245,7 +245,7 @@
acpi:LEG*: acpi:LEG*:
ID_VENDOR_FROM_DATABASE=Legerity, Inc ID_VENDOR_FROM_DATABASE=Legerity, Inc
@@ -4069,6 +4125,9 @@ @@ -4081,6 +4137,9 @@
acpi:LGD*: acpi:LGD*:
ID_VENDOR_FROM_DATABASE=LG Display ID_VENDOR_FROM_DATABASE=LG Display
@ -255,7 +255,7 @@
acpi:LGI*: acpi:LGI*:
ID_VENDOR_FROM_DATABASE=Logitech Inc ID_VENDOR_FROM_DATABASE=Logitech Inc
@@ -4126,6 +4185,9 @@ @@ -4138,6 +4197,9 @@
acpi:LND*: acpi:LND*:
ID_VENDOR_FROM_DATABASE=Land Computer Company Ltd ID_VENDOR_FROM_DATABASE=Land Computer Company Ltd
@ -265,7 +265,7 @@
acpi:LNK*: acpi:LNK*:
ID_VENDOR_FROM_DATABASE=Link Tech Inc ID_VENDOR_FROM_DATABASE=Link Tech Inc
@@ -4160,7 +4222,7 @@ @@ -4172,7 +4234,7 @@
ID_VENDOR_FROM_DATABASE=Design Technology ID_VENDOR_FROM_DATABASE=Design Technology
acpi:LPL*: acpi:LPL*:
@ -274,7 +274,7 @@
acpi:LSC*: acpi:LSC*:
ID_VENDOR_FROM_DATABASE=LifeSize Communications ID_VENDOR_FROM_DATABASE=LifeSize Communications
@@ -4336,6 +4398,9 @@ @@ -4348,6 +4410,9 @@
acpi:MCX*: acpi:MCX*:
ID_VENDOR_FROM_DATABASE=Millson Custom Solutions Inc. ID_VENDOR_FROM_DATABASE=Millson Custom Solutions Inc.
@ -284,7 +284,7 @@
acpi:MDA*: acpi:MDA*:
ID_VENDOR_FROM_DATABASE=Media4 Inc ID_VENDOR_FROM_DATABASE=Media4 Inc
@@ -4576,6 +4641,9 @@ @@ -4588,6 +4653,9 @@
acpi:MOM*: acpi:MOM*:
ID_VENDOR_FROM_DATABASE=Momentum Data Systems ID_VENDOR_FROM_DATABASE=Momentum Data Systems
@ -294,7 +294,7 @@
acpi:MOS*: acpi:MOS*:
ID_VENDOR_FROM_DATABASE=Moses Corporation ID_VENDOR_FROM_DATABASE=Moses Corporation
@@ -4813,6 +4881,9 @@ @@ -4825,6 +4893,9 @@
acpi:NAL*: acpi:NAL*:
ID_VENDOR_FROM_DATABASE=Network Alchemy ID_VENDOR_FROM_DATABASE=Network Alchemy
@ -304,7 +304,7 @@
acpi:NAT*: acpi:NAT*:
ID_VENDOR_FROM_DATABASE=NaturalPoint Inc. ID_VENDOR_FROM_DATABASE=NaturalPoint Inc.
@@ -5347,6 +5418,9 @@ @@ -5359,6 +5430,9 @@
acpi:PCX*: acpi:PCX*:
ID_VENDOR_FROM_DATABASE=PC Xperten ID_VENDOR_FROM_DATABASE=PC Xperten
@ -314,7 +314,7 @@
acpi:PDM*: acpi:PDM*:
ID_VENDOR_FROM_DATABASE=Psion Dacom Plc. ID_VENDOR_FROM_DATABASE=Psion Dacom Plc.
@@ -5410,9 +5484,6 @@ @@ -5422,9 +5496,6 @@
acpi:PHE*: acpi:PHE*:
ID_VENDOR_FROM_DATABASE=Philips Medical Systems Boeblingen GmbH ID_VENDOR_FROM_DATABASE=Philips Medical Systems Boeblingen GmbH
@ -324,7 +324,7 @@
acpi:PHL*: acpi:PHL*:
ID_VENDOR_FROM_DATABASE=Philips Consumer Electronics Company ID_VENDOR_FROM_DATABASE=Philips Consumer Electronics Company
@@ -5503,9 +5574,6 @@ @@ -5515,9 +5586,6 @@
acpi:PNL*: acpi:PNL*:
ID_VENDOR_FROM_DATABASE=Panelview, Inc. ID_VENDOR_FROM_DATABASE=Panelview, Inc.
@ -334,7 +334,7 @@
acpi:PNR*: acpi:PNR*:
ID_VENDOR_FROM_DATABASE=Planar Systems, Inc. ID_VENDOR_FROM_DATABASE=Planar Systems, Inc.
@@ -5971,9 +6039,6 @@ @@ -5983,9 +6051,6 @@
acpi:RTI*: acpi:RTI*:
ID_VENDOR_FROM_DATABASE=Rancho Tech Inc ID_VENDOR_FROM_DATABASE=Rancho Tech Inc
@ -344,7 +344,7 @@
acpi:RTL*: acpi:RTL*:
ID_VENDOR_FROM_DATABASE=Realtek Semiconductor Company Ltd ID_VENDOR_FROM_DATABASE=Realtek Semiconductor Company Ltd
@@ -6145,9 +6210,6 @@ @@ -6157,9 +6222,6 @@
acpi:SEE*: acpi:SEE*:
ID_VENDOR_FROM_DATABASE=SeeColor Corporation ID_VENDOR_FROM_DATABASE=SeeColor Corporation
@ -354,7 +354,7 @@
acpi:SEI*: acpi:SEI*:
ID_VENDOR_FROM_DATABASE=Seitz & Associates Inc ID_VENDOR_FROM_DATABASE=Seitz & Associates Inc
@@ -6622,6 +6684,9 @@ @@ -6637,6 +6699,9 @@
acpi:SVD*: acpi:SVD*:
ID_VENDOR_FROM_DATABASE=SVD Computer ID_VENDOR_FROM_DATABASE=SVD Computer
@ -364,7 +364,7 @@
acpi:SVI*: acpi:SVI*:
ID_VENDOR_FROM_DATABASE=Sun Microsystems ID_VENDOR_FROM_DATABASE=Sun Microsystems
@@ -6706,6 +6771,9 @@ @@ -6721,6 +6786,9 @@
acpi:SZM*: acpi:SZM*:
ID_VENDOR_FROM_DATABASE=Shenzhen MTC Co., Ltd ID_VENDOR_FROM_DATABASE=Shenzhen MTC Co., Ltd
@ -374,7 +374,7 @@
acpi:TAA*: acpi:TAA*:
ID_VENDOR_FROM_DATABASE=Tandberg ID_VENDOR_FROM_DATABASE=Tandberg
@@ -6796,6 +6864,9 @@ @@ -6811,6 +6879,9 @@
acpi:TDG*: acpi:TDG*:
ID_VENDOR_FROM_DATABASE=Six15 Technologies ID_VENDOR_FROM_DATABASE=Six15 Technologies
@ -384,7 +384,7 @@
acpi:TDM*: acpi:TDM*:
ID_VENDOR_FROM_DATABASE=Tandem Computer Europe Inc ID_VENDOR_FROM_DATABASE=Tandem Computer Europe Inc
@@ -6838,6 +6909,9 @@ @@ -6853,6 +6924,9 @@
acpi:TEV*: acpi:TEV*:
ID_VENDOR_FROM_DATABASE=Televés, S.A. ID_VENDOR_FROM_DATABASE=Televés, S.A.
@ -394,7 +394,7 @@
acpi:TEZ*: acpi:TEZ*:
ID_VENDOR_FROM_DATABASE=Tech Source Inc. ID_VENDOR_FROM_DATABASE=Tech Source Inc.
@@ -6964,9 +7038,6 @@ @@ -6979,9 +7053,6 @@
acpi:TNC*: acpi:TNC*:
ID_VENDOR_FROM_DATABASE=TNC Industrial Company Ltd ID_VENDOR_FROM_DATABASE=TNC Industrial Company Ltd
@ -404,7 +404,7 @@
acpi:TNM*: acpi:TNM*:
ID_VENDOR_FROM_DATABASE=TECNIMAGEN SA ID_VENDOR_FROM_DATABASE=TECNIMAGEN SA
@@ -7276,14 +7347,14 @@ @@ -7291,14 +7362,14 @@
acpi:UNC*: acpi:UNC*:
ID_VENDOR_FROM_DATABASE=Unisys Corporation ID_VENDOR_FROM_DATABASE=Unisys Corporation
@ -425,7 +425,7 @@
acpi:UNI*: acpi:UNI*:
ID_VENDOR_FROM_DATABASE=Uniform Industry Corp. ID_VENDOR_FROM_DATABASE=Uniform Industry Corp.
@@ -7318,6 +7389,9 @@ @@ -7333,6 +7404,9 @@
acpi:USA*: acpi:USA*:
ID_VENDOR_FROM_DATABASE=Utimaco Safeware AG ID_VENDOR_FROM_DATABASE=Utimaco Safeware AG
@ -435,7 +435,7 @@
acpi:USD*: acpi:USD*:
ID_VENDOR_FROM_DATABASE=U.S. Digital Corporation ID_VENDOR_FROM_DATABASE=U.S. Digital Corporation
@@ -7576,9 +7650,6 @@ @@ -7591,9 +7665,6 @@
acpi:WAL*: acpi:WAL*:
ID_VENDOR_FROM_DATABASE=Wave Access ID_VENDOR_FROM_DATABASE=Wave Access
@ -445,7 +445,7 @@
acpi:WAV*: acpi:WAV*:
ID_VENDOR_FROM_DATABASE=Wavephore ID_VENDOR_FROM_DATABASE=Wavephore
@@ -7706,7 +7777,7 @@ @@ -7721,7 +7792,7 @@
ID_VENDOR_FROM_DATABASE=WyreStorm Technologies LLC ID_VENDOR_FROM_DATABASE=WyreStorm Technologies LLC
acpi:WYS*: acpi:WYS*:
@ -454,7 +454,7 @@
acpi:WYT*: acpi:WYT*:
ID_VENDOR_FROM_DATABASE=Wooyoung Image & Information Co.,Ltd. ID_VENDOR_FROM_DATABASE=Wooyoung Image & Information Co.,Ltd.
@@ -7720,9 +7791,6 @@ @@ -7735,9 +7806,6 @@
acpi:XDM*: acpi:XDM*:
ID_VENDOR_FROM_DATABASE=XDM Ltd. ID_VENDOR_FROM_DATABASE=XDM Ltd.
@ -464,7 +464,7 @@
acpi:XES*: acpi:XES*:
ID_VENDOR_FROM_DATABASE=Extreme Engineering Solutions, Inc. ID_VENDOR_FROM_DATABASE=Extreme Engineering Solutions, Inc.
@@ -7753,9 +7821,6 @@ @@ -7768,9 +7836,6 @@
acpi:XNT*: acpi:XNT*:
ID_VENDOR_FROM_DATABASE=XN Technologies, Inc. ID_VENDOR_FROM_DATABASE=XN Technologies, Inc.
@ -474,7 +474,7 @@
acpi:XQU*: acpi:XQU*:
ID_VENDOR_FROM_DATABASE=SHANGHAI SVA-DAV ELECTRONICS CO., LTD ID_VENDOR_FROM_DATABASE=SHANGHAI SVA-DAV ELECTRONICS CO., LTD
@@ -7822,6 +7887,9 @@ @@ -7837,6 +7902,9 @@
acpi:ZBX*: acpi:ZBX*:
ID_VENDOR_FROM_DATABASE=Zebax Technologies ID_VENDOR_FROM_DATABASE=Zebax Technologies

File diff suppressed because it is too large Load Diff

View File

@ -14,6 +14,9 @@ usb:v0002*
usb:v0002p0002* usb:v0002p0002*
ID_MODEL_FROM_DATABASE=passport00 ID_MODEL_FROM_DATABASE=passport00
usb:v0002p7007*
ID_MODEL_FROM_DATABASE=HPRT XT300
usb:v0003* usb:v0003*
ID_VENDOR_FROM_DATABASE=Club Mac ID_VENDOR_FROM_DATABASE=Club Mac
@ -26,6 +29,15 @@ usb:v0011*
usb:v0011p7788* usb:v0011p7788*
ID_MODEL_FROM_DATABASE=counterfeit flash drive ID_MODEL_FROM_DATABASE=counterfeit flash drive
usb:v0040*
ID_VENDOR_FROM_DATABASE=Anyware Corporation
usb:v0040p073D*
ID_MODEL_FROM_DATABASE=Mini Multimedia 2.4GHz Wireless Keyboard with Touch Pad
usb:v0042*
ID_VENDOR_FROM_DATABASE=DMT
usb:v0053* usb:v0053*
ID_VENDOR_FROM_DATABASE=Planex ID_VENDOR_FROM_DATABASE=Planex
@ -122,6 +134,9 @@ usb:v0218*
usb:v0218p0301* usb:v0218p0301*
ID_MODEL_FROM_DATABASE=MIDI Port ID_MODEL_FROM_DATABASE=MIDI Port
usb:v0231*
ID_VENDOR_FROM_DATABASE=Sonuus Limited
usb:v02AD* usb:v02AD*
ID_VENDOR_FROM_DATABASE=HUMAX Co., Ltd. ID_VENDOR_FROM_DATABASE=HUMAX Co., Ltd.
@ -158,6 +173,12 @@ usb:v03C3*
usb:v03C3p120E* usb:v03C3p120E*
ID_MODEL_FROM_DATABASE=ASI120MC-S Planetary Camera ID_MODEL_FROM_DATABASE=ASI120MC-S Planetary Camera
usb:v03C3p1F10*
ID_MODEL_FROM_DATABASE=EFF
usb:v03C3p294F*
ID_MODEL_FROM_DATABASE=ASI294MC Pro
usb:v03D9* usb:v03D9*
ID_VENDOR_FROM_DATABASE=Shenzhen Sinote Tech-Electron Co., Ltd ID_VENDOR_FROM_DATABASE=Shenzhen Sinote Tech-Electron Co., Ltd
@ -624,7 +645,7 @@ usb:v03F0p0223*
ID_MODEL_FROM_DATABASE=Digital Drive Flash Reader ID_MODEL_FROM_DATABASE=Digital Drive Flash Reader
usb:v03F0p022A* usb:v03F0p022A*
ID_MODEL_FROM_DATABASE=Laserjet CP1525nw ID_MODEL_FROM_DATABASE=LaserJet CP1525nw/x
usb:v03F0p0241* usb:v03F0p0241*
ID_MODEL_FROM_DATABASE=Link-5 micro dongle ID_MODEL_FROM_DATABASE=Link-5 micro dongle
@ -773,6 +794,9 @@ usb:v03F0p0811*
usb:v03F0p0817* usb:v03F0p0817*
ID_MODEL_FROM_DATABASE=LaserJet 3300 ID_MODEL_FROM_DATABASE=LaserJet 3300
usb:v03F0p0853*
ID_MODEL_FROM_DATABASE=ENVY 5000 series
usb:v03F0p0901* usb:v03F0p0901*
ID_MODEL_FROM_DATABASE=ScanJet 2300c ID_MODEL_FROM_DATABASE=ScanJet 2300c
@ -1313,6 +1337,9 @@ usb:v03F0p2D11*
usb:v03F0p2D17* usb:v03F0p2D17*
ID_MODEL_FROM_DATABASE=Printing Support ID_MODEL_FROM_DATABASE=Printing Support
usb:v03F0p2D2A*
ID_MODEL_FROM_DATABASE=LaserJet Pro MFP M225dw
usb:v03F0p2E11* usb:v03F0p2E11*
ID_MODEL_FROM_DATABASE=PSC 1000 ID_MODEL_FROM_DATABASE=PSC 1000
@ -1508,6 +1535,9 @@ usb:v03F0p3D17*
usb:v03F0p3E02* usb:v03F0p3E02*
ID_MODEL_FROM_DATABASE=PhotoSmart 7550 ID_MODEL_FROM_DATABASE=PhotoSmart 7550
usb:v03F0p3E07*
ID_MODEL_FROM_DATABASE=x755w Flash Drive
usb:v03F0p3E17* usb:v03F0p3E17*
ID_MODEL_FROM_DATABASE=LaserJet P1006 ID_MODEL_FROM_DATABASE=LaserJet P1006
@ -1598,6 +1628,9 @@ usb:v03F0p4717*
usb:v03F0p4811* usb:v03F0p4811*
ID_MODEL_FROM_DATABASE=PSC 1600 ID_MODEL_FROM_DATABASE=PSC 1600
usb:v03F0p484A*
ID_MODEL_FROM_DATABASE=Elite Dock G4
usb:v03F0p4911* usb:v03F0p4911*
ID_MODEL_FROM_DATABASE=PSC 2350 ID_MODEL_FROM_DATABASE=PSC 2350
@ -2357,8 +2390,11 @@ usb:v0403p6014*
usb:v0403p6015* usb:v0403p6015*
ID_MODEL_FROM_DATABASE=Bridge(I2C/SPI/UART/FIFO) ID_MODEL_FROM_DATABASE=Bridge(I2C/SPI/UART/FIFO)
usb:v0403p601E*
ID_MODEL_FROM_DATABASE=FT600 16-bit FIFO IC
usb:v0403p601F* usb:v0403p601F*
ID_MODEL_FROM_DATABASE=Myriad-RF LimeSDR-Mini ID_MODEL_FROM_DATABASE=FT601 32-bit FIFO IC
usb:v0403p6EE0* usb:v0403p6EE0*
ID_MODEL_FROM_DATABASE=EZO Carrier Board ID_MODEL_FROM_DATABASE=EZO Carrier Board
@ -2627,6 +2663,9 @@ usb:v0403pD491*
usb:v0403pD578* usb:v0403pD578*
ID_MODEL_FROM_DATABASE=Accesio USB-COM-4SM ID_MODEL_FROM_DATABASE=Accesio USB-COM-4SM
usb:v0403pD678*
ID_MODEL_FROM_DATABASE=GammaScout
usb:v0403pD6F8* usb:v0403pD6F8*
ID_MODEL_FROM_DATABASE=UNI Black BOX ID_MODEL_FROM_DATABASE=UNI Black BOX
@ -3554,9 +3593,15 @@ usb:v040D*
usb:v040Dp3184* usb:v040Dp3184*
ID_MODEL_FROM_DATABASE=VNT VT6656 USB-802.11 Wireless LAN Adapter ID_MODEL_FROM_DATABASE=VNT VT6656 USB-802.11 Wireless LAN Adapter
usb:v040Dp340B*
ID_MODEL_FROM_DATABASE=FX-Audio DAC-X6
usb:v040Dp340F* usb:v040Dp340F*
ID_MODEL_FROM_DATABASE=Audinst HUD-mx2 ID_MODEL_FROM_DATABASE=Audinst HUD-mx2
usb:v040Dp6204*
ID_MODEL_FROM_DATABASE=Vectro VT6204 IDE bridge
usb:v040Dp6205* usb:v040Dp6205*
ID_MODEL_FROM_DATABASE=USB 2.0 Card Reader ID_MODEL_FROM_DATABASE=USB 2.0 Card Reader
@ -3966,7 +4011,7 @@ usb:v0416p7723*
ID_MODEL_FROM_DATABASE=SD Card Reader ID_MODEL_FROM_DATABASE=SD Card Reader
usb:v0416pB23C* usb:v0416pB23C*
ID_MODEL_FROM_DATABASE=KT108 keyboard ID_MODEL_FROM_DATABASE=Gaming Keyboard
usb:v0416pC141* usb:v0416pC141*
ID_MODEL_FROM_DATABASE=Barcode Scanner ID_MODEL_FROM_DATABASE=Barcode Scanner
@ -4088,6 +4133,9 @@ usb:v041Ep3030*
usb:v041Ep3040* usb:v041Ep3040*
ID_MODEL_FROM_DATABASE=SoundBlaster Live! 24-bit External SB0490 ID_MODEL_FROM_DATABASE=SoundBlaster Live! 24-bit External SB0490
usb:v041Ep3042*
ID_MODEL_FROM_DATABASE=Sound Blaster X-Fi Surround 5.1
usb:v041Ep3060* usb:v041Ep3060*
ID_MODEL_FROM_DATABASE=Sound Blaster Audigy 2 ZS External ID_MODEL_FROM_DATABASE=Sound Blaster Audigy 2 ZS External
@ -4136,6 +4184,9 @@ usb:v041Ep3F04*
usb:v041Ep3F07* usb:v041Ep3F07*
ID_MODEL_FROM_DATABASE=E-Mu Xmidi 1x1 ID_MODEL_FROM_DATABASE=E-Mu Xmidi 1x1
usb:v041Ep3F0A*
ID_MODEL_FROM_DATABASE=E-Mu Tracker Pre
usb:v041Ep3F0E* usb:v041Ep3F0E*
ID_MODEL_FROM_DATABASE=Xmidi 1x1 Tab ID_MODEL_FROM_DATABASE=Xmidi 1x1 Tab
@ -4320,7 +4371,7 @@ usb:v041Ep4095*
ID_MODEL_FROM_DATABASE=Live! Cam Sync HD [VF0770] ID_MODEL_FROM_DATABASE=Live! Cam Sync HD [VF0770]
usb:v041Ep4097* usb:v041Ep4097*
ID_MODEL_FROM_DATABASE=Live! Cam Chat HD [VF0700] ID_MODEL_FROM_DATABASE=Live! Cam Chat HD [VF0700/VF0790]
usb:v041Ep4099* usb:v041Ep4099*
ID_MODEL_FROM_DATABASE=Creative VF0800 [RealSense Camera SR300] ID_MODEL_FROM_DATABASE=Creative VF0800 [RealSense Camera SR300]
@ -4943,6 +4994,9 @@ usb:v0424*
usb:v0424p0001* usb:v0424p0001*
ID_MODEL_FROM_DATABASE=Integrated Hub ID_MODEL_FROM_DATABASE=Integrated Hub
usb:v0424p0007*
ID_MODEL_FROM_DATABASE=ULPI Transciever [USB3320]
usb:v0424p0140* usb:v0424p0140*
ID_MODEL_FROM_DATABASE=LPC47M14x hub ID_MODEL_FROM_DATABASE=LPC47M14x hub
@ -5216,6 +5270,9 @@ usb:v0430p00A2*
usb:v0430p0100* usb:v0430p0100*
ID_MODEL_FROM_DATABASE=3-button Mouse ID_MODEL_FROM_DATABASE=3-button Mouse
usb:v0430p0406*
ID_MODEL_FROM_DATABASE=KVM Switch
usb:v0430p0502* usb:v0430p0502*
ID_MODEL_FROM_DATABASE=Panasonic CF-19 HID Touch Panel ID_MODEL_FROM_DATABASE=Panasonic CF-19 HID Touch Panel
@ -5738,6 +5795,9 @@ usb:v043Dp0142*
usb:v043Dp01FA* usb:v043Dp01FA*
ID_MODEL_FROM_DATABASE=S310 series ID_MODEL_FROM_DATABASE=S310 series
usb:v043Dp020E*
ID_MODEL_FROM_DATABASE=RICOH Aficio SP 4410SF
usb:v043Dp4303* usb:v043Dp4303*
ID_MODEL_FROM_DATABASE=Xerox WorkCentre Pro 412 ID_MODEL_FROM_DATABASE=Xerox WorkCentre Pro 412
@ -6227,6 +6287,15 @@ usb:v0455*
usb:v0456* usb:v0456*
ID_VENDOR_FROM_DATABASE=Analog Devices, Inc. ID_VENDOR_FROM_DATABASE=Analog Devices, Inc.
usb:v0456p7031*
ID_MODEL_FROM_DATABASE=FX2 SPI/I2C Interface
usb:v0456pB672*
ID_MODEL_FROM_DATABASE=Libiio based instrument [ADALM2000]
usb:v0456pB673*
ID_MODEL_FROM_DATABASE=LibIIO based AD9363 Software Defined Radio [ADALM-PLUTO]
usb:v0456pF000* usb:v0456pF000*
ID_MODEL_FROM_DATABASE=FT2232 JTAG ICE [gnICE] ID_MODEL_FROM_DATABASE=FT2232 JTAG ICE [gnICE]
@ -6530,6 +6599,9 @@ usb:v0458p7025*
usb:v0458p7029* usb:v0458p7029*
ID_MODEL_FROM_DATABASE=Genius Look 320s (SN9C201 + HV7131R) ID_MODEL_FROM_DATABASE=Genius Look 320s (SN9C201 + HV7131R)
usb:v0458p702C*
ID_MODEL_FROM_DATABASE=Trek 320R Camera
usb:v0458p702F* usb:v0458p702F*
ID_MODEL_FROM_DATABASE=Genius Slim 322 ID_MODEL_FROM_DATABASE=Genius Slim 322
@ -6963,7 +7035,7 @@ usb:v045Ep028E*
ID_MODEL_FROM_DATABASE=Xbox360 Controller ID_MODEL_FROM_DATABASE=Xbox360 Controller
usb:v045Ep028F* usb:v045Ep028F*
ID_MODEL_FROM_DATABASE=Xbox360 Wireless Controller ID_MODEL_FROM_DATABASE=Xbox360 Wireless Controller via Plug & Charge Cable
usb:v045Ep0290* usb:v045Ep0290*
ID_MODEL_FROM_DATABASE=Xbox360 Performance Pipe (PIX) ID_MODEL_FROM_DATABASE=Xbox360 Performance Pipe (PIX)
@ -7025,6 +7097,9 @@ usb:v045Ep02D5*
usb:v045Ep02DD* usb:v045Ep02DD*
ID_MODEL_FROM_DATABASE=Xbox One Controller (Firmware 2015) ID_MODEL_FROM_DATABASE=Xbox One Controller (Firmware 2015)
usb:v045Ep02E0*
ID_MODEL_FROM_DATABASE=Xbox One Wireless Controller
usb:v045Ep02E3* usb:v045Ep02E3*
ID_MODEL_FROM_DATABASE=Xbox One Elite Controller ID_MODEL_FROM_DATABASE=Xbox One Elite Controller
@ -7037,6 +7112,12 @@ usb:v045Ep02EA*
usb:v045Ep02FD* usb:v045Ep02FD*
ID_MODEL_FROM_DATABASE=Xbox One S Controller [Bluetooth] ID_MODEL_FROM_DATABASE=Xbox One S Controller [Bluetooth]
usb:v045Ep02FE*
ID_MODEL_FROM_DATABASE=Xbox Wireless Adapter for Windows
usb:v045Ep02FF*
ID_MODEL_FROM_DATABASE=Xbox One S Controller [Bluetooth]
usb:v045Ep0400* usb:v045Ep0400*
ID_MODEL_FROM_DATABASE=Windows Powered Pocket PC 2002 ID_MODEL_FROM_DATABASE=Windows Powered Pocket PC 2002
@ -7601,6 +7682,21 @@ usb:v045Ep0955*
usb:v045Ep0957* usb:v045Ep0957*
ID_MODEL_FROM_DATABASE=Hub ID_MODEL_FROM_DATABASE=Hub
usb:v045Ep097A*
ID_MODEL_FROM_DATABASE=Generic Superspeed Hub [Azure Kinect]
usb:v045Ep097B*
ID_MODEL_FROM_DATABASE=Generic Hub [Azure Kinect]
usb:v045Ep097C*
ID_MODEL_FROM_DATABASE=Azure Kinect Depth Camera
usb:v045Ep097D*
ID_MODEL_FROM_DATABASE=Azure Kinect 4K Camera
usb:v045Ep097E*
ID_MODEL_FROM_DATABASE=Azure Kinect Microphone Array
usb:v045Ep09A0* usb:v045Ep09A0*
ID_MODEL_FROM_DATABASE=RTL8153B GigE [Surface Ethernet Adapter] ID_MODEL_FROM_DATABASE=RTL8153B GigE [Surface Ethernet Adapter]
@ -7608,7 +7704,10 @@ usb:v045Ep09C0*
ID_MODEL_FROM_DATABASE=Surface Type Cover ID_MODEL_FROM_DATABASE=Surface Type Cover
usb:v045Ep0A00* usb:v045Ep0A00*
ID_MODEL_FROM_DATABASE=Lumia 950 Dual SIM (RM-1118) ID_MODEL_FROM_DATABASE=Lumia 950 (RM-1104/RM-1118)
usb:v045Ep0B00*
ID_MODEL_FROM_DATABASE=Xbox Elite Series 2 Controller (model 1797)
usb:v045Ep0B12* usb:v045Ep0B12*
ID_MODEL_FROM_DATABASE=Xbox Wireless Controller (model 1914) ID_MODEL_FROM_DATABASE=Xbox Wireless Controller (model 1914)
@ -7805,6 +7904,9 @@ usb:v0461p4D51*
usb:v0461p4D62* usb:v0461p4D62*
ID_MODEL_FROM_DATABASE=HP Laser Mobile Mini Mouse ID_MODEL_FROM_DATABASE=HP Laser Mobile Mini Mouse
usb:v0461p4D64*
ID_MODEL_FROM_DATABASE=Asus wired optical mouse - Model MOEWUO
usb:v0461p4D75* usb:v0461p4D75*
ID_MODEL_FROM_DATABASE=Rocketfish RF-FLBTAD Bluetooth Adapter ID_MODEL_FROM_DATABASE=Rocketfish RF-FLBTAD Bluetooth Adapter
@ -7835,6 +7937,9 @@ usb:v0461p4E04*
usb:v0461p4E22* usb:v0461p4E22*
ID_MODEL_FROM_DATABASE=Dell Mouse, 2 Buttons, Modell: MS111-P ID_MODEL_FROM_DATABASE=Dell Mouse, 2 Buttons, Modell: MS111-P
usb:v0461p4E26*
ID_MODEL_FROM_DATABASE=Asus wired keyboard - model KB73211
usb:v0461p4E6F* usb:v0461p4E6F*
ID_MODEL_FROM_DATABASE=Acer Wired Keyboard Model KBAY211 ID_MODEL_FROM_DATABASE=Acer Wired Keyboard Model KBAY211
@ -7910,15 +8015,87 @@ usb:v046Ap003E*
usb:v046Ap0041* usb:v046Ap0041*
ID_MODEL_FROM_DATABASE=G86 6240 Keyboard ID_MODEL_FROM_DATABASE=G86 6240 Keyboard
usb:v046Ap0076*
ID_MODEL_FROM_DATABASE=MX-Board 3.0 G80-3850
usb:v046Ap0077*
ID_MODEL_FROM_DATABASE=MX BOARD 3.0S FL NBL Keyboard
usb:v046Ap0079*
ID_MODEL_FROM_DATABASE=MX BOARD 3.0S FL RGB Keyboard
usb:v046Ap0080* usb:v046Ap0080*
ID_MODEL_FROM_DATABASE=eHealth Terminal ST 1503 ID_MODEL_FROM_DATABASE=eHealth Terminal ST 1503
usb:v046Ap0081* usb:v046Ap0081*
ID_MODEL_FROM_DATABASE=eHealth Keyboard G87 1504 ID_MODEL_FROM_DATABASE=eHealth Keyboard G87 1504
usb:v046Ap0083*
ID_MODEL_FROM_DATABASE=MX BOARD 3.0S FL RGB (KOREAN) Keyboard
usb:v046Ap0084*
ID_MODEL_FROM_DATABASE=eHealth Terminal ST1506
usb:v046Ap0085*
ID_MODEL_FROM_DATABASE=eHealth PIN-Pad PP1516
usb:v046Ap00A1* usb:v046Ap00A1*
ID_MODEL_FROM_DATABASE=SmartCard Reader Keyboard KC 1000 SC ID_MODEL_FROM_DATABASE=SmartCard Reader Keyboard KC 1000 SC
usb:v046Ap00AB*
ID_MODEL_FROM_DATABASE=MX 1.0 FL BL Keyboard
usb:v046Ap00AC*
ID_MODEL_FROM_DATABASE=MX BOARD 1.0 TKL RGB Keyboard
usb:v046Ap00B7*
ID_MODEL_FROM_DATABASE=MX BOARD 8.0 TKL RGB Keyboard
usb:v046Ap00BB*
ID_MODEL_FROM_DATABASE=MX BOARD 10.0 FL RGB Keyboard
usb:v046Ap00C3*
ID_MODEL_FROM_DATABASE=G80 3000 TKL NBL Keyboard
usb:v046Ap00C4*
ID_MODEL_FROM_DATABASE=MX BOARD 2.0S FL RGB Keyboard
usb:v046Ap00C5*
ID_MODEL_FROM_DATABASE=G80 3000 TKL RGB Keyboard
usb:v046Ap00C7*
ID_MODEL_FROM_DATABASE=MV BOARD 3.0 FL RGB
usb:v046Ap00C9*
ID_MODEL_FROM_DATABASE=CCF MX 8.0 TKL BL Keyboard
usb:v046Ap00CA*
ID_MODEL_FROM_DATABASE=CCF MX 1.0 TKL BL Keyboard
usb:v046Ap00CB*
ID_MODEL_FROM_DATABASE=CCF MX 1.0 TKL NBL Keyboard
usb:v046Ap00CD*
ID_MODEL_FROM_DATABASE=G80 3000 TKL NBL (KOREAN) Keyboard
usb:v046Ap00CE*
ID_MODEL_FROM_DATABASE=MX BOARD 2.0S FL NBL Keyboard
usb:v046Ap00D2*
ID_MODEL_FROM_DATABASE=MX 1.0 FL NBL Keyboard
usb:v046Ap00D3*
ID_MODEL_FROM_DATABASE=MX 1.0 FL RGB Keyboard
usb:v046Ap00DD*
ID_MODEL_FROM_DATABASE=G80-3000N RGB TKL Keyboard
usb:v046Ap00DE*
ID_MODEL_FROM_DATABASE=G80-3000N FL RGB Keyboard
usb:v046Ap00DF*
ID_MODEL_FROM_DATABASE=MX BOARD 10.0N FL RGB Keyboard
usb:v046Ap0106* usb:v046Ap0106*
ID_MODEL_FROM_DATABASE=R-300 Wireless Mouse Receiver ID_MODEL_FROM_DATABASE=R-300 Wireless Mouse Receiver
@ -7928,12 +8105,24 @@ usb:v046Ap010D*
usb:v046Ap0180* usb:v046Ap0180*
ID_MODEL_FROM_DATABASE=Strait 3.0 ID_MODEL_FROM_DATABASE=Strait 3.0
usb:v046Ap01A4*
ID_MODEL_FROM_DATABASE=MC 2.1 Mouse
usb:v046Ap01A6*
ID_MODEL_FROM_DATABASE=MX BOARD 2.0S FL RGB DE Keyboard
usb:v046ApB090* usb:v046ApB090*
ID_MODEL_FROM_DATABASE=Keyboard ID_MODEL_FROM_DATABASE=Keyboard
usb:v046ApB091* usb:v046ApB091*
ID_MODEL_FROM_DATABASE=Mouse ID_MODEL_FROM_DATABASE=Mouse
usb:v046ApC099*
ID_MODEL_FROM_DATABASE=Stream Keyboard TKL
usb:v046ApC110*
ID_MODEL_FROM_DATABASE=KC 4500 Ergo Keyboard
usb:v046B* usb:v046B*
ID_VENDOR_FROM_DATABASE=American Megatrends, Inc. ID_VENDOR_FROM_DATABASE=American Megatrends, Inc.
@ -8063,6 +8252,12 @@ usb:v046Dp0836*
usb:v046Dp0837* usb:v046Dp0837*
ID_MODEL_FROM_DATABASE=BCC950 ConferenceCam ID_MODEL_FROM_DATABASE=BCC950 ConferenceCam
usb:v046Dp0838*
ID_MODEL_FROM_DATABASE=BCC950 ConferenceCam audio
usb:v046Dp0839*
ID_MODEL_FROM_DATABASE=BCC950 ConferenceCam integated hub
usb:v046Dp0840* usb:v046Dp0840*
ID_MODEL_FROM_DATABASE=QuickCam Express ID_MODEL_FROM_DATABASE=QuickCam Express
@ -8096,6 +8291,9 @@ usb:v046Dp085C*
usb:v046Dp085E* usb:v046Dp085E*
ID_MODEL_FROM_DATABASE=BRIO Ultra HD Webcam ID_MODEL_FROM_DATABASE=BRIO Ultra HD Webcam
usb:v046Dp086B*
ID_MODEL_FROM_DATABASE=BRIO 4K Stream Edition
usb:v046Dp0870* usb:v046Dp0870*
ID_MODEL_FROM_DATABASE=QuickCam Express ID_MODEL_FROM_DATABASE=QuickCam Express
@ -8429,6 +8627,9 @@ usb:v046Dp0A45*
usb:v046Dp0A4D* usb:v046Dp0A4D*
ID_MODEL_FROM_DATABASE=G430 Surround Sound Gaming Headset ID_MODEL_FROM_DATABASE=G430 Surround Sound Gaming Headset
usb:v046Dp0A4F*
ID_MODEL_FROM_DATABASE=MINI BOOM
usb:v046Dp0A5B* usb:v046Dp0A5B*
ID_MODEL_FROM_DATABASE=G933 Wireless Headset Dongle ID_MODEL_FROM_DATABASE=G933 Wireless Headset Dongle
@ -8441,6 +8642,9 @@ usb:v046Dp0A66*
usb:v046Dp0A8F* usb:v046Dp0A8F*
ID_MODEL_FROM_DATABASE=H390 headset with microphone ID_MODEL_FROM_DATABASE=H390 headset with microphone
usb:v046Dp0A90*
ID_MODEL_FROM_DATABASE=Zone Receiver
usb:v046Dp0AAA* usb:v046Dp0AAA*
ID_MODEL_FROM_DATABASE=Logitech G PRO X Gaming Headset ID_MODEL_FROM_DATABASE=Logitech G PRO X Gaming Headset
@ -8678,6 +8882,9 @@ usb:v046DpC083*
usb:v046DpC084* usb:v046DpC084*
ID_MODEL_FROM_DATABASE=G203 Gaming Mouse ID_MODEL_FROM_DATABASE=G203 Gaming Mouse
usb:v046DpC088*
ID_MODEL_FROM_DATABASE=G Pro Wireless gaming mouse (wired mode)
usb:v046DpC08B* usb:v046DpC08B*
ID_MODEL_FROM_DATABASE=G502 SE HERO Gaming Mouse ID_MODEL_FROM_DATABASE=G502 SE HERO Gaming Mouse
@ -9129,7 +9336,7 @@ usb:v046DpC537*
ID_MODEL_FROM_DATABASE=Cordless Mouse Receiver ID_MODEL_FROM_DATABASE=Cordless Mouse Receiver
usb:v046DpC539* usb:v046DpC539*
ID_MODEL_FROM_DATABASE=Cordless Mouse Receiver ID_MODEL_FROM_DATABASE=Lightspeed Receiver
usb:v046DpC53A* usb:v046DpC53A*
ID_MODEL_FROM_DATABASE=PowerPlay Wireless Charging System ID_MODEL_FROM_DATABASE=PowerPlay Wireless Charging System
@ -9137,6 +9344,12 @@ usb:v046DpC53A*
usb:v046DpC53D* usb:v046DpC53D*
ID_MODEL_FROM_DATABASE=G631 Keyboard ID_MODEL_FROM_DATABASE=G631 Keyboard
usb:v046DpC542*
ID_MODEL_FROM_DATABASE=M185 compact wireless mouse
usb:v046DpC548*
ID_MODEL_FROM_DATABASE=Logi Bolt Receiver
usb:v046DpC603* usb:v046DpC603*
ID_MODEL_FROM_DATABASE=3Dconnexion Spacemouse Plus XT ID_MODEL_FROM_DATABASE=3Dconnexion Spacemouse Plus XT
@ -10031,6 +10244,9 @@ usb:v047FpAC01*
usb:v047FpAD01* usb:v047FpAD01*
ID_MODEL_FROM_DATABASE=GameCom 777 5.1 Headset ID_MODEL_FROM_DATABASE=GameCom 777 5.1 Headset
usb:v047FpAF00*
ID_MODEL_FROM_DATABASE=DA70
usb:v047FpAF01* usb:v047FpAF01*
ID_MODEL_FROM_DATABASE=DA80 ID_MODEL_FROM_DATABASE=DA80
@ -10043,6 +10259,9 @@ usb:v047FpC00E*
usb:v047FpC03B* usb:v047FpC03B*
ID_MODEL_FROM_DATABASE=HD1 ID_MODEL_FROM_DATABASE=HD1
usb:v047FpC053*
ID_MODEL_FROM_DATABASE=Blackwire C5220 headset (remote control and 3.5mm audio adapter)
usb:v047FpCA01* usb:v047FpCA01*
ID_MODEL_FROM_DATABASE=Calisto 800 Series ID_MODEL_FROM_DATABASE=Calisto 800 Series
@ -10313,6 +10532,9 @@ usb:v0483pA171*
usb:v0483pA2E0* usb:v0483pA2E0*
ID_MODEL_FROM_DATABASE=BMeasure instrument ID_MODEL_FROM_DATABASE=BMeasure instrument
usb:v0483pA43F*
ID_MODEL_FROM_DATABASE=inbed.io - Unified Controller (Gen 2)
usb:v0483pDF11* usb:v0483pDF11*
ID_MODEL_FROM_DATABASE=STM Device in DFU Mode ID_MODEL_FROM_DATABASE=STM Device in DFU Mode
@ -10385,6 +10607,15 @@ usb:v0489pE04D*
usb:v0489pE055* usb:v0489pE055*
ID_MODEL_FROM_DATABASE=BCM43142A0 broadcom bluetooth ID_MODEL_FROM_DATABASE=BCM43142A0 broadcom bluetooth
usb:v0489pE07A*
ID_MODEL_FROM_DATABASE=Broadcom BCM20702A1 Bluetooth
usb:v0489pE0C8*
ID_MODEL_FROM_DATABASE=MediaTek MT7921 Bluetooth
usb:v0489pE0CD*
ID_MODEL_FROM_DATABASE=MediaTek Bluetooth Adapter
usb:v048A* usb:v048A*
ID_VENDOR_FROM_DATABASE=S-MOS Systems, Inc. ID_VENDOR_FROM_DATABASE=S-MOS Systems, Inc.
@ -10409,6 +10640,12 @@ usb:v048Dp1336*
usb:v048Dp1345* usb:v048Dp1345*
ID_MODEL_FROM_DATABASE=Multi Cardreader ID_MODEL_FROM_DATABASE=Multi Cardreader
usb:v048Dp5702*
ID_MODEL_FROM_DATABASE=RGB LED Controller
usb:v048Dp6008*
ID_MODEL_FROM_DATABASE=8291 RGB keyboard backlight controller
usb:v048Dp8297* usb:v048Dp8297*
ID_MODEL_FROM_DATABASE=IT8297 RGB LED Controller ID_MODEL_FROM_DATABASE=IT8297 RGB LED Controller
@ -11033,6 +11270,9 @@ usb:v04A6p0181*
usb:v04A7* usb:v04A7*
ID_VENDOR_FROM_DATABASE=Visioneer ID_VENDOR_FROM_DATABASE=Visioneer
usb:v04A7p0063*
ID_MODEL_FROM_DATABASE=Visioneer DocuMate 152i
usb:v04A7p0100* usb:v04A7p0100*
ID_MODEL_FROM_DATABASE=StrobePro ID_MODEL_FROM_DATABASE=StrobePro
@ -13247,6 +13487,9 @@ usb:v04A9p32D5*
usb:v04A9p32DB* usb:v04A9p32DB*
ID_MODEL_FROM_DATABASE=SELPHY CP1300 ID_MODEL_FROM_DATABASE=SELPHY CP1300
usb:v04A9p3302*
ID_MODEL_FROM_DATABASE=SELPHY CP1500
usb:v04AA* usb:v04AA*
ID_VENDOR_FROM_DATABASE=DaeWoo Telecom, Ltd ID_VENDOR_FROM_DATABASE=DaeWoo Telecom, Ltd
@ -13484,6 +13727,9 @@ usb:v04B0p042A*
usb:v04B0p0430* usb:v04B0p0430*
ID_MODEL_FROM_DATABASE=D7100 ID_MODEL_FROM_DATABASE=D7100
usb:v04B0p0434*
ID_MODEL_FROM_DATABASE=D610
usb:v04B0p0436* usb:v04B0p0436*
ID_MODEL_FROM_DATABASE=D810 ID_MODEL_FROM_DATABASE=D810
@ -13532,6 +13778,9 @@ usb:v04B3p301B*
usb:v04B3p301C* usb:v04B3p301C*
ID_MODEL_FROM_DATABASE=Enhanced Performance Keyboard ID_MODEL_FROM_DATABASE=Enhanced Performance Keyboard
usb:v04B3p301E*
ID_MODEL_FROM_DATABASE=Keyboard with UltraNav (SK-8845RC)
usb:v04B3p3020* usb:v04B3p3020*
ID_MODEL_FROM_DATABASE=Enhanced Performance Keyboard ID_MODEL_FROM_DATABASE=Enhanced Performance Keyboard
@ -14351,6 +14600,9 @@ usb:v04B8p0E03*
usb:v04B8p1114* usb:v04B8p1114*
ID_MODEL_FROM_DATABASE=XP-440 [Expression Home Small-in-One Printer] ID_MODEL_FROM_DATABASE=XP-440 [Expression Home Small-in-One Printer]
usb:v04B8p1115*
ID_MODEL_FROM_DATABASE=ES-0133 [Expression Home XP-342]
usb:v04B8p1129* usb:v04B8p1129*
ID_MODEL_FROM_DATABASE=ET-4750 [WorkForce ET-4750 EcoTank All-in-One] ID_MODEL_FROM_DATABASE=ET-4750 [WorkForce ET-4750 EcoTank All-in-One]
@ -14771,6 +15023,9 @@ usb:v04CAp004F*
usb:v04CAp008A* usb:v04CAp008A*
ID_MODEL_FROM_DATABASE=Acer Wired Mouse Model SM-9023 ID_MODEL_FROM_DATABASE=Acer Wired Mouse Model SM-9023
usb:v04CAp00F9*
ID_MODEL_FROM_DATABASE=Multimedia Keyboard
usb:v04CAp1766* usb:v04CAp1766*
ID_MODEL_FROM_DATABASE=HID Monitor Controls ID_MODEL_FROM_DATABASE=HID Monitor Controls
@ -14813,6 +15068,9 @@ usb:v04CAp7046*
usb:v04CAp7054* usb:v04CAp7054*
ID_MODEL_FROM_DATABASE=HP HD Webcam ID_MODEL_FROM_DATABASE=HP HD Webcam
usb:v04CAp705A*
ID_MODEL_FROM_DATABASE=HD Webcam (960×540)
usb:v04CAp9304* usb:v04CAp9304*
ID_MODEL_FROM_DATABASE=Hub ID_MODEL_FROM_DATABASE=Hub
@ -15218,6 +15476,12 @@ usb:v04D5*
usb:v04D6* usb:v04D6*
ID_VENDOR_FROM_DATABASE=Mentor Graphics ID_VENDOR_FROM_DATABASE=Mentor Graphics
usb:v04D6pE301*
ID_MODEL_FROM_DATABASE=Bio-Key TouchLock XL All Weather Keyless Bio-Lock with Fingerprint Recognition
usb:v04D6pE302*
ID_MODEL_FROM_DATABASE=ZC3202 [4GB Green Book Digital Quran Reading Pen For Home Teaching Quran]
usb:v04D7* usb:v04D7*
ID_VENDOR_FROM_DATABASE=Oki Semiconductor ID_VENDOR_FROM_DATABASE=Oki Semiconductor
@ -15248,6 +15512,9 @@ usb:v04D8p0033*
usb:v04D8p0036* usb:v04D8p0036*
ID_MODEL_FROM_DATABASE=PICkit Serial Analyzer ID_MODEL_FROM_DATABASE=PICkit Serial Analyzer
usb:v04D8p00DD*
ID_MODEL_FROM_DATABASE=MCP2221(a) UART/I2C Bridge
usb:v04D8p00E0* usb:v04D8p00E0*
ID_MODEL_FROM_DATABASE=PIC32 Starter Board ID_MODEL_FROM_DATABASE=PIC32 Starter Board
@ -15293,6 +15560,15 @@ usb:v04D8pC001*
usb:v04D8pE11C* usb:v04D8pE11C*
ID_MODEL_FROM_DATABASE=TL866CS EEPROM Programmer [MiniPRO] ID_MODEL_FROM_DATABASE=TL866CS EEPROM Programmer [MiniPRO]
usb:v04D8pE72E*
ID_MODEL_FROM_DATABASE=YuanCon
usb:v04D8pE7EE*
ID_MODEL_FROM_DATABASE=travisgeis.com Bike Light
usb:v04D8pEC72*
ID_MODEL_FROM_DATABASE=Joystick with Rotary Switch Creative Electronics Ltd
usb:v04D8pED16* usb:v04D8pED16*
ID_MODEL_FROM_DATABASE=BeamiRC 2.0 CNC remote controller analoge ID_MODEL_FROM_DATABASE=BeamiRC 2.0 CNC remote controller analoge
@ -15368,6 +15644,12 @@ usb:v04D9p0022*
usb:v04D9p0129* usb:v04D9p0129*
ID_MODEL_FROM_DATABASE=Keyboard [KBPV8000] ID_MODEL_FROM_DATABASE=Keyboard [KBPV8000]
usb:v04D9p0169*
ID_MODEL_FROM_DATABASE=Keyboard
usb:v04D9p0198*
ID_MODEL_FROM_DATABASE=Keyboard
usb:v04D9p0348* usb:v04D9p0348*
ID_MODEL_FROM_DATABASE=Keyboard ID_MODEL_FROM_DATABASE=Keyboard
@ -16638,7 +16920,7 @@ usb:v04E8p685E*
ID_MODEL_FROM_DATABASE=GT-I9100 / GT-C3350 Phones (USB Debugging mode) ID_MODEL_FROM_DATABASE=GT-I9100 / GT-C3350 Phones (USB Debugging mode)
usb:v04E8p6860* usb:v04E8p6860*
ID_MODEL_FROM_DATABASE=Galaxy A5 (MTP) ID_MODEL_FROM_DATABASE=Galaxy series, misc. (MTP mode)
usb:v04E8p6863* usb:v04E8p6863*
ID_MODEL_FROM_DATABASE=Galaxy series, misc. (tethering mode) ID_MODEL_FROM_DATABASE=Galaxy series, misc. (tethering mode)
@ -17111,6 +17393,12 @@ usb:v04F2pB604*
usb:v04F2pB681* usb:v04F2pB681*
ID_MODEL_FROM_DATABASE=ThinkPad T490 Webcam ID_MODEL_FROM_DATABASE=ThinkPad T490 Webcam
usb:v04F2pB71A*
ID_MODEL_FROM_DATABASE=Integrated IR Camera
usb:v04F2pB76B*
ID_MODEL_FROM_DATABASE=SunplusIT Inc [HP HD Camera]
usb:v04F3* usb:v04F3*
ID_VENDOR_FROM_DATABASE=Elan Microelectronics Corp. ID_VENDOR_FROM_DATABASE=Elan Microelectronics Corp.
@ -17162,6 +17450,9 @@ usb:v04F3p04A0*
usb:v04F3p0C28* usb:v04F3p0C28*
ID_MODEL_FROM_DATABASE=fingerprint sensor [FeinTech FPS00200] ID_MODEL_FROM_DATABASE=fingerprint sensor [FeinTech FPS00200]
usb:v04F3p0C3D*
ID_MODEL_FROM_DATABASE=Elan:Fingerprint
usb:v04F3p2234* usb:v04F3p2234*
ID_MODEL_FROM_DATABASE=Touchscreen ID_MODEL_FROM_DATABASE=Touchscreen
@ -17954,6 +18245,9 @@ usb:v04F9p0245*
usb:v04F9p0248* usb:v04F9p0248*
ID_MODEL_FROM_DATABASE=DCP-7055 scanner/printer ID_MODEL_FROM_DATABASE=DCP-7055 scanner/printer
usb:v04F9p024A*
ID_MODEL_FROM_DATABASE=DCP-7065DN
usb:v04F9p024E* usb:v04F9p024E*
ID_MODEL_FROM_DATABASE=MFC-7460DN ID_MODEL_FROM_DATABASE=MFC-7460DN
@ -18782,6 +19076,9 @@ usb:v04F9p2044*
usb:v04F9p204D* usb:v04F9p204D*
ID_MODEL_FROM_DATABASE=QL-720NW Label Printer (mass storage mode) ID_MODEL_FROM_DATABASE=QL-720NW Label Printer (mass storage mode)
usb:v04F9p2060*
ID_MODEL_FROM_DATABASE=PT-E550W P-touch Label Printer
usb:v04F9p2061* usb:v04F9p2061*
ID_MODEL_FROM_DATABASE=PT-P700 P-touch Label Printer ID_MODEL_FROM_DATABASE=PT-P700 P-touch Label Printer
@ -19751,6 +20048,9 @@ usb:v0536*
usb:v0536p01A0* usb:v0536p01A0*
ID_MODEL_FROM_DATABASE=PDT ID_MODEL_FROM_DATABASE=PDT
usb:v0536p01CA*
ID_MODEL_FROM_DATABASE=IT4800 Area Imager
usb:v0537* usb:v0537*
ID_VENDOR_FROM_DATABASE=Inventec Corp. ID_VENDOR_FROM_DATABASE=Inventec Corp.
@ -20570,9 +20870,15 @@ usb:v054Cp04CB*
usb:v054Cp0541* usb:v054Cp0541*
ID_MODEL_FROM_DATABASE=DSC-HX100V [Cybershot Digital Still Camera] ID_MODEL_FROM_DATABASE=DSC-HX100V [Cybershot Digital Still Camera]
usb:v054Cp0568*
ID_MODEL_FROM_DATABASE=DSC-H100 in Mass Storage mode
usb:v054Cp05C4* usb:v054Cp05C4*
ID_MODEL_FROM_DATABASE=DualShock 4 [CUH-ZCT1x] ID_MODEL_FROM_DATABASE=DualShock 4 [CUH-ZCT1x]
usb:v054Cp0643*
ID_MODEL_FROM_DATABASE=DSC-H100 in PTP/MTP mode
usb:v054Cp0689* usb:v054Cp0689*
ID_MODEL_FROM_DATABASE=Walkman NWZ-B173F ID_MODEL_FROM_DATABASE=Walkman NWZ-B173F
@ -20612,9 +20918,15 @@ usb:v054Cp08B7*
usb:v054Cp094E* usb:v054Cp094E*
ID_MODEL_FROM_DATABASE=ILCE-6000 (aka Alpha-6000) in PC Remote mode ID_MODEL_FROM_DATABASE=ILCE-6000 (aka Alpha-6000) in PC Remote mode
usb:v054Cp098D*
ID_MODEL_FROM_DATABASE=Walkman NWZ-B183F
usb:v054Cp0994* usb:v054Cp0994*
ID_MODEL_FROM_DATABASE=ILCE-6000 (aka Alpha-6000) in charging mode ID_MODEL_FROM_DATABASE=ILCE-6000 (aka Alpha-6000) in charging mode
usb:v054Cp09C2*
ID_MODEL_FROM_DATABASE=D33021 Storage
usb:v054Cp09CC* usb:v054Cp09CC*
ID_MODEL_FROM_DATABASE=DualShock 4 [CUH-ZCT2x] ID_MODEL_FROM_DATABASE=DualShock 4 [CUH-ZCT2x]
@ -21725,12 +22037,24 @@ usb:v056Ap03AA*
usb:v056Ap03AC* usb:v056Ap03AC*
ID_MODEL_FROM_DATABASE=DTH-W1620 [MobileStudio Pro 16] touchscreen ID_MODEL_FROM_DATABASE=DTH-W1620 [MobileStudio Pro 16] touchscreen
usb:v056Ap03B2*
ID_MODEL_FROM_DATABASE=DTH167 [Cintiq Pro 16] tablet
usb:v056Ap03B3*
ID_MODEL_FROM_DATABASE=DTH167 [Cintiq Pro 16] touchscreen
usb:v056Ap03C5* usb:v056Ap03C5*
ID_MODEL_FROM_DATABASE=CTL-4100WL [Intuos BT (S)] ID_MODEL_FROM_DATABASE=CTL-4100WL [Intuos BT (S)]
usb:v056Ap03C7* usb:v056Ap03C7*
ID_MODEL_FROM_DATABASE=CTL-6100WL [Intuos BT (M)] ID_MODEL_FROM_DATABASE=CTL-6100WL [Intuos BT (M)]
usb:v056Ap03DC*
ID_MODEL_FROM_DATABASE=PTH-460 [Intuos Pro (S)] tablet
usb:v056Ap03DD*
ID_MODEL_FROM_DATABASE=PTH-460 [Intuos Pro BT (S)] tablet
usb:v056Ap0400* usb:v056Ap0400*
ID_MODEL_FROM_DATABASE=PenPartner 4x5 ID_MODEL_FROM_DATABASE=PenPartner 4x5
@ -22250,6 +22574,9 @@ usb:v0572p1301*
usb:v0572p1328* usb:v0572p1328*
ID_MODEL_FROM_DATABASE=TrendNet TFM-561 modem ID_MODEL_FROM_DATABASE=TrendNet TFM-561 modem
usb:v0572p1340*
ID_MODEL_FROM_DATABASE=CX93010 ACF Modem
usb:v0572p1804* usb:v0572p1804*
ID_MODEL_FROM_DATABASE=HP Dock Audio ID_MODEL_FROM_DATABASE=HP Dock Audio
@ -22635,7 +22962,7 @@ usb:v057Ep0304*
ID_MODEL_FROM_DATABASE=RVT-H Reader ID_MODEL_FROM_DATABASE=RVT-H Reader
usb:v057Ep0305* usb:v057Ep0305*
ID_MODEL_FROM_DATABASE=Broadcom BCM2045A Bluetooth Radio [Nintendo Wii] ID_MODEL_FROM_DATABASE=Broadcom BCM2045A Bluetooth Radio [Nintendo Wii/Wii U]
usb:v057Ep0306* usb:v057Ep0306*
ID_MODEL_FROM_DATABASE=Wii Remote Controller RVL-003 ID_MODEL_FROM_DATABASE=Wii Remote Controller RVL-003
@ -22643,6 +22970,9 @@ usb:v057Ep0306*
usb:v057Ep0337* usb:v057Ep0337*
ID_MODEL_FROM_DATABASE=Wii U GameCube Controller Adapter ID_MODEL_FROM_DATABASE=Wii U GameCube Controller Adapter
usb:v057Ep0341*
ID_MODEL_FROM_DATABASE=DRH GamePad Host [Nintendo Wii U]
usb:v057Ep2000* usb:v057Ep2000*
ID_MODEL_FROM_DATABASE=Switch ID_MODEL_FROM_DATABASE=Switch
@ -23390,6 +23720,9 @@ usb:v0584pB000*
usb:v0584pB020* usb:v0584pB020*
ID_MODEL_FROM_DATABASE=REX-USB60F ID_MODEL_FROM_DATABASE=REX-USB60F
usb:v0584pB022*
ID_MODEL_FROM_DATABASE=RTX-USB60F
usb:v0585* usb:v0585*
ID_VENDOR_FROM_DATABASE=FlashPoint Technology, Inc. ID_VENDOR_FROM_DATABASE=FlashPoint Technology, Inc.
@ -24089,6 +24422,9 @@ usb:v059Fp106D*
usb:v059Fp106E* usb:v059Fp106E*
ID_MODEL_FROM_DATABASE=Porsche Design Desktop Drive ID_MODEL_FROM_DATABASE=Porsche Design Desktop Drive
usb:v059Fp1093*
ID_MODEL_FROM_DATABASE=Rugged
usb:v059Fp1094* usb:v059Fp1094*
ID_MODEL_FROM_DATABASE=Rugged THB ID_MODEL_FROM_DATABASE=Rugged THB
@ -24185,6 +24521,9 @@ usb:v05A6p0004*
usb:v05A6p0008* usb:v05A6p0008*
ID_MODEL_FROM_DATABASE=STA1520 Tuning Adapter ID_MODEL_FROM_DATABASE=STA1520 Tuning Adapter
usb:v05A6p0009*
ID_MODEL_FROM_DATABASE=Console
usb:v05A6p0A00* usb:v05A6p0A00*
ID_MODEL_FROM_DATABASE=Integrated Management Controller Hub ID_MODEL_FROM_DATABASE=Integrated Management Controller Hub
@ -24216,7 +24555,7 @@ usb:v05A7p400D*
ID_MODEL_FROM_DATABASE=SoundLink Color II speaker in DFU mode ID_MODEL_FROM_DATABASE=SoundLink Color II speaker in DFU mode
usb:v05A7p40FE* usb:v05A7p40FE*
ID_MODEL_FROM_DATABASE=SoundLink Color II speaker ID_MODEL_FROM_DATABASE=SoundLink Color II / Flex
usb:v05A7pBC50* usb:v05A7pBC50*
ID_MODEL_FROM_DATABASE=SoundLink Wireless Mobile speaker ID_MODEL_FROM_DATABASE=SoundLink Wireless Mobile speaker
@ -24566,6 +24905,12 @@ usb:v05ACp1006*
usb:v05ACp1008* usb:v05ACp1008*
ID_MODEL_FROM_DATABASE=Mini DisplayPort to Dual-Link DVI Adapter ID_MODEL_FROM_DATABASE=Mini DisplayPort to Dual-Link DVI Adapter
usb:v05ACp1009*
ID_MODEL_FROM_DATABASE=iBus Hub
usb:v05ACp100C*
ID_MODEL_FROM_DATABASE=Nova Hub
usb:v05ACp1101* usb:v05ACp1101*
ID_MODEL_FROM_DATABASE=Speakers ID_MODEL_FROM_DATABASE=Speakers
@ -24695,6 +25040,9 @@ usb:v05ACp129A*
usb:v05ACp129C* usb:v05ACp129C*
ID_MODEL_FROM_DATABASE=iPhone 4(CDMA) ID_MODEL_FROM_DATABASE=iPhone 4(CDMA)
usb:v05ACp129D*
ID_MODEL_FROM_DATABASE=iPhone
usb:v05ACp129E* usb:v05ACp129E*
ID_MODEL_FROM_DATABASE=iPod Touch 4.Gen ID_MODEL_FROM_DATABASE=iPod Touch 4.Gen
@ -24704,6 +25052,9 @@ usb:v05ACp129F*
usb:v05ACp12A0* usb:v05ACp12A0*
ID_MODEL_FROM_DATABASE=iPhone 4S ID_MODEL_FROM_DATABASE=iPhone 4S
usb:v05ACp12A1*
ID_MODEL_FROM_DATABASE=iPhone
usb:v05ACp12A2* usb:v05ACp12A2*
ID_MODEL_FROM_DATABASE=iPad 2 (3G; 64GB) ID_MODEL_FROM_DATABASE=iPad 2 (3G; 64GB)
@ -24719,8 +25070,11 @@ usb:v05ACp12A5*
usb:v05ACp12A6* usb:v05ACp12A6*
ID_MODEL_FROM_DATABASE=iPad 3 (3G, 16 GB) ID_MODEL_FROM_DATABASE=iPad 3 (3G, 16 GB)
usb:v05ACp12A7*
ID_MODEL_FROM_DATABASE=TV Device
usb:v05ACp12A8* usb:v05ACp12A8*
ID_MODEL_FROM_DATABASE=iPhone 5/5C/5S/6/SE ID_MODEL_FROM_DATABASE=iPhone 5/5C/5S/6/SE/7/8/X
usb:v05ACp12A9* usb:v05ACp12A9*
ID_MODEL_FROM_DATABASE=iPad 2 ID_MODEL_FROM_DATABASE=iPad 2
@ -24731,6 +25085,15 @@ usb:v05ACp12AA*
usb:v05ACp12AB* usb:v05ACp12AB*
ID_MODEL_FROM_DATABASE=iPad 4/Mini1 ID_MODEL_FROM_DATABASE=iPad 4/Mini1
usb:v05ACp12AC*
ID_MODEL_FROM_DATABASE=iPhone
usb:v05ACp12AF*
ID_MODEL_FROM_DATABASE=Watch
usb:v05ACp12B0*
ID_MODEL_FROM_DATABASE=HomePod
usb:v05ACp1300* usb:v05ACp1300*
ID_MODEL_FROM_DATABASE=iPod Shuffle ID_MODEL_FROM_DATABASE=iPod Shuffle
@ -24761,9 +25124,24 @@ usb:v05ACp1401*
usb:v05ACp1402* usb:v05ACp1402*
ID_MODEL_FROM_DATABASE=Ethernet Adapter [A1277] ID_MODEL_FROM_DATABASE=Ethernet Adapter [A1277]
usb:v05ACp1460*
ID_MODEL_FROM_DATABASE=Digital AV Multiport Adapter
usb:v05ACp1461*
ID_MODEL_FROM_DATABASE=VGA Multiport Adapter
usb:v05ACp1463*
ID_MODEL_FROM_DATABASE=HDMI Adapter
usb:v05ACp1500* usb:v05ACp1500*
ID_MODEL_FROM_DATABASE=SuperDrive [A1379] ID_MODEL_FROM_DATABASE=SuperDrive [A1379]
usb:v05ACp1624*
ID_MODEL_FROM_DATABASE=Nova
usb:v05ACp1625*
ID_MODEL_FROM_DATABASE=iBus
usb:v05ACp8005* usb:v05ACp8005*
ID_MODEL_FROM_DATABASE=OHCI Root Hub Simulation ID_MODEL_FROM_DATABASE=OHCI Root Hub Simulation
@ -24845,6 +25223,9 @@ usb:v05ACp8289*
usb:v05ACp828C* usb:v05ACp828C*
ID_MODEL_FROM_DATABASE=Bluetooth Host Controller ID_MODEL_FROM_DATABASE=Bluetooth Host Controller
usb:v05ACp828D*
ID_MODEL_FROM_DATABASE=Bluetooth Host Controller
usb:v05ACp8290* usb:v05ACp8290*
ID_MODEL_FROM_DATABASE=Bluetooth Host Controller ID_MODEL_FROM_DATABASE=Bluetooth Host Controller
@ -25262,6 +25643,9 @@ usb:v05C8p03BC*
usb:v05C8p03CB* usb:v05C8p03CB*
ID_MODEL_FROM_DATABASE=HP Wide Vision HD Integrated Webcam ID_MODEL_FROM_DATABASE=HP Wide Vision HD Integrated Webcam
usb:v05C8p03D2*
ID_MODEL_FROM_DATABASE=HP TrueVision HD Camera
usb:v05C8p0403* usb:v05C8p0403*
ID_MODEL_FROM_DATABASE=Webcam ID_MODEL_FROM_DATABASE=Webcam
@ -26132,6 +26516,9 @@ usb:v05DCpB047*
usb:v05DCpB051* usb:v05DCpB051*
ID_MODEL_FROM_DATABASE=microSD RDR UHS-I Card Reader [LRWM03U-7000] ID_MODEL_FROM_DATABASE=microSD RDR UHS-I Card Reader [LRWM03U-7000]
usb:v05DCpB054*
ID_MODEL_FROM_DATABASE=Dual-Slot Reader [LRW400U]
usb:v05DCpBA02* usb:v05DCpBA02*
ID_MODEL_FROM_DATABASE=Workflow CFR1 ID_MODEL_FROM_DATABASE=Workflow CFR1
@ -26751,7 +27138,7 @@ usb:v0603p6871*
ID_MODEL_FROM_DATABASE=Mouse ID_MODEL_FROM_DATABASE=Mouse
usb:v0603p8611* usb:v0603p8611*
ID_MODEL_FROM_DATABASE=NTK96550 based camera ID_MODEL_FROM_DATABASE=NTK96550-based camera (mass storage mode)
usb:v0604* usb:v0604*
ID_VENDOR_FROM_DATABASE=Jean Co., Ltd ID_VENDOR_FROM_DATABASE=Jean Co., Ltd
@ -52446,7 +52833,7 @@ usb:v13FDp3E40*
ID_MODEL_FROM_DATABASE=ZALMAN ZM-VE350 ID_MODEL_FROM_DATABASE=ZALMAN ZM-VE350
usb:v13FE* usb:v13FE*
ID_VENDOR_FROM_DATABASE=Kingston Technology Company Inc. ID_VENDOR_FROM_DATABASE=Phison Electronics Corp.
usb:v13FEp1A00* usb:v13FEp1A00*
ID_MODEL_FROM_DATABASE=512MB/1GB Flash Drive ID_MODEL_FROM_DATABASE=512MB/1GB Flash Drive
@ -69156,16 +69543,19 @@ usb:v595Ap0001*
ID_MODEL_FROM_DATABASE=Touchscreen ID_MODEL_FROM_DATABASE=Touchscreen
usb:v5986* usb:v5986*
ID_VENDOR_FROM_DATABASE=Acer, Inc ID_VENDOR_FROM_DATABASE=Bison Electronics Inc.
usb:v5986p0100* usb:v5986p0100*
ID_MODEL_FROM_DATABASE=Orbicam ID_MODEL_FROM_DATABASE=Acer Orbicam
usb:v5986p0101* usb:v5986p0101*
ID_MODEL_FROM_DATABASE=USB2.0 Camera ID_MODEL_FROM_DATABASE=USB2.0 Camera
usb:v5986p0102* usb:v5986p0102*
ID_MODEL_FROM_DATABASE=Crystal Eye Webcam ID_MODEL_FROM_DATABASE=Acer Crystal Eye Webcam
usb:v5986p0105*
ID_MODEL_FROM_DATABASE=Acer Crystal Eye Webcam
usb:v5986p0137* usb:v5986p0137*
ID_MODEL_FROM_DATABASE=HP Webcam ID_MODEL_FROM_DATABASE=HP Webcam
@ -69189,7 +69579,7 @@ usb:v5986p01A9*
ID_MODEL_FROM_DATABASE=Lenovo Integrated Webcam ID_MODEL_FROM_DATABASE=Lenovo Integrated Webcam
usb:v5986p0200* usb:v5986p0200*
ID_MODEL_FROM_DATABASE=OrbiCam ID_MODEL_FROM_DATABASE=Acer OrbiCam
usb:v5986p0202* usb:v5986p0202*
ID_MODEL_FROM_DATABASE=Fujitsu Webcam ID_MODEL_FROM_DATABASE=Fujitsu Webcam

View File

@ -71,7 +71,7 @@ usb:v08FFp5731*
ID_PERSIST=0 ID_PERSIST=0
# Supported by libfprint driver aes4000 # Supported by libfprint driver aes4000
usb:v5501p08FF* usb:v08FFp5501*
ID_AUTOSUSPEND=1 ID_AUTOSUSPEND=1
ID_PERSIST=0 ID_PERSIST=0

View File

@ -1,11 +1,34 @@
# This file is part of systemd. # This file is part of systemd.
# #
# ########################### MATCHING #######################################
#
# The lookup keys are composed in: # The lookup keys are composed in:
# 60-evdev.rules # 60-evdev.rules
# #
# Match string formats: # Supported hardware matches are:
# evdev:<modalias> # - Generic input devices match:
# evdev:name:<device name>:dmi:<dmi string> # evdev:input:bZZZZvYYYYpXXXXeWWWW-VVVV
# This matches on the kernel modalias of the input-device, mainly:
# ZZZZ is the bus-id (see /usr/include/linux/input.h BUS_*), YYYY, XXXX and
# WWWW are the 4-digit hex uppercase vendor, product and version ID and VVVV
# is a variable-length input-modalias describing the device capabilities.
# The vendor, product and version ID for a device node "eventX" is listed
# in /sys/class/input/eventX/device/id.
#
# - Input driver device name and DMI data match:
# evdev:name:<input device name>:dmi:bvn*:bvr*:bd*:svn<vendor>:pn*
# <input device name> is the name device specified by the
# driver, <vendor> is the firmware-provided string exported
# by the kernel DMI modalias, see /sys/class/dmi/id/modalias.
#
# - Extended input driver device name, properties and DMI data match:
# evdev:name:<input device name>:phys:<phys>:ev:<ev>:dmi:bvn*:bvr*:bd*:svn<vendor>:pn*
# <input device name> is the name device specified by the
# driver, <phys> is the physical-device-path, "cat
# /sys/class/input/input?/phys", <ev> is the event bitmask, "cat
# /sys/class/input/input?/capabilities/ev" and <vendor> is the
# firmware-provided string exported by the kernel DMI modalias,
# see /sys/class/dmi/id/modalias.
# #
# To add local entries, create a new file # To add local entries, create a new file
# /etc/udev/hwdb.d/61-evdev-local.hwdb # /etc/udev/hwdb.d/61-evdev-local.hwdb
@ -237,6 +260,13 @@ evdev:name:Synaptics TM2382-001:dmi:*svnDellInc.:pnInspiron3537:*
EVDEV_ABS_35=::24 EVDEV_ABS_35=::24
EVDEV_ABS_36=::34 EVDEV_ABS_36=::34
# Dell Inspiron N4010
evdev:name:SynPS/2 Synaptics TouchPad:dmi:bvn*:bvr*:bd*:svnDellInc.:pnInspironN4010:*
EVDEV_ABS_00=1188:5797:49
EVDEV_ABS_01=893:4894:80
EVDEV_ABS_35=1188:5797:49
EVDEV_ABS_36=893:4894:80
# Dell Inspiron N5040 # Dell Inspiron N5040
evdev:name:AlpsPS/2 ALPS DualPoint TouchPad:dmi:bvn*:bvr*:bd*:svnDellInc.:pnInspironN5040:* evdev:name:AlpsPS/2 ALPS DualPoint TouchPad:dmi:bvn*:bvr*:bd*:svnDellInc.:pnInspironN5040:*
EVDEV_ABS_00=25:2000:22 EVDEV_ABS_00=25:2000:22
@ -337,6 +367,54 @@ evdev:name:Atmel maXTouch Touch*:dmi:bvn*:bvr*:bd*:svnGOOGLE:pnSamus:*
EVDEV_ABS_35=::10 EVDEV_ABS_35=::10
EVDEV_ABS_36=::10 EVDEV_ABS_36=::10
#########################################
# Granite Devices Simucube wheel bases
#########################################
# Granite Devices Simucube 1
evdev:input:b0003v16D0p0D5A*
EVDEV_ABS_00=:::0:0
EVDEV_ABS_01=:::0:0
EVDEV_ABS_02=:::0:0
EVDEV_ABS_03=:::0:0
EVDEV_ABS_04=:::0:0
EVDEV_ABS_05=:::0:0
EVDEV_ABS_06=:::0:0
EVDEV_ABS_07=:::0:0
# Granite Devices Simucube 2 Sport
evdev:input:b0003v16D0p0D61*
EVDEV_ABS_00=:::0:0
EVDEV_ABS_01=:::0:0
EVDEV_ABS_02=:::0:0
EVDEV_ABS_03=:::0:0
EVDEV_ABS_04=:::0:0
EVDEV_ABS_05=:::0:0
EVDEV_ABS_06=:::0:0
EVDEV_ABS_07=:::0:0
# Granite Devices Simucube 2 Pro
evdev:input:b0003v16D0p0D60*
EVDEV_ABS_00=:::0:0
EVDEV_ABS_01=:::0:0
EVDEV_ABS_02=:::0:0
EVDEV_ABS_03=:::0:0
EVDEV_ABS_04=:::0:0
EVDEV_ABS_05=:::0:0
EVDEV_ABS_06=:::0:0
EVDEV_ABS_07=:::0:0
# Granite Devices Simucube 2 Ultimate
evdev:input:b0003v16D0p0D5F*
EVDEV_ABS_00=:::0:0
EVDEV_ABS_01=:::0:0
EVDEV_ABS_02=:::0:0
EVDEV_ABS_03=:::0:0
EVDEV_ABS_04=:::0:0
EVDEV_ABS_05=:::0:0
EVDEV_ABS_06=:::0:0
EVDEV_ABS_07=:::0:0
######################################### #########################################
# HP # HP
######################################### #########################################
@ -384,7 +462,8 @@ evdev:name:SynPS/2 Synaptics TouchPad:dmi:*svnHP:pnHPSpectreNotebook:*
EVDEV_ABS_36=1083:4808:65 EVDEV_ABS_36=1083:4808:65
# HP Envy x360 # HP Envy x360
evdev:name:SynPS/2 Synaptics TouchPad:*svnHP:pnHPENVYx360Convertible15m-cn0xxx:* evdev:name:SynPS/2 Synaptics TouchPad:dmi:*svnHP:pnHPENVYx360Convertible15m-cn0xxx:*
evdev:name:SynPS/2 Synaptics TouchPad:dmi:*svnHP:pnHPENVYx360Convertible15-cn0xxx**
EVDEV_ABS_00=1302:5640:36 EVDEV_ABS_00=1302:5640:36
EVDEV_ABS_01=1119:4741:61 EVDEV_ABS_01=1119:4741:61
EVDEV_ABS_35=1302:5640:36 EVDEV_ABS_35=1302:5640:36
@ -622,6 +701,13 @@ evdev:name:MSFT0001:02 04F3:304B Touchpad:dmi:*svnLENOVO:*pvrLenovoLegionY9000X2
EVDEV_ABS_35=::31 EVDEV_ABS_35=::31
EVDEV_ABS_36=::30 EVDEV_ABS_36=::30
# Lenovo g580
evdev:name:ETPS/2 Elantech Touchpad:dmi:*svnLENOVO:*pvrLenovoG580**
EVDEV_ABS_00=-170:2950:24
EVDEV_ABS_01=-591:700:25
EVDEV_ABS_35=-170:2950:24
EVDEV_ABS_36=-591:700:25
######################################### #########################################
# Microsoft # Microsoft
######################################### #########################################
@ -649,6 +735,17 @@ evdev:input:b0003v6161p4D15*
EVDEV_ABS_00=::152 EVDEV_ABS_00=::152
EVDEV_ABS_01=::244 EVDEV_ABS_01=::244
#########################################
# Packard Bell
#########################################
# EASYNOTE_TS11HR-200GE
evdev:name:ETPS/2 Elantech Touchpad:dmi:bvnPackardBell:bvr*:br*:svnPackardBell:pnEasyNoteTS11HR:*
EVDEV_ABS_00=0:2472:31
EVDEV_ABS_01=-524:528:31
EVDEV_ABS_35=0:2472:31
EVDEV_ABS_36=-524:528:31
########################################################### ###########################################################
# Pine64 # Pine64
########################################################### ###########################################################

View File

@ -19,14 +19,14 @@
# This matches on the kernel modalias of the input-device, mainly: # This matches on the kernel modalias of the input-device, mainly:
# ZZZZ is the bus-id (see /usr/include/linux/input.h BUS_*), YYYY, XXXX and # ZZZZ is the bus-id (see /usr/include/linux/input.h BUS_*), YYYY, XXXX and
# WWWW are the 4-digit hex uppercase vendor, product and version ID and VVVV # WWWW are the 4-digit hex uppercase vendor, product and version ID and VVVV
# is an arbitrary length input-modalias describing the device capabilities. # is a variable-length input-modalias describing the device capabilities.
# The vendor, product and version ID for a device node "eventX" is listed # The vendor, product and version ID for a device node "eventX" is listed
# in /sys/class/input/eventX/device/id. # in /sys/class/input/eventX/device/id.
# #
# - AT keyboard DMI data matches: # - AT keyboard DMI data matches:
# evdev:atkbd:dmi:bvn*:bvr*:bd*:svn<vendor>:pn<product>:pvr* # evdev:atkbd:dmi:bvn*:bvr*:bd*:svn<vendor>:pn<product>:pvr*
# <vendor> and <product> are the firmware-provided strings # <vendor> and <product> are the firmware-provided strings
# exported by the kernel DMI modalias, see /sys/class/dmi/id/modalias # exported by the kernel DMI modalias, see /sys/class/dmi/id/modalias.
# #
# - Input driver device name and DMI data match: # - Input driver device name and DMI data match:
# evdev:name:<input device name>:dmi:bvn*:bvr*:bd*:svn<vendor>:pn* # evdev:name:<input device name>:dmi:bvn*:bvr*:bd*:svn<vendor>:pn*
@ -41,7 +41,22 @@
# /sys/class/input/input?/phys", <ev> is the event bitmask, "cat # /sys/class/input/input?/phys", <ev> is the event bitmask, "cat
# /sys/class/input/input?/capabilities/ev" and <vendor> is the # /sys/class/input/input?/capabilities/ev" and <vendor> is the
# firmware-provided string exported by the kernel DMI modalias, # firmware-provided string exported by the kernel DMI modalias,
# see /sys/class/dmi/id/modalias # see /sys/class/dmi/id/modalias.
#
# To add local entries, create a new file
# /etc/udev/hwdb.d/61-keyboard-local.hwdb
# and add your rules there. To load the new rules execute (as root):
# systemd-hwdb update
# udevadm trigger /dev/input/eventXX
# where /dev/input/eventXX is the keyboard in question. If in doubt, simply use
# /dev/input/event* to reload all input rules.
#
# If your changes are generally applicable, preferably send them as a pull
# request to
# https://github.com/systemd/systemd
# or create a bug report on https://github.com/systemd/systemd/issues and
# include your new rules, a description of the device, and the output of
# udevadm info /dev/input/eventXX.
# ######################### KEY MAPPING ###################################### # ######################### KEY MAPPING ######################################
# #
@ -76,22 +91,6 @@
# Examples of such devices: Chromebooks where the top row is used for both # Examples of such devices: Chromebooks where the top row is used for both
# media and F1-F10 keys. # media and F1-F10 keys.
# To update this file, create a new file
# /etc/udev/hwdb.d/70-keyboard.hwdb
# and add your rules there. To load the new rules execute (as root):
# systemd-hwdb update
# udevadm trigger /dev/input/eventXX
# where /dev/input/eventXX is the keyboard in question. If in
# doubt, simply reload all input rules
# udevadm trigger --verbose --sysname-match="event*"
#
# If your changes are generally applicable, preferably send them as a pull
# request to
# https://github.com/systemd/systemd
# or create a bug report on https://github.com/systemd/systemd/issues and
# include your new rules, a description of the device, and the output of
# udevadm info /dev/input/eventXX.
########################################## ##########################################
# Acer # Acer
########################################## ##########################################
@ -278,6 +277,13 @@ evdev:atkbd:dmi:bvn*:bvr*:bd*:svnNotebook:pnW65_67SZ:*
KEYBOARD_KEY_ae=!volumedown KEYBOARD_KEY_ae=!volumedown
KEYBOARD_KEY_b0=!volumeup KEYBOARD_KEY_b0=!volumeup
evdev:atkbd:dmi:bvn*:bvr*:svnNotebook:pnNS50_70MU:*
evdev:atkbd:dmi:bvn*:bvr*:svnNotebook:pnNV4XMB,ME,MZ:*
evdev:atkbd:dmi:bvn*:bvr*:svnNotebook:pnNS5x_NS7xPU:*
evdev:atkbd:dmi:bvn*:bvr*:svnNotebook:pnNV4xPZ:*
KEYBOARD_KEY_f7=f21 # Touchpad Toggle
KEYBOARD_KEY_f8=f21 # Touchpad Toggle
########################################################### ###########################################################
# Compal # Compal
########################################################### ###########################################################
@ -296,6 +302,9 @@ evdev:atkbd:dmi:bvn*:bvr*:bd*:svnCompaq*:pn*Evo*N*:*
KEYBOARD_KEY_9e=email KEYBOARD_KEY_9e=email
KEYBOARD_KEY_9f=homepage KEYBOARD_KEY_9f=homepage
evdev:name:AT Translated Set 2 keyboard:dmi:bvn*:bvr*:svnCompaq:pn*:pvr*:rvn*:rnN14KP6*
KEYBOARD_KEY_76=f21 # Fn+f2 toggle touchpad
evdev:input:b0003v049Fp0051* evdev:input:b0003v049Fp0051*
evdev:input:b0003v049Fp008D* evdev:input:b0003v049Fp008D*
KEYBOARD_KEY_0c0011=presentation KEYBOARD_KEY_0c0011=presentation
@ -407,6 +416,8 @@ evdev:atkbd:dmi:bvn*:bvr*:bd*:svnDell*:pnXPS12-9Q33*:*
KEYBOARD_KEY_88=wlan KEYBOARD_KEY_88=wlan
KEYBOARD_KEY_65=direction # Screen Rotate KEYBOARD_KEY_65=direction # Screen Rotate
# Dell G16 microphone mute
evdev:name:Dell WMI hotkeys:dmi:bvn*:bvr*:bd*:svnDell*:pnDellG16*:*
# Dell Latitude microphone mute # Dell Latitude microphone mute
evdev:name:Dell WMI hotkeys:dmi:bvn*:bvr*:bd*:svnDell*:pnLatitude*:* evdev:name:Dell WMI hotkeys:dmi:bvn*:bvr*:bd*:svnDell*:pnLatitude*:*
# Dell Precision microphone mute # Dell Precision microphone mute
@ -596,6 +607,13 @@ evdev:atkbd:dmi:bvn*:bvr*:bd*:svnHP*:pnHPSpectrex360Convertible13*:*
evdev:atkbd:dmi:bvn*:bvr*:bd*:svnHP*:pnHPENVYx360Convertible13*:* evdev:atkbd:dmi:bvn*:bvr*:bd*:svnHP*:pnHPENVYx360Convertible13*:*
KEYBOARD_KEY_82=f20 # Microphone mute button, should be micmute KEYBOARD_KEY_82=f20 # Microphone mute button, should be micmute
# Spectre x360 16 2022
evdev:name:Intel HID events:dmi:bvn*:bvr*:bd*:svnHP*:pn*HP[sS][pP][eE][cC][tT][rR][eE]*x3602-in-1*:*
# ENVY x360
evdev:name:Intel HID events:dmi:bvn*:bvr*:bd*:svnHP*:pnHPENVYx360Convertible*:*
evdev:name:Intel HID events:dmi:bvn*:bvr*:bd*:svnHP*:pnHPENVYx3602-in-1*:*
KEYBOARD_KEY_08=unknown # Prevents random airplane mode activation
# HP Elite x2 1013 G3 # HP Elite x2 1013 G3
evdev:atkbd:dmi:bvn*:bvr*:svnHP*:pnHPElitex21013G3:* evdev:atkbd:dmi:bvn*:bvr*:svnHP*:pnHPElitex21013G3:*
KEYBOARD_KEY_f8=unknown # rfkill is also reported by HP Wireless hotkeys KEYBOARD_KEY_f8=unknown # rfkill is also reported by HP Wireless hotkeys
@ -918,7 +936,7 @@ evdev:atkbd:dmi:bvn*:bvr*:bd*:svnLENOVO*:pn*3000*:*
evdev:atkbd:dmi:bvn*:bvr*:bd*:svnLENOVO:pn0769AP2:pvr3000N200:* evdev:atkbd:dmi:bvn*:bvr*:bd*:svnLENOVO:pn0769AP2:pvr3000N200:*
KEYBOARD_KEY_b4=prog1 KEYBOARD_KEY_b4=prog1
# lenovo-ideapad # Lenovo IdeaPad
evdev:atkbd:dmi:bvn*:bvr*:bd*:svnLENOVO*:pn*IdeaPad*:* evdev:atkbd:dmi:bvn*:bvr*:bd*:svnLENOVO*:pn*IdeaPad*:*
evdev:atkbd:dmi:bvn*:bvr*:bd*:svnLENOVO*:pnS10-*:* evdev:atkbd:dmi:bvn*:bvr*:bd*:svnLENOVO*:pnS10-*:*
KEYBOARD_KEY_81=rfkill # does nothing in BIOS KEYBOARD_KEY_81=rfkill # does nothing in BIOS
@ -929,6 +947,10 @@ evdev:atkbd:dmi:bvn*:bvr*:bd*:svnLENOVO*:pnS10-*:*
KEYBOARD_KEY_f2=f21 # touchpad toggle (key alternately emits F2 and F3) KEYBOARD_KEY_f2=f21 # touchpad toggle (key alternately emits F2 and F3)
KEYBOARD_KEY_f3=f21 KEYBOARD_KEY_f3=f21
# Lenovo IdeaPad 5
evdev:atkbd:dmi:bvn*:bvr*:bd*:svnLENOVO*:pn*:pvrIdeaPad5*:*
KEYBOARD_KEY_81=insert
# Thinkpad X200_Tablet # Thinkpad X200_Tablet
evdev:atkbd:dmi:bvn*:bvr*:bd*:svnLENOVO*:pn*:pvrThinkPad*X2*Tablet*:* evdev:atkbd:dmi:bvn*:bvr*:bd*:svnLENOVO*:pn*:pvrThinkPad*X2*Tablet*:*
KEYBOARD_KEY_5d=menu KEYBOARD_KEY_5d=menu
@ -1376,6 +1398,7 @@ evdev:input:b0003v1532p0200*
evdev:atkbd:dmi:bvn*:bvr*:bd*:svnMICRO-STAR*:pn*:* evdev:atkbd:dmi:bvn*:bvr*:bd*:svnMICRO-STAR*:pn*:*
evdev:atkbd:dmi:bvn*:bvr*:bd*:svnMicro-Star*:pn*:* evdev:atkbd:dmi:bvn*:bvr*:bd*:svnMicro-Star*:pn*:*
KEYBOARD_KEY_91=config # MSIControl Center
KEYBOARD_KEY_a0=mute # Fn+F9 KEYBOARD_KEY_a0=mute # Fn+F9
KEYBOARD_KEY_ae=volumedown # Fn+F7 KEYBOARD_KEY_ae=volumedown # Fn+F7
KEYBOARD_KEY_b0=volumeup # Fn+F8 KEYBOARD_KEY_b0=volumeup # Fn+F8
@ -1386,6 +1409,8 @@ evdev:atkbd:dmi:bvn*:bvr*:bd*:svnMicro-Star*:pn*:*
KEYBOARD_KEY_e4=f21 # Fn+F3 Touchpad disable KEYBOARD_KEY_e4=f21 # Fn+F3 Touchpad disable
KEYBOARD_KEY_ec=email # envelope button KEYBOARD_KEY_ec=email # envelope button
KEYBOARD_KEY_ee=camera # Fn+F6 camera disable KEYBOARD_KEY_ee=camera # Fn+F6 camera disable
KEYBOARD_KEY_f1=f20 # Microphone mute
KEYBOARD_KEY_f2=rotate_display # Rotate screen
KEYBOARD_KEY_f6=wlan # satellite dish1 KEYBOARD_KEY_f6=wlan # satellite dish1
KEYBOARD_KEY_f7=brightnessdown # Fn+F4 KEYBOARD_KEY_f7=brightnessdown # Fn+F4
KEYBOARD_KEY_f8=brightnessup # Fn+F5 KEYBOARD_KEY_f8=brightnessup # Fn+F5
@ -1813,6 +1838,10 @@ evdev:atkbd:dmi:bvn*:bvr*:bd*:svnSystem76*:pn*:*
KEYBOARD_KEY_f7=f21 # Touchpad toggle KEYBOARD_KEY_f7=f21 # Touchpad toggle
KEYBOARD_KEY_f8=f21 # Touchpad toggle KEYBOARD_KEY_f8=f21 # Touchpad toggle
# Pangolin 12
evdev:atkbd:dmi:bvn*:bvr*:bd*:svnSystem76*:pnPangolin*:pvrpang12*
KEYBOARD_KEY_76=f21 # Touchpad toggle
########################################################### ###########################################################
# T-bao # T-bao
########################################################### ###########################################################
@ -2001,6 +2030,8 @@ evdev:atkbd:dmi:bvn*:bvr*:bd*:svnViewSonic:pnVPAD10:*
########################################################### ###########################################################
# Positivo-Vaio # Positivo-Vaio
########################################################### ###########################################################
# Vaio Pro (VJPW11F11X, VJPW12F11X)
evdev:name:AT Translated Set 2 keyboard:dmi:bvn*:bvr*:bd*:svnPositivoBahia-VAIO:pnVJPW1[12]F11X*:pvr*:*
# Vaio FE14 (VJFE41F11X, VJE42F11X, VJFE44F11X, VJFE54F11X) # Vaio FE14 (VJFE41F11X, VJE42F11X, VJFE44F11X, VJFE54F11X)
evdev:name:AT Translated Set 2 keyboard:dmi:bvn*:bvr*:bd*:svnPositivoBahia-VAIO:pnVJFE*:pvr*:* evdev:name:AT Translated Set 2 keyboard:dmi:bvn*:bvr*:bd*:svnPositivoBahia-VAIO:pnVJFE*:pvr*:*
KEYBOARD_KEY_76=f21 # Fn+F1 toggle touchpad KEYBOARD_KEY_76=f21 # Fn+F1 toggle touchpad
@ -2008,6 +2039,8 @@ evdev:name:AT Translated Set 2 keyboard:dmi:bvn*:bvr*:bd*:svnPositivoBahia-VAIO:
########################################################### ###########################################################
# Positivo # Positivo
########################################################### ###########################################################
# Positivo MASTER-N1110
evdev:name:AT Translated Set 2 keyboard:dmi:bvn*:svnPositivoTecnologiaSA:pn*:pvr*:rvnPositivoTecnologiaSA:rnNP11G-E*
# Positivo DUO (k116) # Positivo DUO (k116)
evdev:name:AT Translated Set 2 keyboard:dmi:bvn*:svnPositivoTecnologiaSA:pn*:pvr*:rvnPositivoTecnologiaSA:rnK116* evdev:name:AT Translated Set 2 keyboard:dmi:bvn*:svnPositivoTecnologiaSA:pn*:pvr*:rvnPositivoTecnologiaSA:rnK116*
KEYBOARD_KEY_76=f21 # Fn+F1 toggle touchpad KEYBOARD_KEY_76=f21 # Fn+F1 toggle touchpad
@ -2022,6 +2055,8 @@ evdev:name:AT Translated Set 2 keyboard:dmi:bvn*:bvr*:svnPositivoTecnologiaSA:pn
# Positivo Motion (K142, K142-V2) # Positivo Motion (K142, K142-V2)
evdev:name:SIPODEV USB Composite Device:dmi:bvn*:bvr*:svnPositivoTecnologiaSA:pn*:pvr*:rvn*:rnK142* evdev:name:SIPODEV USB Composite Device:dmi:bvn*:bvr*:svnPositivoTecnologiaSA:pn*:pvr*:rvn*:rnK142*
# Positivo Motion (N14ZP6, N14ZP7)
evdev:name:SIPODEV USB Composite Device:dmi:bvn*:bvr*:svnPositivoTecnologiaSA:pn*:pvr*:rvn*:rnN14ZP[67]*
# Positivo Motion (CW14Q01P) (CW14Q01P-V2) # Positivo Motion (CW14Q01P) (CW14Q01P-V2)
evdev:name:SIPODEV USB Composite Device:dmi:bvn*:bvr*:svnPositivoTecnologiaSA:pn*:pvr*:rvn*:rnCW14Q01P* evdev:name:SIPODEV USB Composite Device:dmi:bvn*:bvr*:svnPositivoTecnologiaSA:pn*:pvr*:rvn*:rnCW14Q01P*
KEYBOARD_KEY_70073=f21 # Fn+f2 toggle touchpad KEYBOARD_KEY_70073=f21 # Fn+f2 toggle touchpad

View File

@ -45,8 +45,8 @@
# subsystem[1]. The default, when unset, is equivalent to: # subsystem[1]. The default, when unset, is equivalent to:
# ACCEL_MOUNT_MATRIX=1, 0, 0; 0, 1, 0; 0, 0, 1 # ACCEL_MOUNT_MATRIX=1, 0, 0; 0, 1, 0; 0, 0, 1
# eg. the identity matrix, # eg. the identity matrix,
# and <value> is an integer value above which an object is considered # and <value> is an integer value above or equal to which an object is
# close by a proximity sensor: # considered close by a proximity sensor:
# PROXIMITY_NEAR_LEVEL=100 # PROXIMITY_NEAR_LEVEL=100
# #
# [1]: https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=dfc57732ad38f93ae6232a3b4e64fd077383a0f1 # [1]: https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=dfc57732ad38f93ae6232a3b4e64fd077383a0f1
@ -92,6 +92,9 @@ sensor:modalias:acpi:INVN6500*:dmi:*svn*Acer*:*pn*AspireSW5-012:*
sensor:modalias:acpi:BOSC0200*:dmi:*svnAcer*:*TP-SW5-017-17BU:* sensor:modalias:acpi:BOSC0200*:dmi:*svnAcer*:*TP-SW5-017-17BU:*
ACCEL_MOUNT_MATRIX=0, 1, 0; 1, 0, 0; 0, 0, -1 ACCEL_MOUNT_MATRIX=0, 1, 0; 1, 0, 0; 0, 0, -1
sensor:modalias:acpi:BOSC0200*:dmi:*:svnAcer:pnSW5-017:*
ACCEL_MOUNT_MATRIX=0, 1, 0; 1, 0, 0; 0, 0, 1
sensor:modalias:acpi:BMA250E*:dmi:*:svnAcer:pnIconiaW1-810:* sensor:modalias:acpi:BMA250E*:dmi:*:svnAcer:pnIconiaW1-810:*
ACCEL_MOUNT_MATRIX=1, 0, 0; 0, -1, 0; 0, 0, 1 ACCEL_MOUNT_MATRIX=1, 0, 0; 0, -1, 0; 0, 0, 1
@ -230,6 +233,10 @@ sensor:modalias:acpi:BOSC0200*:dmi:*:svn*CHUWIINNOVATIONANDTECHNOLOGY*:pnHi10pro
sensor:modalias:acpi:MXC6655*:dmi:*:svnCHUWIInnovationAndTechnology*:pnHi10X:* sensor:modalias:acpi:MXC6655*:dmi:*:svnCHUWIInnovationAndTechnology*:pnHi10X:*
ACCEL_MOUNT_MATRIX=0, 1, 0; 1, 0, 0; 0, 0, 1 ACCEL_MOUNT_MATRIX=0, 1, 0; 1, 0, 0; 0, 0, 1
# Chuwi Hi10 X (N4120 processor version)
sensor:modalias:acpi:KIOX000A*:dmi:*:svnCHUWIInnovationAndTechnology*:pnHi10X:*
ACCEL_MOUNT_MATRIX=0, -1, 0; -1, 0, 0; 0, 0, 1
# Chuwi Hi10 Go # Chuwi Hi10 Go
sensor:modalias:acpi:MXC6655*:dmi:*:svnCHUWIINNOVATIONLIMITED:pnHi10Go:* sensor:modalias:acpi:MXC6655*:dmi:*:svnCHUWIINNOVATIONLIMITED:pnHi10Go:*
ACCEL_MOUNT_MATRIX=-1, 0, 0; 0,-1, 0; 0, 0, 1 ACCEL_MOUNT_MATRIX=-1, 0, 0; 0,-1, 0; 0, 0, 1
@ -280,6 +287,13 @@ sensor:modalias:acpi:BOSC0200*:dmi:*:svnHampoo*:pnC3W6_AP108_4GB:*
sensor:modalias:acpi:KIOX000A*:dmi:*:svnConnect:pnTablet9:* sensor:modalias:acpi:KIOX000A*:dmi:*:svnConnect:pnTablet9:*
ACCEL_MOUNT_MATRIX=0, 1, 0; 1, 0, 0; 0, 0, 1 ACCEL_MOUNT_MATRIX=0, 1, 0; 1, 0, 0; 0, 0, 1
#########################################
# CSL Computer
#########################################
# CSL Panther Tab HD
sensor:modalias:acpi:KIOX000A*:dmi:*:svnCSL*Computer*:pnCSL*Panther*Tab*HD:*
ACCEL_MOUNT_MATRIX=0, -1, 0; -1, 0, 0; 0, 0, 1
######################################### #########################################
# Cube # Cube
######################################### #########################################
@ -336,6 +350,11 @@ sensor:modalias:platform:HID-SENSOR-200073:dmi:*svnDell*:sku0B09:*
sensor:modalias:platform:HID-SENSOR-200073:dmi:*svnDell*:sku0B0B:* sensor:modalias:platform:HID-SENSOR-200073:dmi:*svnDell*:sku0B0B:*
sensor:modalias:platform:HID-SENSOR-200073:dmi:*svnDell*:sku0B0D:* sensor:modalias:platform:HID-SENSOR-200073:dmi:*svnDell*:sku0B0D:*
sensor:modalias:platform:HID-SENSOR-200073:dmi:*svnDell*:sku0B11:* sensor:modalias:platform:HID-SENSOR-200073:dmi:*svnDell*:sku0B11:*
sensor:modalias:platform:HID-SENSOR-200073:dmi:*svnDell*:sku0C00:*
sensor:modalias:platform:HID-SENSOR-200073:dmi:*svnDell*:sku0C02:*
sensor:modalias:platform:HID-SENSOR-200073:dmi:*svnDell*:sku0C40:*
sensor:modalias:platform:HID-SENSOR-200073:dmi:*svnDell*:sku0C41:*
sensor:modalias:platform:HID-SENSOR-200073:dmi:*svnDell*:sku0C42:*
ACCEL_LOCATION=base ACCEL_LOCATION=base
# Dell Venue 8 Pro 3845 # Dell Venue 8 Pro 3845
@ -350,8 +369,8 @@ sensor:modalias:acpi:INVN6500*:dmi:*svnDell*:pnVenue10Pro5055:*
# DERE # DERE
######################################### #########################################
# DBook D10 # DBook D10 / Juno Tablet
sensor:modalias:acpi:KIOX000A*:dmi:bvnAmericanMegatrendsInternational,LLC.:bvrJP2V1.05:bd04/27/2022:br1.5:efr1.3:svnDefaultstring:* sensor:modalias:acpi:KIOX000A*:dmi:bvnAmericanMegatrendsInternational,LLC.:bvrJP2V*:svnDefaultstring:*
ACCEL_MOUNT_MATRIX=1, 0, 0; 0, -1, 0; 0, 0, 1 ACCEL_MOUNT_MATRIX=1, 0, 0; 0, -1, 0; 0, 0, 1
######################################### #########################################
@ -629,6 +648,10 @@ sensor:modalias:i2c:bmc150_accel:dmi:*:svnLENOVO:*:pvrLenovoYoga300-11IBR:*
ACCEL_MOUNT_MATRIX=1, 0, 0; 0, 1, 0; 0, 0, -1 ACCEL_MOUNT_MATRIX=1, 0, 0; 0, 1, 0; 0, 0, -1
ACCEL_LOCATION=base ACCEL_LOCATION=base
# IdeaPad Duet 3 10IGL5 (82AT)
sensor:modalias:acpi:SMO8B30*:dmi:*:svnLENOVO*:pn82AT:*
ACCEL_MOUNT_MATRIX=0, 1, 0; -1, 0, 0; 0, 0, 1
######################################### #########################################
# LINX # LINX
######################################### #########################################
@ -637,6 +660,10 @@ sensor:modalias:i2c:bmc150_accel:dmi:*:svnLENOVO:*:pvrLenovoYoga300-11IBR:*
sensor:modalias:acpi:BOSC0200*:dmi:*:svnLINX*:pnLINX1010B:* sensor:modalias:acpi:BOSC0200*:dmi:*:svnLINX*:pnLINX1010B:*
ACCEL_MOUNT_MATRIX=-1, 0, 0; 0, 1, 0; 0, 0, -1 ACCEL_MOUNT_MATRIX=-1, 0, 0; 0, 1, 0; 0, 0, -1
# Linx 1020
sensor:modalias:acpi:MIRAACC*:dmi:*:svnLINX*:pnLINX1020:*
ACCEL_MOUNT_MATRIX=1, 0, 0; 0, -1, 0; 0, 0, -1
# Linx 12X64, 12V64 and Vision 8 # Linx 12X64, 12V64 and Vision 8
sensor:modalias:acpi:KIOX000A*:dmi:*:svnLINX*:pnLINX12*64:* sensor:modalias:acpi:KIOX000A*:dmi:*:svnLINX*:pnLINX12*64:*
sensor:modalias:acpi:KIOX000A*:dmi:*:svnLINX:pnVISION004:* sensor:modalias:acpi:KIOX000A*:dmi:*:svnLINX:pnVISION004:*
@ -899,6 +926,10 @@ sensor:modalias:acpi:KIOX000A*:dmi:*:svnTECLAST:pnX80Pro:*
sensor:modalias:acpi:SMO8500*:dmi:*bd12/19/2014:*:rvnTECLAST:rntPAD:* sensor:modalias:acpi:SMO8500*:dmi:*bd12/19/2014:*:rvnTECLAST:rntPAD:*
ACCEL_MOUNT_MATRIX=1, 0, 0; 0, -1, 0; 0, 0, 1 ACCEL_MOUNT_MATRIX=1, 0, 0; 0, -1, 0; 0, 0, 1
# Teclast X98 Air 3G (C5J6), "tPAD" is too generic also match on newest BIOS date
sensor:modalias:acpi:SMO8500*:dmi:*bd05/05/2015:*:rvnTECLAST:rntPAD:*
ACCEL_MOUNT_MATRIX=1, 0, 0; 0, -1, 0; 0, 0, 1
# Teclast X98 Plus I (A5C6), generic DMI strings, match entire dmi modalias inc. bios-date # Teclast X98 Plus I (A5C6), generic DMI strings, match entire dmi modalias inc. bios-date
# '*' in ":*svn" is there because kernels >= 5.8 have inserted a br field there # '*' in ":*svn" is there because kernels >= 5.8 have inserted a br field there
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.:* 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.:*
@ -975,6 +1006,9 @@ sensor:modalias:acpi:KIOX000A*:dmi:*:svnUMAX:pnVisionBook10WiPro:*
sensor:modalias:acpi:SMO8500*:dmi:*:svnUMAX:pnVisionBook10WiPlus:* sensor:modalias:acpi:SMO8500*:dmi:*:svnUMAX:pnVisionBook10WiPlus:*
ACCEL_MOUNT_MATRIX=0, -1, 0; -1, 0, 0; 0, 0, 1 ACCEL_MOUNT_MATRIX=0, -1, 0; -1, 0, 0; 0, 0, 1
sensor:modalias:acpi:MXC6655*:dmi:*:svnUMAX:pnVisionbook12WrTab:*
ACCEL_MOUNT_MATRIX=0, 1, 0; 1, 0, 0; 0, 0, 1
######################################### #########################################
# Voyo # Voyo
######################################### #########################################

View File

@ -52,6 +52,10 @@ usb:v0FD9p006D*
usb:v0FD9p0080* usb:v0FD9p0080*
ID_AV_PRODUCTION_CONTROLLER=1 ID_AV_PRODUCTION_CONTROLLER=1
# Stream Deck Pedal
usb:v0FD9p0086*
ID_AV_PRODUCTION_CONTROLLER=1
############################# #############################
# Hercules (Guillemot Corp) # Hercules (Guillemot Corp)
############################# #############################

View File

@ -1,8 +1,10 @@
# This file is part of systemd. # This file is part of systemd.
# #
# Pointingstick const-accel configuration, to make different brand / model # Pointingstick const-accel configuration, to make different brand / model
# laptop pointingsticks have the same speed / feel, and per model adjustment # laptop pointingsticks have the same speed / feel, and per model adjustment of
# of the IBM TrackPoint driver's sensitivity setting # the IBM TrackPoint and Dell DualPoint Stick driver's sensitivity setting.
#
# ########################### MATCHING #######################################
# #
# The lookup keys are composed in: # The lookup keys are composed in:
# 60-evdev.rules # 60-evdev.rules
@ -13,7 +15,7 @@
# This matches on the kernel modalias of the input-device, mainly: # This matches on the kernel modalias of the input-device, mainly:
# ZZZZ is the bus-id (see /usr/include/linux/input.h BUS_*), YYYY, XXXX and # ZZZZ is the bus-id (see /usr/include/linux/input.h BUS_*), YYYY, XXXX and
# WWW are the 4-digit hex uppercase vendor, product and version ID and VVVV # WWW are the 4-digit hex uppercase vendor, product and version ID and VVVV
# is an arbitrary length input-modalias describing the device capabilities. # is a variable-length input-modalias describing the device capabilities.
# The vendor, product and version ID for a device node "eventX" is listed # The vendor, product and version ID for a device node "eventX" is listed
# in /sys/class/input/eventX/device/id. # in /sys/class/input/eventX/device/id.
# #
@ -21,15 +23,24 @@
# evdev:name:<input device name>:dmi:bvn*:bvr*:bd*:svn<vendor>:pn*:* # evdev:name:<input device name>:dmi:bvn*:bvr*:bd*:svn<vendor>:pn*:*
# <input device name> is the name device specified by the driver, # <input device name> is the name device specified by the driver,
# <vendor> is the firmware-provided string from the kernel DMI modalias, # <vendor> is the firmware-provided string from the kernel DMI modalias,
# see /sys/class/dmi/id/modalias # see /sys/class/dmi/id/modalias.
#
# - Extended input driver device name, properties and DMI data match:
# evdev:name:<input device name>:phys:<phys>:ev:<ev>:dmi:bvn*:bvr*:bd*:svn<vendor>:pn*
# <input device name> is the name device specified by the
# driver, <phys> is the physical-device-path, "cat
# /sys/class/input/input?/phys", <ev> is the event bitmask, "cat
# /sys/class/input/input?/capabilities/ev" and <vendor> is the
# firmware-provided string exported by the kernel DMI modalias,
# see /sys/class/dmi/id/modalias.
# #
# To add local entries, create a new file # To add local entries, create a new file
# /etc/udev/hwdb.d/71-pointingstick-local.hwdb # /etc/udev/hwdb.d/71-pointingstick-local.hwdb
# and add your rules there. To load the new rules execute (as root): # and add your rules there. To load the new rules execute (as root):
# systemd-hwdb update # systemd-hwdb update
# udevadm trigger /dev/input/eventXX # udevadm trigger /dev/input/eventXX
# where /dev/input/eventXX is the pointingstick in question. If in # where /dev/input/eventXX is the pointingstick in question. If in doubt, simply
# doubt, simply use /dev/input/event* to reload all input rules. # use /dev/input/event* to reload all input rules.
# #
# If your changes are generally applicable, preferably send them as a pull # If your changes are generally applicable, preferably send them as a pull
# request to # request to
@ -79,6 +90,7 @@
# Generic # Generic
########################################## ##########################################
evdev:name:*[tT]rack[pP]oint*:* evdev:name:*[tT]rack[pP]oint*:*
evdev:name:*[dD]ual[pP]oint [sS]tick*:*
ID_INPUT_POINTINGSTICK=1 ID_INPUT_POINTINGSTICK=1
######################################### #########################################

View File

@ -1094,6 +1094,13 @@ ieee1394:ven000001F2mo*sp000001F2ver00000035
IEEE1394_UNIT_FUNCTION_MIDI=1 IEEE1394_UNIT_FUNCTION_MIDI=1
IEEE1394_UNIT_FUNCTION_AUDIO=1 IEEE1394_UNIT_FUNCTION_AUDIO=1
ieee1394:node:ven0x0001f2units0x0001f2:0x000037
ieee1394:ven000001F2mo00102800sp000001F2ver00000037
ID_VENDOR_FROM_DATABASE=MOTU
ID_MODEL_FROM_DATABASE=MOTU 896 mk3 Hybrid
IEEE1394_UNIT_FUNCTION_MIDI=1
IEEE1394_UNIT_FUNCTION_AUDIO=1
ieee1394:node:ven0x0001f2units0x0001f2:0x000039 ieee1394:node:ven0x0001f2units0x0001f2:0x000039
ieee1394:ven000001F2mo*sp000001F2ver00000039 ieee1394:ven000001F2mo*sp000001F2ver00000039
ID_VENDOR_FROM_DATABASE=MOTU ID_VENDOR_FROM_DATABASE=MOTU

View File

@ -116,6 +116,9 @@
<tr class="even"><td>GoUp Co.,Ltd</td><td>GOUP</td><td>06/24/2022</td> </tr> <tr class="even"><td>GoUp Co.,Ltd</td><td>GOUP</td><td>06/24/2022</td> </tr>
<tr class="odd"><td>Shenzhen Jaguar Microsystems Co.,Ltd.</td><td>JMIC</td><td>09/23/2022</td> </tr> <tr class="odd"><td>Shenzhen Jaguar Microsystems Co.,Ltd.</td><td>JMIC</td><td>09/23/2022</td> </tr>
<tr class="even"><td>Elliptic Laboratories AS</td><td>ELAS</td><td>10/20/2022</td> </tr> <tr class="even"><td>Elliptic Laboratories AS</td><td>ELAS</td><td>10/20/2022</td> </tr>
<tr class="odd"><td>Micro Crystal AG</td><td>MCRY</td><td>11/10/2022</td> </tr>
<tr class="even"><td>Cix Technology (Shanghai) Co., Ltd. </td><td>CIXH</td><td>11/16/2022</td> </tr>
<tr class="odd"><td>EyeTech Digital Systems</td><td>ETDS</td><td>11/29/2022</td> </tr>
</tbody> </tbody>
</table> </table>
</body> </body>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -2523,6 +2523,8 @@
<tr class="odd"><td>Printronix LLC</td><td>PTX</td><td>10/20/2022</td> </tr> <tr class="odd"><td>Printronix LLC</td><td>PTX</td><td>10/20/2022</td> </tr>
<tr class="even"><td>Colorlight</td><td>KLT</td><td>10/20/2022</td> </tr> <tr class="even"><td>Colorlight</td><td>KLT</td><td>10/20/2022</td> </tr>
<tr class="odd"><td>Beck GmbH &amp; Co. Elektronik Bauelemente KG</td><td>BCK</td><td>10/20/2022</td> </tr> <tr class="odd"><td>Beck GmbH &amp; Co. Elektronik Bauelemente KG</td><td>BCK</td><td>10/20/2022</td> </tr>
<tr class="even"><td>Shenzhen Soogeen Electronics Co., LTD.</td><td>SGN</td><td>11/29/2022</td> </tr>
<tr class="odd"><td>Emotiva Audio Corp. </td><td>EAC</td><td>02/02/2023</td> </tr>
</tbody> </tbody>
</table> </table>
</body> </body>

View File

@ -9,8 +9,8 @@
# The latest version can be obtained from # The latest version can be obtained from
# http://www.linux-usb.org/usb.ids # http://www.linux-usb.org/usb.ids
# #
# Version: 2022.05.20 # Version: 2023.01.16
# Date: 2022-05-20 20:34:10 # Date: 2023-01-16 20:34:10
# #
# Vendors, devices and interfaces. Please keep sorted. # Vendors, devices and interfaces. Please keep sorted.
@ -24,10 +24,14 @@
7778 Counterfeit flash drive [Kingston] 7778 Counterfeit flash drive [Kingston]
0002 Ingram 0002 Ingram
0002 passport00 0002 passport00
7007 HPRT XT300
0003 Club Mac 0003 Club Mac
0004 Nebraska Furniture Mart 0004 Nebraska Furniture Mart
0011 Unknown 0011 Unknown
7788 counterfeit flash drive 7788 counterfeit flash drive
0040 Anyware Corporation
073d Mini Multimedia 2.4GHz Wireless Keyboard with Touch Pad
0042 DMT
0053 Planex 0053 Planex
5301 GW-US54ZGL 802.11bg 5301 GW-US54ZGL 802.11bg
0078 Microntek 0078 Microntek
@ -60,6 +64,7 @@
6026 CBM1180 Flash drive controller 6026 CBM1180 Flash drive controller
0218 Hangzhou Worlde 0218 Hangzhou Worlde
0301 MIDI Port 0301 MIDI Port
0231 Sonuus Limited
02ad HUMAX Co., Ltd. 02ad HUMAX Co., Ltd.
138c PVR Mass Storage 138c PVR Mass Storage
0303 Mini Automation Controller 0303 Mini Automation Controller
@ -72,6 +77,8 @@
0001 PSX for USB Converter 0001 PSX for USB Converter
03c3 ZWO 03c3 ZWO
120e ASI120MC-S Planetary Camera 120e ASI120MC-S Planetary Camera
1f10 EFF
294f ASI294MC Pro
03d9 Shenzhen Sinote Tech-Electron Co., Ltd 03d9 Shenzhen Sinote Tech-Electron Co., Ltd
0499 SE340D PC Remote Control 0499 SE340D PC Remote Control
03da Bernd Walter Computer Technology 03da Bernd Walter Computer Technology
@ -227,7 +234,7 @@
0218 APOLLO P2500/2600 0218 APOLLO P2500/2600
0221 StreamSmart 400 [F2235AA] 0221 StreamSmart 400 [F2235AA]
0223 Digital Drive Flash Reader 0223 Digital Drive Flash Reader
022a Laserjet CP1525nw 022a LaserJet CP1525nw/x
0241 Link-5 micro dongle 0241 Link-5 micro dongle
0304 DeskJet 810c/812c 0304 DeskJet 810c/812c
0305 ScanJet 4300c 0305 ScanJet 4300c
@ -277,6 +284,7 @@
0805 HP4470C 0805 HP4470C
0811 OfficeJet K80xi 0811 OfficeJet K80xi
0817 LaserJet 3300 0817 LaserJet 3300
0853 ENVY 5000 series
0901 ScanJet 2300c 0901 ScanJet 2300c
0904 DeskJet 845c 0904 DeskJet 845c
0912 Printing Support 0912 Printing Support
@ -457,6 +465,7 @@
2d05 Scanjet 7000 2d05 Scanjet 7000
2d11 OfficeJet 6110 2d11 OfficeJet 6110
2d17 Printing Support 2d17 Printing Support
2d2a LaserJet Pro MFP M225dw
2e11 PSC 1000 2e11 PSC 1000
2e17 LaserJet 2600n 2e17 LaserJet 2600n
2e24 LP2275w Monitor Hub 2e24 LP2275w Monitor Hub
@ -522,6 +531,7 @@
3d11 OfficeJet 4215 3d11 OfficeJet 4215
3d17 LaserJet P1005 3d17 LaserJet P1005
3e02 PhotoSmart 7550 3e02 PhotoSmart 7550
3e07 x755w Flash Drive
3e17 LaserJet P1006 3e17 LaserJet P1006
3f02 PhotoSmart 7550~ 3f02 PhotoSmart 7550~
3f11 PSC-1315/PSC-1317 3f11 PSC-1315/PSC-1317
@ -552,6 +562,7 @@
4611 PhotoSmart 2700 4611 PhotoSmart 2700
4717 Color LaserJet CP1215 4717 Color LaserJet CP1215
4811 PSC 1600 4811 PSC 1600
484a Elite Dock G4
4911 PSC 2350 4911 PSC 2350
4b11 OfficeJet 6200 4b11 OfficeJet 6200
4c11 PSC 1500 series 4c11 PSC 1500 series
@ -805,7 +816,8 @@
6011 FT4232H Quad HS USB-UART/FIFO IC 6011 FT4232H Quad HS USB-UART/FIFO IC
6014 FT232H Single HS USB-UART/FIFO IC 6014 FT232H Single HS USB-UART/FIFO IC
6015 Bridge(I2C/SPI/UART/FIFO) 6015 Bridge(I2C/SPI/UART/FIFO)
601f Myriad-RF LimeSDR-Mini 601e FT600 16-bit FIFO IC
601f FT601 32-bit FIFO IC
6ee0 EZO Carrier Board 6ee0 EZO Carrier Board
6f70 HB-RF-USB 6f70 HB-RF-USB
7be8 FT232R 7be8 FT232R
@ -895,6 +907,7 @@
d38f Xsens serial converter d38f Xsens serial converter
d491 Zolix Omni 1509 monochromator d491 Zolix Omni 1509 monochromator
d578 Accesio USB-COM-4SM d578 Accesio USB-COM-4SM
d678 GammaScout
d6f8 UNI Black BOX d6f8 UNI Black BOX
d738 Propox JTAGcable II d738 Propox JTAGcable II
d739 Propox ISPcable III d739 Propox ISPcable III
@ -1204,7 +1217,9 @@
040c VTech Computers, Ltd 040c VTech Computers, Ltd
040d VIA Technologies, Inc. 040d VIA Technologies, Inc.
3184 VNT VT6656 USB-802.11 Wireless LAN Adapter 3184 VNT VT6656 USB-802.11 Wireless LAN Adapter
340b FX-Audio DAC-X6
340f Audinst HUD-mx2 340f Audinst HUD-mx2
6204 Vectro VT6204 IDE bridge
6205 USB 2.0 Card Reader 6205 USB 2.0 Card Reader
040e MCCI 040e MCCI
040f Echo Speech Corp. 040f Echo Speech Corp.
@ -1341,7 +1356,7 @@
7721 Memory Stick Reader/Writer 7721 Memory Stick Reader/Writer
7722 Memory Stick Reader/Writer 7722 Memory Stick Reader/Writer
7723 SD Card Reader 7723 SD Card Reader
b23c KT108 keyboard b23c Gaming Keyboard
c141 Barcode Scanner c141 Barcode Scanner
0417 Symbios Logic 0417 Symbios Logic
0418 AST Research 0418 AST Research
@ -1382,6 +1397,7 @@
3020 SoundBlaster Audigy 2 NX 3020 SoundBlaster Audigy 2 NX
3030 SB External Composite Device 3030 SB External Composite Device
3040 SoundBlaster Live! 24-bit External SB0490 3040 SoundBlaster Live! 24-bit External SB0490
3042 Sound Blaster X-Fi Surround 5.1
3060 Sound Blaster Audigy 2 ZS External 3060 Sound Blaster Audigy 2 ZS External
3061 SoundBlaster Audigy 2 ZS Video Editor 3061 SoundBlaster Audigy 2 ZS Video Editor
3090 Sound Blaster Digital Music SX 3090 Sound Blaster Digital Music SX
@ -1398,6 +1414,7 @@
3f02 E-Mu 0202 3f02 E-Mu 0202
3f04 E-Mu 0404 3f04 E-Mu 0404
3f07 E-Mu Xmidi 1x1 3f07 E-Mu Xmidi 1x1
3f0a E-Mu Tracker Pre
3f0e Xmidi 1x1 Tab 3f0e Xmidi 1x1 Tab
4003 VideoBlaster Webcam Go Plus [W9967CF] 4003 VideoBlaster Webcam Go Plus [W9967CF]
4004 Nomad II MG 4004 Nomad II MG
@ -1459,7 +1476,7 @@
4087 Live! Cam Socialize HD 1080 [VF0680] 4087 Live! Cam Socialize HD 1080 [VF0680]
4088 Live! Cam Chat HD [VF0700] 4088 Live! Cam Chat HD [VF0700]
4095 Live! Cam Sync HD [VF0770] 4095 Live! Cam Sync HD [VF0770]
4097 Live! Cam Chat HD [VF0700] 4097 Live! Cam Chat HD [VF0700/VF0790]
4099 Creative VF0800 [RealSense Camera SR300] 4099 Creative VF0800 [RealSense Camera SR300]
4100 Nomad Jukebox 2 4100 Nomad Jukebox 2
4101 Nomad Jukebox 3 4101 Nomad Jukebox 3
@ -1667,6 +1684,7 @@
1237 Andromeda Hub 1237 Andromeda Hub
0424 Microchip Technology, Inc. (formerly SMSC) 0424 Microchip Technology, Inc. (formerly SMSC)
0001 Integrated Hub 0001 Integrated Hub
0007 ULPI Transciever [USB3320]
0140 LPC47M14x hub 0140 LPC47M14x hub
0acd Sitecom Internal Multi Memory reader/writer MD-005 0acd Sitecom Internal Multi Memory reader/writer MD-005
0fdc Floppy 0fdc Floppy
@ -1758,6 +1776,7 @@
0083 109 Japanese Keyboard 0083 109 Japanese Keyboard
00a2 Type 7 Keyboard 00a2 Type 7 Keyboard
0100 3-button Mouse 0100 3-button Mouse
0406 KVM Switch
0502 Panasonic CF-19 HID Touch Panel 0502 Panasonic CF-19 HID Touch Panel
100e 24.1" LCD Monitor v4 / FID-638 Mouse 100e 24.1" LCD Monitor v4 / FID-638 Mouse
36ba Bus Powered Hub 36ba Bus Powered Hub
@ -1932,6 +1951,7 @@
010f 6500 series 010f 6500 series
0142 X3650 (Printer, Scanner, Copier) 0142 X3650 (Printer, Scanner, Copier)
01fa S310 series 01fa S310 series
020e RICOH Aficio SP 4410SF
4303 Xerox WorkCentre Pro 412 4303 Xerox WorkCentre Pro 412
043e LG Electronics USA, Inc. 043e LG Electronics USA, Inc.
3001 AN-WF100 802.11abgn Wireless Adapter [Broadcom BCM4323] 3001 AN-WF100 802.11abgn Wireless Adapter [Broadcom BCM4323]
@ -2095,6 +2115,9 @@
0454 Vobis Microcomputer AG 0454 Vobis Microcomputer AG
0455 Telematics International, Inc. 0455 Telematics International, Inc.
0456 Analog Devices, Inc. 0456 Analog Devices, Inc.
7031 FX2 SPI/I2C Interface
b672 Libiio based instrument [ADALM2000]
b673 LibIIO based AD9363 Software Defined Radio [ADALM-PLUTO]
f000 FT2232 JTAG ICE [gnICE] f000 FT2232 JTAG ICE [gnICE]
f001 FT2232H Hi-Speed JTAG ICE [gnICE+] f001 FT2232H Hi-Speed JTAG ICE [gnICE+]
0457 Silicon Integrated Systems Corp. 0457 Silicon Integrated Systems Corp.
@ -2196,6 +2219,7 @@
7020 Sim 321C 7020 Sim 321C
7025 Eye 311Q Camera 7025 Eye 311Q Camera
7029 Genius Look 320s (SN9C201 + HV7131R) 7029 Genius Look 320s (SN9C201 + HV7131R)
702c Trek 320R Camera
702f Genius Slim 322 702f Genius Slim 322
7035 i-Look 325T Camera 7035 i-Look 325T Camera
7045 Genius Look 1320 V2 7045 Genius Look 1320 V2
@ -2340,7 +2364,7 @@
028b Xbox360 DVD Emulator 028b Xbox360 DVD Emulator
028d Xbox360 Memory Unit 64MB 028d Xbox360 Memory Unit 64MB
028e Xbox360 Controller 028e Xbox360 Controller
028f Xbox360 Wireless Controller 028f Xbox360 Wireless Controller via Plug & Charge Cable
0290 Xbox360 Performance Pipe (PIX) 0290 Xbox360 Performance Pipe (PIX)
0291 Xbox 360 Wireless Receiver for Windows 0291 Xbox 360 Wireless Receiver for Windows
0292 Xbox360 Wireless Networking Adapter 0292 Xbox360 Wireless Networking Adapter
@ -2361,10 +2385,13 @@
02d1 Xbox One Controller 02d1 Xbox One Controller
02d5 Xbox One Digital TV Tuner 02d5 Xbox One Digital TV Tuner
02dd Xbox One Controller (Firmware 2015) 02dd Xbox One Controller (Firmware 2015)
02e0 Xbox One Wireless Controller
02e3 Xbox One Elite Controller 02e3 Xbox One Elite Controller
02e6 Wireless XBox Controller Dongle 02e6 Wireless XBox Controller Dongle
02ea Xbox One S Controller 02ea Xbox One S Controller
02fd Xbox One S Controller [Bluetooth] 02fd Xbox One S Controller [Bluetooth]
02fe Xbox Wireless Adapter for Windows
02ff Xbox One S Controller [Bluetooth]
0400 Windows Powered Pocket PC 2002 0400 Windows Powered Pocket PC 2002
0401 Windows Powered Pocket PC 2002 0401 Windows Powered Pocket PC 2002
0402 Windows Powered Pocket PC 2002 0402 Windows Powered Pocket PC 2002
@ -2553,9 +2580,15 @@
0927 RTL8153B GigE [Surface Ethernet Adapter] 0927 RTL8153B GigE [Surface Ethernet Adapter]
0955 Hub 0955 Hub
0957 Hub 0957 Hub
097a Generic Superspeed Hub [Azure Kinect]
097b Generic Hub [Azure Kinect]
097c Azure Kinect Depth Camera
097d Azure Kinect 4K Camera
097e Azure Kinect Microphone Array
09a0 RTL8153B GigE [Surface Ethernet Adapter] 09a0 RTL8153B GigE [Surface Ethernet Adapter]
09c0 Surface Type Cover 09c0 Surface Type Cover
0a00 Lumia 950 Dual SIM (RM-1118) 0a00 Lumia 950 (RM-1104/RM-1118)
0b00 Xbox Elite Series 2 Controller (model 1797)
0b12 Xbox Wireless Controller (model 1914) 0b12 Xbox Wireless Controller (model 1914)
930a ISOUSB.SYS Intel 82930 Isochronous IO Test Board 930a ISOUSB.SYS Intel 82930 Isochronous IO Test Board
ffca Catalina ffca Catalina
@ -2621,6 +2654,7 @@
4d2e Optical Mobile Mouse (HID) 4d2e Optical Mobile Mouse (HID)
4d51 0Y357C PMX-MMOCZUL (B) [Dell Laser Mouse] 4d51 0Y357C PMX-MMOCZUL (B) [Dell Laser Mouse]
4d62 HP Laser Mobile Mini Mouse 4d62 HP Laser Mobile Mini Mouse
4d64 Asus wired optical mouse - Model MOEWUO
4d75 Rocketfish RF-FLBTAD Bluetooth Adapter 4d75 Rocketfish RF-FLBTAD Bluetooth Adapter
4d81 Dell N889 Optical Mouse 4d81 Dell N889 Optical Mouse
4d8a HP Multimedia Keyboard 4d8a HP Multimedia Keyboard
@ -2631,6 +2665,7 @@
4de7 webcam 4de7 webcam
4e04 Lenovo Keyboard KB1021 4e04 Lenovo Keyboard KB1021
4e22 Dell Mouse, 2 Buttons, Modell: MS111-P 4e22 Dell Mouse, 2 Buttons, Modell: MS111-P
4e26 Asus wired keyboard - model KB73211
4e6f Acer Wired Keyboard Model KBAY211 4e6f Acer Wired Keyboard Model KBAY211
4e72 Acer Wired Keyboard Model KBAY211 4e72 Acer Wired Keyboard Model KBAY211
0463 MGE UPS Systems 0463 MGE UPS Systems
@ -2656,14 +2691,42 @@
003d Raptor Gaming Keyboard Integrated Hub 003d Raptor Gaming Keyboard Integrated Hub
003e SmartTerminal ST-2xxx 003e SmartTerminal ST-2xxx
0041 G86 6240 Keyboard 0041 G86 6240 Keyboard
0076 MX-Board 3.0 G80-3850
0077 MX BOARD 3.0S FL NBL Keyboard
0079 MX BOARD 3.0S FL RGB Keyboard
0080 eHealth Terminal ST 1503 0080 eHealth Terminal ST 1503
0081 eHealth Keyboard G87 1504 0081 eHealth Keyboard G87 1504
0083 MX BOARD 3.0S FL RGB (KOREAN) Keyboard
0084 eHealth Terminal ST1506
0085 eHealth PIN-Pad PP1516
00a1 SmartCard Reader Keyboard KC 1000 SC 00a1 SmartCard Reader Keyboard KC 1000 SC
00ab MX 1.0 FL BL Keyboard
00ac MX BOARD 1.0 TKL RGB Keyboard
00b7 MX BOARD 8.0 TKL RGB Keyboard
00bb MX BOARD 10.0 FL RGB Keyboard
00c3 G80 3000 TKL NBL Keyboard
00c4 MX BOARD 2.0S FL RGB Keyboard
00c5 G80 3000 TKL RGB Keyboard
00c7 MV BOARD 3.0 FL RGB
00c9 CCF MX 8.0 TKL BL Keyboard
00ca CCF MX 1.0 TKL BL Keyboard
00cb CCF MX 1.0 TKL NBL Keyboard
00cd G80 3000 TKL NBL (KOREAN) Keyboard
00ce MX BOARD 2.0S FL NBL Keyboard
00d2 MX 1.0 FL NBL Keyboard
00d3 MX 1.0 FL RGB Keyboard
00dd G80-3000N RGB TKL Keyboard
00de G80-3000N FL RGB Keyboard
00df MX BOARD 10.0N FL RGB Keyboard
0106 R-300 Wireless Mouse Receiver 0106 R-300 Wireless Mouse Receiver
010d MX-Board 3.0 Keyboard 010d MX-Board 3.0 Keyboard
0180 Strait 3.0 0180 Strait 3.0
01a4 MC 2.1 Mouse
01a6 MX BOARD 2.0S FL RGB DE Keyboard
b090 Keyboard b090 Keyboard
b091 Mouse b091 Mouse
c099 Stream Keyboard TKL
c110 KC 4500 Ergo Keyboard
046b American Megatrends, Inc. 046b American Megatrends, Inc.
0001 Keyboard 0001 Keyboard
0101 PS/2 Keyboard, Mouse & Joystick Ports 0101 PS/2 Keyboard, Mouse & Joystick Ports
@ -2707,6 +2770,8 @@
0830 QuickClip 0830 QuickClip
0836 B525 HD Webcam 0836 B525 HD Webcam
0837 BCC950 ConferenceCam 0837 BCC950 ConferenceCam
0838 BCC950 ConferenceCam audio
0839 BCC950 ConferenceCam integated hub
0840 QuickCam Express 0840 QuickCam Express
0843 Webcam C930e 0843 Webcam C930e
0845 ConferenceCam CC3000e Camera 0845 ConferenceCam CC3000e Camera
@ -2718,6 +2783,7 @@
0857 Logi Group Speakerphone 0857 Logi Group Speakerphone
085c C922 Pro Stream Webcam 085c C922 Pro Stream Webcam
085e BRIO Ultra HD Webcam 085e BRIO Ultra HD Webcam
086b BRIO 4K Stream Edition
0870 QuickCam Express 0870 QuickCam Express
0882 Logi Group Speakerphone 0882 Logi Group Speakerphone
0890 QuickCam Traveler 0890 QuickCam Traveler
@ -2829,10 +2895,12 @@
0a44 Headset H390 0a44 Headset H390
0a45 960 Headset 0a45 960 Headset
0a4d G430 Surround Sound Gaming Headset 0a4d G430 Surround Sound Gaming Headset
0a4f MINI BOOM
0a5b G933 Wireless Headset Dongle 0a5b G933 Wireless Headset Dongle
0a5d G933 Headset Battery Charger 0a5d G933 Headset Battery Charger
0a66 [G533 Wireless Headset Dongle] 0a66 [G533 Wireless Headset Dongle]
0a8f H390 headset with microphone 0a8f H390 headset with microphone
0a90 Zone Receiver
0aaa Logitech G PRO X Gaming Headset 0aaa Logitech G PRO X Gaming Headset
0b02 C-UV35 [Bluetooth Mini-Receiver] (HID proxy mode) 0b02 C-UV35 [Bluetooth Mini-Receiver] (HID proxy mode)
8801 Video Camera 8801 Video Camera
@ -2912,6 +2980,7 @@
c080 G303 Gaming Mouse c080 G303 Gaming Mouse
c083 G403 Prodigy Gaming Mouse c083 G403 Prodigy Gaming Mouse
c084 G203 Gaming Mouse c084 G203 Gaming Mouse
c088 G Pro Wireless gaming mouse (wired mode)
c08b G502 SE HERO Gaming Mouse c08b G502 SE HERO Gaming Mouse
c092 G102/G203 LIGHTSYNC Gaming Mouse c092 G102/G203 LIGHTSYNC Gaming Mouse
c101 UltraX Media Remote c101 UltraX Media Remote
@ -3062,9 +3131,11 @@
c532 Unifying Receiver c532 Unifying Receiver
c534 Unifying Receiver c534 Unifying Receiver
c537 Cordless Mouse Receiver c537 Cordless Mouse Receiver
c539 Cordless Mouse Receiver c539 Lightspeed Receiver
c53a PowerPlay Wireless Charging System c53a PowerPlay Wireless Charging System
c53d G631 Keyboard c53d G631 Keyboard
c542 M185 compact wireless mouse
c548 Logi Bolt Receiver
c603 3Dconnexion Spacemouse Plus XT c603 3Dconnexion Spacemouse Plus XT
c605 3Dconnexion CADman c605 3Dconnexion CADman
c606 3Dconnexion Spacemouse Classic c606 3Dconnexion Spacemouse Classic
@ -3363,10 +3434,12 @@
aa05 DA45 aa05 DA45
ac01 Savi 7xx ac01 Savi 7xx
ad01 GameCom 777 5.1 Headset ad01 GameCom 777 5.1 Headset
af00 DA70
af01 DA80 af01 DA80
c008 Audio 655 DSP c008 Audio 655 DSP
c00e Blackwire C310 headset c00e Blackwire C310 headset
c03b HD1 c03b HD1
c053 Blackwire C5220 headset (remote control and 3.5mm audio adapter)
ca01 Calisto 800 Series ca01 Calisto 800 Series
da60 DA60 da60 DA60
0480 Toshiba America Inc 0480 Toshiba America Inc
@ -3457,6 +3530,7 @@
91d1 Sensor Hub 91d1 Sensor Hub
a171 ThermaData WiFi a171 ThermaData WiFi
a2e0 BMeasure instrument a2e0 BMeasure instrument
a43f inbed.io - Unified Controller (Gen 2)
df11 STM Device in DFU Mode df11 STM Device in DFU Mode
ff10 Swann ST56 Modem ff10 Swann ST56 Modem
0484 Specialix 0484 Specialix
@ -3481,6 +3555,9 @@
e042 Broadcom BCM20702 Bluetooth e042 Broadcom BCM20702 Bluetooth
e04d Atheros AR3012 Bluetooth e04d Atheros AR3012 Bluetooth
e055 BCM43142A0 broadcom bluetooth e055 BCM43142A0 broadcom bluetooth
e07a Broadcom BCM20702A1 Bluetooth
e0c8 MediaTek MT7921 Bluetooth
e0cd MediaTek Bluetooth Adapter
048a S-MOS Systems, Inc. 048a S-MOS Systems, Inc.
048c Alps Electric Ireland, Ltd 048c Alps Electric Ireland, Ltd
048d Integrated Technology Express, Inc. 048d Integrated Technology Express, Inc.
@ -3489,6 +3566,8 @@
1234 Chipsbank CBM2199 Flash Drive 1234 Chipsbank CBM2199 Flash Drive
1336 SD/MMC Cardreader 1336 SD/MMC Cardreader
1345 Multi Cardreader 1345 Multi Cardreader
5702 RGB LED Controller
6008 8291 RGB keyboard backlight controller
8297 IT8297 RGB LED Controller 8297 IT8297 RGB LED Controller
9006 IT9135 BDA Afatech DVB-T HDTV Dongle 9006 IT9135 BDA Afatech DVB-T HDTV Dongle
9009 Zolid HD DVD Maker 9009 Zolid HD DVD Maker
@ -3697,6 +3776,7 @@
0180 Hub Type P 0180 Hub Type P
0181 HID Monitor Controls 0181 HID Monitor Controls
04a7 Visioneer 04a7 Visioneer
0063 Visioneer DocuMate 152i
0100 StrobePro 0100 StrobePro
0101 Strobe Pro Scanner (1.01) 0101 Strobe Pro Scanner (1.01)
0102 StrobePro Scanner 0102 StrobePro Scanner
@ -4435,6 +4515,7 @@
32d4 Powershot ELPH 185 / IXUS 185 / IXY 200 32d4 Powershot ELPH 185 / IXUS 185 / IXY 200
32d5 PowerShot SX430 IS 32d5 PowerShot SX430 IS
32db SELPHY CP1300 32db SELPHY CP1300
3302 SELPHY CP1500
04aa DaeWoo Telecom, Ltd 04aa DaeWoo Telecom, Ltd
04ab Chromatic Research 04ab Chromatic Research
04ac Micro Audiometrics Corp. 04ac Micro Audiometrics Corp.
@ -4514,6 +4595,7 @@
0429 D5100 0429 D5100
042a D800 (ptp) 042a D800 (ptp)
0430 D7100 0430 D7100
0434 D610
0436 D810 0436 D810
043f D5600 043f D5600
0f03 PD-10 Wireless Printer Adapter 0f03 PD-10 Wireless Printer Adapter
@ -4530,6 +4612,7 @@
301a 2-port low-power hub 301a 2-port low-power hub
301b SK-8815 Keyboard 301b SK-8815 Keyboard
301c Enhanced Performance Keyboard 301c Enhanced Performance Keyboard
301e Keyboard with UltraNav (SK-8845RC)
3020 Enhanced Performance Keyboard 3020 Enhanced Performance Keyboard
3025 NetVista Full Width Keyboard 3025 NetVista Full Width Keyboard
3100 NetVista Mouse 3100 NetVista Mouse
@ -4803,6 +4886,7 @@
0893 EP-774A 0893 EP-774A
0e03 Thermal Receipt Printer [TM-T20] 0e03 Thermal Receipt Printer [TM-T20]
1114 XP-440 [Expression Home Small-in-One Printer] 1114 XP-440 [Expression Home Small-in-One Printer]
1115 ES-0133 [Expression Home XP-342]
1129 ET-4750 [WorkForce ET-4750 EcoTank All-in-One] 1129 ET-4750 [WorkForce ET-4750 EcoTank All-in-One]
1168 Workforce WF-7820/7840 Series 1168 Workforce WF-7820/7840 Series
04b9 Rainbow Technologies, Inc. 04b9 Rainbow Technologies, Inc.
@ -4943,6 +5027,7 @@
004b Keyboard 004b Keyboard
004f SK-9020 keyboard 004f SK-9020 keyboard
008a Acer Wired Mouse Model SM-9023 008a Acer Wired Mouse Model SM-9023
00f9 Multimedia Keyboard
1766 HID Monitor Controls 1766 HID Monitor Controls
2004 Bluetooth 4.0 [Broadcom BCM20702A0] 2004 Bluetooth 4.0 [Broadcom BCM20702A0]
2006 Broadcom BCM43142A0 Bluetooth Device 2006 Broadcom BCM43142A0 Bluetooth Device
@ -4957,6 +5042,7 @@
7025 HP HD Webcam 7025 HP HD Webcam
7046 TOSHIBA Web Camera - HD 7046 TOSHIBA Web Camera - HD
7054 HP HD Webcam 7054 HP HD Webcam
705a HD Webcam (960×540)
9304 Hub 9304 Hub
f01c TT1280DA DVB-T TV Tuner f01c TT1280DA DVB-T TV Tuner
04cb Fuji Photo Film Co., Ltd 04cb Fuji Photo Film Co., Ltd
@ -5092,6 +5178,8 @@
04d4 LSI Logic, Inc. 04d4 LSI Logic, Inc.
04d5 Forte Technologies, Inc. 04d5 Forte Technologies, Inc.
04d6 Mentor Graphics 04d6 Mentor Graphics
e301 Bio-Key TouchLock XL All Weather Keyless Bio-Lock with Fingerprint Recognition
e302 ZC3202 [4GB Green Book Digital Quran Reading Pen For Home Teaching Quran]
04d7 Oki Semiconductor 04d7 Oki Semiconductor
1be4 Bluetooth Device 1be4 Bluetooth Device
04d8 Microchip Technology, Inc. 04d8 Microchip Technology, Inc.
@ -5102,6 +5190,7 @@
0032 PICkit1 0032 PICkit1
0033 PICkit2 0033 PICkit2
0036 PICkit Serial Analyzer 0036 PICkit Serial Analyzer
00dd MCP2221(a) UART/I2C Bridge
00e0 PIC32 Starter Board 00e0 PIC32 Starter Board
04cd 28Cxxx EEPROM Programmer 04cd 28Cxxx EEPROM Programmer
0a04 AGP LIN Serial Analyzer 0a04 AGP LIN Serial Analyzer
@ -5117,6 +5206,9 @@
9015 ICD 4 In-Circuit Debugger 9015 ICD 4 In-Circuit Debugger
c001 PicoLCD 20x4 c001 PicoLCD 20x4
e11c TL866CS EEPROM Programmer [MiniPRO] e11c TL866CS EEPROM Programmer [MiniPRO]
e72e YuanCon
e7ee travisgeis.com Bike Light
ec72 Joystick with Rotary Switch Creative Electronics Ltd
ed16 BeamiRC 2.0 CNC remote controller analoge ed16 BeamiRC 2.0 CNC remote controller analoge
edb4 micro PLC (ATSAMD51G19A) [Black Brix ECU II] edb4 micro PLC (ATSAMD51G19A) [Black Brix ECU II]
edb5 ATMEGA32U4 [Black Brix ECU] edb5 ATMEGA32U4 [Black Brix ECU]
@ -5142,6 +5234,8 @@
0006 Wired Keyboard (78/79 key) [RPI Wired Keyboard 5] 0006 Wired Keyboard (78/79 key) [RPI Wired Keyboard 5]
0022 Portable Keyboard 0022 Portable Keyboard
0129 Keyboard [KBPV8000] 0129 Keyboard [KBPV8000]
0169 Keyboard
0198 Keyboard
0348 Keyboard 0348 Keyboard
0407 Keyboard [TEX Shinobi] 0407 Keyboard [TEX Shinobi]
048e Optical Mouse 048e Optical Mouse
@ -5565,7 +5659,7 @@
685c GT-I9250 Phone [Galaxy Nexus] (Mass storage mode) 685c GT-I9250 Phone [Galaxy Nexus] (Mass storage mode)
685d GT-I9100 Phone [Galaxy S II] (Download mode) 685d GT-I9100 Phone [Galaxy S II] (Download mode)
685e GT-I9100 / GT-C3350 Phones (USB Debugging mode) 685e GT-I9100 / GT-C3350 Phones (USB Debugging mode)
6860 Galaxy A5 (MTP) 6860 Galaxy series, misc. (MTP mode)
6863 Galaxy series, misc. (tethering mode) 6863 Galaxy series, misc. (tethering mode)
6864 GT-I9070 (network tethering, USB debugging enabled) 6864 GT-I9070 (network tethering, USB debugging enabled)
6865 Galaxy (PTP mode) 6865 Galaxy (PTP mode)
@ -5723,6 +5817,8 @@
b5db HP Webcam b5db HP Webcam
b604 Integrated Camera (1280x720@30) b604 Integrated Camera (1280x720@30)
b681 ThinkPad T490 Webcam b681 ThinkPad T490 Webcam
b71a Integrated IR Camera
b76b SunplusIT Inc [HP HD Camera]
04f3 Elan Microelectronics Corp. 04f3 Elan Microelectronics Corp.
000a Touchscreen 000a Touchscreen
0103 ActiveJet K-2024 Multimedia Keyboard 0103 ActiveJet K-2024 Multimedia Keyboard
@ -5740,6 +5836,7 @@
0381 Touchscreen 0381 Touchscreen
04a0 Dream Cheeky Stress/Panic Button 04a0 Dream Cheeky Stress/Panic Button
0c28 fingerprint sensor [FeinTech FPS00200] 0c28 fingerprint sensor [FeinTech FPS00200]
0c3d Elan:Fingerprint
2234 Touchscreen 2234 Touchscreen
04f4 Harting Elektronik, Inc. 04f4 Harting Elektronik, Inc.
04f5 Fujitsu-ICL Systems, Inc. 04f5 Fujitsu-ICL Systems, Inc.
@ -6004,6 +6101,7 @@
0240 MFC-J950DN 0240 MFC-J950DN
0245 MFC-9560CDW 0245 MFC-9560CDW
0248 DCP-7055 scanner/printer 0248 DCP-7055 scanner/printer
024a DCP-7065DN
024e MFC-7460DN 024e MFC-7460DN
0253 DCP-J125 0253 DCP-J125
0254 DCP-J315W 0254 DCP-J315W
@ -6280,6 +6378,7 @@
2043 QL-710W Label Printer 2043 QL-710W Label Printer
2044 QL-720NW Label Printer 2044 QL-720NW Label Printer
204d QL-720NW Label Printer (mass storage mode) 204d QL-720NW Label Printer (mass storage mode)
2060 PT-E550W P-touch Label Printer
2061 PT-P700 P-touch Label Printer 2061 PT-P700 P-touch Label Printer
2064 PT-P700 P-touch Label Printer RemovableDisk 2064 PT-P700 P-touch Label Printer RemovableDisk
2074 PT-D600 P-touch Label Printer 2074 PT-D600 P-touch Label Printer
@ -6603,6 +6702,7 @@
0535 LIH TZU Electric Co., Ltd 0535 LIH TZU Electric Co., Ltd
0536 Hand Held Products (Welch Allyn, Inc.) 0536 Hand Held Products (Welch Allyn, Inc.)
01a0 PDT 01a0 PDT
01ca IT4800 Area Imager
0537 Inventec Corp. 0537 Inventec Corp.
0538 Caldera International, Inc. (SCO) 0538 Caldera International, Inc. (SCO)
0539 Shyh Shiun Terminals Co., Ltd 0539 Shyh Shiun Terminals Co., Ltd
@ -6876,7 +6976,9 @@
0485 MHS-PM5 HD camcorder 0485 MHS-PM5 HD camcorder
04cb WALKMAN NWZ-E354 04cb WALKMAN NWZ-E354
0541 DSC-HX100V [Cybershot Digital Still Camera] 0541 DSC-HX100V [Cybershot Digital Still Camera]
0568 DSC-H100 in Mass Storage mode
05c4 DualShock 4 [CUH-ZCT1x] 05c4 DualShock 4 [CUH-ZCT1x]
0643 DSC-H100 in PTP/MTP mode
0689 Walkman NWZ-B173F 0689 Walkman NWZ-B173F
06bb WALKMAN NWZ-F805 06bb WALKMAN NWZ-F805
06c3 RC-S380 06c3 RC-S380
@ -6890,7 +6992,9 @@
088c Portable Headphone Amplifier 088c Portable Headphone Amplifier
08b7 ILCE-6000 (aka Alpha-6000) in MTP mode 08b7 ILCE-6000 (aka Alpha-6000) in MTP mode
094e ILCE-6000 (aka Alpha-6000) in PC Remote mode 094e ILCE-6000 (aka Alpha-6000) in PC Remote mode
098d Walkman NWZ-B183F
0994 ILCE-6000 (aka Alpha-6000) in charging mode 0994 ILCE-6000 (aka Alpha-6000) in charging mode
09c2 D33021 Storage
09cc DualShock 4 [CUH-ZCT2x] 09cc DualShock 4 [CUH-ZCT2x]
0ba0 Dualshock4 Wireless Adaptor 0ba0 Dualshock4 Wireless Adaptor
0bb5 Headset MDR-1000X 0bb5 Headset MDR-1000X
@ -7261,8 +7365,12 @@
039d DTH-W1320 [MobileStudio Pro 16] internal hub 039d DTH-W1320 [MobileStudio Pro 16] internal hub
03aa DTH-W1620 [MobileStudio Pro 16] tablet 03aa DTH-W1620 [MobileStudio Pro 16] tablet
03ac DTH-W1620 [MobileStudio Pro 16] touchscreen 03ac DTH-W1620 [MobileStudio Pro 16] touchscreen
03b2 DTH167 [Cintiq Pro 16] tablet
03b3 DTH167 [Cintiq Pro 16] touchscreen
03c5 CTL-4100WL [Intuos BT (S)] 03c5 CTL-4100WL [Intuos BT (S)]
03c7 CTL-6100WL [Intuos BT (M)] 03c7 CTL-6100WL [Intuos BT (M)]
03dc PTH-460 [Intuos Pro (S)] tablet
03dd PTH-460 [Intuos Pro BT (S)] tablet
0400 PenPartner 4x5 0400 PenPartner 4x5
4001 TPC4001 4001 TPC4001
4004 TPC4004 4004 TPC4004
@ -7436,6 +7544,7 @@
1300 SoftK56 Data Fax Voice CARP 1300 SoftK56 Data Fax Voice CARP
1301 Modem Enumerator 1301 Modem Enumerator
1328 TrendNet TFM-561 modem 1328 TrendNet TFM-561 modem
1340 CX93010 ACF Modem
1804 HP Dock Audio 1804 HP Dock Audio
2000 SoftGate 802.11 Adapter 2000 SoftGate 802.11 Adapter
2002 SoftGate 802.11 Adapter 2002 SoftGate 802.11 Adapter
@ -7564,9 +7673,10 @@
057e Nintendo Co., Ltd 057e Nintendo Co., Ltd
0300 USB-EXI Adapter (GCP-2000) 0300 USB-EXI Adapter (GCP-2000)
0304 RVT-H Reader 0304 RVT-H Reader
0305 Broadcom BCM2045A Bluetooth Radio [Nintendo Wii] 0305 Broadcom BCM2045A Bluetooth Radio [Nintendo Wii/Wii U]
0306 Wii Remote Controller RVL-003 0306 Wii Remote Controller RVL-003
0337 Wii U GameCube Controller Adapter 0337 Wii U GameCube Controller Adapter
0341 DRH GamePad Host [Nintendo Wii U]
2000 Switch 2000 Switch
2006 Joy-Con L 2006 Joy-Con L
2007 Joy-Con R 2007 Joy-Con R
@ -7816,6 +7926,7 @@
0304 U2SCX-LVD (SCSI Converter) 0304 U2SCX-LVD (SCSI Converter)
b000 REX-USB60 b000 REX-USB60
b020 REX-USB60F b020 REX-USB60F
b022 RTX-USB60F
0585 FlashPoint Technology, Inc. 0585 FlashPoint Technology, Inc.
0001 Digital Camera 0001 Digital Camera
0002 Digital Camera 0002 Digital Camera
@ -8049,6 +8160,7 @@
106b Rugged Mini HDD 106b Rugged Mini HDD
106d Porsche Design Mobile Drive 106d Porsche Design Mobile Drive
106e Porsche Design Desktop Drive 106e Porsche Design Desktop Drive
1093 Rugged
1094 Rugged THB 1094 Rugged THB
1095 Rugged 1095 Rugged
a601 HardDrive a601 HardDrive
@ -8081,6 +8193,7 @@
0003 CVA124E Cable Voice Adapter (WDM) 0003 CVA124E Cable Voice Adapter (WDM)
0004 CVA122E Cable Voice Adapter (WDM) 0004 CVA122E Cable Voice Adapter (WDM)
0008 STA1520 Tuning Adapter 0008 STA1520 Tuning Adapter
0009 Console
0a00 Integrated Management Controller Hub 0a00 Integrated Management Controller Hub
0a01 Virtual Keyboard/Mouse 0a01 Virtual Keyboard/Mouse
0a02 Virtual Mass Storage 0a02 Virtual Mass Storage
@ -8091,7 +8204,7 @@
4002 Bluetooth Headset Series 2 4002 Bluetooth Headset Series 2
4003 Bluetooth Headset Series 2 in DFU mode 4003 Bluetooth Headset Series 2 in DFU mode
400d SoundLink Color II speaker in DFU mode 400d SoundLink Color II speaker in DFU mode
40fe SoundLink Color II speaker 40fe SoundLink Color II / Flex
bc50 SoundLink Wireless Mobile speaker bc50 SoundLink Wireless Mobile speaker
bc51 SoundLink Wireless Mobile speaker in DFU mode bc51 SoundLink Wireless Mobile speaker in DFU mode
05a8 Spacetec IMC Corp. 05a8 Spacetec IMC Corp.
@ -8208,6 +8321,8 @@
1003 Hub in Pro Keyboard [Mitsumi, A1048] 1003 Hub in Pro Keyboard [Mitsumi, A1048]
1006 Hub in Aluminum Keyboard 1006 Hub in Aluminum Keyboard
1008 Mini DisplayPort to Dual-Link DVI Adapter 1008 Mini DisplayPort to Dual-Link DVI Adapter
1009 iBus Hub
100c Nova Hub
1101 Speakers 1101 Speakers
1105 Audio in LED Cinema Display 1105 Audio in LED Cinema Display
1107 Thunderbolt Display Audio 1107 Thunderbolt Display Audio
@ -8251,18 +8366,24 @@
1299 iPod Touch 3.Gen 1299 iPod Touch 3.Gen
129a iPad 129a iPad
129c iPhone 4(CDMA) 129c iPhone 4(CDMA)
129d iPhone
129e iPod Touch 4.Gen 129e iPod Touch 4.Gen
129f iPad 2 129f iPad 2
12a0 iPhone 4S 12a0 iPhone 4S
12a1 iPhone
12a2 iPad 2 (3G; 64GB) 12a2 iPad 2 (3G; 64GB)
12a3 iPad 2 (CDMA) 12a3 iPad 2 (CDMA)
12a4 iPad 3 (wifi) 12a4 iPad 3 (wifi)
12a5 iPad 3 (CDMA) 12a5 iPad 3 (CDMA)
12a6 iPad 3 (3G, 16 GB) 12a6 iPad 3 (3G, 16 GB)
12a8 iPhone 5/5C/5S/6/SE 12a7 TV Device
12a8 iPhone 5/5C/5S/6/SE/7/8/X
12a9 iPad 2 12a9 iPad 2
12aa iPod Touch 5.Gen [A1421] 12aa iPod Touch 5.Gen [A1421]
12ab iPad 4/Mini1 12ab iPad 4/Mini1
12ac iPhone
12af Watch
12b0 HomePod
1300 iPod Shuffle 1300 iPod Shuffle
1301 iPod Shuffle 2.Gen 1301 iPod Shuffle 2.Gen
1302 iPod Shuffle 3.Gen 1302 iPod Shuffle 3.Gen
@ -8273,7 +8394,12 @@
1398 Smart Battery Case 1398 Smart Battery Case
1401 Modem 1401 Modem
1402 Ethernet Adapter [A1277] 1402 Ethernet Adapter [A1277]
1460 Digital AV Multiport Adapter
1461 VGA Multiport Adapter
1463 HDMI Adapter
1500 SuperDrive [A1379] 1500 SuperDrive [A1379]
1624 Nova
1625 iBus
8005 OHCI Root Hub Simulation 8005 OHCI Root Hub Simulation
8006 EHCI Root Hub Simulation 8006 EHCI Root Hub Simulation
8007 XHCI Root Hub USB 2.0 Simulation 8007 XHCI Root Hub USB 2.0 Simulation
@ -8301,6 +8427,7 @@
8286 Bluetooth Host Controller 8286 Bluetooth Host Controller
8289 Bluetooth Host Controller 8289 Bluetooth Host Controller
828c Bluetooth Host Controller 828c Bluetooth Host Controller
828d Bluetooth Host Controller
8290 Bluetooth Host Controller 8290 Bluetooth Host Controller
8300 Built-in iSight (no firmware loaded) 8300 Built-in iSight (no firmware loaded)
8403 Internal Memory Card Reader 8403 Internal Memory Card Reader
@ -8440,6 +8567,7 @@
03b1 Webcam 03b1 Webcam
03bc HP Wide Vision HD Integrated Webcam 03bc HP Wide Vision HD Integrated Webcam
03cb HP Wide Vision HD Integrated Webcam 03cb HP Wide Vision HD Integrated Webcam
03d2 HP TrueVision HD Camera
0403 Webcam 0403 Webcam
041b HP 2.0MP High Definition Webcam 041b HP 2.0MP High Definition Webcam
05c9 Semtech Corp. 05c9 Semtech Corp.
@ -8730,6 +8858,7 @@
b018 Multi-Card Reader b018 Multi-Card Reader
b047 SDHC Reader [RW047-7000] b047 SDHC Reader [RW047-7000]
b051 microSD RDR UHS-I Card Reader [LRWM03U-7000] b051 microSD RDR UHS-I Card Reader [LRWM03U-7000]
b054 Dual-Slot Reader [LRW400U]
ba02 Workflow CFR1 ba02 Workflow CFR1
ba0a Workflow DD512 ba0a Workflow DD512
c753 JumpDrive TwistTurn c753 JumpDrive TwistTurn
@ -8936,7 +9065,7 @@
00f2 Keyboard (Labtec Ultra Flat Keyboard) 00f2 Keyboard (Labtec Ultra Flat Keyboard)
1002 Mobius actioncam (webcam mode) 1002 Mobius actioncam (webcam mode)
6871 Mouse 6871 Mouse
8611 NTK96550 based camera 8611 NTK96550-based camera (mass storage mode)
0604 Jean Co., Ltd 0604 Jean Co., Ltd
0605 Anchor C&C Co., Ltd 0605 Anchor C&C Co., Ltd
0606 Royal Information Electronics Co., Ltd 0606 Royal Information Electronics Co., Ltd
@ -17502,7 +17631,7 @@
3940 external DVD burner ECD819-SU3 3940 external DVD burner ECD819-SU3
3960 INIC-3639 3960 INIC-3639
3e40 ZALMAN ZM-VE350 3e40 ZALMAN ZM-VE350
13fe Kingston Technology Company Inc. 13fe Phison Electronics Corp.
1a00 512MB/1GB Flash Drive 1a00 512MB/1GB Flash Drive
1a23 512MB Flash Drive 1a23 512MB Flash Drive
1d00 DataTraveler 2.0 1GB/4GB Flash Drive / Patriot Xporter 4GB Flash Drive 1d00 DataTraveler 2.0 1GB/4GB Flash Drive / Patriot Xporter 4GB Flash Drive
@ -23072,10 +23201,11 @@
0832 UT2000/UT3000 Digital Storage Oscilloscope 0832 UT2000/UT3000 Digital Storage Oscilloscope
595a IRTOUCHSYSTEMS Co. Ltd. 595a IRTOUCHSYSTEMS Co. Ltd.
0001 Touchscreen 0001 Touchscreen
5986 Acer, Inc 5986 Bison Electronics Inc.
0100 Orbicam 0100 Acer Orbicam
0101 USB2.0 Camera 0101 USB2.0 Camera
0102 Crystal Eye Webcam 0102 Acer Crystal Eye Webcam
0105 Acer Crystal Eye Webcam
0137 HP Webcam 0137 HP Webcam
0141 BisonCam, NB Pro 0141 BisonCam, NB Pro
0149 HP Webcam-101 0149 HP Webcam-101
@ -23083,7 +23213,7 @@
01a6 Lenovo Integrated Webcam 01a6 Lenovo Integrated Webcam
01a7 Lenovo Integrated Webcam 01a7 Lenovo Integrated Webcam
01a9 Lenovo Integrated Webcam 01a9 Lenovo Integrated Webcam
0200 OrbiCam 0200 Acer OrbiCam
0202 Fujitsu Webcam 0202 Fujitsu Webcam
0203 BisonCam NB Pro 1300 0203 BisonCam NB Pro 1300
0205 Lenovo EasyCamera 0205 Lenovo EasyCamera

View File

@ -270,7 +270,7 @@ cat MicCorUEFCA2011_2011-06-27.esl >> db.esl
# Optionally add Microsoft Corporation KEK CA 2011. Recommended if either of the # Optionally add Microsoft Corporation KEK CA 2011. Recommended if either of the
# Microsoft keys is used as the official UEFI revocation database is signed with this # Microsoft keys is used as the official UEFI revocation database is signed with this
# key. The revocation database can be updated with <citerefentry><refentrytitle>fwupdmgr</refentrytitle><manvolnum>1</manvolnum></citerefentry>. # key. The revocation database can be updated with <citerefentry project='man-pages'><refentrytitle>fwupdmgr</refentrytitle><manvolnum>1</manvolnum></citerefentry>.
cat MicCorKEKCA2011_2011-06-24.esl >> KEK.esl cat MicCorKEKCA2011_2011-06-24.esl >> KEK.esl
sign-efi-sig-list -c PK.crt -k PK.key PK PK.esl PK.auth sign-efi-sig-list -c PK.crt -k PK.key PK PK.esl PK.auth

View File

@ -1405,7 +1405,7 @@ After=sys-subsystem-net-devices-ens1.device</programlisting>
<orderedlist> <orderedlist>
<listitem><para>The user's home directory is bind mounted from the host into <listitem><para>The user's home directory is bind mounted from the host into
<filename>/run/hosts/home/</filename>.</para></listitem> <filename>/run/host/home/</filename>.</para></listitem>
<listitem><para>An additional UID/GID mapping is added that maps the host user's UID/GID to a <listitem><para>An additional UID/GID mapping is added that maps the host user's UID/GID to a
container UID/GID, allocated from the 60514…60577 range.</para></listitem> container UID/GID, allocated from the 60514…60577 range.</para></listitem>

View File

@ -131,6 +131,14 @@
all suitable TPM2 devices currently discovered.</para></listitem> all suitable TPM2 devices currently discovered.</para></listitem>
</varlistentry> </varlistentry>
<varlistentry>
<term><option>--graceful</option></term>
<listitem><para>If no TPM2 firmware, kernel subsystem, kernel driver or device support is found, exit
with exit status 0 (i.e. indicate success). If this is not specified any attempt to measure without a
TPM2 device will cause the invocation to fail.</para></listitem>
</varlistentry>
<xi:include href="standard-options.xml" xpointer="help" /> <xi:include href="standard-options.xml" xpointer="help" />
<xi:include href="standard-options.xml" xpointer="version" /> <xi:include href="standard-options.xml" xpointer="version" />

View File

@ -77,29 +77,16 @@
<varlistentry> <varlistentry>
<term>suspend-then-hibernate</term> <term>suspend-then-hibernate</term>
<listitem><para>A low power state where initially user.slice unit is freezed. <listitem>
If the hardware supports low-battery alarms (ACPI _BTP), then the system is <para>A low power state where the system is initially suspended (the state is stored in
first suspended (the state is stored in RAM) and then hibernates if the system RAM). If the system supports low-battery alarms (ACPI _BTP), then the system will be woken up by
is woken up by the hardware via ACPI low-battery signal. Unit user.slice is the ACPI low-battery signal and hibernated (the state is then stored on disk). Also, if not
thawed when system returns from hibernation. If the hardware does not support interrupted within the timespan specified by <varname>HibernateDelaySec=</varname> or the estimated
low-battery alarms (ACPI _BTP), then the system is suspended based on battery's timespan until the system battery charge level goes down to 5%, then the system will be woken up by the
current percentage capacity. If the current battery capacity is higher than 5%, the RTC alarm and hibernated. The estimated timespan is calculated from the change of the battery
system suspends for interval calculated using battery discharge rate per hour or capacity level after the time specified by <varname>SuspendEstimationSec=</varname> or when
<command>HibernateDelaySec=</command> the system is woken up from the suspend.</para>
if former is not available. </listitem>
Battery discharge rate per hour is stored in a file which is created after
initial suspend-resume cycle. The value is calculated using battery decreasing
charge level over a timespan for which system was suspended. For each battery
connected to the system, there is a unique entry. After RTC alarm wakeup from
suspend, battery discharge rate per hour is again estimated. If the current battery
charge level is equal to or less than 5%, the system will be hibernated (the state
is then stored on disk) else the system goes back to suspend for the interval
calculated using battery discharge rate per hour.
In case of manual wakeup, if the battery was discharged while the system was
suspended, the battery discharge rate is estimated and stored on the filesystem.
In case the system is woken up by the hardware via the ACPI low-battery signal,
then it hibernates.
</para></listitem>
</varlistentry> </varlistentry>
</variablelist> </variablelist>
@ -189,13 +176,28 @@
uses the value of <varname>SuspendState=</varname> when suspending and the value of <varname>HibernateState=</varname> when hibernating. uses the value of <varname>SuspendState=</varname> when suspending and the value of <varname>HibernateState=</varname> when hibernating.
</para></listitem> </para></listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term><varname>HibernateDelaySec=</varname></term> <term><varname>HibernateDelaySec=</varname></term>
<listitem><para>The amount of time the system spends in suspend mode
before the RTC alarm wakes the system, before the battery discharge rate <listitem>
can be estimated and used instead to calculate the suspension interval. <para>The amount of time the system spends in suspend mode before the system is
<citerefentry><refentrytitle>systemd-suspend-then-hibernate.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>. Defaults automatically put into hibernate mode. Only used by
to 2h.</para></listitem> <citerefentry><refentrytitle>systemd-suspend-then-hibernate.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>.
If the system has a battery, then defaults to the estimated timespan until the system battery charge level goes down to 5%.
If the system has no battery, then defaults to 2h.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><varname>SuspendEstimationSec=</varname></term>
<listitem>
<para>The RTC alarm will wake the system after the specified timespan to measure the system battery
capacity level and estimate battery discharging rate, which is used for estimating timespan until the system battery charge
level goes down to 5%. Only used by
<citerefentry><refentrytitle>systemd-suspend-then-hibernate.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>.
Defaults to 2h.</para></listitem>
</varlistentry> </varlistentry>
</variablelist> </variablelist>
</refsect1> </refsect1>

View File

@ -3113,7 +3113,13 @@ StandardInputData=V2XigLJyZSBubyBzdHJhbmdlcnMgdG8gbG92ZQpZb3Uga25vdyB0aGUgcnVsZX
authenticated credentials improves security as credentials are not stored in plaintext and only authenticated credentials improves security as credentials are not stored in plaintext and only
authenticated and decrypted into plaintext the moment a service requiring them is started. Moreover, authenticated and decrypted into plaintext the moment a service requiring them is started. Moreover,
credentials may be bound to the local hardware and installations, so that they cannot easily be credentials may be bound to the local hardware and installations, so that they cannot easily be
analyzed offline, or be generated externally.</para> analyzed offline, or be generated externally. When <varname>DevicePolicy=</varname> is set to
<literal>closed</literal> or <literal>strict</literal>, or set to <literal>auto</literal> and
<varname>DeviceAllow=</varname> is set, or <varname>PrivateDevices=</varname> is set, then this
setting adds <filename>/dev/tpmrm0</filename> with <constant>rw</constant> mode to
<varname>DeviceAllow=</varname>. See
<citerefentry><refentrytitle>systemd.resource-control</refentrytitle><manvolnum>5</manvolnum></citerefentry>
for the details about <varname>DevicePolicy=</varname> or <varname>DeviceAllow=</varname>.</para>
<para>The credential files/IPC sockets must be accessible to the service manager, but don't have to <para>The credential files/IPC sockets must be accessible to the service manager, but don't have to
be directly accessible to the unit's processes: the credential data is read and copied into separate, be directly accessible to the unit's processes: the credential data is read and copied into separate,

View File

@ -75,11 +75,11 @@
<term><varname>login.issue</varname></term> <term><varname>login.issue</varname></term>
<listitem> <listitem>
<para>The data of this credential is written to <para>The data of this credential is written to
<filename>/etc/issue.d/50-provision.conf</filename>, if the file doesn't exist <filename>/etc/issue.d/50-provision.conf</filename>, if the file doesn't exist yet.
yet. <citerefentry><refentrytitle>agetty</refentrytitle><manvolnum>8</manvolnum></citerefentry> <citerefentry project='man-pages'><refentrytitle>agetty</refentrytitle><manvolnum>8</manvolnum></citerefentry>
reads this file and shows its contents at the login prompt of terminal logins. See <citerefentry reads this file and shows its contents at the login prompt of terminal logins. See
project='man-pages'><refentrytitle>issue</refentrytitle><manvolnum>5</manvolnum></citerefentry> for <citerefentry project='man-pages'><refentrytitle>issue</refentrytitle><manvolnum>5</manvolnum></citerefentry>
details.</para> for details.</para>
<para>Consumed by <filename>/usr/lib/tmpfiles.d/provision.conf</filename>, see <para>Consumed by <filename>/usr/lib/tmpfiles.d/provision.conf</filename>, see
<citerefentry><refentrytitle>tmpfiles.d</refentrytitle><manvolnum>5</manvolnum></citerefentry>.</para> <citerefentry><refentrytitle>tmpfiles.d</refentrytitle><manvolnum>5</manvolnum></citerefentry>.</para>
@ -90,12 +90,11 @@
<term><varname>login.motd</varname></term> <term><varname>login.motd</varname></term>
<listitem> <listitem>
<para>The data of this credential is written to <filename>/etc/motd.d/50-provision.conf</filename>, <para>The data of this credential is written to <filename>/etc/motd.d/50-provision.conf</filename>,
if the file doesn't exist if the file doesn't exist yet.
yet. <citerefentry><refentrytitle>pam_motd</refentrytitle><manvolnum>8</manvolnum></citerefentry> <citerefentry project='man-pages'><refentrytitle>pam_motd</refentrytitle><manvolnum>8</manvolnum></citerefentry>
reads this file and shows its contents as "message of the day" during terminal logins. See reads this file and shows its contents as "message of the day" during terminal logins. See
<citerefentry <citerefentry project='man-pages'><refentrytitle>motd</refentrytitle><manvolnum>5</manvolnum></citerefentry>
project='man-pages'><refentrytitle>motd</refentrytitle><manvolnum>5</manvolnum></citerefentry> for for details.</para>
details.</para>
<para>Consumed by <filename>/usr/lib/tmpfiles.d/provision.conf</filename>, see <para>Consumed by <filename>/usr/lib/tmpfiles.d/provision.conf</filename>, see
<citerefentry><refentrytitle>tmpfiles.d</refentrytitle><manvolnum>5</manvolnum></citerefentry>.</para> <citerefentry><refentrytitle>tmpfiles.d</refentrytitle><manvolnum>5</manvolnum></citerefentry>.</para>
@ -106,9 +105,9 @@
<term><varname>network.hosts</varname></term> <term><varname>network.hosts</varname></term>
<listitem> <listitem>
<para>The data of this credential is written to <filename>/etc/hosts</filename>, if the file <para>The data of this credential is written to <filename>/etc/hosts</filename>, if the file
doesn't exist yet. See <citerefentry doesn't exist yet. See
project='man-pages'><refentrytitle>hosts</refentrytitle><manvolnum>5</manvolnum></citerefentry> for <citerefentry project='man-pages'><refentrytitle>hosts</refentrytitle><manvolnum>5</manvolnum></citerefentry>
details.</para> for details.</para>
<para>Consumed by <filename>/usr/lib/tmpfiles.d/provision.conf</filename>, see <para>Consumed by <filename>/usr/lib/tmpfiles.d/provision.conf</filename>, see
<citerefentry><refentrytitle>tmpfiles.d</refentrytitle><manvolnum>5</manvolnum></citerefentry>.</para> <citerefentry><refentrytitle>tmpfiles.d</refentrytitle><manvolnum>5</manvolnum></citerefentry>.</para>

View File

@ -90,7 +90,7 @@ A+ /path-or-glob/to/append/acls/recursively - - - - POSIX
<para><command>systemd-tmpfiles</command> uses this configuration to create volatile files and <para><command>systemd-tmpfiles</command> uses this configuration to create volatile files and
directories during boot and to do periodic cleanup afterwards. See directories during boot and to do periodic cleanup afterwards. See
<citerefentry><refentrytitle>systemd-tmpfiles</refentrytitle><manvolnum>5</manvolnum></citerefentry> for <citerefentry><refentrytitle>systemd-tmpfiles</refentrytitle><manvolnum>8</manvolnum></citerefentry> for
the description of <filename>systemd-tmpfiles-setup.service</filename>, the description of <filename>systemd-tmpfiles-setup.service</filename>,
<filename>systemd-tmpfiles-clean.service</filename>, and associated units.</para> <filename>systemd-tmpfiles-clean.service</filename>, and associated units.</para>

View File

@ -3,6 +3,7 @@
if conf.get('ENABLE_NETWORKD') == 1 if conf.get('ENABLE_NETWORKD') == 1
install_data('80-6rd-tunnel.network', install_data('80-6rd-tunnel.network',
'80-container-host0.network', '80-container-host0.network',
'80-container-vb.network',
'80-container-ve.network', '80-container-ve.network',
'80-container-vz.network', '80-container-vz.network',
'80-ethernet.network.example', '80-ethernet.network.example',

View File

@ -6,7 +6,7 @@ KERNEL!="event*", GOTO="evdev_end"
# Execute the match patterns below, from least-to-most specific. # Execute the match patterns below, from least-to-most specific.
# Device matching the modalias string (bustype, vendor, product, version, other properties) # Device matching the modalias string (bustype, vendor, product, version, other properties)
IMPORT{builtin}="hwdb --subsystem=input --lookup-prefix=evdev:", IMPORT{builtin}="hwdb --subsystem=input --lookup-prefix=evdev:", \
ENV{.HAVE_HWDB_PROPERTIES}="1" ENV{.HAVE_HWDB_PROPERTIES}="1"
# AT keyboard matching by the machine's DMI data # AT keyboard matching by the machine's DMI data

View File

@ -11,6 +11,7 @@ rules = [
'60-drm.rules', '60-drm.rules',
'60-evdev.rules', '60-evdev.rules',
'60-fido-id.rules', '60-fido-id.rules',
'60-infiniband.rules',
'60-input-id.rules', '60-input-id.rules',
'60-persistent-alsa.rules', '60-persistent-alsa.rules',
'60-persistent-input.rules', '60-persistent-input.rules',

View File

@ -31,11 +31,11 @@ items = [['busctl', ''],
['systemd-path', ''], ['systemd-path', ''],
['systemd-run', ''], ['systemd-run', ''],
['udevadm', ''], ['udevadm', ''],
['kernel-install', 'ENABLE_KERNEL_INSTALL'],
['bootctl', 'HAVE_GNU_EFI'], ['bootctl', 'HAVE_GNU_EFI'],
['coredumpctl', 'ENABLE_COREDUMP'], ['coredumpctl', 'ENABLE_COREDUMP'],
['homectl', 'ENABLE_HOMED'], ['homectl', 'ENABLE_HOMED'],
['hostnamectl', 'ENABLE_HOSTNAMED'], ['hostnamectl', 'ENABLE_HOSTNAMED'],
['kernel-install', 'ENABLE_KERNEL_INSTALL'],
['localectl', 'ENABLE_LOCALED'], ['localectl', 'ENABLE_LOCALED'],
['loginctl', 'ENABLE_LOGIND'], ['loginctl', 'ENABLE_LOGIND'],
['machinectl', 'ENABLE_MACHINED'], ['machinectl', 'ENABLE_MACHINED'],
@ -44,7 +44,9 @@ items = [['busctl', ''],
['portablectl', 'ENABLE_PORTABLED'], ['portablectl', 'ENABLE_PORTABLED'],
['resolvectl', 'ENABLE_RESOLVE'], ['resolvectl', 'ENABLE_RESOLVE'],
['systemd-cryptenroll', 'HAVE_LIBCRYPTSETUP'], ['systemd-cryptenroll', 'HAVE_LIBCRYPTSETUP'],
['systemd-dissect', 'HAVE_BLKID'],
['systemd-resolve', 'ENABLE_RESOLVE'], ['systemd-resolve', 'ENABLE_RESOLVE'],
['systemd-sysext', 'ENABLE_SYSEXT'],
['timedatectl', 'ENABLE_TIMEDATED']] ['timedatectl', 'ENABLE_TIMEDATED']]
foreach item : items foreach item : items

View File

@ -5,3 +5,4 @@ modifications are applied:
- btrfs.h: drop '__user' attributes - btrfs.h: drop '__user' attributes
- if.h: drop '#include <linux/compiler.h>' and '__user' attributes - if.h: drop '#include <linux/compiler.h>' and '__user' attributes
- stddef.h: drop '#include <linux/compiler_types.h>' - stddef.h: drop '#include <linux/compiler_types.h>'
- guard linux/fs.h include to avoid conflict with glibc 2.36

View File

@ -26,7 +26,9 @@ extern "C" {
#include <linux/types.h> #include <linux/types.h>
#include <linux/ioctl.h> #include <linux/ioctl.h>
#if WANT_LINUX_FS_H
#include <linux/fs.h> #include <linux/fs.h>
#endif
#define BTRFS_IOCTL_MAGIC 0x94 #define BTRFS_IOCTL_MAGIC 0x94
#define BTRFS_VOL_NAME_MAX 255 #define BTRFS_VOL_NAME_MAX 255

View File

@ -7,4 +7,5 @@ for i in *.h */*.h; do
curl --fail "https://raw.githubusercontent.com/torvalds/linux/master/include/uapi/linux/$i" -o "$i" curl --fail "https://raw.githubusercontent.com/torvalds/linux/master/include/uapi/linux/$i" -o "$i"
sed -r -i -e 's/__user //g' -e '/^#include <linux\/compiler(_types)?.h>/ d' "$i" sed -r -i -e 's/__user //g' -e '/^#include <linux\/compiler(_types)?.h>/ d' "$i"
sed -r -i 's/^(#include <linux\/fs\.h>)/#if WANT_LINUX_FS_H\n\1\n#endif/' "$i"
done done

View File

@ -368,6 +368,10 @@ int rename_process(const char name[]) {
strncpy(program_invocation_name, name, k); strncpy(program_invocation_name, name, k);
if (l > k) if (l > k)
truncated = true; truncated = true;
/* Also update the short name. */
char *p = strrchr(program_invocation_name, '/');
program_invocation_short_name = p ? p + 1 : program_invocation_name;
} }
/* Third step, completely replace the argv[] array the kernel maintains for us. This requires privileges, but /* Third step, completely replace the argv[] array the kernel maintains for us. This requires privileges, but

View File

@ -450,7 +450,9 @@ static const char *get_efi_arch(void) {
if (r == -ENOENT) if (r == -ENOENT)
return EFI_MACHINE_TYPE_NAME; return EFI_MACHINE_TYPE_NAME;
if (r < 0) { if (r < 0) {
log_warning_errno(r, "Error reading EFI firmware word size, assuming '%i': %m", __WORDSIZE); log_warning_errno(r,
"Error reading EFI firmware word size, assuming machine type '%s': %m",
EFI_MACHINE_TYPE_NAME);
return EFI_MACHINE_TYPE_NAME; return EFI_MACHINE_TYPE_NAME;
} }
@ -460,9 +462,9 @@ static const char *get_efi_arch(void) {
return "ia32"; return "ia32";
log_warning( log_warning(
"Unknown EFI firmware word size '%s', using default word size '%i' instead.", "Unknown EFI firmware word size '%s', using machine type '%s'.",
platform_size, platform_size,
__WORDSIZE); EFI_MACHINE_TYPE_NAME);
#endif #endif
return EFI_MACHINE_TYPE_NAME; return EFI_MACHINE_TYPE_NAME;
@ -1419,7 +1421,7 @@ static int install_entry_token(void) {
r = write_string_file("/etc/kernel/entry-token", arg_entry_token, WRITE_STRING_FILE_CREATE|WRITE_STRING_FILE_ATOMIC|WRITE_STRING_FILE_MKDIR_0755); r = write_string_file("/etc/kernel/entry-token", arg_entry_token, WRITE_STRING_FILE_CREATE|WRITE_STRING_FILE_ATOMIC|WRITE_STRING_FILE_MKDIR_0755);
if (r < 0) if (r < 0)
return log_error_errno(r, "Failed to write entry token '%s' to /etc/kernel/entry-token", arg_entry_token); return log_error_errno(r, "Failed to write entry token '%s' to /etc/kernel/entry-token: %m", arg_entry_token);
return 0; return 0;
} }

View File

@ -32,7 +32,7 @@ static uint64_t ticks_read(void) {
#elif defined(__aarch64__) #elif defined(__aarch64__)
static uint64_t ticks_read(void) { static uint64_t ticks_read(void) {
uint64_t val; uint64_t val;
__asm__ volatile ("mrs %0, cntpct_el0" : "=r" (val)); asm volatile("mrs %0, cntvct_el0" : "=r"(val));
return val; return val;
} }
#else #else
@ -44,7 +44,7 @@ static uint64_t ticks_read(void) {
#if defined(__aarch64__) #if defined(__aarch64__)
static uint64_t ticks_freq(void) { static uint64_t ticks_freq(void) {
uint64_t freq; uint64_t freq;
__asm__ volatile ("mrs %0, cntfrq_el0": "=r" (freq)); asm volatile("mrs %0, cntfrq_el0" : "=r"(freq));
return freq; return freq;
} }
#else #else

View File

@ -270,10 +270,22 @@ char16_t *xstr8_to_path(const char *str8) {
} }
void mangle_stub_cmdline(char16_t *cmdline) { void mangle_stub_cmdline(char16_t *cmdline) {
char16_t *p = cmdline;
for (; *cmdline != '\0'; cmdline++) for (; *cmdline != '\0'; cmdline++)
/* Convert ASCII control characters to spaces. */ /* Convert ASCII control characters to spaces. */
if (*cmdline <= 0x1F) if (*cmdline <= 0x1F)
*cmdline = ' '; *cmdline = ' ';
/* chomp the trailing whitespaces */
while (cmdline != p) {
--cmdline;
if (*cmdline != ' ')
break;
*cmdline = '\0';
}
} }
EFI_STATUS file_read(EFI_FILE *dir, const char16_t *name, UINTN off, UINTN size, char **ret, UINTN *ret_size) { EFI_STATUS file_read(EFI_FILE *dir, const char16_t *name, UINTN off, UINTN size, char **ret, UINTN *ret_size) {

View File

@ -12,6 +12,7 @@
#include "tpm-pcr.h" #include "tpm-pcr.h"
#include "tpm2-util.h" #include "tpm2-util.h"
static bool arg_graceful = false;
static char *arg_tpm2_device = NULL; static char *arg_tpm2_device = NULL;
static char **arg_banks = NULL; static char **arg_banks = NULL;
@ -33,6 +34,7 @@ static int help(int argc, char *argv[], void *userdata) {
" --version Print version\n" " --version Print version\n"
" --bank=DIGEST Select TPM bank (SHA1, SHA256)\n" " --bank=DIGEST Select TPM bank (SHA1, SHA256)\n"
" --tpm2-device=PATH Use specified TPM2 device\n" " --tpm2-device=PATH Use specified TPM2 device\n"
" --graceful Exit gracefully if no TPM2 device is found\n"
"\nSee the %2$s for details.\n", "\nSee the %2$s for details.\n",
program_invocation_short_name, program_invocation_short_name,
link, link,
@ -49,6 +51,7 @@ static int parse_argv(int argc, char *argv[]) {
ARG_VERSION = 0x100, ARG_VERSION = 0x100,
ARG_BANK, ARG_BANK,
ARG_TPM2_DEVICE, ARG_TPM2_DEVICE,
ARG_GRACEFUL,
}; };
static const struct option options[] = { static const struct option options[] = {
@ -56,6 +59,7 @@ static int parse_argv(int argc, char *argv[]) {
{ "version", no_argument, NULL, ARG_VERSION }, { "version", no_argument, NULL, ARG_VERSION },
{ "bank", required_argument, NULL, ARG_BANK }, { "bank", required_argument, NULL, ARG_BANK },
{ "tpm2-device", required_argument, NULL, ARG_TPM2_DEVICE }, { "tpm2-device", required_argument, NULL, ARG_TPM2_DEVICE },
{ "graceful", no_argument, NULL, ARG_GRACEFUL },
{} {}
}; };
@ -103,6 +107,10 @@ static int parse_argv(int argc, char *argv[]) {
break; break;
} }
case ARG_GRACEFUL:
arg_graceful = true;
break;
case '?': case '?':
return -EINVAL; return -EINVAL;
@ -172,6 +180,11 @@ static int run(int argc, char *argv[]) {
if (isempty(word)) if (isempty(word))
return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "String to measure cannot be empty, refusing."); return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "String to measure cannot be empty, refusing.");
if (arg_graceful && tpm2_support() != TPM2_SUPPORT_FULL) {
log_notice("No complete TPM2 support detected, exiting gracefully.");
return EXIT_SUCCESS;
}
length = strlen(word); length = strlen(word);
/* Skip logic if sd-stub is not used, after all PCR 11 might have a very different purpose then. */ /* Skip logic if sd-stub is not used, after all PCR 11 might have a very different purpose then. */

View File

@ -39,16 +39,20 @@ struct {
SEC("lsm/file_open") SEC("lsm/file_open")
int BPF_PROG(restrict_filesystems, struct file *file, int ret) int BPF_PROG(restrict_filesystems, struct file *file, int ret)
{ {
unsigned long magic_number; unsigned long raw_magic_number;
uint64_t cgroup_id; uint64_t cgroup_id;
uint32_t *value, *magic_map, zero = 0, *is_allow; uint32_t *value, *magic_map, magic_number, zero = 0, *is_allow;
/* ret is the return value from the previous BPF program or 0 if it's /* ret is the return value from the previous BPF program or 0 if it's
* the first hook */ * the first hook */
if (ret != 0) if (ret != 0)
return ret; return ret;
BPF_CORE_READ_INTO(&magic_number, file, f_inode, i_sb, s_magic); BPF_CORE_READ_INTO(&raw_magic_number, file, f_inode, i_sb, s_magic);
/* super_block.s_magic is unsigned long, but magic_map keys are
* uint32_t. Using s_magic as-is would fail on big-endian systems,
* which have 64-bit unsigned long. So cast it. */
magic_number = (uint32_t)raw_magic_number;
cgroup_id = bpf_get_current_cgroup_id(); cgroup_id = bpf_get_current_cgroup_id();

View File

@ -2635,25 +2635,24 @@ _pure_ static bool service_can_reload(Unit *u) {
return !!s->exec_command[SERVICE_EXEC_RELOAD]; return !!s->exec_command[SERVICE_EXEC_RELOAD];
} }
static unsigned service_exec_command_index(Unit *u, ServiceExecCommand id, ExecCommand *current) { static unsigned service_exec_command_index(Unit *u, ServiceExecCommand id, const ExecCommand *current) {
Service *s = SERVICE(u); Service *s = SERVICE(u);
unsigned idx = 0; unsigned idx = 0;
ExecCommand *first, *c;
assert(s); assert(s);
assert(id >= 0); assert(id >= 0);
assert(id < _SERVICE_EXEC_COMMAND_MAX); assert(id < _SERVICE_EXEC_COMMAND_MAX);
first = s->exec_command[id]; const ExecCommand *first = s->exec_command[id];
/* Figure out where we are in the list by walking back to the beginning */ /* Figure out where we are in the list by walking back to the beginning */
for (c = current; c != first; c = c->command_prev) for (const ExecCommand *c = current; c != first; c = c->command_prev)
idx++; idx++;
return idx; return idx;
} }
static int service_serialize_exec_command(Unit *u, FILE *f, ExecCommand *command) { static int service_serialize_exec_command(Unit *u, FILE *f, const ExecCommand *command) {
_cleanup_free_ char *args = NULL, *p = NULL; _cleanup_free_ char *args = NULL, *p = NULL;
Service *s = SERVICE(u); Service *s = SERVICE(u);
const char *type, *key; const char *type, *key;
@ -2708,7 +2707,16 @@ static int service_serialize_exec_command(Unit *u, FILE *f, ExecCommand *command
return log_oom(); return log_oom();
key = strjoina(type, "-command"); key = strjoina(type, "-command");
(void) serialize_item_format(f, key, "%s %u %s %s", service_exec_command_to_string(id), idx, p, args);
/* We use '+1234' instead of '1234' to mark the last command in a sequence.
* This is used in service_deserialize_exec_command(). */
(void) serialize_item_format(
f, key,
"%s %s%u %s %s",
service_exec_command_to_string(id),
command->command_next ? "" : "+",
idx,
p, args);
return 0; return 0;
} }
@ -2819,7 +2827,7 @@ int service_deserialize_exec_command(
Service *s = SERVICE(u); Service *s = SERVICE(u);
int r; int r;
unsigned idx = 0, i; unsigned idx = 0, i;
bool control, found = false; bool control, found = false, last = false;
ServiceExecCommand id = _SERVICE_EXEC_COMMAND_INVALID; ServiceExecCommand id = _SERVICE_EXEC_COMMAND_INVALID;
ExecCommand *command = NULL; ExecCommand *command = NULL;
_cleanup_free_ char *path = NULL; _cleanup_free_ char *path = NULL;
@ -2860,9 +2868,15 @@ int service_deserialize_exec_command(
state = STATE_EXEC_COMMAND_INDEX; state = STATE_EXEC_COMMAND_INDEX;
break; break;
case STATE_EXEC_COMMAND_INDEX: case STATE_EXEC_COMMAND_INDEX:
/* PID 1234 is serialized as either '1234' or '+1234'. The second form is used to
* mark the last command in a sequence. We warn if the deserialized command doesn't
* match what we have loaded from the unit, but we don't need to warn if that is the
* last command. */
r = safe_atou(arg, &idx); r = safe_atou(arg, &idx);
if (r < 0) if (r < 0)
return r; return r;
last = arg[0] == '+';
state = STATE_EXEC_COMMAND_PATH; state = STATE_EXEC_COMMAND_PATH;
break; break;
@ -2907,6 +2921,8 @@ int service_deserialize_exec_command(
s->control_command_id = id; s->control_command_id = id;
} else if (command) } else if (command)
s->main_command = command; s->main_command = command;
else if (last)
log_unit_debug(u, "Current command vanished from the unit file.");
else else
log_unit_warning(u, "Current command vanished from the unit file, execution of the command list won't be resumed."); log_unit_warning(u, "Current command vanished from the unit file, execution of the command list won't be resumed.");

View File

@ -1092,6 +1092,20 @@ fail:
return r; return r;
} }
static bool shall_stop_on_isolate(Transaction *tr, Unit *u) {
assert(tr);
assert(u);
if (u->ignore_on_isolate)
return false;
/* Is there already something listed for this? */
if (hashmap_get(tr->jobs, u))
return false;
return true;
}
int transaction_add_isolate_jobs(Transaction *tr, Manager *m) { int transaction_add_isolate_jobs(Transaction *tr, Manager *m) {
Unit *u; Unit *u;
char *k; char *k;
@ -1101,20 +1115,27 @@ int transaction_add_isolate_jobs(Transaction *tr, Manager *m) {
assert(m); assert(m);
HASHMAP_FOREACH_KEY(u, k, m->units) { HASHMAP_FOREACH_KEY(u, k, m->units) {
Unit *o;
/* ignore aliases */ /* Ignore aliases */
if (u->id != k) if (u->id != k)
continue; continue;
if (u->ignore_on_isolate) /* No need to stop inactive units */
continue;
/* No need to stop inactive jobs */
if (UNIT_IS_INACTIVE_OR_FAILED(unit_active_state(u)) && !u->job) if (UNIT_IS_INACTIVE_OR_FAILED(unit_active_state(u)) && !u->job)
continue; continue;
/* Is there already something listed for this? */ if (!shall_stop_on_isolate(tr, u))
if (hashmap_get(tr->jobs, u)) continue;
/* Keep units that are triggered by units we want to keep around. */
bool keep = false;
UNIT_FOREACH_DEPENDENCY(o, u, UNIT_ATOM_TRIGGERED_BY)
if (!shall_stop_on_isolate(tr, o)) {
keep = true;
break;
}
if (keep)
continue; continue;
r = transaction_add_job_and_dependencies(tr, JOB_STOP, u, tr->anchor_job, true, false, false, false, NULL); r = transaction_add_job_and_dependencies(tr, JOB_STOP, u, tr->anchor_job, true, false, false, false, NULL);

View File

@ -4157,6 +4157,16 @@ int unit_patch_contexts(Unit *u) {
if (r < 0) if (r < 0)
return r; return r;
} }
/* If there are encrypted credentials we might need to access the TPM. */
ExecLoadCredential *cred;
HASHMAP_FOREACH(cred, ec->load_credentials)
if (cred->encrypted) {
r = cgroup_add_device_allow(cc, "/dev/tpmrm0", "rw");
if (r < 0)
return r;
break;
}
} }
} }
@ -4488,7 +4498,9 @@ static int log_kill(pid_t pid, int sig, void *userdata) {
/* Don't log about processes marked with brackets, under the assumption that these are temporary processes /* Don't log about processes marked with brackets, under the assumption that these are temporary processes
only, like for example systemd's own PAM stub process. */ only, like for example systemd's own PAM stub process. */
if (comm && comm[0] == '(') if (comm && comm[0] == '(')
return 0; /* Although we didn't log anything, as this callback is used in unit_kill_context we must return 1
* here to let the manager know that a process was killed. */
return 1;
log_unit_notice(userdata, log_unit_notice(userdata,
"Killing process " PID_FMT " (%s) with signal SIG%s.", "Killing process " PID_FMT " (%s) with signal SIG%s.",

View File

@ -169,16 +169,13 @@ int enroll_tpm2(struct crypt_device *cd,
log_debug_errno(r, "Failed to read TPM2 PCR public key, proceeding without: %m"); log_debug_errno(r, "Failed to read TPM2 PCR public key, proceeding without: %m");
pubkey_pcr_mask = 0; pubkey_pcr_mask = 0;
} else { } else if (signature_path) {
/* Also try to load the signature JSON object, to verify that our enrollment will work. This is optional however. */ /* Also try to load the signature JSON object, to verify that our enrollment will work.
* This is optional however, skip it if it's not explicitly provided. */
r = tpm2_load_pcr_signature(signature_path, &signature_json); r = tpm2_load_pcr_signature(signature_path, &signature_json);
if (r < 0) { if (r < 0)
if (signature_path || r != -ENOENT)
return log_debug_errno(r, "Failed to read TPM PCR signature: %m"); return log_debug_errno(r, "Failed to read TPM PCR signature: %m");
log_debug_errno(r, "Failed to read TPM2 PCR signature, proceeding without: %m");
}
} }
r = tpm2_seal(device, r = tpm2_seal(device,

View File

@ -1,7 +1,8 @@
/* SPDX-License-Identifier: LGPL-2.1-or-later */ /* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once #pragma once
#include "stdint.h" #include <stddef.h>
#include <stdint.h>
#define SHA256_DIGEST_SIZE 32 #define SHA256_DIGEST_SIZE 32

View File

@ -46,7 +46,8 @@ int import_fork_tar_x(const char *path, pid_t *ret) {
"--ignore-zeros", "--ignore-zeros",
"--numeric-owner", "--numeric-owner",
"-C", path, "-C", path,
"-px", "-pxf",
"-",
"--xattrs", "--xattrs",
"--xattrs-include=*", "--xattrs-include=*",
use_selinux ? "--selinux" : "--no-selinux", use_selinux ? "--selinux" : "--no-selinux",

View File

@ -390,7 +390,7 @@ static int dhcp_server_send_udp(sd_dhcp_server *server, be32_t destination,
assert(server); assert(server);
assert(server->fd >= 0); assert(server->fd >= 0);
assert(message); assert(message);
assert(len > sizeof(DHCPMessage)); assert(len >= sizeof(DHCPMessage));
if (server->bind_to_interface) { if (server->bind_to_interface) {
msg.msg_control = &control; msg.msg_control = &control;

View File

@ -80,24 +80,24 @@ BUS_ERROR_MAP_ELF_REGISTER const sd_bus_error_map bus_common_errors[] = {
SD_BUS_ERROR_MAP(BUS_ERROR_NO_SUCH_DNSSD_SERVICE, ENOENT), SD_BUS_ERROR_MAP(BUS_ERROR_NO_SUCH_DNSSD_SERVICE, ENOENT),
SD_BUS_ERROR_MAP(BUS_ERROR_DNSSD_SERVICE_EXISTS, EEXIST), SD_BUS_ERROR_MAP(BUS_ERROR_DNSSD_SERVICE_EXISTS, EEXIST),
SD_BUS_ERROR_MAP(_BUS_ERROR_DNS "FORMERR", EBADMSG), SD_BUS_ERROR_MAP(BUS_ERROR_DNS_FORMERR, EBADMSG),
SD_BUS_ERROR_MAP(_BUS_ERROR_DNS "SERVFAIL", EHOSTDOWN), SD_BUS_ERROR_MAP(BUS_ERROR_DNS_SERVFAIL, EHOSTDOWN),
SD_BUS_ERROR_MAP(_BUS_ERROR_DNS "NXDOMAIN", ENXIO), SD_BUS_ERROR_MAP(BUS_ERROR_DNS_NXDOMAIN, ENXIO),
SD_BUS_ERROR_MAP(_BUS_ERROR_DNS "NOTIMP", ENOSYS), SD_BUS_ERROR_MAP(BUS_ERROR_DNS_NOTIMP, ENOSYS),
SD_BUS_ERROR_MAP(_BUS_ERROR_DNS "REFUSED", EACCES), SD_BUS_ERROR_MAP(BUS_ERROR_DNS_REFUSED, EACCES),
SD_BUS_ERROR_MAP(_BUS_ERROR_DNS "YXDOMAIN", EEXIST), SD_BUS_ERROR_MAP(BUS_ERROR_DNS_YXDOMAIN, EEXIST),
SD_BUS_ERROR_MAP(_BUS_ERROR_DNS "YRRSET", EEXIST), SD_BUS_ERROR_MAP(BUS_ERROR_DNS_YRRSET, EEXIST),
SD_BUS_ERROR_MAP(_BUS_ERROR_DNS "NXRRSET", ENOENT), SD_BUS_ERROR_MAP(BUS_ERROR_DNS_NXRRSET, ENOENT),
SD_BUS_ERROR_MAP(_BUS_ERROR_DNS "NOTAUTH", EACCES), SD_BUS_ERROR_MAP(BUS_ERROR_DNS_NOTAUTH, EACCES),
SD_BUS_ERROR_MAP(_BUS_ERROR_DNS "NOTZONE", EREMOTE), SD_BUS_ERROR_MAP(BUS_ERROR_DNS_NOTZONE, EREMOTE),
SD_BUS_ERROR_MAP(_BUS_ERROR_DNS "BADVERS", EBADMSG), SD_BUS_ERROR_MAP(BUS_ERROR_DNS_BADVERS, EBADMSG),
SD_BUS_ERROR_MAP(_BUS_ERROR_DNS "BADKEY", EKEYREJECTED), SD_BUS_ERROR_MAP(BUS_ERROR_DNS_BADKEY, EKEYREJECTED),
SD_BUS_ERROR_MAP(_BUS_ERROR_DNS "BADTIME", EBADMSG), SD_BUS_ERROR_MAP(BUS_ERROR_DNS_BADTIME, EBADMSG),
SD_BUS_ERROR_MAP(_BUS_ERROR_DNS "BADMODE", EBADMSG), SD_BUS_ERROR_MAP(BUS_ERROR_DNS_BADMODE, EBADMSG),
SD_BUS_ERROR_MAP(_BUS_ERROR_DNS "BADNAME", EBADMSG), SD_BUS_ERROR_MAP(BUS_ERROR_DNS_BADNAME, EBADMSG),
SD_BUS_ERROR_MAP(_BUS_ERROR_DNS "BADALG", EBADMSG), SD_BUS_ERROR_MAP(BUS_ERROR_DNS_BADALG, EBADMSG),
SD_BUS_ERROR_MAP(_BUS_ERROR_DNS "BADTRUNC", EBADMSG), SD_BUS_ERROR_MAP(BUS_ERROR_DNS_BADTRUNC, EBADMSG),
SD_BUS_ERROR_MAP(_BUS_ERROR_DNS "BADCOOKIE", EBADR), SD_BUS_ERROR_MAP(BUS_ERROR_DNS_BADCOOKIE, EBADR),
SD_BUS_ERROR_MAP(BUS_ERROR_NO_SUCH_TRANSFER, ENXIO), SD_BUS_ERROR_MAP(BUS_ERROR_NO_SUCH_TRANSFER, ENXIO),
SD_BUS_ERROR_MAP(BUS_ERROR_TRANSFER_IN_PROGRESS, EBUSY), SD_BUS_ERROR_MAP(BUS_ERROR_TRANSFER_IN_PROGRESS, EBUSY),

View File

@ -79,7 +79,26 @@
#define BUS_ERROR_STUB_LOOP "org.freedesktop.resolve1.StubLoop" #define BUS_ERROR_STUB_LOOP "org.freedesktop.resolve1.StubLoop"
#define BUS_ERROR_NO_SUCH_DNSSD_SERVICE "org.freedesktop.resolve1.NoSuchDnssdService" #define BUS_ERROR_NO_SUCH_DNSSD_SERVICE "org.freedesktop.resolve1.NoSuchDnssdService"
#define BUS_ERROR_DNSSD_SERVICE_EXISTS "org.freedesktop.resolve1.DnssdServiceExists" #define BUS_ERROR_DNSSD_SERVICE_EXISTS "org.freedesktop.resolve1.DnssdServiceExists"
#define _BUS_ERROR_DNS "org.freedesktop.resolve1.DnsError." #define _BUS_ERROR_DNS "org.freedesktop.resolve1.DnsError."
#define BUS_ERROR_DNS_FORMERR _BUS_ERROR_DNS "FORMERR"
#define BUS_ERROR_DNS_SERVFAIL _BUS_ERROR_DNS "SERVFAIL"
#define BUS_ERROR_DNS_NXDOMAIN _BUS_ERROR_DNS "NXDOMAIN"
#define BUS_ERROR_DNS_NOTIMP _BUS_ERROR_DNS "NOTIMP"
#define BUS_ERROR_DNS_REFUSED _BUS_ERROR_DNS "REFUSED"
#define BUS_ERROR_DNS_YXDOMAIN _BUS_ERROR_DNS "YXDOMAIN"
#define BUS_ERROR_DNS_YRRSET _BUS_ERROR_DNS "YRRSET"
#define BUS_ERROR_DNS_NXRRSET _BUS_ERROR_DNS "NXRRSET"
#define BUS_ERROR_DNS_NOTAUTH _BUS_ERROR_DNS "NOTAUTH"
#define BUS_ERROR_DNS_NOTZONE _BUS_ERROR_DNS "NOTZONE"
#define BUS_ERROR_DNS_BADVERS _BUS_ERROR_DNS "BADVERS"
#define BUS_ERROR_DNS_BADKEY _BUS_ERROR_DNS "BADKEY"
#define BUS_ERROR_DNS_BADTIME _BUS_ERROR_DNS "BADTIME"
#define BUS_ERROR_DNS_BADMODE _BUS_ERROR_DNS "BADMODE"
#define BUS_ERROR_DNS_BADNAME _BUS_ERROR_DNS "BADNAME"
#define BUS_ERROR_DNS_BADALG _BUS_ERROR_DNS "BADALG"
#define BUS_ERROR_DNS_BADTRUNC _BUS_ERROR_DNS "BADTRUNC"
#define BUS_ERROR_DNS_BADCOOKIE _BUS_ERROR_DNS "BADCOOKIE"
#define BUS_ERROR_NO_SUCH_TRANSFER "org.freedesktop.import1.NoSuchTransfer" #define BUS_ERROR_NO_SUCH_TRANSFER "org.freedesktop.import1.NoSuchTransfer"
#define BUS_ERROR_TRANSFER_IN_PROGRESS "org.freedesktop.import1.TransferInProgress" #define BUS_ERROR_TRANSFER_IN_PROGRESS "org.freedesktop.import1.TransferInProgress"

View File

@ -14,6 +14,8 @@
#include "list.h" #include "list.h"
#include "set.h" #include "set.h"
#define JOURNAL_FILES_MAX 7168u
typedef struct Match Match; typedef struct Match Match;
typedef struct Location Location; typedef struct Location Location;
typedef struct Directory Directory; typedef struct Directory Directory;

View File

@ -42,8 +42,6 @@
#include "strv.h" #include "strv.h"
#include "syslog-util.h" #include "syslog-util.h"
#define JOURNAL_FILES_MAX 7168
#define JOURNAL_FILES_RECHECK_USEC (2 * USEC_PER_SEC) #define JOURNAL_FILES_RECHECK_USEC (2 * USEC_PER_SEC)
/* The maximum size of variable values we'll expand in catalog entries. We bind this to PATH_MAX for now, as /* The maximum size of variable values we'll expand in catalog entries. We bind this to PATH_MAX for now, as

View File

@ -3,7 +3,6 @@
#include "sd-netlink.h" #include "sd-netlink.h"
#include "fd-util.h" #include "fd-util.h"
#include "format-util.h"
#include "io-util.h" #include "io-util.h"
#include "memory-util.h" #include "memory-util.h"
#include "netlink-internal.h" #include "netlink-internal.h"
@ -15,7 +14,7 @@
int rtnl_set_link_name(sd_netlink **rtnl, int ifindex, const char *name) { int rtnl_set_link_name(sd_netlink **rtnl, int ifindex, const char *name) {
_cleanup_(sd_netlink_message_unrefp) sd_netlink_message *message = NULL; _cleanup_(sd_netlink_message_unrefp) sd_netlink_message *message = NULL;
_cleanup_strv_free_ char **alternative_names = NULL; _cleanup_strv_free_ char **alternative_names = NULL;
char old_name[IF_NAMESIZE] = {}; bool altname_deleted = false;
int r; int r;
assert(rtnl); assert(rtnl);
@ -36,31 +35,32 @@ int rtnl_set_link_name(sd_netlink **rtnl, int ifindex, const char *name) {
return log_debug_errno(r, "Failed to remove '%s' from alternative names on network interface %i: %m", return log_debug_errno(r, "Failed to remove '%s' from alternative names on network interface %i: %m",
name, ifindex); name, ifindex);
r = format_ifname(ifindex, old_name); altname_deleted = true;
if (r < 0)
return log_debug_errno(r, "Failed to get current name of network interface %i: %m", ifindex);
} }
r = sd_rtnl_message_new_link(*rtnl, &message, RTM_SETLINK, ifindex); r = sd_rtnl_message_new_link(*rtnl, &message, RTM_SETLINK, ifindex);
if (r < 0) if (r < 0)
return r; goto fail;
r = sd_netlink_message_append_string(message, IFLA_IFNAME, name); r = sd_netlink_message_append_string(message, IFLA_IFNAME, name);
if (r < 0) if (r < 0)
return r; goto fail;
r = sd_netlink_call(*rtnl, message, 0, NULL); r = sd_netlink_call(*rtnl, message, 0, NULL);
if (r < 0) if (r < 0)
return r; goto fail;
if (!isempty(old_name)) {
r = rtnl_set_link_alternative_names(rtnl, ifindex, STRV_MAKE(old_name));
if (r < 0)
log_debug_errno(r, "Failed to set '%s' as an alternative name on network interface %i, ignoring: %m",
old_name, ifindex);
}
return 0; return 0;
fail:
if (altname_deleted) {
int q = rtnl_set_link_alternative_names(rtnl, ifindex, STRV_MAKE(name));
if (q < 0)
log_debug_errno(q, "Failed to restore '%s' as an alternative name on network interface %i, ignoring: %m",
name, ifindex);
}
return r;
} }
int rtnl_set_link_properties( int rtnl_set_link_properties(

View File

@ -8,6 +8,7 @@
#include <linux/if_macsec.h> #include <linux/if_macsec.h>
#include <linux/l2tp.h> #include <linux/l2tp.h>
#include <linux/nl80211.h> #include <linux/nl80211.h>
#include <unistd.h>
#include "sd-netlink.h" #include "sd-netlink.h"
@ -16,6 +17,7 @@
#include "macro.h" #include "macro.h"
#include "netlink-genl.h" #include "netlink-genl.h"
#include "netlink-internal.h" #include "netlink-internal.h"
#include "netlink-util.h"
#include "socket-util.h" #include "socket-util.h"
#include "stdio-util.h" #include "stdio-util.h"
#include "string-util.h" #include "string-util.h"
@ -667,6 +669,30 @@ static void test_genl(void) {
} }
} }
static void test_rtnl_set_link_name(sd_netlink *rtnl, int ifindex) {
_cleanup_strv_free_ char **alternative_names = NULL;
int r;
log_debug("/* %s */", __func__);
if (geteuid() != 0)
return (void) log_tests_skipped("not root");
/* Test that the new name (which is currently an alternative name) is
* restored as an alternative name on error. Create an error by using
* an invalid device name, namely one that exceeds IFNAMSIZ
* (alternative names can exceed IFNAMSIZ, but not regular names). */
r = rtnl_set_link_alternative_names(&rtnl, ifindex, STRV_MAKE("testlongalternativename"));
if (r == -EPERM)
return (void) log_tests_skipped("missing required capabilities");
assert_se(r >= 0);
assert_se(rtnl_set_link_name(&rtnl, ifindex, "testlongalternativename") == -EINVAL);
assert_se(rtnl_get_link_alternative_names(&rtnl, ifindex, &alternative_names) >= 0);
assert_se(strv_contains(alternative_names, "testlongalternativename"));
assert_se(rtnl_delete_link_alternative_names(&rtnl, ifindex, STRV_MAKE("testlongalternativename")) >= 0);
}
int main(void) { int main(void) {
sd_netlink *rtnl; sd_netlink *rtnl;
sd_netlink_message *m; sd_netlink_message *m;
@ -698,6 +724,7 @@ int main(void) {
test_pipe(if_loopback); test_pipe(if_loopback);
test_event_loop(if_loopback); test_event_loop(if_loopback);
test_link_configure(rtnl, if_loopback); test_link_configure(rtnl, if_loopback);
test_rtnl_set_link_name(rtnl, if_loopback);
test_get_addresses(rtnl); test_get_addresses(rtnl);
test_message_link_bridge(rtnl); test_message_link_bridge(rtnl);

View File

@ -334,15 +334,18 @@ static int dhcp4_request_route_auto(
route->gw = IN_ADDR_NULL; route->gw = IN_ADDR_NULL;
route->prefsrc.in = address; route->prefsrc.in = address;
} else { } else if (in4_addr_is_null(gw)) {
if (in4_addr_is_null(gw)) {
log_link_debug(link, "DHCP: requested route destination "IPV4_ADDRESS_FMT_STR"/%u is not in the assigned network " log_link_debug(link, "DHCP: requested route destination "IPV4_ADDRESS_FMT_STR"/%u is not in the assigned network "
IPV4_ADDRESS_FMT_STR"/%u, but no gateway is specified, ignoring.", IPV4_ADDRESS_FMT_STR"/%u, but no gateway is specified, using 'link' scope.",
IPV4_ADDRESS_FMT_VAL(route->dst.in), route->dst_prefixlen, IPV4_ADDRESS_FMT_VAL(route->dst.in), route->dst_prefixlen,
IPV4_ADDRESS_FMT_VAL(prefix), prefixlen); IPV4_ADDRESS_FMT_VAL(prefix), prefixlen);
return 0;
}
route->scope = RT_SCOPE_LINK;
route->gw_family = AF_UNSPEC;
route->gw = IN_ADDR_NULL;
route->prefsrc.in = address;
} else {
r = dhcp4_request_route_to_gateway(link, gw); r = dhcp4_request_route_to_gateway(link, gw);
if (r < 0) if (r < 0)
return r; return r;

View File

@ -858,7 +858,8 @@ int link_object_find(sd_bus *bus, const char *path, const char *interface, void
if (r < 0) if (r < 0)
return 0; return 0;
if (streq(interface, "org.freedesktop.network1.DHCPServer") && !link->dhcp_server) if (streq(interface, "org.freedesktop.network1.DHCPServer") &&
(!link->dhcp_server || sd_dhcp_server_is_in_relay_mode(link->dhcp_server)))
return 0; return 0;
*found = link; *found = link;

View File

@ -394,7 +394,7 @@ int bind_user_setup(
r = userns_mkdir(root, "/run/host/home", 0755, 0, 0); r = userns_mkdir(root, "/run/host/home", 0755, 0, 0);
if (r < 0) if (r < 0)
return log_error_errno(r, "Failed to create /run/host/userdb: %m"); return log_error_errno(r, "Failed to create /run/host/home: %m");
r = userns_mkdir(root, "/run/host/userdb", 0755, 0, 0); r = userns_mkdir(root, "/run/host/userdb", 0755, 0, 0);
if (r < 0) if (r < 0)

View File

@ -1716,7 +1716,16 @@ static int parse_argv(int argc, char *argv[]) {
* --directory=". */ * --directory=". */
arg_directory = TAKE_PTR(arg_template); arg_directory = TAKE_PTR(arg_template);
arg_caps_retain = (arg_caps_retain | plus | (arg_private_network ? UINT64_C(1) << CAP_NET_ADMIN : 0)) & ~minus; arg_caps_retain |= plus;
arg_caps_retain |= arg_private_network ? UINT64_C(1) << CAP_NET_ADMIN : 0;
/* If we're not unsharing the network namespace and are unsharing the user namespace, we won't have
* permissions to bind ports in the container, so let's drop the CAP_NET_BIND_SERVICE capability to
* indicate that. */
if (!arg_private_network && arg_userns_mode != USER_NAMESPACE_NO && arg_uid_shift > 0)
arg_caps_retain &= ~(UINT64_C(1) << CAP_NET_BIND_SERVICE);
arg_caps_retain &= ~minus;
/* Make sure to parse environment before we reset the settings mask below */ /* Make sure to parse environment before we reset the settings mask below */
r = parse_environment(); r = parse_environment();

View File

@ -345,10 +345,11 @@ enum nss_status _nss_myhostname_gethostbyname3_r(
return NSS_STATUS_UNAVAIL; return NSS_STATUS_UNAVAIL;
} }
if (is_localhost(name)) {
if (af == AF_INET6 && !socket_ipv6_is_enabled()) if (af == AF_INET6 && !socket_ipv6_is_enabled())
goto not_found; goto not_found;
if (is_localhost(name)) {
canonical = "localhost"; canonical = "localhost";
local_address_ipv4 = htobe32(INADDR_LOOPBACK); local_address_ipv4 = htobe32(INADDR_LOOPBACK);
@ -460,7 +461,7 @@ enum nss_status _nss_myhostname_gethostbyaddr2_r(
} else { } else {
assert(af == AF_INET6); assert(af == AF_INET6);
if (socket_ipv6_is_enabled()) if (!socket_ipv6_is_enabled())
goto not_found; goto not_found;
if (memcmp(addr, LOCALADDRESS_IPV6, 16) == 0) { if (memcmp(addr, LOCALADDRESS_IPV6, 16) == 0) {

View File

@ -4793,7 +4793,7 @@ static int resolve_copy_blocks_auto(
continue; continue;
} }
if (major(sl) == 0) { if (major(sl) == 0) {
log_debug_errno(r, "Device backing %s is special, ignoring: %m", q); log_debug("Device backing %s is special, ignoring.", q);
continue; continue;
} }
@ -4869,11 +4869,12 @@ static int context_open_copy_block_paths(
"Copying from block device node is not permitted in --image=/--root= mode, refusing."); "Copying from block device node is not permitted in --image=/--root= mode, refusing.");
} else if (p->copy_blocks_auto) { } else if (p->copy_blocks_auto) {
dev_t devno; dev_t devno = 0; /* Fake initialization to appease gcc. */
r = resolve_copy_blocks_auto(p->type_uuid, root, restrict_devno, &devno, &uuid); r = resolve_copy_blocks_auto(p->type_uuid, root, restrict_devno, &devno, &uuid);
if (r < 0) if (r < 0)
return r; return r;
assert(devno != 0);
source_fd = r = device_open_from_devnum(S_IFBLK, devno, O_RDONLY|O_CLOEXEC|O_NONBLOCK, &opened); source_fd = r = device_open_from_devnum(S_IFBLK, devno, O_RDONLY|O_CLOEXEC|O_NONBLOCK, &opened);
if (r < 0) if (r < 0)

View File

@ -230,6 +230,13 @@ static void print_ifindex_comment(int printed_so_far, int ifindex) {
ansi_grey(), ifname, ansi_normal()); ansi_grey(), ifname, ansi_normal());
} }
static int resolve_host_error(const char *name, int r, const sd_bus_error *error) {
if (sd_bus_error_has_name(error, BUS_ERROR_DNS_NXDOMAIN))
return log_error_errno(r, "%s: %s", name, bus_error_message(error, r));
return log_error_errno(r, "%s: resolve call failed: %s", name, bus_error_message(error, r));
}
static int resolve_host(sd_bus *bus, const char *name) { static int resolve_host(sd_bus *bus, const char *name) {
_cleanup_(sd_bus_message_unrefp) sd_bus_message *req = NULL, *reply = NULL; _cleanup_(sd_bus_message_unrefp) sd_bus_message *req = NULL, *reply = NULL;
_cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL; _cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
@ -255,7 +262,7 @@ static int resolve_host(sd_bus *bus, const char *name) {
r = sd_bus_call(bus, req, SD_RESOLVED_QUERY_TIMEOUT_USEC, &error, &reply); r = sd_bus_call(bus, req, SD_RESOLVED_QUERY_TIMEOUT_USEC, &error, &reply);
if (r < 0) if (r < 0)
return log_error_errno(r, "%s: resolve call failed: %s", name, bus_error_message(&error, r)); return resolve_host_error(name, r, &error);
ts = now(CLOCK_MONOTONIC) - ts; ts = now(CLOCK_MONOTONIC) - ts;
@ -1200,12 +1207,19 @@ static int reset_server_features(int argc, char **argv, void *userdata) {
return 0; return 0;
} }
static int read_dns_server_one(sd_bus_message *m, bool with_ifindex, bool extended, char **ret) { static int read_dns_server_one(
sd_bus_message *m,
bool with_ifindex, /* read "ifindex" reply that also carries an interface index */
bool extended, /* read "extended" reply, i.e. with port number and server name */
bool only_global, /* suppress entries with an (non-loopback) ifindex set (i.e. which are specific to some interface) */
char **ret) {
_cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL; _cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
_cleanup_free_ char *pretty = NULL; _cleanup_free_ char *pretty = NULL;
int ifindex, family, r, k;
union in_addr_union a; union in_addr_union a;
const char *name = NULL; const char *name = NULL;
int32_t ifindex = 0;
int family, r, k;
uint16_t port = 0; uint16_t port = 0;
assert(m); assert(m);
@ -1245,8 +1259,8 @@ static int read_dns_server_one(sd_bus_message *m, bool with_ifindex, bool extend
return 1; return 1;
} }
if (with_ifindex && ifindex != 0) { if (only_global && ifindex > 0 && ifindex != LOOPBACK_IFINDEX) {
/* only show the global ones here */ /* This one has an (non-loopback) ifindex set, and we were told to suppress those. Hence do so. */
*ret = NULL; *ret = NULL;
return 1; return 1;
} }
@ -1275,7 +1289,7 @@ static int map_link_dns_servers_internal(sd_bus *bus, const char *member, sd_bus
for (;;) { for (;;) {
_cleanup_free_ char *pretty = NULL; _cleanup_free_ char *pretty = NULL;
r = read_dns_server_one(m, false, extended, &pretty); r = read_dns_server_one(m, /* with_ifindex= */ false, extended, /* only_global= */ false, &pretty);
if (r < 0) if (r < 0)
return r; return r;
if (r == 0) if (r == 0)
@ -1308,14 +1322,14 @@ static int map_link_current_dns_server(sd_bus *bus, const char *member, sd_bus_m
assert(m); assert(m);
assert(userdata); assert(userdata);
return read_dns_server_one(m, false, false, userdata); return read_dns_server_one(m, /* with_ifindex= */ false, /* extended= */ false, /* only_global= */ false, userdata);
} }
static int map_link_current_dns_server_ex(sd_bus *bus, const char *member, sd_bus_message *m, sd_bus_error *error, void *userdata) { static int map_link_current_dns_server_ex(sd_bus *bus, const char *member, sd_bus_message *m, sd_bus_error *error, void *userdata) {
assert(m); assert(m);
assert(userdata); assert(userdata);
return read_dns_server_one(m, false, true, userdata); return read_dns_server_one(m, /* with_ifindex= */ false, /* extended= */ true, /* only_global= */ false, userdata);
} }
static int read_domain_one(sd_bus_message *m, bool with_ifindex, char **ret) { static int read_domain_one(sd_bus_message *m, bool with_ifindex, char **ret) {
@ -1740,7 +1754,7 @@ static int map_global_dns_servers_internal(sd_bus *bus, const char *member, sd_b
for (;;) { for (;;) {
_cleanup_free_ char *pretty = NULL; _cleanup_free_ char *pretty = NULL;
r = read_dns_server_one(m, true, extended, &pretty); r = read_dns_server_one(m, /* with_ifindex= */ true, extended, /* only_global= */ true, &pretty);
if (r < 0) if (r < 0)
return r; return r;
if (r == 0) if (r == 0)
@ -1770,17 +1784,11 @@ static int map_global_dns_servers_ex(sd_bus *bus, const char *member, sd_bus_mes
} }
static int map_global_current_dns_server(sd_bus *bus, const char *member, sd_bus_message *m, sd_bus_error *error, void *userdata) { static int map_global_current_dns_server(sd_bus *bus, const char *member, sd_bus_message *m, sd_bus_error *error, void *userdata) {
assert(m); return read_dns_server_one(m, /* with_ifindex= */ true, /* extended= */ false, /* only_global= */ true, userdata);
assert(userdata);
return read_dns_server_one(m, true, false, userdata);
} }
static int map_global_current_dns_server_ex(sd_bus *bus, const char *member, sd_bus_message *m, sd_bus_error *error, void *userdata) { static int map_global_current_dns_server_ex(sd_bus *bus, const char *member, sd_bus_message *m, sd_bus_error *error, void *userdata) {
assert(m); return read_dns_server_one(m, /* with_ifindex= */ true, /* extended= */ true, /* only_global= */ true, userdata);
assert(userdata);
return read_dns_server_one(m, true, true, userdata);
} }
static int map_global_domains(sd_bus *bus, const char *member, sd_bus_message *m, sd_bus_error *error, void *userdata) { static int map_global_domains(sd_bus *bus, const char *member, sd_bus_message *m, sd_bus_error *error, void *userdata) {

View File

@ -159,7 +159,7 @@ static int reply_query_state(DnsQuery *q) {
case DNS_TRANSACTION_NOT_FOUND: case DNS_TRANSACTION_NOT_FOUND:
/* We return this as NXDOMAIN. This is only generated when a host doesn't implement LLMNR/TCP, and we /* We return this as NXDOMAIN. This is only generated when a host doesn't implement LLMNR/TCP, and we
* thus quickly know that we cannot resolve an in-addr.arpa or ip6.arpa address. */ * thus quickly know that we cannot resolve an in-addr.arpa or ip6.arpa address. */
return reply_method_errorf(q, _BUS_ERROR_DNS "NXDOMAIN", "'%s' not found", dns_query_string(q)); return reply_method_errorf(q, BUS_ERROR_DNS_NXDOMAIN, "'%s' not found", dns_query_string(q));
case DNS_TRANSACTION_NO_SOURCE: case DNS_TRANSACTION_NO_SOURCE:
return reply_method_errorf(q, BUS_ERROR_NO_SOURCE, "All suitable resolution sources turned off"); return reply_method_errorf(q, BUS_ERROR_NO_SOURCE, "All suitable resolution sources turned off");
@ -176,7 +176,7 @@ static int reply_query_state(DnsQuery *q) {
return 0; return 0;
if (q->answer_rcode == DNS_RCODE_NXDOMAIN) if (q->answer_rcode == DNS_RCODE_NXDOMAIN)
sd_bus_error_setf(&error, _BUS_ERROR_DNS "NXDOMAIN", "'%s' not found", dns_query_string(q)); sd_bus_error_setf(&error, BUS_ERROR_DNS_NXDOMAIN, "Name '%s' not found", dns_query_string(q));
else { else {
const char *rc, *n; const char *rc, *n;

View File

@ -3,6 +3,7 @@
#include <net/if_arp.h> #include <net/if_arp.h>
#include <netinet/tcp.h> #include <netinet/tcp.h>
#include "capability-util.h"
#include "errno-util.h" #include "errno-util.h"
#include "fd-util.h" #include "fd-util.h"
#include "missing_network.h" #include "missing_network.h"
@ -1237,6 +1238,12 @@ static int manager_dns_stub_fd_extra(Manager *m, DnsStubListenerExtra *l, int ty
if (*event_source) if (*event_source)
return sd_event_source_get_io_fd(*event_source); return sd_event_source_get_io_fd(*event_source);
if (!have_effective_cap(CAP_NET_BIND_SERVICE) && dns_stub_listener_extra_port(l) < 1024) {
log_warning("Missing CAP_NET_BIND_SERVICE capability, not creating extra stub listener on port %hu.",
dns_stub_listener_extra_port(l));
return 0;
}
if (l->family == AF_INET) if (l->family == AF_INET)
sa = (union sockaddr_union) { sa = (union sockaddr_union) {
.in.sin_family = l->family, .in.sin_family = l->family,
@ -1332,6 +1339,8 @@ int manager_dns_stub_start(Manager *m) {
if (m->dns_stub_listener_mode == DNS_STUB_LISTENER_NO) if (m->dns_stub_listener_mode == DNS_STUB_LISTENER_NO)
log_debug("Not creating stub listener."); log_debug("Not creating stub listener.");
else if (!have_effective_cap(CAP_NET_BIND_SERVICE))
log_warning("Missing CAP_NET_BIND_SERVICE capability, not creating stub listener on port 53.");
else { else {
static const struct { static const struct {
uint32_t addr; uint32_t addr;

View File

@ -146,9 +146,9 @@ int main(int argc, char* argv[]) {
test_hostname_lookup(bus, "www.dnssec-bogus.sg", AF_INET, BUS_ERROR_DNSSEC_FAILED); test_hostname_lookup(bus, "www.dnssec-bogus.sg", AF_INET, BUS_ERROR_DNSSEC_FAILED);
/* NXDOMAIN in NSEC domain */ /* NXDOMAIN in NSEC domain */
test_rr_lookup(bus, "hhh.nasa.gov", DNS_TYPE_A, _BUS_ERROR_DNS "NXDOMAIN"); test_rr_lookup(bus, "hhh.nasa.gov", DNS_TYPE_A, BUS_ERROR_DNS_NXDOMAIN);
test_hostname_lookup(bus, "hhh.nasa.gov", AF_UNSPEC, _BUS_ERROR_DNS "NXDOMAIN"); test_hostname_lookup(bus, "hhh.nasa.gov", AF_UNSPEC, BUS_ERROR_DNS_NXDOMAIN);
test_rr_lookup(bus, "_pgpkey-https._tcp.hkps.pool.sks-keyservers.net", DNS_TYPE_SRV, _BUS_ERROR_DNS "NXDOMAIN"); test_rr_lookup(bus, "_pgpkey-https._tcp.hkps.pool.sks-keyservers.net", DNS_TYPE_SRV, BUS_ERROR_DNS_NXDOMAIN);
/* wildcard, NSEC zone */ /* wildcard, NSEC zone */
test_rr_lookup(bus, ".wilda.nsec.0skar.cz", DNS_TYPE_A, NULL); test_rr_lookup(bus, ".wilda.nsec.0skar.cz", DNS_TYPE_A, NULL);
@ -187,16 +187,16 @@ int main(int argc, char* argv[]) {
test_hostname_lookup(bus, "herndon.nasa.gov", AF_INET6, BUS_ERROR_NO_SUCH_RR); test_hostname_lookup(bus, "herndon.nasa.gov", AF_INET6, BUS_ERROR_NO_SUCH_RR);
/* NXDOMAIN in NSEC root zone: */ /* NXDOMAIN in NSEC root zone: */
test_rr_lookup(bus, "jasdhjas.kjkfgjhfjg", DNS_TYPE_A, _BUS_ERROR_DNS "NXDOMAIN"); test_rr_lookup(bus, "jasdhjas.kjkfgjhfjg", DNS_TYPE_A, BUS_ERROR_DNS_NXDOMAIN);
test_hostname_lookup(bus, "jasdhjas.kjkfgjhfjg", AF_UNSPEC, _BUS_ERROR_DNS "NXDOMAIN"); test_hostname_lookup(bus, "jasdhjas.kjkfgjhfjg", AF_UNSPEC, BUS_ERROR_DNS_NXDOMAIN);
test_hostname_lookup(bus, "jasdhjas.kjkfgjhfjg", AF_INET, _BUS_ERROR_DNS "NXDOMAIN"); test_hostname_lookup(bus, "jasdhjas.kjkfgjhfjg", AF_INET, BUS_ERROR_DNS_NXDOMAIN);
test_hostname_lookup(bus, "jasdhjas.kjkfgjhfjg", AF_INET6, _BUS_ERROR_DNS "NXDOMAIN"); test_hostname_lookup(bus, "jasdhjas.kjkfgjhfjg", AF_INET6, BUS_ERROR_DNS_NXDOMAIN);
/* NXDOMAIN in NSEC3 .com zone: */ /* NXDOMAIN in NSEC3 .com zone: */
test_rr_lookup(bus, "kjkfgjhfjgsdfdsfd.com", DNS_TYPE_A, _BUS_ERROR_DNS "NXDOMAIN"); test_rr_lookup(bus, "kjkfgjhfjgsdfdsfd.com", DNS_TYPE_A, BUS_ERROR_DNS_NXDOMAIN);
test_hostname_lookup(bus, "kjkfgjhfjgsdfdsfd.com", AF_INET, _BUS_ERROR_DNS "NXDOMAIN"); test_hostname_lookup(bus, "kjkfgjhfjgsdfdsfd.com", AF_INET, BUS_ERROR_DNS_NXDOMAIN);
test_hostname_lookup(bus, "kjkfgjhfjgsdfdsfd.com", AF_INET6, _BUS_ERROR_DNS "NXDOMAIN"); test_hostname_lookup(bus, "kjkfgjhfjgsdfdsfd.com", AF_INET6, BUS_ERROR_DNS_NXDOMAIN);
test_hostname_lookup(bus, "kjkfgjhfjgsdfdsfd.com", AF_UNSPEC, _BUS_ERROR_DNS "NXDOMAIN"); test_hostname_lookup(bus, "kjkfgjhfjgsdfdsfd.com", AF_UNSPEC, BUS_ERROR_DNS_NXDOMAIN);
/* Unsigned A */ /* Unsigned A */
test_rr_lookup(bus, "poettering.de", DNS_TYPE_A, NULL); test_rr_lookup(bus, "poettering.de", DNS_TYPE_A, NULL);
@ -213,11 +213,11 @@ int main(int argc, char* argv[]) {
#endif #endif
/* DNAME, pointing to NXDOMAIN */ /* DNAME, pointing to NXDOMAIN */
test_rr_lookup(bus, ".ireallyhpoethisdoesnexist.xn--kprw13d.", DNS_TYPE_A, _BUS_ERROR_DNS "NXDOMAIN"); test_rr_lookup(bus, ".ireallyhpoethisdoesnexist.xn--kprw13d.", DNS_TYPE_A, BUS_ERROR_DNS_NXDOMAIN);
test_rr_lookup(bus, ".ireallyhpoethisdoesnexist.xn--kprw13d.", DNS_TYPE_RP, _BUS_ERROR_DNS "NXDOMAIN"); test_rr_lookup(bus, ".ireallyhpoethisdoesnexist.xn--kprw13d.", DNS_TYPE_RP, BUS_ERROR_DNS_NXDOMAIN);
test_hostname_lookup(bus, ".ireallyhpoethisdoesntexist.xn--kprw13d.", AF_UNSPEC, _BUS_ERROR_DNS "NXDOMAIN"); test_hostname_lookup(bus, ".ireallyhpoethisdoesntexist.xn--kprw13d.", AF_UNSPEC, BUS_ERROR_DNS_NXDOMAIN);
test_hostname_lookup(bus, ".ireallyhpoethisdoesntexist.xn--kprw13d.", AF_INET, _BUS_ERROR_DNS "NXDOMAIN"); test_hostname_lookup(bus, ".ireallyhpoethisdoesntexist.xn--kprw13d.", AF_INET, BUS_ERROR_DNS_NXDOMAIN);
test_hostname_lookup(bus, ".ireallyhpoethisdoesntexist.xn--kprw13d.", AF_INET6, _BUS_ERROR_DNS "NXDOMAIN"); test_hostname_lookup(bus, ".ireallyhpoethisdoesntexist.xn--kprw13d.", AF_INET6, BUS_ERROR_DNS_NXDOMAIN);
return 0; return 0;
} }

View File

@ -1658,7 +1658,7 @@ static int install_info_traverse(
r = install_info_follow(ctx, i, lp, flags, r = install_info_follow(ctx, i, lp, flags,
/* If linked, don't look at the target name */ /* If linked, don't look at the target name */
/* ignore_different_name= */ i->install_mode == INSTALL_MODE_LINKED); /* ignore_different_name= */ i->install_mode == INSTALL_MODE_LINKED);
if (r == -EXDEV) { if (r == -EXDEV && i->symlink_target) {
_cleanup_free_ char *buffer = NULL; _cleanup_free_ char *buffer = NULL;
const char *bn; const char *bn;

View File

@ -128,6 +128,10 @@ int journal_access_check_and_warn(sd_journal *j, bool quiet, bool want_other_use
log_warning_errno(err, "Journal file %s corrupted, ignoring file.", path); log_warning_errno(err, "Journal file %s corrupted, ignoring file.", path);
break; break;
case ETOOMANYREFS:
log_warning_errno(err, "Too many journal files (limit is at %u) in scope, ignoring file '%s'.", JOURNAL_FILES_MAX, path);
break;
default: default:
log_warning_errno(err, "An error was encountered while opening journal file or directory %s, ignoring file: %m", path); log_warning_errno(err, "An error was encountered while opening journal file or directory %s, ignoring file: %m", path);
break; break;

View File

@ -22,6 +22,7 @@
#include "btrfs-util.h" #include "btrfs-util.h"
#include "conf-parser.h" #include "conf-parser.h"
#include "def.h" #include "def.h"
#include "device-private.h"
#include "device-util.h" #include "device-util.h"
#include "devnum-util.h" #include "devnum-util.h"
#include "env-util.h" #include "env-util.h"
@ -65,10 +66,14 @@ int parse_sleep_config(SleepConfig **ret_sleep_config) {
int allow_suspend = -1, allow_hibernate = -1, int allow_suspend = -1, allow_hibernate = -1,
allow_s2h = -1, allow_hybrid_sleep = -1; allow_s2h = -1, allow_hybrid_sleep = -1;
sc = new0(SleepConfig, 1); sc = new(SleepConfig, 1);
if (!sc) if (!sc)
return log_oom(); return log_oom();
*sc = (SleepConfig) {
.hibernate_delay_usec = USEC_INFINITY,
};
const ConfigTableItem items[] = { const ConfigTableItem items[] = {
{ "Sleep", "AllowSuspend", config_parse_tristate, 0, &allow_suspend }, { "Sleep", "AllowSuspend", config_parse_tristate, 0, &allow_suspend },
{ "Sleep", "AllowHibernation", config_parse_tristate, 0, &allow_hibernate }, { "Sleep", "AllowHibernation", config_parse_tristate, 0, &allow_hibernate },
@ -82,7 +87,8 @@ int parse_sleep_config(SleepConfig **ret_sleep_config) {
{ "Sleep", "HybridSleepMode", config_parse_strv, 0, sc->modes + SLEEP_HYBRID_SLEEP }, { "Sleep", "HybridSleepMode", config_parse_strv, 0, sc->modes + SLEEP_HYBRID_SLEEP },
{ "Sleep", "HybridSleepState", config_parse_strv, 0, sc->states + SLEEP_HYBRID_SLEEP }, { "Sleep", "HybridSleepState", config_parse_strv, 0, sc->states + SLEEP_HYBRID_SLEEP },
{ "Sleep", "HibernateDelaySec", config_parse_sec, 0, &sc->hibernate_delay_sec }, { "Sleep", "HibernateDelaySec", config_parse_sec, 0, &sc->hibernate_delay_usec },
{ "Sleep", "SuspendEstimationSec", config_parse_sec, 0, &sc->suspend_estimation_usec },
{} {}
}; };
@ -113,8 +119,8 @@ int parse_sleep_config(SleepConfig **ret_sleep_config) {
sc->modes[SLEEP_HYBRID_SLEEP] = strv_new("suspend", "platform", "shutdown"); sc->modes[SLEEP_HYBRID_SLEEP] = strv_new("suspend", "platform", "shutdown");
if (!sc->states[SLEEP_HYBRID_SLEEP]) if (!sc->states[SLEEP_HYBRID_SLEEP])
sc->states[SLEEP_HYBRID_SLEEP] = strv_new("disk"); sc->states[SLEEP_HYBRID_SLEEP] = strv_new("disk");
if (sc->hibernate_delay_sec == 0) if (sc->suspend_estimation_usec == 0)
sc->hibernate_delay_sec = 2 * USEC_PER_HOUR; sc->suspend_estimation_usec = DEFAULT_SUSPEND_ESTIMATION_USEC;
/* Ensure values set for all required fields */ /* Ensure values set for all required fields */
if (!sc->states[SLEEP_SUSPEND] || !sc->modes[SLEEP_HIBERNATE] if (!sc->states[SLEEP_SUSPEND] || !sc->modes[SLEEP_HIBERNATE]
@ -141,12 +147,23 @@ static int battery_enumerator_new(sd_device_enumerator **ret) {
if (r < 0) if (r < 0)
return r; return r;
r = sd_device_enumerator_add_match_property(e, "POWER_SUPPLY_TYPE", "Battery"); r = sd_device_enumerator_allow_uninitialized(e);
if (r < 0)
return r;
r = sd_device_enumerator_add_match_sysattr(e, "type", "Battery", /* match = */ true);
if (r < 0)
return r;
r = sd_device_enumerator_add_match_sysattr(e, "present", "1", /* match = */ true);
if (r < 0)
return r;
r = sd_device_enumerator_add_match_sysattr(e, "scope", "Device", /* match = */ false);
if (r < 0) if (r < 0)
return r; return r;
*ret = TAKE_PTR(e); *ret = TAKE_PTR(e);
return 0; return 0;
} }
@ -165,18 +182,13 @@ static int get_capacity_by_name(Hashmap *capacities_by_name, const char *name) {
/* Battery percentage capacity fetched from capacity file and if in range 0-100 then returned */ /* Battery percentage capacity fetched from capacity file and if in range 0-100 then returned */
static int read_battery_capacity_percentage(sd_device *dev) { static int read_battery_capacity_percentage(sd_device *dev) {
const char *power_supply_capacity;
int battery_capacity, r; int battery_capacity, r;
assert(dev); assert(dev);
r = sd_device_get_property_value(dev, "POWER_SUPPLY_CAPACITY", &power_supply_capacity); r = device_get_sysattr_int(dev, "capacity", &battery_capacity);
if (r < 0) if (r < 0)
return log_device_debug_errno(dev, r, "Failed to get property POWER_SUPPLY_CAPACITY: %m"); return log_device_debug_errno(dev, r, "Failed to read/parse POWER_SUPPLY_CAPACITY: %m");
r = safe_atoi(power_supply_capacity, &battery_capacity);
if (r < 0)
return log_device_debug_errno(dev, r, "Failed to parse property POWER_SUPPLY_CAPACITY: %m");
if (battery_capacity < 0 || battery_capacity > 100) if (battery_capacity < 0 || battery_capacity > 100)
return log_device_debug_errno(dev, SYNTHETIC_ERRNO(ERANGE), "Invalid battery capacity"); return log_device_debug_errno(dev, SYNTHETIC_ERRNO(ERANGE), "Invalid battery capacity");
@ -198,15 +210,9 @@ int battery_is_low(void) {
if (r < 0) if (r < 0)
return log_debug_errno(r, "Failed to initialize battery enumerator: %m"); return log_debug_errno(r, "Failed to initialize battery enumerator: %m");
FOREACH_DEVICE(e, dev) { FOREACH_DEVICE(e, dev)
r = read_battery_capacity_percentage(dev); if (read_battery_capacity_percentage(dev) > BATTERY_LOW_CAPACITY_LEVEL)
if (r < 0) {
log_device_debug_errno(dev, r, "Failed to get battery capacity, ignoring: %m");
continue;
}
if (r > BATTERY_LOW_CAPACITY_LEVEL)
return false; return false;
}
return true; return true;
} }
@ -259,61 +265,55 @@ int fetch_batteries_capacity_by_name(Hashmap **ret) {
return 0; return 0;
} }
/* Read file path and return hash of value in that file */ static int siphash24_compress_device_sysattr(sd_device *dev, const char *attr, struct siphash *state) {
static int get_battery_identifier(sd_device *dev, const char *property, struct siphash *state) {
const char *x; const char *x;
int r; int r;
assert(dev); assert(dev);
assert(property); assert(attr);
assert(state); assert(state);
r = sd_device_get_property_value(dev, property, &x); r = sd_device_get_sysattr_value(dev, attr, &x);
if (r == -ENOENT) if (r < 0)
log_device_debug_errno(dev, r, "Battery device property %s is unavailable, ignoring: %m", property); return log_device_debug_errno(dev, r, "Failed to read '%s' attribute: %m", attr);
else if (r < 0)
return log_device_debug_errno(dev, r, "Failed to get battery device property %s: %m", property); if (!isempty(x))
else if (isempty(x))
log_device_debug(dev, "Battery device property '%s' is empty.", property);
else
siphash24_compress_string(x, state); siphash24_compress_string(x, state);
return 0; return 0;
} }
static int siphash24_compress_id128(int (*getter)(sd_id128_t*), const char *name, struct siphash *state) {
sd_id128_t id;
int r;
assert(getter);
assert(state);
r = getter(&id);
if (r < 0)
return log_debug_errno(r, "Failed to get %s ID: %m", name);
siphash24_compress(&id, sizeof(sd_id128_t), state);
return 0;
}
/* Read system and battery identifier from specific location and generate hash of it */ /* Read system and battery identifier from specific location and generate hash of it */
static int get_system_battery_identifier_hash(sd_device *dev, uint64_t *ret) { static int get_system_battery_identifier_hash(sd_device *dev, uint64_t *ret) {
struct siphash state; struct siphash state;
sd_id128_t machine_id, product_id;
int r;
assert(ret); assert(ret);
assert(dev); assert(dev);
siphash24_init(&state, BATTERY_DISCHARGE_RATE_HASH_KEY.bytes); siphash24_init(&state, BATTERY_DISCHARGE_RATE_HASH_KEY.bytes);
get_battery_identifier(dev, "POWER_SUPPLY_MANUFACTURER", &state); (void) siphash24_compress_device_sysattr(dev, "manufacturer", &state);
get_battery_identifier(dev, "POWER_SUPPLY_MODEL_NAME", &state); (void) siphash24_compress_device_sysattr(dev, "model_name", &state);
get_battery_identifier(dev, "POWER_SUPPLY_SERIAL_NUMBER", &state); (void) siphash24_compress_device_sysattr(dev, "serial_number", &state);
(void) siphash24_compress_id128(sd_id128_get_machine, "machine", &state);
r = sd_id128_get_machine(&machine_id); (void) siphash24_compress_id128(id128_get_product, "product", &state);
if (r == -ENOENT)
log_debug_errno(r, "machine ID is unavailable: %m");
else if (r < 0)
return log_debug_errno(r, "Failed to get machine ID: %m");
else
siphash24_compress(&machine_id, sizeof(sd_id128_t), &state);
r = id128_get_product(&product_id);
if (r == -ENOENT)
log_debug_errno(r, "product_id does not exist: %m");
else if (r < 0)
return log_debug_errno(r, "Failed to get product ID: %m");
else
siphash24_compress(&product_id, sizeof(sd_id128_t), &state);
*ret = siphash24_finalize(&state); *ret = siphash24_finalize(&state);
return 0; return 0;
} }

View File

@ -6,6 +6,8 @@
#include "hashmap.h" #include "hashmap.h"
#include "time-util.h" #include "time-util.h"
#define DEFAULT_SUSPEND_ESTIMATION_USEC (1 * USEC_PER_HOUR)
typedef enum SleepOperation { typedef enum SleepOperation {
SLEEP_SUSPEND, SLEEP_SUSPEND,
SLEEP_HIBERNATE, SLEEP_HIBERNATE,
@ -19,7 +21,8 @@ typedef struct SleepConfig {
bool allow[_SLEEP_OPERATION_MAX]; bool allow[_SLEEP_OPERATION_MAX];
char **modes[_SLEEP_OPERATION_MAX]; char **modes[_SLEEP_OPERATION_MAX];
char **states[_SLEEP_OPERATION_MAX]; char **states[_SLEEP_OPERATION_MAX];
usec_t hibernate_delay_sec; usec_t hibernate_delay_usec;
usec_t suspend_estimation_usec;
} SleepConfig; } SleepConfig;
SleepConfig* free_sleep_config(SleepConfig *sc); SleepConfig* free_sleep_config(SleepConfig *sc);

View File

@ -294,8 +294,8 @@ static int userdb_on_query_reply(
} membership_data = {}; } membership_data = {};
static const JsonDispatch dispatch_table[] = { static const JsonDispatch dispatch_table[] = {
{ "userName", JSON_VARIANT_STRING, json_dispatch_const_string, offsetof(struct membership_data, user_name), JSON_SAFE }, { "userName", JSON_VARIANT_STRING, json_dispatch_user_group_name, offsetof(struct membership_data, user_name), JSON_RELAX },
{ "groupName", JSON_VARIANT_STRING, json_dispatch_const_string, offsetof(struct membership_data, group_name), JSON_SAFE }, { "groupName", JSON_VARIANT_STRING, json_dispatch_user_group_name, offsetof(struct membership_data, group_name), JSON_RELAX },
{} {}
}; };

View File

@ -267,36 +267,48 @@ static int execute(
} }
static int custom_timer_suspend(const SleepConfig *sleep_config) { static int custom_timer_suspend(const SleepConfig *sleep_config) {
usec_t hibernate_timestamp;
int r; int r;
assert(sleep_config); assert(sleep_config);
hibernate_timestamp = usec_add(now(CLOCK_BOOTTIME), sleep_config->hibernate_delay_usec);
while (battery_is_low() == 0) { while (battery_is_low() == 0) {
_cleanup_hashmap_free_ Hashmap *last_capacity = NULL, *current_capacity = NULL; _cleanup_hashmap_free_ Hashmap *last_capacity = NULL, *current_capacity = NULL;
_cleanup_close_ int tfd = -1; _cleanup_close_ int tfd = -1;
struct itimerspec ts = {}; struct itimerspec ts = {};
usec_t suspend_interval = sleep_config->hibernate_delay_sec, before_timestamp = 0, after_timestamp = 0, total_suspend_interval; usec_t suspend_interval;
bool woken_by_timer; bool woken_by_timer;
tfd = timerfd_create(CLOCK_BOOTTIME_ALARM, TFD_NONBLOCK|TFD_CLOEXEC); tfd = timerfd_create(CLOCK_BOOTTIME_ALARM, TFD_NONBLOCK|TFD_CLOEXEC);
if (tfd < 0) if (tfd < 0)
return log_error_errno(errno, "Error creating timerfd: %m"); return log_error_errno(errno, "Error creating timerfd: %m");
/* Store current battery capacity and current time before suspension */ /* Store current battery capacity before suspension */
r = fetch_batteries_capacity_by_name(&last_capacity); r = fetch_batteries_capacity_by_name(&last_capacity);
if (r >= 0) if (r < 0)
before_timestamp = now(CLOCK_BOOTTIME);
else if (r == -ENOENT)
/* In case of no battery, system suspend interval will be set to HibernateDelaySec=. */
log_debug_errno(r, "Suspend Interval value set to %s: %m", FORMAT_TIMESPAN(suspend_interval, USEC_PER_SEC));
else
return log_error_errno(r, "Error fetching battery capacity percentage: %m"); return log_error_errno(r, "Error fetching battery capacity percentage: %m");
r = get_total_suspend_interval(last_capacity, &total_suspend_interval); if (hashmap_isempty(last_capacity))
if (r < 0) /* In case of no battery, system suspend interval will be set to HibernateDelaySec= or 2 hours. */
suspend_interval = timestamp_is_set(hibernate_timestamp) ? sleep_config->hibernate_delay_usec : DEFAULT_SUSPEND_ESTIMATION_USEC;
else {
r = get_total_suspend_interval(last_capacity, &suspend_interval);
if (r < 0) {
log_debug_errno(r, "Failed to estimate suspend interval using previous discharge rate, ignoring: %m"); log_debug_errno(r, "Failed to estimate suspend interval using previous discharge rate, ignoring: %m");
else /* In case of any errors, especially when we do not know the battery
suspend_interval = total_suspend_interval; * discharging rate, system suspend interval will be set to
* SuspendEstimationSec=. */
suspend_interval = sleep_config->suspend_estimation_usec;
}
}
/* Do not suspend more than HibernateDelaySec= */
usec_t before_timestamp = now(CLOCK_BOOTTIME);
suspend_interval = MIN(suspend_interval, usec_sub_unsigned(hibernate_timestamp, before_timestamp));
if (suspend_interval <= 0)
break; /* system should hibernate */
log_debug("Set timerfd wake alarm for %s", FORMAT_TIMESPAN(suspend_interval, USEC_PER_SEC)); log_debug("Set timerfd wake alarm for %s", FORMAT_TIMESPAN(suspend_interval, USEC_PER_SEC));
/* Wake alarm for system with or without battery to hibernate or estimate discharge rate whichever is applicable */ /* Wake alarm for system with or without battery to hibernate or estimate discharge rate whichever is applicable */
@ -316,17 +328,20 @@ static int custom_timer_suspend(const SleepConfig *sleep_config) {
woken_by_timer = FLAGS_SET(r, POLLIN); woken_by_timer = FLAGS_SET(r, POLLIN);
r = fetch_batteries_capacity_by_name(&current_capacity); r = fetch_batteries_capacity_by_name(&current_capacity);
if (r < 0) { if (r < 0 || hashmap_isempty(current_capacity)) {
/* In case of no battery or error while getting charge level, no need to measure /* In case of no battery or error while getting charge level, no need to measure
* discharge rate. Instead system should wakeup if it is manual wakeup or * discharge rate. Instead the system should wake up if it is manual wakeup or
* hibernate if this is a timer wakeup. */ * hibernate if this is a timer wakeup. */
if (r < 0)
log_debug_errno(r, "Battery capacity percentage unavailable, cannot estimate discharge rate: %m"); log_debug_errno(r, "Battery capacity percentage unavailable, cannot estimate discharge rate: %m");
else
log_debug("No battery found.");
if (!woken_by_timer) if (!woken_by_timer)
return 0; return 0;
break; break;
} }
after_timestamp = now(CLOCK_BOOTTIME); usec_t after_timestamp = now(CLOCK_BOOTTIME);
log_debug("Attempting to estimate battery discharge rate after wakeup from %s sleep", log_debug("Attempting to estimate battery discharge rate after wakeup from %s sleep",
FORMAT_TIMESPAN(after_timestamp - before_timestamp, USEC_PER_HOUR)); FORMAT_TIMESPAN(after_timestamp - before_timestamp, USEC_PER_HOUR));
@ -379,7 +394,7 @@ static int freeze_thaw_user_slice(const char **method) {
static int execute_s2h(const SleepConfig *sleep_config) { static int execute_s2h(const SleepConfig *sleep_config) {
_unused_ _cleanup_(freeze_thaw_user_slice) const char *auto_method_thaw = "ThawUnit"; _unused_ _cleanup_(freeze_thaw_user_slice) const char *auto_method_thaw = "ThawUnit";
int r, k; int r;
assert(sleep_config); assert(sleep_config);
@ -387,15 +402,21 @@ static int execute_s2h(const SleepConfig *sleep_config) {
if (r < 0) if (r < 0)
log_debug_errno(r, "Failed to freeze unit user.slice, ignoring: %m"); log_debug_errno(r, "Failed to freeze unit user.slice, ignoring: %m");
/* Only check if we have automated battery alarms if HibernateDelaySec= is not set, as in that case
* we'll busy poll for the configured interval instead */
if (!timestamp_is_set(sleep_config->hibernate_delay_usec)) {
r = check_wakeup_type(); r = check_wakeup_type();
if (r < 0) if (r < 0)
log_debug_errno(r, "Failed to check hardware wakeup type, ignoring: %m"); log_debug_errno(r, "Failed to check hardware wakeup type, ignoring: %m");
else {
r = battery_trip_point_alarm_exists();
if (r < 0)
log_debug_errno(r, "Failed to check whether acpi_btp support is enabled or not, ignoring: %m");
}
} else
r = 0; /* Force fallback path */
k = battery_trip_point_alarm_exists(); if (r > 0) { /* If we have both wakeup alarms and battery trip point support, use them */
if (k < 0)
log_debug_errno(k, "Failed to check whether acpi_btp support is enabled or not, ignoring: %m");
if (r >= 0 && k > 0) {
log_debug("Attempting to suspend..."); log_debug("Attempting to suspend...");
r = execute(sleep_config, SLEEP_SUSPEND, NULL); r = execute(sleep_config, SLEEP_SUSPEND, NULL);
if (r < 0) if (r < 0)

View File

@ -23,4 +23,5 @@
#HibernateState=disk #HibernateState=disk
#HybridSleepMode=suspend platform shutdown #HybridSleepMode=suspend platform shutdown
#HybridSleepState=disk #HybridSleepState=disk
#HibernateDelaySec=120min #HibernateDelaySec=
#SuspendEstimationSec=60min

View File

@ -17,7 +17,7 @@ static int test_acpi_fpdt(void) {
r = acpi_get_boot_usec(&loader_start, &loader_exit); r = acpi_get_boot_usec(&loader_start, &loader_exit);
if (r < 0) { if (r < 0) {
bool ok = IN_SET(r, -ENOENT, -ENODATA) || ERRNO_IS_PRIVILEGE(r); bool ok = IN_SET(r, -ENOENT, -ENODATA, -ERANGE) || ERRNO_IS_PRIVILEGE(r);
log_full_errno(ok ? LOG_DEBUG : LOG_ERR, r, "Failed to read ACPI FPDT: %m"); log_full_errno(ok ? LOG_DEBUG : LOG_ERR, r, "Failed to read ACPI FPDT: %m");
return ok ? 0 : r; return ok ? 0 : r;

View File

@ -480,6 +480,14 @@ TEST(safe_atou16) {
assert_se(r == 0); assert_se(r == 0);
assert_se(l == 12345); assert_se(l == 12345);
r = safe_atou16("+12345", &l);
assert_se(r == 0);
assert_se(l == 12345);
r = safe_atou16(" +12345", &l);
assert_se(r == 0);
assert_se(l == 12345);
r = safe_atou16("123456", &l); r = safe_atou16("123456", &l);
assert_se(r == -ERANGE); assert_se(r == -ERANGE);
@ -514,6 +522,14 @@ TEST(safe_atoi16) {
assert_se(r == 0); assert_se(r == 0);
assert_se(l == -12345); assert_se(l == -12345);
r = safe_atoi16("+12345", &l);
assert_se(r == 0);
assert_se(l == 12345);
r = safe_atoi16(" +12345", &l);
assert_se(r == 0);
assert_se(l == 12345);
r = safe_atoi16("32767", &l); r = safe_atoi16("32767", &l);
assert_se(r == 0); assert_se(r == 0);
assert_se(l == 32767); assert_se(l == 32767);
@ -703,6 +719,22 @@ TEST(safe_atoux64) {
assert_se(r == 0); assert_se(r == 0);
assert_se(l == 11603985); assert_se(l == 11603985);
r = safe_atoux64("+12345", &l);
assert_se(r == 0);
assert_se(l == 0x12345);
r = safe_atoux64(" +12345", &l);
assert_se(r == 0);
assert_se(l == 0x12345);
r = safe_atoux64("+0x12345", &l);
assert_se(r == 0);
assert_se(l == 0x12345);
r = safe_atoux64("+0b11011", &l);
assert_se(r == 0);
assert_se(l == 11603985);
r = safe_atoux64("0o11011", &l); r = safe_atoux64("0o11011", &l);
assert_se(r == -EINVAL); assert_se(r == -EINVAL);

View File

@ -3311,12 +3311,6 @@ static int parse_line(
*invalid_config = true; *invalid_config = true;
return log_syntax(NULL, LOG_ERR, fname, line, SYNTHETIC_ERRNO(EBADMSG), "base64 decoding not supported for symlink targets."); return log_syntax(NULL, LOG_ERR, fname, line, SYNTHETIC_ERRNO(EBADMSG), "base64 decoding not supported for symlink targets.");
} }
if (!i.argument) {
i.argument = path_join("/usr/share/factory", i.path);
if (!i.argument)
return log_oom();
}
break; break;
case WRITE_FILE: case WRITE_FILE:
@ -3331,34 +3325,6 @@ static int parse_line(
*invalid_config = true; *invalid_config = true;
return log_syntax(NULL, LOG_ERR, fname, line, SYNTHETIC_ERRNO(EBADMSG), "base64 decoding not supported for copy sources."); return log_syntax(NULL, LOG_ERR, fname, line, SYNTHETIC_ERRNO(EBADMSG), "base64 decoding not supported for copy sources.");
} }
if (!i.argument) {
i.argument = path_join("/usr/share/factory", i.path);
if (!i.argument)
return log_oom();
} else if (!path_is_absolute(i.argument)) {
*invalid_config = true;
return log_syntax(NULL, LOG_ERR, fname, line, SYNTHETIC_ERRNO(EBADMSG), "Source path '%s' is not absolute.", i.argument);
}
if (!empty_or_root(arg_root)) {
char *p;
p = path_join(arg_root, i.argument);
if (!p)
return log_oom();
free_and_replace(i.argument, p);
}
path_simplify(i.argument);
if (laccess(i.argument, F_OK) == -ENOENT) {
/* Silently skip over lines where the source file is missing. */
log_syntax(NULL, LOG_DEBUG, fname, line, 0, "Copy source path '%s' does not exist, skipping line.", i.argument);
return 0;
}
break; break;
case CREATE_CHAR_DEVICE: case CREATE_CHAR_DEVICE:
@ -3452,6 +3418,49 @@ static int parse_line(
} }
} }
switch (i.type) {
case CREATE_SYMLINK:
if (!i.argument) {
i.argument = path_join("/usr/share/factory", i.path);
if (!i.argument)
return log_oom();
}
break;
case COPY_FILES:
if (!i.argument) {
i.argument = path_join("/usr/share/factory", i.path);
if (!i.argument)
return log_oom();
} else if (!path_is_absolute(i.argument)) {
*invalid_config = true;
return log_syntax(NULL, LOG_ERR, fname, line, SYNTHETIC_ERRNO(EBADMSG), "Source path '%s' is not absolute.", i.argument);
}
if (!empty_or_root(arg_root)) {
char *p;
p = path_join(arg_root, i.argument);
if (!p)
return log_oom();
free_and_replace(i.argument, p);
}
path_simplify(i.argument);
if (laccess(i.argument, F_OK) == -ENOENT) {
/* Silently skip over lines where the source file is missing. */
log_syntax(NULL, LOG_DEBUG, fname, line, 0, "Copy source path '%s' does not exist, skipping line.", i.argument);
return 0;
}
break;
default:
break;
}
if (from_cred) { if (from_cred) {
if (!i.argument) if (!i.argument)
return log_syntax(NULL, LOG_ERR, fname, line, SYNTHETIC_ERRNO(EINVAL), "Reading from credential requested, but no credential name specified."); return log_syntax(NULL, LOG_ERR, fname, line, SYNTHETIC_ERRNO(EINVAL), "Reading from credential requested, but no credential name specified.");

View File

@ -841,8 +841,6 @@ static int link_apply_alternative_names(Link *link, sd_netlink **rtnl) {
} }
} }
if (link->new_name)
strv_remove(altnames, link->new_name);
strv_remove(altnames, link->ifname); strv_remove(altnames, link->ifname);
r = rtnl_get_link_alternative_names(rtnl, link->ifindex, &current_altnames); r = rtnl_get_link_alternative_names(rtnl, link->ifindex, &current_altnames);

View File

@ -144,7 +144,7 @@ static int get_virtfn_info(sd_device *pcidev, sd_device **ret_physfn_pcidev, cha
if (!suffix) if (!suffix)
return -ENOMEM; return -ENOMEM;
*ret_physfn_pcidev = sd_device_ref(child); *ret_physfn_pcidev = sd_device_ref(physfn_pcidev);
*ret_suffix = suffix; *ret_suffix = suffix;
return 0; return 0;
} }

View File

@ -862,7 +862,6 @@ int udev_event_spawn(
static int rename_netif(UdevEvent *event) { static int rename_netif(UdevEvent *event) {
const char *oldname; const char *oldname;
sd_device *dev; sd_device *dev;
unsigned flags;
int ifindex, r; int ifindex, r;
assert(event); assert(event);
@ -896,16 +895,6 @@ static int rename_netif(UdevEvent *event) {
return 0; return 0;
} }
r = rtnl_get_link_info(&event->rtnl, ifindex, NULL, &flags, NULL, NULL, NULL);
if (r < 0)
return log_device_warning_errno(dev, r, "Failed to get link flags: %m");
if (FLAGS_SET(flags, IFF_UP)) {
log_device_info(dev, "Network interface '%s' is already up, refusing to rename to '%s'.",
oldname, event->name);
return 0;
}
/* Set ID_RENAMING boolean property here, and drop it in the corresponding move uevent later. */ /* Set ID_RENAMING boolean property here, and drop it in the corresponding move uevent later. */
r = device_add_property(dev, "ID_RENAMING", "1"); r = device_add_property(dev, "ID_RENAMING", "1");
if (r < 0) if (r < 0)
@ -927,6 +916,11 @@ static int rename_netif(UdevEvent *event) {
return log_device_debug_errno(event->dev_db_clone, r, "Failed to update database under /run/udev/data/: %m"); return log_device_debug_errno(event->dev_db_clone, r, "Failed to update database under /run/udev/data/: %m");
r = rtnl_set_link_name(&event->rtnl, ifindex, event->name); r = rtnl_set_link_name(&event->rtnl, ifindex, event->name);
if (r == -EBUSY) {
log_device_info(dev, "Network interface '%s' is already up, cannot rename to '%s'.",
oldname, event->name);
return 0;
}
if (r < 0) if (r < 0)
return log_device_error_errno(dev, r, "Failed to rename network interface %i from '%s' to '%s': %m", return log_device_error_errno(dev, r, "Failed to rename network interface %i from '%s' to '%s': %m",
ifindex, oldname, event->name); ifindex, oldname, event->name);

View File

@ -1641,7 +1641,7 @@ static int udev_rule_apply_token_to_event(
case TK_M_PARENTS_TAG: { case TK_M_PARENTS_TAG: {
const char *val; const char *val;
FOREACH_DEVICE_TAG(dev, val) FOREACH_DEVICE_CURRENT_TAG(dev, val)
if (token_match_string(token, val)) if (token_match_string(token, val))
return token->op == OP_MATCH; return token->op == OP_MATCH;
return token->op == OP_NOMATCH; return token->op == OP_NOMATCH;

View File

@ -794,7 +794,7 @@ static int worker_spawn(Manager *manager, Event *event) {
if (r < 0) if (r < 0)
return log_error_errno(r, "Worker: Failed to enable receiving of device: %m"); return log_error_errno(r, "Worker: Failed to enable receiving of device: %m");
r = safe_fork(NULL, FORK_DEATHSIG, &pid); r = safe_fork("(udev-worker)", FORK_DEATHSIG, &pid);
if (r < 0) { if (r < 0) {
event->state = EVENT_QUEUED; event->state = EVENT_QUEUED;
return log_error_errno(r, "Failed to fork() worker: %m"); return log_error_errno(r, "Failed to fork() worker: %m");

View File

@ -6,7 +6,8 @@
# (at your option) any later version. # (at your option) any later version.
# The superuser # The superuser
u root 0 "Super User" /root g root 0 - -
u root 0:0 "Super User" /root
# The nobody user/group for NFS file systems # The nobody user/group for NFS file systems
g {{NOBODY_GROUP_NAME}} 65534 - - g {{NOBODY_GROUP_NAME}} 65534 - -

View File

@ -0,0 +1,7 @@
# SPDX-License-Identifier: LGPL-2.1-or-later
[Match]
OriginalName=dummy98
[Link]
Name=dummyalt
AlternativeName=dummyalt hogehogehogehogehogehoge

View File

@ -936,6 +936,17 @@ class NetworkctlTests(unittest.TestCase, Utilities):
output = check_output(*networkctl_cmd, '-n', '0', 'status', 'dummy98', env=env) output = check_output(*networkctl_cmd, '-n', '0', 'status', 'dummy98', env=env)
self.assertRegex(output, 'hogehogehogehogehogehoge') self.assertRegex(output, 'hogehogehogehogehogehoge')
@expectedFailureIfAlternativeNameIsNotAvailable()
def test_rename_to_altname(self):
copy_network_unit('26-netdev-link-local-addressing-yes.network',
'12-dummy.netdev', '12-dummy-rename-to-altname.link')
start_networkd()
self.wait_online(['dummyalt:degraded'])
output = check_output(*networkctl_cmd, '-n', '0', 'status', 'dummyalt', env=env)
self.assertIn('hogehogehogehogehogehoge', output)
self.assertNotIn('dummy98', output)
def test_reconfigure(self): def test_reconfigure(self):
copy_network_unit('25-address-static.network', '12-dummy.netdev') copy_network_unit('25-address-static.network', '12-dummy.netdev')
start_networkd() start_networkd()

View File

@ -97,7 +97,7 @@ test "$(stat -c %U:%G:%a /tmp/e/3/f1)" = "root:root:644"
# 'C' # 'C'
# #
mkdir /tmp/C/{1,2,3}-origin mkdir /tmp/C/{0,1,2,3}-origin
touch /tmp/C/{1,2,3}-origin/f1 touch /tmp/C/{1,2,3}-origin/f1
chmod 755 /tmp/C/{1,2,3}-origin/f1 chmod 755 /tmp/C/{1,2,3}-origin/f1
@ -121,3 +121,31 @@ EOF
test "$(stat -c %U:%G:%a /tmp/C/3/f1)" = "root:root:644" test "$(stat -c %U:%G:%a /tmp/C/3/f1)" = "root:root:644"
test ! -e /tmp/C/4 test ! -e /tmp/C/4
# Check that %U expands to 0, both in the path and in the argument.
home='/tmp/C'
systemd-tmpfiles --create - <<EOF
C $home/%U - - - - $home/%U-origin
EOF
test -d "$home/0"
# Check that %h expands to $home, both in the path and in the argument.
HOME="$home" \
systemd-tmpfiles --create - <<EOF
C %h/5 - - - - %h/3-origin
EOF
test -f "$home/5/f1"
# Check that %h in the path is expanded, but
# the result of this expansion is not expanded once again.
root='/tmp/C/6'
home='/%U'
mkdir -p "$root/usr/share/factory$home"
HOME="$home" \
systemd-tmpfiles --create --root="$root" - <<EOF
C %h - - - -
EOF
test -d "$root$home"

32
test/units/testsuite-22.15.sh Executable file
View File

@ -0,0 +1,32 @@
#!/bin/bash
# SPDX-License-Identifier: LGPL-2.1-or-later
#
# Check specifier expansion in L lines.
#
set -eux
rm -fr /tmp/L
mkdir /tmp/L
# Check that %h expands to $home.
home='/somewhere'
dst='/tmp/L/1'
src="$home"
HOME="$home" \
systemd-tmpfiles --create - <<EOF
L $dst - - - - %h
EOF
test "$(readlink "$dst")" = "$src"
# Check that %h in the path is expanded, but
# the result of this expansion is not expanded once again.
root='/tmp/L/2'
home='/%U'
src="/usr/share/factory$home"
mkdir -p "$root$src"
dst="$root$home"
HOME="$home" \
systemd-tmpfiles --create --root="$root" - <<EOF
L %h - - - -
EOF
test "$(readlink "$dst")" = "$src"

View File

@ -128,6 +128,12 @@ if [ -e /usr/lib/systemd/systemd-measure ] && \
# Now, do the same, but with a cryptsetup binding # Now, do the same, but with a cryptsetup binding
truncate -s 20M $img truncate -s 20M $img
cryptsetup luksFormat -q --pbkdf pbkdf2 --pbkdf-force-iterations 1000 --use-urandom $img /tmp/passphrase cryptsetup luksFormat -q --pbkdf pbkdf2 --pbkdf-force-iterations 1000 --use-urandom $img /tmp/passphrase
# Ensure that an unrelated signature, when not requested, is not used
touch /run/systemd/tpm2-pcr-signature.json
systemd-cryptenroll --unlock-key-file=/tmp/passphrase --tpm2-device=auto --tpm2-public-key="/tmp/pcrsign-public.pem" $img
# Reset and use the signature now
rm -f /run/systemd/tpm2-pcr-signature.json
systemd-cryptenroll --wipe-slot=tpm2 $img
systemd-cryptenroll --unlock-key-file=/tmp/passphrase --tpm2-device=auto --tpm2-public-key="/tmp/pcrsign-public.pem" --tpm2-signature="/tmp/pcrsign.sig2" $img systemd-cryptenroll --unlock-key-file=/tmp/passphrase --tpm2-device=auto --tpm2-public-key="/tmp/pcrsign-public.pem" --tpm2-signature="/tmp/pcrsign.sig2" $img
# Check if we can activate that (without the token module stuff) # Check if we can activate that (without the token module stuff)
@ -155,6 +161,12 @@ else
echo "/usr/lib/systemd/systemd-measure or PCR sysfs files not found, skipping signed PCR policy test case" echo "/usr/lib/systemd/systemd-measure or PCR sysfs files not found, skipping signed PCR policy test case"
fi fi
# Ensure that sandboxing doesn't stop creds from being accessible
echo "test" > /tmp/testdata
systemd-creds encrypt /tmp/testdata /tmp/testdata.encrypted --with-key=tpm2
systemd-run -p PrivateDevices=yes -p LoadCredentialEncrypted=testdata.encrypted:/tmp/testdata.encrypted --pipe --wait systemd-creds cat testdata.encrypted | cmp - /tmp/testdata
rm /tmp/testdata
echo OK >/testok echo OK >/testok
exit 0 exit 0

View File

@ -10,7 +10,7 @@
[Unit] [Unit]
Description=Container %i Description=Container %i
Documentation=man:systemd-nspawn(1) Documentation=man:systemd-nspawn(1)
Wants=modprobe@tun.service modprobe@loop.service modprobe@dm-mod.service Wants=modprobe@tun.service modprobe@loop.service modprobe@dm_mod.service
PartOf=machines.target PartOf=machines.target
Before=machines.target Before=machines.target
After=network.target modprobe@tun.service modprobe@loop.service modprobe@dm-mod.service After=network.target modprobe@tun.service modprobe@loop.service modprobe@dm-mod.service

View File

@ -13,12 +13,12 @@ Documentation=man:systemd-pcrphase-initrd.service(8)
DefaultDependencies=no DefaultDependencies=no
Conflicts=shutdown.target initrd-switch-root.target Conflicts=shutdown.target initrd-switch-root.target
Before=sysinit.target cryptsetup-pre.target cryptsetup.target shutdown.target initrd-switch-root.target systemd-sysext.service Before=sysinit.target cryptsetup-pre.target cryptsetup.target shutdown.target initrd-switch-root.target systemd-sysext.service
AssertPathExists=/etc/initrd-release ConditionPathExists=/etc/initrd-release
ConditionSecurity=tpm2 ConditionSecurity=tpm2
ConditionPathExists=/sys/firmware/efi/efivars/StubPcrKernelImage-4a67b082-0a4c-41cf-b6c7-440b29bb8c4f ConditionPathExists=/sys/firmware/efi/efivars/StubPcrKernelImage-4a67b082-0a4c-41cf-b6c7-440b29bb8c4f
[Service] [Service]
Type=oneshot Type=oneshot
RemainAfterExit=yes RemainAfterExit=yes
ExecStart={{ROOTLIBEXECDIR}}/systemd-pcrphase enter-initrd ExecStart={{ROOTLIBEXECDIR}}/systemd-pcrphase --graceful enter-initrd
ExecStop={{ROOTLIBEXECDIR}}/systemd-pcrphase leave-initrd ExecStop={{ROOTLIBEXECDIR}}/systemd-pcrphase --graceful leave-initrd

View File

@ -14,12 +14,12 @@ DefaultDependencies=no
Conflicts=shutdown.target Conflicts=shutdown.target
After=sysinit.target After=sysinit.target
Before=basic.target shutdown.target Before=basic.target shutdown.target
AssertPathExists=!/etc/initrd-release ConditionPathExists=!/etc/initrd-release
ConditionSecurity=tpm2 ConditionSecurity=tpm2
ConditionPathExists=/sys/firmware/efi/efivars/StubPcrKernelImage-4a67b082-0a4c-41cf-b6c7-440b29bb8c4f ConditionPathExists=/sys/firmware/efi/efivars/StubPcrKernelImage-4a67b082-0a4c-41cf-b6c7-440b29bb8c4f
[Service] [Service]
Type=oneshot Type=oneshot
RemainAfterExit=yes RemainAfterExit=yes
ExecStart={{ROOTLIBEXECDIR}}/systemd-pcrphase sysinit ExecStart={{ROOTLIBEXECDIR}}/systemd-pcrphase --graceful sysinit
ExecStop={{ROOTLIBEXECDIR}}/systemd-pcrphase final ExecStop={{ROOTLIBEXECDIR}}/systemd-pcrphase --graceful final

View File

@ -12,12 +12,12 @@ Description=TPM2 PCR Barrier (User)
Documentation=man:systemd-pcrphase.service(8) Documentation=man:systemd-pcrphase.service(8)
After=remote-fs.target remote-cryptsetup.target After=remote-fs.target remote-cryptsetup.target
Before=systemd-user-sessions.service Before=systemd-user-sessions.service
AssertPathExists=!/etc/initrd-release ConditionPathExists=!/etc/initrd-release
ConditionSecurity=tpm2 ConditionSecurity=tpm2
ConditionPathExists=/sys/firmware/efi/efivars/StubPcrKernelImage-4a67b082-0a4c-41cf-b6c7-440b29bb8c4f ConditionPathExists=/sys/firmware/efi/efivars/StubPcrKernelImage-4a67b082-0a4c-41cf-b6c7-440b29bb8c4f
[Service] [Service]
Type=oneshot Type=oneshot
RemainAfterExit=yes RemainAfterExit=yes
ExecStart={{ROOTLIBEXECDIR}}/systemd-pcrphase ready ExecStart={{ROOTLIBEXECDIR}}/systemd-pcrphase --graceful ready
ExecStop={{ROOTLIBEXECDIR}}/systemd-pcrphase shutdown ExecStop={{ROOTLIBEXECDIR}}/systemd-pcrphase --graceful shutdown

View File

@ -12,7 +12,8 @@ Description=Repartition Root Disk
Documentation=man:systemd-repart.service(8) Documentation=man:systemd-repart.service(8)
DefaultDependencies=no DefaultDependencies=no
Conflicts=shutdown.target Conflicts=shutdown.target
After=initrd-usr-fs.target Wants=modprobe@loop.service modprobe@dm_mod.service
After=initrd-usr-fs.target modprobe@loop.service modprobe@dm_mod.service
Before=initrd-root-fs.target shutdown.target Before=initrd-root-fs.target shutdown.target
ConditionVirtualization=!container ConditionVirtualization=!container
ConditionDirectoryNotEmpty=|/usr/lib/repart.d ConditionDirectoryNotEmpty=|/usr/lib/repart.d