diff --git a/wireless/bluetooth/btsak/btsak_advertise.c b/wireless/bluetooth/btsak/btsak_advertise.c
index c95e218b3..5778e7dff 100644
--- a/wireless/bluetooth/btsak/btsak_advertise.c
+++ b/wireless/bluetooth/btsak/btsak_advertise.c
@@ -84,14 +84,16 @@ static void btsak_advertise_showusage(FAR const char *progname,
  * Name: btsak_cmd_advertisestart
  *
  * Description:
- *   Scan start command
+ *   Advertise start command
  *
  ****************************************************************************/
 
 static void btsak_cmd_advertisestart(FAR struct btsak_s *btsak, FAR char *cmd,
                                      int argc, FAR char *argv[])
 {
-  struct bt_advertisestart_s start;
+  struct btreq_s start;
+  struct bt_eir_s ad[2];             /* Data for advertisement packets */
+  struct bt_eir_s sd[2];             /* Data for scan response packets */
   int sockfd;
   int ret;
 
@@ -119,29 +121,39 @@ static void btsak_cmd_advertisestart(FAR struct btsak_s *btsak, FAR char *cmd,
    *   request additional information about the pallet.  
    */
 
-  memset(&start, 0, sizeof(struct bt_advertisestart_s));
-  strncpy(start.as_name, btsak->ifname, HCI_DEVNAME_SIZE);
+  /* The data for advertisement and response packets are provided as arrays
+   * terminated by an entry with len=2.
+   *
+   * REVISIT:  To be useful for anything other than testing, there must
+   * be some mechanism to specify the advertise and response data.
+   */
 
-  start.as_type       = BT_LE_ADV_IND;
+  memset(&ad, 0, 2 * sizeof(struct bt_eir_s));
+  ad[0].len     = 2;
+  ad[0].type    = BT_EIR_FLAGS;
+  ad[0].data[0] = BT_LE_AD_GENERAL | BT_LE_AD_NO_BREDR;
 
-  start.as_ad.len     = 2;
-  start.as_ad.type    = BT_EIR_FLAGS;
-  start.as_ad.data[0] = BT_LE_AD_GENERAL | BT_LE_AD_NO_BREDR;
+  memset(&sd, 0, 2 * sizeof(struct bt_eir_s));
+  sd[1].len         = sizeof("btsak");
+  sd[1].type        = BT_EIR_NAME_COMPLETE;
+  strcpy((FAR char *)sd[1].data, "btsak");
 
-  start.as_sd.len     = sizeof("btsak");
-  start.as_sd.type    = BT_EIR_NAME_COMPLETE;
-  strcpy((FAR char *)start.as_sd.data, "btsak");
+  memset(&btreq, 0, sizeof(struct bt_advertisebtreq_s));
+  strncpy(btreq.btr_name, btsak->ifname, HCI_DEVNAME_SIZE);
+  btreq.btr_advtype = BT_LE_ADV_IND;
+  btreq.btr_advad   = ad;
+  btreq.btr_advsd   = sd;
 
   /* Perform the IOCTL to start advertising */
 
   sockfd = btsak_socket(btsak);
   if (sockfd >= 0)
     {
-      ret = ioctl(sockfd, SIOCBT_ADVERTISESTART,
-                  (unsigned long)((uintptr_t)&start));
+      ret = ioctl(sockfd, SIOCBTADVSTART,
+                  (unsigned long)((uintptr_t)&btreq));
       if (ret < 0)
         {
-          fprintf(stderr, "ERROR:  ioctl(SIOCBT_ADVERTISESTART) failed: %d\n",
+          fprintf(stderr, "ERROR:  ioctl(SIOCBTADVSTART) failed: %d\n",
                   errno);
         }
     }
@@ -153,29 +165,30 @@ static void btsak_cmd_advertisestart(FAR struct btsak_s *btsak, FAR char *cmd,
  * Name: btsak_cmd_advertisestop
  *
  * Description:
- *   Scan stop command
+ *   Advertise stop command
  *
  ****************************************************************************/
 
 static void btsak_cmd_advertisestop(FAR struct btsak_s *btsak, FAR char *cmd,
-                              int argc, FAR char *argv[])
+                                    int argc, FAR char *argv[])
 {
-  struct bt_advertisestop_s stop;
+  struct btreq_s btreq;
   int sockfd;
   int ret;
 
   /* Perform the IOCTL to stop advertising */
 
-  strncpy(stop.at_name, btsak->ifname, HCI_DEVNAME_SIZE);
+  memset(&btreq, 0, sizeof(struct bt_advertisebtreq_s));
+  strncpy(btreq.btr_name, btsak->ifname, HCI_DEVNAME_SIZE);
 
   sockfd = btsak_socket(btsak);
   if (sockfd >= 0)
     {
-      ret = ioctl(sockfd, SIOCBT_ADVERTISESTOP,
-                  (unsigned long)((uintptr_t)&stop));
+      ret = ioctl(sockfd, SIOCBTADVSTOP,
+                  (unsigned long)((uintptr_t)&btreq));
       if (ret < 0)
         {
-          fprintf(stderr, "ERROR:  ioctl(SIOCBT_ADVERTISESTOP) failed: %d\n",
+          fprintf(stderr, "ERROR:  ioctl(SIOCBTADVSTOP) failed: %d\n",
                   errno);
         }
     }
diff --git a/wireless/bluetooth/btsak/btsak_scan.c b/wireless/bluetooth/btsak/btsak_scan.c
index 69e551c68..0bed07b41 100644
--- a/wireless/bluetooth/btsak/btsak_scan.c
+++ b/wireless/bluetooth/btsak/btsak_scan.c
@@ -91,21 +91,24 @@ static void btsak_scan_showusage(FAR const char *progname,
 static void btsak_cmd_scanstart(FAR struct btsak_s *btsak, FAR char *cmd,
                                 int argc, FAR char *argv[])
 {
-  struct bt_scanstart_s start;
+  struct btreq_s btreq;
   int argind;
   int sockfd;
   int ret;
 
+  memset(&btreq, 0, sizeof(struct bt_advertisebtreq_s));
+  strncpy(btreq.btr_name, btsak->ifname, HCI_DEVNAME_SIZE);
+
   /* Check if an option was provided */
 
   argind = 1;
-  start.ss_dupenable = false;
+  btreq.btr_dupenable = false;
 
   if (argc > 1)
     {
       if (strcmp(argv[argind], "-d") == 0)
         {
-          start.ss_dupenable = true;
+          btreq.btr_dupenable = true;
         }
       else
         {
@@ -117,16 +120,14 @@ static void btsak_cmd_scanstart(FAR struct btsak_s *btsak, FAR char *cmd,
 
   /* Perform the IOCTL to start scanning */
 
-  strncpy(start.ss_name, btsak->ifname, HCI_DEVNAME_SIZE);
-
   sockfd = btsak_socket(btsak);
   if (sockfd >= 0)
     {
-      ret = ioctl(sockfd, SIOCBT_SCANSTART,
-                  (unsigned long)((uintptr_t)&start));
+      ret = ioctl(sockfd, SIOCBTSCANSTART,
+                  (unsigned long)((uintptr_t)&btreq));
       if (ret < 0)
         {
-          fprintf(stderr, "ERROR:  ioctl(SIOCBT_SCANSTART) failed: %d\n",
+          fprintf(stderr, "ERROR:  ioctl(SIOCBTSCANSTART) failed: %d\n",
                   errno);
         }
     }
@@ -145,27 +146,26 @@ static void btsak_cmd_scanstart(FAR struct btsak_s *btsak, FAR char *cmd,
 static void btsak_cmd_scanget(FAR struct btsak_s *btsak, FAR char *cmd,
                               int argc, FAR char *argv[])
 {
-  union
-  {
-    struct bt_scanresult_s result;
-    uint8_t b[SIZEOF_BT_SCANRESULT_S(5)];
-  } u;
+  struct btreq_s btreq;
+  struct bt_scanresponse_s result[5];
   int sockfd;
   int ret;
 
   /* Perform the IOCTL to get the scan results so far */
 
-  strncpy(u.result.sr_name, btsak->ifname, HCI_DEVNAME_SIZE);
-  u.result.sr_nrsp = 5;
+  memset(&btreq, 0, sizeof(struct bt_advertisebtreq_s));
+  strncpy(btreq.btr_name, btsak->ifname, HCI_DEVNAME_SIZE);
+  btreq->btr_nrsp = 5;
+  btreq.btr_rsp   = result;
 
   sockfd = btsak_socket(btsak);
   if (sockfd >= 0)
     {
-      ret = ioctl(sockfd, SIOCBT_SCANGET,
-                  (unsigned long)((uintptr_t)&u.result));
+      ret = ioctl(sockfd, SIOCBTSCANGET,
+                  (unsigned long)((uintptr_t)&btreq));
       if (ret < 0)
         {
-          fprintf(stderr, "ERROR:  ioctl(SIOCBT_SCANGET) failed: %d\n",
+          fprintf(stderr, "ERROR:  ioctl(SIOCBTSCANGET) failed: %d\n",
                   errno);
         }
 
@@ -181,7 +181,7 @@ static void btsak_cmd_scanget(FAR struct btsak_s *btsak, FAR char *cmd,
           printf("Scan result:\n");
           for (i = 0; i < u.result.sr_nrsp; i++)
             {
-              rsp = &u.result.sr_rsp[i];
+              rsp = &result[i];
               printf("%d.\tname:        %s\n", rsp->sr_name);
               printf("\taddr:           "
                      "%02x:%02x:%02x:%02x:%02x:%02x type: %d\n",
@@ -221,22 +221,23 @@ static void btsak_cmd_scanget(FAR struct btsak_s *btsak, FAR char *cmd,
 static void btsak_cmd_scanstop(FAR struct btsak_s *btsak, FAR char *cmd,
                               int argc, FAR char *argv[])
 {
-  struct bt_scanstop_s stop;
+  struct btreq_s btreq;
   int sockfd;
   int ret;
 
   /* Perform the IOCTL to stop scanning and flush any buffered responses. */
 
-  strncpy(stop.st_name, btsak->ifname, HCI_DEVNAME_SIZE);
+  memset(&btreq, 0, sizeof(struct bt_advertisebtreq_s));
+  strncpy(btreq.btr_name, btsak->ifname, HCI_DEVNAME_SIZE);
 
   sockfd = btsak_socket(btsak);
   if (sockfd >= 0)
     {
-      ret = ioctl(sockfd, SIOCBT_SCANSTOP,
-                  (unsigned long)((uintptr_t)&stop));
+      ret = ioctl(sockfd, SIOCBTSCANSTOP,
+                  (unsigned long)((uintptr_t)&btreq));
       if (ret < 0)
         {
-          fprintf(stderr, "ERROR:  ioctl(SIOCBT_SCANSTOP) failed: %d\n",
+          fprintf(stderr, "ERROR:  ioctl(SIOCBTSCANSTOP) failed: %d\n",
                   errno);
         }
     }
diff --git a/wireless/bluetooth/btsak/btsak_security.c b/wireless/bluetooth/btsak/btsak_security.c
index 34dba3618..03034b10b 100644
--- a/wireless/bluetooth/btsak/btsak_security.c
+++ b/wireless/bluetooth/btsak/btsak_security.c
@@ -126,7 +126,7 @@ static void btsak_security_showusage(FAR const char *progname,
 
 void btsak_cmd_security(FAR struct btsak_s *btsak, int argc, FAR char *argv[])
 {
-  struct bt_security_s sec;
+  struct btreq_s btreq;
   int sockfd;
   int ret;
 
@@ -153,7 +153,10 @@ void btsak_cmd_security(FAR struct btsak_s *btsak, int argc, FAR char *argv[])
 
   /* The first argument must be an address of the form xx:xx:xx:xx:xx:xx */
 
-  ret = btsak_str2addr(argv[1], sec.se_addr.val);
+  memset(&btreq, 0, sizeof(struct bt_advertisebtreq_s));
+  strncpy(btreq.btr_name, btsak->ifname, HCI_DEVNAME_SIZE);
+
+  ret = btsak_str2addr(argv[1], btreq.btr_secaddr.val);
   if (ret < 0)
     {
       fprintf(stderr, "ERROR:  Invalid address string: %s/n", argv[1]);
@@ -162,7 +165,7 @@ void btsak_cmd_security(FAR struct btsak_s *btsak, int argc, FAR char *argv[])
 
   /* The second address is the address type, either "public" or "random" */
 
-  ret = btsak_str2addrtype(argv[2], &sec.se_addr.type);
+  ret = btsak_str2addrtype(argv[2], &btreq.btr_secaddr.type);
   if (ret < 0)
     {
       fprintf(stderr, "ERROR:  Invalid address type: %s/n", argv[2]);
@@ -171,19 +174,17 @@ void btsak_cmd_security(FAR struct btsak_s *btsak, int argc, FAR char *argv[])
 
   /* The third argument is the security level */
 
-  ret = btsak_str2seclevel(argv[3], &sec.se_level);
+  ret = btsak_str2seclevel(argv[3], &btreq.btr_seclevel);
 
   /* Perform the IOCTL to stop advertising */
 
-  strncpy(sec.se_name, btsak->ifname, HCI_DEVNAME_SIZE);
-
   sockfd = btsak_socket(btsak);
   if (sockfd >= 0)
     {
-      ret = ioctl(sockfd, SIOCBT_SECURITY, (unsigned long)((uintptr_t)&sec));
+      ret = ioctl(sockfd, SIOCBTSECURITY, (unsigned long)((uintptr_t)&btreq));
       if (ret < 0)
         {
-          fprintf(stderr, "ERROR:  ioctl(SIOCBT_SECURITY) failed: %d\n",
+          fprintf(stderr, "ERROR:  ioctl(SIOCBTSECURITY) failed: %d\n",
                   errno);
         }
     }