i'm doing a project that integrates Edison with the arduino expansion board, a proximity sensor, some LEDs and a USB2 camera and an uSD card.
as part of my project, the module goes to cycles of S3 for periods, and then wakes up (by the MCU), and polls the sensors.
today i tried to maesure the current consumed during the S3 state, and found out an worrying amount of +-30mA, while in S3, and all LEDS/sensors are off.
does that number seems right ? i assumed a much smaller amount in my dry calculations, so that's a real problem for me.
as part of the code, i'm doing:
system("ifconfig wlan0 down");//shut down wifi for battery
system("systemctl stop wpa_supplicant");
system ("echo auto > /sys/devices/pci0000\:00/0000\:00\:04.3/power/control");
to be able to get into S3 state, and
echo -n "mem" > /sys/power/state
to get to S3 state.
also, i tried disconnecting the integrated parts one by one (LEDS and prox. sensorfrom gpio, camera from USB), to check if one of them draws all of this current, and only got a slim change.
are there any other service to kill/other trick to do - so that i can lower the current consumption ?
thanks a lot
Could you please let us know the current value you are getting when the Edison is in normal state and the current value when it's in the S3 state? Try to test it without anything connected to the Edison.
According to this post: https://communities.intel.com/message/394859# 394859 https://communities.intel.com/message/394859# 394859, you should run the following command in order to disable the Wi-Fi interface: iwconfig wlan0 power off. Try running this command and check if there is any difference in the current value. Additionally, you could check the following power consumption report to know if you are getting similar values when the Wi-Fi interface is enable/disable: http://www.intel.com/content/www/us/en/support/boards-and-kits/intel-edison-boards/000006123.html?wa...
when i'm trying to do the command suggested, i get:
# iwconfig wlan0 power off
Error for wireless request "Set Power Management" (8B2C) :
SET failed on device wlan0 ; Input/output error.
so i can't really test if that's helping or not.
some measurements (wifi is disabled by the commands i written above):
* everything is connected but idle - +-50mA
* everything is disconnected but idle - +-50mA
* everything is connected, S3 - +-30mA
* everything is disconnected, S3 - +-28mA
so the "normal" power consumption seems to be right with those measurements (50mA at 9V idle), my only issue is with the power consumption in S3 state, which seems rather large, even when nothing is connected or running..
i'm using the yocto-3.10-edison image (latest from site).
i tried changing fluke to a more accurate one, and play with higher voltage (11V) and i get the following measures:
* idle time current, no Wifi - +-48mA
* idle time current, Wifi - +-60mA
* S3 current - 22mA
Thank you for posting your results.
I'll try to confirm if those values are correct, especially the current value in S3. I'll post an update as soon as possible.
Could you please let us know what command(s) you are using exactly to enter into S3 mode?
Additionally, the command iwconfig wlan0 power off will work only if the wlan0 interface is up. I'm not sure if this command will help to reduce the current consumption but you can give it a try. Just make sure the wlan0 interface is up before running it:
ifconfig wlan0 up iwconfig wlan0 power off
Were you able to find a solution for this? If you still need help, please let us know the exact command(s) you are using to enter into S3 mode.
i mentioned it in the original post, in order to get S3 im doing in my code "system("echo -n mem > sys/power/state)"
i'l try tomorrow to see if
ifconfig wlan0 up
iwconfig wlan0 power off
thanks for the help.
We tested the current consumption using the same commands you used in your test. We did the test using the Edison kit for Arduino with Yocto release 3.5, and an external power supply rated at 12V/1.5A.
When the board has booted up completely, it draws about 48.1 mA. When running the following commands, the board draws about 17.06 mA:
ifconfig wlan0 down
systemctl stop wpa_supplicant
echo auto > /sys/devices/pci0000\:00/0000\:00\:04.3/power/control
echo -n "mem" > /sys/power/state
There were nothing attached to the full USB port, so it's expected the current would be higher if a device is plugged in.
thanks for the reply.
is there any difference when using the command suggested, "iwconfig wlan0 power off" ?
if not, is this a bug ? i've seen reports in earlier images about +-5mA in S3.
thanks for the help
You can get the current consumption in sleep mode with 5mA when using power supply with battery of 3.7V. Besides, it can be lower in the the first time of S3 with only 2 mA. From the second time of S3, it will be 5mA.
So I am trying to fix this issue to obtain the 2mA current. From dmesg command, I can guess that this issue comes from HSU (High Speed Uart) with the error message " HSU serial 0000:00:04.0: Refused to change power state, currently in D0 " D0 is the full operation and this device can not enter the S3 from the second time of sleeping. So, anyone has the solution to fix this issue or how to deactive this device.
so the whole difference between the measurements you encountered (2-5mA), and the ones me and Diego encountered (17-20mA) is due to high power supply (current wasted on level shifting/converting/etc.) ?
That's correct. I suggest you to try different power supplies and compare the results. We didn't test if the command iwconfig wlan0 power off makes any difference, but we encourage you to test it.
As you can see in the following thread, power management is not implemented in Edison: https://communities.intel.com/thread/56744 https://communities.intel.com/thread/56744. That might be the reason why you get that error message regarding the HSU not changing the power state.
I'm not sure if there is a way to deactivate the HSU, but please let me see if I'm able to find information on this. I'll post an update as soon as possible.
I suggest you to comment these two lines and rebuild the image. However, by doing this you may disable the console access.
I rebuilt the image as your suggestion. However, It also disabled the console access. I tried using USB OTG as another way to access the console but it didn't work. So, how can I use the console in this case ?
You cannot access the console via serial port with the changes suggested below, however you could try to get access through SSH. I'm not sure if this will work, but you could try to configure the Edison's Wi-Fi using the Arduino IDE.
From an Arduino sketch, you can send Linux commands by using system calls as follow: system("echo test_message");
The Linux command has to be specified between quotation marks. As I said, I'm not sure if configuring the wlan0 interface through the Arduino IDE will work. The idea is to configure the wlan0 interface and get an IP address. Then, use this IP address to access the Edison's console through SSH.
As I explained before, power management is not implemented in Edison so that might be the reason why you don't see any change, even though you have built the image with the changes suggested.
There is, however, a patch that was posted by another user that could be helpful for you. We haven't tested it, but you might want to give it a try and see if there is any difference in the results. Take a look at the following post: https://communities.intel.com/message/353255# 353255 https://communities.intel.com/message/353255# 353255