Blink sketch does not work when uploaded via Platformio VSCode IDE but does from Arduino IDE (Nano 33 BLE)

I am using an Arduino Nano 33 BLE, VSCode 1.77.3, Arduino IDE 2.1.0, Platformio Core 6.1.6, Platformio Home 3.4.3, Windows 10

When I upload Blink from the Arduino IDE, the LED blinks.

When I upload the exact same code from Platformio on VSCode, I get the success message after upload, but the LED does not blink, even after re-connecting the board to USB.

Code (I added a Serial.print() to test this over serial also, same result):

#include <Arduino.h>

void setup() {
  pinMode(LED_BUILTIN, OUTPUT);
  Serial.begin(9600);
}

void loop() {
  Serial.print("x\t");
  digitalWrite(LED_BUILTIN, HIGH);
  delay(1000);                
  digitalWrite(LED_BUILTIN, LOW); 
  delay(1000);                     
}

platformio.ini:

[env:nano33ble]
platform = nordicnrf52
board = nano33ble
framework = arduino
monitor_speed = 9600

Check for up-to-date:

> pio platform update nordicnrf52

WARNING: This command is deprecated and will be removed in the next releases. 
Please use `pio pkg update` instead.

Platform Manager: nordicnrf52@9.6.0 is already up-to-date
Tool Manager: framework-arduino-mbed@4.0.2 is already up-to-date
Tool Manager: tool-bossac-nordicnrf52@1.10901.201022 is already up-to-date
Tool Manager: tool-openocd@2.1100.211028 is already up-to-date
Tool Manager: tool-sreccat@1.164.0 is already up-to-date

Platformio Upload output:

Executing task: C:\Users\XXXX\.platformio\penv\Scripts\platformio.exe run --target upload 

Processing nano33ble (platform: nordicnrf52; board: nano33ble; framework: arduino)
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION: https://docs.platformio.org/page/boards/nordicnrf52/nano33ble.html
PLATFORM: Nordic nRF52 (9.6.0) > Arduino Nano 33 BLE
HARDWARE: NRF52840 64MHz, 256KB RAM, 960KB Flash
DEBUG: Current (blackmagic) External (blackmagic, cmsis-dap, jlink)
PACKAGES:
 - framework-arduino-mbed @ 4.0.2
 - tool-bossac-nordicnrf52 @ 1.10901.201022 (1.9.1)
 - tool-openocd @ 2.1100.211028 (11.0)
 - tool-sreccat @ 1.164.0 (1.64)
 - toolchain-gccarmnoneeabi @ 1.80201.181220 (8.2.1)
LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Found 42 compatible libraries
Scanning dependencies...
No dependencies
Building in release mode
Checking size .pio\build\nano33ble\firmware.elf
Advanced Memory Usage is available via "PlatformIO Home > Project Inspect"
RAM:   [==        ]  16.0% (used 41880 bytes from 262144 bytes)
Flash: [=         ]   8.4% (used 82884 bytes from 983040 bytes)
Configuring upload protocol...
AVAILABLE: blackmagic, cmsis-dap, jlink, nrfjprog, nrfutil, sam-ba        
CURRENT: upload_protocol = sam-ba
Looking for upload port...
Auto-detected: COM3
Forcing reset using 1200bps open/close on port COM3
Waiting for the new upload port...
Uploading .pio\build\nano33ble\firmware.bin
Erase flash

Done in 0.001 seconds
Write 82884 bytes to flash (21 pages)

[                              ] 0% (0/21 pages)
[=                             ] 4% (1/21 pages)
[==                            ] 9% (2/21 pages)
[====                          ] 14% (3/21 pages)
[=====                         ] 19% (4/21 pages)
[=======                       ] 23% (5/21 pages)
[========                      ] 28% (6/21 pages)
[==========                    ] 33% (7/21 pages)
[===========                   ] 38% (8/21 pages)
[============                  ] 42% (9/21 pages)
[==============                ] 47% (10/21 pages)
[===============               ] 52% (11/21 pages)
[=================             ] 57% (12/21 pages)
[==================            ] 61% (13/21 pages)
[====================          ] 66% (14/21 pages)
[=====================         ] 71% (15/21 pages)
[======================        ] 76% (16/21 pages)
[========================      ] 80% (17/21 pages)
[=========================     ] 85% (18/21 pages)
[===========================   ] 90% (19/21 pages)
[============================  ] 95% (20/21 pages)
[==============================] 100% (21/21 pages)
Done in 3.565 seconds
================== [SUCCESS] Took 5.83 seconds ======================================
 *  Terminal will be reused by tasks, press any key to close it. 

Arduino IDE Board Manager version:

Arduino Mbed OS Nano Boards
4.0.2 instaled
Boards included in this package: Arduino Nano RP2040 Connect, Arduino Nano 33 BLE

I searched open issues on platformio/platform-nordicnrf52 on github but did not see any relevant open issue.

Thank you.

1 Like

I’m here with the exactly same issue!

It works when programming via Arduino IDE, but not when from Platformio in VSC. Additionally, after uploading any sketch from Platformio, my computer stops seeing my Arduino until I double press the reset button on board, this also does not happen from Arduino IDE.

I think the current release of the nordicnrf52 platform has some issues. In my platform.ini file, I changed nordic platform to a previous version and it everything seems to work fine now. Before, I had the same issue as you and @kralik where everything works fine through Arduino IDE and board disappears from my COM port after uploading via platformio.

[env:nano33ble]
platform = nordicnrf52@4.0.0
board = nano33ble
framework = arduino
lib_archive = no
monitor_speed = 115200

I hope this helps!

Thank you @dd1 !!

However I used your exact platformio.ini and it did not work. Maybe it did not work because of something simple. Also, this is Windows 10 on an Intel processor, not sure why it’s looking for amd64.

 *  Executing task: C:\Users\XXX\.platformio\penv\Scripts\platformio.exe run --target upload 

Processing nano33ble (platform: nordicnrf52@4.0.0; board: nano33ble; framework: arduino)
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Platform Manager: Installing nordicnrf52 @ 4.0.0
Error: Could not find the package with 'nordicnrf52 @ 4.0.0' requirements for your system 'windows_amd64'

 *  The terminal process "C:\Users\Paul\.platformio\penv\Scripts\platformio.exe 'run', '--target', 'upload'" terminated with exit code: 1. 
 *  Terminal will be reused by tasks, press any key to close it. 

Then it’s a regression. Did you report to Issues · platformio/platform-nordicnrf52 · GitHub?

When I saved my platformio.ini file with “platform = nordicnrf52@4.0.0”, it automatically downloaded and installed everything for me. I deleted the nordicnrf52@4.0.0 folder and ended up getting the same error you did. However, when using a more recent version, like 9.5.0, I found that it would resolve automatically. I would suggest giving that a try.

I have not yet reported this issue but will very soon.

Here is link to all releases for reference:

Capture

I had to make some changes to platformio.ini. Instead of specifying the specific platform version, I tried with develop, and that got past the previous error.

[env:nano33ble]
platform = https://github.com/platformio/platform-nordicnrf52.git
board = nano33ble
framework = arduino
lib_archive = no
monitor_speed = 9600

But after uploading, the built-in LED still does not blink as it should. I verified by using an explicit pin number, and using the exact same code in the Arduino IDE again, which does work.

Solution: another user found a version that works. Thread here.

[env:nano33ble]
platform = nordicnrf52@9.5.0
board = nano33ble
framework = arduino
monitor_speed = 9600
1 Like

I’m trying to use that configuration for platformio.ini but I still having the same issue. I’m trying to upload a blinking code for testing that works flashing it using Arduino IDE but it doesn’t if I use platformIO

I have exactly the same issue, even with the 9.5.0 version:

[env:nano33ble]
platform = nordicnrf52@9.5.0
board = nano33ble
framework = arduino
monitor_speed = 9600

Behavior - upload is successful, but seems like the code on the board doesn’t change at all.

pio run --target upload --target monitor
Processing nano33ble (platform: nordicnrf52@9.5.0; board: nano33ble; framework: arduino)
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION: https://docs.platformio.org/page/boards/nordicnrf52/nano33ble.html
PLATFORM: Nordic nRF52 (9.5.0) > Arduino Nano 33 BLE
HARDWARE: NRF52840 64MHz, 256KB RAM, 960KB Flash
DEBUG: Current (blackmagic) External (blackmagic, cmsis-dap, jlink)
PACKAGES: 
 - framework-arduino-mbed @ 3.5.4 
 - tool-bossac-nordicnrf52 @ 1.10901.201022 (1.9.1) 
 - tool-openocd @ 2.1100.211028 (11.0) 
 - tool-sreccat @ 1.164.0 (1.64) 
 - toolchain-gccarmnoneeabi @ 1.80201.181220 (8.2.1)
LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Found 38 compatible libraries
Scanning dependencies...
No dependencies
Building in release mode
Compiling .pio/build/nano33ble/src/main.cpp.o
Generating LD script .pio/build/nano33ble/cpp.linker_script.ld
Compiling .pio/build/nano33ble/FrameworkArduinoVariant/variant.cpp.o
Compiling .pio/build/nano33ble/FrameworkArduino/Interrupts.cpp.o
Compiling .pio/build/nano33ble/FrameworkArduino/Serial.cpp.o
Compiling .pio/build/nano33ble/FrameworkArduino/Tone.cpp.o
Compiling .pio/build/nano33ble/FrameworkArduino/USB/PluggableUSBDevice.cpp.o
Compiling .pio/build/nano33ble/FrameworkArduino/USB/USBCDC.cpp.o
Compiling .pio/build/nano33ble/FrameworkArduino/USB/USBSerial.cpp.o
Compiling .pio/build/nano33ble/FrameworkArduino/WMath.cpp.o
Compiling .pio/build/nano33ble/FrameworkArduino/abi.cpp.o
Compiling .pio/build/nano33ble/FrameworkArduino/api/Common.cpp.o
Compiling .pio/build/nano33ble/FrameworkArduino/api/IPAddress.cpp.o
Compiling .pio/build/nano33ble/FrameworkArduino/api/PluggableUSB.cpp.o
Compiling .pio/build/nano33ble/FrameworkArduino/api/Print.cpp.o
Compiling .pio/build/nano33ble/FrameworkArduino/api/Stream.cpp.o
Compiling .pio/build/nano33ble/FrameworkArduino/api/String.cpp.o
Compiling .pio/build/nano33ble/FrameworkArduino/arm_hal_random.c.o
Compiling .pio/build/nano33ble/FrameworkArduino/as_mbed_library/variant.cpp.o
Compiling .pio/build/nano33ble/FrameworkArduino/itoa.c.o
Compiling .pio/build/nano33ble/FrameworkArduino/main.cpp.o
Compiling .pio/build/nano33ble/FrameworkArduino/mbed/platform/cxxsupport/mstd_mutex.cpp.o
Compiling .pio/build/nano33ble/FrameworkArduino/pinToIndex.cpp.o
Compiling .pio/build/nano33ble/FrameworkArduino/random_seed.cpp.o
Compiling .pio/build/nano33ble/FrameworkArduino/timer.cpp.o
Compiling .pio/build/nano33ble/FrameworkArduino/wiring.cpp.o
Compiling .pio/build/nano33ble/FrameworkArduino/wiring_analog.cpp.o
Archiving .pio/build/nano33ble/libFrameworkArduinoVariant.a
Indexing .pio/build/nano33ble/libFrameworkArduinoVariant.a
Compiling .pio/build/nano33ble/FrameworkArduino/wiring_digital.cpp.o
Compiling .pio/build/nano33ble/FrameworkArduino/wiring_pulse.cpp.o
Compiling .pio/build/nano33ble/FrameworkArduino/wiring_shift.cpp.o
Archiving .pio/build/nano33ble/libFrameworkArduino.a
Indexing .pio/build/nano33ble/libFrameworkArduino.a
Linking .pio/build/nano33ble/firmware.elf
Checking size .pio/build/nano33ble/firmware.elf
Building .pio/build/nano33ble/firmware.bin
Advanced Memory Usage is available via "PlatformIO Home > Project Inspect"
RAM:   [==        ]  16.0% (used 41880 bytes from 262144 bytes)
Flash: [=         ]   7.6% (used 74644 bytes from 983040 bytes)
Configuring upload protocol...
AVAILABLE: blackmagic, cmsis-dap, jlink, nrfjprog, nrfutil, sam-ba
CURRENT: upload_protocol = sam-ba
Looking for upload port...
Auto-detected: /dev/cu.usbmodem141101
Forcing reset using 1200bps open/close on port /dev/cu.usbmodem141101
Waiting for the new upload port...
Uploading .pio/build/nano33ble/firmware.bin
Erase flash

Done in 0.002 seconds
Write 74644 bytes to flash (19 pages)

[                              ] 0% (0/19 pages)
[=                             ] 5% (1/19 pages)
[===                           ] 10% (2/19 pages)
[====                          ] 15% (3/19 pages)
[======                        ] 21% (4/19 pages)
[=======                       ] 26% (5/19 pages)
[=========                     ] 31% (6/19 pages)
[===========                   ] 36% (7/19 pages)
[============                  ] 42% (8/19 pages)
[==============                ] 47% (9/19 pages)
[===============               ] 52% (10/19 pages)
[=================             ] 57% (11/19 pages)
[==================            ] 63% (12/19 pages)
[====================          ] 68% (13/19 pages)
[======================        ] 73% (14/19 pages)
[=======================       ] 78% (15/19 pages)
[=========================     ] 84% (16/19 pages)
[==========================    ] 89% (17/19 pages)
[============================  ] 94% (18/19 pages)
[==============================] 100% (19/19 pages)
Done in 3.019 seconds
--- Terminal on /dev/cu.usbmodem141101 | 9600 8-N-1
--- Available filters and text transformations: colorize, debug, default, direct, hexlify, log2file, nocontrol, printable, send_on_enter, time
--- More details at https://bit.ly/pio-monitor-filters
--- Quit: Ctrl+C | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H

Any ideas on how to fix this?

Upd. - worked for me with the following configuration:

[env:nano33ble]
platform = nordicnrf52@9.4.0
board = nano33ble
framework = arduino
monitor_speed = 9600

Upd - it worked, but kinda halfway.
After a hard reset (double click on the button) I can upload the code once, but afterward, it stops working (uploads are successful, but the code doesn’t change).

Any ideas/suggestions?

system configuration info:

> pio system info
--------------------------  ---------------------------------------------------------
PlatformIO Core             6.1.7
Python                      3.11.4-final.0
System Type                 darwin_x86_64
Platform                    macOS-13.4.1
File System Encoding        utf-8
Locale Encoding             UTF-8
PlatformIO Core Directory   /Users/renarde/.platformio
PlatformIO Core Executable  /usr/local/bin/platformio
Python Executable           /usr/local/Cellar/platformio/6.1.7/libexec/bin/python3.11
Global Libraries            0
Development Platforms       4
Tools & Toolchains          11
--------------------------  ---------------------------------------------------------

Looks like nordicnrf52@9.5.0 has a bug then. Can you report that to Issues · platformio/platform-nordicnrf52 · GitHub?

1 Like