Troubleshooting

Upload to a real board fails

What each message in the Upload to board card means, and what to try.

What you see

Send to board opens a card for the board in your project. Which card depends on the board:

  • Upload to board, for an Uno, Nano, Pro Mini, Mega, Leonardo, Micro or Pro Micro: press Upload, pick the port, and Mokxi writes the sketch over USB from Chrome or Edge.
  • Upload to board (Beta), for an ESP32-C3 DevKitM-1, XIAO ESP32-C3 or ESP32-C3 SuperMini: the same, through the chip's own loader.
  • Download for your board (Beta), for a Raspberry Pi Pico, Pico W, XIAO RP2040, RP2040-Zero, Nano RP2040 Connect, XIAO SAMD21 or micro:bit V2: Mokxi builds a .uf2 or .hex file, and you drag it onto the drive the board shows.
  • Put it on your board, for every other board: the Arduino IDE steps. On an ESP32, ESP32-S3, ESP32-C6 or ESP8266 board it also has Test connection, which names the chip on the port.

Every card with Upload also has Test connection, which writes nothing, and after any try a collapsed Upload log with every byte sent and received. Copy log and paste it into your report: it says more than the message.

While it works the card shows what it is doing, and a message in place of Done. Your sketch is running on the board. when it stops. Find it below. How the cards work is in send a program to a real board. Uploading and the downloaded files are part of Pro; the Arduino IDE steps stay free on every plan.

There is no Upload button, or the card only offers a download

Safari, Firefox, and every browser on an iPad or iPhone have no way to reach a USB board. Open the project in Chrome or Edge on a computer or Chromebook, or press Download .hex (or the .bin) and finish with the Arduino IDE or the avrdude or esptool command the card shows.

"This page is not allowed to use serial ports" means the page is inside something that blocks it, such as another site's frame. Open Mokxi in its own Chrome or Edge tab.

An ATtiny85, or an ATmega328P on a breadboard, has no USB loader. The card shows how to write it with a programmer instead.

The board is not in the port list

"No port was picked" means the list closed with nothing chosen. Open Board not in the list? in the card, check these, then press Try again:

  • Try another cable. Many only charge: the board lights up, but no port appears.
  • Install the driver. Look at the small chip by the USB socket. A CH340 or CH341 (most clones) or a CP2102 needs its driver on Windows and macOS; the card links to it. Linux and ChromeOS have them built in.
  • Close anything else using the port: the Arduino IDE's Serial Monitor or Serial Plotter, PlatformIO, or another tab with Mokxi open.
  • On a school Chromebook, IT may have turned USB off for websites. Ask them to allow it for mokxi.com, or use the download.
  • On a Leonardo, Micro or Pro Micro, press reset twice quickly (on a Pro Micro, touch RST to GND twice), then press My board is waiting and pick it within a few seconds.
  • On an ESP32-C3, hold BOOT while you plug it in. A XIAO or SuperMini shows as "USB JTAG/serial debug unit" and needs no driver.

"This port is in use"

Only one program can hold a port. Close the Arduino IDE's serial monitor, and anything else using the board, and try again. On Linux, if nothing else has it open, your account may need to be in the dialout group: the message gives the command.

"No board found" or "No board answered on this port"

The port opened, but no loader answered. The message ends "Press Test connection to find out what is on this port." Do that: it tries every bootloader Mokxi speaks and names whatever answers. Otherwise check that:

  • the board you picked in Mokxi is the board on the cable;
  • the cable carries data;
  • you picked the right port.

On a Nano clone, choose Arduino Nano (old bootloader) in the card's Board list and try again. On an ESP32-C3, hold BOOT, tap RESET, let go of BOOT, and press Upload again.

"No bootloader answered on this port, at any speed"

Test connection asked for every bootloader and nothing answered. Check the cable (some only charge), the port, and that nothing else holds it. On an ESP board, hold BOOT, tap RESET, let go of BOOT and test again. A Leonardo, Micro or Pro Micro needs its reset button pressed twice first, then My board is waiting.

"Found ..., but the project is for ..."

Test connection found a board, and it is not the one in your project. The message names what it found (the chip, its signature or chip id, and its bootloader) and the board to pick in Mokxi: "Found an ATmega2560 (signature 1E 98 01), the chip in the Arduino Mega 2560, ... but the project is for the Arduino Uno, which has an ATmega328P. Pick the Arduino Mega 2560 in Mokxi, or plug in the Arduino Uno." Pick that board, or plug in the right one, and test again.

"The chip is right, but its bootloader answers at 57600 baud, not 115200" means a Nano clone with the old bootloader: the card switches its Board list to Arduino Nano (old bootloader) for you. Press Upload.

"This board has an ..., not the ..." or "This is an ..., but the project is for an ..."

Upload reached a bootloader, and the chip is not the one the sketch was built for: "This board has an ATmega2560 (signature 1E 98 01), the chip in the Arduino Mega 2560, not the ATmega328P an Uno or a Nano has. Pick the Arduino Mega 2560 in Mokxi and try again." or "This is an ESP32-S3, but the project is for an ESP32-C3. Pick an ESP32-S3 board (...) in Mokxi and try again, or plug in the ESP32-C3." Nothing was written. Pick the board you actually have in Mokxi, and upload again.

"Test stopped. Nothing was written to the board."

You pressed Stop during Test connection. Nothing changed on the board.

It stopped partway

"The board stopped answering partway through", "answered something unexpected", "answered once and then went quiet", "Writing stopped at byte ...", "The board stopped taking data", and "The board was disconnected" all mean the conversation broke off. Unplug the board, plug it back in, and try again. A loose cable or a USB hub is the usual cause. On an ESP32-C3, hold BOOT, tap RESET and let go of BOOT first.

"The board read back something different"

What the board wrote does not match what was sent. Try again, and if it keeps happening, try another cable. On an old AVR board, the chip's flash may be worn.

"Upload stopped"

You pressed Stop. The board's bootloader is safe, but it may not run a sketch until one is written, so press Upload again.

"This sketch does not build yet"

There is nothing to send until the code builds. Fix the error the card names (see build errors in plain words), then press Upload again.

"This sketch uses WiFi, which Mokxi simulates"

The WiFi in Mokxi is simulated, so a sketch that uses it cannot be uploaded or downloaded from Mokxi yet. Upload a sketch without WiFi, or build this one in the Arduino IDE with your own network name and password. See WiFi.

The drive does not appear, or the sketch does not start

For the download boards, the card lists the steps:

  • Pico and Pico W: hold BOOTSEL while you plug it in, then let go. A drive called RPI-RP2 opens. Drag the .uf2 onto it.
  • XIAO RP2040 and RP2040-Zero: hold BOOT (marked B on the XIAO) while you plug it in. The RPI-RP2 drive opens.
  • Nano RP2040 Connect: join the REC pin to GND while you plug it in, then take the wire away. The RPI-RP2 drive opens.
  • XIAO SAMD21: touch the two RST pads together twice, quickly. A drive opens. Drag the .uf2 onto it.
  • micro:bit V2: a drive called MICROBIT opens when you plug it in. Drag the .hex onto it.

The drive closes by itself and the sketch starts. On the RP2040 boards and the XIAO SAMD21, Serial comes out on two pins, not over the USB cable: the card names them. Use a 3.3V USB serial adapter to read it. On a Pico W, the onboard LED does not light from this download: use an LED on a GP pin.

Still stuck

Write to us from /support with the board, the exact message, the browser you used, and the Upload log from the card (open it under the message and press Copy log).