We have a Technexion pico-imx7d with QCA wifi/bt in our device, and we're running Linux 4.9 build with Yocto (Technexion BSP).
We notice that during idling in linux the cpu load is approx 1-5%, but the core temp reaches 52°C which is a lot!
When we compare to Raspberry PI 3 (quad core), this idles at 42°C. Considering IMX7D is a low power chip, this outcome is far from expected. This becomes problematic for us when we deploy our devices in summer, when ambient temperature increases to over 65°C instead of the ambient temperature of approx 20-25°C that we currently have in our labs. The system will be triggered into shutdown!
I've noticed Application Notes such AN5317, AN5388 and i.MX Linux Reference Manual.
From what I can tell, dynamic cpu frequency scaling and DVFS is working, and cpu is running at 800MHz most of the time. Available frequencies are 800 and 1000 MHz. The guess the Cortex M4 is also disabled:
root@pico-imx7:~# devmem2 0x30390000 w
Memory mapped at address 0x76f01000.
Read at address 0x30390000 (0x76f01000): 0x000000A0
What other tricks do we have in software to lower the thermal output / power usage?
Sleep is no option.
According to app note "i.MX 7DS Power Consumption Measurement" in system idle mode consumption
is ~52 mW. Using Thermal Resistance Data in the i.MX7D Datasheet for four-layer board; natural convection
(as 30.2 C / W) rough estimation of temperature is T ambient + 1.5 C
Note, to enter idle mode, as stated in section 6.2.3 (System Idle mode: system setup) of the app note:
Disconnect everything except for the SD.
1. Boot up the Linux image by entering “x11=false uart_from_osc” into the command line.
2. Run the following script to put the system into the “powersave” governor:
echo 8 > /proc/sys/kernel/printk
ifconfig eth0 down ifconfig eth1 down
echo powersave > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor echo 1 > /sys/class/graphics/fb0/blank
3. Measure the power and record the result.
Have a great day,
- If this post answers your question, please click the "Mark Correct" button. Thank you!
- We are following threads for 7 weeks after the last post, later replies are ignored
Please open a new thread and refer to the closed one, if you have a related question at a later point in time.
I've now setup a minimal image, and added the bootargs as you requested.
I'm using MX100TP power supply which monitors output voltage and current.
In userspace I'm now drawing 0.096A @ 24V = 2.304W. That's total system power, including eth switch, 5V converter,etc. I can't measure SOM on its own.
The cpu reaches after one hour 48°C.
Running the powersave script doesn't have any effect. By default the ondeman governor is used.
The temperature is gathered through the sysfs interface, i.e.
It could be less accurate, however note that the linux temperature driver will issue a shutdown when cpu die temperature reaches 90°C while using that same sensor.
In order to be sure in results of temperature measurements it makes sense
to apply additional sensors, such as thermocouple or optic method.
i.MX internal sensor accuracy should be taken into account, when estimating
critical temperature points.
Ok so I've put a heatpad on top of the imx processor and inserted a temp probe.
I've also changed the image to be based upon fsl-imx-fb distro since no display is going to be attached.
The power figures still read 0.096A @ 24V = 2.304W, and the i.MX internal sensor still reeds 49°C after idling for a while. The external temp probe measures 41.7°C, the ambient temperature is 24°C.
I've repeated that test with cpu1 disabled using the hotplug infratructure, but it has no effect on power usage and temperature.
What should we check for exactly? Shorts? I mean, everything is working. Could we for example share our PCB schematics with one of the NXP engineers privately?
In the mean time we did a test with PICO-IMX7D without the Wifi chip on board, but we get the exact same figures.
When I enable ethernet, the temp rises to 52°C, and the power consumption grows up to roughly 120mA @ 24V = 2.88W, so there is definitely a penalty here (as we expected).
Note that the dtsi file doesn't disable the lcdif node, instead it is deleted since some of its pins have gotten a different purpose. However, the mxcfb1, mipi_dsi and mipi_csi nodes are disabled.
As for PCB or schematic: Yes, I meant shorts or low pulling resistors value.
The problem, looks like, concerns with a hardware issue; I checked i.MX7 SABRE
board with demo image - it shows 36 / 32 degree C.
I can look at the schematic, we (Web support team) do not have enough resources
to review PCB.
we are facing the same issues, but with the USB connection.
Do you have any findings or recommendations what to do?
Would be awesome to share your progress.
In our case the high temperature level was a result of few things combined. The pcb(s) should be designed so that components with high power usage or spread over the PCB, but we lack the extra space. Furthermore our housing also had a larger than suspected impact. The same pico-imx7d in a totally difference board resulted in a temperature drop of roughly 10°C.