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 standalone-repart/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
# [1] https://github.com/systemd/systemd/pull/18908#issuecomment-792250110
- '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
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)
NOTE: If using dbus < 1.9.18, you should override the default
policy directory (--with-dbuspolicydir=/etc/dbus-1/system.d).

View File

@ -1,18 +1,24 @@
# SPDX-License-Identifier: LGPL-2.1-or-later
in_files = [
'systemd.bg.catalog',
'systemd.be.catalog',
'systemd.be@latin.catalog',
'systemd.bg.catalog',
'systemd.catalog',
'systemd.da.catalog',
'systemd.de.catalog',
'systemd.fr.catalog',
'systemd.hr.catalog',
'systemd.hu.catalog',
'systemd.it.catalog',
'systemd.ko.catalog',
'systemd.pl.catalog',
'systemd.pt_BR.catalog',
'systemd.ru.catalog',
'systemd.sr.catalog',
'systemd.zh_CN.catalog',
'systemd.zh_TW.catalog',
'systemd.catalog']
]
support_url = get_option('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.
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*`
plus their `sysfs` counterparts. They speak specific `ioctl()`s and
understand specific escape sequences, that other ptys don't understand.
subsystem consists of all the devices `/dev/tty[0-9]*`, `/dev/vcs*`,
`/dev/vcsa*` plus their `sysfs` counterparts. They speak specific `ioctl()`s
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`,
`/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*:
ID_VENDOR_FROM_DATABASE=Broadcom Corporation
acpi:CIXH*:
ID_VENDOR_FROM_DATABASE=Cix Technology (Shanghai) Co., Ltd.
acpi:CMHR*:
ID_VENDOR_FROM_DATABASE=COMHEAR, INC.
@ -105,6 +108,9 @@ acpi:ELAS*:
acpi:ESSX*:
ID_VENDOR_FROM_DATABASE=Everest Semiconductor Co., Ltd.
acpi:ETDS*:
ID_VENDOR_FROM_DATABASE=EyeTech Digital Systems
acpi:EXAR*:
ID_VENDOR_FROM_DATABASE=Exar Corporation
@ -213,6 +219,9 @@ acpi:LTSC*:
acpi:MCHP*:
ID_VENDOR_FROM_DATABASE=Microchip Technology Inc
acpi:MCRY*:
ID_VENDOR_FROM_DATABASE=Micro Crystal AG
acpi:MIPI*:
ID_VENDOR_FROM_DATABASE=MIPI Alliance
@ -2253,6 +2262,9 @@ acpi:DYN*:
acpi:DYX*:
ID_VENDOR_FROM_DATABASE=Dynax Electronics (HK) Ltd
acpi:EAC*:
ID_VENDOR_FROM_DATABASE=Emotiva Audio Corp.
acpi:EAG*:
ID_VENDOR_FROM_DATABASE=ELTEC Elektronik AG
@ -6264,6 +6276,9 @@ acpi:SGL*:
acpi:SGM*:
ID_VENDOR_FROM_DATABASE=SAGEM
acpi:SGN*:
ID_VENDOR_FROM_DATABASE=Shenzhen Soogeen Electronics Co., LTD.
acpi:SGO*:
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 2022-10-31 11:15:33.461268485 +0000
--- 20-acpi-vendor.hwdb.base 2023-02-15 18:03:45.791408751 +0000
+++ 20-acpi-vendor.hwdb 2023-02-15 18:03:45.799408909 +0000
@@ -3,6 +3,8 @@
# Data imported from:
# https://uefi.org/uefi-pnp-export
@ -19,7 +19,7 @@
acpi:AMDI*:
ID_VENDOR_FROM_DATABASE=AMD
@@ -343,6 +342,9 @@
@@ -352,6 +351,9 @@
acpi:AAA*:
ID_VENDOR_FROM_DATABASE=Avolites Ltd
@ -29,7 +29,7 @@
acpi:AAE*:
ID_VENDOR_FROM_DATABASE=Anatek Electronics Inc.
@@ -370,6 +372,9 @@
@@ -379,6 +381,9 @@
acpi:ABO*:
ID_VENDOR_FROM_DATABASE=D-Link Systems Inc
@ -39,7 +39,7 @@
acpi:ABS*:
ID_VENDOR_FROM_DATABASE=Abaco Systems, Inc.
@@ -415,7 +420,7 @@
@@ -424,7 +429,7 @@
acpi:ACO*:
ID_VENDOR_FROM_DATABASE=Allion Computer Inc.
@ -48,7 +48,7 @@
ID_VENDOR_FROM_DATABASE=Aspen Tech Inc
acpi:ACR*:
@@ -691,6 +696,9 @@
@@ -700,6 +705,9 @@
acpi:AMT*:
ID_VENDOR_FROM_DATABASE=AMT International Industry
@ -58,7 +58,7 @@
acpi:AMX*:
ID_VENDOR_FROM_DATABASE=AMX LLC
@@ -739,6 +747,9 @@
@@ -748,6 +756,9 @@
acpi:AOA*:
ID_VENDOR_FROM_DATABASE=AOpen Inc.
@ -68,7 +68,7 @@
acpi:AOE*:
ID_VENDOR_FROM_DATABASE=Advanced Optics Electronics, Inc.
@@ -748,6 +759,9 @@
@@ -757,6 +768,9 @@
acpi:AOT*:
ID_VENDOR_FROM_DATABASE=Alcatel
@ -78,7 +78,7 @@
acpi:APC*:
ID_VENDOR_FROM_DATABASE=American Power Conversion
@@ -926,7 +940,7 @@
@@ -935,7 +949,7 @@
ID_VENDOR_FROM_DATABASE=ALPS ALPINE CO., LTD.
acpi:AUO*:
@ -87,7 +87,7 @@
acpi:AUR*:
ID_VENDOR_FROM_DATABASE=Aureal Semiconductor
@@ -1006,6 +1020,9 @@
@@ -1015,6 +1029,9 @@
acpi:AXE*:
ID_VENDOR_FROM_DATABASE=Axell Corporation
@ -97,7 +97,7 @@
acpi:AXI*:
ID_VENDOR_FROM_DATABASE=American Magnetics
@@ -1162,6 +1179,9 @@
@@ -1171,6 +1188,9 @@
acpi:BML*:
ID_VENDOR_FROM_DATABASE=BIOMED Lab
@ -107,7 +107,7 @@
acpi:BMS*:
ID_VENDOR_FROM_DATABASE=BIOMEDISYS
@@ -1174,6 +1194,9 @@
@@ -1183,6 +1203,9 @@
acpi:BNO*:
ID_VENDOR_FROM_DATABASE=Bang & Olufsen
@ -117,7 +117,7 @@
acpi:BNS*:
ID_VENDOR_FROM_DATABASE=Boulder Nonlinear Systems
@@ -1417,6 +1440,9 @@
@@ -1426,6 +1449,9 @@
acpi:CHA*:
ID_VENDOR_FROM_DATABASE=Chase Research PLC
@ -127,7 +127,7 @@
acpi:CHD*:
ID_VENDOR_FROM_DATABASE=ChangHong Electric Co.,Ltd
@@ -1579,6 +1605,9 @@
@@ -1588,6 +1614,9 @@
acpi:COD*:
ID_VENDOR_FROM_DATABASE=CODAN Pty. Ltd.
@ -137,7 +137,7 @@
acpi:COI*:
ID_VENDOR_FROM_DATABASE=Codec Inc.
@@ -1988,7 +2017,7 @@
@@ -1997,7 +2026,7 @@
ID_VENDOR_FROM_DATABASE=Dragon Information Technology
acpi:DJE*:
@ -146,7 +146,7 @@
acpi:DJP*:
ID_VENDOR_FROM_DATABASE=Maygay Machines, Ltd
@@ -2326,6 +2355,9 @@
@@ -2338,6 +2367,9 @@
acpi:EIN*:
ID_VENDOR_FROM_DATABASE=Elegant Invention
@ -156,7 +156,7 @@
acpi:EKA*:
ID_VENDOR_FROM_DATABASE=MagTek Inc.
@@ -2596,6 +2628,9 @@
@@ -2608,6 +2640,9 @@
acpi:FCG*:
ID_VENDOR_FROM_DATABASE=First International Computer Ltd
@ -166,7 +166,7 @@
acpi:FCS*:
ID_VENDOR_FROM_DATABASE=Focus Enhancements, Inc.
@@ -2972,7 +3007,7 @@
@@ -2984,7 +3019,7 @@
ID_VENDOR_FROM_DATABASE=General Standards Corporation
acpi:GSM*:
@ -175,7 +175,7 @@
acpi:GSN*:
ID_VENDOR_FROM_DATABASE=Grandstream Networks, Inc.
@@ -3082,6 +3117,9 @@
@@ -3094,6 +3129,9 @@
acpi:HEC*:
ID_VENDOR_FROM_DATABASE=Hisense Electric Co., Ltd.
@ -185,7 +185,7 @@
acpi:HEL*:
ID_VENDOR_FROM_DATABASE=Hitachi Micro Systems Europe Ltd
@@ -3214,6 +3252,9 @@
@@ -3226,6 +3264,9 @@
acpi:HSD*:
ID_VENDOR_FROM_DATABASE=HannStar Display Corp
@ -195,7 +195,7 @@
acpi:HSM*:
ID_VENDOR_FROM_DATABASE=AT&T Microelectronics
@@ -3340,6 +3381,9 @@
@@ -3352,6 +3393,9 @@
acpi:ICI*:
ID_VENDOR_FROM_DATABASE=Infotek Communication Inc
@ -205,7 +205,7 @@
acpi:ICM*:
ID_VENDOR_FROM_DATABASE=Intracom SA
@@ -3436,6 +3480,9 @@
@@ -3448,6 +3492,9 @@
acpi:IKE*:
ID_VENDOR_FROM_DATABASE=Ikegami Tsushinki Co. Ltd.
@ -215,7 +215,7 @@
acpi:IKS*:
ID_VENDOR_FROM_DATABASE=Ikos Systems Inc
@@ -3484,6 +3531,9 @@
@@ -3496,6 +3543,9 @@
acpi:IMX*:
ID_VENDOR_FROM_DATABASE=arpara Technology Co., Ltd.
@ -225,7 +225,7 @@
acpi:INA*:
ID_VENDOR_FROM_DATABASE=Inventec Corporation
@@ -4003,6 +4053,9 @@
@@ -4015,6 +4065,9 @@
acpi:LAN*:
ID_VENDOR_FROM_DATABASE=Sodeman Lancom Inc
@ -235,7 +235,7 @@
acpi:LAS*:
ID_VENDOR_FROM_DATABASE=LASAT Comm. A/S
@@ -4051,6 +4104,9 @@
@@ -4063,6 +4116,9 @@
acpi:LED*:
ID_VENDOR_FROM_DATABASE=Long Engineering Design Inc
@ -245,7 +245,7 @@
acpi:LEG*:
ID_VENDOR_FROM_DATABASE=Legerity, Inc
@@ -4069,6 +4125,9 @@
@@ -4081,6 +4137,9 @@
acpi:LGD*:
ID_VENDOR_FROM_DATABASE=LG Display
@ -255,7 +255,7 @@
acpi:LGI*:
ID_VENDOR_FROM_DATABASE=Logitech Inc
@@ -4126,6 +4185,9 @@
@@ -4138,6 +4197,9 @@
acpi:LND*:
ID_VENDOR_FROM_DATABASE=Land Computer Company Ltd
@ -265,7 +265,7 @@
acpi:LNK*:
ID_VENDOR_FROM_DATABASE=Link Tech Inc
@@ -4160,7 +4222,7 @@
@@ -4172,7 +4234,7 @@
ID_VENDOR_FROM_DATABASE=Design Technology
acpi:LPL*:
@ -274,7 +274,7 @@
acpi:LSC*:
ID_VENDOR_FROM_DATABASE=LifeSize Communications
@@ -4336,6 +4398,9 @@
@@ -4348,6 +4410,9 @@
acpi:MCX*:
ID_VENDOR_FROM_DATABASE=Millson Custom Solutions Inc.
@ -284,7 +284,7 @@
acpi:MDA*:
ID_VENDOR_FROM_DATABASE=Media4 Inc
@@ -4576,6 +4641,9 @@
@@ -4588,6 +4653,9 @@
acpi:MOM*:
ID_VENDOR_FROM_DATABASE=Momentum Data Systems
@ -294,7 +294,7 @@
acpi:MOS*:
ID_VENDOR_FROM_DATABASE=Moses Corporation
@@ -4813,6 +4881,9 @@
@@ -4825,6 +4893,9 @@
acpi:NAL*:
ID_VENDOR_FROM_DATABASE=Network Alchemy
@ -304,7 +304,7 @@
acpi:NAT*:
ID_VENDOR_FROM_DATABASE=NaturalPoint Inc.
@@ -5347,6 +5418,9 @@
@@ -5359,6 +5430,9 @@
acpi:PCX*:
ID_VENDOR_FROM_DATABASE=PC Xperten
@ -314,7 +314,7 @@
acpi:PDM*:
ID_VENDOR_FROM_DATABASE=Psion Dacom Plc.
@@ -5410,9 +5484,6 @@
@@ -5422,9 +5496,6 @@
acpi:PHE*:
ID_VENDOR_FROM_DATABASE=Philips Medical Systems Boeblingen GmbH
@ -324,7 +324,7 @@
acpi:PHL*:
ID_VENDOR_FROM_DATABASE=Philips Consumer Electronics Company
@@ -5503,9 +5574,6 @@
@@ -5515,9 +5586,6 @@
acpi:PNL*:
ID_VENDOR_FROM_DATABASE=Panelview, Inc.
@ -334,7 +334,7 @@
acpi:PNR*:
ID_VENDOR_FROM_DATABASE=Planar Systems, Inc.
@@ -5971,9 +6039,6 @@
@@ -5983,9 +6051,6 @@
acpi:RTI*:
ID_VENDOR_FROM_DATABASE=Rancho Tech Inc
@ -344,7 +344,7 @@
acpi:RTL*:
ID_VENDOR_FROM_DATABASE=Realtek Semiconductor Company Ltd
@@ -6145,9 +6210,6 @@
@@ -6157,9 +6222,6 @@
acpi:SEE*:
ID_VENDOR_FROM_DATABASE=SeeColor Corporation
@ -354,7 +354,7 @@
acpi:SEI*:
ID_VENDOR_FROM_DATABASE=Seitz & Associates Inc
@@ -6622,6 +6684,9 @@
@@ -6637,6 +6699,9 @@
acpi:SVD*:
ID_VENDOR_FROM_DATABASE=SVD Computer
@ -364,7 +364,7 @@
acpi:SVI*:
ID_VENDOR_FROM_DATABASE=Sun Microsystems
@@ -6706,6 +6771,9 @@
@@ -6721,6 +6786,9 @@
acpi:SZM*:
ID_VENDOR_FROM_DATABASE=Shenzhen MTC Co., Ltd
@ -374,7 +374,7 @@
acpi:TAA*:
ID_VENDOR_FROM_DATABASE=Tandberg
@@ -6796,6 +6864,9 @@
@@ -6811,6 +6879,9 @@
acpi:TDG*:
ID_VENDOR_FROM_DATABASE=Six15 Technologies
@ -384,7 +384,7 @@
acpi:TDM*:
ID_VENDOR_FROM_DATABASE=Tandem Computer Europe Inc
@@ -6838,6 +6909,9 @@
@@ -6853,6 +6924,9 @@
acpi:TEV*:
ID_VENDOR_FROM_DATABASE=Televés, S.A.
@ -394,7 +394,7 @@
acpi:TEZ*:
ID_VENDOR_FROM_DATABASE=Tech Source Inc.
@@ -6964,9 +7038,6 @@
@@ -6979,9 +7053,6 @@
acpi:TNC*:
ID_VENDOR_FROM_DATABASE=TNC Industrial Company Ltd
@ -404,7 +404,7 @@
acpi:TNM*:
ID_VENDOR_FROM_DATABASE=TECNIMAGEN SA
@@ -7276,14 +7347,14 @@
@@ -7291,14 +7362,14 @@
acpi:UNC*:
ID_VENDOR_FROM_DATABASE=Unisys Corporation
@ -425,7 +425,7 @@
acpi:UNI*:
ID_VENDOR_FROM_DATABASE=Uniform Industry Corp.
@@ -7318,6 +7389,9 @@
@@ -7333,6 +7404,9 @@
acpi:USA*:
ID_VENDOR_FROM_DATABASE=Utimaco Safeware AG
@ -435,7 +435,7 @@
acpi:USD*:
ID_VENDOR_FROM_DATABASE=U.S. Digital Corporation
@@ -7576,9 +7650,6 @@
@@ -7591,9 +7665,6 @@
acpi:WAL*:
ID_VENDOR_FROM_DATABASE=Wave Access
@ -445,7 +445,7 @@
acpi:WAV*:
ID_VENDOR_FROM_DATABASE=Wavephore
@@ -7706,7 +7777,7 @@
@@ -7721,7 +7792,7 @@
ID_VENDOR_FROM_DATABASE=WyreStorm Technologies LLC
acpi:WYS*:
@ -454,7 +454,7 @@
acpi:WYT*:
ID_VENDOR_FROM_DATABASE=Wooyoung Image & Information Co.,Ltd.
@@ -7720,9 +7791,6 @@
@@ -7735,9 +7806,6 @@
acpi:XDM*:
ID_VENDOR_FROM_DATABASE=XDM Ltd.
@ -464,7 +464,7 @@
acpi:XES*:
ID_VENDOR_FROM_DATABASE=Extreme Engineering Solutions, Inc.
@@ -7753,9 +7821,6 @@
@@ -7768,9 +7836,6 @@
acpi:XNT*:
ID_VENDOR_FROM_DATABASE=XN Technologies, Inc.
@ -474,7 +474,7 @@
acpi:XQU*:
ID_VENDOR_FROM_DATABASE=SHANGHAI SVA-DAV ELECTRONICS CO., LTD
@@ -7822,6 +7887,9 @@
@@ -7837,6 +7902,9 @@
acpi:ZBX*:
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*
ID_MODEL_FROM_DATABASE=passport00
usb:v0002p7007*
ID_MODEL_FROM_DATABASE=HPRT XT300
usb:v0003*
ID_VENDOR_FROM_DATABASE=Club Mac
@ -26,6 +29,15 @@ usb:v0011*
usb:v0011p7788*
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*
ID_VENDOR_FROM_DATABASE=Planex
@ -122,6 +134,9 @@ usb:v0218*
usb:v0218p0301*
ID_MODEL_FROM_DATABASE=MIDI Port
usb:v0231*
ID_VENDOR_FROM_DATABASE=Sonuus Limited
usb:v02AD*
ID_VENDOR_FROM_DATABASE=HUMAX Co., Ltd.
@ -158,6 +173,12 @@ usb:v03C3*
usb:v03C3p120E*
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*
ID_VENDOR_FROM_DATABASE=Shenzhen Sinote Tech-Electron Co., Ltd
@ -624,7 +645,7 @@ usb:v03F0p0223*
ID_MODEL_FROM_DATABASE=Digital Drive Flash Reader
usb:v03F0p022A*
ID_MODEL_FROM_DATABASE=Laserjet CP1525nw
ID_MODEL_FROM_DATABASE=LaserJet CP1525nw/x
usb:v03F0p0241*
ID_MODEL_FROM_DATABASE=Link-5 micro dongle
@ -773,6 +794,9 @@ usb:v03F0p0811*
usb:v03F0p0817*
ID_MODEL_FROM_DATABASE=LaserJet 3300
usb:v03F0p0853*
ID_MODEL_FROM_DATABASE=ENVY 5000 series
usb:v03F0p0901*
ID_MODEL_FROM_DATABASE=ScanJet 2300c
@ -1313,6 +1337,9 @@ usb:v03F0p2D11*
usb:v03F0p2D17*
ID_MODEL_FROM_DATABASE=Printing Support
usb:v03F0p2D2A*
ID_MODEL_FROM_DATABASE=LaserJet Pro MFP M225dw
usb:v03F0p2E11*
ID_MODEL_FROM_DATABASE=PSC 1000
@ -1508,6 +1535,9 @@ usb:v03F0p3D17*
usb:v03F0p3E02*
ID_MODEL_FROM_DATABASE=PhotoSmart 7550
usb:v03F0p3E07*
ID_MODEL_FROM_DATABASE=x755w Flash Drive
usb:v03F0p3E17*
ID_MODEL_FROM_DATABASE=LaserJet P1006
@ -1598,6 +1628,9 @@ usb:v03F0p4717*
usb:v03F0p4811*
ID_MODEL_FROM_DATABASE=PSC 1600
usb:v03F0p484A*
ID_MODEL_FROM_DATABASE=Elite Dock G4
usb:v03F0p4911*
ID_MODEL_FROM_DATABASE=PSC 2350
@ -2357,8 +2390,11 @@ usb:v0403p6014*
usb:v0403p6015*
ID_MODEL_FROM_DATABASE=Bridge(I2C/SPI/UART/FIFO)
usb:v0403p601E*
ID_MODEL_FROM_DATABASE=FT600 16-bit FIFO IC
usb:v0403p601F*
ID_MODEL_FROM_DATABASE=Myriad-RF LimeSDR-Mini
ID_MODEL_FROM_DATABASE=FT601 32-bit FIFO IC
usb:v0403p6EE0*
ID_MODEL_FROM_DATABASE=EZO Carrier Board
@ -2627,6 +2663,9 @@ usb:v0403pD491*
usb:v0403pD578*
ID_MODEL_FROM_DATABASE=Accesio USB-COM-4SM
usb:v0403pD678*
ID_MODEL_FROM_DATABASE=GammaScout
usb:v0403pD6F8*
ID_MODEL_FROM_DATABASE=UNI Black BOX
@ -3554,9 +3593,15 @@ usb:v040D*
usb:v040Dp3184*
ID_MODEL_FROM_DATABASE=VNT VT6656 USB-802.11 Wireless LAN Adapter
usb:v040Dp340B*
ID_MODEL_FROM_DATABASE=FX-Audio DAC-X6
usb:v040Dp340F*
ID_MODEL_FROM_DATABASE=Audinst HUD-mx2
usb:v040Dp6204*
ID_MODEL_FROM_DATABASE=Vectro VT6204 IDE bridge
usb:v040Dp6205*
ID_MODEL_FROM_DATABASE=USB 2.0 Card Reader
@ -3966,7 +4011,7 @@ usb:v0416p7723*
ID_MODEL_FROM_DATABASE=SD Card Reader
usb:v0416pB23C*
ID_MODEL_FROM_DATABASE=KT108 keyboard
ID_MODEL_FROM_DATABASE=Gaming Keyboard
usb:v0416pC141*
ID_MODEL_FROM_DATABASE=Barcode Scanner
@ -4088,6 +4133,9 @@ usb:v041Ep3030*
usb:v041Ep3040*
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*
ID_MODEL_FROM_DATABASE=Sound Blaster Audigy 2 ZS External
@ -4136,6 +4184,9 @@ usb:v041Ep3F04*
usb:v041Ep3F07*
ID_MODEL_FROM_DATABASE=E-Mu Xmidi 1x1
usb:v041Ep3F0A*
ID_MODEL_FROM_DATABASE=E-Mu Tracker Pre
usb:v041Ep3F0E*
ID_MODEL_FROM_DATABASE=Xmidi 1x1 Tab
@ -4320,7 +4371,7 @@ usb:v041Ep4095*
ID_MODEL_FROM_DATABASE=Live! Cam Sync HD [VF0770]
usb:v041Ep4097*
ID_MODEL_FROM_DATABASE=Live! Cam Chat HD [VF0700]
ID_MODEL_FROM_DATABASE=Live! Cam Chat HD [VF0700/VF0790]
usb:v041Ep4099*
ID_MODEL_FROM_DATABASE=Creative VF0800 [RealSense Camera SR300]
@ -4943,6 +4994,9 @@ usb:v0424*
usb:v0424p0001*
ID_MODEL_FROM_DATABASE=Integrated Hub
usb:v0424p0007*
ID_MODEL_FROM_DATABASE=ULPI Transciever [USB3320]
usb:v0424p0140*
ID_MODEL_FROM_DATABASE=LPC47M14x hub
@ -5216,6 +5270,9 @@ usb:v0430p00A2*
usb:v0430p0100*
ID_MODEL_FROM_DATABASE=3-button Mouse
usb:v0430p0406*
ID_MODEL_FROM_DATABASE=KVM Switch
usb:v0430p0502*
ID_MODEL_FROM_DATABASE=Panasonic CF-19 HID Touch Panel
@ -5738,6 +5795,9 @@ usb:v043Dp0142*
usb:v043Dp01FA*
ID_MODEL_FROM_DATABASE=S310 series
usb:v043Dp020E*
ID_MODEL_FROM_DATABASE=RICOH Aficio SP 4410SF
usb:v043Dp4303*
ID_MODEL_FROM_DATABASE=Xerox WorkCentre Pro 412
@ -6227,6 +6287,15 @@ usb:v0455*
usb:v0456*
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*
ID_MODEL_FROM_DATABASE=FT2232 JTAG ICE [gnICE]
@ -6530,6 +6599,9 @@ usb:v0458p7025*
usb:v0458p7029*
ID_MODEL_FROM_DATABASE=Genius Look 320s (SN9C201 + HV7131R)
usb:v0458p702C*
ID_MODEL_FROM_DATABASE=Trek 320R Camera
usb:v0458p702F*
ID_MODEL_FROM_DATABASE=Genius Slim 322
@ -6963,7 +7035,7 @@ usb:v045Ep028E*
ID_MODEL_FROM_DATABASE=Xbox360 Controller
usb:v045Ep028F*
ID_MODEL_FROM_DATABASE=Xbox360 Wireless Controller
ID_MODEL_FROM_DATABASE=Xbox360 Wireless Controller via Plug & Charge Cable
usb:v045Ep0290*
ID_MODEL_FROM_DATABASE=Xbox360 Performance Pipe (PIX)
@ -7025,6 +7097,9 @@ usb:v045Ep02D5*
usb:v045Ep02DD*
ID_MODEL_FROM_DATABASE=Xbox One Controller (Firmware 2015)
usb:v045Ep02E0*
ID_MODEL_FROM_DATABASE=Xbox One Wireless Controller
usb:v045Ep02E3*
ID_MODEL_FROM_DATABASE=Xbox One Elite Controller
@ -7037,6 +7112,12 @@ usb:v045Ep02EA*
usb:v045Ep02FD*
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*
ID_MODEL_FROM_DATABASE=Windows Powered Pocket PC 2002
@ -7601,6 +7682,21 @@ usb:v045Ep0955*
usb:v045Ep0957*
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*
ID_MODEL_FROM_DATABASE=RTL8153B GigE [Surface Ethernet Adapter]
@ -7608,7 +7704,10 @@ usb:v045Ep09C0*
ID_MODEL_FROM_DATABASE=Surface Type Cover
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*
ID_MODEL_FROM_DATABASE=Xbox Wireless Controller (model 1914)
@ -7805,6 +7904,9 @@ usb:v0461p4D51*
usb:v0461p4D62*
ID_MODEL_FROM_DATABASE=HP Laser Mobile Mini Mouse
usb:v0461p4D64*
ID_MODEL_FROM_DATABASE=Asus wired optical mouse - Model MOEWUO
usb:v0461p4D75*
ID_MODEL_FROM_DATABASE=Rocketfish RF-FLBTAD Bluetooth Adapter
@ -7835,6 +7937,9 @@ usb:v0461p4E04*
usb:v0461p4E22*
ID_MODEL_FROM_DATABASE=Dell Mouse, 2 Buttons, Modell: MS111-P
usb:v0461p4E26*
ID_MODEL_FROM_DATABASE=Asus wired keyboard - model KB73211
usb:v0461p4E6F*
ID_MODEL_FROM_DATABASE=Acer Wired Keyboard Model KBAY211
@ -7910,15 +8015,87 @@ usb:v046Ap003E*
usb:v046Ap0041*
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*
ID_MODEL_FROM_DATABASE=eHealth Terminal ST 1503
usb:v046Ap0081*
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*
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*
ID_MODEL_FROM_DATABASE=R-300 Wireless Mouse Receiver
@ -7928,12 +8105,24 @@ usb:v046Ap010D*
usb:v046Ap0180*
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*
ID_MODEL_FROM_DATABASE=Keyboard
usb:v046ApB091*
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*
ID_VENDOR_FROM_DATABASE=American Megatrends, Inc.
@ -8063,6 +8252,12 @@ usb:v046Dp0836*
usb:v046Dp0837*
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*
ID_MODEL_FROM_DATABASE=QuickCam Express
@ -8096,6 +8291,9 @@ usb:v046Dp085C*
usb:v046Dp085E*
ID_MODEL_FROM_DATABASE=BRIO Ultra HD Webcam
usb:v046Dp086B*
ID_MODEL_FROM_DATABASE=BRIO 4K Stream Edition
usb:v046Dp0870*
ID_MODEL_FROM_DATABASE=QuickCam Express
@ -8429,6 +8627,9 @@ usb:v046Dp0A45*
usb:v046Dp0A4D*
ID_MODEL_FROM_DATABASE=G430 Surround Sound Gaming Headset
usb:v046Dp0A4F*
ID_MODEL_FROM_DATABASE=MINI BOOM
usb:v046Dp0A5B*
ID_MODEL_FROM_DATABASE=G933 Wireless Headset Dongle
@ -8441,6 +8642,9 @@ usb:v046Dp0A66*
usb:v046Dp0A8F*
ID_MODEL_FROM_DATABASE=H390 headset with microphone
usb:v046Dp0A90*
ID_MODEL_FROM_DATABASE=Zone Receiver
usb:v046Dp0AAA*
ID_MODEL_FROM_DATABASE=Logitech G PRO X Gaming Headset
@ -8678,6 +8882,9 @@ usb:v046DpC083*
usb:v046DpC084*
ID_MODEL_FROM_DATABASE=G203 Gaming Mouse
usb:v046DpC088*
ID_MODEL_FROM_DATABASE=G Pro Wireless gaming mouse (wired mode)
usb:v046DpC08B*
ID_MODEL_FROM_DATABASE=G502 SE HERO Gaming Mouse
@ -9129,7 +9336,7 @@ usb:v046DpC537*
ID_MODEL_FROM_DATABASE=Cordless Mouse Receiver
usb:v046DpC539*
ID_MODEL_FROM_DATABASE=Cordless Mouse Receiver
ID_MODEL_FROM_DATABASE=Lightspeed Receiver
usb:v046DpC53A*
ID_MODEL_FROM_DATABASE=PowerPlay Wireless Charging System
@ -9137,6 +9344,12 @@ usb:v046DpC53A*
usb:v046DpC53D*
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*
ID_MODEL_FROM_DATABASE=3Dconnexion Spacemouse Plus XT
@ -10031,6 +10244,9 @@ usb:v047FpAC01*
usb:v047FpAD01*
ID_MODEL_FROM_DATABASE=GameCom 777 5.1 Headset
usb:v047FpAF00*
ID_MODEL_FROM_DATABASE=DA70
usb:v047FpAF01*
ID_MODEL_FROM_DATABASE=DA80
@ -10043,6 +10259,9 @@ usb:v047FpC00E*
usb:v047FpC03B*
ID_MODEL_FROM_DATABASE=HD1
usb:v047FpC053*
ID_MODEL_FROM_DATABASE=Blackwire C5220 headset (remote control and 3.5mm audio adapter)
usb:v047FpCA01*
ID_MODEL_FROM_DATABASE=Calisto 800 Series
@ -10313,6 +10532,9 @@ usb:v0483pA171*
usb:v0483pA2E0*
ID_MODEL_FROM_DATABASE=BMeasure instrument
usb:v0483pA43F*
ID_MODEL_FROM_DATABASE=inbed.io - Unified Controller (Gen 2)
usb:v0483pDF11*
ID_MODEL_FROM_DATABASE=STM Device in DFU Mode
@ -10385,6 +10607,15 @@ usb:v0489pE04D*
usb:v0489pE055*
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*
ID_VENDOR_FROM_DATABASE=S-MOS Systems, Inc.
@ -10409,6 +10640,12 @@ usb:v048Dp1336*
usb:v048Dp1345*
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*
ID_MODEL_FROM_DATABASE=IT8297 RGB LED Controller
@ -11033,6 +11270,9 @@ usb:v04A6p0181*
usb:v04A7*
ID_VENDOR_FROM_DATABASE=Visioneer
usb:v04A7p0063*
ID_MODEL_FROM_DATABASE=Visioneer DocuMate 152i
usb:v04A7p0100*
ID_MODEL_FROM_DATABASE=StrobePro
@ -13247,6 +13487,9 @@ usb:v04A9p32D5*
usb:v04A9p32DB*
ID_MODEL_FROM_DATABASE=SELPHY CP1300
usb:v04A9p3302*
ID_MODEL_FROM_DATABASE=SELPHY CP1500
usb:v04AA*
ID_VENDOR_FROM_DATABASE=DaeWoo Telecom, Ltd
@ -13484,6 +13727,9 @@ usb:v04B0p042A*
usb:v04B0p0430*
ID_MODEL_FROM_DATABASE=D7100
usb:v04B0p0434*
ID_MODEL_FROM_DATABASE=D610
usb:v04B0p0436*
ID_MODEL_FROM_DATABASE=D810
@ -13532,6 +13778,9 @@ usb:v04B3p301B*
usb:v04B3p301C*
ID_MODEL_FROM_DATABASE=Enhanced Performance Keyboard
usb:v04B3p301E*
ID_MODEL_FROM_DATABASE=Keyboard with UltraNav (SK-8845RC)
usb:v04B3p3020*
ID_MODEL_FROM_DATABASE=Enhanced Performance Keyboard
@ -14351,6 +14600,9 @@ usb:v04B8p0E03*
usb:v04B8p1114*
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*
ID_MODEL_FROM_DATABASE=ET-4750 [WorkForce ET-4750 EcoTank All-in-One]
@ -14771,6 +15023,9 @@ usb:v04CAp004F*
usb:v04CAp008A*
ID_MODEL_FROM_DATABASE=Acer Wired Mouse Model SM-9023
usb:v04CAp00F9*
ID_MODEL_FROM_DATABASE=Multimedia Keyboard
usb:v04CAp1766*
ID_MODEL_FROM_DATABASE=HID Monitor Controls
@ -14813,6 +15068,9 @@ usb:v04CAp7046*
usb:v04CAp7054*
ID_MODEL_FROM_DATABASE=HP HD Webcam
usb:v04CAp705A*
ID_MODEL_FROM_DATABASE=HD Webcam (960×540)
usb:v04CAp9304*
ID_MODEL_FROM_DATABASE=Hub
@ -15218,6 +15476,12 @@ usb:v04D5*
usb:v04D6*
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*
ID_VENDOR_FROM_DATABASE=Oki Semiconductor
@ -15248,6 +15512,9 @@ usb:v04D8p0033*
usb:v04D8p0036*
ID_MODEL_FROM_DATABASE=PICkit Serial Analyzer
usb:v04D8p00DD*
ID_MODEL_FROM_DATABASE=MCP2221(a) UART/I2C Bridge
usb:v04D8p00E0*
ID_MODEL_FROM_DATABASE=PIC32 Starter Board
@ -15293,6 +15560,15 @@ usb:v04D8pC001*
usb:v04D8pE11C*
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*
ID_MODEL_FROM_DATABASE=BeamiRC 2.0 CNC remote controller analoge
@ -15368,6 +15644,12 @@ usb:v04D9p0022*
usb:v04D9p0129*
ID_MODEL_FROM_DATABASE=Keyboard [KBPV8000]
usb:v04D9p0169*
ID_MODEL_FROM_DATABASE=Keyboard
usb:v04D9p0198*
ID_MODEL_FROM_DATABASE=Keyboard
usb:v04D9p0348*
ID_MODEL_FROM_DATABASE=Keyboard
@ -16638,7 +16920,7 @@ usb:v04E8p685E*
ID_MODEL_FROM_DATABASE=GT-I9100 / GT-C3350 Phones (USB Debugging mode)
usb:v04E8p6860*
ID_MODEL_FROM_DATABASE=Galaxy A5 (MTP)
ID_MODEL_FROM_DATABASE=Galaxy series, misc. (MTP mode)
usb:v04E8p6863*
ID_MODEL_FROM_DATABASE=Galaxy series, misc. (tethering mode)
@ -17111,6 +17393,12 @@ usb:v04F2pB604*
usb:v04F2pB681*
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*
ID_VENDOR_FROM_DATABASE=Elan Microelectronics Corp.
@ -17162,6 +17450,9 @@ usb:v04F3p04A0*
usb:v04F3p0C28*
ID_MODEL_FROM_DATABASE=fingerprint sensor [FeinTech FPS00200]
usb:v04F3p0C3D*
ID_MODEL_FROM_DATABASE=Elan:Fingerprint
usb:v04F3p2234*
ID_MODEL_FROM_DATABASE=Touchscreen
@ -17954,6 +18245,9 @@ usb:v04F9p0245*
usb:v04F9p0248*
ID_MODEL_FROM_DATABASE=DCP-7055 scanner/printer
usb:v04F9p024A*
ID_MODEL_FROM_DATABASE=DCP-7065DN
usb:v04F9p024E*
ID_MODEL_FROM_DATABASE=MFC-7460DN
@ -18782,6 +19076,9 @@ usb:v04F9p2044*
usb:v04F9p204D*
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*
ID_MODEL_FROM_DATABASE=PT-P700 P-touch Label Printer
@ -19751,6 +20048,9 @@ usb:v0536*
usb:v0536p01A0*
ID_MODEL_FROM_DATABASE=PDT
usb:v0536p01CA*
ID_MODEL_FROM_DATABASE=IT4800 Area Imager
usb:v0537*
ID_VENDOR_FROM_DATABASE=Inventec Corp.
@ -20570,9 +20870,15 @@ usb:v054Cp04CB*
usb:v054Cp0541*
ID_MODEL_FROM_DATABASE=DSC-HX100V [Cybershot Digital Still Camera]
usb:v054Cp0568*
ID_MODEL_FROM_DATABASE=DSC-H100 in Mass Storage mode
usb:v054Cp05C4*
ID_MODEL_FROM_DATABASE=DualShock 4 [CUH-ZCT1x]
usb:v054Cp0643*
ID_MODEL_FROM_DATABASE=DSC-H100 in PTP/MTP mode
usb:v054Cp0689*
ID_MODEL_FROM_DATABASE=Walkman NWZ-B173F
@ -20612,9 +20918,15 @@ usb:v054Cp08B7*
usb:v054Cp094E*
ID_MODEL_FROM_DATABASE=ILCE-6000 (aka Alpha-6000) in PC Remote mode
usb:v054Cp098D*
ID_MODEL_FROM_DATABASE=Walkman NWZ-B183F
usb:v054Cp0994*
ID_MODEL_FROM_DATABASE=ILCE-6000 (aka Alpha-6000) in charging mode
usb:v054Cp09C2*
ID_MODEL_FROM_DATABASE=D33021 Storage
usb:v054Cp09CC*
ID_MODEL_FROM_DATABASE=DualShock 4 [CUH-ZCT2x]
@ -21725,12 +22037,24 @@ usb:v056Ap03AA*
usb:v056Ap03AC*
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*
ID_MODEL_FROM_DATABASE=CTL-4100WL [Intuos BT (S)]
usb:v056Ap03C7*
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*
ID_MODEL_FROM_DATABASE=PenPartner 4x5
@ -22250,6 +22574,9 @@ usb:v0572p1301*
usb:v0572p1328*
ID_MODEL_FROM_DATABASE=TrendNet TFM-561 modem
usb:v0572p1340*
ID_MODEL_FROM_DATABASE=CX93010 ACF Modem
usb:v0572p1804*
ID_MODEL_FROM_DATABASE=HP Dock Audio
@ -22635,7 +22962,7 @@ usb:v057Ep0304*
ID_MODEL_FROM_DATABASE=RVT-H Reader
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*
ID_MODEL_FROM_DATABASE=Wii Remote Controller RVL-003
@ -22643,6 +22970,9 @@ usb:v057Ep0306*
usb:v057Ep0337*
ID_MODEL_FROM_DATABASE=Wii U GameCube Controller Adapter
usb:v057Ep0341*
ID_MODEL_FROM_DATABASE=DRH GamePad Host [Nintendo Wii U]
usb:v057Ep2000*
ID_MODEL_FROM_DATABASE=Switch
@ -23390,6 +23720,9 @@ usb:v0584pB000*
usb:v0584pB020*
ID_MODEL_FROM_DATABASE=REX-USB60F
usb:v0584pB022*
ID_MODEL_FROM_DATABASE=RTX-USB60F
usb:v0585*
ID_VENDOR_FROM_DATABASE=FlashPoint Technology, Inc.
@ -24089,6 +24422,9 @@ usb:v059Fp106D*
usb:v059Fp106E*
ID_MODEL_FROM_DATABASE=Porsche Design Desktop Drive
usb:v059Fp1093*
ID_MODEL_FROM_DATABASE=Rugged
usb:v059Fp1094*
ID_MODEL_FROM_DATABASE=Rugged THB
@ -24185,6 +24521,9 @@ usb:v05A6p0004*
usb:v05A6p0008*
ID_MODEL_FROM_DATABASE=STA1520 Tuning Adapter
usb:v05A6p0009*
ID_MODEL_FROM_DATABASE=Console
usb:v05A6p0A00*
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
usb:v05A7p40FE*
ID_MODEL_FROM_DATABASE=SoundLink Color II speaker
ID_MODEL_FROM_DATABASE=SoundLink Color II / Flex
usb:v05A7pBC50*
ID_MODEL_FROM_DATABASE=SoundLink Wireless Mobile speaker
@ -24566,6 +24905,12 @@ usb:v05ACp1006*
usb:v05ACp1008*
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*
ID_MODEL_FROM_DATABASE=Speakers
@ -24695,6 +25040,9 @@ usb:v05ACp129A*
usb:v05ACp129C*
ID_MODEL_FROM_DATABASE=iPhone 4(CDMA)
usb:v05ACp129D*
ID_MODEL_FROM_DATABASE=iPhone
usb:v05ACp129E*
ID_MODEL_FROM_DATABASE=iPod Touch 4.Gen
@ -24704,6 +25052,9 @@ usb:v05ACp129F*
usb:v05ACp12A0*
ID_MODEL_FROM_DATABASE=iPhone 4S
usb:v05ACp12A1*
ID_MODEL_FROM_DATABASE=iPhone
usb:v05ACp12A2*
ID_MODEL_FROM_DATABASE=iPad 2 (3G; 64GB)
@ -24719,8 +25070,11 @@ usb:v05ACp12A5*
usb:v05ACp12A6*
ID_MODEL_FROM_DATABASE=iPad 3 (3G, 16 GB)
usb:v05ACp12A7*
ID_MODEL_FROM_DATABASE=TV Device
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*
ID_MODEL_FROM_DATABASE=iPad 2
@ -24731,6 +25085,15 @@ usb:v05ACp12AA*
usb:v05ACp12AB*
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*
ID_MODEL_FROM_DATABASE=iPod Shuffle
@ -24761,9 +25124,24 @@ usb:v05ACp1401*
usb:v05ACp1402*
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*
ID_MODEL_FROM_DATABASE=SuperDrive [A1379]
usb:v05ACp1624*
ID_MODEL_FROM_DATABASE=Nova
usb:v05ACp1625*
ID_MODEL_FROM_DATABASE=iBus
usb:v05ACp8005*
ID_MODEL_FROM_DATABASE=OHCI Root Hub Simulation
@ -24845,6 +25223,9 @@ usb:v05ACp8289*
usb:v05ACp828C*
ID_MODEL_FROM_DATABASE=Bluetooth Host Controller
usb:v05ACp828D*
ID_MODEL_FROM_DATABASE=Bluetooth Host Controller
usb:v05ACp8290*
ID_MODEL_FROM_DATABASE=Bluetooth Host Controller
@ -25262,6 +25643,9 @@ usb:v05C8p03BC*
usb:v05C8p03CB*
ID_MODEL_FROM_DATABASE=HP Wide Vision HD Integrated Webcam
usb:v05C8p03D2*
ID_MODEL_FROM_DATABASE=HP TrueVision HD Camera
usb:v05C8p0403*
ID_MODEL_FROM_DATABASE=Webcam
@ -26132,6 +26516,9 @@ usb:v05DCpB047*
usb:v05DCpB051*
ID_MODEL_FROM_DATABASE=microSD RDR UHS-I Card Reader [LRWM03U-7000]
usb:v05DCpB054*
ID_MODEL_FROM_DATABASE=Dual-Slot Reader [LRW400U]
usb:v05DCpBA02*
ID_MODEL_FROM_DATABASE=Workflow CFR1
@ -26751,7 +27138,7 @@ usb:v0603p6871*
ID_MODEL_FROM_DATABASE=Mouse
usb:v0603p8611*
ID_MODEL_FROM_DATABASE=NTK96550 based camera
ID_MODEL_FROM_DATABASE=NTK96550-based camera (mass storage mode)
usb:v0604*
ID_VENDOR_FROM_DATABASE=Jean Co., Ltd
@ -52446,7 +52833,7 @@ usb:v13FDp3E40*
ID_MODEL_FROM_DATABASE=ZALMAN ZM-VE350
usb:v13FE*
ID_VENDOR_FROM_DATABASE=Kingston Technology Company Inc.
ID_VENDOR_FROM_DATABASE=Phison Electronics Corp.
usb:v13FEp1A00*
ID_MODEL_FROM_DATABASE=512MB/1GB Flash Drive
@ -69156,16 +69543,19 @@ usb:v595Ap0001*
ID_MODEL_FROM_DATABASE=Touchscreen
usb:v5986*
ID_VENDOR_FROM_DATABASE=Acer, Inc
ID_VENDOR_FROM_DATABASE=Bison Electronics Inc.
usb:v5986p0100*
ID_MODEL_FROM_DATABASE=Orbicam
ID_MODEL_FROM_DATABASE=Acer Orbicam
usb:v5986p0101*
ID_MODEL_FROM_DATABASE=USB2.0 Camera
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*
ID_MODEL_FROM_DATABASE=HP Webcam
@ -69189,7 +69579,7 @@ usb:v5986p01A9*
ID_MODEL_FROM_DATABASE=Lenovo Integrated Webcam
usb:v5986p0200*
ID_MODEL_FROM_DATABASE=OrbiCam
ID_MODEL_FROM_DATABASE=Acer OrbiCam
usb:v5986p0202*
ID_MODEL_FROM_DATABASE=Fujitsu Webcam

View File

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

View File

@ -1,11 +1,34 @@
# This file is part of systemd.
#
# ########################### MATCHING #######################################
#
# The lookup keys are composed in:
# 60-evdev.rules
#
# Match string formats:
# evdev:<modalias>
# evdev:name:<device name>:dmi:<dmi string>
# Supported hardware matches are:
# - Generic input devices match:
# 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
# /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_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
evdev:name:AlpsPS/2 ALPS DualPoint TouchPad:dmi:bvn*:bvr*:bd*:svnDellInc.:pnInspironN5040:*
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_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
#########################################
@ -384,7 +462,8 @@ evdev:name:SynPS/2 Synaptics TouchPad:dmi:*svnHP:pnHPSpectreNotebook:*
EVDEV_ABS_36=1083:4808:65
# 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_01=1119:4741:61
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_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
#########################################
@ -649,6 +735,17 @@ evdev:input:b0003v6161p4D15*
EVDEV_ABS_00=::152
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
###########################################################

View File

@ -19,14 +19,14 @@
# 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 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
# in /sys/class/input/eventX/device/id.
#
# - AT keyboard DMI data matches:
# evdev:atkbd:dmi:bvn*:bvr*:bd*:svn<vendor>:pn<product>:pvr*
# <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:
# 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?/capabilities/ev" and <vendor> is the
# 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 ######################################
#
@ -76,22 +91,6 @@
# Examples of such devices: Chromebooks where the top row is used for both
# 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
##########################################
@ -278,6 +277,13 @@ evdev:atkbd:dmi:bvn*:bvr*:bd*:svnNotebook:pnW65_67SZ:*
KEYBOARD_KEY_ae=!volumedown
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
###########################################################
@ -296,6 +302,9 @@ evdev:atkbd:dmi:bvn*:bvr*:bd*:svnCompaq*:pn*Evo*N*:*
KEYBOARD_KEY_9e=email
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:b0003v049Fp008D*
KEYBOARD_KEY_0c0011=presentation
@ -407,6 +416,8 @@ evdev:atkbd:dmi:bvn*:bvr*:bd*:svnDell*:pnXPS12-9Q33*:*
KEYBOARD_KEY_88=wlan
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
evdev:name:Dell WMI hotkeys:dmi:bvn*:bvr*:bd*:svnDell*:pnLatitude*:*
# Dell Precision microphone mute
@ -596,6 +607,13 @@ evdev:atkbd:dmi:bvn*:bvr*:bd*:svnHP*:pnHPSpectrex360Convertible13*:*
evdev:atkbd:dmi:bvn*:bvr*:bd*:svnHP*:pnHPENVYx360Convertible13*:*
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
evdev:atkbd:dmi:bvn*:bvr*:svnHP*:pnHPElitex21013G3:*
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:*
KEYBOARD_KEY_b4=prog1
# lenovo-ideapad
# Lenovo IdeaPad
evdev:atkbd:dmi:bvn*:bvr*:bd*:svnLENOVO*:pn*IdeaPad*:*
evdev:atkbd:dmi:bvn*:bvr*:bd*:svnLENOVO*:pnS10-*:*
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_f3=f21
# Lenovo IdeaPad 5
evdev:atkbd:dmi:bvn*:bvr*:bd*:svnLENOVO*:pn*:pvrIdeaPad5*:*
KEYBOARD_KEY_81=insert
# Thinkpad X200_Tablet
evdev:atkbd:dmi:bvn*:bvr*:bd*:svnLENOVO*:pn*:pvrThinkPad*X2*Tablet*:*
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*:*
KEYBOARD_KEY_91=config # MSIControl Center
KEYBOARD_KEY_a0=mute # Fn+F9
KEYBOARD_KEY_ae=volumedown # Fn+F7
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_ec=email # envelope button
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_f7=brightnessdown # Fn+F4
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_f8=f21 # Touchpad toggle
# Pangolin 12
evdev:atkbd:dmi:bvn*:bvr*:bd*:svnSystem76*:pnPangolin*:pvrpang12*
KEYBOARD_KEY_76=f21 # Touchpad toggle
###########################################################
# T-bao
###########################################################
@ -2001,6 +2030,8 @@ evdev:atkbd:dmi:bvn*:bvr*:bd*:svnViewSonic:pnVPAD10:*
###########################################################
# 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)
evdev:name:AT Translated Set 2 keyboard:dmi:bvn*:bvr*:bd*:svnPositivoBahia-VAIO:pnVJFE*:pvr*:*
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 MASTER-N1110
evdev:name:AT Translated Set 2 keyboard:dmi:bvn*:svnPositivoTecnologiaSA:pn*:pvr*:rvnPositivoTecnologiaSA:rnNP11G-E*
# Positivo DUO (k116)
evdev:name:AT Translated Set 2 keyboard:dmi:bvn*:svnPositivoTecnologiaSA:pn*:pvr*:rvnPositivoTecnologiaSA:rnK116*
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)
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)
evdev:name:SIPODEV USB Composite Device:dmi:bvn*:bvr*:svnPositivoTecnologiaSA:pn*:pvr*:rvn*:rnCW14Q01P*
KEYBOARD_KEY_70073=f21 # Fn+f2 toggle touchpad

View File

@ -45,8 +45,8 @@
# subsystem[1]. The default, when unset, is equivalent to:
# ACCEL_MOUNT_MATRIX=1, 0, 0; 0, 1, 0; 0, 0, 1
# eg. the identity matrix,
# and <value> is an integer value above which an object is considered
# close by a proximity sensor:
# and <value> is an integer value above or equal to which an object is
# considered close by a proximity sensor:
# PROXIMITY_NEAR_LEVEL=100
#
# [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:*
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:*
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:*
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
sensor:modalias:acpi:MXC6655*:dmi:*:svnCHUWIINNOVATIONLIMITED:pnHi10Go:*
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:*
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
#########################################
@ -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*:sku0B0D:*
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
# Dell Venue 8 Pro 3845
@ -350,8 +369,8 @@ sensor:modalias:acpi:INVN6500*:dmi:*svnDell*:pnVenue10Pro5055:*
# DERE
#########################################
# DBook D10
sensor:modalias:acpi:KIOX000A*:dmi:bvnAmericanMegatrendsInternational,LLC.:bvrJP2V1.05:bd04/27/2022:br1.5:efr1.3:svnDefaultstring:*
# DBook D10 / Juno Tablet
sensor:modalias:acpi:KIOX000A*:dmi:bvnAmericanMegatrendsInternational,LLC.:bvrJP2V*:svnDefaultstring:*
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_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
#########################################
@ -637,6 +660,10 @@ sensor:modalias:i2c:bmc150_accel:dmi:*:svnLENOVO:*:pvrLenovoYoga300-11IBR:*
sensor:modalias:acpi:BOSC0200*:dmi:*:svnLINX*:pnLINX1010B:*
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
sensor:modalias:acpi:KIOX000A*:dmi:*:svnLINX*:pnLINX12*64:*
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:*
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
# '*' 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.:*
@ -975,6 +1006,9 @@ sensor:modalias:acpi:KIOX000A*:dmi:*:svnUMAX:pnVisionBook10WiPro:*
sensor:modalias:acpi:SMO8500*:dmi:*:svnUMAX:pnVisionBook10WiPlus:*
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
#########################################

View File

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

View File

@ -1,8 +1,10 @@
# This file is part of systemd.
#
# Pointingstick const-accel configuration, to make different brand / model
# laptop pointingsticks have the same speed / feel, and per model adjustment
# of the IBM TrackPoint driver's sensitivity setting
# laptop pointingsticks have the same speed / feel, and per model adjustment of
# the IBM TrackPoint and Dell DualPoint Stick driver's sensitivity setting.
#
# ########################### MATCHING #######################################
#
# The lookup keys are composed in:
# 60-evdev.rules
@ -13,7 +15,7 @@
# 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
# 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
# in /sys/class/input/eventX/device/id.
#
@ -21,15 +23,24 @@
# 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 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
# /etc/udev/hwdb.d/71-pointingstick-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 pointingstick in question. If in
# doubt, simply use /dev/input/event* to reload all input rules.
# where /dev/input/eventXX is the pointingstick 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
@ -79,6 +90,7 @@
# Generic
##########################################
evdev:name:*[tT]rack[pP]oint*:*
evdev:name:*[dD]ual[pP]oint [sS]tick*:*
ID_INPUT_POINTINGSTICK=1
#########################################

View File

@ -1094,6 +1094,13 @@ ieee1394:ven000001F2mo*sp000001F2ver00000035
IEEE1394_UNIT_FUNCTION_MIDI=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:ven000001F2mo*sp000001F2ver00000039
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="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="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>
</table>
</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="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="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>
</table>
</body>

View File

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

View File

@ -77,29 +77,16 @@
<varlistentry>
<term>suspend-then-hibernate</term>
<listitem><para>A low power state where initially user.slice unit is freezed.
If the hardware supports low-battery alarms (ACPI _BTP), then the system is
first suspended (the state is stored in RAM) and then hibernates if the system
is woken up by the hardware via ACPI low-battery signal. Unit user.slice is
thawed when system returns from hibernation. If the hardware does not support
low-battery alarms (ACPI _BTP), then the system is suspended based on battery's
current percentage capacity. If the current battery capacity is higher than 5%, the
system suspends for interval calculated using battery discharge rate per hour or
<command>HibernateDelaySec=</command>
if former is not available.
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>
<listitem>
<para>A low power state where the system is initially suspended (the state is stored in
RAM). If the system supports low-battery alarms (ACPI _BTP), then the system will be woken up by
the ACPI low-battery signal and hibernated (the state is then stored on disk). Also, if not
interrupted within the timespan specified by <varname>HibernateDelaySec=</varname> or the estimated
timespan until the system battery charge level goes down to 5%, then the system will be woken up by the
RTC alarm and hibernated. The estimated timespan is calculated from the change of the battery
capacity level after the time specified by <varname>SuspendEstimationSec=</varname> or when
the system is woken up from the suspend.</para>
</listitem>
</varlistentry>
</variablelist>
@ -189,13 +176,28 @@
uses the value of <varname>SuspendState=</varname> when suspending and the value of <varname>HibernateState=</varname> when hibernating.
</para></listitem>
</varlistentry>
<varlistentry>
<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
can be estimated and used instead to calculate the suspension interval.
<citerefentry><refentrytitle>systemd-suspend-then-hibernate.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>. Defaults
to 2h.</para></listitem>
<listitem>
<para>The amount of time the system spends in suspend mode before the system is
automatically put into hibernate mode. Only used by
<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>
</variablelist>
</refsect1>

View File

@ -3113,7 +3113,13 @@ StandardInputData=V2XigLJyZSBubyBzdHJhbmdlcnMgdG8gbG92ZQpZb3Uga25vdyB0aGUgcnVsZX
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,
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
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>
<listitem>
<para>The data of this credential is written to
<filename>/etc/issue.d/50-provision.conf</filename>, if the file doesn't exist
yet. <citerefentry><refentrytitle>agetty</refentrytitle><manvolnum>8</manvolnum></citerefentry>
reads this file and shows its contents at the login prompt of terminal logins. See <citerefentry
project='man-pages'><refentrytitle>issue</refentrytitle><manvolnum>5</manvolnum></citerefentry> for
details.</para>
<filename>/etc/issue.d/50-provision.conf</filename>, if the file doesn't exist yet.
<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 project='man-pages'><refentrytitle>issue</refentrytitle><manvolnum>5</manvolnum></citerefentry>
for details.</para>
<para>Consumed by <filename>/usr/lib/tmpfiles.d/provision.conf</filename>, see
<citerefentry><refentrytitle>tmpfiles.d</refentrytitle><manvolnum>5</manvolnum></citerefentry>.</para>
@ -90,12 +90,11 @@
<term><varname>login.motd</varname></term>
<listitem>
<para>The data of this credential is written to <filename>/etc/motd.d/50-provision.conf</filename>,
if the file doesn't exist
yet. <citerefentry><refentrytitle>pam_motd</refentrytitle><manvolnum>8</manvolnum></citerefentry>
if the file doesn't exist yet.
<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
<citerefentry
project='man-pages'><refentrytitle>motd</refentrytitle><manvolnum>5</manvolnum></citerefentry> for
details.</para>
<citerefentry project='man-pages'><refentrytitle>motd</refentrytitle><manvolnum>5</manvolnum></citerefentry>
for details.</para>
<para>Consumed by <filename>/usr/lib/tmpfiles.d/provision.conf</filename>, see
<citerefentry><refentrytitle>tmpfiles.d</refentrytitle><manvolnum>5</manvolnum></citerefentry>.</para>
@ -106,9 +105,9 @@
<term><varname>network.hosts</varname></term>
<listitem>
<para>The data of this credential is written to <filename>/etc/hosts</filename>, if the file
doesn't exist yet. See <citerefentry
project='man-pages'><refentrytitle>hosts</refentrytitle><manvolnum>5</manvolnum></citerefentry> for
details.</para>
doesn't exist yet. See
<citerefentry project='man-pages'><refentrytitle>hosts</refentrytitle><manvolnum>5</manvolnum></citerefentry>
for details.</para>
<para>Consumed by <filename>/usr/lib/tmpfiles.d/provision.conf</filename>, see
<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
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>,
<filename>systemd-tmpfiles-clean.service</filename>, and associated units.</para>

View File

@ -3,6 +3,7 @@
if conf.get('ENABLE_NETWORKD') == 1
install_data('80-6rd-tunnel.network',
'80-container-host0.network',
'80-container-vb.network',
'80-container-ve.network',
'80-container-vz.network',
'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.
# 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"
# AT keyboard matching by the machine's DMI data

View File

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

View File

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

View File

@ -5,3 +5,4 @@ modifications are applied:
- btrfs.h: drop '__user' attributes
- if.h: drop '#include <linux/compiler.h>' and '__user' attributes
- 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/ioctl.h>
#if WANT_LINUX_FS_H
#include <linux/fs.h>
#endif
#define BTRFS_IOCTL_MAGIC 0x94
#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"
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

View File

@ -368,6 +368,10 @@ int rename_process(const char name[]) {
strncpy(program_invocation_name, name, k);
if (l > k)
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

View File

@ -450,7 +450,9 @@ static const char *get_efi_arch(void) {
if (r == -ENOENT)
return EFI_MACHINE_TYPE_NAME;
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;
}
@ -460,9 +462,9 @@ static const char *get_efi_arch(void) {
return "ia32";
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,
__WORDSIZE);
EFI_MACHINE_TYPE_NAME);
#endif
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);
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;
}

View File

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

View File

@ -270,10 +270,22 @@ char16_t *xstr8_to_path(const char *str8) {
}
void mangle_stub_cmdline(char16_t *cmdline) {
char16_t *p = cmdline;
for (; *cmdline != '\0'; cmdline++)
/* Convert ASCII control characters to spaces. */
if (*cmdline <= 0x1F)
*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) {

View File

@ -12,6 +12,7 @@
#include "tpm-pcr.h"
#include "tpm2-util.h"
static bool arg_graceful = false;
static char *arg_tpm2_device = NULL;
static char **arg_banks = NULL;
@ -33,6 +34,7 @@ static int help(int argc, char *argv[], void *userdata) {
" --version Print version\n"
" --bank=DIGEST Select TPM bank (SHA1, SHA256)\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",
program_invocation_short_name,
link,
@ -49,6 +51,7 @@ static int parse_argv(int argc, char *argv[]) {
ARG_VERSION = 0x100,
ARG_BANK,
ARG_TPM2_DEVICE,
ARG_GRACEFUL,
};
static const struct option options[] = {
@ -56,6 +59,7 @@ static int parse_argv(int argc, char *argv[]) {
{ "version", no_argument, NULL, ARG_VERSION },
{ "bank", required_argument, NULL, ARG_BANK },
{ "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;
}
case ARG_GRACEFUL:
arg_graceful = true;
break;
case '?':
return -EINVAL;
@ -172,6 +180,11 @@ static int run(int argc, char *argv[]) {
if (isempty(word))
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);
/* 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")
int BPF_PROG(restrict_filesystems, struct file *file, int ret)
{
unsigned long magic_number;
unsigned long raw_magic_number;
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
* the first hook */
if (ret != 0)
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();

View File

@ -2635,25 +2635,24 @@ _pure_ static bool service_can_reload(Unit *u) {
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);
unsigned idx = 0;
ExecCommand *first, *c;
assert(s);
assert(id >= 0);
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 */
for (c = current; c != first; c = c->command_prev)
for (const ExecCommand *c = current; c != first; c = c->command_prev)
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;
Service *s = SERVICE(u);
const char *type, *key;
@ -2708,7 +2707,16 @@ static int service_serialize_exec_command(Unit *u, FILE *f, ExecCommand *command
return log_oom();
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;
}
@ -2819,7 +2827,7 @@ int service_deserialize_exec_command(
Service *s = SERVICE(u);
int r;
unsigned idx = 0, i;
bool control, found = false;
bool control, found = false, last = false;
ServiceExecCommand id = _SERVICE_EXEC_COMMAND_INVALID;
ExecCommand *command = NULL;
_cleanup_free_ char *path = NULL;
@ -2860,9 +2868,15 @@ int service_deserialize_exec_command(
state = STATE_EXEC_COMMAND_INDEX;
break;
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);
if (r < 0)
return r;
last = arg[0] == '+';
state = STATE_EXEC_COMMAND_PATH;
break;
@ -2907,6 +2921,8 @@ int service_deserialize_exec_command(
s->control_command_id = id;
} else if (command)
s->main_command = command;
else if (last)
log_unit_debug(u, "Current command vanished from the unit file.");
else
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;
}
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) {
Unit *u;
char *k;
@ -1101,20 +1115,27 @@ int transaction_add_isolate_jobs(Transaction *tr, Manager *m) {
assert(m);
HASHMAP_FOREACH_KEY(u, k, m->units) {
Unit *o;
/* ignore aliases */
/* Ignore aliases */
if (u->id != k)
continue;
if (u->ignore_on_isolate)
continue;
/* No need to stop inactive jobs */
/* No need to stop inactive units */
if (UNIT_IS_INACTIVE_OR_FAILED(unit_active_state(u)) && !u->job)
continue;
/* Is there already something listed for this? */
if (hashmap_get(tr->jobs, u))
if (!shall_stop_on_isolate(tr, 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;
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)
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
only, like for example systemd's own PAM stub process. */
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,
"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");
pubkey_pcr_mask = 0;
} else {
/* Also try to load the signature JSON object, to verify that our enrollment will work. This is optional however. */
} else if (signature_path) {
/* 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);
if (r < 0) {
if (signature_path || r != -ENOENT)
if (r < 0)
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,

View File

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

View File

@ -46,7 +46,8 @@ int import_fork_tar_x(const char *path, pid_t *ret) {
"--ignore-zeros",
"--numeric-owner",
"-C", path,
"-px",
"-pxf",
"-",
"--xattrs",
"--xattrs-include=*",
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->fd >= 0);
assert(message);
assert(len > sizeof(DHCPMessage));
assert(len >= sizeof(DHCPMessage));
if (server->bind_to_interface) {
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_DNSSD_SERVICE_EXISTS, EEXIST),
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 "NXDOMAIN", ENXIO),
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 "YXDOMAIN", 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 "NOTAUTH", EACCES),
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 "BADKEY", EKEYREJECTED),
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 "BADNAME", 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 "BADCOOKIE", EBADR),
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_NXDOMAIN, ENXIO),
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_YXDOMAIN, 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_NOTAUTH, EACCES),
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_BADKEY, EKEYREJECTED),
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_BADNAME, 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_BADCOOKIE, EBADR),
SD_BUS_ERROR_MAP(BUS_ERROR_NO_SUCH_TRANSFER, ENXIO),
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_NO_SUCH_DNSSD_SERVICE "org.freedesktop.resolve1.NoSuchDnssdService"
#define BUS_ERROR_DNSSD_SERVICE_EXISTS "org.freedesktop.resolve1.DnssdServiceExists"
#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_TRANSFER_IN_PROGRESS "org.freedesktop.import1.TransferInProgress"

View File

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

View File

@ -42,8 +42,6 @@
#include "strv.h"
#include "syslog-util.h"
#define JOURNAL_FILES_MAX 7168
#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

View File

@ -3,7 +3,6 @@
#include "sd-netlink.h"
#include "fd-util.h"
#include "format-util.h"
#include "io-util.h"
#include "memory-util.h"
#include "netlink-internal.h"
@ -15,7 +14,7 @@
int rtnl_set_link_name(sd_netlink **rtnl, int ifindex, const char *name) {
_cleanup_(sd_netlink_message_unrefp) sd_netlink_message *message = NULL;
_cleanup_strv_free_ char **alternative_names = NULL;
char old_name[IF_NAMESIZE] = {};
bool altname_deleted = false;
int r;
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",
name, ifindex);
r = format_ifname(ifindex, old_name);
if (r < 0)
return log_debug_errno(r, "Failed to get current name of network interface %i: %m", ifindex);
altname_deleted = true;
}
r = sd_rtnl_message_new_link(*rtnl, &message, RTM_SETLINK, ifindex);
if (r < 0)
return r;
goto fail;
r = sd_netlink_message_append_string(message, IFLA_IFNAME, name);
if (r < 0)
return r;
goto fail;
r = sd_netlink_call(*rtnl, message, 0, NULL);
if (r < 0)
return r;
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);
}
goto fail;
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(

View File

@ -8,6 +8,7 @@
#include <linux/if_macsec.h>
#include <linux/l2tp.h>
#include <linux/nl80211.h>
#include <unistd.h>
#include "sd-netlink.h"
@ -16,6 +17,7 @@
#include "macro.h"
#include "netlink-genl.h"
#include "netlink-internal.h"
#include "netlink-util.h"
#include "socket-util.h"
#include "stdio-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) {
sd_netlink *rtnl;
sd_netlink_message *m;
@ -698,6 +724,7 @@ int main(void) {
test_pipe(if_loopback);
test_event_loop(if_loopback);
test_link_configure(rtnl, if_loopback);
test_rtnl_set_link_name(rtnl, if_loopback);
test_get_addresses(rtnl);
test_message_link_bridge(rtnl);

View File

@ -334,15 +334,18 @@ static int dhcp4_request_route_auto(
route->gw = IN_ADDR_NULL;
route->prefsrc.in = address;
} else {
if (in4_addr_is_null(gw)) {
} else 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 "
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(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);
if (r < 0)
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)
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;
*found = link;

View File

@ -394,7 +394,7 @@ int bind_user_setup(
r = userns_mkdir(root, "/run/host/home", 0755, 0, 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);
if (r < 0)

View File

@ -1716,7 +1716,16 @@ static int parse_argv(int argc, char *argv[]) {
* --directory=". */
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 */
r = parse_environment();

View File

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

View File

@ -4793,7 +4793,7 @@ static int resolve_copy_blocks_auto(
continue;
}
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;
}
@ -4869,11 +4869,12 @@ static int context_open_copy_block_paths(
"Copying from block device node is not permitted in --image=/--root= mode, refusing.");
} 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);
if (r < 0)
return r;
assert(devno != 0);
source_fd = r = device_open_from_devnum(S_IFBLK, devno, O_RDONLY|O_CLOEXEC|O_NONBLOCK, &opened);
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());
}
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) {
_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;
@ -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);
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;
@ -1200,12 +1207,19 @@ static int reset_server_features(int argc, char **argv, void *userdata) {
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_free_ char *pretty = NULL;
int ifindex, family, r, k;
union in_addr_union a;
const char *name = NULL;
int32_t ifindex = 0;
int family, r, k;
uint16_t port = 0;
assert(m);
@ -1245,8 +1259,8 @@ static int read_dns_server_one(sd_bus_message *m, bool with_ifindex, bool extend
return 1;
}
if (with_ifindex && ifindex != 0) {
/* only show the global ones here */
if (only_global && ifindex > 0 && ifindex != LOOPBACK_IFINDEX) {
/* This one has an (non-loopback) ifindex set, and we were told to suppress those. Hence do so. */
*ret = NULL;
return 1;
}
@ -1275,7 +1289,7 @@ static int map_link_dns_servers_internal(sd_bus *bus, const char *member, sd_bus
for (;;) {
_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)
return r;
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(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) {
assert(m);
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) {
@ -1740,7 +1754,7 @@ static int map_global_dns_servers_internal(sd_bus *bus, const char *member, sd_b
for (;;) {
_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)
return r;
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) {
assert(m);
assert(userdata);
return read_dns_server_one(m, true, false, userdata);
return read_dns_server_one(m, /* with_ifindex= */ true, /* extended= */ false, /* only_global= */ true, 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);
assert(userdata);
return read_dns_server_one(m, true, true, userdata);
return read_dns_server_one(m, /* with_ifindex= */ true, /* extended= */ true, /* only_global= */ true, 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:
/* 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. */
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:
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;
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 {
const char *rc, *n;

View File

@ -3,6 +3,7 @@
#include <net/if_arp.h>
#include <netinet/tcp.h>
#include "capability-util.h"
#include "errno-util.h"
#include "fd-util.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)
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)
sa = (union sockaddr_union) {
.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)
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 {
static const struct {
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);
/* NXDOMAIN in NSEC domain */
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_rr_lookup(bus, "_pgpkey-https._tcp.hkps.pool.sks-keyservers.net", DNS_TYPE_SRV, _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_rr_lookup(bus, "_pgpkey-https._tcp.hkps.pool.sks-keyservers.net", DNS_TYPE_SRV, BUS_ERROR_DNS_NXDOMAIN);
/* wildcard, NSEC zone */
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);
/* NXDOMAIN in NSEC root zone: */
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_INET, _BUS_ERROR_DNS "NXDOMAIN");
test_hostname_lookup(bus, "jasdhjas.kjkfgjhfjg", AF_INET6, _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_INET, BUS_ERROR_DNS_NXDOMAIN);
test_hostname_lookup(bus, "jasdhjas.kjkfgjhfjg", AF_INET6, BUS_ERROR_DNS_NXDOMAIN);
/* NXDOMAIN in NSEC3 .com zone: */
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_INET6, _BUS_ERROR_DNS "NXDOMAIN");
test_hostname_lookup(bus, "kjkfgjhfjgsdfdsfd.com", AF_UNSPEC, _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_INET6, BUS_ERROR_DNS_NXDOMAIN);
test_hostname_lookup(bus, "kjkfgjhfjgsdfdsfd.com", AF_UNSPEC, BUS_ERROR_DNS_NXDOMAIN);
/* Unsigned A */
test_rr_lookup(bus, "poettering.de", DNS_TYPE_A, NULL);
@ -213,11 +213,11 @@ int main(int argc, char* argv[]) {
#endif
/* 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_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_INET, _BUS_ERROR_DNS "NXDOMAIN");
test_hostname_lookup(bus, ".ireallyhpoethisdoesntexist.xn--kprw13d.", AF_INET6, _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_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_INET6, BUS_ERROR_DNS_NXDOMAIN);
return 0;
}

View File

@ -1658,7 +1658,7 @@ static int install_info_traverse(
r = install_info_follow(ctx, i, lp, flags,
/* If linked, don't look at the target name */
/* ignore_different_name= */ i->install_mode == INSTALL_MODE_LINKED);
if (r == -EXDEV) {
if (r == -EXDEV && i->symlink_target) {
_cleanup_free_ char *buffer = NULL;
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);
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:
log_warning_errno(err, "An error was encountered while opening journal file or directory %s, ignoring file: %m", path);
break;

View File

@ -22,6 +22,7 @@
#include "btrfs-util.h"
#include "conf-parser.h"
#include "def.h"
#include "device-private.h"
#include "device-util.h"
#include "devnum-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,
allow_s2h = -1, allow_hybrid_sleep = -1;
sc = new0(SleepConfig, 1);
sc = new(SleepConfig, 1);
if (!sc)
return log_oom();
*sc = (SleepConfig) {
.hibernate_delay_usec = USEC_INFINITY,
};
const ConfigTableItem items[] = {
{ "Sleep", "AllowSuspend", config_parse_tristate, 0, &allow_suspend },
{ "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", "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");
if (!sc->states[SLEEP_HYBRID_SLEEP])
sc->states[SLEEP_HYBRID_SLEEP] = strv_new("disk");
if (sc->hibernate_delay_sec == 0)
sc->hibernate_delay_sec = 2 * USEC_PER_HOUR;
if (sc->suspend_estimation_usec == 0)
sc->suspend_estimation_usec = DEFAULT_SUSPEND_ESTIMATION_USEC;
/* Ensure values set for all required fields */
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)
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)
return r;
*ret = TAKE_PTR(e);
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 */
static int read_battery_capacity_percentage(sd_device *dev) {
const char *power_supply_capacity;
int battery_capacity, r;
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)
return log_device_debug_errno(dev, r, "Failed to get property 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");
return log_device_debug_errno(dev, r, "Failed to read/parse POWER_SUPPLY_CAPACITY: %m");
if (battery_capacity < 0 || battery_capacity > 100)
return log_device_debug_errno(dev, SYNTHETIC_ERRNO(ERANGE), "Invalid battery capacity");
@ -198,15 +210,9 @@ int battery_is_low(void) {
if (r < 0)
return log_debug_errno(r, "Failed to initialize battery enumerator: %m");
FOREACH_DEVICE(e, dev) {
r = read_battery_capacity_percentage(dev);
if (r < 0) {
log_device_debug_errno(dev, r, "Failed to get battery capacity, ignoring: %m");
continue;
}
if (r > BATTERY_LOW_CAPACITY_LEVEL)
FOREACH_DEVICE(e, dev)
if (read_battery_capacity_percentage(dev) > BATTERY_LOW_CAPACITY_LEVEL)
return false;
}
return true;
}
@ -259,61 +265,55 @@ int fetch_batteries_capacity_by_name(Hashmap **ret) {
return 0;
}
/* Read file path and return hash of value in that file */
static int get_battery_identifier(sd_device *dev, const char *property, struct siphash *state) {
static int siphash24_compress_device_sysattr(sd_device *dev, const char *attr, struct siphash *state) {
const char *x;
int r;
assert(dev);
assert(property);
assert(attr);
assert(state);
r = sd_device_get_property_value(dev, property, &x);
if (r == -ENOENT)
log_device_debug_errno(dev, r, "Battery device property %s is unavailable, ignoring: %m", property);
else if (r < 0)
return log_device_debug_errno(dev, r, "Failed to get battery device property %s: %m", property);
else if (isempty(x))
log_device_debug(dev, "Battery device property '%s' is empty.", property);
else
r = sd_device_get_sysattr_value(dev, attr, &x);
if (r < 0)
return log_device_debug_errno(dev, r, "Failed to read '%s' attribute: %m", attr);
if (!isempty(x))
siphash24_compress_string(x, state);
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 */
static int get_system_battery_identifier_hash(sd_device *dev, uint64_t *ret) {
struct siphash state;
sd_id128_t machine_id, product_id;
int r;
assert(ret);
assert(dev);
siphash24_init(&state, BATTERY_DISCHARGE_RATE_HASH_KEY.bytes);
get_battery_identifier(dev, "POWER_SUPPLY_MANUFACTURER", &state);
get_battery_identifier(dev, "POWER_SUPPLY_MODEL_NAME", &state);
get_battery_identifier(dev, "POWER_SUPPLY_SERIAL_NUMBER", &state);
r = sd_id128_get_machine(&machine_id);
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);
(void) siphash24_compress_device_sysattr(dev, "manufacturer", &state);
(void) siphash24_compress_device_sysattr(dev, "model_name", &state);
(void) siphash24_compress_device_sysattr(dev, "serial_number", &state);
(void) siphash24_compress_id128(sd_id128_get_machine, "machine", &state);
(void) siphash24_compress_id128(id128_get_product, "product", &state);
*ret = siphash24_finalize(&state);
return 0;
}

View File

@ -6,6 +6,8 @@
#include "hashmap.h"
#include "time-util.h"
#define DEFAULT_SUSPEND_ESTIMATION_USEC (1 * USEC_PER_HOUR)
typedef enum SleepOperation {
SLEEP_SUSPEND,
SLEEP_HIBERNATE,
@ -19,7 +21,8 @@ typedef struct SleepConfig {
bool allow[_SLEEP_OPERATION_MAX];
char **modes[_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* free_sleep_config(SleepConfig *sc);

View File

@ -294,8 +294,8 @@ static int userdb_on_query_reply(
} membership_data = {};
static const JsonDispatch dispatch_table[] = {
{ "userName", JSON_VARIANT_STRING, json_dispatch_const_string, offsetof(struct membership_data, user_name), JSON_SAFE },
{ "groupName", JSON_VARIANT_STRING, json_dispatch_const_string, offsetof(struct membership_data, group_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_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) {
usec_t hibernate_timestamp;
int r;
assert(sleep_config);
hibernate_timestamp = usec_add(now(CLOCK_BOOTTIME), sleep_config->hibernate_delay_usec);
while (battery_is_low() == 0) {
_cleanup_hashmap_free_ Hashmap *last_capacity = NULL, *current_capacity = NULL;
_cleanup_close_ int tfd = -1;
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;
tfd = timerfd_create(CLOCK_BOOTTIME_ALARM, TFD_NONBLOCK|TFD_CLOEXEC);
if (tfd < 0)
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);
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
if (r < 0)
return log_error_errno(r, "Error fetching battery capacity percentage: %m");
r = get_total_suspend_interval(last_capacity, &total_suspend_interval);
if (r < 0)
if (hashmap_isempty(last_capacity))
/* 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");
else
suspend_interval = total_suspend_interval;
/* In case of any errors, especially when we do not know the battery
* 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));
/* 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);
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
* 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. */
if (r < 0)
log_debug_errno(r, "Battery capacity percentage unavailable, cannot estimate discharge rate: %m");
else
log_debug("No battery found.");
if (!woken_by_timer)
return 0;
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",
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) {
_unused_ _cleanup_(freeze_thaw_user_slice) const char *auto_method_thaw = "ThawUnit";
int r, k;
int r;
assert(sleep_config);
@ -387,15 +402,21 @@ static int execute_s2h(const SleepConfig *sleep_config) {
if (r < 0)
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();
if (r < 0)
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 (k < 0)
log_debug_errno(k, "Failed to check whether acpi_btp support is enabled or not, ignoring: %m");
if (r >= 0 && k > 0) {
if (r > 0) { /* If we have both wakeup alarms and battery trip point support, use them */
log_debug("Attempting to suspend...");
r = execute(sleep_config, SLEEP_SUSPEND, NULL);
if (r < 0)

View File

@ -23,4 +23,5 @@
#HibernateState=disk
#HybridSleepMode=suspend platform shutdown
#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);
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");
return ok ? 0 : r;

View File

@ -480,6 +480,14 @@ TEST(safe_atou16) {
assert_se(r == 0);
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);
assert_se(r == -ERANGE);
@ -514,6 +522,14 @@ TEST(safe_atoi16) {
assert_se(r == 0);
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);
assert_se(r == 0);
assert_se(l == 32767);
@ -703,6 +719,22 @@ TEST(safe_atoux64) {
assert_se(r == 0);
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);
assert_se(r == -EINVAL);

View File

@ -3311,12 +3311,6 @@ static int parse_line(
*invalid_config = true;
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;
case WRITE_FILE:
@ -3331,34 +3325,6 @@ static int parse_line(
*invalid_config = true;
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;
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 (!i.argument)
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);
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)
return -ENOMEM;
*ret_physfn_pcidev = sd_device_ref(child);
*ret_physfn_pcidev = sd_device_ref(physfn_pcidev);
*ret_suffix = suffix;
return 0;
}

View File

@ -862,7 +862,6 @@ int udev_event_spawn(
static int rename_netif(UdevEvent *event) {
const char *oldname;
sd_device *dev;
unsigned flags;
int ifindex, r;
assert(event);
@ -896,16 +895,6 @@ static int rename_netif(UdevEvent *event) {
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. */
r = device_add_property(dev, "ID_RENAMING", "1");
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");
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)
return log_device_error_errno(dev, r, "Failed to rename network interface %i from '%s' to '%s': %m",
ifindex, oldname, event->name);

View File

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

View File

@ -794,7 +794,7 @@ static int worker_spawn(Manager *manager, Event *event) {
if (r < 0)
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) {
event->state = EVENT_QUEUED;
return log_error_errno(r, "Failed to fork() worker: %m");

View File

@ -6,7 +6,8 @@
# (at your option) any later version.
# 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
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)
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):
copy_network_unit('25-address-static.network', '12-dummy.netdev')
start_networkd()

View File

@ -97,7 +97,7 @@ test "$(stat -c %U:%G:%a /tmp/e/3/f1)" = "root:root:644"
# 'C'
#
mkdir /tmp/C/{1,2,3}-origin
mkdir /tmp/C/{0,1,2,3}-origin
touch /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 ! -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
truncate -s 20M $img
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
# 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"
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
exit 0

View File

@ -10,7 +10,7 @@
[Unit]
Description=Container %i
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
Before=machines.target
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
Conflicts=shutdown.target initrd-switch-root.target
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
ConditionPathExists=/sys/firmware/efi/efivars/StubPcrKernelImage-4a67b082-0a4c-41cf-b6c7-440b29bb8c4f
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart={{ROOTLIBEXECDIR}}/systemd-pcrphase enter-initrd
ExecStop={{ROOTLIBEXECDIR}}/systemd-pcrphase leave-initrd
ExecStart={{ROOTLIBEXECDIR}}/systemd-pcrphase --graceful enter-initrd
ExecStop={{ROOTLIBEXECDIR}}/systemd-pcrphase --graceful leave-initrd

View File

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

View File

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

View File

@ -12,7 +12,8 @@ Description=Repartition Root Disk
Documentation=man:systemd-repart.service(8)
DefaultDependencies=no
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
ConditionVirtualization=!container
ConditionDirectoryNotEmpty=|/usr/lib/repart.d