Skip to content

Running two liquidctl processes causes Corsair H100i PRO XT to stop responding to read requests. #274

@planeturban

Description

@planeturban

I've noticed this twice now; after a while (don't think it's X time but rather X read requests) my H100i PRO XT stops responding. The reason for me thinking it's X reads is that both times this has happend I've had a while 1; do sleep; liquidctl status; done loop running.

I've tried rm-ing usbhid module and loading it again.

I can write, but the process hangs after this:

root@pve:~# liquidctl initialize -g                                                                                                                                                                                                                                                                                 
[DEBUG] liquidctl.cli: running liquidctl v1.4.2                                                                                                                                                                                                                                                                     
[DEBUG] liquidctl.driver.usb: searching HidapiBus (api=hidraw, drivers=[CorsairHidPsu, HydroPlatinum, Kraken2, KrakenX3, KrakenZ3, NzxtEPsu, RgbFusion2, SmartDevice, SmartDevice2, _CommonSmartDeviceDriver])                                                                                                      
[DEBUG] liquidctl.driver.usb: probing drivers for device 1b1c:0c20                                                                                                                                                                                                                                                  
[DEBUG] liquidctl.driver.usb: instanced driver for Corsair H100i PRO XT (experimental)                                                                                                                                                                                                                              
[DEBUG] liquidctl.driver.usb: searching PyUsbBus (drivers=[Hydro690Lc, Legacy690Lc, Modern690Lc, _CommonAsetekDriver])                                                                                                                                                                                              
[DEBUG] liquidctl.driver.usb: probing drivers for device 1b1c:0c20                                                                                                                                                                                                                                                  
[DEBUG] liquidctl.driver.usb: probing drivers for device 8087:0024                                                                                                                                                                                                                                                  
[DEBUG] liquidctl.driver.usb: probing drivers for device 1d6b:0002                                                                                                                                                                                                                                                  
[DEBUG] liquidctl.driver.usb: probing drivers for device 8087:0024                                                                                                                                                                                                                                                  
[DEBUG] liquidctl.driver.usb: probing drivers for device 1d6b:0002                                                                                                                                                                                                                                                  
[DEBUG] liquidctl.cli: device: Corsair H100i PRO XT (experimental)                                                                                                                                                                                                                                                  
[DEBUG] liquidctl.keyval: data in /run/user/0/liquidctl/vid1b1c_pid0c20/loc0                                                                                                                                                                                                                                        
[DEBUG] liquidctl.keyval: stored leds_enabled=0 (in /run/user/0/liquidctl/vid1b1c_pid0c20/loc0/leds_enabled)                                                                                                                                                                                                        
[DEBUG] liquidctl.keyval: stored pump_mode=1 (in /run/user/0/liquidctl/vid1b1c_pid0c20/loc0/pump_mode)                                                                                                                                                                                                              
[DEBUG] liquidctl.keyval: no data (file) found for fan1_mode                                                                                                                                                                                                                                                        
[DEBUG] liquidctl.driver.hydro_platinum: falling back to FIXED_DUTY for _FanMode(None)                                                                                                                                                                                                                              
[DEBUG] liquidctl.keyval: no data (file) found for fan1_duty                                                                                                                                                                                                                                                        
[INFO] liquidctl.driver.hydro_platinum: setting fan1 to 100% duty cycle                                                                                                                                                                                                                                             
[DEBUG] liquidctl.keyval: no data (file) found for fan2_mode                                                                                                                                                                                                                                                        
[DEBUG] liquidctl.driver.hydro_platinum: falling back to FIXED_DUTY for _FanMode(None)                                                                                                                                                                                                                              
[DEBUG] liquidctl.keyval: no data (file) found for fan2_duty                                                                                                                                                                                                                                                        
[INFO] liquidctl.driver.hydro_platinum: setting fan2 to 100% duty cycle                                                                                                                                                                                                                                             
[INFO] liquidctl.driver.hydro_platinum: setting pump mode to balanced                                                                                                                                                                                                                                               
[DEBUG] liquidctl.keyval: loaded sequence=25 (from /run/user/0/liquidctl/vid1b1c_pid0c20/loc0/sequence)                                                                                                                                                                                                             
[DEBUG] liquidctl.keyval: stored sequence=26 (in /run/user/0/liquidctl/vid1b1c_pid0c20/loc0/sequence)                                                                                                                                                                                                               
[DEBUG] liquidctl.driver.usb: discarded 0 previously enqueued reports                                                                                                                                                                                                                                               
[DEBUG] liquidctl.driver.usb: writting report 0x00 with 64 bytes: 3f:d0:14:00:ff:05:ff:ff:ff:ff:ff:02:00:00:00:00:ff:02:00:00:00:00:ff:01:00:00:00:00:00:07:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:fe                                                   
^CTraceback (most recent call last):                                                                                                                                                                                                                                                                                
  File "/usr/local/lib/python3.7/dist-packages/liquidctl/cli.py", line 300, in main                                                                                                                                                                                                                                 
    _print_dev_status(dev, dev.initialize(**opts))                                                                                                                                                                                                                                                                  
  File "/usr/local/lib/python3.7/dist-packages/liquidctl/driver/hydro_platinum.py", line 171, in initialize                                                                                                                                                                                                         
    res = self._send_set_cooling()                                                                                                                                                                                                                                                                                  
  File "/usr/local/lib/python3.7/dist-packages/liquidctl/driver/hydro_platinum.py", line 360, in _send_set_cooling                                                                                                                                                                                                  
    return self._send_command(_FEATURE_COOLING, _CMD_SET_COOLING, data=data)                                                                                                                                                                                                                                        
  File "/usr/local/lib/python3.7/dist-packages/liquidctl/driver/hydro_platinum.py", line 331, in _send_command                                                                                                                                                                                                      
    buf = bytes(self.device.read(_REPORT_LENGTH))                                                                                                                                                                                                                                                                   
  File "/usr/local/lib/python3.7/dist-packages/liquidctl/driver/usb.py", line 399, in read                                                                                                                                                                                                                          
    data = self.hiddev.read(length)                                                                                                                                                                                                                                                                                 
  File "hidraw.pyx", line 124, in hidraw.device.read                                                                                                                                                                                                                                                                
OSError: read error                                                                                                                                                                                                                                                                                                 
                                                                                                                                                                                                                                                                                                                    
During handling of the above exception, another exception occurred:                                                                                                                                                                                                                                                 
                                                                                                                                                                                                                                                                                                                    
Traceback (most recent call last):                                                                                                                                                                                                                                                                                  
  File "/usr/local/bin/liquidctl", line 10, in <module>                                                                                                                                                                                                                                                             
    sys.exit(main())                                                                                                                                                                                                                                                                                                
  File "/usr/local/lib/python3.7/dist-packages/liquidctl/cli.py", line 300, in main                                                                                                                                                                                                                                 
    _print_dev_status(dev, dev.initialize(**opts))                                                                                                                                                                                                                                                                  
KeyboardInterrupt                                                                                                                                 
root@pve:~# /usr/local/bin/liquidctl set fan speed 20 10 30  50 50 95 -g                                                                                                                                                                                                                                            
[DEBUG] liquidctl.cli: running liquidctl v1.4.2                                                                                                                                                                                                                                                                     
[DEBUG] liquidctl.driver.usb: searching HidapiBus (api=hidraw, drivers=[CorsairHidPsu, HydroPlatinum, Kraken2, KrakenX3, KrakenZ3, NzxtEPsu, RgbFusion2, SmartDevice, SmartDevice2, _CommonSmartDeviceDriver])                                                                                                      
[DEBUG] liquidctl.driver.usb: probing drivers for device 1b1c:0c20                                                                                                                                                                                                                                                  
[DEBUG] liquidctl.driver.usb: instanced driver for Corsair H100i PRO XT (experimental)                                                                                                                                                                                                                              
[DEBUG] liquidctl.driver.usb: searching PyUsbBus (drivers=[Hydro690Lc, Legacy690Lc, Modern690Lc, _CommonAsetekDriver])                                                                                                                                                                                              
[DEBUG] liquidctl.driver.usb: probing drivers for device 1b1c:0c20                                                                                                                                                                                                                                                  
[DEBUG] liquidctl.driver.usb: probing drivers for device 8087:0024                                                                                                                                                                                                                                                  
[DEBUG] liquidctl.driver.usb: probing drivers for device 1d6b:0002                                                                                                                                                                                                                                                  
[DEBUG] liquidctl.driver.usb: probing drivers for device 8087:0024                                                                                                                                                                                                                                                  
[DEBUG] liquidctl.driver.usb: probing drivers for device 1d6b:0002                                                                                                                                                                                                                                                  
[DEBUG] liquidctl.cli: device: Corsair H100i PRO XT (experimental)                                                                                                                                                                                                                                                  
[DEBUG] liquidctl.keyval: data in /run/user/0/liquidctl/vid1b1c_pid0c20/loc0                                                                                                                                                                                                                                        
[DEBUG] liquidctl.keyval: stored fan1_mode=0 (in /run/user/0/liquidctl/vid1b1c_pid0c20/loc0/fan1_mode)                                                                                                                                                                                                              
[DEBUG] liquidctl.keyval: stored fan1_profile=[(20, 10), (30, 50), (50, 95)] (in /run/user/0/liquidctl/vid1b1c_pid0c20/loc0/fan1_profile)                                                                                                                                                                           
[DEBUG] liquidctl.keyval: stored fan2_mode=0 (in /run/user/0/liquidctl/vid1b1c_pid0c20/loc0/fan2_mode)                                                                                                                                                                                                              
[DEBUG] liquidctl.keyval: stored fan2_profile=[(20, 10), (30, 50), (50, 95)] (in /run/user/0/liquidctl/vid1b1c_pid0c20/loc0/fan2_profile)                                                                                                                                                                           
[INFO] liquidctl.driver.hydro_platinum: setting fan1 to follow profile [(20, 10), (30, 50), (50, 95), (60, 100), (60, 100), (60, 100), (60, 100)]                                                                                                                                                                   
[INFO] liquidctl.driver.hydro_platinum: setting fan2 to follow profile [(20, 10), (30, 50), (50, 95), (60, 100), (60, 100), (60, 100), (60, 100)]                                                                                                                                                                   
[DEBUG] liquidctl.keyval: loaded pump_mode=0 (from /run/user/0/liquidctl/vid1b1c_pid0c20/loc0/pump_mode)                                                                                                                                                                                                            
[INFO] liquidctl.driver.hydro_platinum: setting pump mode to quiet                                                                                                                                                                                                                                                  
[DEBUG] liquidctl.keyval: loaded sequence=28 (from /run/user/0/liquidctl/vid1b1c_pid0c20/loc0/sequence)                                                                                                                                                                                                             
[DEBUG] liquidctl.keyval: stored sequence=29 (in /run/user/0/liquidctl/vid1b1c_pid0c20/loc0/sequence)                                                                                                                                                                                                               
[DEBUG] liquidctl.driver.usb: discarded 0 previously enqueued reports                                                                                                                                                                                                                                               
[DEBUG] liquidctl.driver.usb: writting report 0x00 with 64 bytes: 3f:e8:14:00:ff:05:ff:ff:ff:ff:ff:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:07:14:1a:1e:80:32:f2:3c:ff:3c:ff:3c:ff:3c:ff:14:1a:1e:80:32:f2:3c:ff:3c:ff:3c:ff:3c:ff:00:00:00:00:00:c1                                                   
^CTraceback (most recent call last):                                                                                                                                                                                                                                                                                
  File "/usr/local/lib/python3.7/dist-packages/liquidctl/cli.py", line 304, in main                                                                                                                                                                                                                                 
    _device_set_speed(dev, args, **opts)                                                                                                                                                                                                                                                                            
  File "/usr/local/lib/python3.7/dist-packages/liquidctl/cli.py", line 214, in _device_set_speed                                                                                                                                                                                                                    
    dev.set_speed_profile(args['<channel>'], profile, **opts)                                                                                                                                                                                                                                                       
  File "/usr/local/lib/python3.7/dist-packages/liquidctl/driver/hydro_platinum.py", line 223, in set_speed_profile                                                                                                                                                                                                  
    self._send_set_cooling()                                                                                                                                                                                                                                                                                        
  File "/usr/local/lib/python3.7/dist-packages/liquidctl/driver/hydro_platinum.py", line 360, in _send_set_cooling                                                                                                                                                                                                  
    return self._send_command(_FEATURE_COOLING, _CMD_SET_COOLING, data=data)                                                                                                                                                                                                                                        
  File "/usr/local/lib/python3.7/dist-packages/liquidctl/driver/hydro_platinum.py", line 331, in _send_command                                                                                                                                                                                                      
    buf = bytes(self.device.read(_REPORT_LENGTH))                                                                                                                                                                                                                                                                   
  File "/usr/local/lib/python3.7/dist-packages/liquidctl/driver/usb.py", line 399, in read                                                                                                                                                                                                                          
    data = self.hiddev.read(length)                                                                                                                                                                                                                                                                                 
  File "hidraw.pyx", line 124, in hidraw.device.read                                                                                                                                                                                                                                                                
OSError: read error                                                                                                                                                                                                                                                                                                 
                                                                                                                                                                                                                                                                                                                    
During handling of the above exception, another exception occurred:                                                                                                                                                                                                                                                 
                                                                                                                                                                                                                                                                                                                    
Traceback (most recent call last):                                                                                                                                                                                                                                                                                  
  File "/usr/local/bin/liquidctl", line 10, in <module>                                                                                                                                                                                                                                                             
    sys.exit(main())                                                                                                                                                                                                                                                                                                
  File "/usr/local/lib/python3.7/dist-packages/liquidctl/cli.py", line 304, in main                                                                                                                                                                                                                                 
    _device_set_speed(dev, args, **opts)                                                                                                                                                                                                                                                                            
KeyboardInterrupt                                                                                                                                                           

Update from @jonasmalacofilho:

This is now being tracked by issue #298 ("Synchronized access to devices"), where several problems with obvious solutions have already been pointed out. New comments should be directed there.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugApparent bug in liquidctl

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions