Skip to content

Instantly share code, notes, and snippets.

@jonasmalacofilho
Last active October 4, 2023 17:11
Show Gist options
  • Star 13 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save jonasmalacofilho/262f382ccca8f414da64d161b9bc081f to your computer and use it in GitHub Desktop.
Save jonasmalacofilho/262f382ccca8f414da64d161b9bc081f to your computer and use it in GitHub Desktop.

How the NZXT Hue+ works

Also applies to the NZXT Smart Device

TL; DR

Hue+ accessories use WS2812B integrated LED and controllers. Pinout is:

  • +5V (marked with arrow; corresponding wire with white stripe)
  • IN (data in)
  • GND (ground)
  • FD (accessory detection)

Each accessory bridges FD and GND with a resistor. Device recognition is done by measuring the resistance between FD and GND:

  • 10-LED NZXT Hue+ strip: 10 kOhm per strip
  • 8-LED NZXT Aer fan: 1.6 kOhm per fan (inferred)
  • only type of device is assumed to exist per channel

Tests

Resistance: 10 kOhm

CAM: 1 strip connected

liquidctl:

[DEBUG] liquidctl.driver.nzxt_smart_device: received 04 3e 00 05 4d 00 00 0c 04 00 02 01 00 00 07 22 00 01 a4 1e 00
[DEBUG] liquidctl.driver.nzxt_smart_device: received 04 3a 00 05 4d 00 00 0c 04 00 02 01 00 00 07 02 00 01 a4 1e 00
[DEBUG] liquidctl.driver.nzxt_smart_device: received 04 3a 00 05 33 00 00 0b 5b 00 03 01 00 00 07 12 01 01 a4 1e 00
LED accessories                1
LED accessory type    Hue+ Strip

Resistance: 420 Ohm

CAM: 4 fans connected

liquidctl:

[DEBUG] liquidctl.driver.nzxt_smart_device: received 04 3a 00 05 6e 00 00 0c 04 00 02 01 00 00 07 22 08 04 a4 1e 00
[DEBUG] liquidctl.driver.nzxt_smart_device: received 04 3a 00 05 52 00 00 0b 5b 00 03 01 00 00 07 02 08 04 a4 1e 00
[DEBUG] liquidctl.driver.nzxt_smart_device: received 04 38 00 05 38 00 00 0b 5b 00 00 01 00 00 07 12 09 04 a4 1e 00
LED accessories                4
LED accessory type       Aer RGB
More

Resistance: infinite

CAM: no accessories connected

liquidctl:

[DEBUG] liquidctl.driver.nzxt_smart_device: received 04 38 00 05 3d 00 00 0b 5b 00 01 01 00 00 07 12 01 00 a4 1e 00
[DEBUG] liquidctl.driver.nzxt_smart_device: received 04 36 00 05 48 00 00 0c 04 00 03 01 00 00 07 22 00 00 a4 1e 00
[DEBUG] liquidctl.driver.nzxt_smart_device: received 04 36 00 05 58 00 00 0c 04 00 03 01 00 00 07 02 00 00 a4 1e 00
LED accessories                0

Note: the LEDs (might) still turn on.

Resistance: (too close to) zero

tested with ~160 Ohm

CAM: 15 accessories connected (type seems to remain from last valid state)

liquidctl:

[DEBUG] liquidctl.driver.nzxt_smart_device: received 04 3a 00 05 74 00 00 0c 04 00 02 01 00 00 07 22 08 ff a4 1e 00
[DEBUG] liquidctl.driver.nzxt_smart_device: received 04 38 00 05 58 00 00 0b 5b 00 02 01 00 00 07 02 08 ff a4 1e 00
[DEBUG] liquidctl.driver.nzxt_smart_device: received 04 3a 00 05 42 00 00 0b 5b 00 02 01 00 00 07 12 09 ff a4 1e 00
LED accessories              255
LED accessory type       Aer RGB

Note: the LEDs (might) still turn on.

Resistance: 1.2 kOhm

CAM: 2 fans connected

liquidctl:

[DEBUG] liquidctl.driver.nzxt_smart_device: received 04 36 00 05 6e 00 00 0c 04 00 02 01 00 00 07 22 08 02 a4 1e 00
[DEBUG] liquidctl.driver.nzxt_smart_device: received 04 38 00 05 4d 00 00 0c 04 00 02 01 00 00 07 02 08 02 a4 1e 00
[DEBUG] liquidctl.driver.nzxt_smart_device: received 04 38 00 05 3d 00 00 0b 5b 00 02 01 00 00 07 12 09 02 a4 1e 00
LED accessories                2
LED accessory type       Aer RGB

Resistance: 560 Ohm

CAM: 3 fans connected

liquidctl:

[DEBUG] liquidctl.driver.nzxt_smart_device: received 04 3a 00 05 42 00 00 0b 5b 00 01 01 00 00 07 12 09 03 a4 1e 00
[DEBUG] liquidctl.driver.nzxt_smart_device: received 04 38 00 05 68 00 00 0c 04 00 02 01 00 00 07 22 08 03 a4 1e 00
[DEBUG] liquidctl.driver.nzxt_smart_device: received 04 3a 00 05 58 00 00 0c 04 00 03 01 00 00 07 02 08 03 a4 1e 00
LED accessories                3
LED accessory type       Aer RGB

Resistance: 1.7 kOm

CAM: 1 fan connected

liquidctl:

[DEBUG] liquidctl.driver.nzxt_smart_device: received 04 38 00 05 58 00 00 0c 04 00 02 01 00 00 07 22 08 01 a4 1e 00
[DEBUG] liquidctl.driver.nzxt_smart_device: received 04 38 00 05 48 00 00 0b 5b 00 03 01 00 00 07 02 08 01 a4 1e 00
[DEBUG] liquidctl.driver.nzxt_smart_device: received 04 38 00 05 1f 00 00 0b 5b 00 04 01 00 00 07 12 09 01 a4 1e 00
LED accessories                1
LED accessory type       Aer RGB

Resistance: 2.04 kOhm

CAM: 4 strips connected

liquidctl:

[DEBUG] liquidctl.driver.nzxt_smart_device: received 04 3a 00 04 e1 00 00 0b 5b 00 03 01 00 00 07 22 00 04 a4 1e 00
[DEBUG] liquidctl.driver.nzxt_smart_device: received 04 3a 00 04 d8 00 00 0b 5b 00 03 01 00 00 07 02 00 04 a4 1e 00
[DEBUG] liquidctl.driver.nzxt_smart_device: received 04 3a 00 04 ea 00 00 0b 5b 00 00 01 00 00 07 12 01 04 a4 1e 00
LED accessories                4
LED accessory type    Hue+ Strip

Resistance: 1.8 kOhm

CAM: 1 fan connected

liquidctl:

[DEBUG] liquidctl.driver.nzxt_smart_device: received 04 36 00 05 74 00 00 0c 04 00 02 01 00 00 07 22 08 01 a4 1e 00
[DEBUG] liquidctl.driver.nzxt_smart_device: received 04 36 00 05 58 00 00 0c 04 00 02 01 00 00 07 02 08 01 a4 1e 00
[DEBUG] liquidctl.driver.nzxt_smart_device: received 04 36 00 05 38 00 00 0b 5b 00 00 01 00 00 07 12 09 01 a4 1e 00
LED accessories                1
LED accessory type       Aer RGB

Resistance: 1.9 kOhm

CAM: 1 fan connected

liquidctl:

[DEBUG] liquidctl.driver.nzxt_smart_device: received 04 3a 00 04 fd 00 00 0b 5b 00 00 01 00 00 07 12 09 01 a4 1e 00
[DEBUG] liquidctl.driver.nzxt_smart_device: received 04 38 00 04 cf 00 00 0c 04 00 01 01 00 00 07 22 08 01 a4 1e 00
[DEBUG] liquidctl.driver.nzxt_smart_device: received 04 38 00 04 be 00 00 0b 5b 00 04 01 00 00 07 02 08 01 a4 1e 00
LED accessories                1
LED accessory type       Aer RGB

Resistance: 1.97 kOhm

CAM: 4 strips connected

liquidctl:

[DEBUG] liquidctl.driver.nzxt_smart_device: received 04 3a 00 05 48 00 00 0c 04 00 01 01 00 00 07 22 00 04 a4 1e 00
[DEBUG] liquidctl.driver.nzxt_smart_device: received 04 38 00 05 38 00 00 0b 5b 00 04 01 00 00 07 02 00 04 a4 1e 00
[DEBUG] liquidctl.driver.nzxt_smart_device: received 04 36 00 05 29 00 00 0b 5b 00 02 01 00 00 07 12 01 04 a4 1e 00
LED accessories                4
LED accessory type    Hue+ Strip

Resistance: 320 Ohm

CAM: 5 fans connected

[DEBUG] liquidctl.driver.nzxt_smart_device: received 04 40 00 05 74 00 00 0c 04 00 02 01 00 00 07 22 08 05 a4 1e 00
[DEBUG] liquidctl.driver.nzxt_smart_device: received 04 3c 00 05 52 00 00 0b 5b 00 04 01 00 00 07 02 08 05 a4 1e 00
[DEBUG] liquidctl.driver.nzxt_smart_device: received 04 3c 00 05 3d 00 00 0b 5b 00 05 01 00 00 07 12 09 05 a4 1e 00
LED accessories                5
LED accessory type       Aer RGB

Additional tests and fan recognition summary

Resistance: 1700 Ohm => 1 fan
Resistance: 1364 Ohm => 1 fans
Resistance: 1200 Ohm => 2 fans
Resistance: 560 Ohm => 3 fans
Resistance: 461 Ohm => 3 fans
Resistance: 445 Ohm => 4 fans
Resistance: 420 Ohm => 4 fan
Resistance: 384 Ohm => 4 fans
Resistance: 363 Ohm => 5 fans

barrier 5-4: ~370 Ohm
barrier 4-3: ~450 Ohm
expected impedance for 4 fans: ~410 Ohm
expected impedance for 1 fan: ~1640 Ohm

Final resistance table

Impedance (kOhm) Accessory type Accessory count
10.0 Strip 1
5.00 Strip 2
3.30 Strip 3
2.50 Strip 4
1.60 Fan 1
0.80 Fan 2
0.54 Fan 3
0.40 Fan 4
0.32 Fan 5

Old data

10 kOhm strip + 1+ kOhm resistor => 2 fans

[DEBUG] liquidctl.driver.nzxt_smart_device: received 04 3c 00 06 2d 00 00 0b 5b 00 03 01 00 00 07 02 08 02 00 1e 00
[DEBUG] liquidctl.driver.nzxt_smart_device: received 04 3e 00 05 d4 00 00 0b 5b 00 05 01 00 00 07 12 09 02 00 1e 00
[DEBUG] liquidctl.driver.nzxt_smart_device: received 04 3c 00 06 3c 00 00 0b 5b 00 04 01 00 00 07 22 08 02 00 1e 00

10 kOhm strip => 1 strip

[DEBUG] liquidctl.driver.nzxt_smart_device: received 04 3e 00 07 71 00 00 0c 04 00 00 01 00 00 07 10 01 01 00 1e 00
[DEBUG] liquidctl.driver.nzxt_smart_device: received 04 3e 00 07 20 00 00 0c 04 00 00 01 00 00 07 20 00 01 00 1e 00
[DEBUG] liquidctl.driver.nzxt_smart_device: received 04 3c 00 06 cd 00 00 0c 04 00 00 01 00 00 07 00 00 01 00 1e 00

10 kOhm strip + 1+ kOhm resistor + 1+ kOhm resistor => 3 fans

[DEBUG] liquidctl.driver.nzxt_smart_device: received 04 3e 00 05 58 00 00 0b 5b 00 00 01 00 00 07 10 09 03 00 1e 00
[DEBUG] liquidctl.driver.nzxt_smart_device: received 04 3a 00 05 68 00 00 0c 04 00 00 01 00 00 07 20 08 03 00 1e 00
[DEBUG] liquidctl.driver.nzxt_smart_device: received 04 3c 00 05 15 00 00 0c 04 00 00 01 00 00 07 00 08 03 00 1e 00

10 kOhm strip + 10 kOhm strip => 2 strips

[DEBUG] liquidctl.driver.nzxt_smart_device: received 04 3c 00 06 11 00 00 0b 5b 00 01 01 00 00 07 12 01 02 00 1e 00
[DEBUG] liquidctl.driver.nzxt_smart_device: received 04 3e 00 06 35 00 00 0b 5b 00 03 01 00 00 07 22 00 02 00 1e 00
[DEBUG] liquidctl.driver.nzxt_smart_device: received 04 3c 00 05 e8 00 00 0b 5b 00 03 01 00 00 07 02 00 02 00 1e 00

Links

Old blog post
Reddit comment
liquidctl (for the Smart Device)
hue-plus (for the Hue+ controller)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment