Skip to content
0:00 / 0:00

#logitech#wireshark#websocket

Reverse Engineering Logitech Smooth Scrolling and its Chrome Extension

upgrdman

19K subscribers • 1 video on Hallway

YouTube

Intermediate. Assumes working knowledge.

6.1K views9 years ago1 recommendation

Systems programmingSecurityReverse engineeringHTTP, REST and GraphQLNetworking and protocols

How to reverse engineer the Logitech driver and Chrome extension to enable high-resolution smooth scrolling in custom applications.

In this video I show the process I used to figure out how to communicate with Logitech's driver for the M705 Marathon Mouse. I found out how to enable the mouse's high-resolution scrolling mode, also known as "smooth scrolling." I start by exploring how Logitech's Chrome extension works, and mention some quirks it has. Then I used Wireshark and Npcap to monitor the PC's loopback interface. Chrome connects to a WebSocket server on port 59243 and sends a special line of text any time the Chrome window gains focus and any time the user clicks a link. I then show the Java code I wrote, using the Jetty library, to connect to the WebSocket server and enable high-resolution scrolling for my program. Finally I show how to find the source code for the Chrome extension, and skim through it to confirm what we saw in Wireshark. The source code I wrote is available here: github.com/farrellf/TelemetryViewer/blob/master/Telemetry%20…

Why it's here

1 person recommends this

What people say. Shared as a guide on how to communicate with the Logitech driver to force high-precision scrolling.

u/farrellfin r/programming • Recommends

On “Scrolling with Pleasure”

If anyone is interested: those Logitech mice with free-spinning scroll wheels support high-precision scrolling, but the driver turns that mode off for most programs. I figured out how to talk to the Logitech driver, and was able to get high-precision scrolling for my programs. You could probably adapt this code to work with your own software, or even write a utility that will let you force high-precision mode for other programs. Source code: https://github.com/farrellf/TelemetryViewer/blob/master/Telemetry%20Viewer/src/LogitechSmoothScrolling.java Overly long YouTube video explaining things: link to this video