Got ATmega328PB which is (nearly) pin compatible with ATmega328P, but the microcontroller it self is different and the tool chain does not work out of the box. My current status is that I did not managed to load bootloader and will simply revert to use P version. Still here is a summary of links and things that I've tried.
Tried Arduino as ISP that worked for me and it does not work out of the box. Here some links that claim to be working:
Tried programming from command line, setting fuses after updating avrdude.conf went through:
$ diff -Naur avrdude.conf-backup /etc/avrdude.conf
--- avrdude.conf-backup 2020-07-01 12:22:58.966995406 +0200
+++ /etc/avrdude.conf 2020-07-01 12:43:42.037885327 +0200
@@ -8726,7 +8726,7 @@
"x x x x x x x x o o o o o o o o";
write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0",
- "x x x x x x x x x x x x x i i i";
+ "x x x x x x x x x x x x i i i i";
;
memory "lock"
$ /usr/share/arduino/hardware/tools/avrdude -C/usr/share/arduino/hardware/tools/avrdude.conf -v -v -v -v -patmega328pb -cstk500v1 -P/dev/ttyUSB1 -b19200 -e -Ulock:w:0xff:m -Uefuse:w:0xfd:m -Uhfuse:w:0xde:m -Ulfuse:w:0xff:m
Managed to compile optiboot_m328pb.hex after getting ATmega Series Device files
cd Atmel.ATmega_DFP.1.4.351 sudo cp ./gcc/dev/atmega328pb/avr5/libatmega328pb.a ./gcc/dev/atmega328pb/avr5/crtatmega328pb.o /usr/lib/avr/lib/ sudo cp ./include/avr/iom328pb.h /usr/lib/avr/include/avr/
Then tried to program it but ended-up with programming/safemode verification errors:
$ /usr/share/arduino/hardware/tools/avrdude -C/usr/share/arduino/hardware/tools/avrdude.conf -v -v -v -v -patmega328pb -cstk500v1 -P/dev/ttyUSB1 -b19200 -Uflash:w:/usr/share/arduino/hardware/arduino/bootloaders/optiboot/optiboot_m328pb.hex:i -Ulock:w:0xcf:m\
avrdude: Version 6.3-20171130
Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
Copyright (c) 2007-2014 Joerg Wunsch
System wide configuration file is "/usr/share/arduino/hardware/tools/avrdude.conf"
User configuration file is "/home/jozef/.avrduderc"
User configuration file does not exist or is not a regular file, skipping
Using Port : /dev/ttyUSB1
Using Programmer : stk500v1
Overriding Baud Rate : 19200
avrdude: Send: 0 [30] [20]
avrdude: Send: 0 [30] [20]
avrdude: Send: 0 [30] [20]
avrdude: Recv: . [14]
avrdude: Recv: . [10]
AVR Part : ATmega328PB
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 :
…
avrdude: Recv: . [10]
avrdude: verifying ...
avrdude: verification error, first mismatch at byte 0x7e00
0x00 != 0x1f
avrdude: verification error; content mismatch
avrdude: Send: V [56] P [50] . [00] . [00] . [00] [20]
avrdude: Recv: . [14]
avrdude: Recv: . [00]
avrdude: Recv: . [10]
…
avrdude: Recv: . [14]
avrdude: Recv: . [00]
avrdude: Recv: . [10]
avrdude: safemode read 3, efuse value: 0
avrdude: safemode: efuse reads as 0
avrdude: safemode: lfuse changed! Was ff, and is now 0
Would you like this fuse to be changed back? [y/n]
avrdude: safemode: hfuse changed! Was de, and is now 0
Would you like this fuse to be changed back? [y/n]
avrdude: safemode: efuse changed! Was fd, and is now 0
Would you like this fuse to be changed back? [y/n]
avrdude: safemode: Fuses OK (E:FD, H:DE, L:FF)
avrdude: Send: Q [51] [20]
avrdude: Recv: . [14]
avrdude: Recv: . [10]
avrdude done. Thank you.
Not sure what to try next, don't want to recompile the whole tool-chain just to win two extra pins, capacitive sense and extra IO interfaces.