| # SPDX-License-Identifier: LGPL-2.1-or-later |
| # |
| # This file is part of systemd. |
| # |
| # systemd is free software; you can redistribute it and/or modify it |
| # under the terms of the GNU Lesser General Public License as published by |
| # the Free Software Foundation; either version 2.1 of the License, or |
| # (at your option) any later version. |
| |
| ACTION=="remove", GOTO="uaccess_end" |
| ENV{MAJOR}=="", GOTO="uaccess_end" |
| |
| # PTP/MTP protocol devices, cameras, portable media players |
| SUBSYSTEM=="usb", ENV{ID_USB_INTERFACES}=="*:060101:*", TAG+="uaccess" |
| |
| # Digicams with proprietary protocol |
| ENV{ID_GPHOTO2}=="?*", TAG+="uaccess" |
| |
| # SCSI and USB scanners |
| ENV{libsane_matched}=="yes", TAG+="uaccess" |
| |
| # HPLIP devices (necessary for ink level check and HP tool maintenance) |
| ENV{ID_HPLIP}=="1", TAG+="uaccess" |
| |
| # optical drives |
| SUBSYSTEM=="block", ENV{ID_CDROM}=="1", TAG+="uaccess" |
| SUBSYSTEM=="scsi_generic", SUBSYSTEMS=="scsi", ATTRS{type}=="4|5", TAG+="uaccess" |
| |
| # Sound devices |
| SUBSYSTEM=="sound", TAG+="uaccess", \ |
| OPTIONS+="static_node=snd/timer", OPTIONS+="static_node=snd/seq" |
| |
| # Webcams, frame grabber, TV cards |
| SUBSYSTEM=="video4linux", TAG+="uaccess" |
| SUBSYSTEM=="dvb", TAG+="uaccess" |
| SUBSYSTEM=="media", TAG+="uaccess" |
| |
| # industrial cameras, some webcams, camcorders, set-top boxes, TV sets, audio devices, and more |
| SUBSYSTEM=="firewire", TEST=="units", ENV{IEEE1394_UNIT_FUNCTION_MIDI}=="1", TAG+="uaccess" |
| SUBSYSTEM=="firewire", TEST=="units", ENV{IEEE1394_UNIT_FUNCTION_AUDIO}=="1", TAG+="uaccess" |
| SUBSYSTEM=="firewire", TEST=="units", ENV{IEEE1394_UNIT_FUNCTION_VIDEO}=="1", TAG+="uaccess" |
| |
| # DRI video devices |
| SUBSYSTEM=="drm", KERNEL=="card*", TAG+="uaccess" |
| {% if GROUP_RENDER_UACCESS %} |
| # DRI render nodes |
| SUBSYSTEM=="drm", KERNEL=="renderD*", TAG+="uaccess" |
| {% endif %} |
| {% if DEV_KVM_UACCESS %} |
| # KVM |
| SUBSYSTEM=="misc", KERNEL=="kvm", TAG+="uaccess" |
| {% endif %} |
| |
| # smart-card readers |
| ENV{ID_SMARTCARD_READER}=="?*", TAG+="uaccess" |
| |
| # (USB) authentication devices |
| ENV{ID_SECURITY_TOKEN}=="?*", TAG+="uaccess" |
| |
| # PDA devices |
| ENV{ID_PDA}=="?*", TAG+="uaccess" |
| |
| # Programmable remote control |
| ENV{ID_REMOTE_CONTROL}=="1", TAG+="uaccess" |
| |
| # joysticks |
| SUBSYSTEM=="input", ENV{ID_INPUT_JOYSTICK}=="?*", TAG+="uaccess" |
| |
| # color measurement devices |
| ENV{COLOR_MEASUREMENT_DEVICE}=="?*", TAG+="uaccess" |
| |
| # DDC/CI device, usually high-end monitors such as the DreamColor |
| ENV{DDC_DEVICE}=="?*", TAG+="uaccess" |
| |
| # media player raw devices (for user-mode drivers, Android SDK, etc.) |
| SUBSYSTEM=="usb", ENV{ID_MEDIA_PLAYER}=="?*", TAG+="uaccess" |
| |
| # software-defined radio communication devices |
| ENV{ID_SOFTWARE_RADIO}=="?*", TAG+="uaccess" |
| |
| # 3D printers, CNC machines, laser cutters, 3D scanners, etc. |
| ENV{ID_MAKER_TOOL}=="?*", TAG+="uaccess" |
| |
| # Protocol analyzers |
| ENV{ID_SIGNAL_ANALYZER}=="?*", ENV{DEVTYPE}=="usb_device", TAG+="uaccess" |
| |
| # rfkill / radio killswitches |
| KERNEL=="rfkill", SUBSYSTEM=="misc", TAG+="uaccess" |
| |
| # AV production controllers |
| # Most of these devices use HID for the knobs, faders, buttons, encoders, and jog wheels. |
| SUBSYSTEM=="hidraw", ENV{ID_AV_PRODUCTION_CONTROLLER}=="1", TAG+="uaccess" |
| |
| # Some devices use vendor defined protocols on USB Bulk endpoints for controllers. |
| # Other devices transfer graphics to screens on the device through USB Bulk endpoints. |
| # This also allows accessing HID devices with the libusb backend of hidapi. |
| SUBSYSTEM=="usb", ENV{ID_AV_PRODUCTION_CONTROLLER}=="1", TAG+="uaccess" |
| |
| LABEL="uaccess_end" |