From 58238c048bb0a3dcdd19bb6293a5e344fd920bac Mon Sep 17 00:00:00 2001 From: Adam Honse Date: Tue, 18 Aug 2026 16:46:17 -0500 Subject: [PATCH] Add custom udev rules everywhere a dummy detector was used --- Controllers/ArcticController/ArcticControllerDetect.cpp | 1 + .../BlinkyTapeController/BlinkyTapeControllerDetect.cpp | 1 + .../CorsairHydro2ControllerDetect.cpp | 1 + .../CorsairHydroControllerDetect.cpp | 3 +++ .../DygmaRaiseController/DygmaRaiseControllerDetect.cpp | 1 + .../HYTEMousematControllerDetect_FreeBSD_Linux.cpp | 2 ++ .../HYTEMousematControllerDetect_Windows_MacOS.cpp | 6 ------ .../HYTENexusController/HYTENexusControllerDetect.cpp | 2 ++ Controllers/LianLiController/LianLiControllerDetect.cpp | 3 +++ .../LogitechController/LogitechControllerDetect.cpp | 3 +++ .../MSIMotherboardControllerDetect.cpp | 7 +++++++ .../NZXTHuePlusController/NZXTHuePlusControllerDetect.cpp | 1 + .../SkydimoSerialControllerDetect.cpp | 1 + .../ThrustmasterSolControllerDetect.cpp | 6 ++++++ 14 files changed, 32 insertions(+), 6 deletions(-) diff --git a/Controllers/ArcticController/ArcticControllerDetect.cpp b/Controllers/ArcticController/ArcticControllerDetect.cpp index 63a43c395..885e53b80 100644 --- a/Controllers/ArcticController/ArcticControllerDetect.cpp +++ b/Controllers/ArcticController/ArcticControllerDetect.cpp @@ -44,6 +44,7 @@ DetectedControllers DetectArcticControllers() } REGISTER_DETECTOR("Arctic RGB controller", DetectArcticControllers); +REGISTER_CUSTOM_UDEV_RULE(arctic, "Arctic RGB controller", "SUBSYSTEMS==\"serial|hidraw\", ATTRS{idVendor}==\"1a86\", ATTRS{idProduct}==\"7523\", TAG+=\"uaccess\", TAG+=\"Arctic_RGB_controller\""); /*---------------------------------------------------------------------------------------------------------*\ | Entries for dynamic UDEV rules | | | diff --git a/Controllers/BlinkyTapeController/BlinkyTapeControllerDetect.cpp b/Controllers/BlinkyTapeController/BlinkyTapeControllerDetect.cpp index 140e3eee2..a95342786 100644 --- a/Controllers/BlinkyTapeController/BlinkyTapeControllerDetect.cpp +++ b/Controllers/BlinkyTapeController/BlinkyTapeControllerDetect.cpp @@ -40,6 +40,7 @@ DetectedControllers DetectBlinkyTapeControllers() } REGISTER_DETECTOR("BlinkyTape", DetectBlinkyTapeControllers); +REGISTER_CUSTOM_UDEV_RULE(blinky_tape, "BlinkyTape", "SUBSYSTEMS==\"serial|hidraw\", ATTRS{idVendor}==\"1d50\", ATTRS{idProduct}==\"605e\", TAG+=\"uaccess\", TAG+=\"BlinkyTape\""); /*---------------------------------------------------------------------------------------------------------*\ | Entries for dynamic UDEV rules | | | diff --git a/Controllers/CorsairHydro2Controller/CorsairHydro2ControllerDetect.cpp b/Controllers/CorsairHydro2Controller/CorsairHydro2ControllerDetect.cpp index 2111f7c57..444ab5699 100644 --- a/Controllers/CorsairHydro2Controller/CorsairHydro2ControllerDetect.cpp +++ b/Controllers/CorsairHydro2Controller/CorsairHydro2ControllerDetect.cpp @@ -44,6 +44,7 @@ DetectedControllers DetectCorsairHydro2Controllers() } REGISTER_DETECTOR("Corsair H100i v2", DetectCorsairHydro2Controllers); +REGISTER_CUSTOM_UDEV_RULE(corsair_h100i_v2, "Corsair H100i v2", "SUBSYSTEMS==\"usb|hidraw\", ATTRS{idVendor}==\"1b1c\", ATTRS{idProduct}==\"0c09\", TAG+=\"uaccess\", TAG+=\"Corsair_H100i_v2\""); /*---------------------------------------------------------------------------------------------------------*\ | Entries for dynamic UDEV rules | | | diff --git a/Controllers/CorsairHydroController/CorsairHydroControllerDetect.cpp b/Controllers/CorsairHydroController/CorsairHydroControllerDetect.cpp index 5f3f976e0..696733635 100644 --- a/Controllers/CorsairHydroController/CorsairHydroControllerDetect.cpp +++ b/Controllers/CorsairHydroController/CorsairHydroControllerDetect.cpp @@ -77,6 +77,9 @@ DetectedControllers DetectCorsairHydroControllers() } REGISTER_DETECTOR("Corsair Hydro Series", DetectCorsairHydroControllers); +REGISTER_CUSTOM_UDEV_RULE(corsair_hydro_1, "Corsair Hydro Series", "SUBSYSTEMS==\"usb|hidraw\", ATTRS{idVendor}==\"1b1c\", ATTRS{idProduct}==\"0c12\", TAG+=\"uaccess\", TAG+=\"Corsair_Hydro_Series\""); +REGISTER_CUSTOM_UDEV_RULE(corsair_hydro_2, "Corsair Hydro Series", "SUBSYSTEMS==\"usb|hidraw\", ATTRS{idVendor}==\"1b1c\", ATTRS{idProduct}==\"0c13\", TAG+=\"uaccess\", TAG+=\"Corsair_Hydro_Series\""); +REGISTER_CUSTOM_UDEV_RULE(corsair_hydro_3, "Corsair Hydro Series", "SUBSYSTEMS==\"usb|hidraw\", ATTRS{idVendor}==\"1b1c\", ATTRS{idProduct}==\"0c15\", TAG+=\"uaccess\", TAG+=\"Corsair_Hydro_Series\""); /*---------------------------------------------------------------------------------------------------------*\ | Entries for dynamic UDEV rules | | | diff --git a/Controllers/DygmaRaiseController/DygmaRaiseControllerDetect.cpp b/Controllers/DygmaRaiseController/DygmaRaiseControllerDetect.cpp index 08977abef..c95cfc15c 100644 --- a/Controllers/DygmaRaiseController/DygmaRaiseControllerDetect.cpp +++ b/Controllers/DygmaRaiseController/DygmaRaiseControllerDetect.cpp @@ -40,6 +40,7 @@ DetectedControllers DetectDygmaRaiseControllers() } REGISTER_DETECTOR("Dygma Raise", DetectDygmaRaiseControllers); +REGISTER_CUSTOM_UDEV_RULE(dygma_raise, "Dygma Raise", "SUBSYSTEMS==\"serial|hidraw\", ATTRS{idVendor}==\"1209\", ATTRS{idProduct}==\"2201\", TAG+=\"uaccess\", TAG+=\"Dygma_Raise\""); /*---------------------------------------------------------------------------------------------------------*\ | Entries for dynamic UDEV rules | | | diff --git a/Controllers/HYTEMousematController/HYTEMousematController_FreeBSD_Linux/HYTEMousematControllerDetect_FreeBSD_Linux.cpp b/Controllers/HYTEMousematController/HYTEMousematController_FreeBSD_Linux/HYTEMousematControllerDetect_FreeBSD_Linux.cpp index 558709c2c..f6c88fd11 100644 --- a/Controllers/HYTEMousematController/HYTEMousematController_FreeBSD_Linux/HYTEMousematControllerDetect_FreeBSD_Linux.cpp +++ b/Controllers/HYTEMousematController/HYTEMousematController_FreeBSD_Linux/HYTEMousematControllerDetect_FreeBSD_Linux.cpp @@ -75,6 +75,8 @@ DetectedControllers DetectHYTEMousematControllers() } REGISTER_DETECTOR("HYTE Mousemat", DetectHYTEMousematControllers); +REGISTER_CUSTOM_UDEV_RULE(hyte_mousemat_1, "HYTE Mousemat", "SUBSYSTEMS==\"usb|hidraw\", ATTRS{idVendor}==\"3402\", ATTRS{idProduct}==\"0b00\", TAG+=\"uaccess\", TAG+=\"HYTE_Mousemat\""); +REGISTER_CUSTOM_UDEV_RULE(hyte_mousemat_2, "HYTE Mousemat", "SUBSYSTEMS==\"usb|hidraw\", ATTRS{idVendor}==\"3402\", ATTRS{idProduct}==\"0b01\", TAG+=\"uaccess\", TAG+=\"HYTE_Mousemat\""); /*---------------------------------------------------------------------------------------------------------*\ | Entries for dynamic UDEV rules | | | diff --git a/Controllers/HYTEMousematController/HYTEMousematController_Windows_MacOS/HYTEMousematControllerDetect_Windows_MacOS.cpp b/Controllers/HYTEMousematController/HYTEMousematController_Windows_MacOS/HYTEMousematControllerDetect_Windows_MacOS.cpp index 9fcdcd4ff..08900bf10 100644 --- a/Controllers/HYTEMousematController/HYTEMousematController_Windows_MacOS/HYTEMousematControllerDetect_Windows_MacOS.cpp +++ b/Controllers/HYTEMousematController/HYTEMousematController_Windows_MacOS/HYTEMousematControllerDetect_Windows_MacOS.cpp @@ -60,9 +60,3 @@ DetectedControllers DetectHYTEMousematControllers() } REGISTER_DETECTOR("HYTE Mousemat", DetectHYTEMousematControllers); -/*---------------------------------------------------------------------------------------------------------*\ -| Entries for dynamic UDEV rules | -| | -| DUMMY_DEVICE_DETECTOR("HYTE Mousemat", DetectHYTEMousematControllers, 0x3402, 0x0B00 ) | -| DUMMY_DEVICE_DETECTOR("HYTE Mousemat", DetectHYTEMousematControllers, 0x3402, 0x0B01 ) | -\*---------------------------------------------------------------------------------------------------------*/ diff --git a/Controllers/HYTENexusController/HYTENexusControllerDetect.cpp b/Controllers/HYTENexusController/HYTENexusControllerDetect.cpp index d88367073..b0a309da0 100644 --- a/Controllers/HYTENexusController/HYTENexusControllerDetect.cpp +++ b/Controllers/HYTENexusController/HYTENexusControllerDetect.cpp @@ -56,6 +56,8 @@ DetectedControllers DetectHYTENexusControllers() } REGISTER_DETECTOR("HYTE Nexus", DetectHYTENexusControllers); +REGISTER_CUSTOM_UDEV_RULE(hyte_q60, "HYTE THICC Q60", "SUBSYSTEMS==\"usb|hidraw\", ATTRS{idVendor}==\"3402\", ATTRS{idProduct}==\"0400\", TAG+=\"uaccess\", TAG+=\"HYTE_THICC_Q60\""); +REGISTER_CUSTOM_UDEV_RULE(hyte_nexus_portal, "HYTE Nexus Portal NP50", "SUBSYSTEMS==\"usb|hidraw\", ATTRS{idVendor}==\"3402\", ATTRS{idProduct}==\"0901\", TAG+=\"uaccess\", TAG+=\"HYTE_Nexus_Portal_NP50\""); /*---------------------------------------------------------------------------------------------------------*\ | Entries for dynamic UDEV rules | | | diff --git a/Controllers/LianLiController/LianLiControllerDetect.cpp b/Controllers/LianLiController/LianLiControllerDetect.cpp index d3de9bce4..33c66cd6d 100644 --- a/Controllers/LianLiController/LianLiControllerDetect.cpp +++ b/Controllers/LianLiController/LianLiControllerDetect.cpp @@ -342,3 +342,6 @@ REGISTER_HID_DETECTOR_IPU("Lian Li Uni Hub - SL Infinity", DetectLianLiUniH REGISTER_HID_DETECTOR_IPU("Lian Li Strimer L Connect", DetectLianLiStrimerControllers, ENE_USB_VID, STRIMER_L_CONNECT_PID, 1, 0xFF72, 0xA1); REGISTER_HID_DETECTOR_I("Lian Li GA II Trinity", DetectLianLiGAIITrinity, NUVOTON_USB_VID, GAII_USB_PID, 0x02); REGISTER_HID_DETECTOR_I("Lian Li GA II Trinity Performance", DetectLianLiGAIITrinity, NUVOTON_USB_VID, GAII_Perf_USB_PID, 0x02); + +REGISTER_CUSTOM_UDEV_RULE(lianli_uni_hub, "Lian Li Uni Hub", "SUBSYSTEMS==\"usb|hidraw\", ATTRS{idVendor}==\"0cf2\", ATTRS{idProduct}==\"7750\", TAG+=\"uaccess\", TAG+=\"Lian_Li_Uni_Hub\""); +REGISTER_CUSTOM_UDEV_RULE(lianli_universal_screen, "Lian Li Universal Screen", "SUBSYSTEMS==\"usb|hidraw\", ATTRS{idVendor}==\"0416\", ATTRS{idProduct}==\"8050\", TAG+=\"uaccess\", TAG+=\"Lian_Li_Universal_Screen\""); diff --git a/Controllers/LogitechController/LogitechControllerDetect.cpp b/Controllers/LogitechController/LogitechControllerDetect.cpp index 676846ea9..a9c270e09 100644 --- a/Controllers/LogitechController/LogitechControllerDetect.cpp +++ b/Controllers/LogitechController/LogitechControllerDetect.cpp @@ -1712,6 +1712,9 @@ REGISTER_HID_DETECTOR_IP_ONLY ("Logitech HID++ 2.0", DetectLogitechHIDPP20, 1, 0 REGISTER_HID_DETECTOR_PU_ONLY ("Logitech HID++ 2.0", DetectLogitechHIDPP20, 0xFFA0, 1); REGISTER_CUSTOM_UDEV_RULE(logitech_hidpp20, "Logitech HID++ 2.0", "SUBSYSTEM==\"hidraw\", ATTRS{idVendor}==\"046d\", TAG+=\"uaccess\", TAG+=\"Logitech_HID_20\"\nSUBSYSTEM==\"usb\", ATTR{idVendor}==\"046d\", TAG+=\"uaccess\", TAG+=\"Logitech_HID_20\""); +REGISTER_CUSTOM_UDEV_RULE(logitech_g560, "Logitech G560 Lightsync Speaker", "SUBSYSTEMS==\"usb|hidraw\", ATTRS{idVendor}==\"046d\", ATTRS{idProduct}==\"0a78\", TAG+=\"uaccess\", TAG+=\"Logitech_G560_Lightsync_Speaker\""); +REGISTER_CUSTOM_UDEV_RULE(logitech_lightspeed, "Logitech G Lightspeed Receiver", "SUBSYSTEMS==\"usb|hidraw\", ATTRS{idVendor}==\"046d\", ATTRS{idProduct}==\"c539\", TAG+=\"uaccess\", TAG+=\"Logitech_G_Lightspeed_Receiver\""); +REGISTER_CUSTOM_UDEV_RULE(logitech_powerplay, "Logitech Powerplay Mat Receiver", "SUBSYSTEMS==\"usb|hidraw\", ATTRS{idVendor}==\"046d\", ATTRS{idProduct}==\"c53a\", TAG+=\"uaccess\", TAG+=\"Logitech_Powerplay_Mat_Receiver\""); /*-------------------------------------------------------------------------------------------------------------------------------------------------*\ | Keyboards | diff --git a/Controllers/MSIMotherboardController/MSIMotherboardControllerDetect.cpp b/Controllers/MSIMotherboardController/MSIMotherboardControllerDetect.cpp index e4d2189ff..4d95ad180 100644 --- a/Controllers/MSIMotherboardController/MSIMotherboardControllerDetect.cpp +++ b/Controllers/MSIMotherboardController/MSIMotherboardControllerDetect.cpp @@ -240,6 +240,13 @@ REGISTER_HID_DETECTOR_PU("MSI Mystic Light X870", DetectMSIMotherboardCont | DUMMY_DEVICE_DETECTOR("MSI Mystic Light MS_7E49", DetectMSIMotherboardControllers, 0x1462, 0x7E49 ) | \*---------------------------------------------------------------------------------------------------------*/ +REGISTER_CUSTOM_UDEV_RULE(msi_7e12, "MSI Mystic Light MS_7E12", "SUBSYSTEMS==\"usb|hidraw\", ATTRS{idVendor}==\"1462\", ATTRS{idProduct}==\"7e12\", TAG+=\"uaccess\", TAG+=\"MSI_Mystic_Light_MS_7E12\""); +REGISTER_CUSTOM_UDEV_RULE(msi_7e16, "MSI Mystic Light MS_7E16", "SUBSYSTEMS==\"usb|hidraw\", ATTRS{idVendor}==\"1462\", ATTRS{idProduct}==\"7e16\", TAG+=\"uaccess\", TAG+=\"MSI_Mystic_Light_MS_7E16\""); +REGISTER_CUSTOM_UDEV_RULE(msi_7e24, "MSI Mystic Light MS_7E24", "SUBSYSTEMS==\"usb|hidraw\", ATTRS{idVendor}==\"1462\", ATTRS{idProduct}==\"7e24\", TAG+=\"uaccess\", TAG+=\"MSI_Mystic_Light_MS_7E24\""); +REGISTER_CUSTOM_UDEV_RULE(msi_7e26, "MSI Mystic Light MS_7E26", "SUBSYSTEMS==\"usb|hidraw\", ATTRS{idVendor}==\"1462\", ATTRS{idProduct}==\"7e26\", TAG+=\"uaccess\", TAG+=\"MSI_Mystic_Light_MS_7E26\""); +REGISTER_CUSTOM_UDEV_RULE(msi_7e27, "MSI Mystic Light MS_7E27", "SUBSYSTEMS==\"usb|hidraw\", ATTRS{idVendor}==\"1462\", ATTRS{idProduct}==\"7e27\", TAG+=\"uaccess\", TAG+=\"MSI_Mystic_Light_MS_7E27\""); +REGISTER_CUSTOM_UDEV_RULE(msi_7e49, "MSI Mystic Light MS_7E49", "SUBSYSTEMS==\"usb|hidraw\", ATTRS{idVendor}==\"1462\", ATTRS{idProduct}==\"7e49\", TAG+=\"uaccess\", TAG+=\"MSI_Mystic_Light_MS_7E49\""); + #ifdef ENABLE_UNTESTED_MYSTIC_LIGHT REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_3EA4", DetectMSIMotherboardControllers, MSI_USB_VID, 0x3EA4, 0x0001, 0x00); REGISTER_HID_DETECTOR_PU("MSI Mystic Light MS_4459", DetectMSIMotherboardControllers, MSI_USB_VID, 0x4459, 0x0001, 0x00); diff --git a/Controllers/NZXTHuePlusController/NZXTHuePlusControllerDetect.cpp b/Controllers/NZXTHuePlusController/NZXTHuePlusControllerDetect.cpp index dd33c9e2d..1e448eed6 100644 --- a/Controllers/NZXTHuePlusController/NZXTHuePlusControllerDetect.cpp +++ b/Controllers/NZXTHuePlusController/NZXTHuePlusControllerDetect.cpp @@ -44,6 +44,7 @@ DetectedControllers DetectNZXTHuePlusControllers() } REGISTER_DETECTOR("NZXT Hue+", DetectNZXTHuePlusControllers); +REGISTER_CUSTOM_UDEV_RULE(nzxt_hue_plus, "NZXT Hue+", "SUBSYSTEMS==\"serial|hidraw\", ATTRS{idVendor}==\"04d8\", ATTRS{idProduct}==\"00df\", TAG+=\"uaccess\", TAG+=\"NZXT_Hue\""); /*---------------------------------------------------------------------------------------------------------*\ | Entries for dynamic UDEV rules | | | diff --git a/Controllers/SkydimoSerialController/SkydimoSerialControllerDetect.cpp b/Controllers/SkydimoSerialController/SkydimoSerialControllerDetect.cpp index fd37fce32..d0eb538ab 100644 --- a/Controllers/SkydimoSerialController/SkydimoSerialControllerDetect.cpp +++ b/Controllers/SkydimoSerialController/SkydimoSerialControllerDetect.cpp @@ -48,6 +48,7 @@ DetectedControllers DetectSkydimoSerialControllers() } REGISTER_DETECTOR("Skydimo Serial", DetectSkydimoSerialControllers); +REGISTER_CUSTOM_UDEV_RULE(skydimo_serial, "Skydimo Serial", "SUBSYSTEMS==\"serial|hidraw\", ATTRS{idVendor}==\"1a86\", ATTRS{idProduct}==\"7523\", TAG+=\"uaccess\", TAG+=\"Skydimo_Serial\""); /*---------------------------------------------------------------------------------------------------------*\ | Entries for dynamic UDEV rules | | | diff --git a/Controllers/ThrustmasterSolController/ThrustmasterSolControllerDetect.cpp b/Controllers/ThrustmasterSolController/ThrustmasterSolControllerDetect.cpp index 5fefbb8c2..70270ffef 100644 --- a/Controllers/ThrustmasterSolController/ThrustmasterSolControllerDetect.cpp +++ b/Controllers/ThrustmasterSolController/ThrustmasterSolControllerDetect.cpp @@ -113,6 +113,12 @@ DetectedControllers DetectThrustmasterSolControllers() } REGISTER_DETECTOR("Thrustmaster Sol", DetectThrustmasterSolControllers); +REGISTER_CUSTOM_UDEV_RULE(thrustmaster_sol_1, "Thrustmaster Sol", "SUBSYSTEMS==\"usb|hidraw\", ATTRS{idVendor}==\"044f\", ATTRS{idProduct}==\"0420\", TAG+=\"uaccess\", TAG+=\"Thrustmaster_Sol\""); +REGISTER_CUSTOM_UDEV_RULE(thrustmaster_sol_2, "Thrustmaster Sol", "SUBSYSTEMS==\"usb|hidraw\", ATTRS{idVendor}==\"044f\", ATTRS{idProduct}==\"0421\", TAG+=\"uaccess\", TAG+=\"Thrustmaster_Sol\""); +REGISTER_CUSTOM_UDEV_RULE(thrustmaster_sol_3, "Thrustmaster Sol", "SUBSYSTEMS==\"usb|hidraw\", ATTRS{idVendor}==\"044f\", ATTRS{idProduct}==\"0422\", TAG+=\"uaccess\", TAG+=\"Thrustmaster_Sol\""); +REGISTER_CUSTOM_UDEV_RULE(thrustmaster_sol_4, "Thrustmaster Sol", "SUBSYSTEMS==\"usb|hidraw\", ATTRS{idVendor}==\"044f\", ATTRS{idProduct}==\"0428\", TAG+=\"uaccess\", TAG+=\"Thrustmaster_Sol\""); +REGISTER_CUSTOM_UDEV_RULE(thrustmaster_sol_5, "Thrustmaster Sol", "SUBSYSTEMS==\"usb|hidraw\", ATTRS{idVendor}==\"044f\", ATTRS{idProduct}==\"0429\", TAG+=\"uaccess\", TAG+=\"Thrustmaster_Sol\""); +REGISTER_CUSTOM_UDEV_RULE(thrustmaster_sol_6, "Thrustmaster Sol", "SUBSYSTEMS==\"usb|hidraw\", ATTRS{idVendor}==\"044f\", ATTRS{idProduct}==\"042a\", TAG+=\"uaccess\", TAG+=\"Thrustmaster_Sol\""); /*---------------------------------------------------------------------------------------------------------*\ | Entries for dynamic UDEV rules | | |