I think I figured it out.
I remembered that both units (cold and hot) are plugged via a smart outlet which can also measure the power consumption. I decided to compare current’s consumption for both units while they idle, in a hope that the hot device will show more mA’s.
So, test conditions: both GX10 devices are headless and don’t have any wires connected except the power cords. Both are wirelessly connected to the same WiFi7 (6GHz) network, no active ssh/vnc sessions, no programs running, no external network traffic. Both now have the same EC and BIOS firmware versions - downgraded to the “cold” unit’s versions.
As it turns out in this configuration both devices consume the same power according to the outlet’s app - approximately 25W. Yet one of them stays cold and another heats up.
At this point I started thinking what common can be in running an app in a VNC session and connecting the monitor+key+mouse to the device. Yep, raising power consumption a bit. So I did more measurements:
- VNC session + System Monitor running: the unit consumes +8W, probably mainly due to drawing and continuously sending screen updates via WiFi radio
- Connecting a monitor (180Hz QHD) + key + mouse: the unit consumes +13W. This was a surprise to me until I realized that my keyboard has 105 LEDs and also it is connected via a USB hub in a laptop’s cooling pad with huge fans inside, hence enough load
I decided to do one extra test - no monitor, no VNC etc, but just connecting some USB load (5-10W) to the device. I was looking for a HDD in a USB3 enclosure when I realized that the phone I hold in my hands should be the perfect load. So I disabled fast charging and connected it to (already idle-hot) GX10. With the screen off the phone was adding around 9W to the unit’s consumption.
Predictably, the fan started rotating faster. And, the device quickly got to this state while continuning to charge the phone at the same time:
| N/A 38C P8 2W / N/A | Not Supported | 0% Default |
mt7925_phy0-pci-90100
Adapter: PCI adapter
temp1: N/A
acpitz-acpi-0
Adapter: ACPI interface
temp1: +40.8°C
temp2: +37.8°C
temp3: +37.9°C
temp4: +38.0°C
temp5: +37.9°C
temp6: +40.8°C
temp7: +38.5°C
nvme-pci-40100
Adapter: PCI adapter
Composite: +40.9°C (low = -5.2°C, high = +82.8°C)
(crit = +84.8°C)
Sensor 1: +40.9°C (low = -273.1°C, high = +65261.8°C)
\_TZ_.TSOC 40800
\_TZ_.TS0E 37800
\_TZ_.TS0P 37900
\_TZ_.TS1E 38000
\_TZ_.TS1P 37900
\_TZ_.TGPU 40800
\_TZ_.TUNC 38600
All these test results mean that at least in a low-power state DGX Spark has fan control based on unit’s power draw, not temperature readings.
Connecting any kind of load to the unit makes the fan to rotate faster. Similarly, increasing power usage on the device itself (like sending continuous flow of data via WiFi) also works.
This even explains why connecting a CX7 cable also workarounds the problem - CX7 NIC simply increases power consumption.
@dmayer1 Try to reproduce this results - instead of the monitor, try to connect and charge a smartphone via TypeC while the device overheats in idle.
To summarize, all this points to EC controller’s low fan curves being bound to the unit’s power consumption and not to the temperature. And maybe differences in thermal pasting/materials quality might produce variations in fan’s performance in a given RPM range, resulting in the same fan curves being insufficient for some devices.