Jetson Nano Fan

Hi Andy,

I am trying to do the same, to essentially start my fan at start-up. Can you please share the step by step process of this on the terminal? Thanks

these screws seem a little big to fit in the holes on the heatsink. Am I missing something?

EDIT: Once i grabbed the hex tool, it finally went. Tight fit!

See here for some more sophisticated, automatic fan control:
https://devtalk.nvidia.com/default/topic/1055225/jetson-nano/automagic-fan-control-for-the-jetson-nano-is-here-/

Direct link to the repo:
https://github.com/Pyrestone/jetson-fan-ctl

Disclaimer: I am the creator of this software.
You can get it free of charge and it’s open source.

1 Like

Tried this on a new Nano (Linux jetbot 4.9.140-tegra #1 SMP PREEMPT Wed Mar 13 00:32:22 PDT 2019 aarch64 aarch64 aarch64 GNU/Linux) but didn’t work. However another Forum posting installed easily and works, https://devtalk.nvidia.com/default/topic/1055225/jetson-nano/automagic-fan-control-for-the-jetson-nano-is-here-/ at https://github.com/Pyrestone/jetson-fan-ctl.

I wanted to leave a note on my experience (for future Googlers). I got the Noctua NF-A4x20 5V PWM fan on amazon. I was a bit annoyed the screws that came with it didn’t fit (I believe the included ones are either self-tapping M4 or M5 screws), so you will have to order hardware. I didn’t want to tap into the aluminum fins with self-tapping M3s, so based on this article: https://noctua.at/en/which-is-the-best-fan-for-the-nvidia-jetson-nano, I went with M2.5x25mm button head cap screws and M2.5 nuts (from McMaster-Carr). However, the recommendation for 25mm screws really only applies for the M3 self tappers. The button heads of the M2.5 screws fall into the top, so if you do go this route, order some M2.5 washers to put on the top. However, I think the correct solution is to use a shorter screw (I would use SHCS rather than button head) and only use the bottom hole of the fan.

Agreed. I ended up using very small zipties, running them through the holes. That works great and still fits in an off-the-shelf case.

I bought these from home depot. Worked great.
Everbilt M3-0.5 x 16 mm Zinc Metric Socket Cap Screw (3-Piece)
https://www.homedepot.com/p/Everbilt-M3-0-5-x-16-mm-Zinc-Metric-Socket-Cap-Screw-3-Piece-803198/204373303

The way I understand it, you don’t need any additional software for dynamic fan control.
The built-in thermal management in the Jetson kernel will turn on the fan if the internal temperatures become too high.

1 Like

Agreed. Installing any third party software for this kind of thing, especially one that requires root, is a bad idea.

Hi, Author of said script here.

@snarky

It is correct that the jetson will turn on the fan above 51°C, along with some other thermal throttling measures. However, for me this was a bit too hot (as 51° will already be uncomfortable to touch), and I prefer my jetsons to be cooler.

@mdegans

Any tool controlling fan speed will require root access, as the hardware access requires root rights.
Mine is open-source, so you can make sure yourself that the software is not doing anything malicious, or improve it if you feel the desire to do so.

Please don’t misunderstand. I don’t have a problem with your script in particular. It’s just I feel it’s the kernel’s job, and if it’s not doing it properly somehow, the kernel source is the place for the change.

Sure, your script is necessarily open source, but lots of things that are open source get compromised all the time and most people never audit the source. I take no issue with your script in particular. I take issue with things that run as root in general.

Here are all the Jetson Nano thermal set points.
If you think the device runs too warm before turning on the fan, it should be as easy as finding the point you care about, and putting a lower value into it. (You might need to do this in a startup script for it to take effect after each reboot)
No outside-kernel changes needed.

root@jetson-nano:~# for i in /sys/devices/virtual/thermal/thermal_zone*/trip_point_*_temp; do ls -l $i; cat $i; done
-rw-rw-r-- 1 root root 4096 Aug  9 22:44 /sys/devices/virtual/thermal/thermal_zone0/trip_point_0_temp
110000
-rw-rw-r-- 1 root root 4096 Aug  9 22:44 /sys/devices/virtual/thermal/thermal_zone0/trip_point_10_temp
15000
-rw-rw-r-- 1 root root 4096 Aug  9 22:44 /sys/devices/virtual/thermal/thermal_zone0/trip_point_1_temp
-25000
-rw-rw-r-- 1 root root 4096 Aug  9 22:44 /sys/devices/virtual/thermal/thermal_zone0/trip_point_2_temp
15000
-rw-rw-r-- 1 root root 4096 Aug  9 22:44 /sys/devices/virtual/thermal/thermal_zone0/trip_point_3_temp
30000
-rw-rw-r-- 1 root root 4096 Aug  9 22:44 /sys/devices/virtual/thermal/thermal_zone0/trip_point_4_temp
50000
-rw-rw-r-- 1 root root 4096 Aug  9 22:44 /sys/devices/virtual/thermal/thermal_zone0/trip_point_5_temp
70000
-rw-rw-r-- 1 root root 4096 Aug  9 22:44 /sys/devices/virtual/thermal/thermal_zone0/trip_point_6_temp
105000
-rw-rw-r-- 1 root root 4096 Aug  9 22:44 /sys/devices/virtual/thermal/thermal_zone0/trip_point_7_temp
83000
-rw-rw-r-- 1 root root 4096 Aug  9 22:44 /sys/devices/virtual/thermal/thermal_zone0/trip_point_8_temp
15000
-rw-rw-r-- 1 root root 4096 Aug  9 22:44 /sys/devices/virtual/thermal/thermal_zone0/trip_point_9_temp
85000
-rw-rw-r-- 1 root root 4096 Aug  9 22:44 /sys/devices/virtual/thermal/thermal_zone1/trip_point_0_temp
102000
-rw-rw-r-- 1 root root 4096 Aug  9 22:44 /sys/devices/virtual/thermal/thermal_zone1/trip_point_1_temp
100500
-rw-rw-r-- 1 root root 4096 Aug  9 22:44 /sys/devices/virtual/thermal/thermal_zone1/trip_point_2_temp
97000
-rw-rw-r-- 1 root root 4096 Aug  9 22:44 /sys/devices/virtual/thermal/thermal_zone1/trip_point_3_temp
66000
-rw-rw-r-- 1 root root 4096 Aug  9 22:44 /sys/devices/virtual/thermal/thermal_zone1/trip_point_4_temp
86000
-rw-rw-r-- 1 root root 4096 Aug  9 22:44 /sys/devices/virtual/thermal/thermal_zone2/trip_point_0_temp
102500
-rw-rw-r-- 1 root root 4096 Aug  9 22:44 /sys/devices/virtual/thermal/thermal_zone2/trip_point_1_temp
101000
-rw-rw-r-- 1 root root 4096 Aug  9 22:44 /sys/devices/virtual/thermal/thermal_zone2/trip_point_2_temp
97500
-rw-rw-r-- 1 root root 4096 Aug  9 22:44 /sys/devices/virtual/thermal/thermal_zone3/trip_point_0_temp
70000
-rw-rw-r-- 1 root root 4096 Aug  9 22:44 /sys/devices/virtual/thermal/thermal_zone4/trip_point_0_temp
120000
-rw-rw-r-- 1 root root 4096 Aug  9 22:44 /sys/devices/virtual/thermal/thermal_zone5/trip_point_0_temp
0
-rw-rw-r-- 1 root root 4096 Aug  9 22:44 /sys/devices/virtual/thermal/thermal_zone5/trip_point_1_temp
51000
-rw-rw-r-- 1 root root 4096 Aug  9 22:44 /sys/devices/virtual/thermal/thermal_zone5/trip_point_2_temp
61000
-rw-rw-r-- 1 root root 4096 Aug  9 22:44 /sys/devices/virtual/thermal/thermal_zone5/trip_point_3_temp
71000
-rw-rw-r-- 1 root root 4096 Aug  9 22:44 /sys/devices/virtual/thermal/thermal_zone5/trip_point_4_temp
82000
-rw-rw-r-- 1 root root 4096 Aug  9 22:44 /sys/devices/virtual/thermal/thermal_zone5/trip_point_5_temp
140000
-rw-rw-r-- 1 root root 4096 Aug  9 22:44 /sys/devices/virtual/thermal/thermal_zone5/trip_point_6_temp
150000
-rw-rw-r-- 1 root root 4096 Aug  9 22:44 /sys/devices/virtual/thermal/thermal_zone5/trip_point_7_temp
160000
-rw-rw-r-- 1 root root 4096 Aug  9 22:44 /sys/devices/virtual/thermal/thermal_zone5/trip_point_8_temp
170000
-rw-rw-r-- 1 root root 4096 Aug  9 22:44 /sys/devices/virtual/thermal/thermal_zone5/trip_point_9_temp
180000

My suggestion is to find any values in the range [40000,59000] and setting them to 40000, as a first approximation.
You will note that thermal zone 0 has an … exciting … structure, that’s not particularly well documented anywhere – it’s not a linear curve, but a zig-zag of various trip points.
NVIDIA could do a better job by documenting what each of the zones are, and what each of the numbered trip points mean.

1 Like

We have made an plastic enclosure for Jetson nano board. Instead of placing the cooling fan on heat sink, can I connect the cooling fan on the side of the plastic enclosure as an exhaust fan?

Thanks.

Thank you :)

Thanks for this info.
In my case I find the system switches on the fan only when the AO temperature reaches 61C !
It sets the fan to 31% constant and cuts out when the temperature fall back 45C.

What changes should i make to have the trip point to 51C instead of 61C ?

For those ho tried to do this at startup and it doest work.
I have followed this link

And now is all good
$sudo nano /etc/rc.local
and paste this inside

#!/bin/bash
sleep 10
#sudo /usr/bin/jetson_clocks
sudo sh -c ‘echo 255 > /sys/devices/pwm-fan/target_pwm’
exit 0

Uncoment jetson_clocks if you need it at startup.

1 Like