From python:
>>> from confduino.boardlist import boards
>>> boards()
AutoBunch(LilyPadUSB=AutoBunch(bootloader=AutoBunch(extended_fuses='0xce', file='Caterina-LilyPadUSB.hex', high_fuses='0xd8', lock_bits='0x2F', low_fuses='0xff', path='caterina-LilyPadUSB', unlock_bits='0x3F'), build=AutoBunch(core='arduino', f_cpu='8000000L', mcu='atmega32u4', pid='0x9208', variant='leonardo', vid='0x1B4F'), name='LilyPad Arduino USB', upload=AutoBunch(disable_flushing='true', maximum_size='28672', protocol='avr109', speed='57600')), atmega168=AutoBunch(bootloader=AutoBunch(extended_fuses='0x00', file='ATmegaBOOT_168_ng.hex', high_fuses='0xdd', lock_bits='0x0F', low_fuses='0xff', path='atmega', unlock_bits='0x3F'), build=AutoBunch(core='arduino', f_cpu='16000000L', mcu='atmega168', variant='standard'), name='Arduino NG or older w/ ATmega168', upload=AutoBunch(maximum_size='14336', protocol='arduino', speed='19200')), atmega328=AutoBunch(bootloader=AutoBunch(extended_fuses='0x05', file='ATmegaBOOT_168_atmega328.hex', high_fuses='0xDA', lock_bits='0x0F', low_fuses='0xFF', path='atmega', unlock_bits='0x3F'), build=AutoBunch(core='arduino', f_cpu='16000000L', mcu='atmega328p', variant='standard'), name='Arduino Duemilanove w/ ATmega328', upload=AutoBunch(maximum_size='30720', protocol='arduino', speed='57600')), atmega328p_1000000=AutoBunch(build=AutoBunch(core='arduino', f_cpu='1000000L', mcu='atmega328p', variant='standard'), name='atmega328p@1MHz', upload=AutoBunch(maximum_size='32768', using='usbasp')), atmega328p_20000000=AutoBunch(build=AutoBunch(core='arduino', f_cpu='20000000L', mcu='atmega328p', variant='standard'), name='atmega328p@20MHz', upload=AutoBunch(maximum_size='32768', using='usbasp')), atmega328p_8000000=AutoBunch(build=AutoBunch(core='arduino', f_cpu='8000000L', mcu='atmega328p', variant='standard'), name='atmega328p@8MHz', upload=AutoBunch(maximum_size='32768', using='usbasp')), atmega8=AutoBunch(bootloader=AutoBunch(file='ATmegaBOOT-prod-firmware-2009-11-07.hex', high_fuses='0xca', lock_bits='0x0F', low_fuses='0xdf', path='atmega8', unlock_bits='0x3F'), build=AutoBunch(core='arduino', f_cpu='16000000L', mcu='atmega8', variant='standard'), name='Arduino NG or older w/ ATmega8', upload=AutoBunch(maximum_size='7168', protocol='arduino', speed='19200')), atmega88_1000000=AutoBunch(build=AutoBunch(core='arduino', f_cpu='1000000L', mcu='atmega88', variant='standard'), name='atmega88@1MHz', upload=AutoBunch(maximum_size='8192', using='usbasp')), atmega88_12000000=AutoBunch(build=AutoBunch(core='arduino', f_cpu='12000000L', mcu='atmega88', variant='standard'), name='atmega88@12MHz', upload=AutoBunch(maximum_size='8192', using='usbasp')), atmega88_20000000=AutoBunch(build=AutoBunch(core='arduino', f_cpu='20000000L', mcu='atmega88', variant='standard'), name='atmega88@20MHz', upload=AutoBunch(maximum_size='8192', using='usbasp')), atmega88_8000000=AutoBunch(build=AutoBunch(core='arduino', f_cpu='8000000L', mcu='atmega88', variant='standard'), name='atmega88@8MHz', upload=AutoBunch(maximum_size='8192', using='usbasp')), atmega8_1000000=AutoBunch(build=AutoBunch(core='arduino', f_cpu='1000000L', mcu='atmega8', variant='standard'), name='atmega8@1MHz', upload=AutoBunch(maximum_size='8192', using='usbasp')), atmega8_12000000=AutoBunch(build=AutoBunch(core='arduino', f_cpu='12000000L', mcu='atmega8', variant='standard'), name='atmega8@12MHz', upload=AutoBunch(maximum_size='8192', using='usbasp')), bt=AutoBunch(bootloader=AutoBunch(extended_fuses='0x00', file='ATmegaBOOT_168.hex', high_fuses='0xdd', lock_bits='0x0F', low_fuses='0xff', path='bt', unlock_bits='0x3F'), build=AutoBunch(core='arduino', f_cpu='16000000L', mcu='atmega168', variant='eightanaloginputs'), name='Arduino BT w/ ATmega168', upload=AutoBunch(disable_flushing='true', maximum_size='14336', protocol='arduino', speed='19200')), bt328=AutoBunch(bootloader=AutoBunch(extended_fuses='0x05', file='ATmegaBOOT_168_atmega328_bt.hex', high_fuses='0xd8', lock_bits='0x0F', low_fuses='0xff', path='bt', unlock_bits='0x3F'), build=AutoBunch(core='arduino', f_cpu='16000000L', mcu='atmega328p', variant='eightanaloginputs'), name='Arduino BT w/ ATmega328', upload=AutoBunch(disable_flushing='true', maximum_size='28672', protocol='arduino', speed='19200')), diecimila=AutoBunch(bootloader=AutoBunch(extended_fuses='0x00', file='ATmegaBOOT_168_diecimila.hex', high_fuses='0xdd', lock_bits='0x0F', low_fuses='0xff', path='atmega', unlock_bits='0x3F'), build=AutoBunch(core='arduino', f_cpu='16000000L', mcu='atmega168', variant='standard'), name='Arduino Diecimila or Duemilanove w/ ATmega168', upload=AutoBunch(maximum_size='14336', protocol='arduino', speed='19200')), esplora=AutoBunch(bootloader=AutoBunch(extended_fuses='0xcb', file='Caterina-Esplora.hex', high_fuses='0xd8', lock_bits='0x2F', low_fuses='0xff', path='caterina', unlock_bits='0x3F'), build=AutoBunch(core='arduino', f_cpu='16000000L', mcu='atmega32u4', pid='0x803C', variant='leonardo', vid='0x2341'), name='Arduino Esplora', upload=AutoBunch(disable_flushing='true', maximum_size='28672', protocol='avr109', speed='57600')), ethernet=AutoBunch(bootloader=AutoBunch(extended_fuses='0x05', file='optiboot_atmega328.hex', high_fuses='0xde', lock_bits='0x0F', low_fuses='0xff', path='optiboot', unlock_bits='0x3F'), build=AutoBunch(core='arduino', f_cpu='16000000L', mcu='atmega328p', variant='standard'), name='Arduino Ethernet', upload=AutoBunch(maximum_size='32256', protocol='arduino', speed='115200')), fio=AutoBunch(bootloader=AutoBunch(extended_fuses='0x05', file='ATmegaBOOT_168_atmega328_pro_8MHz.hex', high_fuses='0xDA', lock_bits='0x0F', low_fuses='0xFF', path='arduino:atmega', unlock_bits='0x3F'), build=AutoBunch(core='arduino', f_cpu='8000000L', mcu='atmega328p', variant='eightanaloginputs'), name='Arduino Fio', upload=AutoBunch(maximum_size='30720', protocol='arduino', speed='57600')), leonardo=AutoBunch(bootloader=AutoBunch(extended_fuses='0xcb', file='Caterina-Leonardo.hex', high_fuses='0xd8', lock_bits='0x2F', low_fuses='0xff', path='caterina', unlock_bits='0x3F'), build=AutoBunch(core='arduino', f_cpu='16000000L', mcu='atmega32u4', pid='0x8036', variant='leonardo', vid='0x2341'), name='Arduino Leonardo', upload=AutoBunch(disable_flushing='true', maximum_size='28672', protocol='avr109', speed='57600')), lilypad=AutoBunch(bootloader=AutoBunch(extended_fuses='0x00', file='LilyPadBOOT_168.hex', high_fuses='0xdd', lock_bits='0x0F', low_fuses='0xe2', path='lilypad', unlock_bits='0x3F'), build=AutoBunch(core='arduino', f_cpu='8000000L', mcu='atmega168', variant='standard'), name='LilyPad Arduino w/ ATmega168', upload=AutoBunch(maximum_size='14336', protocol='arduino', speed='19200')), lilypad328=AutoBunch(bootloader=AutoBunch(extended_fuses='0x05', file='ATmegaBOOT_168_atmega328_pro_8MHz.hex', high_fuses='0xDA', lock_bits='0x0F', low_fuses='0xFF', path='atmega', unlock_bits='0x3F'), build=AutoBunch(core='arduino', f_cpu='8000000L', mcu='atmega328p', variant='standard'), name='LilyPad Arduino w/ ATmega328', upload=AutoBunch(maximum_size='30720', protocol='arduino', speed='57600')), mega=AutoBunch(bootloader=AutoBunch(extended_fuses='0xF5', file='ATmegaBOOT_168_atmega1280.hex', high_fuses='0xDA', lock_bits='0x0F', low_fuses='0xFF', path='atmega', unlock_bits='0x3F'), build=AutoBunch(core='arduino', f_cpu='16000000L', mcu='atmega1280', variant='mega'), name='Arduino Mega (ATmega1280)', upload=AutoBunch(maximum_size='126976', protocol='arduino', speed='57600')), mega2560=AutoBunch(bootloader=AutoBunch(extended_fuses='0xFD', file='stk500boot_v2_mega2560.hex', high_fuses='0xD8', lock_bits='0x0F', low_fuses='0xFF', path='stk500v2', unlock_bits='0x3F'), build=AutoBunch(core='arduino', f_cpu='16000000L', mcu='atmega2560', variant='mega'), name='Arduino Mega 2560 or Mega ADK', upload=AutoBunch(maximum_size='258048', protocol='wiring', speed='115200')), micro=AutoBunch(bootloader=AutoBunch(extended_fuses='0xcb', file='Caterina-Micro.hex', high_fuses='0xd8', lock_bits='0x2F', low_fuses='0xff', path='caterina', unlock_bits='0x3F'), build=AutoBunch(core='arduino', f_cpu='16000000L', mcu='atmega32u4', pid='0x8037', variant='micro', vid='0x2341'), name='Arduino Micro', upload=AutoBunch(disable_flushing='true', maximum_size='28672', protocol='avr109', speed='57600')), mini=AutoBunch(bootloader=AutoBunch(extended_fuses='0x00', file='ATmegaBOOT_168_ng.hex', high_fuses='0xdd', lock_bits='0x0F', low_fuses='0xff', path='atmega', unlock_bits='0x3F'), build=AutoBunch(core='arduino', f_cpu='16000000L', mcu='atmega168', variant='eightanaloginputs'), name='Arduino Mini w/ ATmega168', upload=AutoBunch(maximum_size='14336', protocol='arduino', speed='19200')), mini328=AutoBunch(bootloader=AutoBunch(extended_fuses='0x05', file='optiboot_atmega328-Mini.hex', high_fuses='0xd8', lock_bits='0x0F', low_fuses='0xff', path='optiboot', unlock_bits='0x3F'), build=AutoBunch(core='arduino', f_cpu='16000000L', mcu='atmega328p', variant='eightanaloginputs'), name='Arduino Mini w/ ATmega328', upload=AutoBunch(maximum_size='28672', protocol='arduino', speed='115200')), nano=AutoBunch(bootloader=AutoBunch(extended_fuses='0x00', file='ATmegaBOOT_168_diecimila.hex', high_fuses='0xdd', lock_bits='0x0F', low_fuses='0xff', path='atmega', unlock_bits='0x3F'), build=AutoBunch(core='arduino', f_cpu='16000000L', mcu='atmega168', variant='eightanaloginputs'), name='Arduino Nano w/ ATmega168', upload=AutoBunch(maximum_size='14336', protocol='arduino', speed='19200')), nano328=AutoBunch(bootloader=AutoBunch(extended_fuses='0x05', file='ATmegaBOOT_168_atmega328.hex', high_fuses='0xDA', lock_bits='0x0F', low_fuses='0xFF', path='atmega', unlock_bits='0x3F'), build=AutoBunch(core='arduino', f_cpu='16000000L', mcu='atmega328p', variant='eightanaloginputs'), name='Arduino Nano w/ ATmega328', upload=AutoBunch(maximum_size='30720', protocol='arduino', speed='57600')), pro=AutoBunch(bootloader=AutoBunch(extended_fuses='0x00', file='ATmegaBOOT_168_pro_8MHz.hex', high_fuses='0xdd', lock_bits='0x0F', low_fuses='0xc6', path='atmega', unlock_bits='0x3F'), build=AutoBunch(core='arduino', f_cpu='8000000L', mcu='atmega168', variant='standard'), name='Arduino Pro or Pro Mini (3.3V, 8 MHz) w/ ATmega168', upload=AutoBunch(maximum_size='14336', protocol='arduino', speed='19200')), pro328=AutoBunch(bootloader=AutoBunch(extended_fuses='0x05', file='ATmegaBOOT_168_atmega328_pro_8MHz.hex', high_fuses='0xDA', lock_bits='0x0F', low_fuses='0xFF', path='atmega', unlock_bits='0x3F'), build=AutoBunch(core='arduino', f_cpu='8000000L', mcu='atmega328p', variant='standard'), name='Arduino Pro or Pro Mini (3.3V, 8 MHz) w/ ATmega328', upload=AutoBunch(maximum_size='30720', protocol='arduino', speed='57600')), pro5v=AutoBunch(bootloader=AutoBunch(extended_fuses='0x00', file='ATmegaBOOT_168_diecimila.hex', high_fuses='0xdd', lock_bits='0x0F', low_fuses='0xff', path='atmega', unlock_bits='0x3F'), build=AutoBunch(core='arduino', f_cpu='16000000L', mcu='atmega168', variant='standard'), name='Arduino Pro or Pro Mini (5V, 16 MHz) w/ ATmega168', upload=AutoBunch(maximum_size='14336', protocol='arduino', speed='19200')), pro5v328=AutoBunch(bootloader=AutoBunch(extended_fuses='0x05', file='ATmegaBOOT_168_atmega328.hex', high_fuses='0xDA', lock_bits='0x0F', low_fuses='0xFF', path='atmega', unlock_bits='0x3F'), build=AutoBunch(core='arduino', f_cpu='16000000L', mcu='atmega328p', variant='standard'), name='Arduino Pro or Pro Mini (5V, 16 MHz) w/ ATmega328', upload=AutoBunch(maximum_size='30720', protocol='arduino', speed='57600')), uno=AutoBunch(bootloader=AutoBunch(extended_fuses='0x05', file='optiboot_atmega328.hex', high_fuses='0xde', lock_bits='0x0F', low_fuses='0xff', path='optiboot', unlock_bits='0x3F'), build=AutoBunch(core='arduino', f_cpu='16000000L', mcu='atmega328p', variant='standard'), name='Arduino Uno', upload=AutoBunch(maximum_size='32256', protocol='arduino', speed='115200')))
>>> boards().diecimila.build.f_cpu
'16000000L'
>>> boards()['diecimila']['build']['f_cpu']
'16000000L'
From console:
$ python -m confduino.boardlist
LilyPadUSB
atmega168
atmega328
atmega328p_1000000
atmega328p_20000000
atmega328p_8000000
atmega8
atmega88_1000000
atmega88_12000000
atmega88_20000000
atmega88_8000000
atmega8_1000000
atmega8_12000000
bt
bt328
diecimila
esplora
ethernet
fio
leonardo
lilypad
lilypad328
mega
mega2560
micro
mini
mini328
nano
nano328
pro
pro328
pro5v
pro5v328
uno
verbose (JSON compatible):
$ python -m confduino.boardlist --verbose
{
"LilyPadUSB": {
"bootloader": {
"extended_fuses": "0xce",
"file": "Caterina-LilyPadUSB.hex",
"high_fuses": "0xd8",
"lock_bits": "0x2F",
"low_fuses": "0xff",
"path": "caterina-LilyPadUSB",
"unlock_bits": "0x3F"
},
"build": {
"core": "arduino",
"f_cpu": "8000000L",
"mcu": "atmega32u4",
"pid": "0x9208",
"variant": "leonardo",
"vid": "0x1B4F"
},
"name": "LilyPad Arduino USB",
"upload": {
"disable_flushing": "true",
"maximum_size": "28672",
"protocol": "avr109",
"speed": "57600"
}
},
"atmega168": {
"bootloader": {
"extended_fuses": "0x00",
"file": "ATmegaBOOT_168_ng.hex",
"high_fuses": "0xdd",
"lock_bits": "0x0F",
"low_fuses": "0xff",
"path": "atmega",
"unlock_bits": "0x3F"
},
"build": {
"core": "arduino",
"f_cpu": "16000000L",
"mcu": "atmega168",
"variant": "standard"
},
"name": "Arduino NG or older w/ ATmega168",
"upload": {
"maximum_size": "14336",
"protocol": "arduino",
"speed": "19200"
}
},
"atmega328": {
"bootloader": {
"extended_fuses": "0x05",
"file": "ATmegaBOOT_168_atmega328.hex",
"high_fuses": "0xDA",
"lock_bits": "0x0F",
"low_fuses": "0xFF",
"path": "atmega",
"unlock_bits": "0x3F"
},
"build": {
"core": "arduino",
"f_cpu": "16000000L",
"mcu": "atmega328p",
"variant": "standard"
},
"name": "Arduino Duemilanove w/ ATmega328",
"upload": {
"maximum_size": "30720",
"protocol": "arduino",
"speed": "57600"
}
},
"atmega328p_1000000": {
"build": {
"core": "arduino",
"f_cpu": "1000000L",
"mcu": "atmega328p",
"variant": "standard"
},
"name": "atmega328p@1MHz",
"upload": {
"maximum_size": "32768",
"using": "usbasp"
}
},
"atmega328p_20000000": {
"build": {
"core": "arduino",
"f_cpu": "20000000L",
"mcu": "atmega328p",
"variant": "standard"
},
"name": "atmega328p@20MHz",
"upload": {
"maximum_size": "32768",
"using": "usbasp"
}
},
"atmega328p_8000000": {
"build": {
"core": "arduino",
"f_cpu": "8000000L",
"mcu": "atmega328p",
"variant": "standard"
},
"name": "atmega328p@8MHz",
"upload": {
"maximum_size": "32768",
"using": "usbasp"
}
},
"atmega8": {
"bootloader": {
"file": "ATmegaBOOT-prod-firmware-2009-11-07.hex",
"high_fuses": "0xca",
"lock_bits": "0x0F",
"low_fuses": "0xdf",
"path": "atmega8",
"unlock_bits": "0x3F"
},
"build": {
"core": "arduino",
"f_cpu": "16000000L",
"mcu": "atmega8",
"variant": "standard"
},
"name": "Arduino NG or older w/ ATmega8",
"upload": {
"maximum_size": "7168",
"protocol": "arduino",
"speed": "19200"
}
},
"atmega88_1000000": {
"build": {
"core": "arduino",
"f_cpu": "1000000L",
"mcu": "atmega88",
"variant": "standard"
},
"name": "atmega88@1MHz",
"upload": {
"maximum_size": "8192",
"using": "usbasp"
}
},
"atmega88_12000000": {
"build": {
"core": "arduino",
"f_cpu": "12000000L",
"mcu": "atmega88",
"variant": "standard"
},
"name": "atmega88@12MHz",
"upload": {
"maximum_size": "8192",
"using": "usbasp"
}
},
"atmega88_20000000": {
"build": {
"core": "arduino",
"f_cpu": "20000000L",
"mcu": "atmega88",
"variant": "standard"
},
"name": "atmega88@20MHz",
"upload": {
"maximum_size": "8192",
"using": "usbasp"
}
},
"atmega88_8000000": {
"build": {
"core": "arduino",
"f_cpu": "8000000L",
"mcu": "atmega88",
"variant": "standard"
},
"name": "atmega88@8MHz",
"upload": {
"maximum_size": "8192",
"using": "usbasp"
}
},
"atmega8_1000000": {
"build": {
"core": "arduino",
"f_cpu": "1000000L",
"mcu": "atmega8",
"variant": "standard"
},
"name": "atmega8@1MHz",
"upload": {
"maximum_size": "8192",
"using": "usbasp"
}
},
"atmega8_12000000": {
"build": {
"core": "arduino",
"f_cpu": "12000000L",
"mcu": "atmega8",
"variant": "standard"
},
"name": "atmega8@12MHz",
"upload": {
"maximum_size": "8192",
"using": "usbasp"
}
},
"bt": {
"bootloader": {
"extended_fuses": "0x00",
"file": "ATmegaBOOT_168.hex",
"high_fuses": "0xdd",
"lock_bits": "0x0F",
"low_fuses": "0xff",
"path": "bt",
"unlock_bits": "0x3F"
},
"build": {
"core": "arduino",
"f_cpu": "16000000L",
"mcu": "atmega168",
"variant": "eightanaloginputs"
},
"name": "Arduino BT w/ ATmega168",
"upload": {
"disable_flushing": "true",
"maximum_size": "14336",
"protocol": "arduino",
"speed": "19200"
}
},
"bt328": {
"bootloader": {
"extended_fuses": "0x05",
"file": "ATmegaBOOT_168_atmega328_bt.hex",
"high_fuses": "0xd8",
"lock_bits": "0x0F",
"low_fuses": "0xff",
"path": "bt",
"unlock_bits": "0x3F"
},
"build": {
"core": "arduino",
"f_cpu": "16000000L",
"mcu": "atmega328p",
"variant": "eightanaloginputs"
},
"name": "Arduino BT w/ ATmega328",
"upload": {
"disable_flushing": "true",
"maximum_size": "28672",
"protocol": "arduino",
"speed": "19200"
}
},
"diecimila": {
"bootloader": {
"extended_fuses": "0x00",
"file": "ATmegaBOOT_168_diecimila.hex",
"high_fuses": "0xdd",
"lock_bits": "0x0F",
"low_fuses": "0xff",
"path": "atmega",
"unlock_bits": "0x3F"
},
"build": {
"core": "arduino",
"f_cpu": "16000000L",
"mcu": "atmega168",
"variant": "standard"
},
"name": "Arduino Diecimila or Duemilanove w/ ATmega168",
"upload": {
"maximum_size": "14336",
"protocol": "arduino",
"speed": "19200"
}
},
"esplora": {
"bootloader": {
"extended_fuses": "0xcb",
"file": "Caterina-Esplora.hex",
"high_fuses": "0xd8",
"lock_bits": "0x2F",
"low_fuses": "0xff",
"path": "caterina",
"unlock_bits": "0x3F"
},
"build": {
"core": "arduino",
"f_cpu": "16000000L",
"mcu": "atmega32u4",
"pid": "0x803C",
"variant": "leonardo",
"vid": "0x2341"
},
"name": "Arduino Esplora",
"upload": {
"disable_flushing": "true",
"maximum_size": "28672",
"protocol": "avr109",
"speed": "57600"
}
},
"ethernet": {
"bootloader": {
"extended_fuses": "0x05",
"file": "optiboot_atmega328.hex",
"high_fuses": "0xde",
"lock_bits": "0x0F",
"low_fuses": "0xff",
"path": "optiboot",
"unlock_bits": "0x3F"
},
"build": {
"core": "arduino",
"f_cpu": "16000000L",
"mcu": "atmega328p",
"variant": "standard"
},
"name": "Arduino Ethernet",
"upload": {
"maximum_size": "32256",
"protocol": "arduino",
"speed": "115200"
}
},
"fio": {
"bootloader": {
"extended_fuses": "0x05",
"file": "ATmegaBOOT_168_atmega328_pro_8MHz.hex",
"high_fuses": "0xDA",
"lock_bits": "0x0F",
"low_fuses": "0xFF",
"path": "arduino:atmega",
"unlock_bits": "0x3F"
},
"build": {
"core": "arduino",
"f_cpu": "8000000L",
"mcu": "atmega328p",
"variant": "eightanaloginputs"
},
"name": "Arduino Fio",
"upload": {
"maximum_size": "30720",
"protocol": "arduino",
"speed": "57600"
}
},
"leonardo": {
"bootloader": {
"extended_fuses": "0xcb",
"file": "Caterina-Leonardo.hex",
"high_fuses": "0xd8",
"lock_bits": "0x2F",
"low_fuses": "0xff",
"path": "caterina",
"unlock_bits": "0x3F"
},
"build": {
"core": "arduino",
"f_cpu": "16000000L",
"mcu": "atmega32u4",
"pid": "0x8036",
"variant": "leonardo",
"vid": "0x2341"
},
"name": "Arduino Leonardo",
"upload": {
"disable_flushing": "true",
"maximum_size": "28672",
"protocol": "avr109",
"speed": "57600"
}
},
"lilypad": {
"bootloader": {
"extended_fuses": "0x00",
"file": "LilyPadBOOT_168.hex",
"high_fuses": "0xdd",
"lock_bits": "0x0F",
"low_fuses": "0xe2",
"path": "lilypad",
"unlock_bits": "0x3F"
},
"build": {
"core": "arduino",
"f_cpu": "8000000L",
"mcu": "atmega168",
"variant": "standard"
},
"name": "LilyPad Arduino w/ ATmega168",
"upload": {
"maximum_size": "14336",
"protocol": "arduino",
"speed": "19200"
}
},
"lilypad328": {
"bootloader": {
"extended_fuses": "0x05",
"file": "ATmegaBOOT_168_atmega328_pro_8MHz.hex",
"high_fuses": "0xDA",
"lock_bits": "0x0F",
"low_fuses": "0xFF",
"path": "atmega",
"unlock_bits": "0x3F"
},
"build": {
"core": "arduino",
"f_cpu": "8000000L",
"mcu": "atmega328p",
"variant": "standard"
},
"name": "LilyPad Arduino w/ ATmega328",
"upload": {
"maximum_size": "30720",
"protocol": "arduino",
"speed": "57600"
}
},
"mega": {
"bootloader": {
"extended_fuses": "0xF5",
"file": "ATmegaBOOT_168_atmega1280.hex",
"high_fuses": "0xDA",
"lock_bits": "0x0F",
"low_fuses": "0xFF",
"path": "atmega",
"unlock_bits": "0x3F"
},
"build": {
"core": "arduino",
"f_cpu": "16000000L",
"mcu": "atmega1280",
"variant": "mega"
},
"name": "Arduino Mega (ATmega1280)",
"upload": {
"maximum_size": "126976",
"protocol": "arduino",
"speed": "57600"
}
},
"mega2560": {
"bootloader": {
"extended_fuses": "0xFD",
"file": "stk500boot_v2_mega2560.hex",
"high_fuses": "0xD8",
"lock_bits": "0x0F",
"low_fuses": "0xFF",
"path": "stk500v2",
"unlock_bits": "0x3F"
},
"build": {
"core": "arduino",
"f_cpu": "16000000L",
"mcu": "atmega2560",
"variant": "mega"
},
"name": "Arduino Mega 2560 or Mega ADK",
"upload": {
"maximum_size": "258048",
"protocol": "wiring",
"speed": "115200"
}
},
"micro": {
"bootloader": {
"extended_fuses": "0xcb",
"file": "Caterina-Micro.hex",
"high_fuses": "0xd8",
"lock_bits": "0x2F",
"low_fuses": "0xff",
"path": "caterina",
"unlock_bits": "0x3F"
},
"build": {
"core": "arduino",
"f_cpu": "16000000L",
"mcu": "atmega32u4",
"pid": "0x8037",
"variant": "micro",
"vid": "0x2341"
},
"name": "Arduino Micro",
"upload": {
"disable_flushing": "true",
"maximum_size": "28672",
"protocol": "avr109",
"speed": "57600"
}
},
"mini": {
"bootloader": {
"extended_fuses": "0x00",
"file": "ATmegaBOOT_168_ng.hex",
"high_fuses": "0xdd",
"lock_bits": "0x0F",
"low_fuses": "0xff",
"path": "atmega",
"unlock_bits": "0x3F"
},
"build": {
"core": "arduino",
"f_cpu": "16000000L",
"mcu": "atmega168",
"variant": "eightanaloginputs"
},
"name": "Arduino Mini w/ ATmega168",
"upload": {
"maximum_size": "14336",
"protocol": "arduino",
"speed": "19200"
}
},
"mini328": {
"bootloader": {
"extended_fuses": "0x05",
"file": "optiboot_atmega328-Mini.hex",
"high_fuses": "0xd8",
"lock_bits": "0x0F",
"low_fuses": "0xff",
"path": "optiboot",
"unlock_bits": "0x3F"
},
"build": {
"core": "arduino",
"f_cpu": "16000000L",
"mcu": "atmega328p",
"variant": "eightanaloginputs"
},
"name": "Arduino Mini w/ ATmega328",
"upload": {
"maximum_size": "28672",
"protocol": "arduino",
"speed": "115200"
}
},
"nano": {
"bootloader": {
"extended_fuses": "0x00",
"file": "ATmegaBOOT_168_diecimila.hex",
"high_fuses": "0xdd",
"lock_bits": "0x0F",
"low_fuses": "0xff",
"path": "atmega",
"unlock_bits": "0x3F"
},
"build": {
"core": "arduino",
"f_cpu": "16000000L",
"mcu": "atmega168",
"variant": "eightanaloginputs"
},
"name": "Arduino Nano w/ ATmega168",
"upload": {
"maximum_size": "14336",
"protocol": "arduino",
"speed": "19200"
}
},
"nano328": {
"bootloader": {
"extended_fuses": "0x05",
"file": "ATmegaBOOT_168_atmega328.hex",
"high_fuses": "0xDA",
"lock_bits": "0x0F",
"low_fuses": "0xFF",
"path": "atmega",
"unlock_bits": "0x3F"
},
"build": {
"core": "arduino",
"f_cpu": "16000000L",
"mcu": "atmega328p",
"variant": "eightanaloginputs"
},
"name": "Arduino Nano w/ ATmega328",
"upload": {
"maximum_size": "30720",
"protocol": "arduino",
"speed": "57600"
}
},
"pro": {
"bootloader": {
"extended_fuses": "0x00",
"file": "ATmegaBOOT_168_pro_8MHz.hex",
"high_fuses": "0xdd",
"lock_bits": "0x0F",
"low_fuses": "0xc6",
"path": "atmega",
"unlock_bits": "0x3F"
},
"build": {
"core": "arduino",
"f_cpu": "8000000L",
"mcu": "atmega168",
"variant": "standard"
},
"name": "Arduino Pro or Pro Mini (3.3V, 8 MHz) w/ ATmega168",
"upload": {
"maximum_size": "14336",
"protocol": "arduino",
"speed": "19200"
}
},
"pro328": {
"bootloader": {
"extended_fuses": "0x05",
"file": "ATmegaBOOT_168_atmega328_pro_8MHz.hex",
"high_fuses": "0xDA",
"lock_bits": "0x0F",
"low_fuses": "0xFF",
"path": "atmega",
"unlock_bits": "0x3F"
},
"build": {
"core": "arduino",
"f_cpu": "8000000L",
"mcu": "atmega328p",
"variant": "standard"
},
"name": "Arduino Pro or Pro Mini (3.3V, 8 MHz) w/ ATmega328",
"upload": {
"maximum_size": "30720",
"protocol": "arduino",
"speed": "57600"
}
},
"pro5v": {
"bootloader": {
"extended_fuses": "0x00",
"file": "ATmegaBOOT_168_diecimila.hex",
"high_fuses": "0xdd",
"lock_bits": "0x0F",
"low_fuses": "0xff",
"path": "atmega",
"unlock_bits": "0x3F"
},
"build": {
"core": "arduino",
"f_cpu": "16000000L",
"mcu": "atmega168",
"variant": "standard"
},
"name": "Arduino Pro or Pro Mini (5V, 16 MHz) w/ ATmega168",
"upload": {
"maximum_size": "14336",
"protocol": "arduino",
"speed": "19200"
}
},
"pro5v328": {
"bootloader": {
"extended_fuses": "0x05",
"file": "ATmegaBOOT_168_atmega328.hex",
"high_fuses": "0xDA",
"lock_bits": "0x0F",
"low_fuses": "0xFF",
"path": "atmega",
"unlock_bits": "0x3F"
},
"build": {
"core": "arduino",
"f_cpu": "16000000L",
"mcu": "atmega328p",
"variant": "standard"
},
"name": "Arduino Pro or Pro Mini (5V, 16 MHz) w/ ATmega328",
"upload": {
"maximum_size": "30720",
"protocol": "arduino",
"speed": "57600"
}
},
"uno": {
"bootloader": {
"extended_fuses": "0x05",
"file": "optiboot_atmega328.hex",
"high_fuses": "0xde",
"lock_bits": "0x0F",
"low_fuses": "0xff",
"path": "optiboot",
"unlock_bits": "0x3F"
},
"build": {
"core": "arduino",
"f_cpu": "16000000L",
"mcu": "atmega328p",
"variant": "standard"
},
"name": "Arduino Uno",
"upload": {
"maximum_size": "32256",
"protocol": "arduino",
"speed": "115200"
}
}
}
Help:
$ python -m confduino.boardlist --help
usage: boardlist.py [-h] [--hwpack HWPACK] [-v] [--debug]
print boards from boards.txt
optional arguments:
-h, --help show this help message and exit
--hwpack HWPACK
-v, --verbose
--debug set logging level to DEBUG
From python:
>>> from confduino.mculist import mcus
>>> mcus()
['atmega1280', 'atmega168', 'atmega2560', 'atmega328p', 'atmega32u4', 'atmega8', 'atmega88']
From console:
$ python -m confduino.mculist
atmega1280
atmega168
atmega2560
atmega328p
atmega32u4
atmega8
atmega88
Help:
$ python -m confduino.mculist --help
usage: mculist.py [-h] [--debug]
print boards from boards.txt
optional arguments:
-h, --help show this help message and exit
--debug set logging level to DEBUG
Existing board will not be changed.
From python:
from confduino.boardinstall import install_board
from confduino.util import AutoBunch
from entrypoint2 import entrypoint
TEMPL = '{mcu}@{f_cpu} programmer:{upload}'
@entrypoint
def install(
board_id='atmega88',
mcu='atmega88',
f_cpu=20000000,
upload='usbasp',
core='arduino',
replace_existing=True,
):
'install atmega88 board'
board = AutoBunch()
board.name = TEMPL.format(mcu=mcu, f_cpu=f_cpu, upload=upload)
board.upload.using = upload
board.upload.maximum_size = 8 * 1024
board.build.mcu = mcu
board.build.f_cpu = str(f_cpu) + 'L'
board.build.core = core
# for 1.0
board.build.variant = 'standard'
install_board(board_id, board, replace_existing=replace_existing)
console is not implemented
From python:
>>> from confduino.boardremove import remove_board
>>> remove_board('diecimila')
From console:
python -m confduino.boardremove diecimila
Help:
$ python -m confduino.boardremove --help
usage: boardremove.py [-h] [--debug] board_id
remove board
positional arguments:
board_id board id (e.g. 'diecimila')
optional arguments:
-h, --help show this help message and exit
--debug set logging level to DEBUG