Skip to main content

SmartBond™ DA14682 and DA14683

Single-chip high-security Bluetooth 5 solution with expandable memory

da14682-3.svg

The SmartBond DA14682 and DA14683 are the world’s first single-chip solutions for Smart Home, Industrial and wearable devices that meets the highest security standards. These highly integrated System-on-Chip (SoC) devices support Bluetooth 5 as well as Bluetooth mesh, and include a range of dedicated features to ensure cutting-edge security for both consumers and developers.

As part of our SmartBond range, both SoCs offer industry-leading performance from the lowest power consumption and smallest footprint. Their flexible architecture ensures plenty of processing capacity when you need it while saving power when you don’t. It also allows the devices to manage multi-sensor arrays and enables always-on sensing.

Both devices offer extensive memory capacity and differ only in their memory configuration. Specifically, the DA14683 supports unlimited external Flash for maximum design flexibility while the DA14682 includes 8 Mbits of onboard Flash, making it ideal for applications with tight space constraints. Both options allow you to benefit from over-the-air updates.

To further simplify your development, our SmartSnippets™ software and versatile Hardware Development Kits help you optimize your software for power consumption.

Lifecycle status

● Active

Benefits

Highest level of security

IPv6 connectivity

Lowest system power

Lowest system BoM

Smallest system size

Applications

Wearables

Smart Home

Cloud connected applications

Industrial

Human Interface Devices

Virtual reality remotes

Banking

Packages

AQFN-60  (6.0 x 6.0 x 0.9 mm)

WLCSP-53 (3.4 x 3.0 x 0.5 mm)

Stay connected

Get in touch with us directly through our worldwide sales offices, or contact one of our global distributors and representatives.

Inquiries Distributors and Representatives Register for newsletters
Datasheet
Name Date Version
DA14682 datasheet (4.4 MB) 06/02/2020 3.3
DA14683 datasheet (13.53 MB) 24/11/2020 3.4
Product Brief
Name Date Version
DA14682 and DA14683 Product Brief (1.29 MB) 15/06/2018 1.0
DA14682 and DA14683 Product Brief (Chinese) (756.83 KB) 19/06/2018 1.0
SDK
Name Date Version
DA1468x SDK Release Notes v1.0.14.1081 (328.25 KB) 26/07/2018 1.0.14.1081
DA1468x SDK1.0.14.1081 (15.51 MB) (Registered users only) 26/07/2018 1.0.14.1081
DA1468x SDK1.0.14.1081_hotfix_002 (2.59 MB) (Registered users only) 15/07/2020 1.0.14.1081_hotfix_002
SDK User Manual
Name Date Version
UM-B-044: DA1468x Software Platform Reference (5.25 MB) 20/12/2017 6.0
UM-B-047: DA1468x Getting Started with the Development Kit (2.95 MB) 26/07/2018 7.0
UM-B-056: DA1468x Software Developer's Guide (6.74 MB) 20/12/2017 6.0
UM-B-075: DA1468x State of Charge Functionality (951.71 KB) 13/12/2016 1.2
UM-B-097: 681 to 683 Porting Guide (481.36 KB) 14/06/2018 1.0
Development Tools
Name Date Version
SmartSnippets Studio Release Notes (321.22 KB) 04/02/2022 2.0.18
SmartSnippets Studio V1.6.3 for Linux OS (1 byte) 14/03/2020 1.6.3
SmartSnippets Studio V1.6.3 for Windows OS (1 byte) 14/03/2020 1.6.3
SmartSnippets Studio V2.0.18 for Linux OS (554.4 MB) 04/02/2022 2.0.18
SmartSnippets Studio V2.0.18 for macOS (548.12 MB) 04/02/2022 2.0.18
SmartSnippets Studio V2.0.18 for Windows OS (811.48 MB) 04/02/2022 2.0.18
SmartSnippets Toolbox Release Notes (527.86 KB) 04/02/2022 5.0.18
SmartSnippets Toolbox V5.0.18 for for Linux OS (203.06 MB) 04/02/2022 5.0.18
SmartSnippets Toolbox V5.0.18 for Windows OS (151.79 MB) 04/02/2022 5.0.18
UM-B-057 SmartSnippets Studio User Manual (3.09 MB) 16/12/2021 2.0.18
UM-B-083 SmartSnippets Toolbox User Manual (HTML) (25.09 KB) 16/12/2021 5.0.18
Software Applications & Examples
Name Date Version
Dialog Serial Port Service (DSPS) (7.58 KB)
SW Example: DA1468x Example Setup (1.62 MB) 29/06/2018 1.0
Software Applications & Examples: Peripheral Drivers/Adapters
Name Date Version
SW Example: Generating PWM pulses via TIMER0 (434.78 KB) 21/12/2018 1.0
SW Example: Software update from USB mass storage (687.89 KB) 22/06/2018 1.0
SW Example: SW RTC Implementation (561.54 KB) 02/10/2018 1.0
SW Example: UART DMA circular buffer (8.03 MB) 06/07/2018 1.0
Software Applications & Examples: Bluetooth
Name Date Version
SW Example: Channel Map Reporter (478.44 KB) 25/09/2018 1.0
SW Example: DA1468x BLE customer service (1.35 MB) 15/10/2018 1.0
Mobile Apps
Name Date Version
Dialog SUOTA - Source Code - Android (3.03 MB) (Registered users only) 04/05/2020 3.190.18
Dialog SUOTA - Source Code - iOS (4.11 MB) (Registered users only) 04/05/2020 3.200.14
Production Line Tool Kit
Name Date Version
Production Line Tool documents (7.58 KB)
Application Notes
Name Date Version
AN-B-027: Designing Printed Antennas for Bluetooth Smart (1.64 MB) 25/06/2020 2.3
AN-B-027: Designing Printed Antennas: DXF files (12.38 KB) 04/04/2017 1.0
AN-B-035 Application Note: DA1468x Battery Charging (426.51 KB) 14/07/2016 1.1
AN-B-035 Application Note: DA1468x Battery Charging (Chinese) (594.17 KB) 14/07/2016 1.1
AN-B-040 Application Note: DA1468x Using Ozone/J-Link for Software Debugging (1.58 MB) 27/07/2016 1.2
AN-B-043 Application Note: DA1468x Bluetooth Direct Test Mode (1.99 MB) 14/09/2017 1.5
AN-B-045_QSPI_loader_SupportingFiles (1.91 MB) 15/12/2016 1.0
AN-B-046 Application Note: DA1468x Booting from Serial Interfaces (552.42 KB) 29/06/2020 1.3
AN-B-061 Application Note: DA1468x Application Hardware Design Guidelines (2.03 MB) 28/03/2019 1.9
Tutorials
Name Date Version
Advertising Concept Tutorial (2.19 MB) 30/11/2017 1.0
Custom Bluetooth Low Energy Profile (1.52 MB) 18/09/2018 2.0
DA14682/DA14683 Secure Boot Tutorial (7.58 KB) 25/06/2018 1.0
Debugging Techniques Tutorial (2.98 MB) 25/06/2018 1.0
External Interruption Tutorial (831.33 KB) 04/01/2018 1.0
Flash Adapter Concept (2.4 MB) 17/09/2018 2.1
GPADC Adapter Concept (1.98 MB) 19/09/2018 2.1
I2C Adapter Concept (2.15 MB) 20/09/2018 2.1
Real-Time Clock (RTC) Concept (1.38 MB) 19/09/2018 2.0
SPI Adapter Concept (2.14 MB) 20/09/2018 2.1
Starting a Project (2.65 MB) 26/11/2018 2.0
Known limitation list
Name Date Version
DA14682/683-KnownLimitations (181.58 KB) 29/05/2018 1.0
FCC, ETSI certifications
Name Date Version
DA14680, 681, 682, 683 Declaration of Similarity (244.08 KB) 17/06/2020 2.0
DA14682/DA14683 EN 300 328 certification test (578.22 KB) 26/06/2020 2.2.2
DA14682/DA14683 EN 300 328 certification test (1.81 MB) 31/07/2017 2.1.1
BT SIG certifications
Name Date Version
DA14682-DA14683 QDID Controller Subsystem (0 bytes) 28/07/2017 D036408
DA14682-DA14683 QDID Host Subsystem (0 bytes) 28/07/2017 D036407
RoHS and Reach
Name Date Version
DA1468x REACH declaration (187.86 KB) 21/11/2018 1.0
DA1468x RoHS 2 declaration (183.22 KB) 22/05/2018 1.0
Ref. Design and Dev. Kit Documentation
Name Date Version
Release Notes DA1458x DA1468x PLT v4.2 (222.87 KB) 24/10/2017 PLT v4.2
UM-B-041: SmartBond Production Line Tool User Manual (5.64 MB) 01/10/2020 4.5
UM-B-074 DA1468x Range Extender Daughterboard (4.18 MB) 16/05/2018 1.1
Previous Software Releases
Name Date Version
DA1468x SDK 1.0.12.1078 (15.72 MB) (Registered users only) 20/12/2017 1.0.12.1078
DA1468x SDK Release Notes v1.0.12.1078 (25.01 KB) 20/12/2017 1.0.12.1078
SmartSnippets Toolbox V5.0.12 for Windows OS (1 byte) 14/03/2020 5.0.12
Archive
Name Date Version
DA1468x SDK1.0.14.1081_hotfix_001 (177.13 KB) (Registered users only) 28/02/2020 1.0.14.1081_hotfix_001
Dialog SUOTA - Source Code - Android (3.33 MB) (Registered users only) 31/10/2017 3.19.14
Dialog SUOTA - Source Code - Android (2.86 MB) (Registered users only) 24/10/2019 3.190.16
Dialog SUOTA - Source Code - iOS (3.93 MB) (Registered users only) 31/10/2017 3.200.10
Low Power Connectivity Software License Agreement (120.04 KB)
SmartSnippets Studio V2.0.10 for Linux OS (810.84 MB) 02/10/2019 2.0.10
SmartSnippets Studio V2.0.10 for Windows OS (575.68 MB) 02/10/2019 2.0.10
SmartSnippets Studio V2.0.16 for Linux OS (872.03 MB) 24/12/2020 2.0.16
SmartSnippets Studio V2.0.16 for macOS (497.78 MB) 24/12/2020 2.0.16
SmartSnippets Studio V2.0.16 for Windows OS (707.61 MB) 24/12/2020 2.0.16
SmartSnippets Studio V2.0.7 for Linux OS (834.05 MB) 15/02/2019 2.0.7
SmartSnippets Studio V2.0.7 for Windows OS (604.71 MB) 15/02/2019 2.0.7
SmartSnippets Studio V2.0.8 for Linux OS (834.34 MB) 03/04/2019 2.0.8
SmartSnippets Studio V2.0.8 for Windows OS (607.06 MB) 03/04/2019 2.0.8
SmartSnippets Toolbox Release Notes (507.24 KB) 27/09/2019 5.0.10
SmartSnippets Toolbox V5.0.10 for for Linux OS (205.02 MB) 02/10/2019 5.0.10
SmartSnippets Toolbox V5.0.10 for Windows OS (137.45 MB) 02/10/2019 5.0.10
SmartSnippets Toolbox V5.0.12 for for Linux OS (1 byte) 14/03/2020 5.0.12
SmartSnippets Toolbox V5.0.14 for for Linux OS (162.73 MB) 28/05/2020 5.0.14
SmartSnippets Toolbox V5.0.14 for Windows OS (123.2 MB) 28/05/2020 5.0.14
SmartSnippets Toolbox V5.0.16 for for Linux OS (163.27 MB) 24/12/2020 5.0.16
SmartSnippets Toolbox V5.0.16 for Windows OS (123.77 MB) 24/12/2020 5.0.16
SmartSnippets Toolbox V5.0.7 for for Linux OS (193.92 MB) 08/02/2019 5.0.7
SmartSnippets Toolbox V5.0.7 for Windows OS (128.51 MB) 08/02/2019 5.0.7
SmartSnippets Toolbox V5.0.8 for for Linux OS (194.13 MB) 03/04/2019 5.0.8
SmartSnippets Toolbox V5.0.8 for Windows OS (128.72 MB) 03/04/2019 5.0.8

Development Kits and Reference Designs

Hardware Development Kits based on DA14682 and DA14683
DA14683 Development Kit USB
DA14683 Development Kit Pro
Relevant reference designs
Smart USB Dongle
Video thumbnail, click to open and play

SmartBond™ DA14583 IoT Sensor Development Kit - Quick Start Video

Video thumbnail, click to open and play

SmartBond™ DA14583 IoT Sensor Development Kit

Video thumbnail, click to open and play

SDK 5.0.x Introduction

Video thumbnail, click to open and play

SDK 5.0.x Introduction (Chinese)

Video thumbnail, click to open and play

Production Line Tool Kit Webinar

Buy now

Product Shop
DA14682 Digikey Mouser Avnet US
DA14683 Digikey Mouser Avnet US
Production Line Tool Kit (PLT) Avnet US

You can no longer post questions or comments on this page. All product forum activity on the Dialog Semiconductor website has been migrated to a new platform called RenesasRulz. Renesas Electronics Corporation (“Renesas”) will be the service provider and processor managing this move on behalf of Dialog Semiconductor PLC. (“Dialog Semiconductor”). Please post your questions there:

BLE and Wifi | PMIC | GreenPAK | Memory Products

Back to results

DA1468x

4 months ago

Add a 128-bit AND 16-bit UUID in the same advertising packet

Posted by andrewhh 190 points 5 replies
0 upvotes

Hi,

I would like a method to advertise both a 128-bit UUID and a 16-bit UUID. I want to initially advertise the 128-bit UUID, but then 15-300s later, add the 16-bit UUID to activate iOS' "State Preservation and Restoration" feature that wakes up my iOS app in the background.

I currently have an advertisement that works and can be seen, but sometimes my firmware will crash on the OS_ASSERT. 

This is the method that currently works:

                /* Advertising data     */
                gap_adv_ad_struct_t adv_data[2];

                adv_data[0] = (gap_adv_ad_struct_t) GAP_ADV_AD_STRUCT(GAP_DATA_TYPE_UUID128_LIST_INC,sizeof(hpy_hcs_uuid.uuid128),hpy_hcs_uuid.uuid128);

                /* If the wakeup UUID is not advertised then iOS will probably kill the BLE connection
                 * to the ring when Happy iOS app is in background */
                adv_data[1] = (gap_adv_ad_struct_t) GAP_ADV_AD_STRUCT_BYTES(GAP_DATA_TYPE_UUID16_LIST_INC,
                        0x69, 0x69);  // Happy Wakeup UUID

                OS_ASSERT(BLE_STATUS_OK == ble_gap_adv_ad_struct_set(ARRAY_LEN(adv_data), adv_data, ARRAY_LEN(scan_rsp) , scan_rsp));

The two UUIDs appear:

two UUIDs

 

I think that method is vulnerable to stack corruption because I see crash logs from my firmware crashing in that OS_ASSERT.

Is there a simpler method to achieve the same thing? Do I need to use a static array for my advertising data? I tried using this code and the 16-bit UUID did not appear in my BLE scanner.


        char device_name[HPY_DEVICE_NAME_STR_LEN];
        uint8_t device_name_len = hpy_get_device_name_str(device_name);
        //set up device name
        ble_gap_device_name_set(device_name,ATT_PERM_READ);

        /* Setup advertising */
        att_uuid_t hpy_hcs_uuid;
        ble_uuid_from_string(UUID_HPY_HCS, &hpy_hcs_uuid);

        /* Scan Response object to be populated with <Complete Local Name> AD type */
        /* Define Scan Response object internals dealing with retrieved name */
        gap_adv_ad_struct_t scan_rsp[1];
        scan_rsp[0] = (gap_adv_ad_struct_t) GAP_ADV_AD_STRUCT(GAP_DATA_TYPE_LOCAL_NAME, device_name_len, device_name);


        /* We advertise HCS (Happy Communication Service UUID) and another service to
         * help the mobile app wake up.
           All other services will be resolved at connection time.
           It means that only our app will ever find our devices and it won't be obvious
           that the ring supports Device Information Service or Battery Service. */


        /* If the wakeup UUID is not advertised then iOS will probably kill the BLE connection
         * to the ring when Happy iOS app isits in background */

        /* Advertising data     */
        uint8_t adv_data[] = {
                  17,  /* Length */
                  GAP_DATA_TYPE_UUID128_LIST_INC,
                  /* 128-uuid in bytes, */
                  hpy_hcs_uuid.uuid128[0],
                  hpy_hcs_uuid.uuid128[1],
                  hpy_hcs_uuid.uuid128[2],
                  hpy_hcs_uuid.uuid128[3],
                  hpy_hcs_uuid.uuid128[4],
                  hpy_hcs_uuid.uuid128[5],
                  hpy_hcs_uuid.uuid128[6],
                  hpy_hcs_uuid.uuid128[7],
                  hpy_hcs_uuid.uuid128[8],
                  hpy_hcs_uuid.uuid128[9],
                  hpy_hcs_uuid.uuid128[10],
                  hpy_hcs_uuid.uuid128[11],
                  hpy_hcs_uuid.uuid128[12],
                  hpy_hcs_uuid.uuid128[13],
                  hpy_hcs_uuid.uuid128[14],
                  hpy_hcs_uuid.uuid128[15],

                  0x03, /* Length */
                  GAP_DATA_TYPE_UUID16_LIST_INC,
                  /* 16-bit iOS service UUID */
                  0x69,
                  0x69,
        };

        uint8_t size_of_adv_data = sizeof(adv_data);

        uint8_t scan_rsp_with_len[scan_rsp[0].len + 2 ];  /* 2 = 1 len + 1 type */

        scan_rsp_with_len[0] = scan_rsp[0].len,
        scan_rsp_with_len[1] = scan_rsp[0].type;
        for(int8_t i = 0; i < scan_rsp[0].len; i++){
            scan_rsp_with_len[i + 2] = scan_rsp[0].data[i];
        }

        ble_error_t result = ble_gap_adv_data_set(size_of_adv_data, adv_data, ARRAY_LEN(scan_rsp_with_len) , scan_rsp_with_len);
        OS_ASSERT(BLE_STATUS_OK == result);
}

 

4 months ago

PM_Dialog

Hi andrewhh,

Can you kindly run it with the debugger attached and share what is the error code of the ble_gap_adv_ad_struct_set ( in the 1st code snippet). Otherwise, you could print the error code in case you are not able to run it with the debugger attached.

“initially advertise the 128-bit UUID, but then 15-300s later, add the 16-bit UUID to activate iOS'

Question : the advertisement is stopped after 15-300s, update the adv string and re-start advertising?

Thanks, PM_Dialog

4 months ago

andrewhh 190 points

The debugger shows BLE_STATUS_OK the first time it runs. The second time it runs, the debugger sometimes shows BLE_STATUS_OK, sometimes shows "BLE_ERROR_FAILED".

BLE_STATUS_OK

 

Yes. I want to change from advertising 1 UUID to 2 UUIDs. Not stop advertising. I tried stopping and starting and then later saw this comment explaining the "stop advertising" is unnecessary, so I removed the stop.

/**
 * \brief Set advertising Data and scan response data
 *
 * This API call is used to modify the advertising data and scan response Data used. It can be used
 * while an advertising operation is in progress. If an advertising operation is not in progress,
 * the new Advertising Data and/or new Scan Response Data will be used the next time function
 * ble_gap_adv_start() is called. The maximum Advertising Data length for undirected connectable
 * advertising is BLE_ADV_DATA_LEN_MAX bytes (31 minus 3 that are reserved to set the Advertising Data
 * type flags - which shall not be set in Advertising Data using this function). The equivalent max
 * length for non-connectable advertising is BLE_NON_CONN_ADV_DATA_LEN_MAX bytes.
 *
 * \param [in] adv_data_len         Length of the Advertising Data
 * \param [in] adv_data             Pointer to the Advertising Data
 * \param [in] scan_rsp_data_len    Length of the Scan Response Data
 * \param [in] scan_rsp_data        Pointer to the Scan Response Data
 *
 * \return result code
 */
ble_error_t ble_gap_adv_data_set(uint8_t adv_data_len, const uint8_t *adv_data,
                                 uint8_t scan_rsp_data_len, const uint8_t *scan_rsp_data);

 

Attachment Size
Screen Shot 2021-12-23 at 01.34.36 .png 998.84 KB

4 months ago

PM_Dialog

Hi andrewhh,

The following advertising data set is working fine on my side : 

/* Advertising data     */
static uint8_t adv_data[] = {
        0x11,  /* Length */
        GAP_DATA_TYPE_UUID128_LIST_INC,
        /* 128-uuid in bytes, */
        0x59,
        0x5A,
        0x08,
        0xE4,
        0x86,
        0x2A,
        0x9E,
        0x8F,
        0xE9,
        0x11,
        0xBC,
        0x7C,
        0x98,
        0x43,
        0x42,
        0x18,

        0x03, /* Length */
        GAP_DATA_TYPE_UUID16_LIST_INC,
        /* 16-bit iOS service UUID */
        0x69,
        0x69
};

In the application task : 

/* Set advertising data */
ble_gap_adv_data_set(sizeof(adv_data), adv_data, 0, NULL);

Can you please test it on your side? 

Initially, you could set the advertising data only with the 128-bit UUID and then memcopy the 16-bit UUID .  

Something like this : 

/* Advertising data     */
uint8_t adv_data[22] = {
        0x11,  /* Length */
        GAP_DATA_TYPE_UUID128_LIST_INC, /* Try also GAP_DATA_TYPE_UUID128_LIST_INC */
        /* 128-uuid in bytes, */
        0x59,
        0x5A,
        0x08,
        0xE4,
        0x86,
        0x2A,
        0x9E,
        0x8F,
        0xE9,
        0x11,
        0xBC,
        0x7C,
        0x98,
        0x43,
        0x42,
        0x18

};


/* Advertising data update  */
uint8_t adv_data_update[] = {
        0x03, /* Length */
        GAP_DATA_TYPE_UUID16_LIST_INC,
        /* 16-bit iOS service UUID */
        0x69,
        0x69
};

In the application task : 

memcpy((adv_data + 18) , adv_data_update, sizeof(adv_data_update));

/* Set advertising data */
ble_gap_adv_data_set(sizeof(adv_data), adv_data, 0, NULL)

PS: Of course, I am using my own 128-bit UUID...

Thanks, PM_Dialog

4 months ago

andrewhh 190 points

it worked and has not crashed yet. The advertising switches successfully.

4 months ago

AA_Dialog

Hi andrewhh,

Thank you for confirming that it is working now. If you have more questions please raise a new forum ticket. We will be happy to help.

Kind regards, AA_Dialog