-
Notifications
You must be signed in to change notification settings - Fork 263
Description
I've recently upgraded my NZXT H1 to the V2 revision due airflow concerns and sadly discovered that the AIO cooling solution is now bound to an internal Smart Device instead of the usual fan/pump motherboard headers. The hub is connected via a USB 2.0 header an powered using a SATA connector. It does have three headers, two for the fans (a 140 mm rad fan and a 92 mm GPU exhaust one) and one for the AIO pump. Tested it using NZXT CAM and apparently only fans speeds can be be changed, the pump is greyed out. Instead readings for both fans and pump speeds are available. I've tried sniffing the USB traffic using a Windows VM but didn't get a lot out of it: opening CAM spits out some initialization stuff but then there was nothing I could do in the interface. The various options did not apply and no USB traffic was sent at all... I think CAM went nuts due to both CPU and GPU temps being unknown in the VM. I might try installing Windows on bare metal later.
Anyway, I did a quick guess and added the device to the Smart Device V2s as
(0x1e71, 0x2015, None, 'NZXT H1 V2', {
'speed_channel_count': 2,
'color_channel_count': 0
})
then prevented the initialization from parsing LEDs as there are none
parsers = {b'\x11\x01': parse_firm_info}
if self.product_id not in [0x2015]:
parsers[b'\x21\x03']: parse_led_info
self._read_until(parsers)
Seems to be working fine, it does initialize and I can write/read both fan speeds. This is just a quick PoC, it should probably have its own implementation as it is a mix of both a Smart Device V2 and an AIO cooler (a rebranded Kraken I guess?).
$ liquidctl initialize
NZXT H1 V2
└── Firmware version 1.10.0
$ liquidctl status
NZXT H1 V2
├── Fan 1 control mode PWM
├── Fan 1 duty 60 %
├── Fan 1 speed 1282 rpm
├── Fan 2 control mode PWM
├── Fan 2 duty 60 %
└── Fan 2 speed 1293 rpm
Device type: Smart Device with AIO and fan headers
Product page: https://nzxt.com/product/h1
First-party software: NZXT CAM
Other commonly used tools: None
The device appears to support the following features:
- monitoring of temperatures or other environment sensors: Maybe?
- monitoring of fan or pump speeds or duty cycles: Yes
- monitoring of voltages, currents or power: No
- configurable fan or pump speeds: Yes
- configurable voltages or current/power limits: No
- configurable lighting of embedded LEDs: No
- configurable lighting of accessories like RGB fans or LED strips: No
The device is physically connected to the host system using:
- USB: No
- PCI-E: No
- onboard the motherboard: USB 2.0 header
- other: No
The device uses which protocols to communicate with the host system:
- HID: No
- USB: Yes
- I²C: No
- SMBus: No
- other: No
$ lsusb -d 1e71:2015 -v
Bus 001 Device 004: ID 1e71:2015 NZXT NZXT H1 V2
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 0
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 64
idVendor 0x1e71 NZXT
idProduct 0x2015
bcdDevice 1.0a
iManufacturer 1 NZXT, Inc.
iProduct 2 NZXT H1 V2
iSerial 3 0D022013ABABBC855F8F1894
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 0x0029
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 0
bmAttributes 0xc0
Self Powered
MaxPower 100mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 2
bInterfaceClass 3 Human Interface Device
bInterfaceSubClass 0
bInterfaceProtocol 0
iInterface 0
HID Device Descriptor:
bLength 9
bDescriptorType 33
bcdHID 1.00
bCountryCode 0 Not supported
bNumDescriptors 1
bDescriptorType 34 Report
wDescriptorLength 236
Report Descriptors:
** UNAVAILABLE **
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 1
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x02 EP 2 OUT
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 1
Device Qualifier (for other device speed):
bLength 10
bDescriptorType 6
bcdUSB 2.00
bDeviceClass 0
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 64
bNumConfigurations 0
Device Status: 0x0001
Self Powered
Finally, I can help with:
- testing changes on Linux: Yes
- testing changes on Windows: Yes
- testing changes on Mac OS: No
- attempting to capture USB traffic: Yes1
- attempting to capture I²C/SMBus traffic: Yes1
- analyzing traffic data: Yes1
- documenting the protocol: Yes
- implementing the driver: Yes
1assuming documentation and/or assistance will be provided.