BLE device is not showing up in Bluetooth scan when Arduino IDE is not open

I have an Arduino sketch uploaded to my Arduino Nano BLE:

#include <ArduinoBLE.h>

BLEService ledService("07694453-2dd6-4a4c-8c1e-1e3466a6c5734");
BLECharCharacteristic switchChar("2cf11b06-ce75-4d8e-ad1a-be116a432fa2", BLEWrite | BLERead); // create switch characteristic

void setup() {
  while (!Serial);

  if (!BLE.begin()) {
    Serial.println("Failed to initialize BLE.");
    while (1);

  BLE.setLocalName("Arduino Nano BLE");

  Serial.println("BLE Peripheral device started advertising.");

void loop() {
  BLEDevice central = BLE.central();

  if (central) {
    Serial.print("Connected to central MAC: ");
    digitalWrite(LED_BUILTIN, HIGH);

    while (central.connected()){
    digitalWrite(LED_BUILTIN, LOW);

When Arduino IDE is open, I can see that the Arduino is advertising and get’s connected to the computer through Bluetooth. I can verify that from the computer. However, when I plug the Arduino to a pc that is not running Arduino IDE the device is not discoverable by a Bluetooth scanner. Am I doing something the wrong way in this code, or is this expectable? If so, why?

Thank you.

>Solution :

It looks like because your Arduino is waiting for serial (USB) connection at while (!Serial);.

An example of fix is adding timeout there.

unsigned long startTime = millis();
while (!Serial && millis() - startTime < 1000);

Leave a Reply