diff --git a/cmake/modules/FindLibUSB.cmake b/cmake/modules/FindLibUSB.cmake
index df3ef65a3b7..c5362c00f58 100644
--- a/cmake/modules/FindLibUSB.cmake
+++ b/cmake/modules/FindLibUSB.cmake
@@ -43,6 +43,8 @@ The following cache variables may also be set:
 
 #]=======================================================================]
 
+include(IsStaticLibrary)
+
 find_package(PkgConfig QUIET)
 if(PkgConfig_FOUND)
   pkg_check_modules(PC_LibUSB QUIET libusb-1.0)
@@ -87,5 +89,15 @@ if(LibUSB_FOUND)
         INTERFACE_COMPILE_OPTIONS "${PC_LibUSB_CFLAGS_OTHER}"
         INTERFACE_INCLUDE_DIRECTORIES "${LibUSB_INCLUDE_DIR}"
     )
+
+    is_static_library(LibUSB_IS_STATIC LibUSB::LibUSB)
+    if(LibUSB_IS_STATIC)
+      find_package(Libudev)
+      if(Libudev_FOUND)
+        set_property(TARGET LibUSB::LibUSB APPEND PROPERTY INTERFACE_LINK_LIBRARIES
+          Libudev::Libudev
+        )
+      endif()
+    endif()
   endif()
 endif()
diff --git a/cmake/modules/FindLibudev.cmake b/cmake/modules/FindLibudev.cmake
new file mode 100644
index 00000000000..7e9dc77c9be
--- /dev/null
+++ b/cmake/modules/FindLibudev.cmake
@@ -0,0 +1,61 @@
+# This file is part of Mixxx, Digital DJ'ing software.
+# Copyright (C) 2001-2023 Mixxx Development Team
+# Distributed under the GNU General Public Licence (GPL) version 2 or any later
+# later version. See the LICENSE file for details.
+
+#[=======================================================================[.rst:
+FindLibudev
+--------
+
+Finds the libudev (userspace device manager) library.
+
+Imported Targets
+^^^^^^^^^^^^^^^^
+
+This module provides the following imported targets, if found:
+
+``Libudev::Libudev``
+  The libudev library
+
+#]=======================================================================]
+
+find_package(PkgConfig QUIET)
+if(PkgConfig_FOUND)
+  pkg_check_modules(PC_Libudev QUIET libudev)
+endif()
+
+find_path(Libudev_INCLUDE_DIR
+  NAMES libudev.h
+  PATHS ${PC_Libudev_INCLUDE_DIRS}
+  DOC "The libudev include directory")
+mark_as_advanced(Libudev_INCLUDE_DIR)
+
+find_library(Libudev_LIBRARY
+  NAMES udev
+  PATH ${PC_Libudev_LIBRARY_DIRS}
+  DOC "The libudev library"
+)
+mark_as_advanced(Libudev_LIBRARY)
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(
+  Libudev
+  REQUIRED_VARS Libudev_LIBRARY Libudev_INCLUDE_DIR
+  VERSION_VAR Libudev_VERSION
+)
+
+if(Libudev_FOUND)
+  set(Libudev_LIBRARIES "${Libudev_LIBRARY}")
+  set(Libudev_INCLUDE_DIRS "${Libudev_INCLUDE_DIR}")
+  set(Libudev_DEFINITIONS ${PC_Libudev_CFLAGS_OTHER})
+
+  if(NOT TARGET Libudev::Libudev)
+    add_library(Libudev::Libudev UNKNOWN IMPORTED)
+    set_target_properties(Libudev::Libudev
+      PROPERTIES
+        IMPORTED_LOCATION "${Libudev_LIBRARY}"
+        INTERFACE_COMPILE_OPTIONS "${PC_Libudev_CFLAGS_OTHER}"
+        INTERFACE_INCLUDE_DIRECTORIES "${Libudev_INCLUDE_DIR}"
+    )
+  endif()
+endif()
diff --git a/cmake/modules/Findhidapi.cmake b/cmake/modules/Findhidapi.cmake
index 8da70f855a4..a4ff5bc4bb7 100644
--- a/cmake/modules/Findhidapi.cmake
+++ b/cmake/modules/Findhidapi.cmake
@@ -43,6 +43,8 @@ The following cache variables may also be set:
 
 #]=======================================================================]
 
+include(IsStaticLibrary)
+
 find_package(PkgConfig QUIET)
 if(PkgConfig_FOUND)
   pkg_search_module(PC_hidapi QUIET hidapi-libusb hidapi)
@@ -121,6 +123,23 @@ if(hidapi_FOUND)
          INTERFACE_COMPILE_OPTIONS "${PC_hidapi_CFLAGS_OTHER}"
          INTERFACE_INCLUDE_DIRECTORIES "${hidapi_INCLUDE_DIR}"
       )
+
+      find_package(Libudev)
+      if(Libudev_FOUND)
+        is_static_library(hidapi_IS_STATIC hidapi::hidapi)
+        if(hidapi_IS_STATIC)
+          set_property(TARGET hidapi::hidapi APPEND PROPERTY INTERFACE_LINK_LIBRARIES
+            Libudev::Libudev
+          )
+        endif()
+
+        is_static_library(hidapi-hidraw_IS_STATIC hidapi::hidraw)
+        if(hidapi-hidraw_IS_STATIC)
+          set_property(TARGET hidapi::hidraw APPEND PROPERTY INTERFACE_LINK_LIBRARIES
+            Libudev::Libudev
+          )
+        endif()
+      endif()
     endif()
   endif()
 endif()