diff --git a/MSP-EXP430F5438-CC256x/example/Makefile b/MSP-EXP430F5438-CC256x/example/Makefile
index cf3cc54bc..792c0992f 100644
--- a/MSP-EXP430F5438-CC256x/example/Makefile
+++ b/MSP-EXP430F5438-CC256x/example/Makefile
@@ -28,7 +28,7 @@ CORE   = \
 COMMON = \
     ../src/hal_uart_dma.c                         \
 	${BTSTACK_ROOT}/chipset-cc256x/bt_control_cc256x.c   \
-	${BTSTACK_ROOT}/chipset-cc256x/bluetooth_init_cc2560A_2.1.c \
+	${BTSTACK_ROOT}/chipset-cc256x/bluetooth_init_cc2564_2.5.c   \
     ${BTSTACK_ROOT}/src/hci.c			          \
     ${BTSTACK_ROOT}/src/hci_cmds.c		          \
     ${BTSTACK_ROOT}/src/hci_dump.c		          \
@@ -40,6 +40,10 @@ COMMON = \
     ${BTSTACK_ROOT}/src/sdp.c			          \
     ${BTSTACK_ROOT}/src/sdp_util.c                \
     ${BTSTACK_ROOT}/src/utils.c			          \
+    ${BTSTACK_ROOT}/src/sdp_parser.c              \
+    ${BTSTACK_ROOT}/src/sdp_client.c              \
+    ${BTSTACK_ROOT}/src/sdp_query_rfcomm.c 		  \
+#	${BTSTACK_ROOT}/chipset-cc256x/bluetooth_init_cc2560A_2.1.c \
 
 LCD = ../firmware/hal_lcd.c ../firmware/hal_lcd_fonts.c
 
@@ -54,7 +58,7 @@ LCD_OBJ    = $(LCD:.c=.o)
 
 # create firmware image from common objects and example source file
 
-all: hid_demo.hex led_counter.hex spp_accel.hex spp_counter.hex spp_flowcontrol.hex gap_inquiry.hex
+all: hid_demo.hex led_counter.hex spp_accel.hex spp_counter.hex spp_flowcontrol.hex gap_inquiry.hex sdp_rfcomm_query.hex
 
 led_counter.out: ${CORE_OBJ} led_counter.o 
 	${CC} $^ ${LDFLAGS} -o $@
@@ -74,6 +78,9 @@ spp_flowcontrol.out: ${CORE_OBJ} ${COMMON_OBJ} ${LCD_OBJ} spp_flowcontrol.o ../f
 gap_inquiry.out: ${CORE_OBJ} ${COMMON_OBJ} ${LCD_OBJ} gap_inquiry.o ../firmware/hal_adc.o
 	${CC} $^ ${LDFLAGS} -o $@
 
+sdp_rfcomm_query.out: ${CORE_OBJ} ${COMMON_OBJ} ${LCD_OBJ} sdp_rfcomm_query.o ../firmware/hal_adc.o
+	${CC} $^ ${LDFLAGS} -o $@
+
 clean:
 	rm -f $ *.o *.out *.hex ../driver/*.o ../../src/*.o ../src/*.o ../firmware/*.o ${BTSTACK_ROOT}/chipset-cc256x/*.o ${BTSTACK_ROOT}/src/*.o
 
diff --git a/MSP-EXP430F5438-CC256x/example/config.h b/MSP-EXP430F5438-CC256x/example/config.h
index 2430bb7e0..e32fdd154 100644
--- a/MSP-EXP430F5438-CC256x/example/config.h
+++ b/MSP-EXP430F5438-CC256x/example/config.h
@@ -6,7 +6,7 @@
 
 #define HAVE_EHCILL
 
-// #define ENABLE_LOG_INFO 
+//#define ENABLE_LOG_INFO 
 #define ENABLE_LOG_ERROR
 
 #define HCI_ACL_PAYLOAD_SIZE 52
diff --git a/MSP-EXP430F5438-CC256x/example/sdp_rfcomm_query.c b/MSP-EXP430F5438-CC256x/example/sdp_rfcomm_query.c
new file mode 100644
index 000000000..5ba4ff266
--- /dev/null
+++ b/MSP-EXP430F5438-CC256x/example/sdp_rfcomm_query.c
@@ -0,0 +1,149 @@
+
+//*****************************************************************************
+//
+// minimal setup for SDP client over USB or UART
+//
+//*****************************************************************************
+
+#include "config.h"
+
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <msp430x54x.h>
+
+#include "sdp_query_rfcomm.h"
+
+#include "bt_control_cc256x.h"
+#include "hal_adc.h"
+#include "hal_board.h"
+#include "hal_compat.h"
+#include "hal_lcd.h"
+#include "hal_usb.h"
+#include  <msp430x54x.h>
+
+#include <btstack/hci_cmds.h>
+#include <btstack/run_loop.h>
+
+#include "hci.h"
+#include "btstack_memory.h"
+#include "hci_dump.h"
+#include "l2cap.h"
+#include "bt_control_cc256x.h"
+
+static bd_addr_t remote = {0x04,0x0C,0xCE,0xE4,0x85,0xD3};
+
+static uint8_t  service_index = 0;
+static uint8_t  channel_nr[10];
+static char*    service_name[10];
+
+
+static void packet_handler (void * connection, uint8_t packet_type, uint16_t channel, uint8_t *packet, uint16_t size){
+    if (packet_type != HCI_EVENT_PACKET) return;
+    uint8_t event = packet[0];
+
+    switch (event) {
+        case BTSTACK_EVENT_STATE:
+            // bt stack activated, get started 
+            if (packet[2] == HCI_STATE_WORKING){
+                sdp_query_rfcomm_channel_and_name_for_uuid(remote, 0x1002);
+            }
+            break;
+        default:
+            break;
+    }
+}
+
+
+void store_found_service(uint8_t * name, uint8_t port){
+    printf("APP: Service name: '%s', RFCOMM port %u\n", name, port);
+    channel_nr[service_index] = port;
+    service_name[service_index] = (char*) malloc(SDP_SERVICE_NAME_LEN+1);
+    strncpy(service_name[service_index], (char*) name, SDP_SERVICE_NAME_LEN);
+    service_name[service_index][SDP_SERVICE_NAME_LEN] = 0;
+    service_index++;
+}
+
+void report_found_services(){
+    printf("\n *** Client query response done. ");
+    if (service_index == 0){
+        printf("No service found.\n\n");
+    } else {
+        printf("Found following %d services:\n", service_index);
+    }
+    int i;
+    for (i=0; i<service_index; i++){
+        printf("     Service name %s, RFCOMM port %u\n", service_name[i], channel_nr[i]);
+    }    
+    printf(" ***\n\n");
+}
+
+void handle_query_rfcomm_event(sdp_query_event_t * event, void * context){
+    sdp_query_rfcomm_service_event_t * ve;
+            
+    switch (event->type){
+        case SDP_QUERY_RFCOMM_SERVICE:
+            ve = (sdp_query_rfcomm_service_event_t*) event;
+            store_found_service(ve->service_name, ve->channel_nr);
+            break;
+        case SDP_QUERY_COMPLETE:
+            report_found_services();
+            break;
+    }
+}
+
+static void hw_setup(){
+    // stop watchdog timer
+    WDTCTL = WDTPW + WDTHOLD;
+
+    //Initialize clock and peripherals 
+    halBoardInit();  
+    halBoardStartXT1(); 
+    halBoardSetSystemClock(SYSCLK_16MHZ);
+    
+    // init debug UART
+    halUsbInit();
+
+    // init LEDs
+    LED_PORT_OUT |= LED_1 | LED_2;
+    LED_PORT_DIR |= LED_1 | LED_2;
+
+    // ready - enable irq used in h4 task
+    __enable_interrupt();  
+}
+
+static void btstack_setup(){
+    /// GET STARTED with BTstack ///
+    btstack_memory_init();
+    run_loop_init(RUN_LOOP_EMBEDDED);
+    
+    // init HCI
+    hci_transport_t    * transport = hci_transport_h4_dma_instance();
+    bt_control_t       * control   = bt_control_cc256x_instance();
+    hci_uart_config_t  * config    = hci_uart_config_cc256x_instance();
+    remote_device_db_t * remote_db = (remote_device_db_t *) &remote_device_db_memory;
+    hci_init(transport, config, control, remote_db);
+    
+    // use eHCILL
+    bt_control_cc256x_enable_ehcill(1);
+    
+    // init L2CAP
+    l2cap_init();
+    l2cap_register_packet_handler(packet_handler);
+}
+
+int main(void){
+    sdp_query_rfcomm_register_callback(handle_query_rfcomm_event, NULL);
+
+    hw_setup();
+    btstack_setup();
+    
+    printf("Run...\n\r");
+
+    // turn on!
+    hci_power_control(HCI_POWER_ON);
+    // go!
+    run_loop_execute(); 
+    return 0;
+}