Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Broken EX100 device names after commit b0297694d1ec8bbd4a0b7488104633c2ae6cf0a4 #943

Closed
doctor64 opened this issue Sep 4, 2020 · 15 comments
Labels

Comments

@doctor64
Copy link
Contributor

doctor64 commented Sep 4, 2020

Information

  • Solaar version (solaar --version or git describe --tags if cloned from this repository): 1.0.3-70-g9de4d39
  • Distribution: Ubuntu 19.10
  • Kernel version (ex. uname -srmo): Linux 5.3.0-64-generic x86_64 GNU/Linux
  • Output of solaar show:
$ bin/solaar show
Unifying Receiver
  Device path  : /dev/hidraw0
  USB id       : 046d:c52b
  Serial       : BB449ADD
    Firmware   : 12.11.B0032
    Bootloader : 04.16
    Other      : AA.AA
  Has 1 paired device(s) out of a maximum of 6.
  Notifications: wireless, software present (0x000900)
  Device activity counters: 1=248

  1: Wireless Mouse MX Master 3
     Device path  : /dev/hidraw1
     USB id       : 046d:4082
     Codename     : MX Master 3
     Kind         : mouse
     Protocol     : HID++ 4.5
     Polling rate : 8 ms (125Hz)
     Serial number: A56E2511
        Bootloader: BOT 95.01.B0015
          Firmware: MPM 19.01.B0015
             Other: 
     The power switch is located on the base.
     Supports 35 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: REPROG CONTROLS V4     {1B04}   
            Actions: {'80': 80, '81': 81, '82': 82, '83': 83, '86': 86, '195': 195, '196': 196}
        10: CHANGE HOST            {1814}   
            Change Host: 1:doctor64-lin
        11: unknown:2250           {2250}   
        12: ADJUSTABLE DPI         {2201}   
            Sensitivity (DPI): 1000
        13: SMART SHIFT            {2110}   
            Smart Shift: 8
        14: HIRES WHEEL            {2121}   
            Multiplier: 15
            Has invert
              Normal wheel motion
            Has ratchet switch
              Normal wheel mode
            Low resolution mode
            HID notification
            High Resolution Wheel Invert: False
            Wheel Resolution: False
        15: THUMB WHEEL            {2150}   
            HID++ Thumb Scrolling: False
            Thumb Scroll Invert: False
        16: unknown:2251           {2251}   
        17: DFUCONTROL SIGNED      {00C2}   
        18: DEVICE RESET           {1802}   internal, hidden
        19: unknown:1803           {1803}   internal, hidden
        20: CONFIG DEVICE PROPS    {1806}   internal, hidden
        21: unknown:1813           {1813}   internal, hidden
        22: OOBSTATE               {1805}   internal, hidden
        23: unknown:1830           {1830}   internal, hidden
        24: unknown:1890           {1890}   internal, hidden
        25: unknown:1891           {1891}   internal, hidden
        26: unknown:18A1           {18A1}   internal, hidden
        27: unknown:1DF3           {1DF3}   internal, hidden
        28: unknown:1E00           {1E00}   hidden
        29: unknown:1EB0           {1EB0}   internal, hidden
        30: unknown:1861           {1861}   internal, hidden
        31: unknown:9001           {9001}   internal, hidden
        32: unknown:9203           {9203}   internal, hidden
        33: unknown:9205           {9205}   internal, hidden
        34: unknown:9300           {9300}   internal, hidden
     Has 8 reprogrammable keys:
         0: Left Button               , default: Left Click                  => Left Click                
             mse, analytics key events, pos:0, group:1, group mask:g1
             reporting: default
         1: Right Button              , default: Right Click                 => Right Click               
             mse, analytics key events, pos:0, group:1, group mask:g1
             reporting: default
         2: Middle Button             , default: Mouse Middle Button         => Mouse Middle Button       
             mse, reprogrammable, divertable, raw XY, analytics key events, pos:0, group:3, group mask:g1,g2,g3
             reporting: default
         3: Back Button               , default: Mouse Back Button           => Mouse Back Button         
             mse, reprogrammable, divertable, raw XY, analytics key events, pos:0, group:2, group mask:g1,g2
             reporting: default
         4: Forward Button            , default: Mouse Forward Button        => Mouse Forward Button      
             mse, reprogrammable, divertable, raw XY, analytics key events, pos:0, group:2, group mask:g1,g2
             reporting: default
         5: App Switch Gesture        , default: Gesture Button Navigation   => Gesture Button Navigation 
             mse, reprogrammable, divertable, raw XY, analytics key events, pos:0, group:3, group mask:g1,g2,g3
             reporting: default
         6: Smart Shift               , default: Smart Shift                 => Smart Shift               
             mse, reprogrammable, divertable, raw XY, analytics key events, pos:0, group:3, group mask:g1,g2,g3
             reporting: default
         7: Virtual Gesture Button    , default: Virtual Gesture Button      => Virtual Gesture Button    
             divertable, virtual, raw XY, force raw XY, pos:0, group:4, group mask:empty
             reporting: default
     Battery: 100%, discharging, next level 50%.

EX100 Receiver 27 Mhz
  Device path  : /dev/hidraw3
  USB id       : 046d:c517
  Serial       : None
  Has 2 paired device(s) out of a maximum of 4.
  Notifications: wireless (0x000100)

  1: Wireless Mouse EX100
     Device path  : /dev/hidraw4
     USB id       : 046d:3F00
     Codename     : EX100m
     Kind         : mouse
     Protocol     : HID++ 1.0
     Serial number: ?
     The power switch is located on the (unknown).
     Notifications: roller V, mouse extra buttons, battery status, roller H (0x3C0000).
     Features: special buttons, scroll accel (0x420000)
     Battery: good, discharging.

  3: Wireless Keyboard EX100
     Device path  : /dev/hidraw5
     USB id       : 046d:6500
     Codename     : EX100
     Kind         : keyboard
     Protocol     : HID++ 1.0
     Serial number: ?
     The power switch is located on the (unknown).
     Notifications: battery status (0x100000).
     Features: special buttons, scroll accel (0x420000)
     Battery: good, discharging.

Describe the bug
Before commit b029769 Solaar window shows EX100 devices with names, after this commit only question marks appears. I think this caused by removing code for creating fake wpid's. EX100 devices does return only single-byte device ID's, so need to create fake WPID to make Solaar works as intended. Also note what EX100 devices have switched device kinds - so mouse reports as keyboard, and keyboard as mouse.
Solaar window with names:
Screenshot old solaar

To Reproduce
Steps to reproduce the behavior:

  1. Open Solaar window
  2. See invalid device names
    Screenshot new

Screenshots

Additional context

@doctor64 doctor64 added the bug label Sep 4, 2020
@pfps
Copy link
Collaborator

pfps commented Sep 4, 2020

See the recent messages on issue #716

@pfps
Copy link
Collaborator

pfps commented Sep 4, 2020

The EX100 of that user is reporting connection notifications with full WPIDs.

11:37:24,466     INFO [ReceiverListener:hidraw1] solaar.listener: connection Notification(1,41,02,012236) for <Device(1,3622,Wireless Keyboard S510,?)> (keyboard)
11:37:24,499     INFO [ReceiverListener:hidraw5] solaar.listener: connection Notification(1,41,02,012185) for <Device(1,8521,Wireless Keyboard MK300,?)> (keyboard)
11:37:24,770     INFO [ReceiverListener:hidraw1] solaar.listener: connection Notification(3,41,02,021256) for <Device(3,5612,LX5 Cordless Mouse,?)> (mouse)
11:37:24,799     INFO [ReceiverListener:hidraw5] solaar.listener: connection Notification(3,41,02,022268) for <Device(3,6822,Wireless Mouse M30,?)> (mouse)

@pfps
Copy link
Collaborator

pfps commented Sep 7, 2020

Fixed by #944

@pfps pfps closed this as completed Sep 7, 2020
@pfps
Copy link
Collaborator

pfps commented Mar 5, 2024

@doctor64 The code in Solaar that handles receivers is undergoing extensive revision. Are you available to test it out as it applies to EX100 receivers?

@doctor64
Copy link
Contributor Author

doctor64 commented Mar 6, 2024

Currently EX100 combo on different PC, but yes, I can test it. Drop me a note when testing needed.

@pfps
Copy link
Collaborator

pfps commented Mar 6, 2024

Thanks.

PR #2367 has the changed code. Just run Solaar as bin/solaar -dd after quitting any running Solaar and see if there are any problems that show up. If there are post the output of bin/solar -ddd.

Also run tools/scan-registers.sh FF and post the output. That will show what registers the EX100 has for future reference.

To clone and use Solar from its GitHub repository

git clone https://github.com/pwr-Solaar/Solaar.git
cd Solaar

Run Solaar as bin/solaar from this directory.

To run PR #2367, 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/2367/head:pull_2367
git checkout pull_2367

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_2367
git fetch origin pull/2367/head
git reset --hard FETCH_HEAD

@pfps
Copy link
Collaborator

pfps commented Mar 7, 2024

@doctor64 Just in case I need to mention you for you be notified of my previous post.

@doctor64
Copy link
Contributor Author

doctor64 commented Mar 7, 2024

@pfps
I done tests. Only EX100 receiver connected.
On current master branch Solaar see only EX100 receiver, but not devices.
Output from bin/solaar -dd https://pastebin.com/qsLMKxBR
Output from bin/solaar -ddd https://pastebin.com/vLznA0ZJ
On PR branch solaar throws some errors and display only receiver, but not devices.
Output from bin/solaar -dd https://pastebin.com/v7HPGSPS
Output from bin/solaar -ddd https://pastebin.com/fpmHxVa0
Additionally connected normal Logitech receiver and MX Master 3 - the same as before, but MX Master 3 visible.
But bin/solaar show displays devices on EX100 with code from PR
Output from bin/solaar -ddd show https://pastebin.com/dXtUjZCB
Same test with master branch - only receiver shown.
Output from bin/solaar -ddd show https://pastebin.com/2mHNJaNY
Hope this helps.
May be we should have separate issue for this problem?

@pfps
Copy link
Collaborator

pfps commented Mar 7, 2024

Yes, please open an issue for the errors on the current master branch.

@pfps
Copy link
Collaborator

pfps commented Mar 7, 2024

@doctor64
The problem with PR #2367 should be fixed. Please download and try it again.

@pfps
Copy link
Collaborator

pfps commented Mar 7, 2024

@doctor64 On second thought, don't bother with a new issue. The cause is a typo in a string and the changes in PR #2367 have made that problem obsolete.

@doctor64
Copy link
Contributor Author

doctor64 commented Mar 8, 2024

I tested updated PR.
GUI display both devices on EX100 receiver.
Output of bin/solaar -ddd https://pastebin.com/NBgB0tJb
Output of tools/scan-registers.sh FF

    ~/HDProjects/test/Solaar    pull_2367  tools/scan-registers.sh FF                                                                                             INT ✘  1m 46s  
# Old notification flags: 000100
>> (   0.112) [10 FF 8100 000100] b'\x10\xff\x81\x00\x00\x01\x00'
SHORT REGISTERS
>> (   0.101) [10 FF 8101 000200] b'\x10\xff\x81\x01\x00\x02\x00'
>> (   0.117) [10 FF 8102 000200] b'\x10\xff\x81\x02\x00\x02\x00'
>> (   2.221) [10 FF 8109 010000] b'\x10\xff\x81\t\x01\x00\x00'
>> (  14.813) [10 FF 8170 012101] b'\x10\xff\x81p\x01!\x01'
>> (  15.829) [10 FF 8171 011200] b'\x10\xff\x81q\x01\x12\x00'
>> (  15.861) [10 FF 8173 643F00] b'\x10\xff\x81sd?\x00'
>> (  17.061) [10 FF 8180 030000] b'\x10\xff\x81\x80\x03\x00\x00'
>> (  25.301) [10 FF 81D0 000000] b'\x10\xff\x81\xd0\x00\x00\x00'
LONG REGISTERS
PAIRING INFORMAITON

@pfps
Copy link
Collaborator

pfps commented Mar 8, 2024

Thanks. It appears that all looks good now and the PR can be merged.

Can you provide the output of solaar show as well?

@doctor64
Copy link
Contributor Author

doctor64 commented Mar 8, 2024

Here is it.
Output from solaar -ddd show https://pastebin.com/gnyWqqGX

@doctor64
Copy link
Contributor Author

doctor64 commented Mar 8, 2024

BTW, I provided dump of EX100 registers some time ago, in docs/devices/ex100.txt

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants