kraken2: report modern firmware versions in simplified form
The different ways the firmware version is reported by liquidctl and CAM causes some confusion, of at least surprise; CAM uses a simplified 2-digit form since the migration to the unified 5.x/6.x firmware. Change how liquidctl reports the version for modern firmware to match CAM, but retain the 3-digit form for 2.x/3.x firmware [and earlier]. Also log the raw firmware tuple with debug level.
This commit is contained in:
parent
622d83c428
commit
12f7853e3c
|
@ -22,7 +22,7 @@ NZXT Smart Device (V1)
|
|||
└── LED count (total) 20
|
||||
|
||||
NZXT Kraken X (X42, X52, X62 or X72)
|
||||
└── Firmware version 6.0.2
|
||||
└── Firmware version 6.2
|
||||
|
||||
# liquidctl status
|
||||
NZXT Smart Device (V1)
|
||||
|
|
|
@ -27,7 +27,7 @@ suspended state, or if there have been hardware changes.
|
|||
```
|
||||
# liquidctl initialize
|
||||
NZXT Kraken X (X42, X52, X62 or X72)
|
||||
└── Firmware version 6.0.2
|
||||
└── Firmware version 6.2
|
||||
```
|
||||
|
||||
With this generation of Kraken X coolers, it is especially important that
|
||||
|
|
|
@ -19,7 +19,7 @@ NZXT Smart Device (V1)
|
|||
└── LED count (total) 20
|
||||
|
||||
NZXT Kraken X (X42, X52, X62 or X72)
|
||||
└── Firmware version 6.0.2
|
||||
└── Firmware version 6.2
|
||||
|
||||
# liquidctl status
|
||||
NZXT Smart Device (V1)
|
||||
|
|
|
@ -41,7 +41,7 @@ _STATUS_FAN_SPEED = 'Fan speed'
|
|||
_STATUS_PUMP_SPEED = 'Pump speed'
|
||||
_STATUS_FWVERSION = 'Firmware version'
|
||||
|
||||
# more aggressive than observed 4.0.3 and 6.0.2 firmware defaults
|
||||
# more aggressive than observed 4.0.3 and 6.2 firmware defaults
|
||||
_RESET_FAN_PROFILE = [(20, 25), (30, 50), (50, 90), (60, 100)]
|
||||
_RESET_PUMP_PROFILE = [(20, 50), (30, 60), (40, 90), (50, 100)]
|
||||
|
||||
|
@ -133,8 +133,14 @@ class Kraken2(UsbHidDriver):
|
|||
self.set_speed_profile('fan', _RESET_FAN_PROFILE)
|
||||
self.set_speed_profile('pump', _RESET_PUMP_PROFILE)
|
||||
|
||||
firmware = '{}.{}.{}'.format(*self.firmware_version)
|
||||
return [('Firmware version', firmware, '')]
|
||||
fw = self.firmware_version
|
||||
_LOGGER.debug('raw firmware version: %r', fw)
|
||||
|
||||
# after the transition to the unified 5.x/6.x firmware, NZXT/CAM
|
||||
# simplified how they reports the firmware version from its raw
|
||||
# 4-component form
|
||||
fw_human = f'{fw[0]}.{fw[3]}' if fw[0] >= 5 else f'{fw[0]}.{fw[2]}.{fw[3]}'
|
||||
return [('Firmware version', fw_human, '')]
|
||||
|
||||
def _get_status_directly(self):
|
||||
msg = self._read()
|
||||
|
@ -266,7 +272,7 @@ class Kraken2(UsbHidDriver):
|
|||
|
||||
@property
|
||||
def supports_cooling_profiles(self):
|
||||
return self.supports_cooling and self.firmware_version >= (3, 0, 0)
|
||||
return self.supports_cooling and self.firmware_version[0] >= 3
|
||||
|
||||
@property
|
||||
def firmware_version(self):
|
||||
|
@ -278,7 +284,7 @@ class Kraken2(UsbHidDriver):
|
|||
if clear_first:
|
||||
self.device.clear_enqueued_reports()
|
||||
msg = self.device.read(_READ_LENGTH)
|
||||
self._firmware_version = (msg[0xb], msg[0xc] << 8 | msg[0xd], msg[0xe])
|
||||
self._firmware_version = tuple(msg[0xb:0xf])
|
||||
return msg
|
||||
|
||||
def _write(self, data):
|
||||
|
|
|
@ -17,7 +17,7 @@ def mockKrakenXDevice():
|
|||
|
||||
@pytest.fixture
|
||||
def mockOldKrakenXDevice():
|
||||
device = _MockKrakenDevice(fw_version=(2, 5, 8))
|
||||
device = _MockKrakenDevice(fw_version=(2, 1, 8))
|
||||
dev = Kraken2(device, 'Mock X62', device_type=Kraken2.DEVICE_KRAKENX)
|
||||
|
||||
dev.connect()
|
||||
|
@ -72,7 +72,13 @@ def test_kraken_connect(mockKrakenXDevice):
|
|||
def test_kraken_initialize(mockKrakenXDevice):
|
||||
(fw_ver,) = mockKrakenXDevice.initialize()
|
||||
|
||||
assert fw_ver[1] == '6.0.2'
|
||||
assert fw_ver[1] == '6.2'
|
||||
|
||||
|
||||
def test_old_kraken_initialize(mockOldKrakenXDevice):
|
||||
(fw_ver,) = mockOldKrakenXDevice.initialize()
|
||||
|
||||
assert fw_ver[1] == '2.1.8'
|
||||
|
||||
|
||||
@pytest.mark.parametrize('has_hwmon,direct_access', [(False, False), (True, True)])
|
||||
|
@ -144,7 +150,7 @@ def test_kraken_speed_profiles_not_supported(mockOldKrakenXDevice):
|
|||
|
||||
def test_krakenM_initialize(mockKrakenMDevice):
|
||||
(fw_ver,) = mockKrakenMDevice.initialize()
|
||||
assert fw_ver[1] == '6.0.2'
|
||||
assert fw_ver[1] == '6.2'
|
||||
|
||||
|
||||
def test_krakenM_get_status(mockKrakenMDevice):
|
||||
|
|
Loading…
Reference in New Issue