Support for Logitech MX Master Mice

Thanks again, Andreas. NOW, stop working on a Sunday evening. You deserve a beer!

[Mouse Logitech G604] In 6.063 – scrolling works perfectly in both direction, except inversion :fire:

nice! thanks for all your testing. You mean it is inversed now still? Then I now just need to switch the codes, then it should work perfectly :+1:

1 Like

After several resets on 6.063, scrolling down is now broken – now scrolling up is triggered as Scroll Down, and scrolling down as Button 13 :slight_smile:

And button Try Next Scroll Down Slot not working, but Up Slot is ok

Regarding the inversion β€” yes, just swap them so the behavior being native like

dang that's weird, can you try this terminal command while BTT is quit and then try again? (without using the Try Next Scroll Slot" buttons)

defaults write com.hegenberg.BetterTouchTool BTTLogitechG604ScrollSlotOffset 1

With this command, everything works perfectly – both scrolling and inversion :slight_smile:

1 Like

Ah great! 6.064 should then fix this by default!

1 Like

Where can I find that MX Master preset? I am about to install BTT for an MX Master 4 and would love to hit the ground running.

There is one available in the docs:

While this still works, there are serveral things that can be done a bit simpler in the latest alpha versions - I'll update the preset soon. (Latest tomorrow)

6.064 – everything works :fire:

Absolute legend, ty! :slight_smile:

1 Like

With 6.066 it is a bit easier to keep an overview over various action / trigger categories configured for one mouse button. For example if you have different drag left/right/top/bottom actions configured they will now all display at once:

3 Likes

The MX Ergo and M720 mouse should now also work fine with 6.075 (I tested with the MX Ergo S)
Also the MX Mechanical keyboard should work fine now.

In general the Logitech Keyboard config does not require to repurpose all of the special keys anymore - you can select which ones you want to make available to BTT:

I've confirmed that version 6.075 also works with the MX ERGO, the predecessor to the MX ERGO S. Previously, BTT didn't recognize the right tilt of the middle button as a button action, but that issue has been resolved.

Thank you for the improvements! I'm also very impressed by how much the UI has improved compared to a week ago; it's so much easier to use now.

2 Likes

Hello, thanks for the great tool.

I have a Logitech MX Vertical (Logitech MX Vertical Ergonomic Wireless Mouse).

I see it through the Logitech Mouse Configuration, but I do not see the Β« Custom Β» section in the trigger Β« Custom Β» in the Β« mouse buttons & scroll actions Β».

All buttons of my mouse are recognised in the Β« Record Custom Button / Scroll β†’ Click to register a button Β» except the one that sits on top of the mouse (see picture).

Do I need to provide something to help?

@seldo, which version of BTT are you currently running (there have been a lot of improvements in the recent alphas)? Could you post the logs?

I was on version (2026010801) before your message, then I updated to (2026012004) after your message, but the issue is still present.

Here are the Logitech logs:

LOGI LOG: ========================================
LOGI LOG: BTT Logitech Debug Information
LOGI LOG: Timestamp: 2026-01-20 15:30:35
LOGI LOG: macOS: Version 26.3 (assemblage 25D5101c)
LOGI LOG: ========================================
LOGI LOG: 
LOGI LOG: Step 1: Stopping Logitech Manager...
LOGI LOG: BTTLogitechManager: Stopping...
LOGI LOG: BTTLogitechManager: Setting ONBOARD mode on 6 device(s) before shutdown...
LOGI LOG: BTTLogitechManager: βœ… ONBOARD mode set on 0 device(s), skipped 6 (shutdown complete)
LOGI LOG: BTTHIDPPProtocol: ❌ Unregistered protocol 0xc84576ca0 for deviceIndex 1 (remaining protocols for this device: 5)
LOGI LOG: BTTHIDPPProtocol: Skipping all IOKit cleanup (shared device for receiver slot 1)
LOGI LOG: BTTHIDPPProtocol: ❌ Unregistered protocol 0xc84576ca0 for deviceIndex 1 (remaining protocols for this device: 5)
LOGI LOG: BTTHIDPPProtocol: Skipping all IOKit cleanup (shared device for receiver slot 1)
LOGI LOG: BTTHIDPPProtocol: ❌ Unregistered protocol 0xc84577bf0 for deviceIndex 2 (remaining protocols for this device: 4)
LOGI LOG: BTTHIDPPProtocol: Skipping all IOKit cleanup (shared device for receiver slot 2)
LOGI LOG: BTTHIDPPProtocol: ❌ Unregistered protocol 0xc84577bf0 for deviceIndex 2 (remaining protocols for this device: 4)
LOGI LOG: BTTHIDPPProtocol: Skipping all IOKit cleanup (shared device for receiver slot 2)
LOGI LOG: BTTHIDPPProtocol: ❌ Unregistered protocol 0xc863ba840 for deviceIndex 3 (remaining protocols for this device: 3)
LOGI LOG: BTTHIDPPProtocol: Skipping all IOKit cleanup (shared device for receiver slot 3)
LOGI LOG: BTTHIDPPProtocol: ❌ Unregistered protocol 0xc863ba840 for deviceIndex 3 (remaining protocols for this device: 3)
LOGI LOG: BTTHIDPPProtocol: Skipping all IOKit cleanup (shared device for receiver slot 3)
LOGI LOG: BTTHIDPPProtocol: ❌ Unregistered protocol 0xc862f7db0 for deviceIndex 4 (remaining protocols for this device: 2)
LOGI LOG: BTTHIDPPProtocol: Skipping all IOKit cleanup (shared device for receiver slot 4)
LOGI LOG: BTTHIDPPProtocol: ❌ Unregistered protocol 0xc862f7db0 for deviceIndex 4 (remaining protocols for this device: 2)
LOGI LOG: BTTHIDPPProtocol: Skipping all IOKit cleanup (shared device for receiver slot 4)
LOGI LOG: BTTHIDPPProtocol: ❌ Unregistered protocol 0xc862f4a10 for deviceIndex 5 (remaining protocols for this device: 1)
LOGI LOG: BTTHIDPPProtocol: Skipping all IOKit cleanup (shared device for receiver slot 5)
LOGI LOG: BTTHIDPPProtocol: ❌ Unregistered protocol 0xc862f4a10 for deviceIndex 5 (remaining protocols for this device: 1)
LOGI LOG: BTTHIDPPProtocol: Skipping all IOKit cleanup (shared device for receiver slot 5)
LOGI LOG: BTTHIDPPProtocol: ❌ Unregistered protocol 0xc862f4540 for deviceIndex 6 (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 6)
LOGI LOG: BTTHIDPPProtocol: Skipping all IOKit cleanup (shared device for receiver slot 6)
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 - USB Receiver - Interface: 1, Usage Page: 0x0001, Usage: 0x0002
LOGI LOG: BTTLogitechManager: Skipping interface (Usage Page: 0x0001, Usage: 0x0002, Interface: 1)
LOGI LOG: BTTLogitechManager: Found HID interface - USB Receiver - Interface: 2, Usage Page: 0xFF00, Usage: 0x0001
LOGI LOG: BTTLogitechManager: βœ… Accepted - Vendor-specific HID++ interface (Interface 2)
LOGI LOG: BTTLogitechManager: Device connected - USB Receiver (046d:c52b)
LOGI LOG: BTTLogitechManager: πŸ”Œ Receiver detected - setting up for slot enumeration...
LOGI LOG: BTTLogitechManager: Setting up receiver input callbacks...
LOGI LOG: BTTLogitechManager: βœ“ Receiver callbacks registered and device opened
LOGI LOG: BTTLogitechManager: Enabling receiver notifications (flags: 0x000900)...
LOGI LOG: BTTLogitechManager: Sent HID++ 1.0 command: 10 FF 80 00 00 09 00
LOGI LOG: BTTLogitechManager: Found HID interface - USB Receiver - Interface: 0, Usage Page: 0x0001, Usage: 0x0006
LOGI LOG: BTTLogitechManager: Skipping interface (Usage Page: 0x0001, Usage: 0x0006, Interface: 0)
LOGI LOG: BTTLogitechManager: Enumerating receiver slots (simplified approach)...
LOGI LOG: BTTLogitechManager: Starting sequential slot enumeration (slots 1-6)...
LOGI LOG: BTTLogitechManager: Checking receiver slot 1...
LOGI LOG: BTTLogitechManager: Creating device for receiver slot 1...
LOGI LOG: BTTLogitechManager: Receiver retain count for slot 1: 3
LOGI LOG: BTTHIDPPDevice: Initializing with deviceIndex=1, IOHIDDevice retain count=3
LOGI LOG: BTTHIDPPDevice: Receiver slot 1 - using receiver IDs: 046d:c52b
LOGI LOG: Unknown device: USB Receiver (Slot) (046d:c52b) - using feature discovery, deviceIndex: 1, transport: USB
LOGI LOG: BTTHIDPPProtocol: Starting protocol (deviceIndex: 1, isSharedDevice: 1)...
LOGI LOG: BTTHIDPPProtocol: βœ… Registered protocol 0xc87243d40 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: Created device for slot 1, discovering features...
LOGI LOG: BTTHIDPPFeatureCache: βœ… Found cached features for 046d:c52b:slot1 (cached 2026-01-20 11:34:36 +0000)
LOGI LOG: BTTHIDPPDevice: ⚑ Using cached features for USB Receiver (Slot) (34 features)
LOGI LOG: BTTHIDPPProtocol: Pre-populated feature cache with 34 features
LOGI LOG: BTTHIDPPDevice: Cached protocol: 4.5
LOGI LOG: BTTHIDPPProtocol: βœ… Registered event handler for feature 0x1B04 (protocol 0xc87243d40, deviceIndex 1)
LOGI LOG:    Total event handlers registered: 1
LOGI LOG: Button Manager supported
LOGI LOG: DPI Manager supported
LOGI LOG: Battery Monitor supported (Legacy 0x1000)
LOGI LOG: Checking scroll wheel features...
LOGI LOG:   SmartShift (0x2110): ❌ NO
LOGI LOG:   SmartShift Enhanced (0x2111): ❌ NO
LOGI LOG:   HiRes Wheel (0x2121): ❌ NO
LOGI LOG:   Thumbwheel (0x2150): ❌ NO
LOGI LOG:   Wheel Analytics (0x2250): βœ… YES
LOGI LOG:   Wheel Mode Status (0x2251): ❌ NO
LOGI LOG: No scroll wheel features supported
LOGI LOG: BTTHIDPPDevice: Device type confirmed as MOUSE (has mouse-specific features)
LOGI LOG: Applying default device configuration...
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=0x01, 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: 36 bytes
LOGI LOG: Reading device name chunk at offset 0/36...
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0x01, 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 16 bytes: "MX Vertical Adva"
LOGI LOG: Reading device name chunk at offset 16/36...
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0x01, 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 16 bytes: "nced Ergonomic M"
LOGI LOG: Reading device name chunk at offset 32/36...
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0x01, 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 4 bytes: "ouse"
LOGI LOG: πŸ“ Device name assembled: "MX Vertical Advanced Ergonomic Mouse" (36 bytes)
LOGI LOG: βœ… Device name from HID++: MX Vertical Advanced Ergonomic Mouse
LOGI LOG: BTTLogitechManager: πŸ“ Device name updated to: MX Vertical Advanced Ergonomic Mouse
LOGI LOG: BTTLogitechManager: βœ… Device ready - MX Vertical Advanced Ergonomic Mouse (Protocol 4.5)
LOGI LOG: BTTLogitechManager: πŸ” Checking for pending setup requests for 'MX Vertical Advanced Ergonomic Mouse'...
LOGI LOG: BTTLogitechManager: βœ… Device ready in slot 1 - MX Vertical Advanced Ergonomic Mouse (Protocol 4.5)
LOGI LOG: BTTLogitechManager: πŸ” Checking for pending setup requests for 'MX Vertical Advanced Ergonomic Mouse'...
LOGI LOG: BTTLogitechManager: ⚠️  Device 'USB Receiver (Slot)' not found for pointer settings
LOGI LOG: BTTLogitechManager: Quick setup for 'USB Receiver (Slot)'...
LOGI LOG: BTTLogitechManager: ⏳ Device 'USB Receiver (Slot)' not found yet, queuing setup request for when device becomes ready
LOGI LOG: BTTLogitechManager: πŸ”„ Replacing 1 existing pending request(s) for device 'USB Receiver (Slot)' with updated settings
LOGI LOG: BTTLogitechManager: πŸ“₯ Queued device setup request for 'USB Receiver (Slot)' (total pending: 1)
LOGI LOG: BTTLogitechManager: Checking receiver slot 2...
LOGI LOG: BTTHIDPPProtocol: ❌ No protocol instance found for device index 255 (0xFF), reportID=0x10
LOGI LOG: BTTHIDPPProtocol: Registry has 1 protocols for this device: (
    1
)
LOGI LOG:    - Device index 1 β†’ protocol 0xc87243d40
LOGI LOG: BTTLogitechManager: Creating device for receiver slot 2...
LOGI LOG: BTTLogitechManager: Receiver retain count for slot 2: 5
LOGI LOG: BTTHIDPPDevice: Initializing with deviceIndex=2, IOHIDDevice retain count=5
LOGI LOG: BTTHIDPPDevice: Receiver slot 2 - using receiver IDs: 046d:c52b
LOGI LOG: Unknown device: USB Receiver (Slot) (046d:c52b) - using feature discovery, deviceIndex: 2, transport: USB
LOGI LOG: BTTHIDPPProtocol: Starting protocol (deviceIndex: 2, isSharedDevice: 1)...
LOGI LOG: BTTHIDPPProtocol: βœ… Registered protocol 0xc87240930 for deviceIndex 2 (total protocols for this device: 2)
LOGI LOG: BTTHIDPPProtocol: Shared device - skipping open/schedule (already done by receiver setup)
LOGI LOG: BTTHIDPPProtocol: Input callback already registered by another slot - reusing it
LOGI LOG: BTTHIDPPProtocol: Supports short reports: YES, long reports: YES
LOGI LOG: BTTLogitechManager: Created device for slot 2, discovering features...
LOGI LOG: BTTHIDPPFeatureCache: ❌ No cached features for 046d:c52b:slot2
LOGI LOG: BTTHIDPPDevice: πŸ” No cached features for USB Receiver (Slot), performing full discovery...
LOGI LOG: BTTHIDPPProtocol: Detecting protocol version (deviceIndex: 2)...
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0x02, sub_id(featureIdx)=0x8F, address=0x00
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: ❌ Protocol version detection failed: HID++ error: 0x09
LOGI LOG: BTTLogitechManager: ❌ Feature discovery failed for slot 2: HID++ error: 0x09
LOGI LOG: BTTLogitechManager: Checking receiver slot 3...
LOGI LOG: BTTHIDPPProtocol: ❌ No protocol instance found for device index 255 (0xFF), reportID=0x11
LOGI LOG: BTTHIDPPProtocol: Registry has 2 protocols for this device: (
    1,
    2
)
LOGI LOG:    - Device index 1 β†’ protocol 0xc87243d40
LOGI LOG:    - Device index 2 β†’ protocol 0xc87240930
LOGI LOG: BTTLogitechManager: Creating device for receiver slot 3...
LOGI LOG: BTTLogitechManager: Receiver retain count for slot 3: 7
LOGI LOG: BTTHIDPPDevice: Initializing with deviceIndex=3, IOHIDDevice retain count=7
LOGI LOG: BTTHIDPPDevice: Receiver slot 3 - using receiver IDs: 046d:c52b
LOGI LOG: Unknown device: USB Receiver (Slot) (046d:c52b) - using feature discovery, deviceIndex: 3, transport: USB
LOGI LOG: BTTHIDPPProtocol: Starting protocol (deviceIndex: 3, isSharedDevice: 1)...
LOGI LOG: BTTHIDPPProtocol: βœ… Registered protocol 0xc872409a0 for deviceIndex 3 (total protocols for this device: 3)
LOGI LOG: BTTHIDPPProtocol: Shared device - skipping open/schedule (already done by receiver setup)
LOGI LOG: BTTHIDPPProtocol: Input callback already registered by another slot - reusing it
LOGI LOG: BTTHIDPPProtocol: Supports short reports: YES, long reports: YES
LOGI LOG: BTTLogitechManager: Created device for slot 3, discovering features...
LOGI LOG: BTTHIDPPFeatureCache: ❌ No cached features for 046d:c52b:slot3
LOGI LOG: BTTHIDPPDevice: πŸ” No cached features for USB Receiver (Slot), performing full discovery...
LOGI LOG: BTTHIDPPProtocol: Detecting protocol version (deviceIndex: 3)...
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0x03, sub_id(featureIdx)=0x8F, address=0x00
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: ❌ Protocol version detection failed: HID++ error: 0x09
LOGI LOG: BTTLogitechManager: ❌ Feature discovery failed for slot 3: HID++ error: 0x09
LOGI LOG: BTTLogitechManager: Checking receiver slot 4...
LOGI LOG: BTTHIDPPProtocol: ❌ No protocol instance found for device index 255 (0xFF), reportID=0x11
LOGI LOG: BTTHIDPPProtocol: Registry has 3 protocols for this device: (
    3,
    1,
    2
)
LOGI LOG:    - Device index 3 β†’ protocol 0xc872409a0
LOGI LOG:    - Device index 1 β†’ protocol 0xc87243d40
LOGI LOG:    - Device index 2 β†’ protocol 0xc87240930
LOGI LOG: BTTLogitechManager: Creating device for receiver slot 4...
LOGI LOG: BTTLogitechManager: Receiver retain count for slot 4: 9
LOGI LOG: BTTHIDPPDevice: Initializing with deviceIndex=4, IOHIDDevice retain count=9
LOGI LOG: BTTHIDPPDevice: Receiver slot 4 - using receiver IDs: 046d:c52b
LOGI LOG: Unknown device: USB Receiver (Slot) (046d:c52b) - using feature discovery, deviceIndex: 4, transport: USB
LOGI LOG: BTTHIDPPProtocol: Starting protocol (deviceIndex: 4, isSharedDevice: 1)...
LOGI LOG: BTTHIDPPProtocol: βœ… Registered protocol 0xc87242ca0 for deviceIndex 4 (total protocols for this device: 4)
LOGI LOG: BTTHIDPPProtocol: Shared device - skipping open/schedule (already done by receiver setup)
LOGI LOG: BTTHIDPPProtocol: Input callback already registered by another slot - reusing it
LOGI LOG: BTTHIDPPProtocol: Supports short reports: YES, long reports: YES
LOGI LOG: BTTLogitechManager: Created device for slot 4, discovering features...
LOGI LOG: BTTHIDPPFeatureCache: ❌ No cached features for 046d:c52b:slot4
LOGI LOG: BTTHIDPPDevice: πŸ” No cached features for USB Receiver (Slot), performing full discovery...
LOGI LOG: BTTHIDPPProtocol: Detecting protocol version (deviceIndex: 4)...
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0x04, sub_id(featureIdx)=0x8F, address=0x00
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: ❌ Protocol version detection failed: HID++ error: 0x09
LOGI LOG: BTTLogitechManager: ❌ Feature discovery failed for slot 4: HID++ error: 0x09
LOGI LOG: BTTLogitechManager: Checking receiver slot 5...
LOGI LOG: BTTHIDPPProtocol: ❌ No protocol instance found for device index 255 (0xFF), reportID=0x10
LOGI LOG: BTTHIDPPProtocol: Registry has 4 protocols for this device: (
    3,
    2,
    1,
    4
)
LOGI LOG:    - Device index 3 β†’ protocol 0xc872409a0
LOGI LOG:    - Device index 2 β†’ protocol 0xc87240930
LOGI LOG:    - Device index 1 β†’ protocol 0xc87243d40
LOGI LOG:    - Device index 4 β†’ protocol 0xc87242ca0
LOGI LOG: BTTLogitechManager: Creating device for receiver slot 5...
LOGI LOG: BTTLogitechManager: Receiver retain count for slot 5: 11
LOGI LOG: BTTHIDPPDevice: Initializing with deviceIndex=5, IOHIDDevice retain count=11
LOGI LOG: BTTHIDPPDevice: Receiver slot 5 - using receiver IDs: 046d:c52b
LOGI LOG: Unknown device: USB Receiver (Slot) (046d:c52b) - using feature discovery, deviceIndex: 5, transport: USB
LOGI LOG: BTTHIDPPProtocol: Starting protocol (deviceIndex: 5, isSharedDevice: 1)...
LOGI LOG: BTTHIDPPProtocol: βœ… Registered protocol 0xc87243560 for deviceIndex 5 (total protocols for this device: 5)
LOGI LOG: BTTHIDPPProtocol: Shared device - skipping open/schedule (already done by receiver setup)
LOGI LOG: BTTHIDPPProtocol: Input callback already registered by another slot - reusing it
LOGI LOG: BTTHIDPPProtocol: Supports short reports: YES, long reports: YES
LOGI LOG: BTTLogitechManager: Created device for slot 5, discovering features...
LOGI LOG: BTTHIDPPFeatureCache: ❌ No cached features for 046d:c52b:slot5
LOGI LOG: BTTHIDPPDevice: πŸ” No cached features for USB Receiver (Slot), performing full discovery...
LOGI LOG: BTTHIDPPProtocol: Detecting protocol version (deviceIndex: 5)...
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0x05, sub_id(featureIdx)=0x8F, address=0x00
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: ❌ Protocol version detection failed: HID++ error: 0x09
LOGI LOG: BTTLogitechManager: ❌ Feature discovery failed for slot 5: HID++ error: 0x09
LOGI LOG: BTTLogitechManager: Checking receiver slot 6...
LOGI LOG: BTTHIDPPProtocol: ❌ No protocol instance found for device index 255 (0xFF), reportID=0x10
LOGI LOG: BTTHIDPPProtocol: Registry has 5 protocols for this device: (
    3,
    2,
    5,
    1,
    4
)
LOGI LOG:    - Device index 3 β†’ protocol 0xc872409a0
LOGI LOG:    - Device index 2 β†’ protocol 0xc87240930
LOGI LOG:    - Device index 5 β†’ protocol 0xc87243560
LOGI LOG:    - Device index 1 β†’ protocol 0xc87243d40
LOGI LOG:    - Device index 4 β†’ protocol 0xc87242ca0
LOGI LOG: BTTLogitechManager: Creating device for receiver slot 6...
LOGI LOG: BTTLogitechManager: Receiver retain count for slot 6: 13
LOGI LOG: BTTHIDPPDevice: Initializing with deviceIndex=6, IOHIDDevice retain count=13
LOGI LOG: BTTHIDPPDevice: Receiver slot 6 - using receiver IDs: 046d:c52b
LOGI LOG: Unknown device: USB Receiver (Slot) (046d:c52b) - using feature discovery, deviceIndex: 6, transport: USB
LOGI LOG: BTTHIDPPProtocol: Starting protocol (deviceIndex: 6, isSharedDevice: 1)...
LOGI LOG: BTTHIDPPProtocol: βœ… Registered protocol 0xc87241c00 for deviceIndex 6 (total protocols for this device: 6)
LOGI LOG: BTTHIDPPProtocol: Shared device - skipping open/schedule (already done by receiver setup)
LOGI LOG: BTTHIDPPProtocol: Input callback already registered by another slot - reusing it
LOGI LOG: BTTHIDPPProtocol: Supports short reports: YES, long reports: YES
LOGI LOG: BTTLogitechManager: Created device for slot 6, discovering features...
LOGI LOG: BTTHIDPPFeatureCache: ❌ No cached features for 046d:c52b:slot6
LOGI LOG: BTTHIDPPDevice: πŸ” No cached features for USB Receiver (Slot), performing full discovery...
LOGI LOG: BTTHIDPPProtocol: Detecting protocol version (deviceIndex: 6)...
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0x06, sub_id(featureIdx)=0x8F, address=0x00
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: ❌ Protocol version detection failed: HID++ error: 0x09
LOGI LOG: BTTLogitechManager: ❌ Feature discovery failed for slot 6: HID++ error: 0x09
LOGI LOG: BTTLogitechManager: βœ… Finished enumerating all receiver slots
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: MX Vertical Advanced Ergonomic Mouse
LOGI LOG: ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
LOGI LOG: πŸ“‹ Basic Information:
LOGI LOG:    Vendor ID:     0x046d (Logitech)
LOGI LOG:    Product ID:    0xc52b
LOGI LOG:    Database:      ⚠️  Unknown device (will use feature discovery)
LOGI LOG:    Device Index:  1 (0x01)
LOGI LOG: 
πŸ”Œ Protocol Information:
LOGI LOG:    HID++ Version: 4.5
LOGI LOG:    Status:        βœ… Ready
LOGI LOG: 
✨ Supported Features:
LOGI LOG:    DPI Control:         βœ… YES
LOGI LOG:    Button Diversion:    βœ… YES ⭐
LOGI LOG:    LED Control:         ❌ NO
LOGI LOG:    Onboard Profiles:    ❌ NO
LOGI LOG:    Report Rate:         ❌ NO
LOGI LOG:    Battery Monitoring:  βœ… YES
LOGI LOG: 
LOGI LOG: ==============================================
LOGI LOG: Scan complete. Found 1 device(s).
LOGI LOG: ==============================================

LOGI LOG: BTTLogitechManager: ⚠️  Device 'USB Receiver (Slot)' not found for pointer settings
LOGI LOG: BTTLogitechManager: Quick setup for 'USB Receiver (Slot)'...
LOGI LOG: BTTLogitechManager: ⏳ Device 'USB Receiver (Slot)' not found yet, queuing setup request for when device becomes ready
LOGI LOG: BTTLogitechManager: πŸ”„ Replacing 1 existing pending request(s) for device 'USB Receiver (Slot)' with updated settings
LOGI LOG: BTTLogitechManager: πŸ“₯ Queued device setup request for 'USB Receiver (Slot)' (total pending: 1)
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0x01, 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=0x01, sub_id(featureIdx)=0x0A, address=0x08
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 3 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x0A, func=0x00)
LOGI LOG: BTTHIDPPButtonManager: πŸ“Š Device reports 7 keys/buttons to enumerate
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0x01, sub_id(featureIdx)=0x08, address=0x08
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 3 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x08, func=0x00)
LOGI LOG: 
πŸ”‹ Battery:
LOGI LOG:    Level:        20%
LOGI LOG:    Status:       Discharging
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0x01, 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=0x01, sub_id(featureIdx)=0x0A, address=0x18
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 2 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x0A, func=0x01)
LOGI LOG: BTTHIDPPButtonManager: πŸ“‹ [0] Key/Button 0x0050: flags=0x11 [MouseBtn|Reprog] divertable=0 virtual=0
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0x01, 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:  1000
LOGI LOG:       Range:        400 - 4000 (step: 100)
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0x01, sub_id(featureIdx)=0x0A, address=0x28
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x0A, func=0x02)
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0x01, sub_id(featureIdx)=0x0A, address=0x18
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x0A, func=0x01)
LOGI LOG: BTTHIDPPButtonManager: πŸ“‹ [1] Key/Button 0x0051: flags=0x11 [MouseBtn|Reprog] divertable=0 virtual=0
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0x01, sub_id(featureIdx)=0x0A, address=0x28
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x0A, func=0x02)
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0x01, sub_id(featureIdx)=0x0A, address=0x18
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x0A, func=0x01)
LOGI LOG: BTTHIDPPButtonManager: πŸ“‹ [2] Key/Button 0x0052: flags=0x71 [MouseBtn|Reprog|DIVERT|Persist] divertable=1 virtual=0
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0x01, sub_id(featureIdx)=0x0A, address=0x28
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x0A, func=0x02)
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0x01, sub_id(featureIdx)=0x0A, address=0x18
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x0A, func=0x01)
LOGI LOG: BTTHIDPPButtonManager: πŸ“‹ [3] Key/Button 0x0053: flags=0x71 [MouseBtn|Reprog|DIVERT|Persist] divertable=1 virtual=0
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0x01, sub_id(featureIdx)=0x0A, address=0x28
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x0A, func=0x02)
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0x01, sub_id(featureIdx)=0x0A, address=0x18
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x0A, func=0x01)
LOGI LOG: BTTHIDPPButtonManager: πŸ“‹ [4] Key/Button 0x0056: flags=0x71 [MouseBtn|Reprog|DIVERT|Persist] divertable=1 virtual=0
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0x01, sub_id(featureIdx)=0x0A, address=0x28
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x0A, func=0x02)
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0x01, sub_id(featureIdx)=0x0A, address=0x18
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x0A, func=0x01)
LOGI LOG: BTTHIDPPButtonManager: πŸ“‹ [5] Key/Button 0x00FD: flags=0x71 [MouseBtn|Reprog|DIVERT|Persist] divertable=1 virtual=0
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0x01, sub_id(featureIdx)=0x0A, address=0x28
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x0A, func=0x02)
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0x01, sub_id(featureIdx)=0x0A, address=0x18
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x0A, func=0x01)
LOGI LOG: BTTHIDPPButtonManager: πŸ“‹ [6] Key/Button 0x00D7: flags=0xA0 [DIVERT|VIRTUAL] divertable=1 virtual=1
LOGI LOG: BTTHIDPPProtocol: πŸ” INCOMING MESSAGE: deviceIdx=0x01, sub_id(featureIdx)=0x0A, address=0x28
LOGI LOG: BTTHIDPPProtocol: πŸ” Checking 1 pending requests for match
LOGI LOG: BTTHIDPPProtocol: βœ… Matched to pending request (feat=0x0A, func=0x02)
LOGI LOG: 
πŸ–±οΈ  Buttons:
LOGI LOG:    Total:        7 buttons
LOGI LOG:    Available for diversion:
LOGI LOG:       Button at position 0 (controlId: 0x0050)
LOGI LOG:       Button at position 0 (controlId: 0x0051)
LOGI LOG:       Button at position 0 (controlId: 0x0052)
LOGI LOG:       Button at position 0 (controlId: 0x0053)
LOGI LOG:       Button at position 0 (controlId: 0x0056)
LOGI LOG:       Button at position 0 (controlId: 0x00FD)
LOGI LOG:       Button at position 0 (controlId: 0x00D7)
LOGI LOG: 
LOGI LOG: ========================================
LOGI LOG: Connected Devices Summary:
LOGI LOG: ========================================
LOGI LOG:   - MX Vertical Advanced Ergonomic Mouse (VID:0x046d PID:0xc52b) Ready:YES Type:Mouse
LOGI LOG:   - USB Receiver (Slot) (VID:0x046d PID:0xc52b) Ready:NO Type:Mouse
LOGI LOG:   - USB Receiver (Slot) (VID:0x046d PID:0xc52b) Ready:NO Type:Mouse
LOGI LOG:   - USB Receiver (Slot) (VID:0x046d PID:0xc52b) Ready:NO Type:Mouse
LOGI LOG:   - USB Receiver (Slot) (VID:0x046d PID:0xc52b) Ready:NO Type:Mouse
LOGI LOG:   - USB Receiver (Slot) (VID:0x046d PID:0xc52b) 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: ========================================

:wave: when I reconnect my mouse (changing the receiver from one computer to another), the Logitech-specific settings are not enabled, specifically the mouse wheel tilt left and right are interpreted as Scroll Left and Right, instead of buttons 6 and 7; I have to restart BTT for this to be enabled again. Is this a known issue or should I keep digging further? Clicking β€œApply All Settings Now” doesn’t help

Are you actually unplugging the receiver or are you switching to a different receiver at another computer?

@seldo it seems like BTT can not retrieve the name of that mouse initially, maybe there is something special about this for the mouse. Could you try whether 6.081 helps with this? (will be available in 10min).

Your mouse is connected through the logitech usb receiver, not via bluetooth, correct?

1 Like

Your mouse is connected through the logitech usb receiver, not via bluetooth, correct?

Right, it is currently connected via the logitech usb receiver (slot 1, the active slot)

I have it also paired with bluetooth on slot 2, but that’s not active currently.

I will try 6.081 when it is available.