Upload to specific boards¶
Some sections in this chapter require embedXcode+.
Select your platform¶
The following boards and programmers require specific procedures for uploading the sketch:
Platform | Boards | |
---|---|---|
![]() |
Adafruit | Trinket and Pro Trinket , Feather M0 and M4 , Feather nRF52832 and nRF52840 using J-Link |
![]() |
Arduino | Arduino Leonardo , Arduino Yún using Ethernet or WiFi, Arduino M0 Pro , Arduino Zero |
![]() |
Espressif | ESP8266 NodeMCU using WiFi, ESP32-CAM , ESP32 boards using ESP-Prog, ESP32 boards using WiFi |
![]() |
LaunchPad | LaunchPad boards using XDS110, LaunchPad C2000 , LaunchPad CC3200 WiFi , LaunchPad CC3220 WiFi , LaunchPad MSP430F5529 and MSP430FR5969 |
![]() |
Microsoft | Microsoft Azure IoT DevKit |
![]() |
RasPiArduino | Raspberry Pi |
![]() |
Seeeduino | Xiao M0 and Wio Terminal , Wio Terminal RTL8720DN MCU |
![]() |
Teensy | Teensy 3.x and 4.0 |
The next section details the procedure to Restore initial mode on specific boards .
Upload to Adafruit Trinket and Pro Trinket boards¶
This section requires the embedXcode+ edition.
The Trinket and Pro Trinket boards from Adafruit require a specific procedure.
For the Pro Trinket, Adafruit recommends to use a standard FTDI programmer for a better reliability. For more information,
- Please refer to the Using FTDI Cables page on the Adafruit website.
Proceed as follow:
-
Plug the Adafruit board in.
-
Launch any of the targets All, Upload or Fast.
-
Wait for the message window:

- Press the Reset button on the board.

-
The red LED starts flashing.
-
Click on OK.

By default, those boards don’t feature a serial-to-USB communication.
For more information,
- Please refer to the pages Programming with AVRdude for the Trinket boards and Setting-Up the Arduino IDE for the Pro Trinket boards.
Upload to Adafruit Feather M0 and M4 boards¶
For the Adafruit Feather M0 and M4 boards, Adafruit offers two options to upload the executable to the boards.
The first option is the standard upload procedure through serial over USB.
The second option, called UF2 for USB Flashing Format, turns the board into a mass storage device. Programming is done with a simple drag-and-drop or copy of the executable onto the mass storage device.
Upload to Feather M0 and M4 boards using standard USB¶
Before uploading using the standard USB procedure,
-
Plug the Adafruit board in.
-
Check the LED on the board is green.
-
Otherwise, double-press the Reset button on the board to enter boot-loader mode.
For more information,
- Please refer to the page Manually bootloading .
Upload to Adafruit Feather M0 and M4 boards using UF2¶
For the Adafruit Feather M0 and M4 boards, this drag-and-drop procedure requires a specific format. The executable needs to be converted into a .uf2
file. The utility for the conversion is provided by the Adafruit nRF52 boards package.
To install the Adafruit nRF52 boards package,
- Please refer to Install the Adafruit platform section.
Before uploading,
-
Plug the Adafruit board in.
-
Check a volume called
FEATHERBOOT
is shown on the desktop.

-
Otherwise, double-press the Reset button on the board to activate it.
-
Check the LED on the board is green.
For more information on the Feather M0 and the UF2 boot-loader,
- Please refer to the pages UF2 Bootloader Details , Installing the UF2 Bootloader , UF2 Bootloader Details and Updating the boot-loader .
For more information on the Feather M4 and the UF2 boot-loader,
- Please refer to the pages UF2 Bootloader Details , Entering Bootloader Mode and Manually bootloading .
Upload to Adafruit Feather nRF52 boards¶
For the Adafruit Feather nRF52832 and nRF52840 boards, Adafruit offers up to three options to upload the executable to the boards.
The first option is the standard upload procedure through serial over USB.
The second option, called UF2 for USB Flashing Format, turns the board into a mass storage device. Programming is done with a simple drag-and-drop or copy of the executable onto the mass storage device. This option is only available on the Adafruit Feather nRF52840 board.
The third option uses an external programmer-debugger like the Segger J-Link. The Adafruit Feather nRF52840 board comes with the SWD 2x5 1.27 mm connector. It needs to be soldered on the Adafruit Feather nRF52832 board.
Upload to Adafruit Feather nRF52840 board using UF2¶
For the Adafruit Feather nRF52840, the drag-and-drop procedure requires the same specific format as for the Adafruit Feather M0 and M4 boards. The Adafruit nRF52 boards package includes the utility to convert the executable into a .uf2
file. This option is not available on the Adafruit Feather nRF52832 board.
Before uploading to the Adafruit Feather nRF52840,
-
Select the board Adafruit Feather nRF52840 s140b611 (MSD).
-
Plug the Adafruit board in.
-
Check a volume called
FTHR840BOOT
is shown on the desktop. -
Otherwise, double-press the Reset button on the board to activate it.
-
Check the LED on the board is green.
-
Launch any of the targets All, Upload or Fast.
For more information on the Feather nRF52840,
- Please refer to the page Update Bootloader .
For more information on the Feather nRF52832,
- Please refer to the page Flashing the Bootloader .
Upload to Adafruit Feather nRF52 boards using Segger J-Link¶
The Adafruit Feather nRF52840 board provides the SWD 2x5 1.27 mm connector, while the Adafruit Feather nRF52832 board provisions the pads to solder the connector on.
Depending on the Segger J-Link model, the programmer-debugger can power the board. Otherwise, the board requires an external LiPo or USB.
-
Connect the programmer-debugger to the board.
-
If the programmer-debugger doesn’t power the board, use an external LiPo or USB.
-
Select the board Adafruit Feather nRF52832 s132v611 (J-Link) or Adafruit Feather nRF52840 s140b611 (J-Link) to use J-Link,
-
Select the board Adafruit Feather nRF52832 s132v611 (Ozone) or Adafruit Feather nRF52840 s140b611 (Ozone) to use Ozone.
-
Launch any of the targets All, Upload, Fast or Debug.
Upload to Arduino Leonardo¶
The Arduino Leonardo doesn’t rely on an external circuit for the serial over USB connection.
There are two steps for upload the executable to the board. First, the main computer turns the serial connection to 1200 bps to trigger the boot-loader. Then, the main computer enumerates the available serial ports and starts uploading.
The delay between the two steps can be adjusted. The default value is set to one second.
DELAY_BEFORE_UPLOAD = 1
-
Open the
Arduino Leonardo.xcconfig
board configuration file. -
Edit the line with
DELAY_BEFORE_UPLOAD
and change the value.
DELAY_BEFORE_UPLOAD = 2
The values reported as successful are between one and three seconds.
-
Select the target All or Fast or Upload.
-
Press the button Run or press Cmd+B.
Upload to Arduino Yún using Ethernet or WiFi¶
This section requires the embedXcode+ edition.
Although the Arduino Yún requires no specific procedure, the Ethernet or WiFi network needs to be installed and configured successfully before any upload, and the RSA key fingerprint of the Arduino Yún needs to be known by the Mac.
-
Check that the router has discovered the Arduino Yún and note the IP address.
-
Check the Mac knows the RSA key fingerprint of the Arduino Yún.
-
Also, keep the password of the Arduino Yún at hand.
-
Disconnect all the SPI devices from the ICSP connector as the WiFi module uses SPI to communicate with the Arduino.
It is recommended to proceed with a test of the over-the-air upload with the Arduino IDE, through Ethernet or WiFi, to be sure that the Mac recognises the board and knows the RSA key fingerprint of the Arduino Yún.
Check the SSH connection¶
To check the router has discovered the Arduino Yún,
-
Open a Terminal window.
-
Type the command
arp -a
to list all know hosts.
The Arduino Yún board should appear as arduino.local
but often has a different name, as host-001
.
The default address should be 192.168.240.1
but may differ according to the settings of the network.
To check the Mac knows the RSA key fingerprint of the board,
- Open a Terminal window and type the command
ssh root@
followed by the IP address of the board,192.168.240.1
in the example.
$ ssh root@192.168.240.1
If the board is unknown, a message asks for confirmation of the RSA key fingerprint.
The authenticity of host '192.168.240.1 (192.168.240.1)' can't be established.
RSA key fingerprint is 00:11:22:33:44:55:66:77:88:99:aa:bb:cc:dd:ee:ff.
Are you sure you want to continue connecting (yes/no)? yes
- Enter
yes
and validate.
A message confirms the RSA key fingerprint has been added to the list of know hosts.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.240.1' (RSA) to the list of known hosts.
root@192.168.240.1's password:
- Finally, type in the password to make the connection.
BusyBox v1.19.4 (2013-08-07 16:16:02 CEST) built-in shell (ash)
Enter 'help' for a list of built-in commands.
root@Arduino:~#
The Terminal window s displays the splash screen of the Arduino Yún.
BusyBox v1.19.4 (2014-04-10 11:08:41 CEST) built-in shell (ash)
Enter 'help' for a list of built-in commands.
_______ ________ __
| |.-----.-----.-----.| | | |.----.| |_
| - || _ | -__| || | | || _|| _|
|_______|| __|_____|__|__||________||__| |____|
|__| W I R E L E S S F R E E D O M
----------------------------------------------------
Enter IP address and Password¶
During the first compilation, embedXcode looks for the Arduino Yún board and checks the password.
If the Arduino board isn’t found on the network, a window asks for the IP address.

-
Enter the IP address of the Arduino Yún board.
-
Click on OK to validate or Cancel to cancel.
A message box asks for the password.

-
Enter the password of the Arduino Yún board.
-
Click on OK to validate or Cancel to cancel.
When validated, the IP address and the password are saved on the board configuration file Arduino Yún (WiFi Ethernet)
in the project.

The IP address and the password are only asked once.
-
To erase the IP address, just delete the whole line.
-
To edit the IP address, just change the left part after
SSH_ADDRESS =
on the corresponding line.
Warning
The password is not encrypted.
-
To erase the password, just delete the whole line.
-
To edit the password, just change the left part after
SSH_PASSWORD =
on the corresponding line.
For more information about the Arduino Yún installation and over-the-air upload,
- Please refer to the Guide to the Arduino Yún on the Arduino website.
Upload the sketch¶
Once the checks have been successfully performed, proceed as follow:
-
Connect the Arduino Yún board to the network through WiFi or Ethernet.
-
Launch any of the targets All, Upload or Fast.
Upload a website to the Arduino Yún¶
embedXcode can upload a website automatically to the Arduino Yún.
There are three requirements. First, upload is done through Ethernet or WiFi connection. Second, the project has a folder named www
with at least a file named index.html
. Third, the Arduino Yún has a microSD-card inserted on the slot.
During upload, the content of the www folder is copied to the microSD-card automatically and made available with a browser at the address /sd/TemperatureWebPanel
.
Once upload is completed, embedXcode open the browser at the website main page.
The TemperatureWebPanel
project contains a www
folder.

For more information,
- Please refer to the Temperature Web Panel at the Arduino main website, and to the page Introduction to Web Server and the project Sensor Values to HTML Page at the Arduino Scuola website.
Upload to Arduino M0 Pro¶
The Arduino M0 Pro has two USB connectors: one called native and another called programmer. Both can be used to upload a sketch.
However, the programming port offers a better stability and is required for debugging.

When using the programming port, a window asks for confirmation.

- Click on Allow to proceed.
Upload to Arduino Zero¶
The Arduino Zero has two USB connectors: one called native and another called programmer. Both can be used to upload a sketch.
However, the programming port offers a better stability and is required for debugging.

When using the programming port, a window asks for confirmation.

- Click on Allow to proceed.
Upload to ESP32-CAM board¶
The ESP32-CAM board comes with no built-in programmer and features a unique Reset button.
Flashing the board requires an external programmer and a specific procedure to put the board in programming mode.

Proceed as follow:
- Connect the
+3.3V
,Ground
,U0R
andU0T
pins of the board to the corresponding pins of the external programmer. - Disconnect the external programmer from the USB port.
- Connect pin
IO0
to ground. - Connect the board to the USB port.
- Press Reset.
- Upload the sketch.
- Disconnect pin
IO0
from ground. - Press Reset to run the executable.
In case the following message is displayed on the serial console,
Brownout detector was triggered
- Power the ESP32 board through the +5V pin instead of the +3.3V pin.
The ESP32 board requires up to 400 mA and may exceed what a standard USB port can deliver.
- Power the ESP32 board with an external power supply.
Upload to ESP32 boards with the ESP-Prog programmer-debugger¶
This section requires the embedXcode+ edition.
The ESP-Prog programmer-debugger provides JTAG debugging and re-routes the serial console.
Proceed as follow:
-
Ensure OpenOCD for ESP32 has been installed. Otherwise, follow the procedure Install the OpenOCD driver for ESP32 .
-
Follow the table at Configure Other JTAG Interface and connect power
+3.3V
andGround
, JTAGTMS
,TDI
,TCK
,TDO
andRESET
, serialTXD
andRXD
pins of the board to the corresponding pins of the ESP-Prog programmer-debugger. -
Open a Terminal and launch the command
% sudo kextunload -b com.FTDI.driver.FTDIUSBSerialDriver
This command prevents macOS from enumerating all the ports of the ESP-Prog programmer-debugger as serial ports.
- Connect the external programmer to the USB port.
In case the following message is displayed on the serial console,
Brownout detector was triggered
- Power the ESP32 board through the
+5V
pin instead of the+3.3V
pin.
The ESP32 board requires up to 400 mA and may exceed what a standard USB port can deliver.
- Power the ESP32 board with an external power supply.
At the end of the session,
- Open a Terminal and launch the command
% sudo kextload -b com.FTDI.driver.FTDIUSBSerialDriver
This command allows macOS to automatically enumerate all the ports as serial ports again.
To check whether the FTDI driver is loaded,
- Open a Terminal and launch the command
% kextstat | grep FTDI
For more information on the ESP-Prog,
- Please refer to Introduction to the ESP-Prog Board and Introduction to the ESP32 JTAG Debugging on the Espressif website.
For more information on debugging the ESP32,
- Please refer to the pages MacOS and Manually unloading the driver on the Espressif website.
Upload to LaunchPad boards with XDS110¶
This section requires the embedXcode+ edition.
The following procedure is valid for boards featuring an XDS110 programmer-debugger, as long as each board has a unique serial number. The unique serial number is used for identification to upload the executable and debug.
Most of the LaunchPad boards of the SimpleLink range include an XDS110 programmer-debugger. The procedure has been tested successfully with the MSP432, CC26xx and CC13xx LaunchPad boards. It is especially handy for projects involving a server and one or many clients.
Note
In order to ensure support for the external USB XDS110 debug probe, speed is limited to 1500 kHz.
In the example below, let’s consider two projects for two CC1352 LaunchPad boards: one is a sensor node and the other the central hub.
-
Connect the first board, here the sensor node.
-
Open a Terminal window and launch
lsusb
, a utility that lists the connected USB devices.
% ~/Library/embedXcode/Tools/Utilities/lsusb
Bus 020 Device 007: ID 0451:bef3 Texas Instruments XDS110 (02.03.00.18) Embed with CMSIS-DAP Serial: L41009S9
-
Note the serial number for the first board, here
L41009S9
for the sensor. -
Connect the second board, here the central hub.
-
Perform the same
lsusb
.
% ~/Library/embedXcode/Tools/Utilities/lsusb
Bus 020 Device 007: ID 0451:bef3 Texas Instruments XDS110 (02.03.00.18) Embed with CMSIS-DAP Serial: L41009S9
Bus 020 Device 006: ID 0451:bef3 Texas Instruments XDS110 (02.03.00.18) Embed with CMSIS-DAP Serial: L41009PJ
- Note the serial number for the second board, here
L41009PJ
for the central hub.
In the example, the sensor node is identified by serial L41009S9
and the central hub by serial L41009PJ
.
-
Create two projects, one for the sensor node and another for the central hub.
-
Edit the main
Makefile
or the board configuration file of each project, hereLaunchPad CC1312 EMT.xcconfig
, and set the uploader toxds110
.
UPLOADER = xds110
On the project for the sensor node board,
-
Run the
All
orFast
target. -
Select
L41009S9
on the dialogue window.

- Click OK.
To make the selection permanent,
-
Edit the main
Makefile
or the board configuration file of the project, hereLaunchPad CC1312 EMT.xcconfig
, for the sensor node board. -
Set the serial number to
L41009S9
.
UPLOADER = xds110
XDS110_SERIAL = L41009S9
On the project for the central hub board,
-
Run the
All
orFast
target for each project. -
Select
L41009PJ
on the dialogue window.

- Click OK.
To make the selection permanent,
-
Edit the main
Makefile
or the board configuration file of the project, hereLaunchPad CC1312 EMT.xcconfig
, for the sensor node board. -
Set the serial number to
L41009PJ
.
UPLOADER = xds110
XDS110_SERIAL = L41009PJ
If no board corresponds to the serial number, an error message is displayed.
XDS110 L41009PJ not found among connected L41009S9 M4111016 E0071009
If two LaunchPad boards with an XDS110 programmer-debugger share the same serial number, the serial number of one board needs to be changed to make it unique.
To change the serial number of one board,
-
Disconnect all boards except the board with the serial number to change.
-
Open a Terminal window.
-
Run the commands
xdsdfu -m
xdsdfu -s 12345678 -r
12345678
is the new serial number.
- Check with
xdsdfu -e
For more information on the XDS110 programmer-debugger and related software, and on how to change the serial number,
- Please refer to the XDS110 Debug Probe User’s Guide .
Upload to LaunchPad C2000¶
The LaunchPad C2000 boards use a new upload procedure with Energia 17.
Prepare LaunchPad C2000 F28027¶
Proceed as follow:
-
Unplug the LaunchPad C2000 F28027 board.
-
For the LaunchPad C2000 F28027, configure
S4 SERIAL
on.

- Configure
S1 BOOT
on-on-on or up-up-up.

-
Plug the LaunchPad C2000 board in.
-
Launch any of the targets All, Upload or Fast.
The project is uploaded into flash.
Prepare LaunchPad C2000 F28069¶
Proceed as follow:
-
Unplug the LaunchPad C2000 F28069 board.
-
Remove jumper
J6
and place jumperJ7
.

Configure S1 BOOT
on-on-on or up-up-up.

-
Plug the LaunchPad C2000 board in.
-
Launch any of the targets All, Upload or Fast.
The project is uploaded into flash.
Prepare LaunchPad C2000 F28069¶
Proceed as follow:
-
Unplug the LaunchPad C2000 F28069 board.
-
Configure
S1 BOOT
on-on-on or up-up-up.

-
Plug the LaunchPad C2000 board in.
-
Launch any of the targets All, Upload or Fast.
The project is uploaded into flash.
Upload to LaunchPad CC3200 WiFi¶
The LaunchPad CC3200 WiFi board requires a specific hardware configuration.
For a normal upload, proceed as follow:
-
Unplug the LaunchPad CC3200 WiFi board..
-
Remove the
JTAG J8
jumper and theSPO2
jumper. -
Place a wire from
JTAG J8
(emulator side) toSOP 2
(CC3200) side.

TCK
connected to SOP 2
-
Plug the LaunchPad CC3200 WiFi board.
-
Launch any of the targets All, Upload or Fast.
The project is uploaded into flash and is kept even if the power is disconnected.
For a debugging session, proceed as follow:
-
Unplug the LaunchPad CC3200 WiFi board..
-
Remove the wire from
JTAG J8
(emulator side) toSOP 2
(CC3200) side. -
Place the
JTAG J8
jumper. -
Place the
SOP 2
jumper.

TCK
and SOP 2
jumpers placed on-
Plug the LaunchPad CC3200 WiFi board.
-
Launch the target Debug.
The project is uploaded into SRAM and is lost in case the power is disconnected.
Upload to LaunchPad CC3220 WiFi¶
The LaunchPad CC3220S and CC3220SF WiFi boards require a specific hardware and software configuration.
For a normal upload, proceed as follow:
-
Unplug the LaunchPad CC3220 WiFi board..
-
Ensure only the
SOP1
jumper is shorted. -
Download and install the Uniflash Standalone Flash Tool for TI Micro-Controllers (MCU), Sitara Processors and SimpleLink Devices from Texas Instruments .
-
Make sure to select release 4, as previous releases do not support the CC3220.
-
Connect the LaunchPad to the computer.

- Open Uniflash and select the
CC3220SF-LAUNCHXL
from the list of devices.

- Click Start Image Creator.

-
Click New Project
-
Give the project a name, for example
CC3220 Development
. -
Select
CC3220SF
from the Device Type drop-down list. -
Set Device Mode to Develop.

-
Click Create Project.
-
Click the Connect button.
-
Under General > Settings, make sure Image mode is set to
Development
.

- Click the Generate Image button, pictured with a flame. Sometimes, this button is not active. In that case, select the Create Image button instead.

- Click Program Image (Create & Program).
The LaunchPad CC3220 should be ready for uploading a sketch to. Keep in mind the sketch resides in RAM and is lost if the power is disconnected.
- Once done, launch Energia and program the CC3220SF with the blinky sketch.
If upload fails, perform the same operation with Uniflash but on Windows.
For more information,
- Please refer to UniFlash v4 Quick Guide .
Upload to LaunchPad MSP430F5529 and MSP430FR5969¶
The LaunchPad MSP430F5529 requires Energia release 10 and the LaunchPad MSP430FR5969 the release 12.
Some versions of the LaunchPad MSP430F5529 and MSP430FR5969 may require an update of the firmware.
To do so,
-
Download Energia release 14 or later.
-
Launch Energia.
-
Create a new basic sketch, for example the
blinky
sketch. -
Select the board LaunchPad with MSP430F5529 or LaunchPad with MSP430FR5969
-
Upload the sketch to the LaunchPad.
If the firmware needs to be updated, a window pops-up.

In that case, follow the instructions.
- Call the menu Tools > Update programmer.

-
Check that the upload of the sketch works correctly.
-
If necessary, repeat the update of the programmer.
-
Close Energia.
Upload to Microsoft Azure IoT DevKit¶
This section requires the embedXcode+ edition.
The Microsoft Azure IoT DevKit offers different options for uploading the sketch to the board.
Upload to Microsoft Azure IoT DevKit Through USB Port¶
Proceed as follow:
-
Connect the Microsoft Azure IoT DevKit board to the computer.
-
Select the
Microsoft IoT DevKit (USB)
board. -
Launch any of the targets All, Upload or Fast.
Upload to Microsoft Azure IoT DevKit Through Mass Storage Device¶
Proceed as follow:
- Connect the Microsoft Azure IoT DevKit module to the computer.
A new volume called AZ3166
appears.

-
Select the
Microsoft IoT DevKit (MSD)
board. -
Launch any of the targets All, Upload or Fast.
During the upload process, a warning notification may appear.

- Click on Close to close the notification.
Upload to NodeMCU 1.0 board¶
The NodeMCU 1.0 board requires a specific procedure.
Proceed as follow:
Plug the NodeMCU 1.0 board in.
-
Launch any of the targets All, Upload or Fast.
-
Wait for the message window:

-
Press the Reset and
FLASH
buttons on the board. -
Release the Reset button first.
-
Release then the
FLASH
button.

- Click on OK.

For more information,
- Please refer to the ESP8266 Community Forum .
Upload to ESP32 boards using WiFi¶
This section requires the embedXcode+ edition.
Although the ESP32 boards require no specific procedure for an over-the-air upload, the WiFi network needs to be installed and configured successfully before any upload.
Over-the-air upload requires that a sketch based on the ArduinoOTA library has been installed previously and is currently running. Otherwise,
- Build and upload the
BasicOTA
example using the Arduino IDE.
Before uploading, please
-
Check that the router has discovered the ESP32 board and note the IP address.
-
It is recommended to proceed with a test of the WiFi connection. Either try pinging the board on the Terminal, or uploading a sketch from the Arduino IDE.
Check the running sketch¶
The over-the-air process is managed by the sketch itself, based on the ArduinoOTA
library.
If the ArduinoOTA
object isn’t running,
-
Build the
BasicOTA
example. -
Upload using an USB connection.
Note
The sketch requires twice its size.
Check the WiFi connection¶
To identify the IP addresses of the ESP32 board,
-
Open a Terminal window.
-
Run the following command.
$ arp -a
esp_a1b2c3 (192.168.240.1) at 12:ef:34:a1:b2:c3 on en0 ifscope [ethernet]
The address 192.168.240.1
gives access to the board.
- Test the board is connected with ping.
$ ping 192.168.240.1
Enter IP address¶
During the first compilation, embedXcode looks for the ESP32 board.
If the ESP32 board isn’t found on the network, a window asks for the IP address.

-
Enter the IP address of the ESP32 board.
-
Click on OK to validate or Cancel to cancel.
When validated, the IP address is saved on the board configuration file Adafruit Huzzah ESP32 (WiFi)
or ESP32 DevKitC (WiFi)
in the project.
SSH_ADDRESS = 192.168.240.1
The IP address is only asked once.
-
To erase the IP address, just delete the whole line.
-
To edit the IP address, just change the left part after
SSH_ADDRESS =
on the corresponding line.
Password isn’t implemented.
Upload Wiring / Arduino sketch¶
Once the checks have been performed successfully, proceed as follow:
Connect the ESP32 board to the network through WiFi.
- Launch any of the targets All, Upload or Fast.
A window may ask for allowing incoming network connections.
- Click on Allow to proceed.
Note
The sketch requires twice its size.
For more information about the installation and use of the over-the-air upload,
Please refer to Arduino library to upload sketch over network to supported Arduino board at the ArduinoOTA repository.
Another procedure turns the ESP32 board into a web server.
- Please refer to the procedure Over the Air through Web browser .
Upload to ESP8266 NodeMCU boards using WiFi¶
This section requires the embedXcode+ edition.
Although the ESP8266 and NodeMCU boards require no specific procedure for an over-the-air upload, the WiFi network needs to be installed and configured successfully before any upload.
Over-the-air upload requires that a sketch based on the ArduinoOTA library has been installed previously and is currently running. Otherwise,
- Build and upload the
BasicOTA
example using the Arduino IDE.
Before uploading, please
-
Check that the router has discovered the NoteMCU board and note the IP address.
-
It is recommended to proceed with a test of the WiFi connection. Either try pinging the board on the Terminal, or uploading a sketch from the Arduino IDE.
Check the running sketch¶
The over-the-air process is managed by the sketch itself, based on the ArduinoOTA
library.
If the ArduinoOTA
object isn’t running,
-
Build the
BasicOTA
example. -
Upload using an USB connection as per section Upload to NodeMCU 1.0 board .
Note
The sketch requires twice its size.
Check the WiFi connection¶
To identify the IP addresses of the ESP8266 or NodeMCU board,
-
Open a Terminal window.
-
Run the following command.
$ arp -a
esp_a1b2c3 (192.168.1.209) at 12:ef:34:a1:b2:c3 on en0 ifscope [ethernet]
The address 192.168.1.209
gives access to the board.
- Test the board is connected with ping.
$ ping 192.168.1.209
Enter IP address¶
During the first compilation, embedXcode looks for the ESP8266 or NodeMCU board.
If the ESP8266 or NodeMCU board isn’t found on the network, a window asks for the IP address.

-
Enter the IP address of the ESP8266 or NodeMCU board.
-
Click on OK to validate or Cancel to cancel.
When validated, the IP address is saved on the board configuration file NodeMCU 0.9 ESP-12 (WiFi)
or NodeMCU 1.0 ESP-12E (WiFi)
in the project.

The IP address is only asked once.
-
To erase the IP address, just delete the whole line.
-
To edit the IP address, just change the left part after
SSH_ADDRESS =
on the corresponding line.
Password isn’t implemented.
Upload Wiring / Arduino sketch¶
Once the checks have been performed successfully, proceed as follow:
Connect the ESP8266 or NodeMCU board to the network through WiFi.
- Launch any of the targets All, Upload or Fast.
A window may ask for allowing incoming network connections.

- Click on Allow to proceed.
Note
The sketch requires twice its size.
For more information about the installation and use of the over-the-air upload,
- Please refer to the procedure ESP8266 OTA Updates .
Upload to Raspberry Pi¶
This section requires the embedXcode+ edition.
The Raspberry Pi board provides over-the-air connection through Ethernet or WiFi for upload, console and debugging. The connection is protected by a password defined during the installation of the board.
- Please refer to the procedure Install the RasPiArduino platform for installation and Enter Raspberry Pi IP address and password for configuration.
Upload to Seeeduino SAMD boards¶
The Seeeduino SAMD boards offer multiple options for uploading, two for the Wio Terminal and three for the Xiao M0 board.
The two first options rely on USB. They include the standard serial and the UF2 drag-and-drop procedures.
Unfortunately, the boards package supplied by Seeeduino doesn’t include the utilities required by UF2. They need to be installed from another board package.
For more information,
- Please refer to Upload to Adafruit Feather M0 and M4 boards using UF2 .
The last option leverages the exposed pads SWCLK and SWDIO for SWD signal. It is designed specifically for debugging. It has been explored with the Xiao M0 board.
For more information,
- Please refer to Connect the Segger J-Link to the Seeeduino Xiao M0 .
Upload to the RTL8720DN MCU of the Wio Terminal board¶
Using the RTL8720DN MCU requires to run a utility on the main SAMD51 MCU to provide a bridge between the RTL8720DN and the serial over USB.
For more information on the installation process,
-
Please refer to How to Use Wio Terminal as RTL8720DN Dev Board on the Seeed Studio website.
-
Download the rtl8720_update or WioTerminal_USB2Serial_Burn8720 on the Seeed Studio website.
Upload to Teensy boards¶
The Teensy boards based on an ARM MCU require a specific procedure. The procedure applies to the Teensy 3.0, 3.1, 3.2, 3.5 and 3.6 boards.
Proceed as follow:
-
Disconnect all the SPI devices as programming is done through the SPI pins.
-
Plug the Teensy board.
-
Launch any of the targets All, Upload or Fast.
During the first upload, a new window asks you to press on the button on the board to start the process.

- Press the button on the Teensy board.
A final message confirms the end of the operation.

The following uploads no longer require this manual operation.
Manage error messages¶
In case the wrong board has been selected, the uploader displays an error message.

- Click OK, select the correct board following the procedure Change the board and start again.
The uploader may display another error message.

-
Check and edit the code accordingly.
-
Click OK and start again.
Use raw HID¶
The Teensy boards offer a raw HID mode, with a specific driver for Serial over HID.
To configure the project for raw HID,
-
Open the main
Makefile
. -
Set the variable
TEENSY_USB
to the desiredUSB_RAWHID
type.
# Teensy USB options (default)
# ----------------------------------
# !!! Help: https://bit.ly/2BmH31o
TEENSY_USB = USB_RAWHID
- Ensure
NO_SERIAL_CONSOLE
is set totrue
to prevent the serial console from starting automatically.
# Serial console for Fast target
# ----------------------------------
# For Fast target, open serial console, false or true
# !!! Help: https://bit.ly/2AfyA37
#
NO_SERIAL_CONSOLE = true
-
Download and unzip the RawHid Test for Mac OS X utility from the USB: Raw HID page.
-
Optionally, install telnet with Homebrew, as per the procedure [Install the telnet utility] .
Once the program has been uploaded to the Teensy board,
-
Open a first Terminal window.
-
Launch the teensy_gateway utility with
/Applications/Teensyduino.app/Contents/Java/hardware/tools/teensy_gateway
, assuming the Teensyduino application in under the/Applications
folder.

-
Open a second Terminal window.
-
Launch
telnet 127.0.0.1 28541
, ornc 127.0.0.1 28541
if telnet isn’t available,

-
Open a third Terminal window.
-
Launch the rawhid_test utility with
/Users/ReiVilo/Downloads/rawhid_test
, assuming the rawhid_test application in under the/Users/ReiVilo/Downloads/
folder.

To stop,
- Press Ctrl+C on the Terminal window where teensy_gateway is running.
For more information on raw HID,