Hi, are there any plans for MX Vertical support?
It is working, what version do you have?
Im using 1.0.1, the mouse work, but the cursour speed switch does not.
Here is the current config
3: MX Vertical Advanced Ergonomic Mouse
Codename : MX Vertical
Kind : mouse
Wireless PID : 407B
Protocol : HID++ 4.5
Polling rate : 8 ms (125Hz)
Serial number: 8DBA5B67
Bootloader: BOT 78.00.B0009
Firmware: MPM 16.00.B0009
Other:
Supports 34 HID++ 2.0 features:
0: ROOT {0000}
1: FEATURE SET {0001}
2: DEVICE FW VERSION {0003}
3: DEVICE NAME {0005}
4: WIRELESS DEVICE STATUS {1D4B}
5: RESET {0020}
6: unknown:0021 {0021}
7: unknown:0007 {0007}
8: BATTERY STATUS {1000}
9: unknown:1002 {1002}
10: REPROG CONTROLS V4 {1B04}
11: unknown:1C00 {1C00}
12: CHANGE HOST {1814}
13: unknown:1815 {1815}
14: unknown:2250 {2250}
15: unknown:18B1 {18B1} internal, hidden
16: VERTICAL SCROLLING {2100}
Roller type: standard
Ratchet per turn: 24
Scroll lines: 0
17: LOWRES WHEEL {2130}
Wheel Reports: HID
18: ADJUSTABLE DPI {2201}
19: unknown:1802 {1802} internal, hidden
20: unknown:1803 {1803} internal, hidden
21: unknown:1806 {1806} internal, hidden
22: unknown:1813 {1813} internal, hidden
23: unknown:1805 {1805} internal, hidden
24: unknown:1830 {1830} internal, hidden
25: unknown:1890 {1890} internal, hidden
26: unknown:1891 {1891} internal, hidden
27: unknown:18A1 {18A1} internal, hidden
28: unknown:1DF3 {1DF3} internal, hidden
29: unknown:1E00 {1E00} hidden
30: unknown:1EB0 {1EB0} internal, hidden
31: unknown:1E22 {1E22} internal, hidden
32: unknown:1861 {1861} internal, hidden
33: unknown:18C0 {18C0} internal, hidden
Has 7 reprogrammable keys:
0: LEFT CLICK , default: LeftClick => LEFT CLICK
mse, reprogrammable, pos:0, group:1, gmask:1
1: RIGHT CLICK , default: RightClick => RIGHT CLICK
mse, reprogrammable, pos:0, group:1, gmask:1
2: MIDDLE BUTTON , default: MiddleMouseButton => MIDDLE BUTTON
divertable, mse, persistently divertable, reprogrammable, pos:0, group:2, gmask:3
3: BACK AS BUTTON 4 , default: BackEx => BACK AS BUTTON 4
divertable, mse, persistently divertable, reprogrammable, pos:0, group:2, gmask:3
4: FORWARD AS BUTTON 5 , default: BrowserForwardEx => FORWARD AS BUTTON 5
divertable, mse, persistently divertable, reprogrammable, pos:0, group:2, gmask:3
5: unknown:00FD , default: unknown:00D2 => unknown:00FD
divertable, mse, persistently divertable, reprogrammable, pos:0, group:2, gmask:3
6: unknown:00D7 , default: unknown:00B4 => unknown:00D7
divertable, virtual, pos:0, group:3, gmask:0
Battery: 50%, discharging.
I also have an MX Vertical and I'm using Solaar latest code from master (latest commit 59c0367 from 2019-12-01).
The mouse works but they are some missing features. First, what works: both forward and backward buttons are working; on Solaar, I can change the dpi of the mouse; that's about it.
What doesn't work:
HID++ Scrolling on Solaar's interface but when enabled, scrolling stops working completely. This is shown as lowres-smooth-scroll setting.I think HID++ Scrolling needs support from the input drivers, and Linux drivers don't have this support.
Reprogramming buttons is not currently a part of Solaar, but may be added soon.
Adjustable DPI should be supported in the version of Solaar in this repository. If you are not running Solaar from this repository you can clone this repository and run bin/solaar from the download directory.
I think HID++ Scrolling needs support from the input drivers, and Linux drivers don't have this support.
So this feature, has a nice switch, but is, unfortunately, yet useless for everybody? Or is there already a purpose? Do you know where the support in linux drivers should happen?
Hmm, yes, pretty much useless (edit: if you don't have hid_logitech_hidpp, which somehow I didn't).
@FFY00 Do you agree? If so, it might be a good idea to not show this feature.
This feature is already supported by the input stack and newer kernels. In fact, it is automatically enabled by the hid-logitech-hidpp kernel driver.
OK, so not useless. But even when I load hid_logitech_hidpp, scrolling on my M510 (wpid 4051) doesn't work when HID++ Scrolling is turned on. Is there something that has to be done to make it work?
@FFY00 I also interested in how to enable/utilize HID++ scrolling in linux. Same time ago I add support for smooth scrolling for M185 (LOWRES WHEEL {2130} if i remember correctly), but mostly to be able _disable_ it in linux, because in dual-boot config this setting sometimes stuck from windows.
UPD: I checked - M325 with Unifying receiver scrolling works in both modes , M185 with Nano receiver onli in HID mode, not HID++
Which kernel are you running? Are you using libinput? If so, which version?
Adjustable DPI should be supported in the version of Solaar in this repository. If you are not running Solaar from this repository you can clone this repository and run bin/solaar from the download directory.
The latest version of Solaar does support adjustable DPI for this mouse, but it's inside the Solaar menu, rather than being able to use the dedicated DPI button that this mouse has.
I constantly have to change the DPI of my mouse based on the program/activity I'm using. I used to have a mouse with integrated memory, where this wasn't a problem; I switched to this mouse for the ergonomic design and I assumed that I would be able to switch using the dedicated button, without having to go through menus.
This is not reprogramming keys, just using one of the keys as they're intended.
I also want to point out that the DPI setting is not remembered after a reboot, or updating Solaar.
EDIT: Just in case it's useful, I have kernel 5.3.0-26 on Ubuntu 18.04 with hid_logitech_hidpp module loaded, and HID++ is still not working. I'm using the Solaar git PPA to always have the latest version possible.
I have here a MX Ergo, which doesn鈥檛 scroll if enabling HID++ scrolling. This is on Ubuntu 18.04 and Solaar from git. Tomorrow I will look for version numbers.
Edit: kernel: Linux 5.3.0-26-generic x86_64
Kernel modules hid_logitech_dj and hid_logitech_hidpp available.
@fcastilloec I wonder how that button works. If it just sends a special keycode that is then interpreted by software on Windows, I'm not sure how solaar could implement it. Maybe someone can get the specs for the device. As far as remembering DPI values, my PR #649 should cause DPI values to be remembered for this device, I think.
@pfps Let me know how to get the specs for the device. @GuilhermeReda posted the output for this mouse, with two unknown keys: unknown:00FD and unknown:00D7.
I tried using xinput --query-state <device_id> while pressing the DPI button but nothing showed as pressed. I tried it with all <devices_id> listed by xinput --list in case the mouse is seen as more than one device and none showed anything as being pressed. I also plugged the device instead of using the receiver and tried the same xinput command and still nothing.
This is how the mouse is listed under /proc/bus/input/devices when plugged in (not using the receiver):
I: Bus=0003 Vendor=046d Product=c08a Version=0111
N: Name="Logitech MX Vertical Advanced Ergonomic Mouse"
P: Phys=usb-0000:03:00.0-1/input0
S: Sysfs=/devices/pci0000:00/0000:00:1c.0/0000:03:00.0/usb3/3-1/3-1:1.0/0003:046D:C08A.001E/input/input57
U: Uniq=8AE275284EC380B3
H: Handlers=mouse1 event19
B: PROP=0
B: EV=17
B: KEY=ffff0000 0 0 0 0
B: REL=1943
B: MSC=10
I: Bus=0003 Vendor=046d Product=c08a Version=0111
N: Name="Logitech MX Vertical Advanced Ergonomic Mouse Keyboard"
P: Phys=usb-0000:03:00.0-1/input1
S: Sysfs=/devices/pci0000:00/0000:00:1c.0/0000:03:00.0/usb3/3-1/3-1:1.1/0003:046D:C08A.001F/input/input58
U: Uniq=8AE275284EC380B3
H: Handlers=sysrq kbd event20 leds
B: PROP=0
B: EV=120013
B: KEY=1000000000007 ff9f207ac14057ff febeffdfffefffff fffffffffffffffe
B: MSC=10
B: LED=1f
I: Bus=0003 Vendor=046d Product=c08a Version=0111
N: Name="Logitech MX Vertical Advanced Ergonomic Mouse Consumer Control"
P: Phys=usb-0000:03:00.0-1/input1
S: Sysfs=/devices/pci0000:00/0000:00:1c.0/0000:03:00.0/usb3/3-1/3-1:1.1/0003:046D:C08A.001F/input/input59
U: Uniq=8AE275284EC380B3
H: Handlers=kbd event21
B: PROP=0
B: EV=1f
B: KEY=3f000301ff 0 0 483ffff17aff32d bfd4444600000000 1 130ff38b17c000 677bfad9415fed 19ed68000004400 10000002
B: REL=1040
B: ABS=100000000
B: MSC=10
I: Bus=0003 Vendor=046d Product=c08a Version=0111
N: Name="Logitech MX Vertical Advanced Ergonomic Mouse System Control"
P: Phys=usb-0000:03:00.0-1/input1
S: Sysfs=/devices/pci0000:00/0000:00:1c.0/0000:03:00.0/usb3/3-1/3-1:1.1/0003:046D:C08A.001F/input/input60
U: Uniq=8AE275284EC380B3
H: Handlers=kbd event22
B: PROP=0
B: EV=13
B: KEY=c000 10000000000000 0
B: MSC=10
I was hoping that the mouse came with a spec sheet, but that's probably too much to ask. Is there any user documentation on the button?
Is your mouse different from the one whose output is posted above? That one seems to have different features.
https://github.com/Logitech/cpg-docs/tree/master/hidpp20 is supposed to be a list of Logitech features but your two features are not on the list. You might be able to get some information by starting an issue in that repository.
My mouse is not different from the post above.
From what I've seen the few times I've used it with a Windows machine. The button does nothing unless the Logitech software has also been installed. When the software is installed, after pressing the button, you see a dialog that clearly comes from the Logitech software. Here's a screenshot of the dialog that appears when the DPI button is pressed.

That sure looks like the button sends a special message/keypress.
This is rather outside the current workings of Solaar, so I expect that getting it done will depend on someone new stepping up to do it.
That said, one way to possibly see what is going on is to run solaar -dd and see what output is generated, particularly the lines that show what the reports the device is generating. That might give someone an idea of how to proceed.
They are probably using the mouse/button spy feature which when enabled reports the state of the buttons through HID++. This seems a bit out of scope.
Closing as out of scope and no response from submitters.
I also own this mouse and would be happy to put some (but not too much!) time in getting the DPI button to work. I ran Solaar in -ddd mode, and saw no events whatsoever appearing when that particular button is pressed, unlike all other buttons which do emit stuff from logitech_receiver.base. Judging from my very superficial reading of that code, as well as looking at cat /dev/hidrawN, the HID file does not make any data available for reading when the DPI button is pressed. Question for people who actually know how this works (@FFY00, @pfps) - is it possible there is some feature that can be toggled on the mouse so that it starts reporting this (doable) or does this look like something that would have to be done in the kernel driver (no can do)?
It's unclear just how this button works. Even if clear, it might not be possible to support the button in Solaar, for lots of reasons.
solaar show should report all the (public) features that the mouse supports. Give it a try with the current version of Solaar, and provide the output, as more of the features have names now.
The current version of Solaar also reports all input it sees from the mouse if run with -dd. Give this a try and see if pressing the DPI button results in any output. If you see some output, just provide the output from the button.
As I mentioned, solaar -ddd shows nothing on pressing the DPI button, and /dev/hidraw0 has no new readable data.
Here's the output of solaar show on current master:
Unifying Receiver
Device path : /dev/hidraw0
USB id : 046d:c52b
Serial : 48BE9602
Firmware : 24.11.B0036
Bootloader : 02.09
Other : AA.AC
Has 1 paired device(s) out of a maximum of 6.
Notifications: wireless, software present (0x000900)
Device activity counters: 1=222
1: MX Vertical Advanced Ergonomic Mouse
Codename : MX Vertical
Kind : mouse
Wireless PID : 407B
Protocol : HID++ 4.5
Polling rate : 8 ms (125Hz)
Serial number: D953D76B
Bootloader: BOT 78.00.B0009
Firmware: MPM 16.00.B0009
Other:
Supports 34 HID++ 2.0 features:
0: ROOT {0000}
1: FEATURE SET {0001}
2: DEVICE FW VERSION {0003}
3: DEVICE NAME {0005}
4: WIRELESS DEVICE STATUS {1D4B}
5: RESET {0020}
6: CRYPTO ID {0021}
7: DEVICE FRIENDLY NAME {0007}
8: BATTERY STATUS {1000}
9: unknown:1002 {1002}
10: REPROG CONTROLS V4 {1B04}
11: PERSISTENT REMAPPABLE ACTION {1C00}
12: CHANGE HOST {1814}
13: HOSTS INFO {1815}
14: unknown:2250 {2250}
15: unknown:18B1 {18B1} internal, hidden
16: VERTICAL SCROLLING {2100}
Roller type: standard
Ratchet per turn: 24
Scroll lines: 0
17: LOWRES WHEEL {2130}
Wheel Reports: HID
18: ADJUSTABLE DPI {2201}
19: DEVICE RESET {1802} internal, hidden
20: unknown:1803 {1803} internal, hidden
21: CONFIG DEVICE PROPS {1806} internal, hidden
22: unknown:1813 {1813} internal, hidden
23: OOBSTATE {1805} internal, hidden
24: unknown:1830 {1830} internal, hidden
25: unknown:1890 {1890} internal, hidden
26: unknown:1891 {1891} internal, hidden
27: unknown:18A1 {18A1} internal, hidden
28: unknown:1DF3 {1DF3} internal, hidden
29: unknown:1E00 {1E00} hidden
30: unknown:1EB0 {1EB0} internal, hidden
31: unknown:1E22 {1E22} internal, hidden
32: unknown:1861 {1861} internal, hidden
33: unknown:18C0 {18C0} internal, hidden
Has 7 reprogrammable keys:
0: LEFT CLICK , default: LeftClick => LEFT CLICK
mse, reprogrammable, pos:0, group:1, gmask:1
1: RIGHT CLICK , default: RightClick => RIGHT CLICK
mse, reprogrammable, pos:0, group:1, gmask:1
2: MIDDLE BUTTON , default: MiddleMouseButton => MIDDLE BUTTON
mse, reprogrammable, divertable, persistently divertable, pos:0, group:2, gmask:3
3: BACK AS BUTTON 4 , default: BackEx => BACK AS BUTTON 4
mse, reprogrammable, divertable, persistently divertable, pos:0, group:2, gmask:3
4: FORWARD AS BUTTON 5 , default: BrowserForwardEx => FORWARD AS BUTTON 5
mse, reprogrammable, divertable, persistently divertable, pos:0, group:2, gmask:3
5: unknown:00FD , default: unknown:00D2 => unknown:00FD
mse, reprogrammable, divertable, persistently divertable, pos:0, group:2, gmask:3
6: unknown:00D7 , default: unknown:00B4 => unknown:00D7
divertable, virtual, pos:0, group:3, gmask:0
Battery: 50%, discharging.
You should be able to remap the button with the 0x1B04 feature I think.
@FFY00 Yes, there probably is some way to get the button(s?) to send special messages that can then be interpreted by software to change the DPI setting. I think that to make this all work will require figuring out which remapping is needed, writing some software to do the remapping, and then writing some more software to respond to the emitted messages.
Well, for that we are better off enabling button spy, but I am not sure that's something we want to do, at least in the current state of the project.
Yes. This is probably too much effort to be done currently unless someone volunteers to do it.
Something that should be noted is that the DPI change does work for me, but only for two preset speeds - that is, I can click the DPI button without solaar or any other such daemon running and it toggles between two preinstalled values. I'm not entirely sure what the values are as the mouse doesn't seem to report them, but there is a noticeable change. So the thing I would like to get working is the sliding feature, where horizontal movement while the DPI button is held is interpreted as smoothly changing the DPI. I'm happy to implement this, but again the thing that needs to work is for the mouse to report when the DPI button is pressed/released. Are there docs on the 1xB04 REPROG CONTROLS v4 feature, and on the button spy?
Here you see a link to a document (and some discussion) about the reprog feature https://github.com/pwr-Solaar/Solaar/issues/592#issuecomment-576438254
Someone with this device needs to download the changes and check that they work on it. Any takers?
@pfps I stopped using the git PPA because one upgrade broke my mouse (this was weeks ago). I can reinstall the latest code from git PPA and test this mouse again if that's what you're asking.
@fcastilloec [Edit: Get the changes from PR #733]
Try changing the DPI via the button on the mouse. Report back your experiences. Please include both any bugs you encounter and whether you are satisfied as to how the interface works. One thing to think about is whether there should be some notification of the DPI change.
@pfps I'll report my findings directly on the PR
PR #733 adds support for changing DPI (the sensitivity of the mouse) using the DPI button and sliding the mouse sideways in a way very similar to what Logitech Options does. Please give it a try. Report back on whether PR #733 works for you and, if so, whether you think the sensitivity changes are too slow or too fast.
To run PR #733, first clone Solaar if you have not already done so and cd to the clone directory. The first time you download the pull request, fetch it into a new branch and checkout that branch, as in:
git fetch origin pull/733/head:pull_733
git checkout pull_733
To download a new version of the pull request, fetch it and then set your pull branch
to the new fetch, as in:
git checkout pull_733
git fetch origin pull/733/head
git reset --hard FETCH_HEAD