While working on the Fridge Controller project (https://github.com/microfarad-de/fridge-controller) I have been measuring the power consumption of an 8 MHz ATmega328P Arduino Pro Mini.
The Pro Mini had its power Led and regulator removed and was flashed with the standard Arduino boot loader as well as fuse settings.
With all I/O pins turned off and microcontroller put to SLEEP_MODE_IDLE, waking up once every millisecond to service the millis() timer and run once through the program main loop, the power consumption turned out to be around 5 mA.
This is a surprisingly low power consumption, considering that the Pro Mini would usually draw around 10 mA under the same operating conditions.
I have ran the exact same firmware on a different Pro Mini specimen (after accidentally damaging the original one), which ended up drawing the expected ~10 mA.
Following my observations, I have went for the quest of finding out the root cause of this power consumption discrepancy of seemingly identical Arduino Pro Minis.
I have double checked the fuses settings and made sure that both Pro Minis run the exact same bootloader version, which they did.
By the way, the following commands have been used for reading the fuse settings on Mac OS with Arduino IDE 1.8.19 using the “Arduino as ISP” programmer:
cd /Applications/Arduino.app/Contents/Java/hardware/tools/avr bin/avrdude -c arduino -p m328p -C etc/avrdude.conf -P /dev/cu.usbserial-110 -b 19200
Still having found no explanation for the discrepancy and following a rather comprehensive web search, I have came across the following resources:
- https://hackaday.com/2020/09/15/deep-sleep-problems-lead-to-forensic-investigation-of-troublesome-chip
- https://www.eevblog.com/forum/microcontrollers/arduino-pro-mini-two-copies-have-different-sleep-currents
It turns out that there are “fake” ATmega328P versions that are difficult to distinguish from the original ones. These fake units fully compatible with the original, except for having different power consumption characteristics.
According to the above sources, the fake units have a much higher SLEEP_MODE_PWR_DOWN mode current consumption of ~150 µA, as compared to less than 1 µA for the original units. However, according to my observation described above, these fake units seem to draw 50% less current in SLEEP_MODE_IDLE (~5 mA vs ~10 mA).
Furthermore, it is possible to distinguish fake units from their genuine counterparts by loading the following sketch:
// Found this code here // https://gist.github.com/speters/f889faec42b510052a6ab4be437d38ca // Purpose is to simply run a memory check on ATMEGA238P to test for counterfeit parts #include <avr/boot.h> #define SIGRD 5 void setup() { // put your setup code here, to run once: Serial.begin(115200); Serial.println(""); Serial.println("boot sig dump"); int newLineIndex = 0; for (uint8_t i = 0; i <= 0x1F; i += 1) { Serial.print(boot_signature_byte_get(i), HEX); Serial.print("\t"); newLineIndex++; if (newLineIndex == 8) { Serial.println(""); newLineIndex = 0; } } Serial.println(); } void loop() { }
The genuine units will generate a boot signature similar to:
1E A2 95 FF F B8 FF 26 FF 9 FF 17 FF FF 57 35 37 34 39 33 FF 7 18 2 17 1 12 6 13 6 FF FF
While the signature of the counterfeit unites will mostly contain “FF”:
1E BE 95 FF F FF FF 26 FF FF FF FF FF FF 58 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
Finally, as shown in the pictures below, it seems that many fake units have a the marking “U-KR” which stands for Korea as the country of origin.


I hope this article will be a great help to those who observe similar power consumption inconsistencies on their Arduino Pro Minis.
It’s good to see you’re still posting things! Your posts are always well researched and well written.
Thanks Tom,
there’s also a lot going on my Github: http://www.github.com/microfarad-de