Scroll fix · Mode A → Mode B · PID 0323

Magic Mouse 2024 (v3) scroll not working on Windows 11

Cursor still moves, two-finger scroll is dead: a Bluetooth idle disconnect made Windows collapse the mouse’s HID collections. The Apple-driver route puts scroll back, and that route needs no Test Mode.

Install the fix Which mouse do I have?

Cursor, clicks
still fine
Scroll: dead
not slow — nothing
15–30 min idle
then a reconnect
No self-recovery
until you re-pair

Why does Magic Mouse scroll stop working on Windows 11?

After a Bluetooth idle disconnect, DeviceSetupManager (DSM) runs a property sync against cached device state and the mouse’s HID collections collapse — Mode A → Mode B. Mode A enumerates COL01 and COL02 as independent collections; Mode B merges them into one plain-mouse collection, and the scroll consumer can no longer bind to it: cursor, buttons, no scroll.

Mode A collapsing into Mode B A Bluetooth idle disconnect triggers a DeviceSetupManager resync. Mode A, with independent COL01 scroll-and-cursor and COL02 battery collections, collapses into Mode B, a single unified collection with scroll dropped. Mode A COL01 scroll + cursor COL02 battery Idle disconnect DSM resync Mode B TLC scroll dropped
Two collections become one (TLC); scroll has nowhere unambiguous to route to.
Registry-level detail: DynamicCachedServices

The collapse is visible in HKLM\SYSTEM\CurrentControlSet\Enum\BTHENUM\...\Device Parameters\DynamicCachedServices, a 560-byte binary value (35 × 16-byte entries). In Mode A, entry 0 is COL01 and entry 1 is COL02; after the DSM-triggered rewrite in Mode B, entry 0 is the unified TLC and entry 1 is empty. The exact BTHPORT internal code path from the 35th DSM property write to the descriptor rewrite has not been reverse-engineered — the property write is the confirmed trigger, the collapse mechanism inside BTHPORT is not yet fully characterised.

Full write-up: bug analysis of the DSM and BTHPORT path and the Mode A / Mode B HID collection diagram.

Where the filter sits in the Bluetooth HID stack
  1. Application — expects a scroll event.
  2. Input Manager — turns parsed HID reports into pointer and scroll input.
  3. hidclass.sys — the HID class driver.
  4. HidBth.sys — HID-over-Bluetooth miniclass; parses the collections.
  5. applewirelessmouse.sys — Apple’s signed driver, registered here as the lower filter.
  6. BTHENUM — the Bluetooth Enumerator PDO for the paired mouse.
  7. BTHPORT — owns DynamicCachedServices; the DSM resync rewrite that merges COL01/COL02 into one TLC happens here.
  8. Hardware — the mouse’s Bluetooth HID radio and firmware.

“Just install the Apple driver” does not work. Apple’s Boot Camp INF has no 0323 entry, so nothing binds to the 2024 mouse. On v1 and v2, Apple’s installer refuses to run on non-Apple hardware, and Windows will not attach applewirelessmouse.sys until something registers it as a lower filter.

What the fix does, and what it does not

  • Restores scroll by registering Apple’s own unmodified signed driver as a lower filter on PID_030D, PID_0269, PID_0310, PID_0323. No Test Mode for this route.
  • Sensitivity is fixed — Apple’s Mac-style translation, not tunable.
  • Re-pairing breaks it — the filter is bound to the device InstanceId, so re-run Install.cmd.
  • No battery read — see battery on this driver.
  • It does not prevent the collapse — it keeps a working scroll path through it.

Procedure, rollback and signing detail: the install page.

Rule out the cheap causes

  1. 1

    Re-pair the mouse

    Remove it in Bluetooth settings, then pair again. Scroll returns, then dies after the next idle? That is this bug.

  2. 2

    Read the Hardware Ids

    Device Manager → Human Interface Devices → Apple Magic Mouse → Properties → Details → Hardware Ids.

  3. 3

    Install the fix

    The install steps.

Which mouse do I have?

Underside of Magic Mouse 2024 (v3), USB-C port
Magic Mouse 2024 (v3)
0x0323
Supported
Underside of Magic Mouse 2 (v2), Lightning port
Magic Mouse 2 (v2)
0x0269
Supported
Underside of Magic Mouse 2 (v2-alt), Lightning port
Magic Mouse 2 (v2-alt)
0x0310
Supported
Underside of Magic Mouse (v1), AA battery door
Magic Mouse (v1)
0x030D
Supported
Magic Trackpad
0x030E · 0x0265 · 0x0324
Not covered
Is this a battery or Bluetooth range problem?

No, and it is not a Windows setting you can toggle either. It is a one-way HID collection collapse triggered by a DeviceSetupManager resync. Nothing in the Windows mouse settings can re-expose a collection that no longer exists — only re-pairing, a driver reinstall, or the shipped lower filter restore it.

Still unsure which driver you need?

The Magic Tray site keeps a decision page: which Apple mouse driver do I need on Windows. Signing, Boot Camp and v1/v2 questions are answered in the driver FAQ, and the source and issue tracker are on GitHub, MIT licensed.