Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork435
arduino/arduino-cli
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
arduino-cli is an all-in-one solution that provides builder, boards/library manager, uploader,discovery and many other tools needed to use any Arduino compatible board and platforms.
This software is currently under active development: anything can change at any time, API and UImust be considered unstable.
Contributions are welcome!
Please read the documentHow to contribute which will guide you through how tobuild the source code, run the tests, and contribute your changes to the project.
The easiest way to get the latest version ofarduino-cli on any supported platform is using theinstall.sh script:
curl -fsSL https://raw.githubusercontent.com/arduino/arduino-cli/master/install.sh | shThe script will installarduino-cli at$PWD/bin, if you want to target a different directory,for example~/local/bin, set theBINDIR environment variable like this:
curl -fsSL https://raw.githubusercontent.com/arduino/arduino-cli/master/install.sh | BINDIR=~/local/bin shDeprecation notice: Links in the formhttp://downloads.arduino.cc/arduino-cli/arduino-cli-latest-<platform>.tar.bz2won't be further updated. That URL will provide arduino-cli 0.3.7-alpha.preview, regardless of further releases.
Alternatively you can download one of the pre-built binaries for the supported platforms from therelease page. Once downloaded, place the executablearduino-cli into a directory which is in yourPATH.
These builds are generated once a day frommaster branch starting at 01:00 GMT
In order to get the latest nightly build for your platform use the following links:
These links return a302: Found response, redirecting to latest generated builds by replacinglatest with the latestavailable build date, using the format YYYYMMDD (i.e for 2019/Aug/06latest is replaced with20190806 )
Checksums for the nightly builds are available athttps://downloads.arduino.cc/arduino-cli/nightly/nightly-<DATE>-checksums.txt
Once downloaded, place the executablearduino-cli into a directory which is in yourPATH.
If you don't have a working Golang environment or if you want to buildarduino-cli targetingdifferent platforms, you can use Docker to get a binary directly from sources. From the projectfolder run:
docker run -v $PWD:/arduino-cli -w /arduino-cli arduino/arduino-cli:builder-0.1 goreleaser --rm-dist --snapshot --skip-publishOnce the build is over, you will find a./dist/ folder containing the packages built out ofthe current source tree.
If you're familiar with Golang or if you want to contribute to the project, you will probablybuild thearduino-cli locally with your Go compiler. Please refer to thecontributing doc for setup instructions.
The goal of the Arduino CLI is to be used by either including it in Makefile or in any kind ofscript for the Command Line. The Arduino CLI aims to replace the majority of features the ArduinoIDE has without the graphical UI.
The command will create a new empty sketch named MyFirstSketch in the default directory under $HOME/Arduino/
$arduino-cli sketch new MyFirstSketchSketch created in: /home/luca/Arduino/MyFirstSketch$cat /home/luca/Arduino/MyFirstSketch/MyFirstSketch.inovoid setup() {}void loop() {}
Use your favourite file editor or IDE to modify the .ino file under:$HOME/Arduino/MyFirstSketch/MyFirstSketch.inoand change the file to look like this one:
voidsetup() {pinMode(LED_BUILTIN,OUTPUT);}voidloop() {digitalWrite(LED_BUILTIN,HIGH);delay(1000);digitalWrite(LED_BUILTIN,LOW);delay(1000);}
If you are running a fresh install of the arduino-cli you probably need to update the platformindexes by running:
$arduino-cli core update-indexUpdating index: package_index.json downloaded
Now, just connect the board to your PCs by using the USB cable. In this example we will use theMKR1000 board:
$arduino-cli board listFQBN Port ID Board Name /dev/ttyACM0 2341:804E unknown
the board has been discovered but we do not have the correct core to program it yet.Let's install it!
We have to look at the core available with thecore search command. It will provide a list ofavailable cores matching the name arduino:
$arduino-cli core search arduinoSearching for platforms matching 'arduino'ID Version NameIntel:arc32 2.0.4 Intel Curie Boardsarduino:avr 1.6.23 Arduino AVR Boardsarduino:mbed 1.1.0 Arduino nRF528x Boards (Mbed OS)arduino:megaavr 1.8.3 Arduino megaAVR Boardsarduino:nrf52 1.0.2 Arduino nRF52 Boardsarduino:sam 1.6.12 Arduino SAM Boards (32-bits ARM Cortex-M3)arduino:samd 1.8.3 Arduino SAMD Boards (32-bits ARM Cortex-M0+)arduino:samd_beta 1.6.25 Arduino SAMD Beta Boards (32-bits ARM Cortex-M0+)arduino:stm32f4 1.0.1 Arduino STM32F4 BoardslittleBits:avr 1.0.0 littleBits Arduino AVR Modules
If you're unsure you can try to refine the search with the board name
$arduino-cli core search mkr1000Searching for platforms matching 'mkr1000'ID Version Namearduino:samd 1.8.3 Arduino SAMD Boards (32-bits ARM Cortex-M0+)
So, the right platform for the Arduino MKR1000 is arduino:samd, now we can install it
$arduino-cli core install arduino:samdDownloading tools...arduino:arm-none-eabi-gcc@4.8.3-2014q1 downloadedarduino:bossac@1.7.0 downloadedarduino:openocd@0.9.0-arduino6-static downloadedarduino:CMSIS@4.5.0 downloadedarduino:CMSIS-Atmel@1.1.0 downloadedarduino:arduinoOTA@1.2.0 downloadedDownloading cores...arduino:samd@1.6.19 downloadedInstalling tools...Installing platforms...Results:arduino:samd@1.6.19 - Installedarduino:arm-none-eabi-gcc@4.8.3-2014q1 - Installedarduino:bossac@1.7.0 - Installedarduino:openocd@0.9.0-arduino6-static - Installedarduino:CMSIS@4.5.0 - Installedarduino:CMSIS-Atmel@1.1.0 - Installedarduino:arduinoOTA@1.2.0 - Installed
Now verify we have installed the core properly by running
$arduino-cli core listID Installed Latest Namearduino:samd 1.6.19 1.6.19 Arduino SAMD Boards (32-bits ARM Cortex-M0+)
We can finally check if the board is now recognized as a MKR1000
$arduino-cli board listFQBN Port ID Board Namearduino:samd:mkr1000 /dev/ttyACM0 2341:804E Arduino/Genuino MKR1000
If the board is not detected for any reason, you can list all the supported boardswitharduino-cli board listall and also search for a specific board:
$arduino-cli board listall mkrBoard Name FQBNArduino MKR FOX 1200 arduino:samd:mkrfox1200Arduino MKR GSM 1400 arduino:samd:mkrgsm1400Arduino MKR WAN 1300 arduino:samd:mkrwan1300Arduino MKR WiFi 1010 arduino:samd:mkrwifi1010Arduino MKRZERO arduino:samd:mkrzeroArduino/Genuino MKR1000 arduino:samd:mkr1000
Great! Now we have the Board FQBN (Fully Qualified Board Name)arduino:samd:mkr1000and the Board Name look good, we are ready to compile and upload the sketch
To add 3rd party core packages add a link of the additional package to the filearduino-cli.yaml
If you want to add the ESP8266 core, for example:
board_manager:additional_urls: -http://arduino.esp8266.com/stable/package_esp8266com_index.json
And then run:
$arduino-cli core update-indexUpdating index: package_index.json downloadedUpdating index: package_esp8266com_index.json downloadedUpdating index: package_index.json downloaded$arduino-cli core search esp8266ID Version Nameesp8266:esp8266 2.5.2 esp8266
Alternatively, you can pass the--additional-urls to any command involving the additional cores:
$arduino-cli core update-index --additional-urls http://arduino.esp8266.com/stable/package_esp8266com_index.json$$arduino-cli core search esp8266 --additional-urls http://arduino.esp8266.com/stable/package_esp8266com_index.jsonID Version Nameesp8266:esp8266 2.5.2 esp8266
To compile the sketch we have to run thecompile command with the proper FQBN we just got in theprevious command.
$arduino-cli compile --fqbn arduino:samd:mkr1000 Arduino/MyFirstSketchSketch uses 9600 bytes (3%) of program storage space. Maximum is 262144 bytes.
We can finally upload the sketch and see our board blinking, we now have to specify the serial portused by our board other than the FQBN:
$arduino-cli upload -p /dev/ttyACM0 --fqbn arduino:samd:mkr1000 Arduino/MyFirstSketchNo new serial port detected.Atmel SMART device 0x10010005 foundDevice : ATSAMD21G18AChip ID : 10010005Version : v2.0 [Arduino:XYZ] Dec 20 2016 15:36:43Address : 8192Pages : 3968Page Size : 64 bytesTotal Size : 248KBPlanes : 1Lock Regions : 16Locked : noneSecurity : falseBoot Flash : trueBOD : trueBOR : trueArduino : FAST_CHIP_ERASEArduino : FAST_MULTI_PAGE_WRITEArduino : CAN_CHECKSUM_MEMORY_BUFFERErase flashdone in 0.784 secondsWrite 9856 bytes to flash (154 pages)[==============================] 100% (154/154 pages)done in 0.069 secondsVerify 9856 bytes of flash with checksum.Verify successfuldone in 0.009 secondsCPU reset.
Now we can try to add a useful library to our sketch. We can at first look at the name of a library,our favourite one is the wifi101, here the command to get more info:
$arduino-cli lib search wifi101Name: "WiFi101OTA" Author: Arduino Maintainer: Arduino <info@arduino.cc> Sentence: Update sketches to your board over WiFi Paragraph: Requires an SD card and SAMD board Website: http://www.arduino.cc/en/Reference/WiFi101OTA Category: Other Architecture: samd Types: Arduino Versions: [1.0.2, 1.0.0, 1.0.1]Name: "WiFi101" Author: Arduino Maintainer: Arduino <info@arduino.cc> Sentence: Network driver for ATMEL WINC1500 module (used on Arduino/Genuino Wifi Shield 101 and MKR1000 boards) Paragraph: This library implements a network driver for devices based on the ATMEL WINC1500 wifi module Website: http://www.arduino.cc/en/Reference/WiFi101 Category: Communication Architecture: * Types: Arduino Versions: [0.5.0, 0.6.0, 0.10.0, 0.11.0, 0.11.1, 0.11.2, 0.12.0, 0.15.2, 0.8.0, 0.9.0, 0.12.1, 0.14.1, 0.14.4, 0.14.5, 0.15.1, 0.7.0, 0.14.0, 0.14.2, 0.14.3, 0.9.1, 0.13.0, 0.15.0, 0.5.1]
We are now ready to install it! Please be sure to use the full name of the lib as specified in the"Name:" section previously seen:
$arduino-cli lib install"WiFi101"Downloading libraries...WiFi101@0.15.2 downloadedInstalled WiFi101@0.15.2
arduino-cli is a container of commands, to see the full list just run:
$arduino-cliArduino Command Line Interface (arduino-cli).Usage: arduino-cli [command]Examples:arduino <command> [flags...]Available Commands: board Arduino board commands. compile Compiles Arduino sketches. config Arduino Configuration Commands. core Arduino Core operations. help Help about any command lib Arduino commands about libraries. sketch Arduino CLI Sketch Commands. upload Upload Arduino sketches. version Shows version number of Arduino CLI. ....
Each command has his own specific help that can be obtained with thehelp command, for example:
$arduino-clihelp coreArduino Core operations.Usage: arduino-cli core [command]Examples:arduino-cli core update-index # to update the package index file.Available Commands: download Downloads one or more cores and corresponding tool dependencies. install Installs one or more cores and corresponding tool dependencies. list Shows the list of installed cores. update-index Updates the index of cores.Flags: -h, --help help for coreGlobal Flags: --config-file string The custom config file (if not specified the default one will be used). --debug Enables debug output (super verbose, used to debug the CLI). --format string The output format, can be [text|json]. (default "text")Use "arduino-cli core [command] --help" for more information about a command.
Because:
- Your board is a cheaper clone, or
- It mounts a USB2Serial converter like FT232 or CH320: these chips always reports the same USBVID/PID to the operating system, so the only thing that we know is that the board mounts thatspecific USB2Serial chip, but we don't know which board is.
arduino:avr
- Arduino UNO:
arduino:avr:uno - Arduino Mega:
arduino:avr:mega - Arduino Nano:
arduino:avr:nanoorarduino:avr:nano:cpu=atmega328oldif you have the old bootloader
Update the core index to have latest boards informations:
$arduino-cli core update-indexUpdating index: package_index.json downloaded
See:https://github.com/arduino/arduino-cli#step-4-find-and-install-the-right-core
Further help can be found inthis comment in#138.
For a deeper understanding of how FQBN works, you should understand Arduino Hardware specification.You can find more information in thisarduino/Arduino wiki page
Theclient_example folder contains a sample program thatshows how to use gRPC interface of the CLI.
About
Arduino command line tool
Topics
Resources
License
Contributing
Security policy
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Sponsor this project
Uh oh!
There was an error while loading.Please reload this page.
Uh oh!
There was an error while loading.Please reload this page.