Dno (0.9.3) User Guide

The dno command-line build system for Arduino software

June 2026


Table of Contents

Introduction to Dno
1. Installation
1.1. Compatibility
1.2. Dependencies
1.3. Installing From A Tarball
1.4. Installing By Cloning From Github
2. Installing And Updating Arduino Toolsets
2.1. Install The Standard Old Arduino IDE
2.2. Ensure dno Sees The New Files
2.3. Update Installed Boards
3. Getting Started
3.1. Creating The Project Directory
3.2. Create An Initial Sketch
3.3. Select Our Board
3.4. Compiling/Building
3.5. Uploading To A Board
3.6. Uploading Using a Programmer
3.7. In Summary
4. A Little Exploration
4.1. Board Specifiers
4.2. Dno is Based on make
4.3. The Project Directory
4.4. The BOARD_TYPE File, And Board Types
4.5. Cleaning
4.6. The BOARD_INFO file
4.7. The BOARD_OPTIONS file
4.8. Connecting to Physical Arduino Boards
4.9. Performance
5. The Dno Directory System
5.1. The Project/Root Directory
5.2. Board Subdirectories
5.3. Library Subdirectories
5.4. The docs Subdirectory
5.5. The boot Subdirectory
6. Libraries
6.1. Developing With Libraries - A Walkthrough
6.2. Unit Testing
7. Documentation with Doxygen
7.1. Doxygen Configuration
7.2. Documenting Libraries
7.3. Building Documentation
8. Other Features and Capabilities
8.1. Revision Control
8.2. Configuration Options
8.3. .ino files
8.4. Tags
8.5. Serial Communication
8.6. Custom dno Functionality
8.7. Using External Programmers
8.8. Building Custom Bootloaders
8.9. EEPROMs
9. Benchmarks
9.1. Full build for Arduino Pro
9.2. Minimal build for Arduino Pro
9.3. dno build with no updates
9.4. Tabulated Results
10. Developing and Debugging Dno
10.1. On clones/forks, autotools and configure
11. Why?
11.1. And How?
A. man page for dno(1)
B. man page for dno_bpp(1)
C. man page for dno_checksize(1)
D. man page for dno_commands_for(1)
E. man page for dno_dirinfo(1)
F. man page for dno_ino2c(1)
G. man page for dno_menu(1)
H. man page for dno_prog(1)
I. man page for dno_requote(1)
J. man page for BOARD_INFO(5)
K. man page for BOARD_OPTIONS(5)
L. man page for BOARD_TYPE(5)
M. GNU General Public License version 3