Linux Input/HID development
 help / color / mirror / Atom feed
From: Oleksandr Natalenko <oleksandr@natalenko.name>
To: "Erik Håkansson" <erikhakan@gmail.com>
Cc: "Jiri Kosina" <jikos@kernel.org>,
	"Benjamin Tissoires" <bentiss@kernel.org>,
	"Filipe Laíns" <lains@riseup.net>,
	"Bastien Nocera" <hadess@hadess.net>,
	"Rafael Passos" <rafael@rcpassos.me>,
	"Grégoire Stein" <greyxor@protonmail.com>,
	"Alexey Zagorodnikov" <xglooom@gmail.com>,
	"Roman Stingler" <roman.stingler@gmail.com>,
	"Lovekesh Solanki" <lovekeshsolanki00@gmail.com>,
	"Kateřina Medvědová" <k8ie@mcld.eu>,
	linux-input@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH 0/2] HID: logitech-hidpp: fix Bolt hi-res wheel handling
Date: Wed, 23 Sep 2026 08:39:34 +0200	[thread overview]
Message-ID: <8P3_vvAUQ0qq3g6Cks8PBg@natalenko.name> (raw)
In-Reply-To: <20260922-feature-bolt-fix-v1-0-63b0fa8da0d3@gmail.com>

[-- Attachment #1: Type: text/plain, Size: 4902 bytes --]

Hello.

On úterý 22. září 2026 19:40:26, středoevropský letní čas Erik Håkansson wrote:
> This series aims to fix high-resolution wheel handling for Logitech devices
> connected through Bolt receivers as well as respect user settings for
> scroll behaviour.
> 
> Patch 1 is Rafael Passos’s original implementation:
> 
> https://lore.kernel.org/linux-input/20260904034843.1340846-1-rafael@rcpassos.me/
> 
> His patch routes Bolt wheel movement through the HID++ child, where the
> device’s HiRes Wheel multiplier can be applied. Patch 2 builds on
> Rafael’s work by 1. supporting both high-resolution and low-resolution
> scroll events, and 2. preserving user-selected high-resolution and
> inversion settings.
> 
> The follow-up patch was developed with reference to the patches and
> reported behavior in Magnetar-OS’s `logitech-bolt-hidpp-dkms` repository:
> 
> https://github.com/Magnetar-OS/logitech-bolt-hidpp-dkms/tree/main/patches
> 
> So my assumption right now is that the reason for the divergent results
> people have had with the two different fix approaches (i.e. either passing
> interface 0 and 1 as DJ interfaces, or Rafael's approach), where it works
> for some, and only sometimes, etc. is that with user settings coming from
> Solaar, we may end up in weird states.
> For example, in the original patch, high-resolution events would go through
> the generic HID which would treat each tick as a full wheel event, thus 
> scaling the scroll way too far. That was solved with Rafael's patch but
> that would instead fail to handle low-resolution events if high resolution
> was turned off in Solaar while use_hidpp remained enabled, so a low-resolution
> delta would be treated as high-resolution, which would result instead in a 
> too slow scroll. Possibly, when Oleksandr switched devices, Solaar reapplied
> some saved user settings, which conflicted with the driver logic.
> 
> With this patch, user settings from Solaar (or elsewhere) for high-resolution
> mode and scroll inversion will be respected, 
> and scrolling should work both in high-resolution and low-resolution mode.
> However, if user-space turns off the use_hidpp setting while high_resolution
> remains on, this will route high-resolution scroll events to generic HID.
> Thus, when high_resolution is on for a Bolt device, the driver will
> force use_hidpp to be on during initialisation or reinitialisation, because
> otherwise the scaling issue will return.
> Solaar may still, after driver initialisation, reapply a saved use_hidpp
> setting of off while high_resolution remains on, or the user may change it
> to off, which will cause the issue even with this patch.
> 
> In theory, it should be possible to look at incoming setWheelMode responses
> or notifications and, just like on initialisation, enforce use_hidpp as long
> as high_resolution is set on a Bolt device. However, I don't know how Solaar
> will behave then. There's a risk it will trigger a back-and-forth if Solaar
> reapplies its saved setting after the kernel corrects it. Also, even if that
> doesn't happen, we should respect user choice even for use_hidpp. Perhaps
> the Solaar team can be informed about the problem so they can add a warning
> text.
> 
> Note that I don't have a Bolt mouse to test this with, and my theory is 
> mostly inferred, so I would appreciate very much if people with various
> Bolt mice could test it out. Also great if you try different settings in 
> Solaar, but note that use_hidpp must be on if high_resolution is on, so 
> either set it to on in Solaar, or to ignore.
> 
> Link: https://lore.kernel.org/linux-input/20260712003051.338194-2-erikhakan@gmail.com/
> Link: https://lore.kernel.org/linux-input/20260901-bolt-scroll-fix-v1-1-58bca7ae487f@protonmail.com/
> Link: https://lore.kernel.org/linux-input/LYMlyJcyQt29e1KlLnEoLw@natalenko.name/
> Link: https://lore.kernel.org/linux-input/20260920094508.39682-1-roman.stingler@gmail.com/
> Signed-off-by: Erik Håkansson <erikhakan@gmail.com>
> ---
> Erik Håkansson (1):
>       HID: logitech-hidpp: fix Bolt wheel mode handling
> 
> Rafael Passos (1):
>       HID: logitech-hidpp: fix hi-res scroll for Bolt-connected MX Master
> 
>  drivers/hid/hid-logitech-hidpp.c | 147 ++++++++++++++++++++++++++++++++-------
>  1 file changed, 123 insertions(+), 24 deletions(-)
> ---
> base-commit: 022eb347ff3a48281e7e69c3addcb11bf24afa53
> change-id: 20260921-feature-bolt-fix-5f1f642496df
> 
> Best regards,

Not sure if I'm testing this right, but with v7.3-rc4 and these two patches scrolling works OK as long as I keep "Scroll Wheel Resolution" in Solaar off. Unlike with unpatched kernel, scrolling doesn't go crazy if I switch between devices. But if I switch "Scroll Wheel Resolution" on, scrolling jumps crazy again.

-- 
Oleksandr Natalenko, MSE

[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

  parent reply	other threads:[~2026-09-23  6:39 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-09-22 17:40 [PATCH 0/2] HID: logitech-hidpp: fix Bolt hi-res wheel handling Erik Håkansson
2026-09-22 17:40 ` [PATCH 1/2] HID: logitech-hidpp: fix hi-res scroll for Bolt-connected MX Master Erik Håkansson
2026-09-22 17:51   ` sashiko-bot
2026-09-22 17:40 ` [PATCH 2/2] HID: logitech-hidpp: fix Bolt wheel mode handling Erik Håkansson
2026-09-22 17:53   ` sashiko-bot
2026-09-23  6:39 ` Oleksandr Natalenko [this message]
2026-09-23  7:54   ` [PATCH 0/2] HID: logitech-hidpp: fix Bolt hi-res wheel handling Benjamin Tissoires
2026-09-23 16:09     ` erikhakan
2026-09-24  6:51       ` Oleksandr Natalenko
2026-09-24 21:41         ` Erik Håkansson
2026-09-24 21:48           ` erikhakan
2026-09-24 21:57           ` Oleksandr Natalenko
2026-09-26 11:13             ` Erik Håkansson
2026-09-26 11:39               ` Oleksandr Natalenko
2026-09-26 12:12                 ` Erik Håkansson
2026-09-26 12:24                   ` Oleksandr Natalenko
2026-09-26 16:47                     ` Erik Håkansson

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=8P3_vvAUQ0qq3g6Cks8PBg@natalenko.name \
    --to=oleksandr@natalenko.name \
    --cc=bentiss@kernel.org \
    --cc=erikhakan@gmail.com \
    --cc=greyxor@protonmail.com \
    --cc=hadess@hadess.net \
    --cc=jikos@kernel.org \
    --cc=k8ie@mcld.eu \
    --cc=lains@riseup.net \
    --cc=linux-input@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=lovekeshsolanki00@gmail.com \
    --cc=rafael@rcpassos.me \
    --cc=roman.stingler@gmail.com \
    --cc=xglooom@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox