
Blog
Setting Up Trezor Suite on Linux: Troubleshooting Udev Rules and Permission Errors
A Linux user has just received a Trezor hardware wallet and installed the official software, but the device remains unrecognized when plugged in via USB. The application shows no hardware connection, and attempts to initialize the wallet fail silently. The underlying cause is not a defective device or corrupted software. It is a permissions problem rooted in how Linux kernel drivers and user-space applications communicate with USB hardware. Trezor Suite requires specific udev rules to grant unprivileged users access to the device, and without them, the hardware wallet remains invisible to the software.
This scenario is not uncommon on Ubuntu, Fedora, or Arch Linux systems, particularly for users setting up a hardware wallet for the first time. The solution involves understanding how udev rules work, identifying which rules Trezor requires, and applying them correctly on a specific Linux distribution. The process also depends on whether the user is installing Trezor Suite from a package manager, a standalone binary, or a flatpak container, each of which can have slightly different permission requirements. Getting this right ensures reliable hardware wallet operation and prevents repeated disconnection errors.
Understanding Linux udev rules and device permissions
The udev subsystem is the kernel’s device manager for modern Linux systems. When a hardware device such as a Trezor wallet is connected via USB, the kernel detects it and publishes events to udev. The daemon then matches these events against rules stored in /etc/udev/rules.d/ and /usr/lib/udev/rules.d/. Rules determine ownership, group membership, and permissions for the resulting device files under /dev/. Without appropriate rules, a device file is created with restrictive permissions, and only the root user can access it. Since Trezor Suite runs as an unprivileged user, it cannot communicate with the device unless permissions explicitly allow it.
A udev rule is a single-line statement that matches device attributes and applies actions. A rule targeting Trezor might look like: SUBSYSTEMS=="usb", ATTRS{idVendor}=="534c", ATTRS{idProduct}=="0001", MODE="0666". This rule matches any USB device with Vendor ID 534c (Trezor’s manufacturer code) and Product ID 0001, then sets the device file permissions to 0666, making it readable and writable by any user. Rules can also assign group ownership, which is often safer than world-readable permissions because it limits access to members of a specific group such as plugdev. A properly constructed rule also includes a TAG and applies symlinks to make the device path predictable regardless of physical port changes.
The Trezor Project provides official udev rules in its firmware repository and via distribution packages. These rules cover multiple device variants, including legacy Trezor One devices and newer Trezor Model T hardware, each with distinct Vendor and Product IDs. Rules also account for bootloader modes and alternative product configurations. If a Linux system is missing these rules or has outdated versions, the Trezor device will not be recognized even when plugged in, and Trezor Suite will report “No Trezor found” or a similar error message.
After modifying udev rules, the changes must be reloaded and applied to connected devices. The standard procedure involves running sudo udevadm control --reload-rules followed by sudo udevadm trigger, or physically disconnecting and reconnecting the device so that udev re-evaluates it. Without reloading, a plugged-in device continues using the old rule set, creating confusion about whether the fix worked.
Installation approaches and their permission implications
Trezor Suite can be installed through several channels on Linux, and each has different permission considerations. The Trezor Suite download from the official website offers a desktop application available as an AppImage, a Debian package, or an RPM file. The official repositories for Ubuntu, Fedora, and Arch also provide packaged versions. Each method relies on udev rules for hardware communication, but they differ in how those rules are delivered and installed.
Native package managers such as apt on Ubuntu or pacman on Arch typically include udev rules as part of their package dependencies or in a separate package such as trezor or trezor-udev. When installed this way, the rules are placed directly in the system directories and activated during package installation, often without requiring manual intervention. However, users who install Trezor Suite from a standalone AppImage or binary downloaded from the internet are responsible for manually copying udev rules to the correct location. This step is frequently overlooked, leading to hardware recognition failures.
Flatpak installations add another layer of complexity. A flatpaked Trezor Suite runs in a sandbox with restricted device access by default. Even if udev rules are correctly set on the host system, the flatpak container may not see the device without additional configuration. Some Flatpak applications include their own device permissions or sandbox overrides, but these must be properly configured at installation time. Users experiencing issues with a sandboxed Trezor Suite should verify that the flatpak has been granted raw USB access and that udev rules on the host are functioning correctly.
The safest approach for new users is to install Trezor Suite from the official repository of their Linux distribution rather than from standalone downloads. This ensures that udev rules and all dependencies are automatically installed and configured. Users who prefer the AppImage should download the udev rules from the official Trezor repository at GitHub and manually place them in /etc/udev/rules.d/, then reload udev as described above.
Step-by-step udev rule installation on Ubuntu
Ubuntu users have the most straightforward path because the official Trezor repositories provide prebuilt packages. First, add the Trezor PPA to the system sources list using sudo add-apt-repository ppa:satoshilabs/trezor followed by sudo apt update. Then install the trezor-udev package explicitly: sudo apt install trezor-udev. This package installs the udev rules in /etc/udev/rules.d/51-trezor.rules and triggers udev to reload them immediately. Most users can stop here; the hardware wallet should be recognized on the next connection or after a physical disconnection and reconnection.
For users who encounter issues even after installing trezor-udev, the rules may be shadowed by an older rule file or a conflicting configuration. Check the rules directory with ls -la /etc/udev/rules.d/ | grep -i trezor and also check /usr/lib/udev/rules.d/. If multiple rule files exist with conflicting names or if the Vendor ID and Product ID entries seem different, remove or rename the older one. Then run sudo udevadm control --reload-rules && sudo udevadm trigger and test with a hardware disconnection and reconnection.
If the device still fails to appear after correctly installing the rules, verify that the USB device itself is being detected by the kernel. Run lsusb and look for an entry containing “534c” (Trezor’s Vendor ID) or a product name matching Trezor. If the device does not appear in lsusb output, the issue is a physical USB connection, a faulty device, or a BIOS-level USB configuration problem unrelated to udev rules. If the device appears in lsusb but Trezor Suite still does not recognize it, manually inspect the created device file. Run ls -la /dev/bus/usb/ and look for the corresponding USB bus and device numbers, then check its permissions with stat /dev/bus/usb/[bus]/[device]. The file should be readable by your user or by a group you belong to.
A final diagnostic step involves checking udev logs directly. Run journalctl -f -g trezor or sudo tail -f /var/log/udev while plugging in the device, and observe which rules are matched and whether permissions are applied as expected. The output may reveal that a rule is matching but producing unexpected permissions, or that the device is matching no rules at all.
Udev configuration for Fedora and RHEL-based systems
Fedora users should first ensure that the udev and libusb packages are installed, which are typically present by default. Then install the trezor or trezor-udev package from the official repositories using sudo dnf install trezor-udev. On some Fedora versions, the trezor package may be in the community-maintained repository, in which case enabling that repository is necessary. Check with sudo dnf search trezor to locate available packages.
After installation, reload udev rules with sudo udevadm control --reload-rules and trigger reapplication with sudo udevadm trigger. Unlike Ubuntu, Fedora’s udev rules are typically placed in /etc/udev/rules.d/ via RPM installation, and the reload command is sufficient. If the installation did not include udev rules or if they were not applied, the rules file can be downloaded directly from the Trezor GitHub repository at https://raw.githubusercontent.com/trezor/udev-rules/master/51-trezor.rules and saved to /etc/udev/rules.d/. Then reload and trigger as before.
Fedora systems sometimes have SELinux enabled, which can block access to USB devices even when udev rules are correctly configured. If the hardware wallet is still not recognized despite correct udev rules, check SELinux status with getenforce. If it shows “Enforcing” and if the Trezor Suite process is being denied access, you may need to adjust SELinux policies. A temporary troubleshooting step is to set SELinux to permissive mode for testing: sudo semanage permissive -a trezor_t (if such a domain exists) or temporarily set the mode to permissive with sudo setenforce 0. If hardware recognition improves in permissive mode, the issue is SELinux policy. For a permanent fix, consult Fedora’s SELinux documentation or create a custom policy module specific to Trezor Suite.
Users running RHEL or Rocky Linux should follow the same general procedure as Fedora, but verify package availability through their specific distribution’s repositories. Red Hat Enterprise Linux may have older packages or require subscription access to certain repositories, so checking sudo dnf search trezor first is essential to confirm what is available on your system.
Arch Linux and manual rule management
Arch users can install Trezor Suite from the official repositories using sudo pacman -S trezor-suite or from the AUR using an AUR helper. The pacman package should include or depend on udev rules. However, Arch’s rolling-release nature means that rules may occasionally become outdated or incompatible with new Trezor hardware versions. Users experiencing issues should verify that they have the latest version: sudo pacman -Syu followed by sudo pacman -S trezor-suite trezor-udev.
If building from the AUR manually, download the PKGBUILD, inspect it for udev rule handling, and build with makepkg -si. Some AUR PKGBUILDs include udev rules directly, while others rely on a separate trezor-udev package. After installation, verify rule presence in /etc/udev/rules.d/ and reload with sudo udevadm control --reload-rules && sudo udevadm trigger.
For users who prefer a minimal or fully custom Arch installation, downloading rules directly is often the most transparent approach. Clone or download the Trezor udev-rules repository from GitHub, review the rules file to ensure it covers your specific device variant, and copy it to /etc/udev/rules.d/51-trezor.rules with appropriate ownership and permissions. The file itself should be owned by root and readable by all: sudo chown root:root /etc/udev/rules.d/51-trezor.rules && sudo chmod 0644 /etc/udev/rules.d/51-trezor.rules. Then reload udev as before.
Arch users who build from source or use cutting-edge udev versions may occasionally find that rule syntax has changed or that device matching requires adjustment. In such cases, consulting the kernel logs with dmesg | tail -20 after plugging in the device can reveal the actual Vendor ID and Product ID that the kernel detects, allowing for custom rule creation if needed.
Group-based permissions and user account management
An alternative to world-readable device permissions (mode 0666) is assigning the device to a user group such as plugdev or dialout and granting group-level access. This approach reduces the attack surface because only users in the designated group can access the hardware wallet. A udev rule using this method looks like: SUBSYSTEMS=="usb", ATTRS{idVendor}=="534c", ATTRS{idProduct}=="0001", GROUP="plugdev", MODE="0660". The device is readable and writable by its owner (root) and by members of the plugdev group, but not by others.
When using group-based permissions, the user running Trezor Suite must be a member of that group. Check group membership with groups $USER. If plugdev is not listed, add the user with sudo usermod -a -G plugdev $USER. The new group membership takes effect on the next login; users can either log out and log back in or start a new shell session with sg plugdev bash to immediately test hardware access without full logout.
The plugdev group is traditionally used for USB hardware access on Debian-based systems. On Fedora or Arch, the udev rule may assign to a different group such as dialout or a custom group. If the desired group does not exist, create it with sudo groupadd plugdev, then assign the user to it. Verify that the group was created and that the user is a member with getent group plugdev.
Group-based permissions are more complex to set up initially but are generally preferred for multi-user systems or security-conscious single-user systems because they avoid world-readable access to security-critical hardware devices. Users should choose the approach that matches their system’s security posture and administrative policies.
Testing, verification, and persistent troubleshooting
After installing udev rules and reloading them, the most direct test is to physically disconnect the Trezor hardware wallet and plug it back in, then immediately open Trezor Suite. The application should detect the device and display its state within a few seconds. If detection is slow or if the device briefly appears then disappears, the issue may be intermittent permission problems or a competing application claiming the device. Close any other wallet software or browser extensions that might be attempting to access the device simultaneously.
For a more thorough verification, use the trezor-common package or command-line utilities if available. Some distributions include trezor-firmware or similar utilities that can directly interact with the device without using Trezor Suite. If the device works with a command-line tool but not with Trezor Suite, the issue may be specific to the application’s architecture or sandboxing rather than udev rules. Conversely, if no command-line tool can access the device, the problem is definitely permissions or udev rules.
Persistent troubleshooting requires understanding that udev rules are applied once at device connection time. If a rule is corrected or updated after the device is already plugged in, it does not automatically apply; the device must be replugged. Conversely, if a rule applies to a device that is already connected, running sudo udevadm trigger will re-match the device and apply the rule. When testing fixes, it is therefore essential to physically disconnect the device, wait a few seconds, and reconnect it, rather than simply restarting Trezor Suite.
If problems persist after correctly installing rules and reloading udev, the issue may be elsewhere in the stack. The hardware itself could be defective, though this is rare. The USB port or cable could be failing, which is more common. The device might require a firmware update to be recognized by your kernel or udev version, which is best performed through Trezor Suite itself once initial connection is established. If all hardware diagnostics are normal, consult the distribution-specific support channels or the official Trezor support forum, providing details about your Linux distribution, udev version, kernel version, and the exact error messages from Trezor Suite.
Preventing future permission issues with regular maintenance
Once hardware wallet access is working, maintain it by keeping the system and packages up to date. Run sudo apt update && sudo apt upgrade on Ubuntu or sudo dnf update on Fedora regularly to ensure that udev rules, the kernel, and Trezor Suite itself are current. Hardware wallet support sometimes improves with new kernel versions or udev updates, and older systems may have rules that do not cover newly released Trezor hardware variants.
For users who add a new Trezor device to an existing system, the udev rules should already be in place and should automatically apply. However, if the new device uses a different Vendor or Product ID than previously owned hardware, the existing rules might not match it. In such cases, verify that the installed rule files cover the new device ID by examining the rules file contents with grep idVendor /etc/udev/rules.d/*trezor* and comparing against the device’s actual ID shown in lsusb. If the rule does not cover the new device, update the rule file from the official repository.
It is also prudent to test hardware access after major system upgrades such as moving from one Ubuntu LTS release to the next or upgrading Fedora to a new major version. Permissions and udev configurations can change, and a working setup on the old system may not function identically on the new one. A quick test is to plug in the Trezor, verify it appears in lsusb and Trezor Suite recognizes it, and perform a small practice transaction. This prevents discovering permission issues weeks later when the wallet is actually needed.
Frequently asked questions
Why does Trezor Suite show “No Trezor found” even though the device is plugged in?
The most common cause is missing or incorrect udev rules. Linux requires udev rules to grant user-level applications access to USB hardware devices. Install the appropriate udev package for your distribution (trezor-udev on Ubuntu and Fedora, or verify the AUR package on Arch), then reload rules with sudo udevadm control --reload-rules && sudo udevadm trigger and physically reconnect the device. If the problem persists, verify the device appears in lsusb and check rule permissions with stat /dev/bus/usb/[bus]/[device].
Can I run Trezor Suite in a Flatpak container, and if so, do I need different udev rules?
Yes, Trezor Suite is available as a Flatpak. Flatpak applications run in a sandbox and require explicit permission to access USB devices. Host-level udev rules must still be correctly configured, and the Flatpak may need to be granted raw USB device access through permissions or overrides. If the flatpaked Trezor Suite cannot access the device despite correct host udev rules, consult the Flatpak documentation for device access configuration.
What should I do if udev rules are installed but the device still does not appear after reconnection?
Check whether the device appears in lsusb; if not, the issue is physical connectivity or the device itself, not udev rules. If it does appear in lsusb, verify the rule files exist with ls -la /etc/udev/rules.d/*trezor* and inspect their content with cat. Check SELinux status on Fedora systems with getenforce. Review udev logs with journalctl -f -g trezor while reconnecting the device. If the logs show the device is being detected but no rule is matching, the rule file may contain a typo or may not cover your specific device’s Vendor and Product IDs.