This is not included on the device page, so I thought I'd submit some data:
(see below for a power issue)
The mouse is rechargable as opposed to the model "MX Anywhere"
~]$ solaar show
Unifying Receiver
Device path : /dev/hidraw0
USB id : 046d:c52b
Serial : A7F5923B
Firmware : 24.01.B0023
Bootloader : 01.08
Other : AA.AD
Has 1 paired device(s) out of a maximum of 6.
Notifications: wireless, software present (0x000900)
Device activity counters: 1=11
1: Wireless Mouse MX Anywhere 2
Codename : MX Anywhere 2
Kind : mouse
Wireless PID : 404A
Protocol : HID++ 4.5
Polling rate : 8 ms (125Hz)
Serial number: F3B81C5B
Bootloader: BOT 23.00.B0007
Firmware: MPM 02.00.B0007
Firmware: MPM 02.00.B0007
Other:
The power switch is located on the base.
Supports 26 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: BATTERY STATUS {1000}
7: CHANGE HOST {1814}
8: REPROG CONTROLS V4 {1B04}
9: ADJUSTABLE DPI {2201}
10: VERTICAL SCROLLING {2100}
11: HIRES WHEEL {2121}
12: DFUCONTROL 2 {00C1}
13: unknown:1813 {1813} internal, hidden
14: unknown:1830 {1830} internal, hidden
15: unknown:1890 {1890} internal, hidden
16: unknown:1891 {1891} internal, hidden
17: unknown:18A1 {18A1} internal, hidden
18: unknown:18C0 {18C0} internal, hidden
19: unknown:1DF3 {1DF3} internal, hidden
20: unknown:1E00 {1E00} hidden
21: unknown:1EB0 {1EB0} internal, hidden
22: unknown:1803 {1803} internal, hidden
23: unknown:1861 {1861} internal, hidden
24: unknown:9000 {9000} internal, hidden
25: unknown:1805 {1805} internal, hidden
Battery: 0%, recharging.
I wonder if this is an issue or normal behaviour:
It seems that solaar only reports 90%, 50% or 20%. Even when the data above was collected, solaar shows 20% and a warning sign in the gui, not the 0% and charging state. As I'm writing this, the mouse has been charging for a while, but there is no change in the gui or cli. I don't think the 0% is correct either.
EDIT:
I just checked the charge again. With power unplugged 'solaar show' reports 50%, plugging in power results in it reporting 0%, recharging again. No change in gui; still 20% with a warning.
The protocol is limited to reporting four battery levels (and apparently it cannot report a level when charging), there is not much that can be done here I am afraid (wrt the battery reporting).
That is as I suspected.
What about the mismatch between the gui and the command line? It seems that the gui doesn't update the charge level, even when 'solaar show' reports different levels. I tested this over several hours, charging the mouse fully, and then using it quite a while discharging at least one level down. The gui still showed the 20% warning through all that. I don't remember what caused the gui to eventually update, reboot or just time (after all, that was two weeks ago... ;-), but it seems to be out of sync with the real charge.
Mouse or Solaar?
There is supposed to be an event from the device when the battery level changes on which Solaar can react by reading the battery status. if you invoke solaar show, it will read the current state. So either Solaar has a bug, or the device is not reporting the event correctly. You could watch solaar --debug to figure out whether the event ("Notification") occurred,
I ran solaar --debug, but got right back to the command line. It reported that it had connected to dbus; is this normal or do I have to kill the running instance first? I expected the program to run until I stopped it.
There were also some python warnings (unrelated I think). Output below.
[~]$ solaar --debug
00:19:38,599 INFO [MainThread] root: language nb_NO (UTF-8), translations path None
/usr/lib/python2.7/site-packages/solaar/gtk.py:34: PyGIWarning: Gtk was imported without specifying a version first. Use gi.require_version('Gtk', '3.0') before import to ensure that the right version gets loaded.
__import__(module)
/usr/lib/python2.7/site-packages/solaar/ui/notify.py:33: PyGIWarning: Notify was imported without specifying a version first. Use gi.require_version('Notify', '0.7') before import to ensure that the right version gets loaded.
from gi.repository import Notify
00:19:38,763 INFO [MainThread] solaar.upower: connected to system dbus, watching for suspend/resume events
[~]$
Of course I had to stop the running solaar... enough said..
I divided the output into two parts. This part seems relatively ok
03:12:59,351 INFO [MainThread] root: language nb_NO (UTF-8), translations path None
/usr/lib/python2.7/site-packages/solaar/gtk.py:34: PyGIWarning: Gtk was imported without specifying a version first. Use gi.require_version('Gtk', '3.0') before import to ensure that the right version gets loaded.
__import__(module)
/usr/lib/python2.7/site-packages/solaar/ui/notify.py:33: PyGIWarning: Notify was imported without specifying a version first. Use gi.require_version('Notify', '0.7') before import to ensure that the right version gets loaded.
from gi.repository import Notify
03:12:59,509 INFO [MainThread] solaar.upower: connected to system dbus, watching for suspend/resume events
03:12:59,566 INFO [MainThread] solaar.ui.notify: starting desktop notifications
03:12:59,649 INFO [MainThread] solaar.listener: starting receiver listening threads
03:12:59,661 INFO [MainThread] solaar.listener: receiver event add DeviceInfo(path=u'/dev/hidraw0', vendor_id=u'046d', product_id=u'c52b', serial=u'', release='2401', manufacturer='Logitech', product='USB Receiver', interface=2, driver=u'logitech-djreceiver')
03:12:59,669 INFO [ReceiverListener:hidraw0] logitech_receiver.listener: started with <UnifyingReceiver(/dev/hidraw0,14)> (14)
03:12:59,669 INFO [ReceiverListener:hidraw0] solaar.listener: <UnifyingReceiver(/dev/hidraw0,14)>: notifications listener has started (14)
03:12:59,678 INFO [ReceiverListener:hidraw0] logitech_receiver.receiver: <UnifyingReceiver(/dev/hidraw0,14)>: receiver notifications enabled => ('wireless', 'software present')
03:12:59,686 INFO [ReceiverListener:hidraw0] solaar.listener: status_changed <UnifyingReceiver(/dev/hidraw0,14)>: present, No paired devices. (0)
03:12:59,691 INFO [ReceiverListener:hidraw0] logitech_receiver.receiver: <UnifyingReceiver(/dev/hidraw0,14)>: found new device 1 (404A)
03:12:59,692 INFO [ReceiverListener:hidraw0] solaar.listener: Notification(1,41,04,324A40) triggered new device <PairedDevice(1,404A,MX Anywhere 2)> (mouse)
03:12:59,697 INFO [ReceiverListener:hidraw0] solaar.listener: status_changed <UnifyingReceiver(/dev/hidraw0,14)>: present, 1 paired device. (0)
03:13:00,857 INFO [ReceiverListener:hidraw0] solaar.listener: status_changed <PairedDevice(1,404A,MX Anywhere 2)>: paired online, {'BATTERY LEVEL': 50, 'BATTERY CHARGING': False, 'BATTERY STATUS': NamedInt(0, 'discharging'), 'LINK ENCRYPTED': True, 'ERROR': None} (1)
03:13:00,858 INFO [ReceiverListener:hidraw0] solaar.listener: status_changed <PairedDevice(1,404A,MX Anywhere 2)>: paired online, {'BATTERY LEVEL': 50, 'BATTERY CHARGING': False, 'BATTERY STATUS': NamedInt(0, 'discharging'), 'LINK ENCRYPTED': True, 'ERROR': None} (0)
(solaar:11283): Gdk-CRITICAL **: gdk_window_thaw_toplevel_updates: assertion 'window->update_and_descendants_freeze_count > 0' failed
Then I got 8680 lines like this in a couple of minutes (the number is real; I redirected all output into a file)
03:13:01,900 WARNING [ReceiverListener:hidraw0] logitech_receiver.notifications: <PairedDevice(1,404A,MX Anywhere 2)>: unrecognized Notification(1,02,00,0004F0FF00004B00000000) for feature DEVICE FW VERSION (index 02)
03:13:01,901 WARNING [ReceiverListener:hidraw0] logitech_receiver.notifications: <PairedDevice(1,404A,MX Anywhere 2)>: unrecognized Notification(1,02,00,0005E0FF00005A00000000) for feature DEVICE FW VERSION (index 02)
03:13:01,908 WARNING [ReceiverListener:hidraw0] logitech_receiver.notifications: <PairedDevice(1,404A,MX Anywhere 2)>: unrecognized Notification(1,02,00,000ED0FF00006100000000) for feature DEVICE FW VERSION (index 02)
03:13:01,916 WARNING [ReceiverListener:hidraw0] logitech_receiver.notifications: <PairedDevice(1,404A,MX Anywhere 2)>: unrecognized Notification(1,02,00,0014F0FF00003B00000000) for feature DEVICE FW VERSION (index 02)
03:13:01,925 WARNING [ReceiverListener:hidraw0] logitech_receiver.notifications: <PairedDevice(1,404A,MX Anywhere 2)>: unrecognized Notification(1,02,00,0008000000003600000000) for feature DEVICE FW VERSION (index 02)
The only difference apart from the timestamp is that long number in the parantheses
Notification(1,02,00,0008000000003600000000)
@fropeter ,
What version of Solaar did you use? Are you able to see DPI controls and some scrolling controls at Solaar GUI?
I think worth to submit a descriptor entry for this device.
I'm using Fedora 24. The installed Solaar package according to dnf is
$ dnf list solaar
solaar.noarch 0.9.2-4.20150528gitcf27328.fc24.4 @updates
$
There are no dpi or scrolling controls in the gui.
@fropeter
Are you able to download and test the latest commit on master branch? No necessary to install, follow this:
$ mkdir Solaar
$ git clone https://github.com/pwr/Solaar.git Solaar
$ cd Solaar
$ bin/solaar show
$ bin/solaar
The latest will open the GUI, so be sure to close the GUI you already have installed. I think this will not change the current status for your device but, anyway give it a try.
Regarding how to submit a descriptor entry, I will make some changes and ask you to download (git clone as above) and test. Is it ok for you?
Thanks
Dear @fropeter,
I made a branch to test support to Anywhere MX 2, please test it and provide feedback:
$ mkdir Solaar
$ git clone https://github.com/jrbenito/Solaar.git Solaar
$ cd Solaar
$ git checkout anywhere2
$ bin/solaar show
$ bin/solaar
Notice that second and fourth commands are different from my other post above. Please, provide output of solaar show and if smooth_scroll option appears in the GUI and can be toggled.
Thanks.
First, thank you for doing this!
Here's the output of solaar show:
solaar]$ bin/solaar show
Unifying Receiver
Device path : /dev/hidraw0
USB id : 046d:c52b
Serial : A7F5923B
Firmware : 24.01.B0023
Bootloader : 01.08
Other : AA.AD
Has 1 paired device(s) out of a maximum of 6.
Notifications: wireless, software present (0x000900)
Device activity counters: 1=142
1: Anywhere Mouse MX 2
Codename : Anywhere MX 2
Kind : mouse
Wireless PID : 404A
Protocol : HID++ 4.5
Polling rate : 8 ms (125Hz)
Serial number: F3B81C5B
Bootloader: BOT 23.00.B0007
Firmware: MPM 02.00.B0007
Firmware: MPM 02.00.B0007
Other:
The power switch is located on the base.
Supports 26 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: BATTERY STATUS {1000}
7: CHANGE HOST {1814}
8: REPROG CONTROLS V4 {1B04}
9: ADJUSTABLE DPI {2201}
10: VERTICAL SCROLLING {2100}
11: HIRES WHEEL {2121}
12: DFUCONTROL 2 {00C1}
13: unknown:1813 {1813} internal, hidden
14: unknown:1830 {1830} internal, hidden
15: unknown:1890 {1890} internal, hidden
16: unknown:1891 {1891} internal, hidden
17: unknown:18A1 {18A1} internal, hidden
18: unknown:18C0 {18C0} internal, hidden
19: unknown:1DF3 {1DF3} internal, hidden
20: unknown:1E00 {1E00} hidden
21: unknown:1EB0 {1EB0} internal, hidden
22: unknown:1803 {1803} internal, hidden
23: unknown:1861 {1861} internal, hidden
24: unknown:9000 {9000} internal, hidden
25: unknown:1805 {1805} internal, hidden
Battery: 90%, discharging.
solaar]$
In the GUI, the smooth scrolling option shows, but non-operational; there is a warning sign that shows "Read/write operation failed" when hovering over it.
The DPI setting is there now, and it works.
When starting the GUI, I get this in the terminal:
solaar]$ bin/solaar
(solaar:4944): Gdk-CRITICAL **: gdk_window_thaw_toplevel_updates: assertion 'window->update_and_descendants_freeze_count > 0' failed
I haven't had time to assess battery charge accuracy yet, so I'll have to come back with that later.
Thanks again!
@fropeter ,
thanks for sharing results. I submitted PR #322 for integrating this support. Now we need to debug smooth scrolling issue.
could you please run and post output for bin/solaar -dd config 1? (-dd for debug and 1 is the MX Anyhere 2 as per your log above)
Once again, thanks!
Here's the output:
solaar]$ bin/solaar -dd config 1
17:15:05,685 DEBUG [MainThread] logitech_receiver.base: (3) <= w[10 FF 83B5 030000]
17:15:05,689 DEBUG [MainThread] logitech_receiver.base: (3) => r[11 FF 83B5 03A7F5923B0106070000000000000000]
17:15:05,690 DEBUG [MainThread] logitech_receiver.base: (3) <= w[10 FF 80B2 000000]
17:15:05,692 DEBUG [MainThread] logitech_receiver.base: (3) => r[10 FF 8F80 B20300]
17:15:05,692 DEBUG [MainThread] logitech_receiver.base: (3) device 0xFF error on request {80B2}: 3 = invalid value
17:15:05,693 DEBUG [MainThread] solaar.cli: [/dev/hidraw0] => <UnifyingReceiver(/dev/hidraw0,3)>
17:15:05,808 DEBUG [MainThread] logitech_receiver.base: (3) <= w[10 FF 83B5 200000]
17:15:05,810 DEBUG [MainThread] logitech_receiver.base: (3) => r[11 FF 83B5 200708404A0402020700000000000000]
17:15:05,811 INFO [MainThread] logitech_receiver.receiver: <UnifyingReceiver(/dev/hidraw0,3)>: found new device 1 (404A)
17:15:05,811 DEBUG [MainThread] logitech_receiver.base: (3) pinging device 1
17:15:05,811 DEBUG [MainThread] logitech_receiver.base: (3) <= w[10 01 001E 0000B8]
17:15:06,594 DEBUG [MainThread] logitech_receiver.base: (3) => r[11 01 001E 0405B800000000000000000000000000]
17:15:06,595 DEBUG [MainThread] logitech_receiver.base: (3) <= w[10 01 000F 000100]
17:15:06,614 DEBUG [MainThread] logitech_receiver.base: (3) => r[11 01 000F 01000100000000000000000000000000]
17:15:06,614 DEBUG [MainThread] logitech_receiver.base: (3) <= w[10 01 0108 000000]
17:15:06,634 DEBUG [MainThread] logitech_receiver.base: (3) => r[11 01 0108 19000000000000000000000000000000]
17:15:06,634 DEBUG [MainThread] logitech_receiver.base: (3) <= w[10 01 000C 212000]
17:15:06,654 DEBUG [MainThread] logitech_receiver.base: (3) => r[11 01 000C 00000000000000000000000000000000]
17:15:06,654 DEBUG [MainThread] logitech_receiver.base: (3) <= w[10 01 000A 40A000]
17:15:06,674 DEBUG [MainThread] logitech_receiver.base: (3) => r[11 01 000A 00000000000000000000000000000000]
17:15:06,674 DEBUG [MainThread] logitech_receiver.base: (3) <= w[10 01 000B 40A200]
17:15:06,694 DEBUG [MainThread] logitech_receiver.base: (3) => r[11 01 000B 00000000000000000000000000000000]
17:15:06,694 DEBUG [MainThread] logitech_receiver.base: (3) <= w[10 01 000C 220100]
17:15:06,714 DEBUG [MainThread] logitech_receiver.base: (3) => r[11 01 000C 09000100000000000000000000000000]
17:15:06,714 DEBUG [MainThread] logitech_receiver.base: (3) <= w[10 01 091B 000000]
17:15:06,734 DEBUG [MainThread] logitech_receiver.base: (3) => r[11 01 091B 000190E0C80640000000000000000000]
17:15:06,735 DEBUG [MainThread] logitech_receiver.base: (3) <= w[10 01 0009 211000]
17:15:06,756 DEBUG [MainThread] logitech_receiver.base: (3) => r[11 01 0009 00000000000000000000000000000000]
17:15:06,756 DEBUG [MainThread] solaar.configuration: load => {u'404A:F3B81C5B': {u'dpi': u'1000', u'_name': u'Anywhere Mouse MX 2'}, u'_version': u'0.9.2'}
17:15:06,757 DEBUG [MainThread] logitech_receiver.base: (3) <= w[10 FF 83B5 300000]
17:15:06,761 DEBUG [MainThread] logitech_receiver.base: (3) => r[11 FF 83B5 30F3B81C5B1E00000001000000000000]
17:15:06,762 DEBUG [MainThread] logitech_receiver.base: (3) <= w[10 01 000D 212000]
17:15:06,804 DEBUG [MainThread] logitech_receiver.base: (3) => r[20 01 0200 0004F0FF00004B00000000]
17:15:06,811 DEBUG [MainThread] logitech_receiver.base: (3) => r[20 01 0200 0002000000003C00000000]
17:15:06,820 DEBUG [MainThread] logitech_receiver.base: (3) => r[11 01 000D 00000000000000000000000000000000]
17:15:06,820 DEBUG [MainThread] logitech_receiver.base: (3) <= w[10 01 0009 40A000]
17:15:06,828 DEBUG [MainThread] logitech_receiver.base: (3) => r[20 01 0200 0002F0FF00004D00000000]
17:15:06,835 DEBUG [MainThread] logitech_receiver.base: (3) => r[11 01 0009 00000000000000000000000000000000]
17:15:06,836 DEBUG [MainThread] logitech_receiver.base: (3) <= w[10 01 0009 40A200]
17:15:06,852 DEBUG [MainThread] logitech_receiver.base: (3) => r[11 01 0009 00000000000000000000000000000000]
17:15:06,852 DEBUG [MainThread] logitech_receiver.base: (3) <= w[10 01 000F 211000]
17:15:06,872 DEBUG [MainThread] logitech_receiver.base: (3) => r[11 01 000F 00000000000000000000000000000000]
Anywhere Mouse MX 2 (Anywhere MX 2) [404A:F3B81C5B]
17:15:06,872 DEBUG [MainThread] logitech_receiver.base: (3) <= w[10 01 0008 212000]
17:15:06,892 DEBUG [MainThread] logitech_receiver.base: (3) => r[11 01 0008 00000000000000000000000000000000]
17:15:06,892 DEBUG [MainThread] logitech_receiver.base: (3) <= w[10 01 000D 40A000]
17:15:06,911 DEBUG [MainThread] logitech_receiver.base: (3) => r[11 01 000D 00000000000000000000000000000000]
17:15:06,912 DEBUG [MainThread] logitech_receiver.base: (3) <= w[10 01 000B 40A200]
17:15:06,932 DEBUG [MainThread] logitech_receiver.base: (3) => r[11 01 000B 00000000000000000000000000000000]
17:15:06,932 DEBUG [MainThread] logitech_receiver.base: (3) <= w[10 01 000E 211000]
17:15:06,952 DEBUG [MainThread] logitech_receiver.base: (3) => r[11 01 000E 00000000000000000000000000000000]
# Smooth Scrolling
# High-sensitivity mode for vertical scroll with the wheel.
# possible values: on/true/t/yes/y/1 or off/false/f/no/n/0
17:15:06,952 DEBUG [MainThread] logitech_receiver.base: (3) <= w[10 01 000D 212000]
17:15:06,972 DEBUG [MainThread] logitech_receiver.base: (3) => r[11 01 000D 00000000000000000000000000000000]
17:15:06,973 INFO [MainThread] solaar.configuration: saved {u'404A:F3B81C5B': {u'dpi': u'1000', u'_name': u'Anywhere Mouse MX 2'}, u'_version': u'0.9.2'} to /home/frode/.config/solaar/config.json
smooth-scroll = ? (failed to read from device)
# dpi
# possible values: one of [ 400, 600, 800, 1000, 1200, 1400, 1600 ], or higher/lower/highest/max/lowest/min
17:15:06,974 DEBUG [MainThread] logitech_receiver.base: (3) <= w[10 01 092B 000000]
17:15:06,994 DEBUG [MainThread] logitech_receiver.base: (3) => r[11 01 092B 0003E803E80000000000000000000000]
dpi = NamedInt(1000, '1000')
solaar]$
Can the problem be that the new version of solaar reads the old config from ~/.config/solaar/config.json? Is this hardcoded?
Can the problem be that the new version of solaar reads the old config from ~/.config/solaar/config.json? Is this hardcoded?
Dear @fropeter ,
There is a small bug in solaar where the old configuration have precedence over read values from device. I don´t know if this is the case here, but I always delete old config.json before run any tests just to be sure. Could you try and compare?
thanks for helping.
I could't see any difference in the GUI, and solaar --show differs only in Device activity counters.
There are some differences in the debug output, but I don't know the significance.
solaar]$ bin/solaar -dd config 1
19:47:43,047 DEBUG [MainThread] logitech_receiver.base: (3) <= w[10 FF 83B5 030000]
19:47:43,052 DEBUG [MainThread] logitech_receiver.base: (3) => r[11 FF 83B5 03A7F5923B0106070000000000000000]
19:47:43,052 DEBUG [MainThread] logitech_receiver.base: (3) <= w[10 FF 80B2 000000]
19:47:43,055 DEBUG [MainThread] logitech_receiver.base: (3) => r[10 FF 8F80 B20300]
19:47:43,055 DEBUG [MainThread] logitech_receiver.base: (3) device 0xFF error on request {80B2}: 3 = invalid value
19:47:43,055 DEBUG [MainThread] solaar.cli: [/dev/hidraw0] => <UnifyingReceiver(/dev/hidraw0,3)>
19:47:43,170 DEBUG [MainThread] logitech_receiver.base: (3) <= w[10 FF 83B5 200000]
19:47:43,174 DEBUG [MainThread] logitech_receiver.base: (3) => r[11 FF 83B5 200708404A0402020700000000000000]
19:47:43,174 INFO [MainThread] logitech_receiver.receiver: <UnifyingReceiver(/dev/hidraw0,3)>: found new device 1 (404A)
19:47:43,174 DEBUG [MainThread] logitech_receiver.base: (3) pinging device 1
19:47:43,175 DEBUG [MainThread] logitech_receiver.base: (3) <= w[10 01 001F 0000EF]
19:47:43,266 DEBUG [MainThread] logitech_receiver.base: (3) => r[11 01 001F 0405EF00000000000000000000000000]
19:47:43,266 DEBUG [MainThread] logitech_receiver.base: (3) <= w[10 01 000C 000100]
19:47:43,286 DEBUG [MainThread] logitech_receiver.base: (3) => r[11 01 000C 01000100000000000000000000000000]
19:47:43,287 DEBUG [MainThread] logitech_receiver.base: (3) <= w[10 01 010E 000000]
19:47:43,306 DEBUG [MainThread] logitech_receiver.base: (3) => r[11 01 010E 19000000000000000000000000000000]
19:47:43,306 DEBUG [MainThread] logitech_receiver.base: (3) <= w[10 01 0009 212000]
19:47:43,326 DEBUG [MainThread] logitech_receiver.base: (3) => r[11 01 0009 00000000000000000000000000000000]
19:47:43,327 DEBUG [MainThread] logitech_receiver.base: (3) <= w[10 01 000B 40A000]
19:47:43,346 DEBUG [MainThread] logitech_receiver.base: (3) => r[11 01 000B 00000000000000000000000000000000]
19:47:43,346 DEBUG [MainThread] logitech_receiver.base: (3) <= w[10 01 000D 40A200]
19:47:43,366 DEBUG [MainThread] logitech_receiver.base: (3) => r[11 01 000D 00000000000000000000000000000000]
19:47:43,366 DEBUG [MainThread] logitech_receiver.base: (3) <= w[10 01 000E 220100]
19:47:43,388 DEBUG [MainThread] logitech_receiver.base: (3) => r[11 01 000E 09000100000000000000000000000000]
19:47:43,388 DEBUG [MainThread] logitech_receiver.base: (3) <= w[10 01 0919 000000]
19:47:43,408 DEBUG [MainThread] logitech_receiver.base: (3) => r[11 01 0919 000190E0C80640000000000000000000]
19:47:43,409 DEBUG [MainThread] logitech_receiver.base: (3) <= w[10 01 000A 211000]
19:47:43,428 DEBUG [MainThread] logitech_receiver.base: (3) => r[11 01 000A 00000000000000000000000000000000]
19:47:43,428 DEBUG [MainThread] solaar.configuration: load => {u'404A:F3B81C5B': {u'dpi': 1000, u'_name': u'Anywhere Mouse MX 2'}, u'_version': u'0.9.2'}
19:47:43,429 DEBUG [MainThread] logitech_receiver.base: (3) <= w[10 FF 83B5 300000]
19:47:43,433 DEBUG [MainThread] logitech_receiver.base: (3) => r[11 FF 83B5 30F3B81C5B1E00000001000000000000]
19:47:43,433 DEBUG [MainThread] logitech_receiver.base: (3) <= w[10 01 000D 212000]
19:47:43,528 DEBUG [MainThread] logitech_receiver.base: (3) => r[11 01 000D 00000000000000000000000000000000]
19:47:43,529 DEBUG [MainThread] logitech_receiver.base: (3) <= w[10 01 000F 40A000]
19:47:43,548 DEBUG [MainThread] logitech_receiver.base: (3) => r[11 01 000F 00000000000000000000000000000000]
19:47:43,549 DEBUG [MainThread] logitech_receiver.base: (3) <= w[10 01 000C 40A200]
19:47:43,568 DEBUG [MainThread] logitech_receiver.base: (3) => r[11 01 000C 00000000000000000000000000000000]
19:47:43,568 DEBUG [MainThread] logitech_receiver.base: (3) <= w[10 01 0008 211000]
19:47:43,588 DEBUG [MainThread] logitech_receiver.base: (3) => r[11 01 0008 00000000000000000000000000000000]
Anywhere Mouse MX 2 (Anywhere MX 2) [404A:F3B81C5B]
19:47:43,588 DEBUG [MainThread] logitech_receiver.base: (3) <= w[10 01 000E 212000]
19:47:43,608 DEBUG [MainThread] logitech_receiver.base: (3) => r[11 01 000E 00000000000000000000000000000000]
19:47:43,608 DEBUG [MainThread] logitech_receiver.base: (3) <= w[10 01 000F 40A000]
19:47:43,630 DEBUG [MainThread] logitech_receiver.base: (3) => r[11 01 000F 00000000000000000000000000000000]
19:47:43,630 DEBUG [MainThread] logitech_receiver.base: (3) <= w[10 01 000F 40A200]
19:47:43,650 DEBUG [MainThread] logitech_receiver.base: (3) => r[11 01 000F 00000000000000000000000000000000]
19:47:43,651 DEBUG [MainThread] logitech_receiver.base: (3) <= w[10 01 0008 211000]
19:47:43,670 DEBUG [MainThread] logitech_receiver.base: (3) => r[11 01 0008 00000000000000000000000000000000]
# Smooth Scrolling
# High-sensitivity mode for vertical scroll with the wheel.
# possible values: on/true/t/yes/y/1 or off/false/f/no/n/0
19:47:43,670 DEBUG [MainThread] logitech_receiver.base: (3) <= w[10 01 000B 212000]
19:47:43,690 DEBUG [MainThread] logitech_receiver.base: (3) => r[11 01 000B 00000000000000000000000000000000]
19:47:43,691 INFO [MainThread] solaar.configuration: saved {u'404A:F3B81C5B': {u'dpi': 1000, u'_name': u'Anywhere Mouse MX 2'}, u'_version': u'0.9.2'} to /home/frode/.config/solaar/config.json
smooth-scroll = ? (failed to read from device)
# dpi
# possible values: one of [ 400, 600, 800, 1000, 1200, 1400, 1600 ], or higher/lower/highest/max/lowest/min
19:47:43,691 DEBUG [MainThread] logitech_receiver.base: (3) <= w[10 01 0928 000000]
19:47:43,710 DEBUG [MainThread] logitech_receiver.base: (3) => r[11 01 0928 0003E803E80000000000000000000000]
dpi = NamedInt(1000, '1000')
solaar]$
After PR https://github.com/pwr/Solaar/pull/322, GUI have disabled toggle and alert: Read/write operation failed

$ solaar -dd config 1
21:49:34,691 DEBUG [MainThread] logitech_receiver.base: (3) <= w[10 FF 83B5 030000]
21:49:34,694 DEBUG [MainThread] logitech_receiver.base: (3) => r[11 FF 83B5 03E3889EB90506080000000000000000]
21:49:34,694 DEBUG [MainThread] logitech_receiver.base: (3) <= w[10 FF 80B2 000000]
21:49:34,696 DEBUG [MainThread] logitech_receiver.base: (3) => r[10 FF 8F80 B20300]
21:49:34,696 DEBUG [MainThread] logitech_receiver.base: (3) device 0xFF error on request {80B2}: 3 = invalid value
21:49:34,696 DEBUG [MainThread] solaar.cli: [/dev/hidraw1] => <UnifyingReceiver(/dev/hidraw1,3)>
21:49:34,715 DEBUG [MainThread] logitech_receiver.base: (3) <= w[10 FF 83B5 200000]
21:49:34,718 DEBUG [MainThread] logitech_receiver.base: (3) => r[11 FF 83B5 200808404A0402020700000000000000]
21:49:34,718 INFO [MainThread] logitech_receiver.receiver: <UnifyingReceiver(/dev/hidraw1,3)>: found new device 1 (404A)
21:49:34,718 DEBUG [MainThread] logitech_receiver.base: (3) pinging device 1
21:49:34,718 DEBUG [MainThread] logitech_receiver.base: (3) <= w[10 01 001D 000092]
21:49:34,770 DEBUG [MainThread] logitech_receiver.base: (3) => r[11 01 001D 04059200000000000000000000000000]
21:49:34,770 DEBUG [MainThread] logitech_receiver.base: (3) <= w[10 01 000A 000100]
21:49:34,790 DEBUG [MainThread] logitech_receiver.base: (3) => r[11 01 000A 01000100000000000000000000000000]
21:49:34,790 DEBUG [MainThread] logitech_receiver.base: (3) <= w[10 01 0108 000000]
21:49:34,810 DEBUG [MainThread] logitech_receiver.base: (3) => r[11 01 0108 19000000000000000000000000000000]
21:49:34,810 DEBUG [MainThread] logitech_receiver.base: (3) <= w[10 01 000B 212000]
21:49:34,830 DEBUG [MainThread] logitech_receiver.base: (3) => r[11 01 000B 00000000000000000000000000000000]
21:49:34,830 DEBUG [MainThread] logitech_receiver.base: (3) <= w[10 01 0009 40A000]
21:49:34,850 DEBUG [MainThread] logitech_receiver.base: (3) => r[11 01 0009 00000000000000000000000000000000]
21:49:34,850 DEBUG [MainThread] logitech_receiver.base: (3) <= w[10 01 000B 40A200]
21:49:34,870 DEBUG [MainThread] logitech_receiver.base: (3) => r[11 01 000B 00000000000000000000000000000000]
21:49:34,870 DEBUG [MainThread] logitech_receiver.base: (3) <= w[10 01 000A 220100]
21:49:34,890 DEBUG [MainThread] logitech_receiver.base: (3) => r[11 01 000A 09000100000000000000000000000000]
21:49:34,890 DEBUG [MainThread] logitech_receiver.base: (3) <= w[10 01 0919 000000]
21:49:34,910 DEBUG [MainThread] logitech_receiver.base: (3) => r[11 01 0919 000190E0C80640000000000000000000]
21:49:34,910 DEBUG [MainThread] logitech_receiver.base: (3) <= w[10 01 000C 211000]
21:49:34,932 DEBUG [MainThread] logitech_receiver.base: (3) => r[11 01 000C 00000000000000000000000000000000]
21:49:34,932 DEBUG [MainThread] solaar.configuration: load => {u'404A:15EF63EC': {u'dpi': u'1600', u'_name': u'Anywhere Mouse MX 2'}, u'_version': u'0.9.2'}
21:49:34,933 DEBUG [MainThread] logitech_receiver.base: (3) <= w[10 FF 83B5 300000]
21:49:34,934 DEBUG [MainThread] logitech_receiver.base: (3) => r[11 FF 83B5 3015EF63EC1E00000001000000000000]
21:49:34,934 DEBUG [MainThread] logitech_receiver.base: (3) <= w[10 01 000D 212000]
21:49:34,952 DEBUG [MainThread] logitech_receiver.base: (3) => r[11 01 000D 00000000000000000000000000000000]
21:49:34,952 DEBUG [MainThread] logitech_receiver.base: (3) <= w[10 01 000D 40A000]
21:49:34,972 DEBUG [MainThread] logitech_receiver.base: (3) => r[11 01 000D 00000000000000000000000000000000]
21:49:34,972 DEBUG [MainThread] logitech_receiver.base: (3) <= w[10 01 000B 40A200]
21:49:34,992 DEBUG [MainThread] logitech_receiver.base: (3) => r[11 01 000B 00000000000000000000000000000000]
21:49:34,992 DEBUG [MainThread] logitech_receiver.base: (3) <= w[10 01 000D 211000]
21:49:35,012 DEBUG [MainThread] logitech_receiver.base: (3) => r[11 01 000D 00000000000000000000000000000000]
Anywhere Mouse MX 2 (Anywhere MX 2) [404A:15EF63EC]
21:49:35,012 DEBUG [MainThread] logitech_receiver.base: (3) <= w[10 01 000F 212000]
21:49:35,032 DEBUG [MainThread] logitech_receiver.base: (3) => r[11 01 000F 00000000000000000000000000000000]
21:49:35,032 DEBUG [MainThread] logitech_receiver.base: (3) <= w[10 01 000E 40A000]
21:49:35,052 DEBUG [MainThread] logitech_receiver.base: (3) => r[11 01 000E 00000000000000000000000000000000]
21:49:35,052 DEBUG [MainThread] logitech_receiver.base: (3) <= w[10 01 000A 40A200]
21:49:35,072 DEBUG [MainThread] logitech_receiver.base: (3) => r[11 01 000A 00000000000000000000000000000000]
21:49:35,072 DEBUG [MainThread] logitech_receiver.base: (3) <= w[10 01 000F 211000]
21:49:35,092 DEBUG [MainThread] logitech_receiver.base: (3) => r[11 01 000F 00000000000000000000000000000000]
# Smooth Scrolling
# High-sensitivity mode for vertical scroll with the wheel.
# possible values: on/true/t/yes/y/1 or off/false/f/no/n/0
21:49:35,092 DEBUG [MainThread] logitech_receiver.base: (3) <= w[10 01 000F 212000]
21:49:35,112 DEBUG [MainThread] logitech_receiver.base: (3) => r[11 01 000F 00000000000000000000000000000000]
21:49:35,113 INFO [MainThread] solaar.configuration: saved {u'404A:15EF63EC': {u'dpi': u'1600', u'_name': u'Anywhere Mouse MX 2'}, u'_version': u'0.9.2'} to /home/oleg/.config/solaar/config.json
smooth-scroll = ? (failed to read from device)
# dpi
# possible values: one of [ 400, 600, 800, 1000, 1200, 1400, 1600 ], or higher/lower/highest/max/lowest/min
21:49:35,113 DEBUG [MainThread] logitech_receiver.base: (3) <= w[10 01 092E 000000]
21:49:35,134 DEBUG [MainThread] logitech_receiver.base: (3) => r[11 01 092E 00064003E80000000000000000000000]
dpi = NamedInt(1600, '1600')
@OlegKrikun and @fropeter,
Looking a second time it does have a error. HI_RES_SCROLLING feature set as 2120 at hidpp20.py file. But Anywhere MX2 is reporting feature 2121 HIRES_WHEEL not the HI_RES_SCROLLING.
My Bad! This is what happens when we code without sleep enough. I will submit a correction PR however, there is no device using HIRES_WHEEL in solaar so I have no idea if this will work or not. Are you willing to help test?
Happy new year!
Sorry about the delay. Yes, I'll help test. What do you want me to do?
@fropeter and @OlegKrikun ,
Sorry for late reply, life got in the way. let me catch up with this...
I did a quick modification, can you please try? It is on my git, please clone it https://github.com/jrbenito/solaar/tree/anywhere2-correction and run Solaar from this copy and let me know what you see for the Smooth Scrool feature.
Thanks
Sorry, the MX Anywhere2 smooth scroll patch didn't work here. With it, it doesn't detect the mouse anymore, just the keyboard.
With this patch, it no longer warns that the high-res scroll doesn't work at the GUI interface:
https://github.com/mchehab/solaar/commit/eae13564b178895b40d2645e415569715de23652
However, in practice, it doesn't work, as it seems to accept a value different than 0 or 1:
19:30:12,355 DEBUG [MainThread] logitech_receiver.settings: hires-smooth-scroll: write True to
19:30:12,355 DEBUG [MainThread] logitech_receiver.settings: BooleanValidator: prepare_write(True, None) => 1
19:30:12,355 DEBUG [MainThread] logitech_receiver.settings: hires-smooth-scroll: prepare write(True) => 1
19:30:12,355 DEBUG [MainThread] logitech_receiver.base: (3) <= w[10 03 0B18 010000]
19:30:12,374 DEBUG [MainThread] logitech_receiver.base: (3) => r[11 03 0B18 00000000000000000000000000000000]
# High Resolution Smooth Scrolling
19:30:12,375 DEBUG [MainThread] logitech_receiver.base: (3) <= w[10 03 0B0A 000000]
19:30:12,394 DEBUG [MainThread] logitech_receiver.base: (3) => r[11 03 0B0A 080C0000000000000000000000000000]
19:30:12,395 DEBUG [MainThread] logitech_receiver.settings: BooleanValidator: validate read '\x08\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' => 08
19:30:12,395 WARNING [MainThread] logitech_receiver.settings: BooleanValidator: reply 08 mismatched 01/00/FF
With this patch:
https://github.com/mchehab/solaar/commit/12292e4ee50e56893cff42b3905723061e2b4020
It doesn't produce any errors, but I was unable to see any difference on setting it. So, maybe it uses a different protocol than 2.0 to store/read its value.
@Lekensteyn ,
Any chance to get documentation on HIRES_WHEEL feature?
Thanks
@jrbenito will ask about it
@Lekensteyn ,
Thanks!
With that, I can now get the high-resolution settings with the patches I added at:
https://github.com/mchehab/solaar/commits/mx_anywhere2
3: Anywhere Mouse MX 2
Codename : Anywhere MX 2
...
11: HIRES WHEEL {2121}
Multiplier: 8
Has invert
Normal wheel motion
Has ratchet switch
Normal wheel mode
Low resolution mode
HID notification
@Lekensteyn , @jrbenito ,
Support added on this tree:
https://github.com/mchehab/Solaar/tree/mx_anywhere2-v3
No idea about how to do a pull request on this weird github interface.
Lekensteyn commented 18 hours ago
@jrbenito See https://lekensteyn.nl/files/logitech/x2121_hires_wheel.pdf
There's one error at the document. On table 9 (wheelMovement() report packet), it shows that bit 3 corresponds to resolution. Setting the mouse to high-resolution and looking at the event messages showed that, instead, bit 4 is used for resolution. So, I used bit 4 on my patches.
Setting the mouse to high-resolution and looking at the event messages showed that, instead, bit 4 is used for resolution.
That is weird, it seems unlikely that the firmware and software implementors would choose to deviate from the spec. Do you have a USB packet capture? You can use Wireshark for this (and maybe you have to change permissions as described in https://wiki.wireshark.org/CaptureSetup/USB#Linux). Alternatively, run solaar with the --debug option and link/paste it here?
That is weird, it seems unlikely that the firmware and software implementors would choose to deviate from the spec. Do you have a USB packet capture?
If you take a look at the text, on page 5, it says that the "periods" field can range up to 15. So, clearly, it is using 4 bits for it (e. g. bits 0 to 3). So, the next bit is bit 4.
You can use Wireshark for this (and maybe you have to change permissions as described in https://wiki.wireshark.org/CaptureSetup/USB#Linux). Alternatively, run solaar with the --debug option and link/paste it here?
I actually wrote my own script to use usmon interfaces. I use it when I need to write or debug some media Kernel driver (I'm the maintainer for drivers/media at the Kernel):
https://git.linuxtv.org/v4l-utils.git/tree/contrib/parse_tcpdump_log.pl
This is the log output for the USB receiver for whell scrolls, in high resolution mode:
000025675 ms 000042 ms (241974 us EP=83, Dev=68) >>> 11 03 0b 00 11 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 000025917 ms 000242 ms (215972 us EP=83, Dev=68) >>> 11 03 0b 00 11 ff ff 00 00 00 00 00 00 00 00 00 00 00 00 00 000026133 ms 000216 ms (281975 us EP=83, Dev=68) >>> 11 03 0b 00 11 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00
And this is the log when I disable high resolution:
000030905 ms 000000 ms (017904 us EP=83, Dev=68) >>> 11 03 0b 2d 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 000030923 ms 000018 ms (596012 us EP=83, Dev=68) >>> 11 03 0b 00 01 ff ff 00 00 00 00 00 00 00 00 00 00 00 00 00 000031519 ms 000596 ms (512004 us EP=83, Dev=68) >>> 11 03 0b 00 01 ff ff 00 00 00 00 00 00 00 00 00 00 00 00 00 000032031 ms 000512 ms (211972 us EP=83, Dev=68) >>> 11 03 0b 00 01 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 000032243 ms 000212 ms (261975 us EP=83, Dev=68) >>> 11 03 0b 00 01 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00
@mchehab Good find! For event 0, it indeed seems that the bits are off a bit (no pun intended). There is also a typo, I'll forward it and keep you updated.
The specification (https://lekensteyn.nl/files/logitech/x2121_hires_wheel.pdf) is updated, it was a mistake when converting from an old to a new documentation system.
@mchehab can you create a pull request (see https://help.github.com/articles/creating-a-pull-request-from-a-fork/, or alternatively go to https://github.com/mchehab/Solaar and hopefully your branch will appear with a button to create a PR).
@mchehab can you create a pull request (see https://help.github.com/articles/creating-a-pull-request-from-a-fork/, or alternatively go to https://github.com/mchehab/Solaar and hopefully your branch will appear with a button to create a PR).
I did that already. It is at:
Hello, I've just bought MX anywhere 2 (Amazon version), and I was surprised I lost middle click.
For my job, it's problematic because I often copy from terminal and paste to Firefox. I can see that middle click on this mouse change speed (DPI ?). But how can I simulate middle click? Shift-Insert still work terminals (tested with xterm, urxvt and Terminator) but it doesn't work in graphical programs like Firefox/Chromium/Abiword. Thanks.
Hello, I've just bought MX anywhere 2 (Amazon version), and I was surprised I lost middle click.
For my job, it's problematic because I often copy from terminal and paste to Firefox. I can see that middle click on this mouse change speed (DPI ?). But how can I simulate middle click? Shift-Insert still work terminals (tested with xterm, urxvt and Terminator) but it doesn't work in graphical programs like Firefox/Chromium/Abiword. Thanks.
The middle button works fine here (both Amazon and non-Amazon version). Just double checking: are you sure you're pressing the middle button? On MX, the middle button is not at the wheel. It is the small button located below it.
Hello, I've just bought MX anywhere 2 (Amazon version), and I was surprised I lost middle click.
For my job, it's problematic because I often copy from terminal and paste to Firefox. I can see that middle click on this mouse change speed (DPI ?). But how can I simulate middle click? Shift-Insert still work terminals (tested with xterm, urxvt and Terminator) but it doesn't work in graphical programs like Firefox/Chromium/Abiword. Thanks.The middle button works fine here (both Amazon and non-Amazon version). Just double checking: are you sure you're pressing the middle button? On MX, the middle button is not at the wheel. It is the small button located below it.
Yes, sorry, I've just figured it out with the help of xev program.
I thought that button is like under Windows, to switch mouse speed.
Because yesterday, when I plugged the mouse, it was so slow to move the cursor, I remember it became faster after I press that button. But maybe with solaar installed, DPI are managed from solaar and the button became middle click (button 2).
Thanks for your answer.
Is there any issue left here?
It's fine for me, no issues.
Le ven. 7 févr. 2020 à 17:10, Peter F. Patel-Schneider <
[email protected]> a écrit :
Is there any issue left here?
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/pwr-Solaar/Solaar/issues/283?email_source=notifications&email_token=AD2FTYLUJJX4I5WLHI4IFKDRBWBYBA5CNFSM4CNGZENKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOELDR2NQ#issuecomment-583474486,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AD2FTYMG7X3VUSAS7CW6JYTRBWBYBANCNFSM4CNGZENA
.
OK, closing.
Most helpful comment
If you take a look at the text, on page 5, it says that the "periods" field can range up to 15. So, clearly, it is using 4 bits for it (e. g. bits 0 to 3). So, the next bit is bit 4.
I actually wrote my own script to use usmon interfaces. I use it when I need to write or debug some media Kernel driver (I'm the maintainer for drivers/media at the Kernel):
https://git.linuxtv.org/v4l-utils.git/tree/contrib/parse_tcpdump_log.pl
This is the log output for the USB receiver for whell scrolls, in high resolution mode:
And this is the log when I disable high resolution: