Logitech G502 X Support

I have a Logitech G502 X. Not Plus. Not Lightspeed. Just a USB wired G502 X.

I want to ditch G Hub but BTT says β€œNo Supported Mouse Recognized”. Even the latest alpha version 6.075.

:sob:

Is there anything you can do for me?

The G502 X works fine, I have one myself.
Have you completely uninstalled GHUB? Also BTT sometimes gets added to System Settings => Privacy & Security => Input Monitoring - if it is in there, remove it. (Accessibility Permissions are enough and having it in both places causes issues)

If that doesn't help, try to get the Logs:

Made sure GHub was uninstalled. Restarted. Reinstalled BTT. Restarted again. Made sure Accessibility Permissions were set but Input Monitoring wasn't. Tried mouse in USB hub and directly connected to Mac. Restarted again. Still no joy.

I am probably missing something stupidly obvious but there do appear to be errors in the log so...

LOGI LOG: ========================================

LOGI LOG: BTT Logitech Debug Information
LOGI LOG: Timestamp: 2026-01-20 20:34:45
LOGI LOG: macOS: Version 26.2 (Build 25C56)
LOGI LOG: ========================================
LOGI LOG:
LOGI LOG: Step 1: Stopping Logitech Manager...
LOGI LOG: BTTLogitechManager: Stopping...
LOGI LOG: BTTLogitechManager: Setting ONBOARD mode on 1 device(s) before shutdown...
LOGI LOG: BTTLogitechManager: :white_check_mark: ONBOARD mode set on 0 device(s), skipped 1 (shutdown complete)
LOGI LOG: BTTHIDPPProtocol: :cross_mark: Unregistered protocol 0xc1041ebc0 for deviceIndex 1 (remaining protocols for this device: 0)
LOGI LOG: BTTHIDPPProtocol: Last protocol for this device - will unregister callback
LOGI LOG: BTTHIDPPProtocol: Skipping all IOKit cleanup (shared device for receiver slot 1)
LOGI LOG: BTTHIDPPProtocol: Skipping all IOKit cleanup (shared device for receiver slot 1)
LOGI LOG: BTTLogitechManager: Stopped
LOGI LOG: Step 2: Restarting Logitech Manager...
LOGI LOG: BTTLogitechManager: Starting device discovery...
LOGI LOG: BTTLogitechManager: Started successfully
LOGI LOG: Step 3: Calling initializeLogitechMice...
LOGI LOG: BTTLogitechManager: Already running
LOGI LOG:

LOGI LOG: BTTLogitechManager: Scanning for Logitech Devices
LOGI LOG: ==============================================

LOGI LOG: No Logitech HID++ devices found.

LOGI LOG:
:light_bulb: Make sure your device is:
LOGI LOG: β€’ Connected via USB, Bluetooth, or Unifying Receiver
LOGI LOG: β€’ Powered on
LOGI LOG: β€’ Using HID++ 2.0 protocol (most recent Logitech mice/keyboards)
LOGI LOG: Step 4: Waiting 5 seconds for device initialization...
LOGI LOG: BTTLogitechManager: Found HID interface - G502 X - Interface: 1, Usage Page: 0x0001, Usage: 0x0006
LOGI LOG: BTTLogitechManager: :white_check_mark: Accepted - Known wired device, interface 1 (HID++ over keyboard interface)
LOGI LOG: BTTLogitechManager: Device connected - G502 X (046d:c099)
LOGI LOG: BTTHIDPPDevice: Using database deviceIndex 0x01 for 046d:c099
LOGI LOG: BTTHIDPPDevice: Initializing with deviceIndex=1, IOHIDDevice retain count=3
LOGI LOG: BTTHIDPPDevice: Receiver slot 1 - using receiver IDs: 046d:c099
LOGI LOG: Known device: Logitech G502 X Wireless (046d:c099) with quirk: 0, type: 0, deviceIndex: 1, transport: USB
LOGI LOG: BTTHIDPPProtocol: Starting protocol (deviceIndex: 1, isSharedDevice: 1)...
LOGI LOG: BTTHIDPPProtocol: :white_check_mark: Registered protocol 0xc0e8f3f00 for deviceIndex 1 (total protocols for this device: 1)
LOGI LOG: BTTHIDPPProtocol: Shared device - skipping open/schedule (already done by receiver setup)
LOGI LOG: BTTHIDPPProtocol: First protocol for this receiver - registering shared input callback
LOGI LOG: BTTHIDPPProtocol: Supports short reports: YES, long reports: YES
LOGI LOG: BTTLogitechManager: Starting feature discovery for Logitech G502 X Wireless...
LOGI LOG: BTTHIDPPFeatureCache: :cross_mark: No cached features for 046d:c099:slot1
LOGI LOG: BTTHIDPPDevice: :magnifying_glass_tilted_left: No cached features for Logitech G502 X Wireless, performing full discovery...
LOGI LOG: BTTHIDPPProtocol: Detecting protocol version (deviceIndex: 1)...
LOGI LOG: BTTLogitechManager: Device already tracked, ignoring duplicate interface
LOGI LOG: BTTHIDPPProtocol: :magnifying_glass_tilted_left: INCOMING MESSAGE: deviceIdx=0x01, sub_id(featureIdx)=0xFF, address=0x00
LOGI LOG: BTTHIDPPProtocol: :magnifying_glass_tilted_left: Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: :white_check_mark: Matched to pending request (feat=0x00, func=0x01)
LOGI LOG: BTTHIDPPProtocol: :warning: 0xFF response contains possible error code 0x0A in parameters[1]
LOGI LOG: Treating this as an ERROR response instead of valid data
LOGI LOG: BTTHIDPPProtocol: :cross_mark: Protocol version detection failed: HID++ error: 0x0A (detected in 0xFF response format)
LOGI LOG: BTTLogitechManager: :cross_mark: Feature discovery failed for Logitech G502 X Wireless: HID++ error: 0x0A (detected in 0xFF response format)
LOGI LOG: Error domain: com.folivora.BTTHIDPPErrorDomain, code: 10
LOGI LOG: BTTLogitechManager: Already running
LOGI LOG:

LOGI LOG: BTTLogitechManager: Scanning for Logitech Devices
LOGI LOG: ==============================================

LOGI LOG: No Logitech HID++ devices found.
LOGI LOG:
:light_bulb: Make sure your device is:
LOGI LOG: β€’ Connected via USB, Bluetooth, or Unifying Receiver
LOGI LOG: β€’ Powered on
LOGI LOG: β€’ Using HID++ 2.0 protocol (most recent Logitech mice/keyboards)
LOGI LOG:
LOGI LOG: ========================================
LOGI LOG: Connected Devices Summary:
LOGI LOG: ========================================
LOGI LOG: - Logitech G502 X Wireless (VID:0x046d PID:0xc099) Ready:NO Type:Mouse
LOGI LOG:
LOGI LOG: ========================================
LOGI LOG: G604 Scroll Slot Debug:
LOGI LOG: ========================================
LOGI LOG: No G604 devices found
LOGI LOG: ========================================
LOGI LOG: End of Debug Information
LOGI LOG: ========================================

Ah interesting your mouse has a slightly different identifier than mine and that one is not yet in BTT's database. Let me add it, v6.079 will include it in about 10min.

Mouse thoroughly detected! Thank you!

1 Like

I might have celebrated a bit too soon. It was recognized and I had set up a couple of basic things and then I went to sleep. Now that I have had a chance to try configuring it I find that the left and right buttons, scrolling forward and back, the scroll wheel as middle button and buttons 3 and 4 are recognized and configurable but none of the other buttons. I have checked the "Make All Buttons Available For Remapping in BTT" option.

Maybe there's more than just the identifier that is different.

Can you post the log again now that the mouse is detected? (It should contain more stuff now)

Done...


LOGI LOG: ========================================
LOGI LOG: BTT Logitech Debug Information
LOGI LOG: Timestamp: 2026-01-21 20:43:14
LOGI LOG: macOS: Version 26.2 (Build 25C56)
LOGI LOG: ========================================
LOGI LOG: 
LOGI LOG: Step 1: Stopping Logitech Manager...
LOGI LOG: BTTLogitechManager: Stopping...
LOGI LOG: BTTLogitechManager: Setting ONBOARD mode on 1 device(s) before shutdown...
LOGI LOG: BTTLogitechManager: ⚠️ Timeout waiting for ONBOARD mode to be set on all devices
LOGI LOG: BTTLogitechManager: Stopped
LOGI LOG: Step 2: Restarting Logitech Manager...
LOGI LOG: BTTLogitechManager: Starting device discovery...
LOGI LOG: BTTLogitechManager: Started successfully
LOGI LOG: Step 3: Calling initializeLogitechMice...
LOGI LOG: BTTLogitechManager: Already running
LOGI LOG: 
==============================================
LOGI LOG: BTTLogitechManager: Scanning for Logitech Devices
LOGI LOG: ==============================================

LOGI LOG: No Logitech HID++ devices found.
LOGI LOG: 
πŸ’‘ Make sure your device is:
LOGI LOG:    β€’ Connected via USB, Bluetooth, or Unifying Receiver
LOGI LOG:    β€’ Powered on
LOGI LOG:    β€’ Using HID++ 2.0 protocol (most recent Logitech mice/keyboards)
LOGI LOG: Step 4: Waiting 5 seconds for device initialization...
LOGI LOG: BTTLogitechManager: Found HID interface - G502 X - Interface: 0, Usage Page: 0x0001, Usage: 0x0002
LOGI LOG: BTTLogitechManager: Skipping interface (Usage Page: 0x0001, Usage: 0x0002, Interface: 0)
LOGI LOG: BTTLogitechManager: Found HID interface - G502 X - Interface: 1, Usage Page: 0x0001, Usage: 0x0006
LOGI LOG: BTTLogitechManager: βœ… Accepted - Known wired device, interface 1 (HID++ over keyboard interface)
LOGI LOG: BTTLogitechManager: Device connected - G502 X (046d:c099)
LOGI LOG: BTTHIDPPDevice: Auto-detected deviceIndex 0xFF for 046d:c099 (USB Wired)
LOGI LOG: BTTHIDPPDevice: Initializing with deviceIndex=255, IOHIDDevice retain count=3
LOGI LOG: Known device: Logitech G502 X Lightspeed (046d:c099) with quirk: 0, type: 0, deviceIndex: 255, transport: USB
LOGI LOG: BTTHIDPPProtocol: Starting protocol (deviceIndex: 255, isSharedDevice: 0)...
LOGI LOG: BTTHIDPPProtocol: βœ… Registered protocol 0xbd4d59960 for deviceIndex 255 (total protocols for this device: 1)
LOGI LOG: BTTHIDPPProtocol: Non-shared device - registering dedicated input callback
LOGI LOG: BTTHIDPPProtocol: βœ… Device opened successfully
LOGI LOG: BTTHIDPPProtocol: Supports short reports: YES, long reports: YES
LOGI LOG: BTTLogitechManager: Starting feature discovery for Logitech G502 X Lightspeed...
LOGI LOG: BTTHIDPPFeatureCache: βœ… Found cached features for 046d:c099 (cached 2026-01-20 10:03:02 +0000)
LOGI LOG: BTTHIDPPDevice: ⚑ Using cached features for Logitech G502 X Lightspeed (22 features)
LOGI LOG: BTTHIDPPDevice: ⚑ Restoring cached device name: G502 X
LOGI LOG: BTTHIDPPProtocol: Pre-populated feature cache with 22 features
LOGI LOG: BTTHIDPPDevice: Cached protocol: 4.2
LOGI LOG: Onboard Profiles supported
LOGI LOG: DPI Manager supported
LOGI LOG: Report Rate Manager supported
LOGI LOG: BTTHIDPPMouseButtonSpy: βœ… Feature 0x8110 cached at index 0x15
LOGI LOG: BTTHIDPPProtocol: βœ… Registered event handler for feature 0x8110 (protocol 0xbd4d59960, deviceIndex 255)
LOGI LOG:    Total event handlers registered: 1
LOGI LOG: Mouse Button Spy supported
LOGI LOG: Checking scroll wheel features...
LOGI LOG:   SmartShift (0x2110): ❌ NO
LOGI LOG:   SmartShift Enhanced (0x2111): ❌ NO
LOGI LOG:   HiRes Wheel (0x2121): βœ… YES
LOGI LOG:   Thumbwheel (0x2150): ❌ NO
LOGI LOG:   Wheel Analytics (0x2250): ❌ NO
LOGI LOG:   Wheel Mode Status (0x2251): ❌ NO
LOGI LOG: Scroll Wheel Manager initialized
LOGI LOG: BTTHIDPPDevice: Device type confirmed as MOUSE (has mouse-specific features)
LOGI LOG: Applying default device configuration...
LOGI LOG: Un-diverting main scroll wheel for native HID scrolling...
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x11, address=0x18
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x11, func=0x01)
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x11, address=0x28
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x11, func=0x02)
LOGI LOG: BTTHIDPPScrollWheelManager: βœ… HiRes divert set successfully
LOGI LOG: βœ… Main scroll wheel configured for native HID scrolling
LOGI LOG: πŸ” Attempting to query device name via HID++ feature 0x0005...
LOGI LOG: βœ… Device supports feature 0x0005, querying name length...
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x03, address=0x08
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x03, func=0x00)
LOGI LOG: Device name length: 6 bytes
LOGI LOG: Reading device name chunk at offset 0/6...
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x03, address=0x18
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x03, func=0x01)
LOGI LOG: Read 6 bytes: "G502 X"
LOGI LOG: πŸ“ Device name assembled: "G502 X" (6 bytes)
LOGI LOG: βœ… Device name from HID++: G502 X
LOGI LOG: BTTHIDPPFeatureCache: πŸ“ Updated device name for 046d:c099 to: G502 X
LOGI LOG: BTTLogitechManager: πŸ“ Device name updated to: G502 X
LOGI LOG: BTTLogitechManager: βœ… Device ready - G502 X (Protocol 4.2)
LOGI LOG: BTTLogitechManager: πŸ” Checking for pending setup requests for 'G502 X'...
LOGI LOG: BTTLogitechManager: βœ… Device ready - G502 X (Protocol 4.2)
LOGI LOG: BTTLogitechManager: Auto-setting ONBOARD mode for G502 X (profile-capable device)
LOGI LOG: BTTLogitechManager: πŸ” Checking for pending setup requests for 'G502 X'...
LOGI LOG: BTTHIDPPFeatureCache: Saved 1 device profiles to disk
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x14, address=0x18
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x14, func=0x01)
LOGI LOG: BTTLogitechManager: βœ… ONBOARD mode set for G502 X - onboard profiles now active
LOGI LOG: BTTLogitechManager: βœ… Set macOS pointer settings for 'G502 X' (IOHIDDevice: 0x046D:0xC099): speed=0.80, accel=8.00
LOGI LOG: BTTLogitechManager: Quick setup for 'G502 X'...
LOGI LOG: BTTLogitechManager: πŸ”’ Started quick setup for 'G502 X' (guard key: G502 X)
LOGI LOG: BTTLogitechManager: βœ… Device 'G502 X' is ready (slot 255), proceeding with quick setup
LOGI LOG: BTTLogitechManager: Remapping buttons to standard mouse buttons for 'G502 X' (remapScrollTilt=0)...
LOGI LOG: BTTLogitechManager: ⚠️ Device lacks 0x1b04 - falling back to onboard profile writes
LOGI LOG: BTTLogitechManager:    WARNING: This writes to flash and may cause issues
LOGI LOG: BTTLogitechManager: Setting ONBOARD mode before profile operations...
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x14, address=0x18
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x14, func=0x01)
LOGI LOG: BTTLogitechManager: βœ… ONBOARD mode set, proceeding with profile write...
LOGI LOG: BTTLogitechManager: Updating button mappings in ALL profile slots (preserving other settings, remapScrollTilt=0)...
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x14, address=0x08
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x14, func=0x00)
LOGI LOG: BTTLogitechManager: Profile descriptor - profileCount: 5, buttonCount: 11, sectorSize: 255, profileFormat: 0x04
LOGI LOG: BTTLogitechManager: Profile format: G402 variant (0x04)
LOGI LOG: BTTLogitechManager: Reading and updating 5 profiles with identity button mappings...
LOGI LOG: BTTLogitechManager: Reading existing profile 1/5...
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x14, address=0x58
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x14, func=0x05)
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x14, address=0x58
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x14, func=0x05)
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x14, address=0x58
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x14, func=0x05)
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x14, address=0x58
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x14, func=0x05)
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x14, address=0x58
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x14, func=0x05)
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x14, address=0x58
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x14, func=0x05)
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x14, address=0x58
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x14, func=0x05)
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x14, address=0x58
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x14, func=0x05)
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x14, address=0x58
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x14, func=0x05)
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x14, address=0x58
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x14, func=0x05)
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x14, address=0x58
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x14, func=0x05)
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x14, address=0x58
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x14, func=0x05)
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x14, address=0x58
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x14, func=0x05)
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x14, address=0x58
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x14, func=0x05)
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x14, address=0x58
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x14, func=0x05)
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x14, address=0x58
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x14, func=0x05)
LOGI LOG: BTTHIDPPOnboardProfiles: 255-byte sector boundary fix: reading at offset 239 instead of 240 (skip 1 bytes)
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x14, address=0x58
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x14, func=0x05)
LOGI LOG: BTTLogitechManager: βœ… Read existing profile 0: ''
LOGI LOG: BTTLogitechManager: G604 using scroll slots 13 (down) and 14 (up)
LOGI LOG: BTTLogitechManager: Reading existing profile 2/5...
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x14, address=0x58
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x14, func=0x05)
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x14, address=0x58
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x14, func=0x05)
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x14, address=0x58
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x14, func=0x05)
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x14, address=0x58
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x14, func=0x05)
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x14, address=0x58
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x14, func=0x05)
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x14, address=0x58
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x14, func=0x05)
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x14, address=0x58
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x14, func=0x05)
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x14, address=0x58
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x14, func=0x05)
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x14, address=0x58
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x14, func=0x05)
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x14, address=0x58
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x14, func=0x05)
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x14, address=0x58
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x14, func=0x05)
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x14, address=0x58
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x14, func=0x05)
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x14, address=0x58
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x14, func=0x05)
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x14, address=0x58
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x14, func=0x05)
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x14, address=0x58
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x14, func=0x05)
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x14, address=0x58
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x14, func=0x05)
LOGI LOG: BTTHIDPPOnboardProfiles: 255-byte sector boundary fix: reading at offset 239 instead of 240 (skip 1 bytes)
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x14, address=0x58
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x14, func=0x05)
LOGI LOG: BTTLogitechManager: βœ… Read existing profile 1: ''
LOGI LOG: BTTLogitechManager: G604 using scroll slots 13 (down) and 14 (up)
LOGI LOG: BTTLogitechManager: Reading existing profile 3/5...
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x14, address=0x58
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x14, func=0x05)
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x14, address=0x58
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x14, func=0x05)
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x14, address=0x58
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x14, func=0x05)
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x14, address=0x58
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x14, func=0x05)
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x14, address=0x58
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x14, func=0x05)
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x14, address=0x58
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x14, func=0x05)
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x14, address=0x58
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x14, func=0x05)
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x14, address=0x58
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x14, func=0x05)
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x14, address=0x58
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x14, func=0x05)
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x14, address=0x58
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x14, func=0x05)
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x14, address=0x58
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x14, func=0x05)
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x14, address=0x58
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x14, func=0x05)
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x14, address=0x58
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x14, func=0x05)
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x14, address=0x58
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x14, func=0x05)
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x14, address=0x58
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x14, func=0x05)
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x14, address=0x58
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x14, func=0x05)
LOGI LOG: BTTHIDPPOnboardProfiles: 255-byte sector boundary fix: reading at offset 239 instead of 240 (skip 1 bytes)
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x14, address=0x58
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x14, func=0x05)
LOGI LOG: BTTLogitechManager: βœ… Read existing profile 2: ''
LOGI LOG: BTTLogitechManager: G604 using scroll slots 13 (down) and 14 (up)
LOGI LOG: BTTLogitechManager: Reading existing profile 4/5...
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x14, address=0x58
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x14, func=0x05)
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x14, address=0x58
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x14, func=0x05)
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x14, address=0x58
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x14, func=0x05)
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x14, address=0x58
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x14, func=0x05)
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x14, address=0x58
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x14, func=0x05)
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x14, address=0x58
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x14, func=0x05)
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x14, address=0x58
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x14, func=0x05)
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x14, address=0x58
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x14, func=0x05)
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x14, address=0x58
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x14, func=0x05)
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x14, address=0x58
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x14, func=0x05)
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x14, address=0x58
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x14, func=0x05)
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x14, address=0x58
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x14, func=0x05)
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x14, address=0x58
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x14, func=0x05)
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x14, address=0x58
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x14, func=0x05)
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x14, address=0x58
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x14, func=0x05)
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x14, address=0x58
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x14, func=0x05)
LOGI LOG: BTTHIDPPOnboardProfiles: 255-byte sector boundary fix: reading at offset 239 instead of 240 (skip 1 bytes)
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x14, address=0x58
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x14, func=0x05)
LOGI LOG: BTTLogitechManager: βœ… Read existing profile 3: ''
LOGI LOG: BTTLogitechManager: G604 using scroll slots 13 (down) and 14 (up)
LOGI LOG: BTTLogitechManager: Reading existing profile 5/5...
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x14, address=0x58
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x14, func=0x05)
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x14, address=0x58
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x14, func=0x05)
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x14, address=0x58
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x14, func=0x05)
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x14, address=0x58
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x14, func=0x05)
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x14, address=0x58
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x14, func=0x05)
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x14, address=0x58
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x14, func=0x05)
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x14, address=0x58
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x14, func=0x05)
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x14, address=0x58
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x14, func=0x05)
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x14, address=0x58
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x14, func=0x05)
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x14, address=0x58
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x14, func=0x05)
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x14, address=0x58
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x14, func=0x05)
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x14, address=0x58
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x14, func=0x05)
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x14, address=0x58
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x14, func=0x05)
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x14, address=0x58
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x14, func=0x05)
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x14, address=0x58
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x14, func=0x05)
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x14, address=0x58
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x14, func=0x05)
LOGI LOG: BTTHIDPPOnboardProfiles: 255-byte sector boundary fix: reading at offset 239 instead of 240 (skip 1 bytes)
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x14, address=0x58
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x14, func=0x05)
LOGI LOG: BTTLogitechManager: βœ… Read existing profile 4: ''
LOGI LOG: BTTLogitechManager: G604 using scroll slots 13 (down) and 14 (up)
LOGI LOG: BTTLogitechManager: Writing 5 modified profiles to flash...
LOGI LOG: BTTLogitechManager: Writing profile 1/5...
LOGI LOG: BTTHIDPPOnboardProfiles: Truncating profile from 256 to 255 bytes for device sector size
LOGI LOG: BTTHIDPPOnboardProfiles: Writing 255-byte sector with CRC 0x51C8
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x14, address=0x68
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x14, func=0x06)
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x14, address=0x68
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: πŸ“’ Message did NOT match any pending request - treating as EVENT
LOGI LOG: BTTHIDPPProtocol: πŸ“¨ Handling event for feature index 0x14
LOGI LOG: BTTHIDPPProtocol: πŸ” Feature index 0x14 β†’ Feature ID 0x8100
LOGI LOG: BTTHIDPPProtocol: ⚠️  No event handler registered for feature 0x8100
LOGI LOG:    Registered event handlers: (
    33040
)
LOGI LOG: BTTHIDPPProtocol: ⏱️  Request timeout after 2.0 seconds
LOGI LOG:    Feature Index: 0x14, Function ID: 0x01, Device Index: 255
LOGI LOG:    Pending requests before timeout: 1
LOGI LOG:    Device may not support this feature or function.
LOGI LOG: BTTLogitechManager: ⚠️ Failed to set ONBOARD mode for G502 X on shutdown: Request timeout
LOGI LOG: BTTLogitechManager: Already running
LOGI LOG: 
==============================================
LOGI LOG: BTTLogitechManager: Scanning for Logitech Devices
LOGI LOG: ==============================================

LOGI LOG: Found 1 Logitech device(s):

LOGI LOG: ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
LOGI LOG: Device 1: G502 X
LOGI LOG: ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
LOGI LOG: πŸ“‹ Basic Information:
LOGI LOG:    Vendor ID:     0x046d (Logitech)
LOGI LOG:    Product ID:    0xc099
LOGI LOG:    Database:      βœ… Known device
LOGI LOG:    Quirks:        None
LOGI LOG:    Device Index:  255 (0xFF)
LOGI LOG: 
πŸ”Œ Protocol Information:
LOGI LOG:    HID++ Version: 4.2
LOGI LOG:    Status:        βœ… Ready
LOGI LOG: 
✨ Supported Features:
LOGI LOG:    DPI Control:         βœ… YES
LOGI LOG:    Button Diversion:    ❌ NO
LOGI LOG:    LED Control:         ❌ NO
LOGI LOG:    Onboard Profiles:    βœ… YES
LOGI LOG:    Report Rate:         βœ… YES
LOGI LOG:    Battery Monitoring:  ❌ NO
LOGI LOG: 
LOGI LOG: ==============================================
LOGI LOG: Scan complete. Found 1 device(s).
LOGI LOG: ==============================================

LOGI LOG: BTTLogitechManager: βœ… Set macOS pointer settings for 'G502 X' (IOHIDDevice: 0x046D:0xC099): speed=0.80, accel=8.00
LOGI LOG: BTTLogitechManager: Quick setup for 'G502 X'...
LOGI LOG: BTTLogitechManager: ⏭️ Quick setup already in progress for 'G502 X' (guard key: G502 X), skipping duplicate call
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x12, address=0x08
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 3 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x12, func=0x00)
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x13, address=0x18
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 2 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x13, func=0x01)
LOGI LOG: 
⚑ Report Rate:
LOGI LOG:    Current:      1000 Hz
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x12, address=0x18
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 2 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x12, func=0x01)
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x12, address=0x28
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 2 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x12, func=0x02)
LOGI LOG: 
🎯 DPI Information:
LOGI LOG:    Sensor 0:
LOGI LOG:       Current DPI:  1600
LOGI LOG:       Range:        100 - 25600 (step: 50)
LOGI LOG: BTTHIDPPProtocol: ⏱️  Request timeout after 2.0 seconds
LOGI LOG:    Feature Index: 0x14, Function ID: 0x07, Device Index: 255
LOGI LOG:    Pending requests before timeout: 1
LOGI LOG:    Device may not support this feature or function.
LOGI LOG: BTTLogitechManager: ❌ Failed to write profile 0: Request timeout
LOGI LOG: BTTLogitechManager: ❌ Failed to write profile: Request timeout
LOGI LOG: BTTLogitechManager: ⚠️  Failed to remap buttons: Request timeout
LOGI LOG: BTTLogitechManager: Setting DPI for 'G502 X' to 2009...
LOGI LOG: BTTLogitechManager: First-time DPI setup - enumerating sensors...
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x12, address=0x08
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x12, func=0x00)
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x12, address=0x18
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x12, func=0x01)
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x12, address=0x28
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x12, func=0x02)
LOGI LOG: BTTLogitechManager: ⚠️  Requested DPI 2009 adjusted to 2000 (valid range: 100-25600, step: 50)
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0xFF, address=0x12
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x12, func=0x03)
LOGI LOG: BTTHIDPPProtocol: ⚠️  0xFF response contains possible error code 0x02 in parameters[1]
LOGI LOG:    Treating this as an ERROR response instead of valid data
LOGI LOG: BTTLogitechManager: ❌ Failed to set DPI: HID++ error: 0x02 (detected in 0xFF response format)
LOGI LOG: BTTLogitechManager: ⚠️  DPI setup failed: HID++ error: 0x02 (detected in 0xFF response format)
LOGI LOG: BTTLogitechManager: Setting report rate for 'G502 X' to 500 Hz...
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0x13, address=0x08
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x13, func=0x00)
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0xFF, sub_id(featureIdx)=0xFF, address=0x13
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x13, func=0x02)
LOGI LOG: BTTHIDPPProtocol: ⚠️  0xFF response contains possible error code 0x02 in parameters[1]
LOGI LOG:    Treating this as an ERROR response instead of valid data
LOGI LOG: BTTLogitechManager: ❌ Failed to set report rate: HID++ error: 0x02 (detected in 0xFF response format)
LOGI LOG: BTTLogitechManager: ⚠️  Report rate setup failed: HID++ error: 0x02 (detected in 0xFF response format)
LOGI LOG: BTTLogitechManager: πŸ”“ Quick setup guard cleared for 'G502 X' (guard key: G502 X)
LOGI LOG: BTTLogitechManager: βœ… Quick setup complete for 'G502 X'
LOGI LOG: 
LOGI LOG: ========================================
LOGI LOG: Connected Devices Summary:
LOGI LOG: ========================================
LOGI LOG:   - G502 X (VID:0x046d PID:0xc099) Ready:YES Type:Mouse
LOGI LOG: 
LOGI LOG: ========================================
LOGI LOG: G604 Scroll Slot Debug:
LOGI LOG: ========================================
LOGI LOG:   No G604 devices found
LOGI LOG: ========================================
LOGI LOG: End of Debug Information
LOGI LOG: ========================================
1 Like

I might have accidentally fixed it. It looks like there were remnants of another mouse controller app's system extension left behind from a previous experiment. I have been trying to replace G Hub for a while now, since long before the recent certificate expiry saga. Steermouse failed to detect all my buttons a while back and it looks like uninstalling it might not have gone all that smoothly. Cleaning up system junk showed something from Plentycom systems and after I got rid of it all my buttons became detectable by BTT.

Thank you for your patience and assistance. I might just skip the rest of the trial period and go straight to the buying of the licence.

Interesting! However your logs have also shown me some issues (that might have been caused by interference with other apps and caused unexpected responses, but these should not break it anyways). It would be great if you could check whether v 6.087 (uploading) still works for you, otherwise I'll undo the changes.

Well that was good while it lasted. I got 10 glorious minutes of everything working exactly as I wanted and then it stopped. It has gone back to only detecting buttons 1-5. And that all happened before I tried 6.087. Updating to 6.087 and then to 6.093 hasn't helped.

Very strange, could you once more post the logs now that you have uninstalled the extensions?

An error occurred: Body is limited to 99000 characters; you entered 120363. I will try uploading it as txt file.

log.txt (121.5 KB)

The logs don't look bad but I think I might need to grab this wired version and test locally.

You could try to do a factory reset, maybe there is still stuff on the mouse that was written by ghub: