Skip navigation
Home > All Places > Software Forums > WICED Studio Bluetooth > WICED Studio Bluetooth Forums > Blog > 2018 > January > 24

Bluetooth devices have a 48-bit address which is usually termed as BD_ADDR. For BR/EDR devices, there are three parts to this address: NAP, UAP and LAP whereas for BLE devices, the BD_ADDR consists of two parts: Company-ID and Company Assigned part. For more information regarding BD_ADDR and their formats, kindly refer to the BLE SIG specification.


On CYW20706, a single BD_ADDR is defined which is common for both BLE and BR/EDR applications. The BD_ADDR can be configured in the following ways:

  1. Using the API wiced_bt_set_local_bdaddr(wiced_bt_device_address_t bda, wiced_bt_ble_address_type_t addr_type)
    1. This API needs to be called after the stack is initialized, i.e. after the BTM_ENABLED_EVT.
    2. This API takes 2 parameters: the 6-byte device address and the address type.
    3. This is useful when you want to change the BD_ADDR during runtime.
  2. Using the BT_DEVICE_ADDRESS make option during build
    1. In the make target, you can include this optional parameter to set the BD_ADDR to the desired value.
    2. For example, demo.hello_sensor-CYW920706WCDEVAL download BT_DEVICE_ADDRESS=AABBCCDDEEFF.
    3. The BT_DEVICE_ADDRESS can also be set to random to make use of a random address.
  3. Using the Factory_Commit_BD_ADDR  VSC (Vendor Specific Command) to store the device address in flash.
    1. There are 2 steps to this procedure:
      1. First, set the device address to all 0xFFs by making use of the BT_DEVICE_ADDRESS=FFFFFFFFFFFF in the make target and download your application.
      2. Then, send the Factory_Commit_BD_ADDR vendor specific HCI command. This needs to be done only for the first time after the device is programmed.
    2. The Factory_Commit_BD_ADDR VSC has the below format:
      1. Opcode: 0xFC10
      2. Parameters Length: 7 bytes
      3. Parameters: 6 byte address followed by 0x00
      4. Example:  01 10 FC 07 AA BB CC DD EE FF 00
    3. You can either send this HCI command over HCI UART or use wiced_bt_dev_vendor_specific_command WICED API in your application.
      1. Example: wiced_bt_dev_vendor_specific_command(0x10, 7, bd_addr_param, addr_callback);
      2. Note that if you are sending the HCI command over HCI UART, you will have to send a HCI reset command (01 03 0C 00) before sending the VSC.
    4. If the device address is configured using these steps, then this address can be overwritten only by reprogramming the device, not otherwise. However, the wiced_bt_set_local_bdaddr()  API can still be used to change the address to be used but this API does not overwrite the address stored in flash.
    5. This method is most suitable for setting unique address for every device during production.

CYW20706 consists of a fully integrated Power Amplifier (PA) that supports Class 1 or Class 2 operation. The maximum possible Tx power is +12 dBm for BR/EDR applications and +9dBm for BLE applications. In WICED 5.2 and later, the wiced_bt_cfg_settings_t structure consists of a maximum power value, where you can specify the maximum transmit power in dBm necessary for your application.

The max Tx power can also be configured using the APIs mentioned below. Kindly note that the API definitions are not included in WICED. Nevertheless, these APIs can be used to modify the Tx power.


  1. wiced_result_t wiced_bt_dev_set_adv_tx_power( int power );
    1. This API can be used to change the max Tx power for BLE advertisement. It changes the power to be used on the advertisement channels.
    2. Power should be a multiple of 4 from +8 dBm to -16 dBm, i.e. power can be +8, +4, 0, -4, -8, -12, -16 dBm.
    3. Example: wiced_bt_dev_set_adv_tx_power(-8);
  2. wiced_result_t wiced_bt_dev_set_tx_power( wiced_bt_device_address_t bd_addr , int power );
    1. This API can be used to change the max Tx power for a BLE or BR/EDR connection. It changes the power to be used for the data channels for a specific connection.
    2. The first parameter should be the device address of the peer device.
    3. Power should be a multiple of 4 from +12 dBm to -16 dBm, i.e. power can be +12, +8, +4, 0, -4, -8, -12, -16 dBm.
    4. Example: wiced_bt_dev_set_tx_power(bd_addr,0);

Filter Blog

By date:
By tag: