Hello,
I am trying to put Jetson Nano 2GB board into deep sleep (I think it is memory suspend state) using command “sudo systemctl suspend” (after reading thru all the Nvidia material. I am using RTC interrupt to wakeup the system (have RTC battery, schottky diode etc all implemented). All this stuff it working fine. Having said all that, here is my question.
Question: I find power consumption reaches down to 0.1 watt when machine is in the suspend mode - if network cable is plugged in (I am using ethernet cable for network). Now, if I remove network cable (as would it be in usage scenario for this project - we use RTC based clock for everything) - I find that the same SUSPEND command takes the board down to 0.2 watts. I am assuming that when memory is in self refresh and board is in suspend (Board LED is off in this suspend sate) - my assumption was there was no network pings etc in this deep sleep state. So, I DO NOT understand why the power drawn by the board in suspend in 0.1w if network cable is plugged in and is 0.2w with ethernet cable not plugged in? I would like to achieve 0.1w with cable removed. Please help.
Hi, how did you test it? Can you share a photo of your setup? And did you have the log file with/without ethernet cable plug in?
- Jetson Nano is hooked up via barrel connector to a programmable bench power supply that can show voltage, current drawn and power. The power readings that I posted are from this setup.
- Please let me know which log files you need (including the commands to get them as it makes it simpler for me).
Thanks for quick reply,
Sham
Hi, how many times tests have you done? Are the power value all same 0.1W in all SUSPEND with Ethernet cable and same 0.2W in all without cable?
Have done tests at the least 20 times or more. It is repeatable. Yes, power value is same with Ethernet (0.1w) and 0.2w without cable. Also, I have added other peripheral like a SWARM satellite modem (that I am working on in this project) and when I go to suspend the power delta (0.1 watts difference with and without ethernet cable remains the same).
My theory is that, the the command “sudo systemctl suspend” is turning off or stopping service before going into memory suspend if an only if ethernet cable is plugged in. If it is not plugged in probably ethernet driver it is not running and is NOT being given an opportunity to turn off stuff (like some network chip HW) and hence it continues to hog 0.1 w. If this theory is correct - then, I need to probably manually run “network service stop commands from shell” and then enter suspend. Does this make sense? If it does, can you please give me a set commands to run to make sure I put network HW to low power state before executing suspend command?
Thanks,
Sham Datta
It could also be some current coming from the ethernet cable and cuases the power measurement got lower
Possible. But in order to prove that some ethernet leakage is feeding in to board or not - I would like to issue commands to fully stop ethernet service and then put the machine to memory suspend. If still, Ethernet cable un-plugged shows 0.2watts then we can do more circuit level power debugging. All in all, I would like to fully understand the issue first. Hoping that experts can help me on this. Let me know, how I can safely STOP and START ethernet service (before and after suspend).
Hi,
Jetson nano ethernet is based on PCIe inside the module. Needs to disable pcie in device tree to totally make sure it does not have functionality.
Okay. Can you please let me know the steps to do it. Even if it is a static (like editing some files and rebooting), I would like to try it to check out to find out
You need to do that on your x86 host PC with the dtb file in Linux_for_Tegra/kernel/dtb and reflash the board.
If you don’t even know what I am talking about (e.g. x86 host PC/Linux_for_Tegra) then we have more to tell.
#1. I assume, this means I will be changing a kernel device file that is located in some boot region of SD card that needs to be changed before flashing
#2. Once I do that, does it allow me to dynamically turn on and off ethernet? I assume it does not and will need full rebuilding the image to turn on ethernet again. Is this correct?
#3. Please send me details and I would like to understand this all better and then I will worry about how I can make this happen in field image etc. Let us first debug and understand.
Hi
-
First, actually sdcard image is not a real development tool. It is just like a image for beginner to use. If you are going to change things for peripherals or board related, then generally those users would buy emmc module which don’t have sdcard at all. In such situation, another x86 host PC is needed and they will use sdkmanager to flash the board but not sdcard anymore.
-
I don’t expect this thing will be conducted in field. It is more like a experimental thing that you try in your lab or working place.
-
I don’t know how much detail I need to send you. For example, a user with Linux kernel experience would know what to do with this page I shared.
https://docs.nvidia.com/jetson/archives/l4t-archived/l4t-3273/index.html#page/Tegra%20Linux%20Driver%20Package%20Development%20Guide/kernel_custom.html#
However, we also saw some users don’t even know how to operate basic Linux commands. Above is what I could share for now. If you have further question, please ask which part you don’t know.
Hello Sham
When connecting your power supply to the board do you have the power supply ground pin connected to the negative side of the supply? If you have, try removing that jumper. The extra current might be a ground loop through your network connected PC. If you don’t have the jumper grounding the negative rail do not connect it, you want the power supply isolated.
Also your power supply might be the source of error. I have two “lab” supplies that read all over the place at low current levels. It’s better to use a separate meter unless your power supply is known to be accurate.
This might be why Trumany wanted a picture of your setup.
Regards,
Kevin
Will try these things too (no worries on manipulating Linux PCIe device files etc as I can manage it). Will take me a few days. Also, I would like to try all the power supply leakage / ground loop ideas first (since, I have a gut feeling that - in memory suspend when even OS timer tick is NOT running - it is highly unlikely that some PCIe driver is running around). Appreciate all your help as usual.
Thanks for the insight and I appreciate it. Here are some observations.
#1. The Ethernet network cable is coming from a network modem (snaking thru the walls etc) and obviously the modem has it’s own power supply (into it’s box). From this statement, I am inferring that Ethernet cable driver supply (from modem power supply) and Jetson Nano barrel connector supply are isolated (Agree?)
#2. Having said all that, I fully concur that power supply meters are notoriously inaccurate at low current. Let me connect my trusted low current meter and check the current draw differences).
#3. Just as an additional observation the HDMI cable is connected and does not seem to be feeding back anything (tried unplugging in suspend etc).
I will keep you posted on these measurements soon.
Cheers,
Sham
We did the test on our side as well and notice the behavior you observed.
After some further check, it comes from the WoL (wake on LAN) function of this PCIe NIC card.
If you don’t care about wake on LAN function, then you could use below two methods to disable it first.
- to disable WOL temporarily, he can issue this command
sudo ethtool -s eth0 wol d
- to disable WOL permanently via GUI,
uncheck System Settings > Network / Wired > Options > Wake-On-Lan > “default”
Thanks to all of you for working on this suspend power related issue diligently on your side to find a good solution. I did try it just now and it works fine. The power consumption goes down to actually 0.087 watts (87 mw) once the “sudo ethtool -s eth0 wol d” command is included in the shell script before suspend command. I will connect a real low ampere measurement capable ammeter and will get an accurate measurement later.
As I have already mentioned - I DO NOT need WoL (Wake On Lan) function in this project (as it just uses RTC alarm to wakeup, which is working fine).
By the by, can you folks let me know (or point me to documentation if already exists) a list of things that can be turned off that will save power in memory suspend state? I am pretty sure such a list will be very useful to many folks like me who are sleep time power conscious.
Cheers,
Sham Datta