BL652 Series Bluetooth v5 + NFC Module
Learn more and compare with similar parts on the family page.

Bluetooth 5.0 single mode module with smartBASIC and internal antenna


Antenna Options
Ceramic chip monopole antenna - on-board
Antenna Type
BLE Services
Any that can be implemented with smartBASIC
Chipset (Wireless)
Nordic nRF52832
Data Rate
1 Mbps (over-the-air)
Development Kit Contents
Development board and free software tools
Frequency Range (Max)
2480 MHz
Frequency Range (Min)
2402 MHz
Frequency Range 2 (Max)
13.56 MHz
Frequency Range 2 (Min)
13.56 MHz
Logical Interfaces
32 kb
Nordic SDK, smartBASIC, Zephyr
Product Type
Embedded Module
Any that can be implemented using smartBASIC. vSP - Virtual Serial Port for BLE. Bluetooth Low Energy: Max 8 connections.
100 m
Receive Sensitivity
-96 dBm (typical)
Diffie-Hellman based pairing
System Architecture
Bluetooth 5.0, Single Mode (BLE), NFC
Transmit Power (Max)
+4 dBm
Wireless Specification
Bluetooth Version 4.2 - Single Mode

Buy Now

Distributor Part In Stock Region Buy
Mouser BL652-SA-01 3901 North America Buy Now
Farnell BL652-SA-01 259 EMEA Buy Now


How do I select the 32.768kHz Low Power Clock Source in the new nRF Connect SDK

Customers using the new nRF Connect SDK from Nordic will need to change the low power 32kHz clock source when working with the BL65x family of products.

To do this in the new SDK using the Segger IDE follow the instructions here;

  1. In Segger Embedded Studio select Project --> Configure nRF Connect SDK Project 
  2. Filter the list for 'osc' or drill down in the list to the Device Drivers --> Hardware clock controller support --> NRF Clock controller support --> 32KHz clock source
  3. Select the clock source based on your configuration/design:
    1. Without the optional external 32khz xtal, default configuration for our modules, select 'RC Oscillator'
    2. With the external 32Khz xtal connected to the module, select 'Crystal Oscillator'


With the correct value selected your code should build with the right clock source configuration and your application should run smoothly.

Where can I download UwTerminal as referenced in the BT900 or BL600 User Guides?

The BT900 and BL600 documents refer to the UwTerminal utility which was the primary utility when these documents were written. This utility is still available in the firmware zip files when they are downloaded from the BT900 Product Page or BL600 Product Page .

However, UwTerminalX is the new improved version of UwTerminal offering additional features not available in predecessor UwTerminal. We recommend working with UwTerminalX as it will support all the features mentioned in the BT900 documentation and offer the additional features, such as access to online Xcompilers.

The latest release of UwTerminalX can be downloaded from our GitHub Repository: UwTerminalX/releases


Getting ERROR: JLinkARM DLL not found. Please reinstall latest JLinkARM when trying to flash BL65x module via the JTAG interface. How can this be resolved?

If you are getting ERROR: JLinkARM DLL not found. Please reinstall latest JLinkARM, you will need to download and install the updated Segger drivers for the J-Link.
Segger J-Link Drivers

What could be causing additional power draw when in standby doze state?

There are several functions within an application that can increase current consumption above the measurement indicated in the Datasheet for standby doze, low power mode.

  • Timers
  • GPIOs held in an asserted state
  • LEDs
  • Nested functions - which keep the module from entering the standby doze state
  • UART (when open)


What are the production programming options for the BL65x modules when using smartBASIC?

For production programming we recommend the following options:

  1. FLASH cloning: Instructions for FLASH cloning can be found in the firmware Zip files, which can be downloaded from the BL65x Product Page. There are two README files contained in the "Firmware" folder of the files, as well as the utilities required to create the cloned image. The first option, ____READ_ME_TO_CLONE_FILESYSTEM___, captures only the flash file and data system and does not include the firmware. The second option,  READ_ME_TO CLONE FIRMWARE_&_APP__, clones the flash file and data system as well as the firmware. When possible, we recommend cloning the firmware as well as the flash and data systems.
  2. MultideviceLoader, which is a command-line application for Windows, Linux and Mac that can be used to XCompile an application (Windows only) and download it to multiple Laird devices at the same time and provides options for: renaming the file, running it after download and other functions. This is a companion application for UwTerminalX and is mostly suited to production/end-stage testing purposes. Command line arguments are available in the Wiki on the GitHub repository.

Note: UwFlashx and Uwflash_embed are for firmware upgrades, and cannot be used to program smartBASIC applications.

How do I program BL65x modules in production or in the field (Tag-Connect)?

Consider using a PCB pad layout with support for Tag-Connect for JTAG which allows for easy, low cost programming in production or in the field.

Note: Laird recommends you use JTAG (2-wire interface) to handle future BL65x module firmware upgrades. You MUST wire out the JTAG (2-wire interface) on your host design , where four lines should be wired out, namely SWDIO, SWDCLK, GND and VCC. Firmware upgrades can still be performed over the BL65x UART interface, but this is slower (60 seconds using UART vs. 10 seconds when using JTAG) than using the BL65x JTAG (2-wire interface).

Is it possible to use Nordic's UART Serial Port Service when a BL65x module is configured for UART Bridge Mode rather than using Laird's Virtual Serial Port Service?

Yes, if config key 112 set to 1, via the AT+CFG 112 command then the service UUIDs for the UART serial port service is as per Nordic’s implementation. Any other value will use the service UUIDs for Laird’s custom service - vSP (Virtual Serial Port).

Please reference the Virtual Serial Port Service Managed section in the smartBASIC Extensions User Guide of the BL65x module you are working with for additional information.

Issues with Flashing custom firmware to BL65x using Segger Embedded Studios IDE

The BL652, BL653, and BL654 modules come preloaded with our smartBASIC firmware. When flashing custom firmware using Segger IDE it is necessary to do a full erase of the Laird BL65x module before programming the module. This can be accomplished using the NRFJPROG command line tool to send the command nrfjprog --eraseall.

How can I connect a Bluetooth Low Energy Device to a PC?

Bluetooth Low Energy uses Services as opposed to the set of standardized profiles that exists for Classic Bluetooth. While some Bluetooth Low Energy services have been standardized by the Bluetooth SIG, the development of custom services is allowed to meet custom application requirements.
Because Bluetooth Low Energy uses a completely different protocol than Classic Bluetooth and supports custom services, Bluetooth Low Energy devices cannot connect to a computer through the typical Bluetooth configuration of a computer. Therefore, connecting to a PC requires writing and running a Bluetooth Low Energy Central Role/Client application to collect the data sent from the Bluetooth Low Energy peripheral modules. Application development for PCs and Mobile devices is outside the scope of our support. Alternatively, a BL654 USB dongle could be used as a BLE Central Role device, to collect the BLE data and pass it to the PC over a COM Port. However, you would still need an application to view and process the data received over that COM Port.
We generally recommend customers who are new to Bluetooth Low Energy obtain a copy of Getting Started with Bluetooth Low Energy to help them understand the Bluetooth Low Energy protocol and the GATT table. There are also many resources available online which explain this. 

When Bluetooth Low Energy was first introduced and we launched our BL6xx product line (predecessors to the BL65x series) we produced the BL600 and BL620 smartBASIC Application Walkthrough document, which provides an overview of how Bluetooth Low Energy works and how a GATT table is constructed. 

How do you change the BAUD rate in the AT Interface Application for BL65x smartBASIC modules?

The default baud rate in the AT Interface application is 115200. In order to change the baud rate within the AT Interface code there are two modifications required in the AT Interface files as shown below:

  1. Locate the following settings within the $autorun$ file which sets the baud to 115200 (highlighted):
    #define SREGINIT_VAL32_0 "\4C\1D\00\00\98\3A\00\00\00\C2\01\00\00\20\00\00\01\20\00\00"
    #define SREGINIT_MIN32_0 "\4C\1D\00\00\4C\1D\00\00\B0\04\00\00\01\00\00\00\01\00\00\00"
    #define SREGINIT_MAX32_0 "\1E\04\3D\00\1E\04\3D\00\40\42\0F\00\FF\FF\00\00\FF\FF\00\00"

    Modify the settings to set the Hex value for the desired BAUD rate in little endian format
    The example below will set it to 9600 baud (0x00 0x00 0x25 0x80)  as shown below (highlighted)
    #define SREGINIT_VAL32_0 "\4C\1D\00\00\98\3A\00\00\80\25\00\00\00\20\00\00\01\20\00\00"
    #define SREGINIT_MIN32_0 "\4C\1D\00\00\4C\1D\00\00\B0\04\00\00\01\00\00\00\01\00\00\00"
    #define SREGINIT_MAX32_0 "\1E\04\3D\00\1E\04\3D\00\40\42\0F\00\FF\FF\00\00\FF\FF\00\00"
  2. Locate the settings for S Register 302 in the $LIB$ file: Modify the settings in #cmpif 0x00010000 : rc=BleEncode32(SregCache32$[0],115200,offset) to set the baud rate to the desired baud rate.


Do BL65x modules support Boundary Scan function?

Unfortunately, we do not offer Boundary Scan functionality on the BL65x modules.

We do understand it is harder to place and recommend during development the use of an X-ray or some other means to verify to soldering process.

Do you have a smartBASIC example for Android or iOS devices such as smartphones or tablets?

smartBASIC is a programming language developed for our BT900 and BL6xx modules to simplify the code required for programming them. It is not used for developing Android or iOS device applications. BLE applications for Android and iOS devices would need to written in code specific to the Android or iOS platform.

Our, Laird Toolkit Application available for iOS and Android is currently in the process of being updated for Android and iOS to work with newer OS platforms.
Once it is complete we expect to make the source code available, to customers working with our smartBASIC modules, for reference when developing Apps for these platforms.
As of the writing of this FAQ the current version of the Laird Toolkit is still available on the App store for iOS and Google Play for Android, however, it may not work with newer versions of iOS or Android until the updates have been made.
Google Play Store
Apple Store

An alternate resource, the Nordic nRF Toolbox is also available from the iOS App Store and Google Play. The source code for this application is available from Nordic's Website.
nRf Toolbox

Is there protection from Hacking when using smartBASIC modules?

Our Bluetooth 5.0 smartBASIC modules (BL652, BL653, BL654) have the capability of supporting LE Secure Connections Pairing as well as encryption. LE Secure Connection is an enhanced security feature introduced in Bluetooth v4.2. It uses a Federal Information Processing Standards (FIPS) compliant algorithm called Elliptic Curve Diffie Hellman (ECDH) for key generation. 
LE Secure Connections, supports four association models: 

  • Just Works
  • Numeric Comparison (Only for LE Secure Connections)
  • Passkey Entry
  • Out of Band (OOB)

Additional information about LE Secure Connections and the models can be found here:

Our Bluetooth 4.0 smartBASIC modules (BT900 /BL600 /BL620) support Simple Secure Pairing and Encryption 
Additional information about Simple Secure Pairing can be found here:
We recommend reviewing the Pairing, Bonding and Security Manager functions in the BL6xx/BT900 smartBASIC Extensions User Guides. The full security of the Bluetooth/Bluetooth Low Energy connection will depend largely on how the smartBASIC application is written, and what the input/output capabilities are of the devices that are connecting. If either device will not have any input/output capabilities then pairing will have to default to Just Works, which is the least secure pairing method. However there are additional layers of security that can be added to increase protection from hacking when the Just Works pairing model is used.

With Bluetooth Low Energy, to further secure the connection, it is recommended that the metadata for the characteristic attributes are configured for Encryption with man-in-the-middle protection for characteristic value access. This will prevent anyone from accessing data on the module without proper encryption keys. (See BleAttrMetadataEx in the BL6xx/BT900 smartBASIC Extensions User Guides.) Additionally, when using Just Works pairing, or any time additional security is required, we recommend adding a challenge/response question to the application layer, with a timer, which expects the connecting device to respond to the challenge question in a specified period of time after a connection has occurred. If the correct response is not received within that time period the application would force a disconnection. Finally, whisper mode pairing can be used during the pairing process as an additional layer of security. This is accomplished by reducing the Tx power while pairing using BleTxPwrWhilePairing as per the BL6xx/BT900 smartBASIC Extensions User Guide, which will reduce the radius which a hacker would need to breach in order to capture or spoof the encryption procedure.

Online Xcompiler is not accessible is there a way to Xcompile a smartBASIC Application locally when using UwTerminalX?

If you are having issues using the Online Xcompilers it could be related to security settings in your system which may be blocking access to the Online Xcompilers. If you are not able to resolve this it is possible to Xcompile locally by following the steps below:

  1. Disable (uncheck) the Online XCompilers on the Config Tab in UwTerminalX as shown below:
  2. Locate the Xcomp_mmmmm_xxxx_xxxx.exe file in the firmware zip folder (downloaded from module's Product Page) for the version of firmware loaded to the module.
    Note: the Xcomp version MUST match the firmware version loaded to the module or the application will not compile.
    mmmmm = module
    xxxx_xxxx =Xcomp version
  3. Copy or Move the Xcomp_mmmmm_xxxx_xxxx.exe to the same folder the smartBASIC application is stored in as shown below:

You should now be able to Xcompile the application using UwTerminalX by right-clicking in the terminal and selecting one of the Xcompile options :

  • Xcompile
  • Xcompile+Load
  • Xcompile+Load+Run

Select the application from the folder where the Xcomp file is located. UwTerminalX will now look for the local Xcompiler in the application folder.