Fix “avrdude: Expected signature for ATmega328P is 1E 95 0F”
avrdude read a valid chip — just not an ATmega328P. It's a 328PB, an ATmega168, or an LGT8F328P clone. Select the matching board core instead of using -F.
Community draft — report a mistake
What you see
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.01s
avrdude: Device signature = 0x1e9516 (probably m328pb)
avrdude: Expected signature for ATmega328P is 1E 95 0F
Double check chip, or use -F to override this check.
Failed uploading: uploading error: exit status 1avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.01s
avrdude: Device signature = 0x1e9516 (probably m328pb)
avrdude: Expected signature for ATmega328P is 1E 95 0F
Double check chip, or use -F to override this check.
Failed uploading: uploading error: exit status 1
Before writing, avrdude reads the chip’s signature and compares it with the chip you selected. Here it read a real signature, so the wiring and programmer are fine, but the chip isn’t an ATmega328P.
Cheap “Nano” and “Uno” clones sometimes carry a 328PB, an older ATmega168 or a Chinese LGT8F328P. Identify the chip and install the core made for it.
Quick fix — try in order
- 1
Read the signature avrdude printed
0x1e9516 = ATmega328PB. 0x1e9406 = ATmega168. 0x1e950f = 328P (correct). 0x1e9514 = ATmega328 (non-P). Anything else on a “Nano” may be an LGT8F328P or another clone chip.
- 2
Look at the chip marking
Use a phone torch and zoom: MEGA328P, MEGA328PB, MEGA168PA or LGT8F328P. Sellers often list all of them as “Nano ATmega328P”.
- 3
Install the matching board package
ATmega328PB: MiniCore (by MCUdude) → ATmega328 board → Variant 328PB. ATmega168: Tools → Processor → ATmega168. LGT8F328P: the LGT8fx core.
- 4
Burning a bootloader? Use the same core
Burn Bootloader also checks the signature. Select the correct chip first, or the fuses written will be wrong.
Why it happens
Why not just use -F?
-F skips the check but still uploads code built for a different chip. A 328PB build works on a 328P only by chance, and a 168 has half the flash — the sketch may not even fit.
Signature is right but this still appears
If avrdude prints 0x1e950f and still complains, a different Processor (for example ATmega328P on an Uno vs ATmega328 non-P) is selected. Re-check Tools.
Board-specific notes
LGT8F328P “Nano” boards: These run at 32 MHz with a different core and pinout details. They need the LGT8fx board package — the standard Nano entry will never upload to them.
Did this fix it?
Thanks — that helps us keep this page right.