The rpm of Jetson NANO is abnormal

I have a custom-designed carrier board for NANO. I use 12V FAN(maximum rpm: 5000 RPM) and level shift circuit on PWM and tach signal(5V level). Sometimes I will read extremely high rpm.
How can I read the normal rpm?

nvidia@tegra-ubuntu:~$ cat /sys/class/hwmon/hwmon1/rpm_measured 
272727
nvidia@tegra-ubuntu:~$ cat /sys/devices/pwm-fan/target_pwm
120
nvidia@tegra-ubuntu:~$ cat /sys/class/hwmon/hwmon1/rpm_measured 
263157
nvidia@tegra-ubuntu:~$ cat  /sys/class/hwmon/hwmon1/tach_enable 
1
nvidia@tegra-ubuntu:~$ cat /sys/class/hwmon/hwmon1/rpm_measured 
265486
nvidia@tegra-ubuntu:~$ echo 160 | sudo tee /sys/devices/pwm-fan/target_pwm
[sudo] password for nvidia: 
160
nvidia@tegra-ubuntu:~$ cat /sys/class/hwmon/hwmon1/rpm_measured 
66371
nvidia@tegra-ubuntu:~$ cat /sys/class/hwmon/hwmon1/rpm_measured 
65789
nvidia@tegra-ubuntu:~$ cat /sys/class/hwmon/hwmon1/rpm_measured 
48622
nvidia@tegra-ubuntu:~$ cat /sys/class/hwmon/hwmon1/rpm_measured 
4133
nvidia@tegra-ubuntu:~$ cat /sys/class/hwmon/hwmon1/rpm_measured 
4135
nvidia@tegra-ubuntu:~$ echo 150 | sudo tee /sys/devices/pwm-fan/target_pwm
150
nvidia@tegra-ubuntu:~$ cat /sys/class/hwmon/hwmon1/rpm_measured 
3963
nvidia@tegra-ubuntu:~$ cat /sys/class/hwmon/hwmon1/rpm_measured 
3944
nvidia@tegra-ubuntu:~$ cat /sys/class/hwmon/hwmon1/rpm_measured 
3943
nvidia@tegra-ubuntu:~$ echo 140 | sudo tee /sys/devices/pwm-fan/target_pwm
140
nvidia@tegra-ubuntu:~$ cat /sys/class/hwmon/hwmon1/rpm_measured 
51369
nvidia@tegra-ubuntu:~$ cat /sys/class/hwmon/hwmon1/rpm_measured 
3785
nvidia@tegra-ubuntu:~$ cat /sys/class/hwmon/hwmon1/rpm_measured 
3779
nvidia@tegra-ubuntu:~$ echo 120 | sudo tee /sys/devices/pwm-fan/target_pwm
120
nvidia@tegra-ubuntu:~$ cat /sys/class/hwmon/hwmon1/rpm_measured 
32679
nvidia@tegra-ubuntu:~$ cat /sys/class/hwmon/hwmon1/rpm_measured 
37128
nvidia@tegra-ubuntu:~$ cat /sys/class/hwmon/hwmon1/rpm_measured 
60975
nvidia@tegra-ubuntu:~$ echo 90 | sudo tee /sys/devices/pwm-fan/target_pwm
90
nvidia@tegra-ubuntu:~$ cat /sys/class/hwmon/hwmon1/rpm_measured 
23622
nvidia@tegra-ubuntu:~$ cat /sys/class/hwmon/hwmon1/rpm_measured 
112781

hello myers,

may I know which Jetpack release version you’re working with?
it’s sysfs for recording the rpm value, could you please dig into kernel driver,
please examine pwm_val it’s setting correctly within the driver side.
i.e. $public_soruces/kernel_src/kernel/nvidia/drivers/thermal/pwm_fan.c

Hi Jerry,

The pwm seems to be set correctly but the rpm is abnormal.

static ssize_t fan_target_pwm_store(struct device *dev,
			struct device_attribute *attr, const char *buf,
			size_t count)
{
	struct fan_dev_data *fan_data = dev_get_drvdata(dev);
	int ret, target_pwm = -1;

	ret = sscanf(buf, "%d", &target_pwm);
	if ((ret <= 0) || (!fan_data) || (target_pwm < 0))
		return -EINVAL;
	mutex_lock(&fan_data->fan_state_lock);
	if (target_pwm > fan_data->fan_cap_pwm)
		target_pwm = fan_data->fan_cap_pwm;
	dev_err(dev, "Debug: target_pwm =%d\n", target_pwm);
	fan_update_target_pwm(fan_data, target_pwm);
	mutex_unlock(&fan_data->fan_state_lock);

	return count;
}

hello myers,

may I also know which Jetpack release version you’re working with?
please check release tag, $ cat /etc/nv_tegra_release for confirmation.

Hi Jerry,

Sorry, I use Jetpack4.6.2 .

nvidia@tegra-ubuntu:~$ cat /etc/nv_tegra_release
# R32 (release), REVISION: 7.2, GCID: 30192233, BOARD: t210ref, EABI: aarch64, DATE: Wed Apr 20 21:34:48 UTC 2022

Hi Jerry,

Do you have any update about the problem?

hello myers

may I know the DT code snippets or relevant drivers for your rpm reading.

Hi Jerry,

The attachment is my device tree and I don’t modify any drivers. I only use sysfs to get the fan rpm.
tegra210-p3448-0002-p3449-0000-b00.dts (321.8 KB)

please double check you’ve use fan with 5V, also make sure their connections are proper.
Pin1 → GND
Pin 2 → 5V
Pin 3 → Tach
Pin 4 → PWM

RPM measurement should work after proper fan with proper connections used and enable tach from software (i.e. # echo 1 > tach_enable)

Hi Jerry,

Yes, I use level shift circuit and the pin define is same with yours. You can find the tach_enable is 1 in the log.

Sorry for the late response, is this still an issue to support? Thanks

Hi kaycc,

Sure, I don’t find any solution yet. Do you have any suggestions?