# Cannot burn a bootloader in atmega328p, 1 bytes of lock verified

**URL:** <https://forum.arduino.cc/t/cannot-burn-a-bootloader-in-atmega328p-1-bytes-of-lock-verified/1105937>\
**Category:** Uploading\
**Created:** [March 23, 2023, 11:10pm UTC](https://forum.arduino.cc/t/cannot-burn-a-bootloader-in-atmega328p-1-bytes-of-lock-verified/1105937 "2023-03-23T23:10:40Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![bask185](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/bask185/32/1013044_2.png) [@bask185](https://forum.arduino.cc/u/bask185)\
**Post date:** [March 23, 2023, 11:10pm UTC](https://forum.arduino.cc/t/cannot-burn-a-bootloader-in-atmega328p-1-bytes-of-lock-verified/1105937/1 "2023-03-23T23:10:40Z")

</div>

I am sitting here with my own custom PCB which is assembled by JLCPCB. It houses an atmega328P and CH340G chip with usb socket.

I can succesfully upload programs via an arduino nano as ISP programmer.  
I have succesfully tested the USB connections. I can read and send bytes from monitor to my own board over USB, so the hardware appears to be fine. Must have done something right.

Being an atmega in TQFP housing, the board settings are set to an arduino Nano. I tried UNO as well, no change in output.

Despite I can program via ICSP connector, I cannot burn the boatloader. This part of the log seems interesting.

avrdude: reading input file "0x0F"  
avrdude: writing lock (1 bytes):

The whole log

```cpp
avrdude: Version 6.3-20190619
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2014 Joerg Wunsch

         System wide configuration file is "C:\Users\Gebruiker\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17/etc/avrdude.conf"

         Using Port : COM6
         Using Programmer : stk500v1
         Overriding Baud Rate : 19200
         AVR Part : ATmega328P
         Chip Erase delay : 9000 us
         PAGEL : PD7
         BS2 : PC2
         RESET disposition : dedicated
         RETRY pulse : SCK
         serial program mode : yes
         parallel program mode : yes
         Timeout : 200
         StabDelay : 100
         CmdexeDelay : 25
         SyncLoops : 32
         ByteDelay : 0
         PollIndex : 3
         PollValue : 0x53
         Memory Detail :

                                  Block Poll Page Polled
           Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           eeprom 65 20 4 0 no 1024 4 0 3600 3600 0xff 0xff
           flash 65 6 128 0 yes 32768 128 256 4500 4500 0xff 0xff
           lfuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
           hfuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
           efuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
           lock 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
           calibration 0 0 0 0 no 1 0 0 0 0 0x00 0x00
           signature 0 0 0 0 no 3 0 0 0 0 0x00 0x00

         Programmer Type : STK500
         Description : Atmel STK500 Version 1.x firmware
         Hardware Version: 2
         Firmware Version: 1.18
         Topcard : Unknown
         Vtarget : 0.0 V
         Varef : 0.0 V
         Oscillator : Off
         SCK period : 0.1 us

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.02s

avrdude: Device signature = 0x1e950f (probably m328p)
avrdude: NOTE: "flash" memory has been specified, an erase cycle will be performed
         To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file "C:\Users\Gebruiker\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.3/bootloaders/optiboot/optiboot_atmega328.hex"
avrdude: writing flash (32768 bytes):

Writing | ################################################## | 100% 0.00s

avrdude: 32768 bytes of flash written
avrdude: verifying flash memory against C:\Users\Gebruiker\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.3/bootloaders/optiboot/optiboot_atmega328.hex:
avrdude: load data flash data from input file C:\Users\Gebruiker\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.3/bootloaders/optiboot/optiboot_atmega328.hex:
avrdude: input file C:\Users\Gebruiker\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.3/bootloaders/optiboot/optiboot_atmega328.hex contains 32768 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 0.00s

avrdude: verifying ...
avrdude: 32768 bytes of flash verified
avrdude: reading input file "0x0F"
avrdude: writing lock (1 bytes):

Writing | ################################################## | 100% 0.02s

avrdude: 1 bytes of lock written
avrdude: verifying lock memory against 0x0F:
avrdude: load data lock data from input file 0x0F:
avrdude: input file 0x0F contains 1 bytes
avrdude: reading on-chip lock data:

Reading | ################################################## | 100% 0.01s

avrdude: verifying ...
avrdude: 1 bytes of lock verified

avrdude done. Thank you.

```

I am guessing that I must change something in boards.txt but I am not sure what exactly. I must confess: I have not looked into boards.txt yet either. Going to look into it now.

Can somebody tell me what precisely is happening and how can I fix this?

Kind regards,

Bas

---

<div class="post-metadata">

**Author:** ![bask185](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/bask185/32/1013044_2.png) [@bask185](https://forum.arduino.cc/u/bask185)\
**Post date:** [March 23, 2023, 11:26pm UTC](https://forum.arduino.cc/t/cannot-burn-a-bootloader-in-atmega328p-1-bytes-of-lock-verified/1105937/2 "2023-03-23T23:26:25Z")

</div>

Also tried arduino-cli (which probably uses same boards.txt) exact same results

---

<div class="post-metadata">

**Author:** ![TechGraphix](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/techgraphix/32/501257_2.png) [@TechGraphix](https://forum.arduino.cc/u/TechGraphix)\
**Post date:** [March 23, 2023, 11:39pm UTC](https://forum.arduino.cc/t/cannot-burn-a-bootloader-in-atmega328p-1-bytes-of-lock-verified/1105937/3 "2023-03-23T23:39:04Z")

</div>

I have made several boards with the TQFP 328P and program them over the ISP. But i use a arduino Uno as ISP-server and so is the setting (in my case Arduino Uno on Com3) Then i can bootload the the 328P without problems.  
1 to 328p pin 16  
2 to +5V  
3 to 328p pin 17  
4 to 328p pin 15  
5 to 328p pin 29  
6 to GND  
on the Arduino Uno side: wire 5 goes to 10

check that.

---

<div class="post-metadata">

**Author:** ![david\_2018](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/david_2018/32/1013044_2.png) [@david\_2018](https://forum.arduino.cc/u/david_2018)\
**Post date:** [March 24, 2023, 1:51am UTC](https://forum.arduino.cc/t/cannot-burn-a-bootloader-in-atmega328p-1-bytes-of-lock-verified/1105937/4 "2023-03-24T01:51:25Z")

</div>

How are you determining that the bootloader has in fact not been written? (note - DO NOT upload a sketch via ISP after burning the bootloader)

Can you post a schematic of your board? Can you verify that attempting to upload a sketch via USB triggers a reset of the atmega328?

\< edit \>  
Looking over the sequence you posted, it appears to be the same as what I get when burning the bootloader to a genuine Arduino UNO.

---

<div class="post-metadata">

**Author:** ![westfw](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/westfw/32/213443_2.png) [@westfw](https://forum.arduino.cc/u/westfw)\
**Post date:** [March 24, 2023, 2:22am UTC](https://forum.arduino.cc/t/cannot-burn-a-bootloader-in-atmega328p-1-bytes-of-lock-verified/1105937/5 "2023-03-24T02:22:06Z")

</div>

Looks like a successful bootloader burn log; what makes you think that it failed?

---

<div class="post-metadata">

**Author:** ![bask185](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/bask185/32/1013044_2.png) [@bask185](https://forum.arduino.cc/u/bask185)\
**Post date:** [March 24, 2023, 6:54am UTC](https://forum.arduino.cc/t/cannot-burn-a-bootloader-in-atmega328p-1-bytes-of-lock-verified/1105937/6 "2023-03-24T06:54:41Z")

</div>

Ehm... despite I knew the bootloader is only a small part of code, the process looked 'too fast'. The last time I burned a bootloader was many years ago. And I read somewhere that it could last like 15s..

This followed by a failed upload attempt, made me draw incorrect conclusions. I do know that next design will have a reset button. Those 2 cents...

I think that I screwed up by flashing a program via ICSP after burning the bootloader... it was late.. 😅

I redid the entire process and now it seems to work. Glad that my design actually works. It is the first time that I made a board with USB circuitry. Now I hope that the voltage regulator also survive the comming trials.

Tnx for the assist,

Bas

---

<div class="post-metadata">

**Author:** ![system](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/system/32/1140315_2.png) [@system](https://forum.arduino.cc/u/system)\
**Post date:** [September 20, 2023, 6:54am UTC](https://forum.arduino.cc/t/cannot-burn-a-bootloader-in-atmega328p-1-bytes-of-lock-verified/1105937/7 "2023-09-20T06:54:43Z")

</div>

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.
