Apply usbhid quirks

Abstract: Fix Linux USB HID device initialization failures by applying vendor and product specific quirks via kernel boot parameters.

Created: 2026-08-03 by
Applying USB HID quirks resolves issues where Linux fails to properly initialize or communicate with specific Human Interface Devices like keyboards, mice, and game controllers. By adding a quirk string to the kernel boot parameters, you can override default driver behavior, forcing the system to handle non-standard or buggy hardware correctly without requiring complex module recompilation or manual udev rule configurations.

Understanding USB HID Quirks

The usbhid driver in the Linux kernel handles communication for most human interface devices. However, some manufacturers implement protocols that deviate from the standard HID specification or contain bugs that cause the device to hang, fail to respond, or behave erratically. Instead of patching the kernel source, developers introduced a mechanism called "quirks" which allows users to apply workarounds via boot parameters.

These quirks are essentially flags that tell the driver how to treat a specific device identified by its Vendor ID (VID) and Product ID (PID). Common problems addressed by quirks include devices that do not wake up from suspend mode, controllers that send incorrect keycodes, or peripherals that cause the USB subsystem to stall. Understanding this mechanism is crucial before attempting any fixes, as applying the wrong quirk can render a device completely unusable.

Identifying Your Device IDs

Before applying any fixes, you must identify the unique Vendor ID and Product ID of your problematic device. These hexadecimal codes are assigned by the manufacturer and are essential for targeting the correct hardware. You can retrieve these IDs using the lsusb command in the terminal.

lsusb

This command lists all connected USB devices along with their IDs. Look for the entry corresponding to your device; it will appear in the format IDxxxx:yyyy, where xxxx is the Vendor ID and yyyy is the Product ID. For example, a Logitech keyboard might show as ID046d:c31c. If you have multiple devices, unplug the one causing issues and run the command again to isolate the disappearing entry, ensuring you capture the correct identifiers.

Applying Quirks via Kernel Parameters

The most straightforward way to apply a quirk is through the GRUB bootloader configuration. This method ensures the quirk is active early in the boot process, before user-space services start. You need to edit the GRUB configuration file, typically located at /etc/default/grub.

sudo nano /etc/default/grub

Locate the line starting with GRUB_CMDLINE_LINUX_DEFAULT. Inside the quotes, append the usbhid.quirks parameter. The syntax for this parameter is VID:PID:QUIRK. For instance, if your device has the ID 046d:c31c and requires the ignore input polling quirk, the parameter would look like usbhid.quirks=0x046d:0xc31c:0x0004.

After modifying the file, save the changes and update the GRUB configuration by running:

sudo update-grub

On some distributions, such as those using systemd-boot or other bootloaders, the process differs slightly, but the core concept remains the same: passing the usbhid.quirks argument to the kernel. Once updated, reboot your system for the changes to take effect.

Common Quirk Flags

Several standard quirk flags are available in the Linux kernel. The most frequently used ones include:

  • Ignore Input Polling (0x0004): Used when a device sends constant, unnecessary polling reports that clog the bus or confuse the driver.
  • Ignore Boot Devices (0x0080): Prevents the system from treating the device as a boot keyboard or mouse, which can sometimes resolve initialization conflicts.
  • Force Break Events (0x0010): Helps with devices that fail to send proper break signals during disconnection or state changes.

You can combine multiple quirks by adding them together. For example, to apply both the ignore polling and ignore boot device quirks, you would use 0x0084 (which is 0x0004 + 0x0080). Always check the kernel documentation or community forums for your specific device to determine the correct flag combination.

Verifying and Troubleshooting

After rebooting, verify that the quirk was applied successfully. Check the kernel ring buffer using dmesg | grep usbhid. You should see messages indicating that the quirk was recognized and applied to your device. If the device still behaves incorrectly, double-check the VID and PID values and ensure there are no typos in the hex codes.

If the issue persists, consider whether the problem might be related to physical port instability rather than driver quirks. In such cases, reviewing guides on troubleshooting faulty USB ports can provide additional diagnostic steps. Additionally, if you are using a hub, ensure that reverse connection issues or power management settings are not interfering with the signal integrity of your HID device.

Frequently Asked Questions

Can I apply quirks without rebooting?

No, USB HID quirks are kernel-level parameters that require a reboot to take effect because they influence the initial loading of the usbhid module. While you can unload and reload the module manually, this often disrupts connected devices and does not guarantee the quirk will be reapplied correctly for all instances.

How do I remove a quirk I no longer need?

To remove a quirk, simply edit the /etc/default/grub file again and delete the specific usbhid.quirks entry associated with your device. After saving the file, run sudo update-grub and reboot your system to revert to default driver behavior.

Do quirks affect all devices with the same vendor ID?

No, quirks are specific to both the Vendor ID and the Product ID. A quirk applied to one model from a manufacturer will not affect other models from the same vendor unless they share the exact same product ID and exhibit the same hardware bug.

What if my device ID changes after a firmware update?

If a manufacturer releases a firmware update that changes the device's PID, your existing quirk will stop working. You must re-identify the new PID using lsusb and update the usbhid.quirks parameter in your GRUB configuration accordingly.

Are there GUI tools to manage USB HID quirks?

Most Linux distributions do not provide a built-in GUI for managing kernel boot parameters directly. Users typically rely on text editors like nano or gedit to modify GRUB files. Some advanced desktop environments may offer boot loader configuration utilities, but direct editing remains the most reliable method.

Latest News

How to Display Output of xterm Command in Terminal Screen using Cron

Resolve the inability to display xterm output in a terminal screen from cron by redirecting logs or using wall instead of insecure X11 workarounds.

Read More
Expose Local Server on VPS Preserving Real Client IPs (OS Level)

Resolve VPS logging showing only gateway IPs by configuring reverse proxies to forward real client addresses via X-Forwarded-For headers.

Read More
How to Clear Recent Files History in Linux without Deleting Actual Files?

Clear recent files history in Linux by deleting ~/.local/share/recently-used.xbel without removing the actual files.

Read More
Best HDD Copy Strategy: Manually Syncing and Rewriting Scratch

Resolve data drift between two 4TB hard drives by using rsync with the --delete flag to manually sync and rewrite scratch data for an exact mirror.

Read More
Understanding Bash Prompt Abbreviations: An Overview

Resolve repetitive typing errors by creating and persisting Bash aliases in the .bashrc file for improved command-line efficiency.

Read More
Free Tools and Methods to Log Real-Time Performance Details in Task Manager

Log real-time CPU and memory metrics to CSV files using Windows Performance Monitor Data Collector Sets to troubleshoot system slowness.

Read More
Contact Qatar Airways Customer Service: Phone Number, Help Center, and More

Resolve urgent Qatar Airways reservation issues like flight changes and baggage claims using the US phone number +1801-855-5905 or online self-service tools.

Read More
Windows 11: Alt Codes Displaying Wrong Characters - Solutions

Resolve Windows 11 Alt codes showing wrong characters by verifying the US keyboard layout and enabling Num Lock.

Read More
Run Programs with Elevated Privileges: A Comprehensive Guide

Eliminates the need to type sudo for frequent administrative tasks by configuring .bashrc aliases or functions.

Read More
Dynamically Changing Dates in Excel Formulas Using Cells

Eliminate manual date updates in Excel by using cell references to create dynamic formulas that automatically adjust calculations when input dates change.

Read More
Granting Edit Access to a Specific Excel Sheet in an Office 365 User Email ID-Based Login

Excel Online lacks native sheet-level permissions, so users must split workbooks or use worksheet protection to isolate edit access for specific tabs.

Read More
Creating Network Load on Local Wi-Fi from One PC

Generate sustained Wi-Fi bandwidth load from a single PC using a VM SFTP server to test router stability and throughput.

Read More
Changing the Default Editor for Batch Files in Windows 11's File Explorer

Resolve the issue of batch files opening in Notepad by changing the default editor to a preferred application like VS Code.

Read More
Gain WiFi Connection Minutes Before Losing it by Changing MAC Address

Bypass MAC address filtering to restore WiFi connectivity temporarily when a device is blocked by network administrators.

Read More
Photos Folders Turned Black: Troubleshooting Picture Applications on Windows

Resolve black screens in Windows Photos by resetting the app, updating graphics drivers, and repairing system files.

Read More
Troubleshooting High CPU Temperature Values: A Step-by-Step Guide

Resolve high CPU temperatures and thermal throttling by monitoring with Speedfan, cleaning dust from cooling components, and replacing degraded thermal paste.

Read More
Make cURL establish TLS connection with CA unknown

Resolve cURL TLS connection failures with unknown or self-signed certificates by using the --insecure flag to bypass CA validation.

Read More
Troubleshooting Incorrect Network Metrics Values in Grafana, Prometheus, InfluxDB, and Telegraf

Fix incorrect network metrics in Grafana, Prometheus, InfluxDB, and Telegraf by verifying interface selection, resolving unit mismatches, and handling counter resets.

Read More
Start Another Terminal Window (cmd.exe) Windows Repair/Troubleshoot

Provides step-by-step instructions to access the Windows Command Prompt via bootable media for advanced system repair and troubleshooting.

Read More
Thinkpad P1 Gen 6: Sudden Thunderbolt 3 Dock USB-C Charging Stopped Working

Resolve sudden Thunderbolt 3 dock USB-C charging and internet failure on ThinkPad P1 Gen 6 by updating firmware, resetting the dock, and adjusting power settings.

Read More
ASUS Windows 11 Laptop: Internet Connection Issue with Hotspot

Resolve ASUS Windows 11 laptop spinning wheel issue when connecting to mobile hotspot by resetting network stack, disabling IPv6, and adjusting power settings.

Read More
Developing iOS Project with Firebase: Logging in and Sending Push Notifications

Integrates Firebase to enable secure user authentication and push notifications in iOS applications.

Read More
Troubleshooting Bash Script with Suspected Issues of Spaces, Dashes, Filenames and Quoting

Resolve Bash script failures caused by word splitting, globbing, and special characters in filenames by applying proper quoting techniques.

Read More
Populating OneDrive Folder for Local Backup without Affecting Remote Files

Prevent OneDrive from deleting remote files during Windows reinstallation by unlinking the account or using symbolic links to isolate local data.

Read More
Force First Frame as Keyframe Without Re-encoding: A Quick Solution

Resolve inaccurate seeking and playback glitches by re-encoding video to ensure the first frame is a valid keyframe.

Read More
Find Information in Database Using WSL (Ubuntu) on Windows-10

Resolve database connection issues from WSL Ubuntu on Windows 10 by configuring client tools and network access to query remote or local servers.

Read More
Configuring a New Router with Different Networks: One Family, One Guest

Resolve IP conflicts and isolate guest traffic by configuring a second router with a distinct subnet via its WAN port.

Read More
Quickly Open Multiple Stock Websites with a Single Command

Solve the problem of manually opening multiple stock research websites by creating a single command to launch them simultaneously on Windows, macOS, or Linux.

Read More
Improved Adobe Acrobat Search Experience: Access Advanced Search with Ease

Access advanced search filters like case sensitivity and regex in Adobe Acrobat by clicking More Options in the Find bar.

Read More
Port Forwarding VM via OpenVPN: A Comprehensive Guide

Configure OpenVPN server and iptables to forward specific ports from VPN clients to a virtual machine's internal IP address.

Read More
Understanding Partitions in the 1980s: A Look Back at MS-DOS and Master Boot Record

Explains how the Master Boot Record and partition table enabled MS-DOS to manage multiple disk volumes on a single physical drive.

Read More
Windows 10 Enterprise: Keyboard Not Detected in Managed Organization with Admin Privileges

Resolve Windows 10 Enterprise keyboard detection failures caused by Group Policy restrictions, driver corruption, or USB enumeration errors.

Read More
Can't Find x86_64 Versions of Applications on MacOS arm64 (M1)

Resolve missing x86_64 app issues on M1 Macs by installing Rosetta 2 and reinstalling apps as universal binaries.

Read More
How to Hide Installation Source for an Android App

Manage Android app installation source visibility by using USB transfers or file managers to reduce browser traces and isolate data via work profiles.

Read More
Connecting Momentus 4200.2 ST9808210A Hard Drive via USB Cable

Resolve inability to access Seagate Momentus 4200.2 ST9808210A hard drive by connecting it via USB using a compatible SATA-to-USB adapter and configuring the disk in Windows.

Read More