USBNotifier icon indicating copy to clipboard operation
USBNotifier copied to clipboard

No devices sub menu shown

Open JonnyTech opened this issue 5 months ago • 12 comments

From the release notes:

v1.1.0: Device Information, in your Menu Bar. Latest Added A new menu to show USB devices information, because people are too lazy to get to System Information, it seems!

But on my mac mini running sonoma 14.8, it displays the menu item "Devices" but does not show a sub menu so I cannot see if any devices are connected (which there are).

JonnyTech avatar Sep 17 '25 18:09 JonnyTech

Try unplugging and re-plugging a device into any port on your device with the pop-up closed, see what happens.

The issue is that for some reason a MenuBarExtra is always considered "appeared" after it has been shown on screen once by SwiftUI (onAppear is never executed again after you open the menu once). As such I have to hook into a device update event to manually upfate that menu.

ohaiibuzzle avatar Sep 18 '25 03:09 ohaiibuzzle

Try unplugging and re-plugging a device into any port on your device with the pop-up closed, see what happens.

I did try, the device notification appeared, but still no devices submenu. Is there a log or similar somewhere?

JonnyTech avatar Sep 18 '25 18:09 JonnyTech

That's super odd. Device should have been enumerated in there if they ever showed up in ioreg. Weird.

Can you dump the output of ioreg -p IOUSB -b -l?

ohaiibuzzle avatar Sep 20 '25 19:09 ohaiibuzzle

Can you dump the output of ioreg -p IOUSB -b -l?

Will do, but it may be a week or two before I get to the minis again. Thanks for your patience.

JonnyTech avatar Sep 20 '25 21:09 JonnyTech

Sorry for the delay. Here you go. I re-plugged some devices but still nothing on the Devices submenu.

ioreg -p IOUSB -b -l
% ioreg -p IOUSB -b -l
+-o Root  <class IORegistryEntry, id 0x100000100, retain 42>
  | {
  |   "IOKitBuildVersion" = "Darwin Kernel Version 23.6.0: Mon Aug 11 21:20:40 PDT 2025; root:xnu-10063.141.1.706.13~1/RELEASE_ARM64_T6020"
  |   "OS Build Version" = "23J30"
  |   "OSKernelCPUSubtype" = 18446744072635809794
  |   "OSKernelCPUType" = 16777228
  |   "OSPrelinkKextCount" = 11
  |   "IORegistryPlanes" = {"IOPort"="IOPort","IOPower"="IOPower","IOService"="IOService","IOAccessory"="IOAccessory","IOUSB"="IOUSB","CoreCapture"="CoreCapture","IO80211Plan$
  |   "IOConsoleLocked" = No
  |   "IOConsoleUsers" = ({"kCGSSessionOnConsoleKey"=Yes,"kSCSecuritySessionID"=100002,"kCGSSessionSystemSafeBoot"=No,"kCGSessionLoginDoneKey"=Yes,"kCGSSessionIDKey"=257,"kCG$
  |   "IOKitDiagnostics" = {"Instance allocation"=671400784,"Container allocation"=7829218,"Pageable allocation"=5305516032,"Classes"={"KDISecondaryEncoding"=0,"RTBuddyFirmwa$
  | }
  | 
  +-o AppleT8112USBXHCI@01000000  <class AppleT8112USBXHCI, id 0x100000493, registered, matched, active, busy 0 (9 ms), retain 37>
  |   {
  |     "IOClass" = "AppleT8112USBXHCI"
  |     "kUSBSleepPortCurrentLimit" = 3000
  |     "UsbHostControllerSoftRetryPolicy" = 0
  |     "IOPersonalityPublisher" = "com.apple.driver.usb.AppleSynopsysUSB40XHCI"
  |     "IOMatchedAtBoot" = Yes
  |     "IOPowerManagement" = {"ChildrenPowerState"=0,"DevicePowerState"=0,"CurrentPowerState"=0,"CapabilityFlags"=0,"MaxPowerState"=3,"DriverPowerState"=0}
  |     "IOProviderClass" = "AppleARMIODevice"
  |     "IOProbeScore" = 10000
  |     "locationID" = 16777216
  |     "kUSBWakePortCurrentLimit" = 3000
  |     "IONameMatch" = "usb-drd,t8112"
  |     "CFBundleIdentifierKernel" = "com.apple.driver.usb.AppleSynopsysUSB40XHCI"
  |     "UsbHostControllerDeferRegisterService" = Yes
  |     "IOMatchCategory" = "usb-host"
  |     "CFBundleIdentifier" = "com.apple.driver.usb.AppleSynopsysUSB40XHCI"
  |     "Revision" = <0103>
  |     "IONameMatched" = "usb-drd,t8112"
  |     "UsbHostControllerUSB4LPMPolicy" = 1
  |     "UsbHostControllerTierLimit" = 6
  |     "controller-statistics" = {"kControllerStatIOCount"=0,"kControllerStatPowerStateTime"={"kPowerStateOff"="10869077ms (99%)","kPowerStateSleep"="0ms (0%)","kPowerStateO$
  |     "kUSBSleepSupported" = Yes
  |   }
  |   
  +-o AppleT8112USBXHCI@03000000  <class AppleT8112USBXHCI, id 0x100000366, registered, matched, active, busy 0 (13 ms), retain 37>
  |   {
  |     "IOClass" = "AppleT8112USBXHCI"
  |     "kUSBSleepPortCurrentLimit" = 3000
  |     "UsbHostControllerSoftRetryPolicy" = 0
  |     "IOPersonalityPublisher" = "com.apple.driver.usb.AppleSynopsysUSB40XHCI"
  |     "IOMatchedAtBoot" = Yes
  |     "IOPowerManagement" = {"ChildrenPowerState"=0,"DevicePowerState"=0,"CurrentPowerState"=0,"CapabilityFlags"=0,"MaxPowerState"=3,"DriverPowerState"=0}
  |     "IOProviderClass" = "AppleARMIODevice"
  |     "IOProbeScore" = 10000
  |     "locationID" = 50331648
  |     "kUSBWakePortCurrentLimit" = 3000
  |     "IONameMatch" = "usb-drd,t8112"
  |     "CFBundleIdentifierKernel" = "com.apple.driver.usb.AppleSynopsysUSB40XHCI"
  |     "UsbHostControllerDeferRegisterService" = Yes
  |     "IOMatchCategory" = "usb-host"
  |     "CFBundleIdentifier" = "com.apple.driver.usb.AppleSynopsysUSB40XHCI"
  |     "Revision" = <0103>
  |     "IONameMatched" = "usb-drd,t8112"
  |     "UsbHostControllerUSB4LPMPolicy" = 1
  |     "UsbHostControllerTierLimit" = 6
  |     "controller-statistics" = {"kControllerStatIOCount"=0,"kControllerStatPowerStateTime"={"kPowerStateOff"="10869706ms (99%)","kPowerStateSleep"="0ms (0%)","kPowerStateO$
  |     "kUSBSleepSupported" = Yes
  |   }
  |   
  +-o AppleT8112USBXHCI@02000000  <class AppleT8112USBXHCI, id 0x1000003b6, registered, matched, active, busy 0 (9 ms), retain 37>
  |   {
  |     "IOClass" = "AppleT8112USBXHCI"
  |     "kUSBSleepPortCurrentLimit" = 3000
  |     "UsbHostControllerSoftRetryPolicy" = 0
  |     "IOPersonalityPublisher" = "com.apple.driver.usb.AppleSynopsysUSB40XHCI"
  |     "IOMatchedAtBoot" = Yes
  |     "IOPowerManagement" = {"ChildrenPowerState"=0,"DevicePowerState"=0,"CurrentPowerState"=0,"CapabilityFlags"=0,"MaxPowerState"=3,"DriverPowerState"=0}
  |     "IOProviderClass" = "AppleARMIODevice"
  |     "IOProbeScore" = 10000
  |     "locationID" = 33554432
  |     "kUSBWakePortCurrentLimit" = 3000
  |     "IONameMatch" = "usb-drd,t8112"
  |     "CFBundleIdentifierKernel" = "com.apple.driver.usb.AppleSynopsysUSB40XHCI"
  |     "UsbHostControllerDeferRegisterService" = Yes
  |     "IOMatchCategory" = "usb-host"
  |     "CFBundleIdentifier" = "com.apple.driver.usb.AppleSynopsysUSB40XHCI"
  |     "Revision" = <0103>
  |     "IONameMatched" = "usb-drd,t8112"
  |     "UsbHostControllerUSB4LPMPolicy" = 1
  |     "UsbHostControllerTierLimit" = 6
  |     "controller-statistics" = {"kControllerStatIOCount"=0,"kControllerStatPowerStateTime"={"kPowerStateOff"="10868969ms (99%)","kPowerStateSleep"="0ms (0%)","kPowerStateO$
  |     "kUSBSleepSupported" = Yes
  |   }
  |   
  +-o AppleT8112USBXHCI@00000000  <class AppleT8112USBXHCI, id 0x100000490, registered, matched, active, busy 0 (2329 ms), retain 308>
  | | {
  | |   "IOClass" = "AppleT8112USBXHCI"
  | |   "kUSBSleepPortCurrentLimit" = 3000
  | |   "UsbHostControllerSoftRetryPolicy" = 0
  | |   "IOPersonalityPublisher" = "com.apple.driver.usb.AppleSynopsysUSB40XHCI"
  | |   "IOMatchedAtBoot" = Yes
  | |   "IOPowerManagement" = {"ChildrenPowerState"=3,"DevicePowerState"=0,"CurrentPowerState"=3,"CapabilityFlags"=32768,"MaxPowerState"=3,"DriverPowerState"=0}
  | |   "IOProviderClass" = "AppleARMIODevice"
  | |   "IOProbeScore" = 10000
  | |   "locationID" = 0
  | |   "kUSBWakePortCurrentLimit" = 3000
  | |   "IONameMatch" = "usb-drd,t8112"
  | |   "CFBundleIdentifierKernel" = "com.apple.driver.usb.AppleSynopsysUSB40XHCI"
  | |   "UsbHostControllerDeferRegisterService" = Yes
  | |   "IOMatchCategory" = "usb-host"
  | |   "CFBundleIdentifier" = "com.apple.driver.usb.AppleSynopsysUSB40XHCI"
  | |   "Revision" = <0103>
  | |   "IONameMatched" = "usb-drd,t8112"
  | |   "UsbHostControllerUSB4LPMPolicy" = 1
  | |   "UsbHostControllerTierLimit" = 6
  | |   "controller-statistics" = {"kControllerStatIOCount"=5707152,"kControllerStatPowerStateTime"={"kPowerStateOff"="285ms (0%)","kPowerStateSleep"="0ms (0%)","kPowerStateO$
  | |   "kUSBSleepSupported" = Yes
  | | }
  | | 
  | +-o USB2.1 Hub@00100000  <class IOUSBHostDevice, id 0x1000009ae, registered, matched, active, busy 0 (58 ms), retain 36>
  | | | {
  | | |   "sessionID" = 136629069
  | | |   "USBSpeed" = 3
  | | |   "idProduct" = 1552
  | | |   "iManufacturer" = 1
  | | |   "bDeviceClass" = 9
  | | |   "IOPowerManagement" = {"PowerOverrideOn"=Yes,"CapabilityFlags"=32768,"MaxPowerState"=2,"DevicePowerState"=2,"DriverPowerState"=0,"ChildrenPowerState"=2,"CurrentPowe$
  | | |   "bcdDevice" = 1622
  | | |   "bMaxPacketSize0" = 64
  | | |   "iProduct" = 2
  | | |   "iSerialNumber" = 0
  | | |   "bNumConfigurations" = 1
  | | |   "kUSBContainerID" = "f0564b9f-f61d-e011-ac64-0800200c9a66"
  | | |   "UsbDeviceSignature" = <e30510065606090001090000>
  | | |   "locationID" = 1048576
  | | |   "bDeviceSubClass" = 0
  | | |   "bcdUSB" = 528
  | | |   "USB Product Name" = "USB2.1 Hub"
  | | |   "USB Address" = 1
  | | |   "IOCFPlugInTypes" = {"9dc7b780-9ec0-11d4-a54f-000a27052861"="IOUSBHostFamily.kext/Contents/PlugIns/IOUSBLib.bundle"}
  | | |   "UsbExclusiveOwner" = "AppleUSB20Hub"
  | | |   "bDeviceProtocol" = 1
  | | |   "USBPortType" = 0
  | | |   "IOServiceDEXTEntitlements" = (("com.apple.developer.driverkit.transport.usb"))
  | | |   "kUSBCurrentConfiguration" = 1
  | | |   "USB Vendor Name" = "GenesysLogic"
  | | |   "Device Speed" = 2
  | | |   "idVendor" = 1507
  | | |   "kUSBProductString" = "USB2.1 Hub"
  | | |   "IOGeneralInterest" = "IOCommand is not serializable"
  | | |   "kUSBAddress" = 1
  | | |   "kUSBVendorString" = "GenesysLogic"
  | | | }
  | | | 
  | | +-o USB2.0 Hub@00120000  <class IOUSBHostDevice, id 0x1000009da, registered, matched, active, busy 0 (54 ms), retain 35>
  | |   | {
  | |   |   "sessionID" = 141020246
  | |   |   "USBSpeed" = 3
  | |   |   "idProduct" = 1544
  | |   |   "iManufacturer" = 0
  | |   |   "bDeviceClass" = 9
  | |   |   "IOPowerManagement" = {"PowerOverrideOn"=Yes,"CapabilityFlags"=32768,"MaxPowerState"=2,"DevicePowerState"=2,"DriverPowerState"=0,"ChildrenPowerState"=2,"CurrentPo$
  | |   |   "bcdDevice" = 34104
  | |   |   "bMaxPacketSize0" = 64
  | |   |   "iProduct" = 1
  | |   |   "iSerialNumber" = 0
  | |   |   "bNumConfigurations" = 1
  | |   |   "kUSBContainerID" = "743a13d2-c3ca-4a35-98df-6136f5bf61cf"
  | |   |   "UsbDeviceSignature" = <e30508063885090001090000>
  | |   |   "locationID" = 1179648
  | |   |   "bDeviceSubClass" = 0
  | |   |   "bcdUSB" = 512
  | |   |   "USB Product Name" = "USB2.0 Hub"
  | |   |   "USB Address" = 3
  | |   |   "IOCFPlugInTypes" = {"9dc7b780-9ec0-11d4-a54f-000a27052861"="IOUSBHostFamily.kext/Contents/PlugIns/IOUSBLib.bundle"}
  | |   |   "UsbExclusiveOwner" = "AppleUSB20Hub"
  | |   |   "bDeviceProtocol" = 1
  | |   |   "USBPortType" = 0
  | |   |   "IOServiceDEXTEntitlements" = (("com.apple.developer.driverkit.transport.usb"))
  | |   |   "kUSBCurrentConfiguration" = 1
  | |   |   "Device Speed" = 2
  | |   |   "idVendor" = 1507
  | |   |   "kUSBProductString" = "USB2.0 Hub"
  | |   |   "IOGeneralInterest" = "IOCommand is not serializable"
  | |   |   "kUSBAddress" = 3
  | |   | }
  | |   | 
  | |   +-o Scarlett 2i2 USB@00121000  <class IOUSBHostDevice, id 0x1000009f9, registered, matched, active, busy 0 (44 ms), retain 100>
  | |       {
  | |         "sessionID" = 147432078
  | |         "USBSpeed" = 3
  | |         "idProduct" = 33282
  | |         "iManufacturer" = 1
  | |         "bDeviceClass" = 239
  | |         "IOPowerManagement" = {"PowerOverrideOn"=Yes,"DevicePowerState"=2,"CurrentPowerState"=2,"CapabilityFlags"=32768,"MaxPowerState"=2,"DriverPowerState"=0}
  | |         "bcdDevice" = 1051
  | |         "bMaxPacketSize0" = 64
  | |         "iProduct" = 3
  | |         "iSerialNumber" = 0
  | |         "bNumConfigurations" = 2
  | |         "UsbDeviceSignature" = <351202821b04ef0201010120010220ff0110>
  | |         "USB Product Name" = "Scarlett 2i2 USB"
  | |         "locationID" = 1183744
  | |         "bDeviceSubClass" = 2
  | |         "bcdUSB" = 512
  | |         "USB Address" = 5
  | |         "kUSBCurrentConfiguration" = 1
  | |         "IOCFPlugInTypes" = {"9dc7b780-9ec0-11d4-a54f-000a27052861"="IOUSBHostFamily.kext/Contents/PlugIns/IOUSBLib.bundle"}
  | |         "bDeviceProtocol" = 1
  | |         "USBPortType" = 0
  | |         "IOServiceDEXTEntitlements" = (("com.apple.developer.driverkit.transport.usb"))
  | |         "USB Vendor Name" = "Focusrite"
  | |         "Device Speed" = 2
  | |         "idVendor" = 4661
  | |         "kUSBProductString" = "Scarlett 2i2 USB"
  | |         "IOGeneralInterest" = "IOCommand is not serializable"
  | |         "kUSBAddress" = 5
  | |         "kUSBVendorString" = "Focusrite"
  | |       }
  | |       
  | +-o USB3.1 Hub@00200000  <class IOUSBHostDevice, id 0x1000009b0, registered, matched, active, busy 0 (2278 ms), retain 35>
  |   | {
  |   |   "sessionID" = 136701296
  |   |   "USBSpeed" = 4
  |   |   "idProduct" = 1574
  |   |   "iManufacturer" = 1
  |   |   "bDeviceClass" = 9
  |   |   "IOPowerManagement" = {"PowerOverrideOn"=Yes,"CapabilityFlags"=32768,"MaxPowerState"=2,"DevicePowerState"=2,"DriverPowerState"=0,"ChildrenPowerState"=2,"CurrentPowe$
  |   |   "bcdDevice" = 1622
  |   |   "bMaxPacketSize0" = 9
  |   |   "iProduct" = 2
  |   |   "iSerialNumber" = 0
  |   |   "bNumConfigurations" = 1
  |   |   "kUSBContainerID" = "f0564b9f-f61d-e011-ac64-0800200c9a66"
  |   |   "UsbDeviceSignature" = <e30526065606090003090000>
  |   |   "locationID" = 2097152
  |   |   "bDeviceSubClass" = 0
  |   |   "bcdUSB" = 800
  |   |   "USB Product Name" = "USB3.1 Hub"
  |   |   "USB Address" = 2
  |   |   "IOCFPlugInTypes" = {"9dc7b780-9ec0-11d4-a54f-000a27052861"="IOUSBHostFamily.kext/Contents/PlugIns/IOUSBLib.bundle"}
  |   |   "UsbExclusiveOwner" = "AppleUSB30Hub"
  |   |   "bDeviceProtocol" = 3
  |   |   "USBPortType" = 0
  |   |   "IOServiceDEXTEntitlements" = (("com.apple.developer.driverkit.transport.usb"))
  |   |   "kUSBHubIdlePolicy" = 0
  |   |   "USB Vendor Name" = "GenesysLogic"
  |   |   "Device Speed" = 3
  |   |   "idVendor" = 1507
  |   |   "kUSBCurrentConfiguration" = 1
  |   |   "kUSBProductString" = "USB3.1 Hub"
  |   |   "IOGeneralInterest" = "IOCommand is not serializable"
  |   |   "kUSBAddress" = 2
  |   |   "kUSBVendorString" = "GenesysLogic"
  |   | }
  |   | 
  |   +-o USB 10/100/1000 LAN@00230000  <class IOUSBHostDevice, id 0x1000009dc, registered, matched, active, busy 0 (2273 ms), retain 163>
  |       {
  |         "kUSBSerialNumberString" = "001000001"
  |         "bDeviceClass" = 0
  |         "bDeviceSubClass" = 0
  |         "iSerialNumber" = 6
  |         "IOServiceDEXTEntitlements" = (("com.apple.developer.driverkit.transport.usb"))
  |         "iProduct" = 2
  |         "USB Serial Number" = "001000001"
  |         "USB Vendor Name" = "Realtek"
  |         "USBSpeed" = 4
  |         "IOPowerManagement" = {"PowerOverrideOn"=Yes,"CapabilityFlags"=32768,"MaxPowerState"=2,"DevicePowerState"=2,"DriverPowerState"=0,"ChildrenPowerState"=2,"CurrentPo$
  |         "bNumConfigurations" = 2
  |         "kUSBProductString" = "USB 10/100/1000 LAN"
  |         "kUSBVendorString" = "Realtek"
  |         "USB Product Name" = "USB 10_100_1000 LAN"
  |         "kUSBHostDeviceEnableLPM" = No
  |         "iManufacturer" = 1
  |         "idVendor" = 3034
  |         "Device Speed" = 3
  |         "kUSBCurrentConfiguration" = 2
  |         "idProduct" = 33107
  |         "bcdDevice" = 12544
  |         "UsbDeviceSignature" = <da0b53810031303031303030303031000000ffff000206000a0000>
  |         "sessionID" = 140998698
  |         "USB Address" = 4
  |         "kUSBPreferredConfiguration" = 2
  |         "IOCFPlugInTypes" = {"9dc7b780-9ec0-11d4-a54f-000a27052861"="IOUSBHostFamily.kext/Contents/PlugIns/IOUSBLib.bundle"}
  |         "USBPortType" = 0
  |         "bDeviceProtocol" = 0
  |         "locationID" = 2293760
  |         "kUSBAddress" = 4
  |         "bcdUSB" = 768
  |         "IOGeneralInterest" = "IOCommand is not serializable"
  |         "bMaxPacketSize0" = 9
  |       }
  |       
  +-o AppleEmbeddedUSBXHCIASMedia3142@08000000  <class AppleEmbeddedUSBXHCIASMedia3142, id 0x10000096d, registered, matched, active, busy 0 (48 ms), retain 48>
  | | {
  | |   "IOClass" = "AppleEmbeddedUSBXHCIASMedia3142"
  | |   "kUSBSleepPortCurrentLimit" = 2100
  | |   "UsbHostControllerSoftRetryPolicy" = 0
  | |   "IOPersonalityPublisher" = "com.apple.driver.usb.AppleEmbeddedUSBXHCIPCI"
  | |   "IOMatchedAtBoot" = Yes
  | |   "IOPowerManagement" = {"ChildrenPowerState"=3,"DevicePowerState"=2,"CurrentPowerState"=3,"CapabilityFlags"=32768,"MaxPowerState"=3,"DriverPowerState"=0}
  | |   "IOProviderClass" = "IOPCIDevice"
  | |   "kUSBWakePowerSupply" = 3100
  | |   "IOProbeScore" = 10000
  | |   "IOUserClientClass" = "AppleASMedia3142USBXHCIUserClient"
  | |   "locationID" = 134217728
  | |   "UsbRTD3Supported" = Yes
  | |   "kUSBWakePortCurrentLimit" = 2100
  | |   "IONameMatch" = "usb-xhci,ASM3142"
  | |   "CFBundleIdentifierKernel" = "com.apple.driver.usb.AppleEmbeddedUSBXHCIPCI"
  | |   "kUSBSleepPowerSupply" = 3100
  | |   "IOMatchCategory" = "IODefaultMatchCategory"
  | |   "CFBundleIdentifier" = "com.apple.driver.usb.AppleEmbeddedUSBXHCIPCI"
  | |   "Revision" = <0103>
  | |   "IONameMatched" = "usb-xhci,ASM3142"
  | |   "UsbHostControllerUSB4LPMPolicy" = 1
  | |   "UsbHostControllerTierLimit" = 6
  | |   "UsbBusCurrentPoolID" = 4294969709
  | |   "controller-statistics" = {"kControllerStatIOCount"=12,"kControllerStatPowerStateTime"={"kPowerStateOff"="0ms (0%)","kPowerStateSleep"="0ms (0%)","kPowerStateOn"="108$
  | |   "kUSBSleepSupported" = Yes
  | | }
  | | 
  | +-o DMON-QUAD@08400000  <class IOUSBHostDevice, id 0x100000a0e, registered, matched, active, busy 0 (48 ms), retain 23>
  |     {
  |       "sessionID" = 153820147
  |       "USBSpeed" = 1
  |       "idProduct" = 24576
  |       "iManufacturer" = 1
  |       "bDeviceClass" = 0
  |       "IOPowerManagement" = {"PowerOverrideOn"=Yes,"DevicePowerState"=2,"CurrentPowerState"=2,"CapabilityFlags"=32768,"MaxPowerState"=2,"DriverPowerState"=0}
  |       "bcdDevice" = 1536
  |       "bMaxPacketSize0" = 8
  |       "iProduct" = 2
  |       "iSerialNumber" = 3
  |       "bNumConfigurations" = 1
  |       "UsbDeviceSignature" = <5f21006000064d51443038383935000000ffffff>
  |       "USB Product Name" = "DMON-QUAD"
  |       "locationID" = 138412032
  |       "bDeviceSubClass" = 0
  |       "bcdUSB" = 512
  |       "kUSBSerialNumberString" = "0"
  |       "USB Address" = 1
  |       "IOCFPlugInTypes" = {"9dc7b780-9ec0-11d4-a54f-000a27052861"="IOUSBHostFamily.kext/Contents/PlugIns/IOUSBLib.bundle"}
  |       "kUSBCurrentConfiguration" = 1
  |       "bDeviceProtocol" = 0
  |       "USBPortType" = 0
  |       "IOServiceDEXTEntitlements" = (("com.apple.developer.driverkit.transport.usb"))
  |       "USB Vendor Name" = "DECIMATOR DESIGN"
  |       "Device Speed" = 1
  |       "idVendor" = 8543
  |       "kUSBProductString" = "DMON-QUAD"
  |       "USB Serial Number" = "0"
  |       "IOGeneralInterest" = "IOCommand is not serializable"
  |       "kUSBAddress" = 1
  |       "kUSBVendorString" = "DECIMATOR DESIGN"
  |     }
  |     
  +-o AppleUSBXHCITR@07000000  <class AppleUSBXHCITR, id 0x100000bfd, registered, matched, active, busy 0 (0 ms), retain 41>
  |   {
  |     "IOClass" = "AppleUSBXHCITR"
  |     "UsbHostControllerSoftRetryPolicy" = 0
  |     "kUSBSleepPortCurrentLimit" = 3000
  |     "IOPersonalityPublisher" = "com.apple.driver.usb.AppleUSBXHCIPCI"
  |     "UsbHostControllerInterruptRMBS" = 40000
  |     "IOMatchedAtBoot" = Yes
  |     "IOPowerManagement" = {"ChildrenPowerState"=2,"DevicePowerState"=0,"CurrentPowerState"=2,"CapabilityFlags"=65536,"MaxPowerState"=3,"DriverPowerState"=0}
  |     "IOProviderClass" = "IOPCIDevice"
  |     "IOProbeScore" = 5000
  |     "locationID" = 117440512
  |     "kUSBWakePortCurrentLimit" = 3000
  |     "IOPCIUseDeviceMapper" = Yes
  |     "CFBundleIdentifierKernel" = "com.apple.driver.usb.AppleUSBXHCIPCI"
  |     "IOPCIPrimaryMatch" = "0x15e98086 0x15ec8086 0x15f08086 0x0b278086"
  |     "IOMatchCategory" = "IODefaultMatchCategory"
  |     "CFBundleIdentifier" = "com.apple.driver.usb.AppleUSBXHCIPCI"
  |     "UsbHostControllerPortWakeSourcesPolicy" = 1
  |     "Revision" = <0103>
  |     "UsbHostControllerUSB4LPMPolicy" = 1
  |     "IOPCITunnelCompatible" = Yes
  |     "controller-statistics" = {"kControllerStatIOCount"=0,"kControllerStatPowerStateTime"={"kPowerStateOff"="0ms (0%)","kPowerStateSleep"="0ms (0%)","kPowerStateOn"="305m$
  |     "kUSBSleepSupported" = Yes
  |   }
  |   
  +-o AppleUSBXHCIFL1100@04000000  <class AppleUSBXHCIFL1100, id 0x100001885, registered, matched, active, busy 0 (130 ms), retain 67>
  | | {
  | |   "IOClass" = "AppleUSBXHCIFL1100"
  | |   "CFBundleIdentifier" = "com.apple.driver.usb.AppleUSBXHCIPCI"
  | |   "IOProviderClass" = "IOPCIDevice"
  | |   "kUSBSleepSupported" = Yes
  | |   "UsbHostControllerSoftRetryPolicy" = 0
  | |   "IOPCITunnelCompatible" = Yes
  | |   "UsbHostControllerUSB4LPMPolicy" = 1
  | |   "IOProbeScore" = 1000
  | |   "IOMatchedAtBoot" = Yes
  | |   "IOPCIPauseCompatible" = Yes
  | |   "IOMatchCategory" = "IODefaultMatchCategory"
  | |   "locationID" = 67108864
  | |   "IOPowerManagement" = {"ChildrenPowerState"=3,"DevicePowerState"=0,"CurrentPowerState"=3,"CapabilityFlags"=32768,"MaxPowerState"=3,"DriverPowerState"=0}
  | |   "Revision" = <0003>
  | |   "controller-statistics" = {"kControllerStatIOCount"=988,"kControllerStatPowerStateTime"={"kPowerStateOff"="0ms (0%)","kPowerStateSleep"="0ms (0%)","kPowerStateOn"="19$
  | |   "IOPersonalityPublisher" = "com.apple.driver.usb.AppleUSBXHCIPCI"
  | |   "IOPCIPrimaryMatch" = "0x11001b73"
  | |   "CFBundleIdentifierKernel" = "com.apple.driver.usb.AppleUSBXHCIPCI"
  | |   "IOPCIUseDeviceMapper" = Yes
  | | }
  | | 
  | +-o Card Reader @04800000  <class IOUSBHostDevice, id 0x1000018c5, registered, matched, active, busy 0 (121 ms), retain 26>
  |     {
  |       "sessionID" = 256422674892
  |       "USBSpeed" = 4
  |       "idProduct" = 1863
  |       "iManufacturer" = 3
  |       "bDeviceClass" = 0
  |       "IOPowerManagement" = {"PowerOverrideOn"=Yes,"CapabilityFlags"=32768,"MaxPowerState"=2,"DevicePowerState"=2,"DriverPowerState"=0,"ChildrenPowerState"=2,"CurrentPowe$
  |       "bcdDevice" = 4152
  |       "bMaxPacketSize0" = 9
  |       "iProduct" = 4
  |       "iSerialNumber" = 5
  |       "bNumConfigurations" = 1
  |       "kUSBContainerID" = "174091a5-8f5b-3a3a-aa2e-55ce6aa3090b"
  |       "UsbDeviceSignature" = <882147073810303030303030303030303130000000080650>
  |       "locationID" = 75497472
  |       "bDeviceSubClass" = 0
  |       "bcdUSB" = 784
  |       "kUSBSerialNumberString" = "000000000010"
  |       "USB Product Name" = "Card Reader "
  |       "IOCFPlugInTypes" = {"9dc7b780-9ec0-11d4-a54f-000a27052861"="IOUSBHostFamily.kext/Contents/PlugIns/IOUSBLib.bundle"}
  |       "USB Address" = 1
  |       "bDeviceProtocol" = 0
  |       "USBPortType" = 0
  |       "IOServiceDEXTEntitlements" = (("com.apple.developer.driverkit.transport.usb"))
  |       "kUSBCurrentConfiguration" = 1
  |       "USB Vendor Name" = "CalDigit"
  |       "Device Speed" = 3
  |       "idVendor" = 8584
  |       "kUSBProductString" = "Card Reader "
  |       "USB Serial Number" = "000000000010"
  |       "IOGeneralInterest" = "IOCommand is not serializable"
  |       "kUSBAddress" = 1
  |       "kUSBVendorString" = "CalDigit"
  |     }
  |     
  +-o AppleASMediaUSBXHCI@05000000  <class AppleASMediaUSBXHCI, id 0x100001887, registered, matched, active, busy 0 (7 ms), retain 41>
  |   {
  |     "IOClass" = "AppleASMediaUSBXHCI"
  |     "UsbHostControllerSoftRetryPolicy" = 0
  |     "IOPersonalityPublisher" = "com.apple.driver.usb.AppleUSBXHCIPCI"
  |     "IOMatchedAtBoot" = Yes
  |     "IOPowerManagement" = {"ChildrenPowerState"=2,"DevicePowerState"=0,"CurrentPowerState"=2,"CapabilityFlags"=65536,"MaxPowerState"=3,"DriverPowerState"=0}
  |     "IOProviderClass" = "IOPCIDevice"
  |     "IOProbeScore" = 1000
  |     "locationID" = 83886080
  |     "IOPCIPauseCompatible" = Yes
  |     "IOPCIUseDeviceMapper" = Yes
  |     "CFBundleIdentifierKernel" = "com.apple.driver.usb.AppleUSBXHCIPCI"
  |     "IOPCIPrimaryMatch" = "0x00001b21&0x0000ffff"
  |     "IOMatchCategory" = "IODefaultMatchCategory"
  |     "CFBundleIdentifier" = "com.apple.driver.usb.AppleUSBXHCIPCI"
  |     "Revision" = <0103>
  |     "UsbHostControllerUSB4LPMPolicy" = 1
  |     "IOPCITunnelCompatible" = Yes
  |     "controller-statistics" = {"kControllerStatIOCount"=0,"kControllerStatPowerStateTime"={"kPowerStateOff"="0ms (0%)","kPowerStateSleep"="0ms (0%)","kPowerStateOn"="411m$
  |     "kUSBSleepSupported" = Yes
  |     "IOPCIClassMatch" = "0x0c033000"
  |   }
  |   
  +-o AppleUSBXHCIFL1100@06000000  <class AppleUSBXHCIFL1100, id 0x10000188f, registered, matched, active, busy 0 (163 ms), retain 84>
    | {
    |   "IOClass" = "AppleUSBXHCIFL1100"
    |   "CFBundleIdentifier" = "com.apple.driver.usb.AppleUSBXHCIPCI"
    |   "IOProviderClass" = "IOPCIDevice"
    |   "kUSBSleepSupported" = Yes
    |   "UsbHostControllerSoftRetryPolicy" = 0
    |   "IOPCITunnelCompatible" = Yes
    |   "UsbHostControllerUSB4LPMPolicy" = 1
    |   "IOProbeScore" = 1000
    |   "IOMatchedAtBoot" = Yes
    |   "IOPCIPauseCompatible" = Yes
    |   "IOMatchCategory" = "IODefaultMatchCategory"
    |   "locationID" = 100663296
    |   "IOPowerManagement" = {"ChildrenPowerState"=3,"DevicePowerState"=0,"CurrentPowerState"=3,"CapabilityFlags"=32768,"MaxPowerState"=3,"DriverPowerState"=0}
    |   "Revision" = <0003>
    |   "controller-statistics" = {"kControllerStatIOCount"=785,"kControllerStatPowerStateTime"={"kPowerStateOff"="0ms (0%)","kPowerStateSleep"="0ms (0%)","kPowerStateOn"="19$
    |   "IOPersonalityPublisher" = "com.apple.driver.usb.AppleUSBXHCIPCI"
    |   "IOPCIPrimaryMatch" = "0x11001b73"
    |   "CFBundleIdentifierKernel" = "com.apple.driver.usb.AppleUSBXHCIPCI"
    |   "IOPCIUseDeviceMapper" = Yes
    | }
    | 
    +-o  SanDisk 3.2Gen1@06500000  <class IOUSBHostDevice, id 0x1000018c3, registered, matched, active, busy 0 (132 ms), retain 26>
    |   {
    |     "sessionID" = 256422634171
    |     "USBSpeed" = 4
    |     "idProduct" = 21889
    |     "iManufacturer" = 1
    |     "bDeviceClass" = 0
    |     "IOPowerManagement" = {"PowerOverrideOn"=Yes,"CapabilityFlags"=32768,"MaxPowerState"=2,"DevicePowerState"=2,"DriverPowerState"=0,"ChildrenPowerState"=2,"CurrentPowe$
    |     "bcdDevice" = 256
    |     "bMaxPacketSize0" = 9
    |     "iProduct" = 2
    |     "iSerialNumber" = 3
    |     "bNumConfigurations" = 1
    |     "UsbDeviceSignature" = <81078155000130353031396435393637373462326562316437323662383962626634376362643934633966326539663964303333316333326531313633336461383363626334$
    |     "USB Product Name" = " SanDisk 3.2Gen1"
    |     "locationID" = 105906176
    |     "bDeviceSubClass" = 0
    |     "bcdUSB" = 800
    |     "kUSBSerialNumberString" = "0"
    |     "USB Address" = 1
    |     "IOCFPlugInTypes" = {"9dc7b780-9ec0-11d4-a54f-000a27052861"="IOUSBHostFamily.kext/Contents/PlugIns/IOUSBLib.bundle"}
    |     "kUSBCurrentConfiguration" = 1
    |     "bDeviceProtocol" = 0
    |     "USBPortType" = 0
    |     "IOServiceDEXTEntitlements" = (("com.apple.developer.driverkit.transport.usb"))
    |     "USB Vendor Name" = " USB"
    |     "Device Speed" = 3
    |     "idVendor" = 1921
    |     "kUSBProductString" = " SanDisk 3.2Gen1"
    |     "USB Serial Number" = "0"
    |     "IOGeneralInterest" = "IOCommand is not serializable"
    |     "kUSBAddress" = 1
    |     "kUSBVendorString" = " USB"
    |   }
    |   
    +-o CalDigit Thunderbolt 3 Audio@06200000  <class IOUSBHostDevice, id 0x1000018f2, registered, matched, active, busy 0 (24 ms), retain 35>
        {
          "sessionID" = 256431808646
          "USBSpeed" = 1
          "idProduct" = 25907
          "iManufacturer" = 1
          "bDeviceClass" = 0
          "IOPowerManagement" = {"PowerOverrideOn"=Yes,"DevicePowerState"=2,"CurrentPowerState"=2,"CapabilityFlags"=32768,"MaxPowerState"=2,"DriverPowerState"=0}
          "bcdDevice" = 257
          "bMaxPacketSize0" = 16
          "iProduct" = 2
          "iSerialNumber" = 0
          "bNumConfigurations" = 1
          "UsbDeviceSignature" = <882133650101000000010100010200030000>
          "USB Product Name" = "CalDigit Thunderbolt 3 Audio"
          "locationID" = 102760448
          "bDeviceSubClass" = 0
          "bcdUSB" = 512
          "USB Address" = 2
          "kUSBCurrentConfiguration" = 1
          "IOCFPlugInTypes" = {"9dc7b780-9ec0-11d4-a54f-000a27052861"="IOUSBHostFamily.kext/Contents/PlugIns/IOUSBLib.bundle"}
          "bDeviceProtocol" = 0
          "USBPortType" = 0
          "IOServiceDEXTEntitlements" = (("com.apple.developer.driverkit.transport.usb"))
          "USB Vendor Name" = "CalDigit, Inc."
          "Device Speed" = 1
          "idVendor" = 8584
          "kUSBProductString" = "CalDigit Thunderbolt 3 Audio"
          "IOGeneralInterest" = "IOCommand is not serializable"
          "kUSBAddress" = 2
          "kUSBVendorString" = "CalDigit, Inc."
        }
Image

JonnyTech avatar Oct 03 '25 20:10 JonnyTech

Try this (assuming you dropped the app into the Applications folder):

  • Open a Terminal window
  • Run /Applications/USBNotifier.app/Contents/MacOS/USBNotifier inside the Terminal
  • Open the Menu Bar menu.

It should either print one of two things:

  • "No USB devices found" -> IOKit really tells it no USB devices are available, and thus it can't enumerate any of them
  • "Error: something" -> Somehow access to IOKit is blocked.

The code for that section is very close to this Apple Developer Example by the way, so it's weird that it doesn't work.

ohaiibuzzle avatar Oct 05 '25 17:10 ohaiibuzzle

It should either print one of two things:

It shows a third thing...:

  • Nothing at all
Image

I have tried a few computers now, all running macos sonoma 14.8.1, same result.

JonnyTech avatar Oct 06 '25 22:10 JonnyTech

Hmm... gonna check with a Sonoma machine, I found it odd that it doesn't work... It works fine for my computers, but they are always up to date, so...

Btw, nothing means it went down this codepath and return nil:

Image

aka. it sees a device, just doesn't know what the hell to do with it.

ohaiibuzzle avatar Oct 08 '25 03:10 ohaiibuzzle

Thank you, unfortunately anything newer than Sonoma breaks our system so we are stuck on that for now.

Can you add some debug logging to that function?

JonnyTech avatar Oct 08 '25 07:10 JonnyTech

@JonnyTech Try using this version and see what it says on terminal

USBNotifier 2025-10-09 03-20-55.zip

My plan to debug with Sonoma fails because apparently the virtual Apple Hypervisor USB bus is useless and can't be used for anything, and my laptop is too new to run Sonoma

ohaiibuzzle avatar Oct 08 '25 20:10 ohaiibuzzle

% /tmp/USBNotifier\ 2025-10-09\ 03-20-55/USBNotifier.app/Contents/MacOS/USBNotifier

It still yields no output in the terminal window, should I look for anything in any of the system logs?

JonnyTech avatar Oct 09 '25 12:10 JonnyTech

... that's really really odd, I probably needs to see how I can get Sonoma to test. Afaik it works on Sequoia, so not sure which API changed in-between... ugh.

ohaiibuzzle avatar Oct 14 '25 04:10 ohaiibuzzle