Skip to content

Linux udev Guide

Mattscreative edited this page Dec 5, 2025 · 2 revisions

Linux udev Guide

Complete beginner-friendly guide to udev on Linux, covering Arch Linux, CachyOS, and other distributions including device management, udev rules, and hardware configuration.


Table of Contents

  1. Understanding udev
  2. udev Basics
  3. udev Rules
  4. Creating Rules
  5. Common Examples
  6. Troubleshooting

Understanding udev

What is udev?

udev manages device nodes in /dev.

Functions:

  • Device detection: Detects hardware changes
  • Device nodes: Creates device files
  • Permissions: Sets device permissions
  • Naming: Provides consistent device names

Why it matters:

  • Hotplug support: Handles USB devices
  • Persistent naming: Consistent device names
  • Permissions: Control device access

udev Basics

Check udev

Verify udev:

# Check udev version
udevadm --version

# Check udev service
systemctl status systemd-udevd

List Devices

View devices:

# List all devices
udevadm info --export-db

# List USB devices
lsusb

# List block devices
lsblk

udev Rules

Rule Locations

Rule files:

# System rules
/etc/udev/rules.d/

# User rules (if supported)
~/.config/udev/rules.d/

Rule Syntax

Basic format:

ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="1234", ATTR{idProduct}=="5678", MODE="0666"

Components:

  • ACTION: add, remove, change
  • SUBSYSTEM: usb, block, input
  • ATTR: Device attributes
  • MODE: File permissions

Creating Rules

Get Device Info

Find device attributes:

# Get device info
udevadm info -a -n /dev/sdb

# Or by path
udevadm info -a -p /sys/class/block/sdb

Create Rule

Write rule:

# Create rule file
sudo vim /etc/udev/rules.d/99-mydevice.rules

Example rule:

# USB device rule
ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="1234", ATTR{idProduct}=="5678", MODE="0666", GROUP="users"

Common Examples

USB Device Permissions

Allow USB access:

# USB storage
ACTION=="add", SUBSYSTEM=="block", SUBSYSTEMS=="usb", MODE="0666", GROUP="users"

Persistent Device Names

Create symlink:

# Create symlink for USB device
ACTION=="add", SUBSYSTEM=="block", ATTR{serial}=="ABC123", SYMLINK+="myusb"

Run Script on Device

Execute script:

# Run script when device added
ACTION=="add", SUBSYSTEM=="usb", RUN+="/usr/local/bin/my-script.sh"

Troubleshooting

Rule Not Working

Test rule:

# Test rule
udevadm test /sys/class/block/sdb

# Reload rules
sudo udevadm control --reload-rules

# Trigger rules
sudo udevadm trigger

Check Device Info

Debug device:

# Get device info
udevadm info -a -n /dev/sdb

# Monitor events
udevadm monitor

Summary

This guide covered udev basics, rule creation, and device management for Arch Linux, CachyOS, and other distributions.


Next Steps


This guide covers Arch Linux, CachyOS, and other Linux distributions. For distribution-specific details, refer to your distribution's documentation.

Clone this wiki locally