Настройка Logitech MX Master 3 на Linux (Ubuntu): плавность, DPI, logiops

Для пользователей Logitech MX Master 3 или 3S на Linux часто возникает ощущение рывков при движении курсора. Это связано с низкой частотой опроса по Bluetooth, заниженным DPI и особенностями драйвера libinput. Настройка через logiops позволяет устранить эти проблемы и добиться плавности, аналогичной Windows/macOS.
Почему курсор дёргается на Linux
Причин несколько:
- Низкий polling rate по Bluetooth. Обычно ~125 Hz против 500–1000 Hz при использовании USB-донгла.
- Заниженный DPI по умолчанию. Linux стартует с ~1000 DPI, тогда как в фирменном ПО используется 1600–2000 DPI.
- Ускорение libinput. Неподходящий профиль ускорения усиливает эффект рывков.
В итоге редкое обновление курсора и крупные шаги сенсора делают движение неровным. Решение — задать DPI 1200–1400, включить hi-res scroll и smartshift, а при USB-подключении поднять частоту опроса до 1000 Hz.
1. Проверить подключение
Bluetooth может вызывать лаги, особенно на адаптерах Intel AX2xx. Лучше использовать USB-донгл Logi Unifying или Logi Bolt.
lsusb | grep -i bluetooth2. Установить зависимости
Подключитесь по SSH или откройте терминал и выполните установку библиотек:
sudo apt update
sudo apt install build-essential cmake libevdev-dev libudev-dev libconfig++-dev libglib2.0-dev3. Сборка и установка LogiOps (logid)
Склонируйте репозиторий и соберите проект:
git clone https://github.com/PixlOne/logiops.git
cd logiops
mkdir build && cd build
cmake ..
make -j"$(nproc)"
sudo make install4. Создать конфиг /etc/logid.cfg
Создайте файл конфигурации для MX Master 3/3S:
devices: (
{
name: "MX Master 3 for Mac";
dpi: 1200;
hiresscroll: { hires: true; invert: false; target: false; };
smartshift: { on: true; threshold: 20; }
},
{
name: "Wireless Mouse MX Master 3";
dpi: 1200;
hiresscroll: { hires: true; invert: false; target: false; };
smartshift: { on: true; threshold: 20; }
},
{
name: "MX Master 3";
dpi: 1200;
hiresscroll: { hires: true; invert: false; target: false; };
smartshift: { on: true; threshold: 20; }
}
);