Bug 2053391 - [abrt] solaar: read(): base.py:270:_read:logitech_receiver.base.NoReceiver: {'reason': OSError(5, 'Input/output error')}
Summary: [abrt] solaar: read(): base.py:270:_read:logitech_receiver.base.NoReceiver: {...
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Fedora
Classification: Fedora
Component: solaar
Version: 35
Hardware: x86_64
OS: Linux
low
low
Target Milestone: ---
Assignee: Dominik 'Rathann' Mierzejewski
QA Contact: Fedora Extras Quality Assurance
URL: https://retrace.fedoraproject.org/faf...
Whiteboard: abrt_hash:4e06f389ef5a3e50a2f91681c38...
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2022-02-11 07:58 UTC by Simon Krenger
Modified: 2022-03-31 21:58 UTC (History)
5 users (show)

Fixed In Version:
Clone Of:
Environment:
Last Closed: 2022-03-31 21:58:27 UTC
Type: ---
Embargoed:


Attachments (Terms of Use)

Description Simon Krenger 2022-02-11 07:58:21 UTC
Description of problem:
Disconnected USB dongle

Version-Release number of selected component:
solaar-1.1.1-1.fc35

Additional info:
reporter:       libreport-2.15.2
cgroup:         0::/user.slice/user-1000.slice/user/app.slice/app-gnome-solaar-3570.scope
cmdline:        /usr/bin/python3 -s /usr/bin/solaar --window=hide
crash_function: read
exception_type: OSError
executable:     /usr/bin/solaar
interpreter:    python3-3.10.2-1.fc35.x86_64
kernel:         5.16.7-200.fc35.x86_64
runlevel:       N 5
type:           Python3
uid:            1000

Truncated backtrace:
base.py:270:_read:logitech_receiver.base.NoReceiver: {'reason': OSError(5, 'Input/output error')}

Traceback (most recent call last):
  File "/usr/lib/python3.10/site-packages/logitech_receiver/base.py", line 266, in _read
    data = _hid.read(int(handle), _MAX_READ_SIZE, timeout)
  File "/usr/lib/python3.10/site-packages/hidapi/udev.py", line 371, in read
    data = _os.read(device_handle, bytes_count)
OSError: [Errno 5] Input/output error

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3.10/site-packages/solaar/ui/window.py", line 396, in _device_selected
    _update_info_panel(device, full=True)
  File "/usr/lib/python3.10/site-packages/solaar/ui/window.py", line 795, in _update_info_panel
    _update_device_panel(device, _info._device, _info._buttons, full)
  File "/usr/lib/python3.10/site-packages/solaar/ui/window.py", line 766, in _update_device_panel
    _config_panel.update(device, is_online)
  File "/usr/lib/python3.10/site-packages/solaar/ui/config_panel.py", line 576, in update
    for s in device.settings:
  File "/usr/lib/python3.10/site-packages/logitech_receiver/device.py", line 319, in settings
    self._feature_settings_checked = _check_feature_settings(self, self._settings)
  File "/usr/lib/python3.10/site-packages/logitech_receiver/settings_templates.py", line 954, in check_feature_settings
    setting = check_feature(device, name, featureId, featureFn)
  File "/usr/lib/python3.10/site-packages/logitech_receiver/settings_templates.py", line 932, in check_feature
    if featureId not in device.features:
  File "/usr/lib/python3.10/site-packages/logitech_receiver/hidpp20.py", line 322, in __contains__
    reply = self.device.request(0x0000, _pack('!H', ivalue))
  File "/usr/lib/python3.10/site-packages/logitech_receiver/device.py", line 384, in request
    return _base.request(
  File "/usr/lib/python3.10/site-packages/logitech_receiver/base.py", line 431, in request
    reply = _read(handle, timeout)
  File "/usr/lib/python3.10/site-packages/logitech_receiver/base.py", line 270, in _read
    raise NoReceiver(reason=reason)
logitech_receiver.base.NoReceiver: {'reason': OSError(5, 'Input/output error')}

Local variables in innermost frame:
handle: 23
timeout: 4000

Comment 1 Simon Krenger 2022-02-11 07:58:25 UTC
Created attachment 1860539 [details]
File: backtrace

Comment 2 Simon Krenger 2022-02-11 07:58:26 UTC
Created attachment 1860540 [details]
File: cpuinfo

Comment 3 Simon Krenger 2022-02-11 07:58:28 UTC
Created attachment 1860541 [details]
File: environ

Comment 4 Simon Krenger 2022-02-11 07:58:29 UTC
Created attachment 1860542 [details]
File: mountinfo

Comment 5 Simon Krenger 2022-02-11 07:58:30 UTC
Created attachment 1860543 [details]
File: namespaces

Comment 6 Simon Krenger 2022-02-11 07:58:31 UTC
Created attachment 1860544 [details]
File: open_fds

Comment 7 Dominik 'Rathann' Mierzejewski 2022-02-18 11:58:20 UTC
Thanks for reporting. Is it reproducible? Can you provide steps to reproduce and the output of `solaar show`? Please also make this bug public (or allow me to) so that I can reference it when reporting upstream.

Comment 8 Simon Krenger 2022-02-18 15:04:40 UTC
(In reply to Dominik 'Rathann' Mierzejewski from comment #7)
> Thanks for reporting. Is it reproducible? Can you provide steps to reproduce
> and the output of `solaar show`? Please also make this bug public (or allow
> me to) so that I can reference it when reporting upstream.

Made the Bug public, hope that helps.
The original issue appeared when I unplugged the USB dongle during normal operations (No Solaar window or command actively being used).

I can somehow reproduce this issue when unplugging the USB dongle while `solaar show` is running.
This is obviously not a good idea (and somehow expected), but still is how I can partially reproduce it:

~~~
Unifying Receiver
  Device path  : /dev/hidraw5
  USB id       : 046d:C52B
  Serial       : <OMITTED>
    Firmware   : 24.11.B0036
    Bootloader : 02.09
    Other      : AA.AC
  Has 1 paired device(s) out of a maximum of 6.
  Notifications: wireless (0x000100)
  Device activity counters: 1=246

  1: MX Ergo Multi-Device Trackball 
     Device path  : /dev/hidraw11
     WPID         : 406F
     Codename     : MX Ergo
     Kind         : trackball
     Protocol     : HID++ 4.5
     Polling rate : 8 ms (125Hz)
     Serial number: CD006718
     Model ID:      B01D406F0000
     Unit ID:       B182D6C5
        Bootloader: BOT 49.00.B0001
          Firmware: MPM 06.03.B0022
             Other: 
     The power switch is located on the base.
     Supports 36 HID++ 2.0 features:
solaar: error: Traceback (most recent call last):
  File "/usr/lib/python3.10/site-packages/logitech_receiver/base.py", line 217, in write
    _hid.write(int(handle), wdata)
  File "/usr/lib/python3.10/site-packages/hidapi/udev.py", line 342, in write
    raise OSError(_errno.EIO, 'written %d bytes out of expected %d' % (bytes_written, len(data)))
OSError: [Errno 5] written 0 bytes out of expected 20

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3.10/site-packages/solaar/cli/__init__.py", line 204, in run
    m.run(c, args, _find_receiver, _find_device)
  File "/usr/lib/python3.10/site-packages/solaar/cli/show.py", line 289, in run
    _print_device(dev)
  File "/usr/lib/python3.10/site-packages/solaar/cli/show.py", line 137, in _print_device
    _settings_templates.check_feature_settings(dev, dev_settings)
  File "/usr/lib/python3.10/site-packages/logitech_receiver/settings_templates.py", line 954, in check_feature_settings
    setting = check_feature(device, name, featureId, featureFn)
  File "/usr/lib/python3.10/site-packages/logitech_receiver/settings_templates.py", line 932, in check_feature
    if featureId not in device.features:
  File "/usr/lib/python3.10/site-packages/logitech_receiver/hidpp20.py", line 322, in __contains__
    reply = self.device.request(0x0000, _pack('!H', ivalue))
  File "/usr/lib/python3.10/site-packages/logitech_receiver/device.py", line 384, in request
    return _base.request(
  File "/usr/lib/python3.10/site-packages/logitech_receiver/base.py", line 421, in request
    write(ihandle, devnumber, request_data, long_message)
  File "/usr/lib/python3.10/site-packages/logitech_receiver/base.py", line 221, in write
    raise NoReceiver(reason=reason)
logitech_receiver.base.NoReceiver: {'reason': OSError(5, 'written 0 bytes out of expected 20')}
~~~

Complete output for `solaar show`:

~~~
$ solaar show
Solaar version 1.1.1

Lightspeed Receiver
  Device path  : /dev/hidraw3
  USB id       : 046d:C545
  Serial       : <OMITTED>
    Firmware   : 02.01.B0006
    Bootloader : 00.01
    Other      : 9D.9F
  Has 1 paired device(s) out of a maximum of 2.
  Notifications: wireless, software present (0x000900)
  Device activity counters: 1=114

  1: G915 TKL LIGHTSPEED Wireless RGB Mechanical Gaming Keyboard
     Device path  : None
     WPID         : 408E
     Codename     : G915 TKL
     Kind         : keyboard
     Protocol     : HID++ 4.2
     Polling rate : 8 ms (125Hz)
     Serial number: <OMITTED>
     Model ID:      B35F408EC343
     Unit ID:       <OMITTED>
        Bootloader: BL1 12.00.B0017
             Other: 
          Firmware: MPK 14.01.B0021
             Other: 
             Other: 
     The power switch is located on the top left corner.
     Supports 38 HID++ 2.0 features:
         0: ROOT                   {0000}   
         1: FEATURE SET            {0001}   
         2: DEVICE FW VERSION      {0003}   
            Firmware: Bootloader BL1 12.00.B0017 00008B79E978
            Firmware: Other   
            Firmware: Firmware MPK 14.01.B0021 408E5E599E54
            Firmware: Other   
            Firmware: Other   
            Unit ID: <OMITTED>  Model ID: B35F408EC343  Transport IDs: {'btleid': 'B35F', 'wpid': '408E', 'usbid': 'C343'}
         3: DEVICE NAME            {0005}   
            Name: G915 TKL LIGHTSPEED Wireless RGB Mechanical Gaming Keyboard
            Kind: keyboard
         4: WIRELESS DEVICE STATUS {1D4B}   
         5: RESET                  {0020}   
         6: DEVICE FRIENDLY NAME   {0007}   
            Friendly Name: G915 TKL
         7: BATTERY VOLTAGE        {1001}   
            Battery: 3781mV, discharging, 40.
         8: CHANGE HOST            {1814}   
            Change Host        : 1:wetterhorn
         9: HOSTS INFO             {1815}   
            Host 0 (paired): wetterhorn
            Host 1 (paired): 
        10: RGB EFFECTS            {8071}   
        11: PER KEY LIGHTING V2    {8081}   
        12: REPROG CONTROLS V4     {1B04}   
            Key/Button Diversion (saved): {'209': 0, '210': 0}
            Key/Button Diversion        : {'209': 0, '210': 0}
        13: REPORT HID USAGE       {1BC0}   
        14: ENCRYPTION             {4100}   
        15: KEYBOARD DISABLE BY USAGE {4522}   
        16: KEYBOARD LAYOUT 2      {4540}   
        17: GKEY                   {8010}   
            Divert G Keys (saved): False
            Divert G Keys        : False
        18: MKEYS                  {8020}   
        19: MR                     {8030}   
        20: BRIGHTNESS CONTROL     {8040}   
        21: ONBOARD PROFILES       {8100}   
            Device Mode: On-Board
        22: REPORT RATE            {8060}   
            Polling Rate (ms): 1
        23: DFUCONTROL SIGNED      {00C2}   
        24: DFU                    {00D0}   
        25: DEVICE RESET           {1802}   internal, hidden
        26: unknown:1803           {1803}   internal, hidden
        27: CONFIG DEVICE PROPS    {1806}   internal, hidden
        28: unknown:1813           {1813}   internal, hidden
        29: OOBSTATE               {1805}   internal, hidden
        30: unknown:1830           {1830}   internal, hidden
        31: unknown:1890           {1890}   internal, hidden
        32: unknown:1891           {1891}   internal, hidden
        33: unknown:18A1           {18A1}   internal, hidden
        34: unknown:1E00           {1E00}   hidden
        35: unknown:1EB0           {1EB0}   internal, hidden
        36: unknown:1861           {1861}   internal, hidden
        37: unknown:18B0           {18B0}   internal, hidden
     Has 2 reprogrammable keys:
         0: Host Switch Channel 1     , default: HostSwitch Channel 1        => HostSwitch Channel 1      
             divertable, persistently divertable, pos:1, group:0, group mask:empty
             reporting: default
         1: Host Switch Channel 2     , default: HostSwitch Channel 2        => HostSwitch Channel 2      
             divertable, persistently divertable, pos:2, group:0, group mask:empty
             reporting: default
     Battery: 3781mV, discharging, 40.

Unifying Receiver
  Device path  : /dev/hidraw5
  USB id       : 046d:C52B
  Serial       : <OMITTED>
    Firmware   : 24.11.B0036
    Bootloader : 02.09
    Other      : AA.AC
  Has 1 paired device(s) out of a maximum of 6.
  Notifications: wireless (0x000100)
  Device activity counters: 1=11

  1: MX Ergo Multi-Device Trackball 
     Device path  : /dev/hidraw8
     WPID         : 406F
     Codename     : MX Ergo
     Kind         : trackball
     Protocol     : HID++ 4.5
     Polling rate : 8 ms (125Hz)
     Serial number: CD006718
     Model ID:      B01D406F0000
     Unit ID:       B182D6C5
        Bootloader: BOT 49.00.B0001
          Firmware: MPM 06.03.B0022
             Other: 
     The power switch is located on the base.
     Supports 36 HID++ 2.0 features:
         0: ROOT                   {0000}   
         1: FEATURE SET            {0001}   
         2: DEVICE FW VERSION      {0003}   
            Firmware: Bootloader BOT 49.00.B0001 0000CDE885F3
            Firmware: Firmware MPM 06.03.B0022 406FCDE885F3
            Firmware: Other   
            Unit ID: B182D6C5  Model ID: B01D406F0000  Transport IDs: {'btleid': 'B01D', 'wpid': '406F'}
         3: DEVICE NAME            {0005}   
            Name: MX Ergo Multi-Device Trackball 
            Kind: trackball
         4: WIRELESS DEVICE STATUS {1D4B}   
         5: DEVICE FRIENDLY NAME   {0007}   
            Friendly Name: MX Ergo
         6: RESET                  {0020}   
         7: CRYPTO ID              {0021}   
         8: BATTERY STATUS         {1000}   
            Battery: 90%, discharging, next level 50%.
         9: LED CONTROL            {1300}   
        10: REPROG CONTROLS V4     {1B04}   
            Key/Button Actions (saved): {'237': 237, '80': 80, '81': 81, '82': 82, '83': 83, '86': 86, '91': 91, '93': 93}
            Key/Button Actions        : {'80': 80, '81': 81, '82': 82, '83': 83, '86': 86, '237': 237, '91': 91, '93': 93}
            Key/Button Diversion (saved): {'237': 0, '82': 0, '83': 0, '86': 0, '91': 0, '93': 0}
            Key/Button Diversion        : {'82': 0, '83': 0, '86': 0, '237': 0, '91': 0, '93': 0}
        11: PERSISTENT REMAPPABLE ACTION {1C00}   
        12: POINTER AXIS ORIENTATION {2006}   
        13: POINTER SPEED          {2205}   
            Pointer Speed: 1.99609375
            Sensitivity (Pointer Speed) (saved): 511
            Sensitivity (Pointer Speed)        : 511
        14: VERTICAL SCROLLING     {2100}   
            Roller type: standard
            Ratchet per turn: 18
            Scroll lines: 0
        15: DFUCONTROL SIGNED      {00C2}   
        16: DEVICE RESET           {1802}   internal, hidden
        17: unknown:1803           {1803}   internal, hidden
        18: CONFIG DEVICE PROPS    {1806}   internal, hidden
        19: OOBSTATE               {1805}   internal, hidden
        20: unknown:1813           {1813}   internal, hidden
        21: CHANGE HOST            {1814}   
            Change Host        : 1:wetterhorn
        22: HOSTS INFO             {1815}   
            Host 0 (unpaired): wetterhorn
            Host 1 (unpaired): 
            Host 2 (unpaired): 
        23: unknown:1830           {1830}   internal, hidden
        24: unknown:1861           {1861}   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:18B1           {18B1}   internal, hidden
        32: unknown:1850           {1850}   internal, hidden
        33: unknown:1F03           {1F03}   internal, hidden
        34: unknown:18C0           {18C0}   internal, hidden
        35: LOWRES WHEEL           {2130}   
            Wheel Reports: HID
            Scroll Wheel Diversion (saved): False
            Scroll Wheel Diversion        : False
     Has 9 reprogrammable keys:
         0: Left Button               , default: Left Click                  => Left Click                
             mse, reprogrammable, pos:0, group:1, group mask:g1
             reporting: default
         1: Right Button              , default: Right Click                 => Right Click               
             mse, reprogrammable, pos:0, group:1, group mask:g1
             reporting: default
         2: Middle Button             , default: Mouse Middle Button         => Mouse Middle Button       
             mse, reprogrammable, divertable, persistently divertable, raw XY, pos:0, group:2, group mask:g1,g2
             reporting: default
         3: Back Button               , default: Mouse Back Button           => Mouse Back Button         
             mse, reprogrammable, divertable, persistently divertable, raw XY, pos:0, group:2, group mask:g1,g2
             reporting: default
         4: Forward Button            , default: Mouse Forward Button        => Mouse Forward Button      
             mse, reprogrammable, divertable, persistently divertable, raw XY, pos:0, group:2, group mask:g1,g2
             reporting: default
         5: DPI Change                , default: DPI Change                  => DPI Change                
             mse, reprogrammable, divertable, persistently divertable, raw XY, pos:0, group:2, group mask:g1,g2
             reporting: default
         6: Left Tilt                 , default: Mouse Scroll Left Button    => Mouse Scroll Left Button  
             mse, reprogrammable, divertable, persistently divertable, raw XY, pos:0, group:2, group mask:g1,g2
             reporting: default
         7: Right Tilt                , default: Mouse Scroll Right Button   => Mouse Scroll Right Button 
             mse, reprogrammable, divertable, persistently divertable, raw XY, pos:0, group:2, group mask:g1,g2
             reporting: default
         8: Virtual Gesture Button    , default: Virtual Gesture Button      => Virtual Gesture Button    
             divertable, virtual, raw XY, force raw XY, pos:0, group:3, group mask:empty
             reporting: default
     Battery: 90%, discharging, next level 50%.
~~~

Comment 9 Dominik 'Rathann' Mierzejewski 2022-03-28 13:25:35 UTC
Can you retry with 1.1.2 and check if it's still reproducible? https://bodhi.fedoraproject.org/updates/FEDORA-2022-4f397f8544 .

Comment 10 Simon Krenger 2022-03-29 06:51:29 UTC
I tried to reproduce the problem with 1.1.2, but now `solaar show` fails with the following error message:

~~~
$ solaar --version
solaar 1.1.2
$ solaar show
Solaar version 1.1.2

Unifying Receiver
  Device path  : /dev/hidraw4
  USB id       : 046d:C52B
[..]
         9: LED CONTROL            {1300}   
        10: REPROG CONTROLS V4     {1B04}   
            Key/Button Actions (saved): {DPI Change:DPI Change, Left Button:Left Click, Right Button:Right Click, Middle Button:Mouse Middle Button, Back Button:Mouse Back Button, Forward Button:Mouse Forward Button, Left Tilt:Mouse Scroll Left Button , Right Tilt:Mouse Scroll Right Button}
            Key/Button Actions        : {DPI Change:DPI Change, Left Button:Left Click, Right Button:Right Click, Middle Button:Mouse Middle Button, Back Button:Mouse Back Button, Forward Button:Mouse Forward Button, Left Tilt:Mouse Scroll Left Button , Right Tilt:Mouse Scroll Right Button}
            Key/Button Diversion (saved): {DPI Change:Regular, Middle Button:Regular, Back Button:Regular, Forward Button:Regular, Left Tilt:Regular, Right Tilt:Regular}
            Key/Button Diversion        : {DPI Change:Regular, Middle Button:Regular, Back Button:Regular, Forward Button:Regular, Left Tilt:Regular, Right Tilt:Regular}
        11: PERSISTENT REMAPPABLE ACTION {1C00}   
solaar: assertion failed: /usr/lib/python3.10/site-packages/logitech_receiver/settings.py line 1041
~~~

I filed https://bugzilla.redhat.com/show_bug.cgi?id=2069546 for this issue.

Comment 11 Peter F. Patel-Schneider 2022-03-29 21:41:50 UTC
The CLI for Solaar catches exceptions and prints the execution stack, which is what is seen here.   So this is expected behaviour.

Comment 12 Simon Krenger 2022-03-31 15:18:33 UTC
Was unable to reproduce the original issue with Solaar version 1.1.2, so from my point of view this Bug can be closed.

Comment 13 Dominik 'Rathann' Mierzejewski 2022-03-31 21:58:27 UTC
Thanks. We can always reopen or file a new one for 1.1.2.


Note You need to log in before you can comment on or make changes to this bug.