Merge "/bin/conman:  Run ifplugd script for eth0."
diff --git a/taxonomy/Makefile b/taxonomy/Makefile
index 6c20ed6..9f99572 100644
--- a/taxonomy/Makefile
+++ b/taxonomy/Makefile
@@ -2,12 +2,15 @@
 
 all: build
 
-test:
+test: pcaptest
 	set -e; \
 	for d in $(wildcard tests/*_test.py); do \
 		PYTHONPATH=. $(PYTHON) $$d; \
 	done
 
+pcaptest: tax_signature
+    PYTHONPATH=. python ./pcaptest.py
+
 PREFIX=/usr
 
 build:
@@ -19,3 +22,23 @@
 
 install-libs:
 	@echo "No libs to install."
+
+CC:=$(CROSS_COMPILE)gcc
+CPP:=$(CROSS_COMPILE)g++
+LD:=$(CROSS_COMPILE)ld
+AR:=$(CROSS_COMPILE)ar
+RANLIB:=$(CROSS_COMPILE)ranlib
+STRIP:=$(CROSS_COMPILE)strip
+BINDIR=$(DESTDIR)/bin
+
+CFLAGS += -g -Os -Wall -Werror $(EXTRACFLAGS)
+LDFLAGS += $(EXTRALDFLAGS)
+
+SRCS = tax_signature.c
+INCS =
+
+tax_signature: $(SRCS) $(INCS)
+	$(CC) $(CFLAGS) $(SRCS) -o $@ $(LDFLAGS) -lpcap
+
+clean:
+	rm -f tax_signature *.o
diff --git a/taxonomy/dhcp.py b/taxonomy/dhcp.py
index c662d0e..bfd1c91 100644
--- a/taxonomy/dhcp.py
+++ b/taxonomy/dhcp.py
@@ -49,6 +49,8 @@
     '1,3,6,15,119,252': ['ios'],
     '1,121,3,6,15,119,252': ['ios'],
 
+    '1,3,6,15,119,95,252,44,46,47': ['ipodtouch1'],
+
     '1,3,6,15,119,95,252,44,46,101': ['macos'],
     '1,3,6,15,119,95,252,44,46': ['macos'],
     '1,121,3,6,15,119,252,95,44,46': ['macos'],
diff --git a/taxonomy/ethernet.py b/taxonomy/ethernet.py
index cd88cbb..3c72d7c 100644
--- a/taxonomy/ethernet.py
+++ b/taxonomy/ethernet.py
@@ -68,6 +68,7 @@
     '64:89:9a': ['lg'],
     '64:bc:0c': ['lg'],
     '78:f8:82': ['lg'],
+    '8c:3a:e3': ['lg'],
     'a0:39:f7': ['lg'],
     'a0:91:69': ['lg'],
     'c4:43:8f': ['lg'],
@@ -93,6 +94,7 @@
     '98:4b:4a': ['motorola'],
     '9c:d9:17': ['motorola'],
     'cc:c3:ea': ['motorola'],
+    'e8:91:20': ['motorola'],
     'f8:7b:7a': ['motorola'],
     'f8:cf:c5': ['motorola'],
     'f8:e0:79': ['motorola'],
@@ -127,9 +129,11 @@
     '38:aa:3c': ['samsung'],
     '3c:8b:fe': ['samsung'],
     '40:0e:85': ['samsung'],
+    '48:5a:3f': ['samsung', 'wisol'],
     '5c:0a:5b': ['samsung'],
     '5c:f6:dc': ['samsung'],
     '6c:2f:2c': ['samsung'],
+    '6c:83:36': ['samsung'],
     '78:d6:f0': ['samsung'],
     '80:65:6d': ['samsung'],
     '84:38:38': ['samsung'],
diff --git a/taxonomy/pcaptest.py b/taxonomy/pcaptest.py
new file mode 100644
index 0000000..bda2215
--- /dev/null
+++ b/taxonomy/pcaptest.py
@@ -0,0 +1,90 @@
+#!/usr/bin/python
+
+import dhcp
+import glob
+import os.path
+import subprocess
+import sys
+import wifi
+
+regression = [
+  # devices for which we have a pcap but have decided not to add
+  # to the database, generally because the device is not common
+  # enough.
+  ('Unknown', './testdata/pcaps/iPhone 2 2.4GHz.pcap'),
+  ('Unknown', './testdata/pcaps/iPhone 3 2.4GHz.pcap'),
+  ('Unknown', './testdata/pcaps/iPhone 3GS 2.4GHz.pcap'),
+  ('Unknown', './testdata/pcaps/iPhone 3GS 2.4GHz M137LL.pcap'),
+  ('Unknown', './testdata/pcaps/HTC Evo 2.4GHz.pcap'),
+  ('Unknown', './testdata/pcaps/HTC Thunderbolt 2.4GHz.pcap'),
+  ('Unknown', './testdata/pcaps/Lenovo_T440_80211ac_2x2_Windows8_2_4_GHz.pcap'),
+  ('Unknown', './testdata/pcaps/MediaTek MT7610U 2.4GHz.pcap'),
+  ('Unknown', './testdata/pcaps/Motorola Droid 2 2.4GHz.pcap'),
+  ('Unknown', './testdata/pcaps/Motorola Droid 3 2.4GHz.pcap'),
+  ('Unknown', './testdata/pcaps/Nexus One 2.4GHz.pcap'),
+  ('Unknown', './testdata/pcaps/Samsung Charge 2.4GHz.pcap'),
+  ('Unknown', './testdata/pcaps/Samsung Captivate 2.4GHz.pcap'),
+  ('Unknown', './testdata/pcaps/Samsung Continuum 2.4GHz.pcap'),
+  ('Unknown', './testdata/pcaps/Samsung Epic 2.4GHz.pcap'),
+  ('Unknown', './testdata/pcaps/Samsung Fascinate 2.4GHz.pcap'),
+  ('Unknown', './testdata/pcaps/Samsung Galaxy Tab 2 2.4GHz.pcap'),
+  ('Unknown', './testdata/pcaps/Samsung Vibrant 2.4GHz.pcap'),
+  ('Unknown', './testdata/pcaps/Sony Xperia Z5 2.4GHz.pcap'),
+  ('Unknown', './testdata/pcaps/Sony Xperia Z5 5GHz.pcap'),
+
+  # Names which contain a slash ('/'), which Linux filenames do not
+  # tolerate. Inferring the expected result from the filename doesn't
+  # work for these, instead we add them explicitly.
+  ('iPad (1st/2nd gen)', './testdata/pcaps/iPad 1st gen 5GHz.pcap'),
+  ('iPad (1st/2nd gen)', './testdata/pcaps/iPad 2nd gen 5GHz.pcap'),
+  ('iPhone 6/6+', './testdata/pcaps/iPhone 6+ 5GHz.pcap'),
+  ('iPhone 6s/6s+', './testdata/pcaps/iPhone 6s 2.4GHz.pcap'),
+  ('iPhone 6s/6s+', './testdata/pcaps/iPhone 6s+ 2.4GHz.pcap'),
+  ('iPhone 6s/6s+', './testdata/pcaps/iPhone 6s 5GHz.pcap'),
+  ('iPhone 6s/6s+', './testdata/pcaps/iPhone 6s+ 5GHz.pcap'),
+  ('iPod Touch 1st/2nd gen', './testdata/pcaps/iPod Touch 1st gen 2.4GHz.pcap'),
+  ('Nest Thermostat v1/v2', './testdata/pcaps/Nest Thermostat 2.4GHz.pcap'),
+]
+
+
+def get_taxonomy_from_pcap(filename):
+  (mac, sig) = subprocess.check_output(['./tax_signature', '-f', filename]).split()
+  return (mac, sig)
+
+
+def get_model(filename):
+  offset = filename.find('2.4GHz')
+  if offset < 0:
+    offset = filename.find('5GHz')
+  if offset < 0:
+    print 'Invalid filename: %s' % filename
+    return ''
+  return filename[0:offset].strip()
+
+
+def check_pcap(expected_model, pcap):
+  mac, sig = get_taxonomy_from_pcap(pcap)
+  _, actual_model, _ = wifi.identify_wifi_device(sig, mac)
+  if expected_model != actual_model:
+    print 'Mismatch in %s: %s %s != %s' % (pcap, mac, expected_model,
+                                           actual_model)
+    return True
+
+
+if __name__ == '__main__':
+  dhcp.DHCP_LEASES_FILE = 'testdata/dhcp.leases'
+  dhcp.DHCP_SIGNATURE_FILE = 'testdata/dhcp.signatures'
+  pcaps = glob.glob('./testdata/pcaps/*.pcap')
+  rc = 0
+
+  for (expected_model, pcap) in regression:
+    pcaps.remove(pcap)
+    if check_pcap(expected_model, pcap):
+      rc = 1
+
+  for pcap in pcaps:
+    expected_model = get_model(os.path.basename(pcap))
+    if not expected_model or check_pcap(expected_model, pcap):
+      rc = 1
+
+  sys.exit(rc)
diff --git a/taxonomy/tax_signature.c b/taxonomy/tax_signature.c
new file mode 100644
index 0000000..f3c5415
--- /dev/null
+++ b/taxonomy/tax_signature.c
@@ -0,0 +1,366 @@
+#include <pcap.h>
+#include <stdio.h>
+#include <stdint.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#include <endian.h>
+
+typedef uint8_t u8;
+typedef uint16_t u16;
+typedef uint32_t u32;
+#define le_to_host16  le16toh
+#define le_to_host32  le32toh
+
+struct ieee80211_radiotap_hdr {
+  uint8_t it_version;
+  uint8_t it_pad;
+  uint16_t it_len;
+  uint32_t it_present;
+} __attribute__ ((packed));
+
+struct ieee80211_mgmt {
+  uint16_t frame_control;
+  uint16_t duration;
+  uint8_t da[6];
+  uint8_t sa[6];
+  uint8_t bssid[6];
+  uint16_t seq_ctrl;
+  union {
+    struct {
+      uint16_t cap;
+      uint16_t listen;
+      uint8_t variable[0];
+    } __attribute__ ((packed)) assoc_req;
+    struct {
+      uint8_t variable[0];
+    } __attribute__ ((packed)) probe_req;
+  } u;
+} __attribute__ ((packed));
+
+#define ASSOC_REQ         0
+#define PROBE_REQ         4
+
+
+/* from hostap/src/ap/taxonomy.c */
+
+/* Copy a string with no funny schtuff allowed; only alphanumerics. */
+static void no_mischief_strncpy(char *dst, const char *src, size_t n)
+{
+  size_t i;
+  for (i = 0; i < n; i++) {
+    unsigned char s = src[i];
+    int is_lower = (s >= 'a' && s <= 'z');
+    int is_upper = (s >= 'A' && s <= 'Z');
+    int is_digit = (s >= '0' && s <= '9');
+    if (is_lower || is_upper || is_digit) {
+      /* TODO: if any manufacturer uses Unicode within the
+       * WPS header, it will get mangled here. */
+      dst[i] = s;
+    } else {
+      /* note that even spaces will be transformed to underscores,
+       * so 'Nexus 7' will turn into 'Nexus_7'. This is deliberate,
+       * to make the string easier to parse. */
+      dst[i] = '_';
+    }
+  }
+}
+
+static int get_wps_name(char *name, size_t name_len,
+    const u8 *data, size_t data_len)
+{
+  /* Inside the WPS IE are a series of sub-IEs, using two byte IDs
+   * and two byte lengths. We're looking for the model name, if
+   * present. */
+  while (data_len >= 4) {
+    u16 id, elen;
+    id = (data[0] << 8) | data[1];
+    elen = (data[2] << 8) | data[3];
+    data += 4;
+    data_len -= 4;
+
+    if (elen > data_len) {
+      return 0;
+    }
+
+    if (id == 0x1023) {
+      /* Model name, like 'Nexus 7' */
+      size_t n = (elen < name_len) ? elen : name_len;
+      no_mischief_strncpy(name, (const char *)data, n);
+      return n;
+    }
+
+    data += elen;
+    data_len -= elen;
+  }
+
+  return 0;
+}
+
+static void ie_to_string(char *fstr, size_t fstr_len,
+                         const char *capability,
+                         const u8 *ie, size_t ie_len)
+{
+  size_t flen = fstr_len - 1;
+  char htcap[7 + 4 + 1];  // ",htcap:" + %04hx + trailing NUL
+  char htagg[7 + 2 + 1];  // ",htagg:" + %02hx + trailing NUL
+  char htmcs[7 + 8 + 1];  // ",htmcs:" + %08x + trailing NUL
+  char vhtcap[8 + 8 + 1];  // ",vhtcap:" + %08x + trailing NUL
+  char vhtrxmcs[10 + 8 + 1];  // ",vhtrxmcs:" + %08x + trailing NUL
+  char vhttxmcs[10 + 8 + 1];  // ",vhttxmcs:" + %08x + trailing NUL
+  char intwrk[8 + 2 + 1];  // ",intwrk:" + %02hx + trailing NUL
+  #define MAX_EXTCAP  254
+  char extcap[8 + (2 * MAX_EXTCAP) + 1];  // ",extcap:" + hex + trailing NUL
+  char txpow[7 + 4 + 1];  // ",txpow:" + %04hx + trailing NUL
+  #define WPS_NAME_LEN    32
+  char wps[WPS_NAME_LEN + 5 + 1];  // room to prepend ",wps:" + trailing NUL
+  int num = 0;
+
+  memset(htcap, 0, sizeof(htcap));
+  memset(htagg, 0, sizeof(htagg));
+  memset(htmcs, 0, sizeof(htmcs));
+  memset(vhtcap, 0, sizeof(vhtcap));
+  memset(vhtrxmcs, 0, sizeof(vhtrxmcs));
+  memset(vhttxmcs, 0, sizeof(vhttxmcs));
+  memset(intwrk, 0, sizeof(intwrk));
+  memset(extcap, 0, sizeof(extcap));
+  memset(txpow, 0, sizeof(txpow));
+  memset(wps, 0, sizeof(wps));
+  fstr[0] = '\0';
+
+  while (ie_len >= 2) {
+    u8 id, elen;
+    char tagbuf[32];
+    char *sep = (num++ == 0) ? "" : ",";
+
+    id = *ie++;
+    elen = *ie++;
+    ie_len -= 2;
+
+    if (elen > ie_len) {
+      break;
+    }
+
+    if ((id == 221) && (elen >= 4)) {
+      /* Vendor specific */
+      int is_MSFT = (ie[0] == 0x00 && ie[1] == 0x50 && ie[2] == 0xf2);
+      if (is_MSFT && ie[3] == 0x04) {
+        /* WPS */
+        char model_name[WPS_NAME_LEN + 1];
+        const u8 *data = &ie[4];
+        size_t data_len = elen - 4;
+        memset(model_name, 0, sizeof(model_name));
+        if (get_wps_name(model_name, WPS_NAME_LEN, data, data_len)) {
+          snprintf(wps, sizeof(wps), ",wps:%s", model_name);
+        }
+      }
+
+      snprintf(tagbuf, sizeof(tagbuf), "%s%d(%02x%02x%02x,%d)",
+               sep, id, ie[0], ie[1], ie[2], ie[3]);
+    } else {
+      if ((id == 45) && (elen >= 2)) {
+        /* HT Capabilities (802.11n) */
+        u16 cap;
+        memcpy(&cap, ie, sizeof(cap));
+        snprintf(htcap, sizeof(htcap), ",htcap:%04hx",
+                 le_to_host16(cap));
+      }
+      if ((id == 45) && (elen >= 3)) {
+        /* HT Capabilities (802.11n), A-MPDU information */
+        u8 agg;
+        memcpy(&agg, ie + 2, sizeof(agg));
+        snprintf(htagg, sizeof(htagg), ",htagg:%02hx", agg);
+      }
+      if ((id == 45) && (elen >= 7)) {
+        /* HT Capabilities (802.11n), MCS information */
+        u32 mcs;
+        memcpy(&mcs, ie + 3, sizeof(mcs));
+        snprintf(htmcs, sizeof(htmcs), ",htmcs:%08hx",
+            le_to_host32(mcs));
+      }
+      if ((id == 191) && (elen >= 4)) {
+        /* VHT Capabilities (802.11ac) */
+        u32 cap;
+        memcpy(&cap, ie, sizeof(cap));
+        snprintf(vhtcap, sizeof(vhtcap), ",vhtcap:%08x",
+                 le_to_host32(cap));
+      }
+      if ((id == 191) && (elen >= 8)) {
+        /* VHT Capabilities (802.11ac), RX MCS information */
+        u32 mcs;
+        memcpy(&mcs, ie + 4, sizeof(mcs));
+        snprintf(vhtrxmcs, sizeof(vhtrxmcs), ",vhtrxmcs:%08x",
+                 le_to_host32(mcs));
+      }
+      if ((id == 191) && (elen >= 12)) {
+        /* VHT Capabilities (802.11ac), TX MCS information */
+        u32 mcs;
+        memcpy(&mcs, ie + 8, sizeof(mcs));
+        snprintf(vhttxmcs, sizeof(vhttxmcs), ",vhttxmcs:%08x",
+                 le_to_host32(mcs));
+      }
+      if ((id == 107) && (elen >= 1)) {
+        /* Interworking */
+        snprintf(intwrk, sizeof(intwrk), ",intwrk:%02hx", *ie);
+      }
+      if (id == 127) {
+        /* Extended Capabilities */
+        int i;
+        int len = (elen < MAX_EXTCAP) ? elen : MAX_EXTCAP;
+        char *p = extcap;
+
+        p += snprintf(extcap, sizeof(extcap), ",extcap:");
+        for (i = 0; i < len; ++i) {
+          int lim = sizeof(extcap) - strlen(extcap);
+          p += snprintf(p, lim, "%02x", *(ie + i));
+        }
+      }
+      if ((id == 33) && (elen == 2)) {
+        /* TX Power */
+        u16 p;
+        memcpy(&p, ie, sizeof(p));
+        snprintf(txpow, sizeof(txpow), ",txpow:%04hx",
+                 le_to_host16(p));
+      }
+
+      snprintf(tagbuf, sizeof(tagbuf), "%s%d", sep, id);
+    }
+
+    strncat(fstr, tagbuf, flen);
+    flen = fstr_len - strlen(fstr) - 1;
+
+    ie += elen;
+    ie_len -= elen;
+  }
+
+  if (capability) {
+    strncat(fstr, capability, flen);
+    flen = fstr_len - strlen(fstr) - 1;
+  }
+  if (strlen(htcap)) {
+    strncat(fstr, htcap, flen);
+    flen = fstr_len - strlen(fstr) - 1;
+  }
+  if (strlen(htagg)) {
+    strncat(fstr, htagg, flen);
+    flen = fstr_len - strlen(fstr) - 1;
+  }
+  if (strlen(htmcs)) {
+    strncat(fstr, htmcs, flen);
+    flen = fstr_len - strlen(fstr) - 1;
+  }
+  if (strlen(vhtcap)) {
+    strncat(fstr, vhtcap, flen);
+    flen = fstr_len - strlen(fstr) - 1;
+  }
+  if (strlen(vhtrxmcs)) {
+    strncat(fstr, vhtrxmcs, flen);
+    flen = fstr_len - strlen(fstr) - 1;
+  }
+  if (strlen(vhttxmcs)) {
+    strncat(fstr, vhttxmcs, flen);
+    flen = fstr_len - strlen(fstr) - 1;
+  }
+  if (strlen(txpow)) {
+    strncat(fstr, txpow, flen);
+    flen = fstr_len - strlen(fstr) - 1;
+  }
+  if (strlen(intwrk)) {
+    strncat(fstr, intwrk, flen);
+    flen = fstr_len - strlen(fstr) - 1;
+  }
+  if (strlen(extcap)) {
+    strncat(fstr, extcap, flen);
+    flen = fstr_len - strlen(fstr) - 1;
+  }
+  if (strlen(wps)) {
+    strncat(fstr, wps, flen);
+    flen = fstr_len - strlen(fstr) - 1;
+  }
+
+  fstr[fstr_len - 1] = '\0';
+}
+
+
+int usage(const char *progname)
+{
+  fprintf(stderr, "usage: %s -f pcap\n", progname);
+  exit(1);
+}
+
+
+int main(int argc, char **argv)
+{
+  int opt;
+  pcap_t *handle;
+  char errbuf[PCAP_ERRBUF_SIZE];
+  struct pcap_pkthdr hdr;
+  const uint8_t *pkt;
+  const char *filename = NULL;
+  char mac[18];
+  char probe_sig[4096] = {0};
+  char assoc_sig[4096] = {0};
+
+  while ((opt = getopt(argc, argv, "f:")) != -1) {
+    switch(opt){
+      case 'f':
+        filename = optarg;
+        break;
+      default:
+        usage(argv[0]);
+        break;
+    }
+  }
+
+  if (filename == NULL) {
+    usage(argv[0]);
+  }
+
+  if ((handle = pcap_open_offline(filename, errbuf)) == NULL) {
+    perror("Cannot open pcap file");
+    exit(1);
+  }
+
+  while ((pkt = pcap_next(handle, &hdr)) != NULL) {
+    struct ieee80211_radiotap_hdr *rtap;
+    struct ieee80211_mgmt *mlme;
+    uint16_t fc;
+    int type, subtype;
+    uint8_t *ie;
+    size_t ie_len;
+
+    rtap = (struct ieee80211_radiotap_hdr *)pkt;
+    mlme = (struct ieee80211_mgmt *)(pkt + rtap->it_len);
+    fc = le_to_host16(mlme->frame_control);
+    type = (fc >> 2) & 0x0003;
+    subtype = (fc >> 4) & 0x000f;
+
+    if (type == 0 && subtype == ASSOC_REQ) {
+      char cap[5 + 4 + 1];  // ",cap:" + %04x + trailing NUL
+
+      snprintf(cap, sizeof(cap), ",cap:%04hx", mlme->u.assoc_req.cap);
+      ie = mlme->u.assoc_req.variable;
+      ie_len = hdr.caplen - (ie - (const uint8_t *)mlme) - rtap->it_len - 4;
+      ie_to_string(assoc_sig, sizeof(assoc_sig), cap, ie, ie_len);
+    }
+
+    if (type == 0 && subtype == PROBE_REQ) {
+      snprintf(mac, sizeof(mac), "%02hhx:%02hhx:%02hhx:%02hhx:%02hhx:%02hhx",
+          mlme->sa[0], mlme->sa[1], mlme->sa[2],
+          mlme->sa[3], mlme->sa[4], mlme->sa[5]);
+
+      ie = mlme->u.probe_req.variable;
+      ie_len = hdr.caplen - (ie - (const uint8_t *)mlme) - rtap->it_len - 4;
+      ie_to_string(probe_sig, sizeof(probe_sig), NULL, ie, ie_len);
+    }
+  }
+
+  printf("%s wifi3|probe:%s|assoc:%s\n", mac, probe_sig, assoc_sig);
+
+  if (strlen(probe_sig) && strlen(assoc_sig) && strlen(mac)) {
+    exit(0);
+  }
+
+  exit(1);
+}
diff --git a/taxonomy/testdata/dhcp.leases b/taxonomy/testdata/dhcp.leases
index b7d2d2f..fe88a8b 100644
--- a/taxonomy/testdata/dhcp.leases
+++ b/taxonomy/testdata/dhcp.leases
@@ -1,5 +1,41 @@
+# The astute observer will note that many of these are mis-spelled.
+# This is deliberate: we want to prevent "name:iphone" (etc) entries
+# from being added to wifi.py without deliberate effort. This
+# file conveys that "iPhoone-4" is the MAC address for the
+# iPhone 4 in testdata/pcaps, but won't match a signature
+# containing "name:iphone".
 1432269507 28:18:78:ff:ff:01 192.168.42.1 Xbox-SystemOS 01:02:03:04:05:06:07
 1432236005 d8:50:e6:ff:ff:02 192.168.42.2 * 01:02:03:04:05:06:08
 1432237015 f8:e0:79:ff:ff:03 192.168.42.3 android-fedcba9876543210 *
 1432237016 2c:1f:23:ff:ff:01 192.168.42.4 iPod *
 duid 00:01:00:01:00:00:11:03:f4:f5:e8:00:00:01
+1432237016 c8:69:cd:5e:b5:43 192.168.42.5 Apple-TV *
+1432237016 6c:29:95:7c:25:fe 192.168.42.6 * *
+1432237016 b0:34:95:02:66:83 192.168.42.7 iPaad-4th-gen *
+1432237016 04:69:f8:6b:99:5e 192.168.42.8 iPad-Air-2nd-gen *
+1432237016 1c:e6:2b:9b:41:91 192.168.42.9 iPaad-Mini-1st-gen *
+1432237016 84:8e:0c:99:48:d5 192.168.42.10 iPaad-Mini-2nd-gen *
+1432237016 24:ab:81:e4:74:bc 192.168.42.11 iPhoone-4 *
+1432237016 54:26:96:29:3e:39 192.168.42.12 iPhoone-5 *
+1432237016 f0:db:e2:5e:a3:1a 192.168.42.13 iPhoone-6 *
+1432237016 c8:85:50:e9:74:58 192.168.42.14 iPhoone-6+ *
+1432237016 00:cd:fe:a7:47:96 192.168.42.15 iPhoone-6s *
+1432237016 68:db:ca:37:10:d8 192.168.42.16 iPhoone-6s+ *
+1432237016 00:1d:4f:0f:ee:14 192.168.42.17 iPood-Touch-1 *
+1432237016 f0:b4:79:9d:28:0d 192.168.42.18 iPood-Touch-4 *
+1432237016 3c:15:c2:d0:1b:0e 192.168.42.19 MacBoookPro2013 *
+1432237016 10:2f:6b:ec:78:ff 192.168.42.20 NokiaLumia635 *
+1432237016 08:05:81:21:68:57 192.168.42.21 Roku4 *
+1432237016 5c:f6:dc:16:6a:17 192.168.42.22 SamsungSmartTV *
+1432237016 6c:40:08:55:76:8a 192.168.42.23 iPhoone-5s *
+1432237016 00:23:12:28:de:6e 192.168.42.24 AppleTV1
+1432237016 28:cf:da:24:f4:ab 192.168.42.25 AppleTV2
+1432237016 68:64:4b:11:ce:2b 192.168.42.26 AppleTV3A
+1432237016 b8:ff:61:85:9f:39 192.168.42.27 iPaad-2
+1432237016 fc:25:3f:d7:de:5a 192.168.42.28 iPaad-3
+1432237016 9c:f3:87:cc:38:1e 192.168.42.29 MacBoookAir2014
+1432237016 34:23:87:5c:86:39 192.168.42.30 HPChromeboook
+1432237016 34:af:2c:ff:80:ef 192.168.42.31 WiiU
+1432237016 00:26:4a:e6:b7:4e 192.168.42.32 iPhoone-3GS
+1432237016 d0:23:db:a2:e5:02 192.168.42.33 iPhoone-4s
+1432237016 00:26:4a:c2:89:58 192.168.42.33 iPhoone-3GS
diff --git a/taxonomy/testdata/dhcp.signatures b/taxonomy/testdata/dhcp.signatures
index 9f56ebc..df24d22 100644
--- a/taxonomy/testdata/dhcp.signatures
+++ b/taxonomy/testdata/dhcp.signatures
@@ -1,3 +1,33 @@
 28:18:78:ff:ff:01 1,33,3,6,15,28,51,58,59
 28:ef:01:00:00:01 1,3,6,12,15,28,40,41,42
 3c:15:c2:00:00:01 1,3,6,15,119,95,252,44,46
+c8:69:cd:5e:b5:43 1,121,3,6,15,119,252
+6c:29:95:7c:25:fe 1,121,33,3,6,12,15,26,28,51,54,58,59,119,252
+b0:34:95:02:66:83 1,3,6,15,119,252
+04:69:f8:6b:99:5e 1,3,6,15,119,252
+1c:e6:2b:9b:41:91 1,3,6,15,119,252
+84:8e:0c:99:48:d5 1,3,6,15,119,252
+24:ab:81:e4:74:bc 1,3,6,15,119,252
+54:26:96:29:3e:39 1,3,6,15,119,252
+f0:db:e2:5e:a3:1a 1,3,6,15,119,252
+c8:85:50:e9:74:58 1,3,6,15,119,252
+00:cd:fe:a7:47:96 1,3,6,15,119,252
+68:db:ca:37:10:d8 1,3,6,15,119,252
+00:1d:4f:0f:ee:14 1,3,6,15,119,95,252,44,46,47
+f0:b4:79:9d:28:0d 1,3,6,15,119,252
+3c:15:c2:d0:1b:0e 1,3,6,15,119,95,252,44,46
+10:2f:6b:ec:78:ff 1,15,3,6,44,46,47,31,33,121,249,252,43
+08:05:81:21:68:57 1,3,6,15,12
+5c:f6:dc:16:6a:17 1,3,6,12,15,28,42,125
+6c:40:08:55:76:8a 1,3,6,15,119,252
+00:23:12:28:de:6e 1,3,6,15,112,113,78,79,95,252
+28:cf:da:24:f4:ab 1,3,6,15,119,252
+68:64:4b:11:ce:2b 1,3,6,15,119,252
+b8:ff:61:85:9f:39 1,3,6,15,119,252
+fc:25:3f:d7:de:5a 1,3,6,15,119,252
+9c:f3:87:cc:38:1e 1,3,6,15,119,95,252,44,46
+34:23:87:5c:86:39 1,121,33,3,6,12,15,26,28,51,54,58,59,119,252
+34:af:2c:ff:80:ef 1,3,6,15
+00:26:4a:e6:b7:4e 1,3,6,15,119,252
+d0:23:db:a2:e5:02 1,3,6,15,119,252
+00:26:4a:c2:89:58 1,3,6,15,119,252
diff --git a/taxonomy/testdata/pcaps/ASUS Transformer TF300 2.4GHz.pcap b/taxonomy/testdata/pcaps/ASUS Transformer TF300 2.4GHz.pcap
new file mode 100644
index 0000000..9ef299c
--- /dev/null
+++ b/taxonomy/testdata/pcaps/ASUS Transformer TF300 2.4GHz.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Amazon Fire TV Stick 2.4GHz.pcap b/taxonomy/testdata/pcaps/Amazon Fire TV Stick 2.4GHz.pcap
new file mode 100644
index 0000000..b328896
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Amazon Fire TV Stick 2.4GHz.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Amazon Fire TV Stick 5GHz.pcap b/taxonomy/testdata/pcaps/Amazon Fire TV Stick 5GHz.pcap
new file mode 100644
index 0000000..48eb890
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Amazon Fire TV Stick 5GHz.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Amazon Kindle Fire 2.4GHz alt.pcap b/taxonomy/testdata/pcaps/Amazon Kindle Fire 2.4GHz alt.pcap
new file mode 100644
index 0000000..a5d4ad3
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Amazon Kindle Fire 2.4GHz alt.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Amazon Kindle Fire 2.4GHz.pcap b/taxonomy/testdata/pcaps/Amazon Kindle Fire 2.4GHz.pcap
new file mode 100644
index 0000000..a24abd5
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Amazon Kindle Fire 2.4GHz.pcap
Binary files differ
diff --git "a/taxonomy/testdata/pcaps/Apple TV \0501st gen\051 2.4GHz.pcap" "b/taxonomy/testdata/pcaps/Apple TV \0501st gen\051 2.4GHz.pcap"
new file mode 100644
index 0000000..01fa490
--- /dev/null
+++ "b/taxonomy/testdata/pcaps/Apple TV \0501st gen\051 2.4GHz.pcap"
Binary files differ
diff --git "a/taxonomy/testdata/pcaps/Apple TV \0501st gen\051 5GHz.pcap" "b/taxonomy/testdata/pcaps/Apple TV \0501st gen\051 5GHz.pcap"
new file mode 100644
index 0000000..529b930
--- /dev/null
+++ "b/taxonomy/testdata/pcaps/Apple TV \0501st gen\051 5GHz.pcap"
Binary files differ
diff --git "a/taxonomy/testdata/pcaps/Apple TV \0502nd gen\051 2.4GHz.pcap" "b/taxonomy/testdata/pcaps/Apple TV \0502nd gen\051 2.4GHz.pcap"
new file mode 100644
index 0000000..26018c0
--- /dev/null
+++ "b/taxonomy/testdata/pcaps/Apple TV \0502nd gen\051 2.4GHz.pcap"
Binary files differ
diff --git "a/taxonomy/testdata/pcaps/Apple TV \0502nd gen\051 5GHz.pcap" "b/taxonomy/testdata/pcaps/Apple TV \0502nd gen\051 5GHz.pcap"
new file mode 100644
index 0000000..e747ed0
--- /dev/null
+++ "b/taxonomy/testdata/pcaps/Apple TV \0502nd gen\051 5GHz.pcap"
Binary files differ
diff --git "a/taxonomy/testdata/pcaps/Apple TV \0503rd gen rev A\051 2.4GHz.pcap" "b/taxonomy/testdata/pcaps/Apple TV \0503rd gen rev A\051 2.4GHz.pcap"
new file mode 100644
index 0000000..f2ba13f
--- /dev/null
+++ "b/taxonomy/testdata/pcaps/Apple TV \0503rd gen rev A\051 2.4GHz.pcap"
Binary files differ
diff --git "a/taxonomy/testdata/pcaps/Apple TV \0503rd gen rev A\051 5GHz.pcap" "b/taxonomy/testdata/pcaps/Apple TV \0503rd gen rev A\051 5GHz.pcap"
new file mode 100644
index 0000000..16ca94b
--- /dev/null
+++ "b/taxonomy/testdata/pcaps/Apple TV \0503rd gen rev A\051 5GHz.pcap"
Binary files differ
diff --git "a/taxonomy/testdata/pcaps/Apple TV \0504th gen\051 2.4GHz.pcap" "b/taxonomy/testdata/pcaps/Apple TV \0504th gen\051 2.4GHz.pcap"
new file mode 100644
index 0000000..027e81e
--- /dev/null
+++ "b/taxonomy/testdata/pcaps/Apple TV \0504th gen\051 2.4GHz.pcap"
Binary files differ
diff --git "a/taxonomy/testdata/pcaps/Apple TV \0504th gen\051 5GHz.pcap" "b/taxonomy/testdata/pcaps/Apple TV \0504th gen\051 5GHz.pcap"
new file mode 100644
index 0000000..c153d71
--- /dev/null
+++ "b/taxonomy/testdata/pcaps/Apple TV \0504th gen\051 5GHz.pcap"
Binary files differ
diff --git "a/taxonomy/testdata/pcaps/Chromebook 14\" HP 2.4GHz.pcap" "b/taxonomy/testdata/pcaps/Chromebook 14\" HP 2.4GHz.pcap"
new file mode 100644
index 0000000..a518a8d
--- /dev/null
+++ "b/taxonomy/testdata/pcaps/Chromebook 14\" HP 2.4GHz.pcap"
Binary files differ
diff --git "a/taxonomy/testdata/pcaps/Chromebook 14\" HP 5GHz.pcap" "b/taxonomy/testdata/pcaps/Chromebook 14\" HP 5GHz.pcap"
new file mode 100644
index 0000000..5d20d71
--- /dev/null
+++ "b/taxonomy/testdata/pcaps/Chromebook 14\" HP 5GHz.pcap"
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Chromebook Pixel 2 2.4GHz.pcap b/taxonomy/testdata/pcaps/Chromebook Pixel 2 2.4GHz.pcap
new file mode 100644
index 0000000..d6d68b7
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Chromebook Pixel 2 2.4GHz.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Chromebook Pixel 2 5GHz.pcap b/taxonomy/testdata/pcaps/Chromebook Pixel 2 5GHz.pcap
new file mode 100644
index 0000000..9cb877c
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Chromebook Pixel 2 5GHz.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Chromecast 2.4GHz.pcap b/taxonomy/testdata/pcaps/Chromecast 2.4GHz.pcap
new file mode 100644
index 0000000..3e68523
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Chromecast 2.4GHz.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Chromecast v2 2.4GHz.pcap b/taxonomy/testdata/pcaps/Chromecast v2 2.4GHz.pcap
new file mode 100644
index 0000000..eec0c49
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Chromecast v2 2.4GHz.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Chromecast v2 5GHz.pcap b/taxonomy/testdata/pcaps/Chromecast v2 5GHz.pcap
new file mode 100644
index 0000000..28d3381
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Chromecast v2 5GHz.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/HTC Evo 2.4GHz.pcap b/taxonomy/testdata/pcaps/HTC Evo 2.4GHz.pcap
new file mode 100644
index 0000000..f737c5c
--- /dev/null
+++ b/taxonomy/testdata/pcaps/HTC Evo 2.4GHz.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/HTC One M8 2.4GHz Broadcast Probe.pcap b/taxonomy/testdata/pcaps/HTC One M8 2.4GHz Broadcast Probe.pcap
new file mode 100644
index 0000000..ff58ccd
--- /dev/null
+++ b/taxonomy/testdata/pcaps/HTC One M8 2.4GHz Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/HTC One M8 2.4GHz Specific Probe.pcap b/taxonomy/testdata/pcaps/HTC One M8 2.4GHz Specific Probe.pcap
new file mode 100644
index 0000000..bfa4dbc
--- /dev/null
+++ b/taxonomy/testdata/pcaps/HTC One M8 2.4GHz Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/HTC One M8 2.4GHz.pcap b/taxonomy/testdata/pcaps/HTC One M8 2.4GHz.pcap
new file mode 100644
index 0000000..952c259
--- /dev/null
+++ b/taxonomy/testdata/pcaps/HTC One M8 2.4GHz.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/HTC One M8 5GHz Broadcast Probe.pcap b/taxonomy/testdata/pcaps/HTC One M8 5GHz Broadcast Probe.pcap
new file mode 100644
index 0000000..7c24015
--- /dev/null
+++ b/taxonomy/testdata/pcaps/HTC One M8 5GHz Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/HTC One M8 5GHz Specific Probe.pcap b/taxonomy/testdata/pcaps/HTC One M8 5GHz Specific Probe.pcap
new file mode 100644
index 0000000..f259885
--- /dev/null
+++ b/taxonomy/testdata/pcaps/HTC One M8 5GHz Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/HTC One M8 5GHz.pcap b/taxonomy/testdata/pcaps/HTC One M8 5GHz.pcap
new file mode 100644
index 0000000..5395569
--- /dev/null
+++ b/taxonomy/testdata/pcaps/HTC One M8 5GHz.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/HTC One M9 2.4GHz.pcap b/taxonomy/testdata/pcaps/HTC One M9 2.4GHz.pcap
new file mode 100644
index 0000000..a334ab7
--- /dev/null
+++ b/taxonomy/testdata/pcaps/HTC One M9 2.4GHz.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/HTC One S 2.4GHz.pcap b/taxonomy/testdata/pcaps/HTC One S 2.4GHz.pcap
new file mode 100644
index 0000000..07e59f1
--- /dev/null
+++ b/taxonomy/testdata/pcaps/HTC One S 2.4GHz.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/HTC Thunderbolt 2.4GHz.pcap b/taxonomy/testdata/pcaps/HTC Thunderbolt 2.4GHz.pcap
new file mode 100644
index 0000000..2077b03
--- /dev/null
+++ b/taxonomy/testdata/pcaps/HTC Thunderbolt 2.4GHz.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/LG G3 2.4GHz.pcap b/taxonomy/testdata/pcaps/LG G3 2.4GHz.pcap
new file mode 100644
index 0000000..19002cf
--- /dev/null
+++ b/taxonomy/testdata/pcaps/LG G3 2.4GHz.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/LG G3 5GHz.pcap b/taxonomy/testdata/pcaps/LG G3 5GHz.pcap
new file mode 100644
index 0000000..51e5a97
--- /dev/null
+++ b/taxonomy/testdata/pcaps/LG G3 5GHz.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/LG G4 2.4GHz.pcap b/taxonomy/testdata/pcaps/LG G4 2.4GHz.pcap
new file mode 100644
index 0000000..fc8f205
--- /dev/null
+++ b/taxonomy/testdata/pcaps/LG G4 2.4GHz.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/LG G4 5GHz.pcap b/taxonomy/testdata/pcaps/LG G4 5GHz.pcap
new file mode 100644
index 0000000..790e28d
--- /dev/null
+++ b/taxonomy/testdata/pcaps/LG G4 5GHz.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Lenovo_T440_80211ac_2x2_Windows8_2_4_GHz.pcap b/taxonomy/testdata/pcaps/Lenovo_T440_80211ac_2x2_Windows8_2_4_GHz.pcap
new file mode 100644
index 0000000..70aea8b
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Lenovo_T440_80211ac_2x2_Windows8_2_4_GHz.pcap
Binary files differ
diff --git "a/taxonomy/testdata/pcaps/MacBook Air late 2014 \050A1466\051 2.4GHz.pcap" "b/taxonomy/testdata/pcaps/MacBook Air late 2014 \050A1466\051 2.4GHz.pcap"
new file mode 100644
index 0000000..ed6f809
--- /dev/null
+++ "b/taxonomy/testdata/pcaps/MacBook Air late 2014 \050A1466\051 2.4GHz.pcap"
Binary files differ
diff --git "a/taxonomy/testdata/pcaps/MacBook Air late 2014 \050A1466\051 5GHz.pcap" "b/taxonomy/testdata/pcaps/MacBook Air late 2014 \050A1466\051 5GHz.pcap"
new file mode 100644
index 0000000..aec0f95
--- /dev/null
+++ "b/taxonomy/testdata/pcaps/MacBook Air late 2014 \050A1466\051 5GHz.pcap"
Binary files differ
diff --git "a/taxonomy/testdata/pcaps/MacBook Pro early 2014 \050A1502\051 2.4GHz.pcap" "b/taxonomy/testdata/pcaps/MacBook Pro early 2014 \050A1502\051 2.4GHz.pcap"
new file mode 100644
index 0000000..51073f9
--- /dev/null
+++ "b/taxonomy/testdata/pcaps/MacBook Pro early 2014 \050A1502\051 2.4GHz.pcap"
Binary files differ
diff --git a/taxonomy/testdata/pcaps/MediaTek MT7610U 2.4GHz.pcap b/taxonomy/testdata/pcaps/MediaTek MT7610U 2.4GHz.pcap
new file mode 100755
index 0000000..fb85614
--- /dev/null
+++ b/taxonomy/testdata/pcaps/MediaTek MT7610U 2.4GHz.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Microsoft Surface RT 2.4GHz.pcap b/taxonomy/testdata/pcaps/Microsoft Surface RT 2.4GHz.pcap
new file mode 100644
index 0000000..96869fc
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Microsoft Surface RT 2.4GHz.pcap
Binary files differ
diff --git "a/taxonomy/testdata/pcaps/Moto E \0502nd gen\051 2.4GHz.pcap" "b/taxonomy/testdata/pcaps/Moto E \0502nd gen\051 2.4GHz.pcap"
new file mode 100644
index 0000000..5ec0dbf
--- /dev/null
+++ "b/taxonomy/testdata/pcaps/Moto E \0502nd gen\051 2.4GHz.pcap"
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Moto G or Moto X 2.4GHz Moto G 1st gen.pcap b/taxonomy/testdata/pcaps/Moto G or Moto X 2.4GHz Moto G 1st gen.pcap
new file mode 100644
index 0000000..c31b8f7
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Moto G or Moto X 2.4GHz Moto G 1st gen.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Moto G or Moto X 2.4GHz Moto G 2nd gen.pcap b/taxonomy/testdata/pcaps/Moto G or Moto X 2.4GHz Moto G 2nd gen.pcap
new file mode 100644
index 0000000..eb1210a
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Moto G or Moto X 2.4GHz Moto G 2nd gen.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Moto G or Moto X 2.4GHz Moto X 2nd gen Specific Probe.pcap b/taxonomy/testdata/pcaps/Moto G or Moto X 2.4GHz Moto X 2nd gen Specific Probe.pcap
new file mode 100644
index 0000000..5b388d6
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Moto G or Moto X 2.4GHz Moto X 2nd gen Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Moto G or Moto X 2.4GHz Moto X 2nd gen.pcap b/taxonomy/testdata/pcaps/Moto G or Moto X 2.4GHz Moto X 2nd gen.pcap
new file mode 100644
index 0000000..73a70d4
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Moto G or Moto X 2.4GHz Moto X 2nd gen.pcap
Binary files differ
diff --git "a/taxonomy/testdata/pcaps/Moto X \0502nd gen\051 2.4GHz Broadcast Probe.pcap" "b/taxonomy/testdata/pcaps/Moto X \0502nd gen\051 2.4GHz Broadcast Probe.pcap"
new file mode 100644
index 0000000..3257af0
--- /dev/null
+++ "b/taxonomy/testdata/pcaps/Moto X \0502nd gen\051 2.4GHz Broadcast Probe.pcap"
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Moto X Style 2.4GHz Broadcast Probe.pcap b/taxonomy/testdata/pcaps/Moto X Style 2.4GHz Broadcast Probe.pcap
new file mode 100644
index 0000000..00374d7
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Moto X Style 2.4GHz Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Moto X Style 2.4GHz Specific Probe.pcap b/taxonomy/testdata/pcaps/Moto X Style 2.4GHz Specific Probe.pcap
new file mode 100644
index 0000000..e7dcffc
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Moto X Style 2.4GHz Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Moto X Style 2.4GHz.pcap b/taxonomy/testdata/pcaps/Moto X Style 2.4GHz.pcap
new file mode 100644
index 0000000..8275d8b
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Moto X Style 2.4GHz.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Moto X Style 5GHz Broadcast Probe.pcap b/taxonomy/testdata/pcaps/Moto X Style 5GHz Broadcast Probe.pcap
new file mode 100644
index 0000000..bc88962
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Moto X Style 5GHz Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Moto X Style 5GHz Specific Probe.pcap b/taxonomy/testdata/pcaps/Moto X Style 5GHz Specific Probe.pcap
new file mode 100644
index 0000000..5e320d3
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Moto X Style 5GHz Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Moto X Style 5GHz.pcap b/taxonomy/testdata/pcaps/Moto X Style 5GHz.pcap
new file mode 100644
index 0000000..d35dea2
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Moto X Style 5GHz.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Motorola Droid 2 2.4GHz.pcap b/taxonomy/testdata/pcaps/Motorola Droid 2 2.4GHz.pcap
new file mode 100644
index 0000000..0228f23
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Motorola Droid 2 2.4GHz.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Motorola Droid 3 2.4GHz.pcap b/taxonomy/testdata/pcaps/Motorola Droid 3 2.4GHz.pcap
new file mode 100644
index 0000000..2826282
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Motorola Droid 3 2.4GHz.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Motorola Xoom 2.4GHz.pcap b/taxonomy/testdata/pcaps/Motorola Xoom 2.4GHz.pcap
new file mode 100644
index 0000000..e6b188d
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Motorola Xoom 2.4GHz.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Motorola Xoom 5GHz.pcap b/taxonomy/testdata/pcaps/Motorola Xoom 5GHz.pcap
new file mode 100644
index 0000000..81d36e5
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Motorola Xoom 5GHz.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Nest Thermostat 2.4GHz.pcap b/taxonomy/testdata/pcaps/Nest Thermostat 2.4GHz.pcap
new file mode 100644
index 0000000..d771711
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Nest Thermostat 2.4GHz.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Nexus 10 2.4GHz.pcap b/taxonomy/testdata/pcaps/Nexus 10 2.4GHz.pcap
new file mode 100644
index 0000000..a3c1f84
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Nexus 10 2.4GHz.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Nexus 10 5GHz.pcap b/taxonomy/testdata/pcaps/Nexus 10 5GHz.pcap
new file mode 100644
index 0000000..da203f5
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Nexus 10 5GHz.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Nexus 4 2.4GHz Broadcast Probe.pcap b/taxonomy/testdata/pcaps/Nexus 4 2.4GHz Broadcast Probe.pcap
new file mode 100644
index 0000000..3386d25
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Nexus 4 2.4GHz Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Nexus 4 2.4GHz Specific Probe.pcap b/taxonomy/testdata/pcaps/Nexus 4 2.4GHz Specific Probe.pcap
new file mode 100644
index 0000000..fb0f673
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Nexus 4 2.4GHz Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Nexus 4 2.4GHz.pcap b/taxonomy/testdata/pcaps/Nexus 4 2.4GHz.pcap
new file mode 100644
index 0000000..e17a7be
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Nexus 4 2.4GHz.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Nexus 4 5GHz Broadcast Probe.pcap b/taxonomy/testdata/pcaps/Nexus 4 5GHz Broadcast Probe.pcap
new file mode 100644
index 0000000..5f23792
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Nexus 4 5GHz Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Nexus 4 5GHz Specific Probe.pcap b/taxonomy/testdata/pcaps/Nexus 4 5GHz Specific Probe.pcap
new file mode 100644
index 0000000..8a894b4
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Nexus 4 5GHz Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Nexus 4 5GHz.pcap b/taxonomy/testdata/pcaps/Nexus 4 5GHz.pcap
new file mode 100644
index 0000000..331420f
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Nexus 4 5GHz.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Nexus 5 2.4GHz.pcap b/taxonomy/testdata/pcaps/Nexus 5 2.4GHz.pcap
new file mode 100644
index 0000000..d1292f8
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Nexus 5 2.4GHz.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Nexus 5 5GHz.pcap b/taxonomy/testdata/pcaps/Nexus 5 5GHz.pcap
new file mode 100644
index 0000000..402d838
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Nexus 5 5GHz.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Nexus 5X 2.4GHz Broadcast Probe.pcap b/taxonomy/testdata/pcaps/Nexus 5X 2.4GHz Broadcast Probe.pcap
new file mode 100644
index 0000000..2098272
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Nexus 5X 2.4GHz Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Nexus 5X 2.4GHz Specific Probe.pcap b/taxonomy/testdata/pcaps/Nexus 5X 2.4GHz Specific Probe.pcap
new file mode 100644
index 0000000..83c95da
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Nexus 5X 2.4GHz Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Nexus 5X 2.4GHz.pcap b/taxonomy/testdata/pcaps/Nexus 5X 2.4GHz.pcap
new file mode 100644
index 0000000..cfeb7b9
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Nexus 5X 2.4GHz.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Nexus 5X 5GHz.pcap b/taxonomy/testdata/pcaps/Nexus 5X 5GHz.pcap
new file mode 100644
index 0000000..ab16541
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Nexus 5X 5GHz.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Nexus 6 2.4GHz.pcap b/taxonomy/testdata/pcaps/Nexus 6 2.4GHz.pcap
new file mode 100644
index 0000000..2130284
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Nexus 6 2.4GHz.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Nexus 6 5GHz.pcap b/taxonomy/testdata/pcaps/Nexus 6 5GHz.pcap
new file mode 100644
index 0000000..cbb31c0
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Nexus 6 5GHz.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Nexus 6P 2.4GHz.pcap b/taxonomy/testdata/pcaps/Nexus 6P 2.4GHz.pcap
new file mode 100644
index 0000000..8d962e7
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Nexus 6P 2.4GHz.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Nexus 6P 5GHz.pcap b/taxonomy/testdata/pcaps/Nexus 6P 5GHz.pcap
new file mode 100644
index 0000000..297cc75
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Nexus 6P 5GHz.pcap
Binary files differ
diff --git "a/taxonomy/testdata/pcaps/Nexus 7 \0502012\051 2.4GHz.pcap" "b/taxonomy/testdata/pcaps/Nexus 7 \0502012\051 2.4GHz.pcap"
new file mode 100644
index 0000000..b05eb5f
--- /dev/null
+++ "b/taxonomy/testdata/pcaps/Nexus 7 \0502012\051 2.4GHz.pcap"
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Nexus 9 2.4GHz.pcap b/taxonomy/testdata/pcaps/Nexus 9 2.4GHz.pcap
new file mode 100644
index 0000000..b1ef52b
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Nexus 9 2.4GHz.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Nexus 9 5GHz.pcap b/taxonomy/testdata/pcaps/Nexus 9 5GHz.pcap
new file mode 100644
index 0000000..9e9f965
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Nexus 9 5GHz.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Nexus One 2.4GHz.pcap b/taxonomy/testdata/pcaps/Nexus One 2.4GHz.pcap
new file mode 100644
index 0000000..92fe6a0
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Nexus One 2.4GHz.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Nokia Lumia 635 2.4GHz Broadcast Probe.pcap b/taxonomy/testdata/pcaps/Nokia Lumia 635 2.4GHz Broadcast Probe.pcap
new file mode 100644
index 0000000..b6f32a1
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Nokia Lumia 635 2.4GHz Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Nokia Lumia 635 2.4GHz Specific Probe.pcap b/taxonomy/testdata/pcaps/Nokia Lumia 635 2.4GHz Specific Probe.pcap
new file mode 100644
index 0000000..27008df
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Nokia Lumia 635 2.4GHz Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Nokia Lumia 635 2.4GHz.pcap b/taxonomy/testdata/pcaps/Nokia Lumia 635 2.4GHz.pcap
new file mode 100644
index 0000000..e228fc0
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Nokia Lumia 635 2.4GHz.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Roku 4 2.4GHz.pcap b/taxonomy/testdata/pcaps/Roku 4 2.4GHz.pcap
new file mode 100644
index 0000000..90f15bd
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Roku 4 2.4GHz.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Roku 4 5GHz.pcap b/taxonomy/testdata/pcaps/Roku 4 5GHz.pcap
new file mode 100644
index 0000000..5a5535b
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Roku 4 5GHz.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Captivate 2.4GHz.pcap b/taxonomy/testdata/pcaps/Samsung Captivate 2.4GHz.pcap
new file mode 100644
index 0000000..a3c24bb
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Captivate 2.4GHz.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Charge 2.4GHz.pcap b/taxonomy/testdata/pcaps/Samsung Charge 2.4GHz.pcap
new file mode 100644
index 0000000..36f1814
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Charge 2.4GHz.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Continuum 2.4GHz.pcap b/taxonomy/testdata/pcaps/Samsung Continuum 2.4GHz.pcap
new file mode 100644
index 0000000..107b270
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Continuum 2.4GHz.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Epic 2.4GHz.pcap b/taxonomy/testdata/pcaps/Samsung Epic 2.4GHz.pcap
new file mode 100644
index 0000000..e26f59c
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Epic 2.4GHz.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Fascinate 2.4GHz.pcap b/taxonomy/testdata/pcaps/Samsung Fascinate 2.4GHz.pcap
new file mode 100644
index 0000000..08ee726
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Fascinate 2.4GHz.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy Mini 2.4GHz.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy Mini 2.4GHz.pcap
new file mode 100644
index 0000000..4d0e306
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy Mini 2.4GHz.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy Note 2.4GHz.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy Note 2.4GHz.pcap
new file mode 100644
index 0000000..db09cba
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy Note 2.4GHz.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy Note 3 2.4GHz.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy Note 3 2.4GHz.pcap
new file mode 100644
index 0000000..1ac4015
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy Note 3 2.4GHz.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy Note 3 5GHz Broadcast Probe.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy Note 3 5GHz Broadcast Probe.pcap
new file mode 100644
index 0000000..78f5bbe
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy Note 3 5GHz Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy Note 3 5GHz Specific Probe.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy Note 3 5GHz Specific Probe.pcap
new file mode 100644
index 0000000..3ba5d96
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy Note 3 5GHz Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy Note 3 5GHz.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy Note 3 5GHz.pcap
new file mode 100644
index 0000000..c5bacdc
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy Note 3 5GHz.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy Note 4 2.4GHz.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy Note 4 2.4GHz.pcap
new file mode 100644
index 0000000..9f85ab6
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy Note 4 2.4GHz.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy Note 4 5GHz.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy Note 4 5GHz.pcap
new file mode 100644
index 0000000..44e8da2
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy Note 4 5GHz.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy Note 5 2.4GHz.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy Note 5 2.4GHz.pcap
new file mode 100644
index 0000000..70ef95e
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy Note 5 2.4GHz.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy Note 5 5GHz.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy Note 5 5GHz.pcap
new file mode 100644
index 0000000..46ce71a
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy Note 5 5GHz.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy Note 5GHz.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy Note 5GHz.pcap
new file mode 100644
index 0000000..888b913
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy Note 5GHz.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy S4 2.4GHz.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy S4 2.4GHz.pcap
new file mode 100644
index 0000000..d73849c
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy S4 2.4GHz.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy S4 5GHz Broadcast Probe.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy S4 5GHz Broadcast Probe.pcap
new file mode 100644
index 0000000..8e55471
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy S4 5GHz Broadcast Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy S4 5GHz Specific Probe.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy S4 5GHz Specific Probe.pcap
new file mode 100644
index 0000000..8ac7be6
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy S4 5GHz Specific Probe.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy S4 5GHz.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy S4 5GHz.pcap
new file mode 100644
index 0000000..ff815a7
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy S4 5GHz.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy S5 2.4GHz Probe 1.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy S5 2.4GHz Probe 1.pcap
new file mode 100644
index 0000000..29ed8c4
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy S5 2.4GHz Probe 1.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy S5 2.4GHz Probe 2.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy S5 2.4GHz Probe 2.pcap
new file mode 100644
index 0000000..52f3f5f
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy S5 2.4GHz Probe 2.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy S5 2.4GHz Probe 3.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy S5 2.4GHz Probe 3.pcap
new file mode 100644
index 0000000..af36564
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy S5 2.4GHz Probe 3.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy S5 2.4GHz.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy S5 2.4GHz.pcap
new file mode 100644
index 0000000..e308def
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy S5 2.4GHz.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy S5 5GHz.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy S5 5GHz.pcap
new file mode 100644
index 0000000..30b8a6a
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy S5 5GHz.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy S6 2.4GHz.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy S6 2.4GHz.pcap
new file mode 100644
index 0000000..0c69672
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy S6 2.4GHz.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy S6 5GHz.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy S6 5GHz.pcap
new file mode 100644
index 0000000..b677c18
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy S6 5GHz.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy Tab 10.1 2.4GHz.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy Tab 10.1 2.4GHz.pcap
new file mode 100644
index 0000000..14cff50
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy Tab 10.1 2.4GHz.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy Tab 10.1 5GHz ch36.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy Tab 10.1 5GHz ch36.pcap
new file mode 100644
index 0000000..6095e26
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy Tab 10.1 5GHz ch36.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy Tab 2 2.4GHz.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy Tab 2 2.4GHz.pcap
new file mode 100644
index 0000000..2709d46
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy Tab 2 2.4GHz.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy Tab 3 2.4GHz.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy Tab 3 2.4GHz.pcap
new file mode 100644
index 0000000..13f46c7
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy Tab 3 2.4GHz.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Galaxy Tab 3 5GHz.pcap b/taxonomy/testdata/pcaps/Samsung Galaxy Tab 3 5GHz.pcap
new file mode 100644
index 0000000..21280e6
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Galaxy Tab 3 5GHz.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Smart TV 2.4GHz.pcap b/taxonomy/testdata/pcaps/Samsung Smart TV 2.4GHz.pcap
new file mode 100644
index 0000000..cc4b6b8
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Smart TV 2.4GHz.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Smart TV 5GHz.pcap b/taxonomy/testdata/pcaps/Samsung Smart TV 5GHz.pcap
new file mode 100644
index 0000000..2604d2b
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Smart TV 5GHz.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Samsung Vibrant 2.4GHz.pcap b/taxonomy/testdata/pcaps/Samsung Vibrant 2.4GHz.pcap
new file mode 100644
index 0000000..85217ed
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Samsung Vibrant 2.4GHz.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Sony Xperia Z Ultra 2.4GHz.pcap b/taxonomy/testdata/pcaps/Sony Xperia Z Ultra 2.4GHz.pcap
new file mode 100644
index 0000000..5040df2
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Sony Xperia Z Ultra 2.4GHz.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Sony Xperia Z Ultra 5GHz ch36.pcap b/taxonomy/testdata/pcaps/Sony Xperia Z Ultra 5GHz ch36.pcap
new file mode 100644
index 0000000..264c7d8
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Sony Xperia Z Ultra 5GHz ch36.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Sony Xperia Z4 Tablet 2.4GHz.pcap b/taxonomy/testdata/pcaps/Sony Xperia Z4 Tablet 2.4GHz.pcap
new file mode 100644
index 0000000..3b96ea3
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Sony Xperia Z4 Tablet 2.4GHz.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Sony Xperia Z4 Tablet 5GHz.pcap b/taxonomy/testdata/pcaps/Sony Xperia Z4 Tablet 5GHz.pcap
new file mode 100644
index 0000000..503fe71
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Sony Xperia Z4 Tablet 5GHz.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Sony Xperia Z5 2.4GHz.pcap b/taxonomy/testdata/pcaps/Sony Xperia Z5 2.4GHz.pcap
new file mode 100644
index 0000000..6093f3e
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Sony Xperia Z5 2.4GHz.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Sony Xperia Z5 5GHz.pcap b/taxonomy/testdata/pcaps/Sony Xperia Z5 5GHz.pcap
new file mode 100644
index 0000000..98b4b0b
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Sony Xperia Z5 5GHz.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/Wii-U 2.4GHz.pcap b/taxonomy/testdata/pcaps/Wii-U 2.4GHz.pcap
new file mode 100644
index 0000000..46769b2
--- /dev/null
+++ b/taxonomy/testdata/pcaps/Wii-U 2.4GHz.pcap
Binary files differ
diff --git "a/taxonomy/testdata/pcaps/iPad \0501st gen\051 2.4GHz.pcap" "b/taxonomy/testdata/pcaps/iPad \0501st gen\051 2.4GHz.pcap"
new file mode 100644
index 0000000..abb0c88
--- /dev/null
+++ "b/taxonomy/testdata/pcaps/iPad \0501st gen\051 2.4GHz.pcap"
Binary files differ
diff --git "a/taxonomy/testdata/pcaps/iPad \0502nd gen\051 2.4GHz.pcap" "b/taxonomy/testdata/pcaps/iPad \0502nd gen\051 2.4GHz.pcap"
new file mode 100644
index 0000000..0c185cb
--- /dev/null
+++ "b/taxonomy/testdata/pcaps/iPad \0502nd gen\051 2.4GHz.pcap"
Binary files differ
diff --git "a/taxonomy/testdata/pcaps/iPad \0504th gen\051 5GHz.pcap" "b/taxonomy/testdata/pcaps/iPad \0504th gen\051 5GHz.pcap"
new file mode 100644
index 0000000..f7158b7
--- /dev/null
+++ "b/taxonomy/testdata/pcaps/iPad \0504th gen\051 5GHz.pcap"
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPad 1st gen 5GHz.pcap b/taxonomy/testdata/pcaps/iPad 1st gen 5GHz.pcap
new file mode 100644
index 0000000..c5c8cf3
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPad 1st gen 5GHz.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPad 2nd gen 5GHz.pcap b/taxonomy/testdata/pcaps/iPad 2nd gen 5GHz.pcap
new file mode 100644
index 0000000..f92b77e
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPad 2nd gen 5GHz.pcap
Binary files differ
diff --git "a/taxonomy/testdata/pcaps/iPad Air \0502nd gen\051 2.4GHz.pcap" "b/taxonomy/testdata/pcaps/iPad Air \0502nd gen\051 2.4GHz.pcap"
new file mode 100644
index 0000000..d900fed
--- /dev/null
+++ "b/taxonomy/testdata/pcaps/iPad Air \0502nd gen\051 2.4GHz.pcap"
Binary files differ
diff --git "a/taxonomy/testdata/pcaps/iPad Air \0502nd gen\051 5GHz.pcap" "b/taxonomy/testdata/pcaps/iPad Air \0502nd gen\051 5GHz.pcap"
new file mode 100644
index 0000000..67ff550
--- /dev/null
+++ "b/taxonomy/testdata/pcaps/iPad Air \0502nd gen\051 5GHz.pcap"
Binary files differ
diff --git "a/taxonomy/testdata/pcaps/iPad Mini \0501st gen\051 2.4GHz.pcap" "b/taxonomy/testdata/pcaps/iPad Mini \0501st gen\051 2.4GHz.pcap"
new file mode 100644
index 0000000..88e101a
--- /dev/null
+++ "b/taxonomy/testdata/pcaps/iPad Mini \0501st gen\051 2.4GHz.pcap"
Binary files differ
diff --git "a/taxonomy/testdata/pcaps/iPad Mini \0501st gen\051 5GHz.pcap" "b/taxonomy/testdata/pcaps/iPad Mini \0501st gen\051 5GHz.pcap"
new file mode 100644
index 0000000..7d2b6ac
--- /dev/null
+++ "b/taxonomy/testdata/pcaps/iPad Mini \0501st gen\051 5GHz.pcap"
Binary files differ
diff --git "a/taxonomy/testdata/pcaps/iPad Mini \0502nd gen\051 2.4GHz.pcap" "b/taxonomy/testdata/pcaps/iPad Mini \0502nd gen\051 2.4GHz.pcap"
new file mode 100644
index 0000000..5925430
--- /dev/null
+++ "b/taxonomy/testdata/pcaps/iPad Mini \0502nd gen\051 2.4GHz.pcap"
Binary files differ
diff --git "a/taxonomy/testdata/pcaps/iPad Mini \0502nd gen\051 5GHz.pcap" "b/taxonomy/testdata/pcaps/iPad Mini \0502nd gen\051 5GHz.pcap"
new file mode 100644
index 0000000..d999f7b
--- /dev/null
+++ "b/taxonomy/testdata/pcaps/iPad Mini \0502nd gen\051 5GHz.pcap"
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 2 2.4GHz.pcap b/taxonomy/testdata/pcaps/iPhone 2 2.4GHz.pcap
new file mode 100644
index 0000000..c8d6c8f
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 2 2.4GHz.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 3 2.4GHz.pcap b/taxonomy/testdata/pcaps/iPhone 3 2.4GHz.pcap
new file mode 100644
index 0000000..fb5dfc5
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 3 2.4GHz.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 3GS 2.4GHz M137LL.pcap b/taxonomy/testdata/pcaps/iPhone 3GS 2.4GHz M137LL.pcap
new file mode 100644
index 0000000..9f5ebc4
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 3GS 2.4GHz M137LL.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 3GS 2.4GHz.pcap b/taxonomy/testdata/pcaps/iPhone 3GS 2.4GHz.pcap
new file mode 100644
index 0000000..2ef3e4f
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 3GS 2.4GHz.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 4 2.4GHz.pcap b/taxonomy/testdata/pcaps/iPhone 4 2.4GHz.pcap
new file mode 100644
index 0000000..c339b79
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 4 2.4GHz.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 4s 2.4GHz.pcap b/taxonomy/testdata/pcaps/iPhone 4s 2.4GHz.pcap
new file mode 100644
index 0000000..378352b
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 4s 2.4GHz.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 5 5GHz.pcap b/taxonomy/testdata/pcaps/iPhone 5 5GHz.pcap
new file mode 100644
index 0000000..135ed5f
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 5 5GHz.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 5s 2.4GHz.pcap b/taxonomy/testdata/pcaps/iPhone 5s 2.4GHz.pcap
new file mode 100644
index 0000000..4a966ac
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 5s 2.4GHz.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 5s 5GHz.pcap b/taxonomy/testdata/pcaps/iPhone 5s 5GHz.pcap
new file mode 100644
index 0000000..23cd7de
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 5s 5GHz.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 6 2.4GHz.pcap b/taxonomy/testdata/pcaps/iPhone 6 2.4GHz.pcap
new file mode 100644
index 0000000..b35358f
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 6 2.4GHz.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 6+ 2.4GHz.pcap b/taxonomy/testdata/pcaps/iPhone 6+ 2.4GHz.pcap
new file mode 100644
index 0000000..91b21ef
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 6+ 2.4GHz.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 6+ 5GHz.pcap b/taxonomy/testdata/pcaps/iPhone 6+ 5GHz.pcap
new file mode 100644
index 0000000..72e05da
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 6+ 5GHz.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 6s 2.4GHz.pcap b/taxonomy/testdata/pcaps/iPhone 6s 2.4GHz.pcap
new file mode 100644
index 0000000..2c4d43e
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 6s 2.4GHz.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 6s 5GHz.pcap b/taxonomy/testdata/pcaps/iPhone 6s 5GHz.pcap
new file mode 100644
index 0000000..c9d541b
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 6s 5GHz.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 6s+ 2.4GHz.pcap b/taxonomy/testdata/pcaps/iPhone 6s+ 2.4GHz.pcap
new file mode 100644
index 0000000..6b0e932
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 6s+ 2.4GHz.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPhone 6s+ 5GHz.pcap b/taxonomy/testdata/pcaps/iPhone 6s+ 5GHz.pcap
new file mode 100644
index 0000000..fdb82f9
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPhone 6s+ 5GHz.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPod Touch 1st gen 2.4GHz.pcap b/taxonomy/testdata/pcaps/iPod Touch 1st gen 2.4GHz.pcap
new file mode 100644
index 0000000..d6f9e78
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPod Touch 1st gen 2.4GHz.pcap
Binary files differ
diff --git a/taxonomy/testdata/pcaps/iPod Touch 4th gen 2.4GHz.pcap b/taxonomy/testdata/pcaps/iPod Touch 4th gen 2.4GHz.pcap
new file mode 100644
index 0000000..8dc0ba3
--- /dev/null
+++ b/taxonomy/testdata/pcaps/iPod Touch 4th gen 2.4GHz.pcap
Binary files differ
diff --git a/taxonomy/tests/wifi_test.py b/taxonomy/tests/wifi_test.py
index 504d587..b143edc 100755
--- a/taxonomy/tests/wifi_test.py
+++ b/taxonomy/tests/wifi_test.py
@@ -34,7 +34,6 @@
                  '221(0050f2,2),45,127,htcap:086c,htmcs:000000ff')
     taxonomy = wifi.identify_wifi_device(signature, '00:00:01:00:00:01')
     self.assertEqual(3, len(taxonomy))
-    self.assertEqual('RTL8192CU', taxonomy[0])
     self.assertEqual('802.11n n:1,w:20', taxonomy[2])
 
     signature = ('wifi3|probe:0,1,45,221(00904c,51),htcap:09ef,htagg:1b,'
@@ -49,7 +48,8 @@
     self.assertEqual('802.11n n:2,w:40', taxonomy[2])
 
   def testNameLookup(self):
-    signature = 'wifi3|probe:0,1,3,50|assoc:0,1,48,50,cap:0411'
+    signature = ('wifi|probe:0,1,50,221(001018,2)|assoc:0,1,48,50,'
+                 '221(001018,2),221(0050f2,2)')
     taxonomy = wifi.identify_wifi_device(signature, '00:00:01:00:00:01')
     self.assertEqual(3, len(taxonomy))
     self.assertEqual('Unknown', taxonomy[1])
@@ -57,7 +57,7 @@
     self.assertEqual(3, len(taxonomy))
     self.assertEqual('Unknown', taxonomy[1])
     taxonomy = wifi.identify_wifi_device(signature, '2c:1f:23:ff:ff:01')
-    self.assertEqual('iPod Touch 1st/2nd gen', taxonomy[1])
+    self.assertEqual('iPod Touch 3rd gen', taxonomy[1])
 
   def testChecksumWhenNoIdentification(self):
     taxonomy = wifi.identify_wifi_device('wifi|probe:1,2,3,4,htcap:0|assoc:1',
@@ -67,21 +67,21 @@
 
   def testOUI(self):
     # Devices with a generic signature, distinguished via MAC OUI
-    signature = ('wifi|probe:0,1,50,45,3,221(001018,2),221(00904c,51),'
-                 'htcap:110c,htagg:19,htmcs:000000ff|assoc:0,1,48,50,45,'
-                 '221(001018,2),221(00904c,51),221(0050f2,2),htcap:110c,'
-                 'htagg:19,htmcs:000000ff')
+    signature = ('wifi3|probe:0,1,50,3,45,221(0050f2,8),htcap:012c,htagg:03,'
+                 'htmcs:000000ff|assoc:0,1,50,33,48,70,45,221(0050f2,2),127,'
+                 'cap:1411,htcap:012c,htagg:03,htmcs:000000ff,txpow:170d,'
+                 'extcap:00000a0200000000')
     taxonomy = wifi.identify_wifi_device(signature, '00:00:01:00:00:01')
     self.assertIn('Unknown', taxonomy[1])
-    taxonomy = wifi.identify_wifi_device(signature, '00:24:e4:00:00:01')
-    self.assertIn('Withings', taxonomy[1])
-    taxonomy = wifi.identify_wifi_device(signature, 'ac:22:0b:00:00:01')
-    self.assertIn('Nexus 7', taxonomy[1])
+    taxonomy = wifi.identify_wifi_device(signature, 'b4:52:7e:00:00:01')
+    self.assertIn('Sony Xperia Z Ultra', taxonomy[1])
+    taxonomy = wifi.identify_wifi_device(signature, 'f8:f1:b6:00:00:01')
+    self.assertIn('Moto E (2nd gen)', taxonomy[1])
 
     # Test one of the OUIs with multiple vendors listed.
-    signature = ('wifi|probe:0,1,3,45,50,htcap:0120,htagg:03,htmcs:00000000|'
-                 'assoc:0,1,48,50,127,221(0050f2,2),45,htcap:012c,htagg:03,'
-                 'htmcs:000000ff,extcap:00000000|oui:google')
+    signature = ('wifi3|probe:0,1,3,45,50,htcap:0120,htagg:03,htmcs:00000000|'
+                 'assoc:0,1,48,50,127,221(0050f2,2),45,cap:0411,htcap:012c,'
+                 'htagg:03,htmcs:000000ff,extcap:0000000000000140|oui:google')
     taxonomy = wifi.identify_wifi_device(signature, '6c:ad:f8:00:00:01')
     self.assertEqual('Chromecast', taxonomy[1])
 
@@ -92,6 +92,25 @@
     taxonomy = wifi.identify_wifi_device(signature, '28:ef:01:00:00:01')
     self.assertIn('Kindle', taxonomy[1])
 
+  def testCommonSignature(self):
+    signature = ('wifi3|probe:0,1,50,45,221(001018,2),221(00904c,51),'
+                 'htcap:182c,htagg:1b,htmcs:000000ff|assoc:0,1,48,50,45,'
+                 '221(001018,2),221(00904c,51),221(0050f2,2),cap:0431,'
+                 'htcap:182c,htagg:1b,htmcs:000000ff')
+    # This is a very common signature among devices issued in 2010.
+    # It will match:
+    # Samsung Captivate, Epic 2, Fascinate, Continuum, Charge, Vibrant
+    # Samsung Galaxy Tab 2
+    # HTC Thunderbolt
+    # ASUS Transformer TF300
+    # Nexus One
+    taxonomy = wifi.identify_wifi_device(signature, '00:00:01:00:00:01')
+    self.assertIn('Unknown', taxonomy[1])
+    taxonomy = wifi.identify_wifi_device(signature, 'b4:ce:f6:00:00:01')
+    self.assertIn('Unknown', taxonomy[1])
+    taxonomy = wifi.identify_wifi_device(signature, 'ac:22:0b:00:00:01')
+    self.assertIn('Unknown', taxonomy[1])
+
   def testUnknown(self):
     signature = 'wifi|probe:0,1,2,vhtcap:0033|assoc:3,4,vhtcap:0033'
     taxonomy = wifi.identify_wifi_device(signature, '00:00:01:00:00:01')
diff --git a/taxonomy/wifi.py b/taxonomy/wifi.py
index 3d92124..3a57d2c 100644
--- a/taxonomy/wifi.py
+++ b/taxonomy/wifi.py
@@ -41,9 +41,9 @@
     'wifi|probe:0,1,50,221(0050f2,4),221(506f9a,9),wps:KFFOWI|assoc:0,1,50,45,48,127,221(0050f2,2),htcap:1172,htagg:03,htmcs:000000ff':
         ('', 'Amazon Kindle Fire 7" (2015 edition)', '2.4GHz'),
 
-    'wifi|probe:0,1,45,221(001018,2),221(00904c,51),htcap:007e,htagg:1b,htmcs:0000ffff|assoc:0,1,33,36,48,45,221(001018,2),221(0050f2,2),htcap:007e,htagg:1b,htmcs:0000ffff|oui:amazon':
+    'wifi3|probe:0,1,45,221(001018,2),221(00904c,51),htcap:007e,htagg:1b,htmcs:0000ffff|assoc:0,1,33,36,48,45,221(001018,2),221(0050f2,2),cap:0111,htcap:007e,htagg:1b,htmcs:0000ffff,txpow:e50d|oui:amazon':
         ('', 'Amazon Fire TV Stick', '5GHz'),
-    'wifi|probe:0,1,50,3,45,221(001018,2),221(00904c,51),htcap:003c,htagg:1b,htmcs:0000ffff|assoc:0,1,33,36,48,50,45,221(001018,2),221(0050f2,2),htcap:003c,htagg:1b,htmcs:0000ffff|oui:amazon':
+    'wifi3|probe:0,1,50,3,45,221(001018,2),221(00904c,51),htcap:003c,htagg:1b,htmcs:0000ffff|assoc:0,1,33,36,48,50,45,221(001018,2),221(0050f2,2),cap:0431,htcap:003c,htagg:1b,htmcs:0000ffff,txpow:170c|oui:amazon':
         ('', 'Amazon Fire TV Stick', '2.4GHz'),
 
     'wifi3|probe:0,1,45,221(001018,2),221(00904c,51),htcap:081e,htagg:1b,htmcs:0000ffff|assoc:0,1,33,36,48,45,221(001018,2),221(00904c,51),221(0050f2,2),cap:0011,htcap:081e,htagg:1b,htmcs:0000ffff,txpow:0008|os:appletv1':
@@ -74,27 +74,28 @@
     'wifi3|probe:0,1,50,3,45,127,107,221(001018,2),221(00904c,51),221(0050f2,8),htcap:0020,htagg:1a,htmcs:000000ff,intwrk:0f,extcap:00000004|assoc:0,1,33,36,48,50,45,70,221(001018,2),221(00904c,51),221(0050f2,2),cap:0431,htcap:0020,htagg:1a,htmcs:000000ff,txpow:1a07|os:ios':
         ('BCM4334', 'Apple TV (3rd gen rev A)', '2.4GHz'),
 
-    'wifi|probe:0,1,45,127,107,191,221(0050f2,8),221(001018,2),htcap:006f,htagg:17,htmcs:0000ffff,vhtcap:0f815832,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,intwrk:0f,extcap:84080004|assoc:0,1,33,36,48,70,45,127,191,221(001018,2),221(0050f2,2),htcap:006f,htagg:17,htmcs:0000ffff,vhtcap:0f815832,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,extcap:00000004|name:Apple-TV':
+    'wifi3|probe:0,1,45,127,107,191,221(0050f2,8),221(001018,2),htcap:006f,htagg:17,htmcs:0000ffff,vhtcap:0f815832,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,intwrk:0f,extcap:0400088400000040|assoc:0,1,33,36,48,70,45,127,191,221(001018,2),221(0050f2,2),cap:1111,htcap:006f,htagg:17,htmcs:0000ffff,vhtcap:0f815832,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,txpow:e002,extcap:0400000000000040|os:ios':
         ('', 'Apple TV (4th gen)', '5GHz'),
-    'wifi|probe:0,1,50,3,45,127,107,221(0050f2,8),221(001018,2),htcap:002d,htagg:17,htmcs:0000ffff,intwrk:0f,extcap:84080004|assoc:0,1,50,33,36,48,70,45,127,221(001018,2),221(0050f2,2),htcap:002d,htagg:17,htmcs:0000ffff,extcap:00000000|name:Apple-TV':
+    'wifi3|probe:0,1,50,3,45,127,107,221(0050f2,8),221(001018,2),htcap:002d,htagg:17,htmcs:0000ffff,intwrk:0f,extcap:0400088400000040|assoc:0,1,50,33,36,48,70,45,127,221(001018,2),221(0050f2,2),cap:1431,htcap:002d,htagg:17,htmcs:0000ffff,txpow:1502,extcap:0000000000000040|os:ios':
         ('', 'Apple TV (4th gen)', '2.4GHz'),
 
-    'wifi|probe:0,1,50,45,221(001018,2),221(00904c,51),htcap:182c,htagg:1b,htmcs:000000ff|assoc:0,1,48,50,45,221(001018,2),221(00904c,51),221(0050f2,2),htcap:182c,htagg:1b,htmcs:000000ff|oui:asus':
-        ('BCM4329', 'ASUS Transformer TF300', '2.4GHz'),
-
     'wifi|probe:0,1,50,45,3,221(001018,2),221(00904c,51),htcap:112c,htagg:19,htmcs:000000ff|assoc:0,1,48,50,45,221(001018,2),221(00904c,51),221(0050f2,2),htcap:112c,htagg:19,htmcs:000000ff|os:brotherprinter':
         ('', 'Brother Printer', '2.4GHz'),
 
-    'wifi|probe:0,1,45,191,htcap:11e2,htagg:17,htmcs:0000ffff,vhtcap:038071a0,vhtrxmcs:0000fffa,vhttxmcs:0000fffa|assoc:0,1,33,36,48,45,127,191,221(0050f2,2),htcap:11e6,htagg:17,htmcs:0000ffff,vhtcap:038001a0,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,extcap:00000000|os:chromeos':
+    'wifi3|probe:0,1,45,191,htcap:11e2,htagg:17,htmcs:0000ffff,vhtcap:038071a0,vhtrxmcs:0000fffa,vhttxmcs:0000fffa|assoc:0,1,48,45,127,191,221(0050f2,2),cap:0011,htcap:11e6,htagg:17,htmcs:0000ffff,vhtcap:038001a0,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,extcap:0000000000000040|os:chromeos':
         ('Intel_7260', 'Chromebook Pixel 2', '5GHz'),
-    'wifi|probe:0,1,45,191,htcap:11e2,htagg:17,htmcs:0000ffff,vhtcap:038071a0,vhtrxmcs:0000fffa,vhttxmcs:0000fffa|assoc:0,1,48,45,127,191,221(0050f2,2),htcap:11e6,htagg:17,htmcs:0000ffff,vhtcap:038001a0,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,extcap:00000000|os:chromeos':
+    'wifi3|probe:0,1,45,191,htcap:11e2,htagg:17,htmcs:0000ffff,vhtcap:038071a0,vhtrxmcs:0000fffa,vhttxmcs:0000fffa|assoc:0,1,48,45,127,191,221(0050f2,2),cap:0011,htcap:11ee,htagg:17,htmcs:0000ffff,vhtcap:038001a0,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,extcap:0000000000000040|os:chromeos':
         ('Intel_7260', 'Chromebook Pixel 2', '5GHz'),
-    'wifi|probe:0,1,50,45,htcap:11e2,htagg:17,htmcs:0000ffff|assoc:0,1,50,48,45,127,221(0050f2,2),htcap:11a4,htagg:17,htmcs:0000ffff,extcap:00000000|os:chromeos':
+    'wifi3|probe:0,1,45,191,htcap:11e2,htagg:17,htmcs:0000ffff,vhtcap:038071a0,vhtrxmcs:0000fffa,vhttxmcs:0000fffa|assoc:0,1,33,36,48,45,127,191,221(0050f2,2),cap:0111,htcap:11e6,htagg:17,htmcs:0000ffff,vhtcap:038001a0,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,txpow:1600,extcap:0000000000000040|os:chromeos':
+        ('Intel_7260', 'Chromebook Pixel 2', '5GHz'),
+    'wifi3|probe:0,1,50,45,htcap:11e2,htagg:17,htmcs:0000ffff|assoc:0,1,50,48,45,127,221(0050f2,2),cap:0431,htcap:11a4,htagg:17,htmcs:0000ffff,extcap:0000000000000040|os:chromeos':
+        ('Intel_7260', 'Chromebook Pixel 2', '2.4GHz'),
+    'wifi3|probe:0,1,50,45,htcap:11e2,htagg:17,htmcs:0000ffff|assoc:0,1,50,48,45,127,221(0050f2,2),cap:0431,htcap:11ac,htagg:17,htmcs:0000ffff,extcap:0000000000000040|os:chromeos':
         ('Intel_7260', 'Chromebook Pixel 2', '2.4GHz'),
 
-    'wifi|probe:0,1,45,htcap:11ef|assoc:0,1,48,45,221(0050f2,2),htcap:11ef|os:chromeos':
+    'wifi3|probe:0,1,45,htcap:11ef,htagg:1b,htmcs:0000ffff|assoc:0,1,48,45,221(0050f2,2),cap:0011,htcap:11ef,htagg:1b,htmcs:0000ffff|os:chromeos':
         ('AR5822', 'Chromebook 14" HP', '5GHz'),
-    'wifi|probe:0,1,50,3,45,htcap:11ef|assoc:0,1,50,48,45,221(0050f2,2),htcap:11ef|os:chromeos':
+    'wifi3|probe:0,1,50,3,45,htcap:11ef,htagg:1b,htmcs:0000ffff|assoc:0,1,50,48,45,221(0050f2,2),cap:0431,htcap:11ef,htagg:1b,htmcs:0000ffff|os:chromeos':
         ('AR5822', 'Chromebook 14" HP', '2.4GHz'),
 
     'wifi|probe:0,1,3,45,50,htcap:01ff|assoc:0,1,50,127,221(0050f2,1),221(0050f2,2),45,htcap:01ff|os:chromeos':
@@ -105,13 +106,13 @@
     'wifi|probe:0,1,3,45,50,htcap:016e|assoc:0,1,48,50,127,221(0050f2,2),45,htcap:016e|os:chromeos':
         ('AR9382', 'Chromebook 11" Samsung', '2.4GHz'),
 
-    'wifi|probe:0,1,3,45,50,htcap:0120,htagg:03,htmcs:00000000|assoc:0,1,48,50,127,221(0050f2,2),45,htcap:012c,htagg:03,htmcs:000000ff,extcap:00000000|oui:google':
+    'wifi3|probe:0,1,3,45,50,htcap:0120,htagg:03,htmcs:00000000|assoc:0,1,48,50,127,221(0050f2,2),45,cap:0411,htcap:012c,htagg:03,htmcs:000000ff,extcap:0000000000000140|oui:google':
         ('Marvell_88W8797', 'Chromecast', '2.4GHz'),
-    'wifi|probe:0,1,45,50,127,191,htcap:0062,htagg:03,htmcs:00000000,vhtcap:33c07030,vhtrxmcs:0124fffc,vhttxmcs:0124fffc,extcap:00000000|assoc:0,1,33,36,48,127,221(0050f2,2),45,191,htcap:006e,htagg:03,htmcs:000000ff,vhtcap:33c07030,vhtrxmcs:0186fffe,vhttxmcs:0186fffe,extcap:00000004|oui:google':
+    'wifi3|probe:0,1,45,50,127,191,htcap:0062,htagg:03,htmcs:00000000,vhtcap:33c07030,vhtrxmcs:0124fffc,vhttxmcs:0124fffc,extcap:0000000000000040|assoc:0,1,48,127,221(0050f2,2),45,191,cap:0011,htcap:006e,htagg:03,htmcs:000000ff,vhtcap:33c07030,vhtrxmcs:0186fffe,vhttxmcs:0186fffe,extcap:0400000000000140|oui:google':
         ('Marvell_88W8887', 'Chromecast v2', '5GHz'),
-    'wifi|probe:0,1,45,50,127,191,htcap:0062,htagg:03,htmcs:00000000,vhtcap:33c07030,vhtrxmcs:0124fffc,vhttxmcs:0124fffc,extcap:00000000|assoc:0,1,48,127,221(0050f2,2),45,191,htcap:006e,htagg:03,htmcs:000000ff,vhtcap:33c07030,vhtrxmcs:0186fffe,vhttxmcs:0186fffe,extcap:00000004':
+    'wifi3|probe:0,1,45,50,127,191,htcap:0062,htagg:03,htmcs:00000000,vhtcap:33c07030,vhtrxmcs:0124fffc,vhttxmcs:0124fffc,extcap:0000000000000040|assoc:0,1,33,36,48,127,221(0050f2,2),45,191,cap:0011,htcap:006e,htagg:03,htmcs:000000ff,vhtcap:33c07030,vhtrxmcs:0186fffe,vhttxmcs:0186fffe,extcap:0400000000000140|oui:google':
         ('Marvell_88W8887', 'Chromecast v2', '5GHz'),
-    'wifi|probe:0,1,3,45,50,127,191,htcap:0062,htagg:03,htmcs:00000000,vhtcap:33c07030,vhtrxmcs:0124fffc,vhttxmcs:0124fffc,extcap:00000000|assoc:0,1,48,50,127,221(0050f2,2),45,htcap:002c,htagg:03,htmcs:000000ff,extcap:00000000|oui:google':
+    'wifi3|probe:0,1,3,45,50,127,191,htcap:0062,htagg:03,htmcs:00000000,vhtcap:33c07030,vhtrxmcs:0124fffc,vhttxmcs:0124fffc,extcap:0000000000000040|assoc:0,1,48,50,127,221(0050f2,2),45,cap:0411,htcap:002c,htagg:03,htmcs:000000ff,extcap:0000000000000140|oui:google':
         ('Marvell_88W8887', 'Chromecast v2', '2.4GHz'),
 
     'wifi|probe:0,1,45,221(001018,2),221(00904c,51),htcap:007c|assoc:0,1,33,36,48,45,221(001018,2),221(00904c,51),221(0050f2,2),htcap:007c':
@@ -137,21 +138,26 @@
     'wifi|probe:0,1,50,3,45,127,221(506f9a,16),221(001018,2),221(00904c,51),htcap:102d|assoc:0,1,33,36,48,50,45,221(001018,2),221(0050f2,2),htcap:102d|oui:htc':
         ('BCM4335', 'HTC One', '2.4GHz'),
 
-    'wifi|probe:0,1,3,45,221(0050f2,8),221(0050f2,4),221(506f9a,9),htcap:012c,htagg:03,htmcs:000000ff,wps:HTC_VLE_U|assoc:0,1,50,48,45,221(0050f2,2),htcap:012c,htagg:03,htmcs:000000ff':
-        ('', 'HTC One-S', '2.4GHz'),
+    'wifi3|probe:0,1,45,221(0050f2,8),221(0050f2,4),221(506f9a,9),htcap:012c,htagg:03,htmcs:000000ff,wps:HTC_VLE_U|assoc:0,1,50,48,45,221(0050f2,2),cap:0431,htcap:012c,htagg:03,htmcs:000000ff':
+        ('', 'HTC One S', '2.4GHz'),
+    'wifi3|probe:0,1,3,45,221(0050f2,8),221(0050f2,4),221(506f9a,9),htcap:012c,htagg:03,htmcs:000000ff,wps:HTC_VLE_U|assoc:0,1,50,48,45,221(0050f2,2),cap:0431,htcap:012c,htagg:03,htmcs:000000ff':
+        ('', 'HTC One S', '2.4GHz'),
 
-    'wifi|probe:0,1,3,45,221(0050f2,8),191,127,107,221(0050f2,4),221(506f9a,9),221(506f9a,16),htcap:016e,vhtcap:31800120,wps:HTC_One_M8|assoc:0,1,33,36,48,70,45,221(0050f2,2),191,127,htcap:016e,vhtcap:31800120':
+    'wifi3|probe:0,1,45,221(0050f2,8),191,127,107,221(0050f2,4),221(506f9a,9),221(506f9a,16),htcap:016e,htagg:03,htmcs:000000ff,vhtcap:31800120,vhtrxmcs:0000fffe,vhttxmcs:0000fffe,intwrk:0f,extcap:00000a820040,wps:HTC_One_M8|assoc:0,1,48,45,221(0050f2,2),191,127,cap:0011,htcap:016e,htagg:03,htmcs:000000ff,vhtcap:31800120,vhtrxmcs:0000fffe,vhttxmcs:0000fffe,extcap:00000a8201400040':
         ('WCN3680', 'HTC One M8', '5GHz'),
-    'wifi|probe:0,1,50,3,45,221(0050f2,8),127,107,221(0050f2,4),221(506f9a,9),221(506f9a,16),htcap:012c,wps:HTC_One_M8|assoc:0,1,50,33,48,70,45,221(0050f2,2),127,htcap:012c':
+    'wifi3|probe:0,1,3,45,221(0050f2,8),191,127,107,221(0050f2,4),221(506f9a,9),221(506f9a,16),htcap:016e,htagg:03,htmcs:000000ff,vhtcap:31800120,vhtrxmcs:0000fffe,vhttxmcs:0000fffe,intwrk:0f,extcap:00000a820040,wps:HTC_One_M8|assoc:0,1,48,45,221(0050f2,2),191,127,cap:0011,htcap:016e,htagg:03,htmcs:000000ff,vhtcap:31800120,vhtrxmcs:0000fffe,vhttxmcs:0000fffe,extcap:00000a8201400040':
+        ('WCN3680', 'HTC One M8', '5GHz'),
+    'wifi3|probe:0,1,50,3,45,221(0050f2,8),127,107,221(0050f2,4),221(506f9a,9),221(506f9a,16),htcap:012c,htagg:03,htmcs:000000ff,intwrk:0f,extcap:00000a820040,wps:HTC_One_M8|assoc:0,1,50,48,45,221(0050f2,2),127,cap:0411,htcap:012c,htagg:03,htmcs:000000ff,extcap:00000a8201400000':
+        ('WCN3680', 'HTC One M8', '2.4GHz'),
+    'wifi3|probe:0,1,50,3,45,221(0050f2,8),htcap:012c,htagg:03,htmcs:000000ff|assoc:0,1,50,48,45,221(0050f2,2),127,cap:0411,htcap:012c,htagg:03,htmcs:000000ff,extcap:00000a8201400000|oui:htc':
         ('WCN3680', 'HTC One M8', '2.4GHz'),
 
     'wifi|probe:0,1,45,127,191,221(506f9a,16),221(0050f2,8),221(001018,2),htcap:0063,htagg:17,htmcs:000000ff,vhtcap:0f805832,vhtrxmcs:0000fffe,vhttxmcs:0000fffe,extcap:80080000|assoc:0,1,33,36,48,45,127,191,221(001018,2),221(0050f2,2),htcap:0063,htagg:17,htmcs:000000ff,vhtcap:0f805832,vhtrxmcs:0000fffe,vhttxmcs:0000fffe,extcap:80080000|oui:htc':
         ('BCM4356', 'HTC One M9', '5GHz'),
-    'wifi|probe:0,1,50,3,45,127,221(506f9a,16),221(0050f2,8),221(001018,2),htcap:1063,htagg:17,htmcs:000000ff,extcap:80080000|assoc:0,1,50,33,36,48,45,127,221(001018,2),221(0050f2,2),htcap:1063,htagg:17,htmcs:000000ff,extcap:80080000|oui:htc':
+    'wifi3|probe:0,1,50,3,45,127,107,221(506f9a,16),221(0050f2,8),221(001018,2),htcap:1063,htagg:17,htmcs:000000ff,intwrk:0f,extcap:0000088001400040|assoc:0,1,50,33,36,45,127,107,221(001018,2),221(0050f2,2),cap:1421,htcap:1063,htagg:17,htmcs:000000ff,txpow:1309,intwrk:0f,extcap:000008800140|oui:htc':
         ('BCM4356', 'HTC One M9', '2.4GHz'),
-
-    'wifi|probe:0,1,50,45,221(001018,2),221(00904c,51),htcap:182c,htagg:1b,htmcs:000000ff|assoc:0,1,48,50,45,221(001018,2),221(00904c,51),221(0050f2,2),htcap:182c,htagg:1b,htmcs:000000ff|oui:htc':
-        ('BCM4329', 'HTC Thunderbolt', '2.4GHz'),
+    'wifi3|probe:0,1,50,3,45,127,221(506f9a,16),221(0050f2,8),221(001018,2),htcap:1063,htagg:17,htmcs:000000ff,intwrk:0f,extcap:0000088001400040|assoc:0,1,50,33,36,45,127,107,221(001018,2),221(0050f2,2),cap:1421,htcap:1063,htagg:17,htmcs:000000ff,txpow:1309,intwrk:0f,extcap:000008800140|oui:htc':
+        ('BCM4356', 'HTC One M9', '2.4GHz'),
 
     'wifi3|probe:0,1,45,221(001018,2),221(00904c,51),htcap:080c,htagg:1b,htmcs:000000ff|assoc:0,1,33,36,48,45,221(001018,2),221(00904c,51),221(0050f2,2),cap:0011,htcap:080c,htagg:1b,htmcs:000000ff,txpow:1008|os:ios':
         ('BCM4329', 'iPad (1st/2nd gen)', '5GHz'),
@@ -193,10 +199,20 @@
     'wifi|probe:0,1,50,3,45,127,107,221(001018,2),221(00904c,51),221(0050f2,8),htcap:01bc|assoc:0,1,33,36,48,50,45,70,221(001018,2),221(00904c,51),221(0050f2,2),htcap:01bc|os:ios':
         ('BCM43241', 'iPad Air (1st gen)', '2.4GHz'),
 
-    'wifi3|probe:0,1,45,127,107,191,221(0050f2,8),221(001018,2),htcap:006f,htagg:17,htmcs:0000ffff,vhtcap:0f815832,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,intwrk:0f,extcap:0400088400000040|assoc:0,1,33,36,48,45,127,191,221(001018,2),221(0050f2,2),cap:0011,htcap:006f,htagg:17,htmcs:0000ffff,vhtcap:0f815832,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,txpow:e002,extcap:0000000400000040|os:ios':
-        ('BCM4335', 'iPad Air (2nd gen)', '5GHz'),
-    'wifi3|probe:0,1,45,127,107,191,221(0050f2,8),221(001018,2),htcap:006f,htagg:17,htmcs:0000ffff,vhtcap:0f815832,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,intwrk:0f,extcap:0400088400000040|assoc:0,1,33,36,48,70,45,127,191,221(001018,2),221(0050f2,2),cap:0011,htcap:006f,htagg:17,htmcs:0000ffff,vhtcap:0f815832,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,txpow:e002,extcap:0000000400000040|os:ios':
-        ('BCM4335', 'iPad Air (2nd gen)', '5GHz'),
+    'wifi3|probe:0,1,45,127,107,191,221(0050f2,8),221(001018,2),htcap:006f,htagg:17,htmcs:0000ffff,vhtcap:0f815832,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,intwrk:0f,extcap:0400088400000040|assoc:0,1,33,36,48,70,45,127,191,221(001018,2),221(0050f2,2),cap:0011,htcap:006f,htagg:17,htmcs:0000ffff,vhtcap:0f815832,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,txpow:e002,extcap:0400000000000040|name:ipad':
+        ('BCM4350', 'iPad Air (2nd gen)', '5GHz'),
+    'wifi3|probe:0,1,45,127,107,191,221(0050f2,8),221(001018,2),htcap:006f,htagg:17,htmcs:0000ffff,vhtcap:0f815832,vhtrxmcs:0000fffa,vhttxmcs:0000fffe,intwrk:0f,extcap:0400088400000040|assoc:0,1,33,36,48,70,45,127,191,221(001018,2),221(0050f2,2),cap:0011,htcap:006f,htagg:17,htmcs:0000ffff,vhtcap:0f815832,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,txpow:e002,extcap:0400000000000040|name:ipad':
+        ('BCM4350', 'iPad Air (2nd gen)', '5GHz'),
+    'wifi3|probe:0,1,45,127,107,191,221(0050f2,8),221(001018,2),htcap:006f,htagg:17,htmcs:0000ffff,vhtcap:0f815832,vhtrxmcs:0000fffe,vhttxmcs:0000fffa,intwrk:0f,extcap:0400088400000040|assoc:0,1,33,36,48,70,45,127,191,221(001018,2),221(0050f2,2),cap:0011,htcap:006f,htagg:17,htmcs:0000ffff,vhtcap:0f815832,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,txpow:e002,extcap:0400000000000040|name:ipad':
+        ('BCM4350', 'iPad Air (2nd gen)', '5GHz'),
+    'wifi3|probe:0,1,45,127,107,191,221(0050f2,8),221(001018,2),htcap:006f,htagg:17,htmcs:0000ffff,vhtcap:0f815832,vhtrxmcs:0000fffe,vhttxmcs:0000fffe,intwrk:0f,extcap:0400088400000040|assoc:0,1,33,36,48,70,45,127,191,221(001018,2),221(0050f2,2),cap:0011,htcap:006f,htagg:17,htmcs:0000ffff,vhtcap:0f815832,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,txpow:e002,extcap:0400000000000040|name:ipad':
+        ('BCM4350', 'iPad Air (2nd gen)', '5GHz'),
+    'wifi3|probe:0,1,45,127,107,191,221(0050f2,8),221(001018,2),htcap:006f,htagg:17,htmcs:0000ffff,vhtcap:0f815832,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,intwrk:0f,extcap:0400088400000040|assoc:0,1,33,36,48,45,127,191,221(001018,2),221(0050f2,2),cap:0011,htcap:006f,htagg:17,htmcs:0000ffff,vhtcap:0f815832,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,txpow:e002,extcap:0400000000000040|name:ipad':
+        ('BCM4350', 'iPad Air (2nd gen)', '5GHz'),
+    'wifi3|probe:0,1,45,127,107,191,221(0050f2,8),221(001018,2),htcap:006f,htagg:17,htmcs:0000ffff,vhtcap:0f815832,vhtrxmcs:0000fffa,vhttxmcs:0000fffe,intwrk:0f,extcap:0400088400000040|assoc:0,1,33,36,48,45,127,191,221(001018,2),221(0050f2,2),cap:0011,htcap:006f,htagg:17,htmcs:0000ffff,vhtcap:0f815832,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,txpow:e002,extcap:0400000000000040|name:ipad':
+        ('BCM4350', 'iPad Air (2nd gen)', '5GHz'),
+    'wifi3|probe:0,1,45,127,107,191,221(0050f2,8),221(001018,2),htcap:006f,htagg:17,htmcs:000000ff,vhtcap:0f815832,vhtrxmcs:0000fffe,vhttxmcs:0000fffe,intwrk:0f,extcap:0400088400000040|assoc:0,1,33,36,48,45,127,191,221(001018,2),221(0050f2,2),cap:0011,htcap:006f,htagg:17,htmcs:0000ffff,vhtcap:0f815832,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,txpow:e002,extcap:0400000000000040|name:ipad':
+        ('BCM4350', 'iPad Air (2nd gen)', '5GHz'),
     'wifi3|probe:0,1,50,3,45,127,107,221(0050f2,8),221(001018,2),htcap:002d,htagg:17,htmcs:0000ffff,intwrk:0f,extcap:0400088400000040|assoc:0,1,50,33,36,48,45,127,221(001018,2),221(0050f2,2),cap:0431,htcap:002d,htagg:17,htmcs:0000ffff,txpow:1502,extcap:0000000000000040|os:ios':
         ('BCM4335', 'iPad Air (2nd gen)', '2.4GHz'),
     'wifi3|probe:0,1,50,3,45,127,107,221(0050f2,8),221(001018,2),htcap:002d,htagg:17,htmcs:0000ffff,intwrk:0f,extcap:0400088400000040|assoc:0,1,50,33,36,48,70,45,127,221(001018,2),221(0050f2,2),cap:0431,htcap:002d,htagg:17,htmcs:0000ffff,txpow:1502,extcap:0000000000000040|os:ios':
@@ -212,21 +228,29 @@
         ('BCM4334', 'iPad Mini (1st gen)', '2.4GHz'),
 
     'wifi3|probe:0,1,45,127,107,221(001018,2),221(00904c,51),221(0050f2,8),htcap:01fe,htagg:1b,htmcs:0000ffff,intwrk:0f,extcap:00000804|assoc:0,1,33,36,48,45,70,221(001018,2),221(00904c,51),221(0050f2,2),cap:0011,htcap:01fe,htagg:1b,htmcs:0000ffff,txpow:e606|os:ios':
-        ('BCM4334', 'iPad Mini (2nd gen)', '5GHz'),
+        ('BCM4324', 'iPad Mini (2nd gen)', '5GHz'),
+    'wifi3|probe:0,1,45,127,107,221(001018,2),221(00904c,51),221(0050f2,8),htcap:01fe,htagg:1b,htmcs:0000ffff,intwrk:0f,extcap:00000804|assoc:0,1,33,36,48,45,70,221(001018,2),221(00904c,51),221(0050f2,2),cap:1111,htcap:01fe,htagg:1b,htmcs:0000ffff,txpow:e606|os:ios':
+        ('BCM4324', 'iPad Mini (2nd gen)', '5GHz'),
     'wifi3|probe:0,1,45,127,107,221(001018,2),221(00904c,51),221(0050f2,8),htcap:01fe,htagg:1b,htmcs:0000ffff,intwrk:0f,extcap:00000804|assoc:0,1,33,36,48,45,221(001018,2),221(00904c,51),221(0050f2,2),cap:0011,htcap:01fe,htagg:1b,htmcs:0000ffff,txpow:e606|os:ios':
-        ('BCM4334', 'iPad Mini (2nd gen)', '5GHz'),
+        ('BCM4324', 'iPad Mini (2nd gen)', '5GHz'),
+    'wifi3|probe:0,1,45,127,107,221(001018,2),221(00904c,51),221(0050f2,8),htcap:01fe,htagg:1b,htmcs:0000ffff,intwrk:0f,extcap:00000804|assoc:0,1,33,36,48,45,221(001018,2),221(00904c,51),221(0050f2,2),cap:1111,htcap:01fe,htagg:1b,htmcs:0000ffff,txpow:e606|os:ios':
+        ('BCM4324', 'iPad Mini (2nd gen)', '5GHz'),
     'wifi3|probe:0,1,50,3,45,127,107,221(001018,2),221(00904c,51),221(0050f2,8),htcap:01bc,htagg:1b,htmcs:0000ffff,intwrk:0f,extcap:00000804|assoc:0,1,33,36,48,50,45,221(001018,2),221(00904c,51),221(0050f2,2),cap:0431,htcap:01bc,htagg:1b,htmcs:0000ffff,txpow:1603|os:ios':
-        ('BCM4334', 'iPad Mini (2nd gen)', '2.4GHz'),
+        ('BCM4324', 'iPad Mini (2nd gen)', '2.4GHz'),
+    'wifi3|probe:0,1,50,3,45,127,107,221(001018,2),221(00904c,51),221(0050f2,8),htcap:01bc,htagg:1b,htmcs:0000ffff,intwrk:0f,extcap:00000804|assoc:0,1,33,36,48,50,45,221(001018,2),221(00904c,51),221(0050f2,2),cap:1431,htcap:01bc,htagg:1b,htmcs:0000ffff,txpow:1603|os:ios':
+        ('BCM4324', 'iPad Mini (2nd gen)', '2.4GHz'),
     'wifi3|probe:0,1,50,3,45,127,107,221(001018,2),221(00904c,51),221(0050f2,8),htcap:01bc,htagg:1b,htmcs:0000ffff,intwrk:0f,extcap:00000804|assoc:0,1,33,36,48,50,45,70,221(001018,2),221(00904c,51),221(0050f2,2),cap:0431,htcap:01bc,htagg:1b,htmcs:0000ffff,txpow:1603|os:ios':
-        ('BCM4334', 'iPad Mini (2nd gen)', '2.4GHz'),
+        ('BCM4324', 'iPad Mini (2nd gen)', '2.4GHz'),
+    'wifi3|probe:0,1,50,3,45,127,107,221(001018,2),221(00904c,51),221(0050f2,8),htcap:01bc,htagg:1b,htmcs:0000ffff,intwrk:0f,extcap:00000804|assoc:0,1,33,36,48,50,45,70,221(001018,2),221(00904c,51),221(0050f2,2),cap:1431,htcap:01bc,htagg:1b,htmcs:0000ffff,txpow:1603|os:ios':
+        ('BCM4324', 'iPad Mini (2nd gen)', '2.4GHz'),
 
-    'wifi|probe:0,1,50,3,221(001018,2)|assoc:0,1,48,50,221(001018,2),221(0050f2,2)|name:iphone':
-        ('BCM4325', 'iPhone 3GS', '2.4GHz'),
+    'wifi3|probe:0,1,50,45,221(001018,2),221(00904c,51),htcap:1800,htagg:1b,htmcs:000000ff|assoc:0,1,48,50,45,221(001018,2),221(00904c,51),221(0050f2,2),cap:0431,htcap:1800,htagg:1b,htmcs:000000ff|os:ios':
+        ('BCM4329', 'iPhone 4', '2.4GHz'),
 
-    'wifi|probe:0,1,50,45,3,221(001018,2),221(00904c,51),htcap:0100,htagg:19,htmcs:000000ff|assoc:0,1,48,50,45,221(001018,2),221(00904c,51),221(0050f2,2),htcap:0100,htagg:19,htmcs:000000ff|os:ios':
-        ('BCM4330', 'iPhone 4S', '2.4GHz'),
-    'wifi|probe:0,1,50,45,3,221(001018,2),221(00904c,51),htcap:0100,htagg:19,htmcs:000000ff|assoc:0,1,48,50,45,70,221(001018,2),221(00904c,51),221(0050f2,2),htcap:0100,htagg:19,htmcs:000000ff|os:ios':
-        ('BCM4330', 'iPhone 4S', '2.4GHz'),
+    'wifi3|probe:0,1,50,45,3,221(001018,2),221(00904c,51),htcap:0100,htagg:19,htmcs:000000ff|assoc:0,1,48,50,45,221(001018,2),221(00904c,51),221(0050f2,2),cap:0431,htcap:0100,htagg:19,htmcs:000000ff|os:ios':
+        ('BCM4330', 'iPhone 4s', '2.4GHz'),
+    'wifi3|probe:0,1,50,45,3,221(001018,2),221(00904c,51),htcap:0100,htagg:19,htmcs:000000ff|assoc:0,1,48,50,45,70,221(001018,2),221(00904c,51),221(0050f2,2),cap:0431,htcap:0100,htagg:19,htmcs:000000ff|os:ios':
+        ('BCM4330', 'iPhone 4s', '2.4GHz'),
 
     'wifi3|probe:0,1,45,127,107,221(001018,2),221(00904c,51),221(0050f2,8),htcap:0062,htagg:1a,htmcs:000000ff,intwrk:0f,extcap:00000004|assoc:0,1,33,36,48,45,221(001018,2),221(00904c,51),221(0050f2,2),cap:0011,htcap:0062,htagg:1a,htmcs:000000ff,txpow:1504|os:ios':
         ('BCM4334', 'iPhone 5', '5GHz'),
@@ -246,21 +270,21 @@
         ('BCM4334', 'iPhone 5', '2.4GHz'),
 
     'wifi3|probe:0,1,45,127,107,221(001018,2),221(00904c,51),221(0050f2,8),htcap:0062,htagg:1a,htmcs:000000ff,intwrk:ff,extcap:00000804|assoc:0,1,33,36,48,45,221(001018,2),221(00904c,51),221(0050f2,2),cap:0011,htcap:0062,htagg:1a,htmcs:000000ff,txpow:1603|os:ios':
-        ('BCM4334', 'iPhone 5S', '5GHz'),
+        ('BCM4334', 'iPhone 5s', '5GHz'),
     'wifi3|probe:0,1,45,127,107,221(001018,2),221(00904c,51),221(0050f2,8),htcap:0062,htagg:1a,htmcs:000000ff,intwrk:ff,extcap:00000804|assoc:0,1,33,36,48,45,70,221(001018,2),221(00904c,51),221(0050f2,2),cap:0011,htcap:0062,htagg:1a,htmcs:000000ff,txpow:1603|os:ios':
-        ('BCM4334', 'iPhone 5S', '5GHz'),
+        ('BCM4334', 'iPhone 5s', '5GHz'),
     'wifi3|probe:0,1,45,127,107,221(001018,2),221(00904c,51),221(0050f2,8),htcap:0062,htagg:1a,htmcs:000000ff,intwrk:0f,extcap:00000804|assoc:0,1,33,36,48,45,221(001018,2),221(00904c,51),221(0050f2,2),cap:0011,htcap:0062,htagg:1a,htmcs:000000ff,txpow:1603|os:ios':
-        ('BCM4334', 'iPhone 5S', '5GHz'),
+        ('BCM4334', 'iPhone 5s', '5GHz'),
     'wifi3|probe:0,1,45,127,107,221(001018,2),221(00904c,51),221(0050f2,8),htcap:0062,htagg:1a,htmcs:000000ff,intwrk:0f,extcap:00000804|assoc:0,1,33,36,48,45,70,221(001018,2),221(00904c,51),221(0050f2,2),cap:0011,htcap:0062,htagg:1a,htmcs:000000ff,txpow:1603|os:ios':
-        ('BCM4334', 'iPhone 5S', '5GHz'),
+        ('BCM4334', 'iPhone 5s', '5GHz'),
     'wifi3|probe:0,1,50,3,45,127,107,221(001018,2),221(00904c,51),221(0050f2,8),htcap:0020,htagg:1a,htmcs:000000ff,intwrk:ff,extcap:00000804|assoc:0,1,33,36,48,50,45,221(001018,2),221(00904c,51),221(0050f2,2),cap:0431,htcap:0020,htagg:1a,htmcs:000000ff,txpow:1805|os:ios':
-        ('BCM4334', 'iPhone 5S', '2.4GHz'),
+        ('BCM4334', 'iPhone 5s', '2.4GHz'),
     'wifi3|probe:0,1,50,3,45,127,107,221(001018,2),221(00904c,51),221(0050f2,8),htcap:0020,htagg:1a,htmcs:000000ff,intwrk:ff,extcap:00000804|assoc:0,1,33,36,48,50,45,70,221(001018,2),221(00904c,51),221(0050f2,2),cap:0431,htcap:0020,htagg:1a,htmcs:000000ff,txpow:1805|os:ios':
-        ('BCM4334', 'iPhone 5S', '2.4GHz'),
+        ('BCM4334', 'iPhone 5s', '2.4GHz'),
     'wifi3|probe:0,1,50,3,45,127,107,221(001018,2),221(00904c,51),221(0050f2,8),htcap:0020,htagg:1a,htmcs:000000ff,intwrk:0f,extcap:00000804|assoc:0,1,33,36,48,50,45,221(001018,2),221(00904c,51),221(0050f2,2),cap:0431,htcap:0020,htagg:1a,htmcs:000000ff,txpow:1805|os:ios':
-        ('BCM4334', 'iPhone 5S', '2.4GHz'),
+        ('BCM4334', 'iPhone 5s', '2.4GHz'),
     'wifi3|probe:0,1,50,3,45,127,107,221(001018,2),221(00904c,51),221(0050f2,8),htcap:0020,htagg:1a,htmcs:000000ff,intwrk:0f,extcap:00000804|assoc:0,1,33,36,48,50,45,70,221(001018,2),221(00904c,51),221(0050f2,2),cap:0431,htcap:0020,htagg:1a,htmcs:000000ff,txpow:1805|os:ios':
-        ('BCM4334', 'iPhone 5S', '2.4GHz'),
+        ('BCM4334', 'iPhone 5s', '2.4GHz'),
 
     'wifi3|probe:0,1,45,127,107,191,221(0050f2,8),221(001018,2),htcap:0063,htagg:17,htmcs:000000ff,vhtcap:0f805032,vhtrxmcs:0000fffe,vhttxmcs:0000fffe,intwrk:0f,extcap:0400088400000040|assoc:0,1,33,36,48,70,45,127,191,221(001018,2),221(0050f2,2),cap:0011,htcap:0063,htagg:17,htmcs:000000ff,vhtcap:0f805032,vhtrxmcs:0000fffe,vhttxmcs:0000fffe,txpow:e002,extcap:0400000000000040|os:ios':
         ('BCM4339', 'iPhone 6/6+', '5GHz'),
@@ -279,22 +303,32 @@
         ('BCM4350', 'iPhone 6s/6s+', '5GHz'),
     'wifi3|probe:0,1,45,127,107,191,221(0050f2,8),221(001018,2),htcap:006f,htagg:17,htmcs:0000ffff,vhtcap:0f815832,vhtrxmcs:0000fffa,vhttxmcs:0000fffe,intwrk:0f,extcap:0400088400000040|assoc:0,1,33,36,48,70,45,127,191,221(001018,2),221(0050f2,2),cap:0011,htcap:006f,htagg:17,htmcs:0000ffff,vhtcap:0f815832,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,txpow:e002,extcap:0400000000000040|os:ios':
         ('BCM4350', 'iPhone 6s/6s+', '5GHz'),
+    'wifi3|probe:0,1,45,127,107,191,221(0050f2,8),221(001018,2),htcap:006f,htagg:17,htmcs:0000ffff,vhtcap:0f815832,vhtrxmcs:0000fffe,vhttxmcs:0000fffa,intwrk:0f,extcap:0400088400000040|assoc:0,1,33,36,48,70,45,127,191,221(001018,2),221(0050f2,2),cap:0011,htcap:006f,htagg:17,htmcs:0000ffff,vhtcap:0f815832,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,txpow:e002,extcap:0400000000000040|os:ios':
+        ('BCM4350', 'iPhone 6s/6s+', '5GHz'),
+    'wifi3|probe:0,1,45,127,107,191,221(0050f2,8),221(001018,2),htcap:006f,htagg:17,htmcs:0000ffff,vhtcap:0f815832,vhtrxmcs:0000fffe,vhttxmcs:0000fffe,intwrk:0f,extcap:0400088400000040|assoc:0,1,33,36,48,70,45,127,191,221(001018,2),221(0050f2,2),cap:0011,htcap:006f,htagg:17,htmcs:0000ffff,vhtcap:0f815832,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,txpow:e002,extcap:0400000000000040|os:ios':
+        ('BCM4350', 'iPhone 6s/6s+', '5GHz'),
     'wifi3|probe:0,1,45,127,107,191,221(0050f2,8),221(001018,2),htcap:006f,htagg:17,htmcs:0000ffff,vhtcap:0f815832,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,intwrk:0f,extcap:0400088400000040|assoc:0,1,33,36,48,45,127,191,221(001018,2),221(0050f2,2),cap:0011,htcap:006f,htagg:17,htmcs:0000ffff,vhtcap:0f815832,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,txpow:e002,extcap:0400000000000040|os:ios':
         ('BCM4350', 'iPhone 6s/6s+', '5GHz'),
     'wifi3|probe:0,1,45,127,107,191,221(0050f2,8),221(001018,2),htcap:006f,htagg:17,htmcs:0000ffff,vhtcap:0f815832,vhtrxmcs:0000fffa,vhttxmcs:0000fffe,intwrk:0f,extcap:0400088400000040|assoc:0,1,33,36,48,45,127,191,221(001018,2),221(0050f2,2),cap:0011,htcap:006f,htagg:17,htmcs:0000ffff,vhtcap:0f815832,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,txpow:e002,extcap:0400000000000040|os:ios':
         ('BCM4350', 'iPhone 6s/6s+', '5GHz'),
+    'wifi3|probe:0,1,45,127,107,191,221(0050f2,8),221(001018,2),htcap:006f,htagg:17,htmcs:000000ff,vhtcap:0f815832,vhtrxmcs:0000fffe,vhttxmcs:0000fffe,intwrk:0f,extcap:0400088400000040|assoc:0,1,33,36,48,45,127,191,221(001018,2),221(0050f2,2),cap:0011,htcap:006f,htagg:17,htmcs:0000ffff,vhtcap:0f815832,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,txpow:e002,extcap:0400000000000040|os:ios':
+        ('BCM4350', 'iPhone 6s/6s+', '5GHz'),
     'wifi3|probe:0,1,50,3,45,127,107,221(0050f2,8),221(001018,2),htcap:002d,htagg:17,htmcs:0000ffff,intwrk:0f,extcap:0400088400000040|assoc:0,1,50,33,36,48,45,127,221(001018,2),221(0050f2,2),cap:0431,htcap:002d,htagg:17,htmcs:0000ffff,txpow:1202,extcap:0000000000000040|os:ios':
         ('BCM4350', 'iPhone 6s/6s+', '2.4GHz'),
+    'wifi3|probe:0,1,50,3,45,127,107,221(0050f2,8),221(001018,2),htcap:002d,htagg:17,htmcs:000000ff,intwrk:0f,extcap:0400088400000040|assoc:0,1,50,33,36,48,45,127,221(001018,2),221(0050f2,2),cap:0431,htcap:002d,htagg:17,htmcs:0000ffff,txpow:1202,extcap:0000000000000040|os:ios':
+        ('BCM4350', 'iPhone 6s/6s+', '2.4GHz'),
     'wifi3|probe:0,1,50,3,45,127,107,221(0050f2,8),221(001018,2),htcap:002d,htagg:17,htmcs:0000ffff,intwrk:0f,extcap:0400088400000040|assoc:0,1,50,33,36,48,70,45,127,221(001018,2),221(0050f2,2),cap:0431,htcap:002d,htagg:17,htmcs:0000ffff,txpow:1202,extcap:0000000000000040|os:ios':
         ('BCM4350', 'iPhone 6s/6s+', '2.4GHz'),
+    'wifi3|probe:0,1,50,3,45,127,107,221(0050f2,8),221(001018,2),htcap:002d,htagg:17,htmcs:000000ff,intwrk:0f,extcap:0400088400000040|assoc:0,1,50,33,36,48,70,45,127,221(001018,2),221(0050f2,2),cap:0431,htcap:002d,htagg:17,htmcs:0000ffff,txpow:1202,extcap:0000000000000040|os:ios':
+        ('BCM4350', 'iPhone 6s/6s+', '2.4GHz'),
 
-    'wifi3|probe:0,1,3,50|assoc:0,1,48,50,cap:0411|name:ipod':
+    'wifi3|probe:0,1,3,50|assoc:0,1,48,50,cap:0411|os:ipodtouch1':
         ('Marvell_W8686B22', 'iPod Touch 1st/2nd gen', '2.4GHz'),
 
     'wifi|probe:0,1,50,221(001018,2)|assoc:0,1,48,50,221(001018,2),221(0050f2,2)|name:ipod':
         ('BCM4329', 'iPod Touch 3rd gen', '2.4GHz'),
 
-    'wifi3|probe:0,1,50,45,221(001018,2),221(00904c,51),htcap:180c,htagg:1b,htmcs:000000ff|assoc:0,1,48,50,45,221(001018,2),221(00904c,51),221(0050f2,2),cap:0431,htcap:180c,htagg:1b,htmcs:000000ff|name:ipod':
+    'wifi3|probe:0,1,50,45,221(001018,2),221(00904c,51),htcap:180c,htagg:1b,htmcs:000000ff|assoc:0,1,48,50,45,221(001018,2),221(00904c,51),221(0050f2,2),cap:0431,htcap:180c,htagg:1b,htmcs:000000ff|os:ios':
         ('BCM4329', 'iPod Touch 4th gen', '2.4GHz'),
 
     'wifi|probe:0,1,45,127,107,221(001018,2),221(00904c,51),221(0050f2,8),htcap:0062,htagg:1a,htmcs:000000ff,intwrk:0f,extcap:04000000|assoc:0,1,33,36,48,45,70,221(001018,2),221(00904c,51),221(0050f2,2),htcap:0062,htagg:1a,htmcs:000000ff|name:ipod':
@@ -311,14 +345,14 @@
     'wifi|probe:0,1,50,3,45,127,221(001018,2),221(00904c,51),221(00904c,4),221(0050f2,8),htcap:102d,htagg:17,htmcs:000000ff,extcap:00080000|assoc:0,1,33,36,50,45,221(001018,2),221(0050f2,2),htcap:102d,htagg:17,htmcs:000000ff|oui:lg':
         ('BCM4335', 'LG G2', '2.4GHz'),
 
-    'wifi3|probe:0,1,45,221(0050f2,8),191,127,107,221(506f9a,16),htcap:016e,htagg:03,htmcs:000000ff,vhtcap:31805120,vhtrxmcs:0000fffe,vhttxmcs:0000fffe,intwrk:0f,extcap:00000080|assoc:0,1,48,45,221(0050f2,2),191,127,cap:0011,htcap:016e,htagg:03,htmcs:000000ff,vhtcap:31805120,vhtrxmcs:0000fffe,vhttxmcs:0000fffe,extcap:00000a8201400040|oui:lg':
+    'wifi3|probe:0,1,45,221(0050f2,8),191,127,107,221(506f9a,16),htcap:016e,htagg:03,htmcs:000000ff,vhtcap:31800120,vhtrxmcs:0000fffe,vhttxmcs:0000fffe,intwrk:0f,extcap:000000800040|assoc:0,1,33,36,48,45,221(0050f2,2),191,127,cap:0111,htcap:016e,htagg:03,htmcs:000000ff,vhtcap:31805120,vhtrxmcs:0000fffe,vhttxmcs:0000fffe,txpow:170d,extcap:00000a8201400040|oui:lg':
         ('BCM4339', 'LG G3', '5GHz'),
-    'wifi3|probe:0,1,50,3,45,221(0050f2,8),127,107,221(506f9a,16),htcap:012c,htagg:03,htmcs:000000ff,intwrk:0f,extcap:00000080|assoc:0,1,50,48,45,221(0050f2,2),127,cap:0411,htcap:012c,htagg:03,htmcs:000000ff,extcap:00000a8201400000|oui:lg':
+    'wifi3|probe:0,1,50,3,45,221(0050f2,8),127,107,221(506f9a,16),htcap:012c,htagg:03,htmcs:000000ff,intwrk:0f,extcap:000000800040|assoc:0,1,50,48,45,221(0050f2,2),127,cap:0411,htcap:012c,htagg:03,htmcs:000000ff,extcap:00000a8201400000|oui:lg':
         ('BCM4339', 'LG G3', '2.4GHz'),
 
-    'wifi3|probe:0,1,45,127,107,191,221(506f9a,16),221(001018,2),221(00904c,51),221(00904c,4),221(0050f2,8),htcap:016f,htagg:17,htmcs:000000ff,vhtcap:0f805932,vhtrxmcs:0000fffe,vhttxmcs:0000fffe,intwrk:0f,extcap:0000088001400040|assoc:0,1,33,36,48,45,127,191,221(001018,2),221(00904c,4),221(0050f2,2),cap:0011,htcap:016f,htagg:17,htmcs:000000ff,vhtcap:0f805932,vhtrxmcs:0000fffe,vhttxmcs:0000fffe,txpow:1d01,extcap:0000008001400040|oui:lg':
+    'wifi3|probe:0,1,3,45,127,107,191,221(506f9a,16),221(001018,2),221(00904c,51),221(00904c,4),221(0050f2,8),htcap:016f,htagg:17,htmcs:000000ff,vhtcap:0f805932,vhtrxmcs:0000fffe,vhttxmcs:0000fffe,intwrk:0f,extcap:0000088001400040|assoc:0,1,33,36,48,45,127,191,221(001018,2),221(00904c,4),221(0050f2,2),cap:0011,htcap:016f,htagg:17,htmcs:000000ff,vhtcap:0f805932,vhtrxmcs:0000fffe,vhttxmcs:0000fffe,txpow:1d01,extcap:0000008001400040|oui:lg':
         ('BCM4339', 'LG G4', '5GHz'),
-    'wifi3|probe:0,1,50,3,45,127,107,221(506f9a,16),221(001018,2),221(00904c,51),221(00904c,4),221(0050f2,8),htcap:112d,htagg:17,htmcs:000000ff,intwrk:0f,extcap:0000088001400040|assoc:0,1,33,36,48,50,45,127,221(001018,2),221(0050f2,2),cap:0431,htcap:112d,htagg:17,htmcs:000000ff,txpow:1001,extcap:00000080|oui:lg':
+    'wifi3|probe:0,1,50,45,127,107,221(506f9a,16),221(001018,2),221(00904c,51),221(00904c,4),221(0050f2,8),htcap:112d,htagg:17,htmcs:000000ff,intwrk:0f,extcap:0000088001400040|assoc:0,1,33,36,48,50,45,127,221(001018,2),221(0050f2,2),cap:0431,htcap:112d,htagg:17,htmcs:000000ff,txpow:1001,extcap:000000800140|oui:lg':
         ('BCM4339', 'LG G4', '2.4GHz'),
 
     'wifi|probe:0,1,50,3,45,221(0050f2,8),221(0050f2,4),221(506f9a,9),htcap:012c,wps:LGMS323|assoc:0,1,50,48,45,221(0050f2,2),221(004096,3),htcap:012c':
@@ -345,9 +379,9 @@
     'wifi3|probe:0,1,50,3,45,127,htcap:49ad,htagg:17,htmcs:0000ffff,extcap:0400000000000040|assoc:0,1,50,33,36,48,45,127,221(0050f2,2),cap:0431,htcap:49ad,htagg:17,htmcs:0000ffff,txpow:1307,extcap:0000000000000040|os:macos':
         ('BCM4331', 'MacBook Pro 15" late 2013 (A1398)', '2.4GHz'),
 
-    'wifi3|probe:0,1,45,127,191,htcap:09ef,htagg:17,htmcs:0000ffff,vhtcap:0f8159b2,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,extcap:0000000400000040|assoc:0,1,33,36,48,45,127,191,221(0050f2,2),cap:0011,htcap:09ef,htagg:17,htmcs:0000ffff,vhtcap:0f8159b2,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,txpow:e007,extcap:0400000000000040|os:macos':
+    'wifi3|probe:0,1,45,127,191,htcap:09ef,htagg:17,htmcs:0000ffff,vhtcap:0f8159b2,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,extcap:0400000000000040|assoc:0,1,33,36,48,45,127,191,221(0050f2,2),cap:0011,htcap:09ef,htagg:17,htmcs:0000ffff,vhtcap:0f8159b2,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,txpow:e007,extcap:0400000000000040|os:macos':
         ('BCM4360', 'MacBook Air late 2014 (A1466)', '5GHz'),
-    'wifi3|probe:0,1,50,3,45,127,htcap:49ad,htagg:17,htmcs:0000ffff,extcap:0000000400000040|assoc:0,1,50,33,36,48,45,127,221(0050f2,2),cap:0431,htcap:49ad,htagg:17,htmcs:0000ffff,txpow:1407,extcap:0000000000000040|os:macos':
+    'wifi3|probe:0,1,50,3,45,127,htcap:49ad,htagg:17,htmcs:0000ffff,extcap:0400000000000040|assoc:0,1,50,33,36,48,45,127,221(0050f2,2),cap:0431,htcap:49ad,htagg:17,htmcs:0000ffff,txpow:1407,extcap:0000000000000040|os:macos':
         ('BCM4360', 'MacBook Air late 2014 (A1466)', '2.4GHz'),
 
     'wifi|probe:0,1,45,127,191,221(00904c,51),htcap:09ef,vhtcap:0f8259b2|assoc:0,1,33,36,48,45,127,191,221(00904c,51),221(0050f2,2),htcap:09ef,vhtcap:0f8259b2|os:macos':
@@ -355,85 +389,90 @@
 
     'wifi|probe:0,1,45,50,htcap:0102,htagg:03,htmcs:0000ffff|assoc:0,1,33,36,48,221(0050f2,2),45,htcap:010e,htagg:03,htmcs:0000ffff|oui:microsoft':
         ('Marvell_88W8797', 'Microsoft Surface RT', '5GHz'),
-    'wifi|probe:0,1,3,45,50,htcap:0102,htagg:03,htmcs:0000ffff|assoc:0,1,48,50,221(0050f2,2),45,htcap:012c,htagg:03,htmcs:0000ffff|oui:microsoft':
+    'wifi3|probe:0,1,3,45,50,htcap:0102,htagg:03,htmcs:0000ffff|assoc:0,1,48,50,221(0050f2,2),45,cap:0411,htcap:012c,htagg:03,htmcs:0000ffff|oui:microsoft':
         ('Marvell_88W8797', 'Microsoft Surface RT', '2.4GHz'),
 
-    'wifi|probe:0,1,50,3,45,221(0050f2,8),htcap:012c,htagg:03,htmcs:000000ff|assoc:0,1,50,33,48,70,45,221(0050f2,2),127,htcap:012c,htagg:03,htmcs:000000ff,extcap:020a0000|oui:motorola':
-        ('QCA_WCN3620', 'Moto-E (2nd gen)', '2.4GHz'),
+    'wifi3|probe:0,1,50,3,45,221(0050f2,8),htcap:012c,htagg:03,htmcs:000000ff|assoc:0,1,50,48,45,221(0050f2,2),127,cap:0411,htcap:012c,htagg:03,htmcs:000000ff,extcap:00000a0200000000|oui:motorola':
+        ('QCA_WCN3620', 'Moto E (2nd gen)', '2.4GHz'),
+    'wifi3|probe:0,1,50,3,45,221(0050f2,8),htcap:012c,htagg:03,htmcs:000000ff|assoc:0,1,50,33,48,70,45,221(0050f2,2),127,cap:1411,htcap:012c,htagg:03,htmcs:000000ff,txpow:170d,extcap:00000a0200000000|oui:motorola':
+        ('QCA_WCN3620', 'Moto E (2nd gen)', '2.4GHz'),
 
-    'wifi|probe:0,1,50,3,45,221(0050f2,8),htcap:012c,htagg:03,htmcs:000000ff|assoc:0,1,50,48,45,221(0050f2,2),127,htcap:012c,htagg:03,htmcs:000000ff,extcap:020a0000|oui:motorola':
-        ('QCA_WCN3620', 'Moto-G', '2.4GHz'),
+    'wifi3|probe:0,1,50,3,45,221(0050f2,8),htcap:012c,htagg:03,htmcs:000000ff|assoc:0,1,50,48,45,221(0050f2,2),127,cap:8431,htcap:012c,htagg:03,htmcs:000000ff,extcap:00000a02|oui:motorola':
+        ('QCA_WCN3620', 'Moto G or Moto X', '2.4GHz'),
 
     'wifi|probe:0,1,45,221(0050f2,8),191,htcap:016e,vhtcap:31800120|assoc:0,1,33,36,48,45,221(0050f2,2),191,127,htcap:016e,vhtcap:31800120|oui:motorola':
-        ('QCA_WCN3680', 'MOTO-X 2013 version', '5GHz'),
+        ('QCA_WCN3680', 'Moto X', '5GHz'),
     'wifi|probe:0,1,50,3,45,221(0050f2,8),191,htcap:012c,vhtcap:31800120|assoc:0,1,50,48,45,221(0050f2,2),htcap:012c|oui:motorola':
-        ('QCA_WCN3680', 'MOTO-X 2013 version', '2.4GHz'),
+        ('QCA_WCN3680', 'Moto X', '2.4GHz'),
 
-    'wifi|probe:0,1,50,45,htcap:1020,htagg:18,htmcs:000000ff|assoc:0,1,50,46,48,45,221(0050f2,2),htcap:1020,htagg:18,htmcs:000000ff|oui:motorola':
-        ('TI_WL1271b', 'Motorola Droid 2', '2.4GHz'),
+    'wifi3|probe:0,1,3,45,221(0050f2,8),191,htcap:016e,htagg:03,htmcs:000000ff,vhtcap:31805120,vhtrxmcs:0000fffe,vhttxmcs:0000fffe|assoc:0,1,48,45,221(0050f2,2),191,127,127,cap:8431,htcap:016e,htagg:03,htmcs:000000ff,vhtcap:31805120,vhtrxmcs:0000fffe,vhttxmcs:0000fffe,extcap:00000a02|oui:motorola':
+        ('QCA_WCN3680', 'Moto X (2nd gen)', '5GHz'),
+    'wifi3|probe:0,1,50,3,45,221(0050f2,8),191,htcap:012c,htagg:03,htmcs:000000ff,vhtcap:31800120,vhtrxmcs:0000fffe,vhttxmcs:0000fffe|assoc:0,1,50,48,45,221(0050f2,2),127,cap:8431,htcap:012c,htagg:03,htmcs:000000ff,extcap:00000a02|oui:motorola':
+        ('QCA_WCN3680', 'Moto X (2nd gen)', '2.4GHz'),
 
-    'wifi|probe:0,1,50,45,htcap:1130,htagg:18,htmcs:000000ff|assoc:0,1,50,48,45,221(0050f2,2),htcap:1130,htagg:18,htmcs:000000ff|oui:motorola':
-        ('TI_WL1285c', 'Motorola Droid 3', '2.4GHz'),
+    'wifi3|probe:0,1,127,45,htcap:01ef,htagg:03,htmcs:0000ffff,extcap:00000a0201|assoc:0,1,48,45,221(0050f2,2),191,127,cap:0011,htcap:01ef,htagg:03,htmcs:0000ffff,vhtcap:338001b2,vhtrxmcs:030cfffa,vhttxmcs:030cfffa,extcap:00000a020100004040|oui:motorola':
+        ('', 'Moto X Style', '5GHz'),
+    'wifi3|probe:0,1,3,45,221(0050f2,8),191,htcap:01ef,htagg:03,htmcs:0000ffff,vhtcap:338001b2,vhtrxmcs:030cfffa,vhttxmcs:030cfffa|assoc:0,1,48,45,221(0050f2,2),191,127,cap:0011,htcap:01ef,htagg:03,htmcs:0000ffff,vhtcap:338001b2,vhtrxmcs:030cfffa,vhttxmcs:030cfffa,extcap:00000a020100004040|oui:motorola':
+        ('', 'Moto X Style', '5GHz'),
+    'wifi3|probe:0,1,50,127,45,htcap:01ef,htagg:03,htmcs:0000ffff,extcap:00000a0201|assoc:0,1,50,48,45,221(0050f2,2),127,cap:0411,htcap:01ad,htagg:03,htmcs:0000ffff,extcap:00000a020100000040|oui:motorola':
+        ('', 'Moto X Style', '2.4GHz'),
+    'wifi3|probe:0,1,50,3,45,221(0050f2,8),127,htcap:01ad,htagg:03,htmcs:0000ffff,extcap:00000a0201|assoc:0,1,50,48,45,221(0050f2,2),127,cap:0411,htcap:01ad,htagg:03,htmcs:0000ffff,extcap:00000a020100000040|oui:motorola':
+        ('', 'Moto X Style', '2.4GHz'),
 
-    'wifi|probe:0,1,50,45,221(001018,2),221(00904c,51),htcap:182c,htagg:1b,htmcs:000000ff|assoc:0,1,48,50,45,221(001018,2),221(00904c,51),221(0050f2,2),htcap:182c,htagg:1b,htmcs:000000ff|oui:motorola':
-        ('', 'Motorola Droid X2', '2.4GHz'),
-
-    'wifi|probe:0,1,45,221(001018,2),221(00904c,51),htcap:082c,htagg:1b,htmcs:000000ff|assoc:0,1,33,36,48,45,221(001018,2),221(00904c,51),221(0050f2,2),htcap:082c,htagg:1b,htmcs:000000ff|oui:motorola':
+    'wifi3|probe:0,1,45,221(001018,2),221(00904c,51),htcap:082c,htagg:1b,htmcs:000000ff|assoc:0,1,33,36,48,45,221(001018,2),221(00904c,51),221(0050f2,2),cap:0111,htcap:082c,htagg:1b,htmcs:000000ff,txpow:0a08|oui:motorola':
         ('BCM4329', 'Motorola Xoom', '5GHz'),
-    'wifi|probe:0,1,50,45,221(001018,2),221(00904c,51),htcap:182c,htagg:1b,htmcs:000000ff|assoc:0,1,33,36,48,50,45,221(001018,2),221(00904c,51),221(0050f2,2),htcap:182c,htagg:1b,htmcs:000000ff|oui:motorola':
+    'wifi3|probe:0,1,50,45,221(001018,2),221(00904c,51),htcap:182c,htagg:1b,htmcs:000000ff|assoc:0,1,33,36,48,50,45,221(001018,2),221(00904c,51),221(0050f2,2),cap:0431,htcap:182c,htagg:1b,htmcs:000000ff,txpow:0e08|oui:motorola':
         ('BCM4329', 'Motorola Xoom', '2.4GHz'),
 
     'wifi3|probe:0,1,50,45,htcap:0130,htagg:18,htmcs:000000ff|assoc:0,1,50,48,45,221(0050f2,2),cap:0431,htcap:013c,htagg:18,htmcs:000000ff|oui:nest':
         ('TI_WL1270', 'Nest Thermostat v1/v2', '2.4GHz'),
 
-    'wifi|probe:0,1,50,45,221(001018,2),221(00904c,51),htcap:182c,htagg:1b,htmcs:000000ff|assoc:0,1,48,50,45,221(001018,2),221(00904c,51),221(0050f2,2),htcap:182c,htagg:1b,htmcs:000000ff|oui:htc':
-        ('BCM4329', 'Nexus One', '2.4GHz'),
-
-    'wifi|probe:0,1,45,221(0050f2,8),221(0050f2,4),221(506f9a,9),htcap:012c,wps:Nexus_4|assoc:0,1,48,45,221(0050f2,2),htcap:012c':
+    'wifi3|probe:0,1,45,221(0050f2,8),221(0050f2,4),221(506f9a,9),htcap:012c,htagg:03,htmcs:000000ff,wps:Nexus_4|assoc:0,1,48,45,221(0050f2,2),cap:0431,htcap:012c,htagg:03,htmcs:000000ff':
         ('QCA_WCN3360', 'Nexus 4', '5GHz'),
-    'wifi|probe:0,1,45,221(0050f2,8),191,221(0050f2,4),221(506f9a,9),htcap:012c,vhtcap:31811120,wps:Nexus_4|assoc:0,1,33,36,48,45,221(0050f2,2),htcap:012c':
+    'wifi3|probe:0,1,45,221(0050f2,8),191,221(0050f2,4),221(506f9a,9),htcap:012c,htagg:03,htmcs:000000ff,vhtcap:31811120,vhtrxmcs:01b2fffc,vhttxmcs:01b2fffc,wps:Nexus_4|assoc:0,1,48,45,221(0050f2,2),cap:0431,htcap:012c,htagg:03,htmcs:000000ff':
         ('QCA_WCN3360', 'Nexus 4', '5GHz'),
-    'wifi|probe:0,1,45,221(0050f2,8),191,htcap:012c,vhtcap:31811120|assoc:0,1,33,36,48,45,221(0050f2,2),htcap:012c|oui:lg':
-        ('QCA_WCN3360', 'Nexus 4', '5GHz'),
-    'wifi|probe:0,1,45,221(0050f2,8),221(0050f2,4),221(506f9a,9),htcap:012c,wps:Nexus_4|assoc:0,1,33,36,48,45,221(0050f2,2),htcap:012c':
-        ('QCA_WCN3360', 'Nexus 4', '5GHz'),
-    'wifi|probe:0,1,45,221(0050f2,8),191,221(0050f2,4),221(506f9a,9),htcap:012c,vhtcap:31811120,wps:Nexus_4|assoc:0,1,48,45,221(0050f2,2),htcap:012c':
-        ('QCA_WCN3360', 'Nexus 4', '5GHz'),
-    'wifi|probe:0,1,45,221(0050f2,8),191,htcap:012c,vhtcap:31811120|assoc:0,1,48,45,221(0050f2,2),htcap:012c|oui:lg':
-        ('QCA_WCN3360', 'Nexus 4', '5GHz'),
-    'wifi|probe:0,1,50,3,45,221(0050f2,8),221(0050f2,4),221(506f9a,9),htcap:012c,htagg:03,htmcs:000000ff,wps:Nexus_4|assoc:0,1,50,48,45,221(0050f2,2),htcap:012c,htagg:03,htmcs:000000ff':
+    'wifi3|probe:0,1,50,45,221(0050f2,8),191,221(0050f2,4),221(506f9a,9),htcap:012c,htagg:03,htmcs:000000ff,vhtcap:31811120,vhtrxmcs:01b2fffc,vhttxmcs:01b2fffc,wps:Nexus_4|assoc:0,1,50,48,45,221(0050f2,2),cap:0431,htcap:012c,htagg:03,htmcs:000000ff':
         ('QCA_WCN3360', 'Nexus 4', '2.4GHz'),
-    'wifi|probe:0,1,50,45,221(0050f2,8),221(0050f2,4),221(506f9a,9),htcap:012c,wps:Nexus_4|assoc:0,1,50,48,45,221(0050f2,2),htcap:012c':
-        ('QCA_WCN3360', 'Nexus 4', '2.4GHz'),
-    'wifi|probe:0,1,50,3,45,221(0050f2,8),htcap:012c,htagg:03,htmcs:000000ff|assoc:0,1,50,48,45,221(0050f2,2),htcap:012c,htagg:03,htmcs:000000ff|oui:lg':
-        ('QCA_WCN3360', 'Nexus 4', '2.4GHz'),
-    'wifi|probe:0,1,50,45,221(0050f2,8),191,221(0050f2,4),221(506f9a,9),htcap:012c,vhtcap:31811120,wps:Nexus_4|assoc:0,1,50,48,45,221(0050f2,2),htcap:012c':
-        ('QCA_WCN3360', 'Nexus 4', '2.4GHz'),
-    'wifi|probe:0,1,50,45,221(0050f2,8),191,221(0050f2,4),221(506f9a,9),htcap:012c,vhtcap:31811120|assoc:0,1,50,48,45,221(0050f2,2),htcap:012c|oui:lg':
-        ('QCA_WCN3360', 'Nexus 4', '2.4GHz'),
-    'wifi|probe:0,1,50,45,221(0050f2,8),221(0050f2,4),221(506f9a,9),htcap:012c,wps:Nexus_4|assoc:0,1,50,48,45,221(0050f2,2),127,htcap:012c':
+    'wifi3|probe:0,1,50,3,45,221(0050f2,8),221(0050f2,4),221(506f9a,9),htcap:012c,htagg:03,htmcs:000000ff,wps:Nexus_4|assoc:0,1,50,48,45,221(0050f2,2),cap:0431,htcap:012c,htagg:03,htmcs:000000ff':
         ('QCA_WCN3360', 'Nexus 4', '2.4GHz'),
 
-    'wifi|probe:0,1,45,127,191,221(001018,2),221(00904c,51),htcap:016f,vhtcap:0f805932|assoc:0,1,33,36,48,45,127,191,221(001018,2),221(0050f2,2),htcap:016f,vhtcap:0f805932':
+    'wifi3|probe:0,1,45,127,191,221(001018,2),221(00904c,51),htcap:016f,htagg:17,htmcs:000000ff,vhtcap:0f805932,vhtrxmcs:0000fffe,vhttxmcs:0000fffe,extcap:0000000000000040|assoc:0,1,33,36,48,45,127,191,221(001018,2),221(0050f2,2),cap:0011,htcap:016f,htagg:17,htmcs:000000ff,vhtcap:0f805932,vhtrxmcs:0000fffe,vhttxmcs:0000fffe,txpow:e003,extcap:0000000000000040|oui:lg':
         ('BCM4339', 'Nexus 5', '5GHz'),
-    'wifi|probe:0,1,50,3,45,127,221(001018,2),221(00904c,51),htcap:112d|assoc:0,1,33,36,48,50,45,221(001018,2),221(0050f2,2),htcap:112d':
+    'wifi3|probe:0,1,3,45,127,191,221(001018,2),221(00904c,51),htcap:016f,htagg:17,htmcs:000000ff,vhtcap:0f805932,vhtrxmcs:0000fffe,vhttxmcs:0000fffe,extcap:0000000000000040|assoc:0,1,33,36,48,45,127,191,221(001018,2),221(0050f2,2),cap:0011,htcap:016f,htagg:17,htmcs:000000ff,vhtcap:0f805932,vhtrxmcs:0000fffe,vhttxmcs:0000fffe,txpow:e003,extcap:0000000000000040|oui:lg':
+        ('BCM4339', 'Nexus 5', '5GHz'),
+    'wifi3|probe:0,1,50,3,45,127,221(001018,2),221(00904c,51),htcap:112d,htagg:17,htmcs:000000ff,extcap:0000000000000040|assoc:0,1,33,36,48,50,45,221(001018,2),221(0050f2,2),cap:0431,htcap:112d,htagg:17,htmcs:000000ff,txpow:1303|oui:lg':
+        ('BCM4339', 'Nexus 5', '2.4GHz'),
+    'wifi3|probe:0,1,50,45,127,221(001018,2),221(00904c,51),htcap:112d,htagg:17,htmcs:000000ff,extcap:0000000000000040|assoc:0,1,33,36,48,50,45,221(001018,2),221(0050f2,2),cap:0431,htcap:112d,htagg:17,htmcs:000000ff,txpow:1303|oui:lg':
         ('BCM4339', 'Nexus 5', '2.4GHz'),
 
     'wifi3|probe:0,1,127,45,191,htcap:01ef,htagg:03,htmcs:0000ffff,vhtcap:338061b2,vhtrxmcs:030cfffa,vhttxmcs:030cfffa,extcap:00000a0201000040|assoc:0,1,48,45,221(0050f2,2),191,127,cap:0011,htcap:01ef,htagg:03,htmcs:0000ffff,vhtcap:339071b2,vhtrxmcs:030cfffa,vhttxmcs:030cfffa,extcap:0000000000000040|oui:lg':
         ('QCA6174', 'Nexus 5X', '5GHz'),
     'wifi3|probe:0,1,127,extcap:00000a020100004080|assoc:0,1,48,45,221(0050f2,2),191,127,cap:0011,htcap:01ef,htagg:03,htmcs:0000ffff,vhtcap:339071b2,vhtrxmcs:030cfffa,vhttxmcs:030cfffa,extcap:000000000000004080|oui:lg':
         ('QCA6174', 'Nexus 5X', '5GHz'),
+    'wifi3|probe:0,1,45,221(0050f2,8),191,127,htcap:01ef,htagg:03,htmcs:0000ffff,vhtcap:339071b2,vhtrxmcs:030cfffa,vhttxmcs:030cfffa,extcap:000000000000004080|assoc:0,1,48,45,221(0050f2,2),191,127,cap:0011,htcap:01ef,htagg:03,htmcs:0000ffff,vhtcap:339071b2,vhtrxmcs:030cfffa,vhttxmcs:030cfffa,extcap:000000000000004080|oui:lg':
+        ('QCA6174', 'Nexus 5X', '5GHz'),
     'wifi3|probe:0,1,50,127,45,191,htcap:01ef,htagg:03,htmcs:0000ffff,vhtcap:338061b2,vhtrxmcs:030cfffa,vhttxmcs:030cfffa,extcap:00000a0201000040|assoc:0,1,50,48,45,221(0050f2,2),127,cap:0411,htcap:01ad,htagg:03,htmcs:0000ffff,extcap:0000000000000000|oui:lg':
         ('QCA6174', 'Nexus 5X', '2.4GHz'),
+    'wifi3|probe:0,1,50,3,45,221(0050f2,8),127,htcap:01ad,htagg:03,htmcs:0000ffff,extcap:000000000000000080|assoc:0,1,50,48,45,221(0050f2,2),127,cap:0411,htcap:01ad,htagg:03,htmcs:0000ffff,extcap:000000000000000080|oui:lg':
+        ('QCA6174', 'Nexus 5X', '2.4GHz'),
+    'wifi3|probe:0,1,50,127,45,191,htcap:01ef,htagg:03,htmcs:0000ffff,vhtcap:338061b2,vhtrxmcs:030cfffa,vhttxmcs:030cfffa,extcap:00000a020100004080|assoc:0,1,50,48,45,221(0050f2,2),127,cap:0411,htcap:01ad,htagg:03,htmcs:0000ffff,extcap:000000000000000080|oui:lg':
+        ('QCA6174', 'Nexus 5X', '2.4GHz'),
 
-    'wifi|probe:0,1,45,127,191,221(0050f2,4),221(506f9a,9),221(001018,2),htcap:006f,vhtcap:0f815832,wps:Nexus_6|assoc:0,1,33,36,48,45,127,191,221(001018,2),221(0050f2,2),htcap:006f,vhtcap:0f815832':
+    'wifi3|probe:0,1,45,191,221(0050f2,4),221(506f9a,9),221(001018,2),htcap:006f,htagg:17,htmcs:0000ffff,vhtcap:0f815832,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,extcap:000008800140,wps:Nexus_6|assoc:0,1,33,36,48,45,127,191,221(001018,2),221(0050f2,2),cap:0011,htcap:006f,htagg:17,htmcs:0000ffff,vhtcap:0f815832,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,txpow:e009,extcap:000008800140':
         ('BCM4356', 'Nexus 6', '5GHz'),
-    'wifi|probe:0,1,50,3,45,127,221(0050f2,4),221(506f9a,9),221(001018,2),htcap:002d,wps:Nexus_6|assoc:0,1,50,33,36,48,45,127,221(001018,2),221(0050f2,2),htcap:002d':
+    'wifi3|probe:0,1,45,127,191,221(0050f2,4),221(506f9a,9),221(001018,2),htcap:006f,htagg:17,htmcs:0000ffff,vhtcap:0f815832,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,extcap:000008800140,wps:Nexus_6|assoc:0,1,33,36,48,45,127,191,221(001018,2),221(0050f2,2),cap:0011,htcap:006f,htagg:17,htmcs:0000ffff,vhtcap:0f815832,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,txpow:e009,extcap:000008800140':
+        ('BCM4356', 'Nexus 6', '5GHz'),
+    'wifi3|probe:0,1,50,3,45,127,221(0050f2,4),221(506f9a,9),221(001018,2),htcap:002d,htagg:17,htmcs:0000ffff,extcap:0000088001400040,wps:Nexus_6|assoc:0,1,50,33,36,48,45,127,221(001018,2),221(0050f2,2),cap:0431,htcap:002d,htagg:17,htmcs:0000ffff,txpow:1209,extcap:000008800140':
         ('BCM4356', 'Nexus 6', '2.4GHz'),
-    'wifi|probe:0,1,50,3,45,221(0050f2,4),221(506f9a,9),221(001018,2),htcap:002d,wps:Nexus_6|assoc:0,1,50,33,36,48,45,221(001018,2),221(0050f2,2),htcap:002d':
+    'wifi3|probe:0,1,50,3,45,221(0050f2,4),221(506f9a,9),221(001018,2),htcap:002d,htagg:17,htmcs:0000ffff,extcap:000008800140,wps:Nexus_6|assoc:0,1,50,33,36,48,45,127,221(001018,2),221(0050f2,2),cap:0431,htcap:002d,htagg:17,htmcs:0000ffff,txpow:1209,extcap:000008800140':
         ('BCM4356', 'Nexus 6', '2.4GHz'),
 
-    'wifi|probe:0,1,50,45,3,221(001018,2),221(00904c,51),htcap:110c,htagg:19,htmcs:000000ff|assoc:0,1,48,50,45,221(001018,2),221(00904c,51),221(0050f2,2),htcap:110c,htagg:19,htmcs:000000ff|oui:asus':
+    'wifi3|probe:0,1,45,127,191,221(0050f2,4),221(506f9a,9),221(001018,2),htcap:006f,htagg:17,htmcs:0000ffff,vhtcap:0f815832,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,extcap:0000088001400040,wps:Nexus_6P|assoc:0,1,33,36,48,45,127,191,221(001018,2),221(0050f2,2),cap:0011,htcap:006f,htagg:17,htmcs:0000ffff,vhtcap:0f815832,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,txpow:e002,extcap:0000088001400040':
+        ('BCM4358', 'Nexus 6P', '5GHz'),
+    'wifi3|probe:0,1,50,3,45,127,221(0050f2,4),221(506f9a,9),221(001018,2),htcap:002d,htagg:17,htmcs:0000ffff,extcap:0000088001400040,wps:Nexus_6P|assoc:0,1,50,33,36,48,45,127,221(001018,2),221(0050f2,2),cap:0431,htcap:002d,htagg:17,htmcs:0000ffff,txpow:1402,extcap:0000088001400040':
+        ('BCM4358', 'Nexus 6P', '2.4GHz'),
+
+    'wifi3|probe:0,1,50,45,3,221(001018,2),221(00904c,51),htcap:110c,htagg:19,htmcs:000000ff|assoc:0,1,48,50,45,221(001018,2),221(00904c,51),221(0050f2,2),cap:0431,htcap:110c,htagg:19,htmcs:000000ff|oui:asus':
         ('BCM4330', 'Nexus 7 (2012)', '2.4GHz'),
 
     'wifi3|probe:0,1,45,221(0050f2,8),221(0050f2,4),221(506f9a,9),htcap:016e,htagg:03,htmcs:000000ff,wps:Nexus_7|assoc:0,1,33,36,48,45,221(0050f2,2),127,cap:0431,htcap:016e,htagg:03,htmcs:000000ff,extcap:00000a02':
@@ -455,22 +494,28 @@
     'wifi3|probe:0,1,50,45,221(0050f2,8),htcap:012c,htagg:03,htmcs:000000ff|assoc:0,1,50,48,45,221(0050f2,2),127,cap:0431,htcap:012c,htagg:03,htmcs:000000ff,extcap:00000a02|oui:asus':
         ('QCA_WCN3660', 'Nexus 7 (2013)', '2.4GHz'),
 
-    'wifi|probe:0,1,45,127,191,221(0050f2,4),221(506f9a,9),221(001018,2),htcap:006f,htagg:17,htmcs:0000ffff,vhtcap:0f815832,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,extcap:80080000,wps:Nexus_9|assoc:0,1,33,36,48,45,127,191,221(001018,2),221(0050f2,2),htcap:006f,htagg:17,htmcs:0000ffff,vhtcap:0f815832,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,extcap:80080000':
+    'wifi3|probe:0,1,45,127,191,221(0050f2,4),221(506f9a,9),221(001018,2),htcap:006f,htagg:17,htmcs:0000ffff,vhtcap:0f815832,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,extcap:000008800140,wps:Nexus_9|assoc:0,1,33,36,48,45,127,191,221(001018,2),221(0050f2,2),cap:0011,htcap:006f,htagg:17,htmcs:0000ffff,vhtcap:0f815832,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,txpow:e009,extcap:000008800140':
         ('BCM4354', 'Nexus 9', '5GHz'),
-    'wifi|probe:0,1,50,3,45,127,221(0050f2,4),221(506f9a,9),221(001018,2),htcap:002d,wps:Nexus_9|assoc:0,1,50,33,36,48,45,127,221(001018,2),221(0050f2,2),htcap:002d':
+    'wifi3|probe:0,1,50,3,45,127,221(0050f2,4),221(506f9a,9),221(001018,2),htcap:002d,htagg:17,htmcs:0000ffff,extcap:0000088001400040,wps:Nexus_9|assoc:0,1,50,33,36,48,45,127,221(001018,2),221(0050f2,2),cap:0431,htcap:002d,htagg:17,htmcs:0000ffff,txpow:1309,extcap:000008800140':
         ('BCM4354', 'Nexus 9', '2.4GHz'),
 
-    'wifi|probe:0,1,45,221(001018,2),221(00904c,51),htcap:01fe,htagg:1b,htmcs:0000ffff|assoc:0,1,48,45,221(001018,2),221(00904c,51),221(0050f2,2),htcap:01fe,htagg:1b,htmcs:0000ffff|oui:samsung':
+    'wifi3|probe:0,1,45,221(001018,2),221(00904c,51),htcap:01fe,htagg:1b,htmcs:0000ffff|assoc:0,1,48,45,221(001018,2),221(00904c,51),221(0050f2,2),cap:0011,htcap:01fe,htagg:1b,htmcs:0000ffff|oui:samsung':
         ('', 'Nexus 10', '5GHz'),
-    'wifi|probe:0,1,45,221(001018,2),221(00904c,51),htcap:01fe,htagg:1b,htmcs:0000ffff|assoc:0,1,48,45,221(001018,2),221(00904c,51),221(0050f2,2),htcap:01fe,htagg:1b,htmcs:0000ffff|oui:murata':
+    'wifi3|probe:0,1,45,221(001018,2),221(00904c,51),htcap:01fe,htagg:1b,htmcs:0000ffff|assoc:0,1,48,45,221(001018,2),221(00904c,51),221(0050f2,2),cap:0011,htcap:01fe,htagg:1b,htmcs:0000ffff|oui:murata':
         ('', 'Nexus 10', '5GHz'),
+    'wifi3|probe:0,1,50,3,45,221(001018,2),221(00904c,51),htcap:01bc,htagg:1b,htmcs:0000ffff|assoc:0,1,48,50,45,221(001018,2),221(00904c,51),221(0050f2,2),cap:0431,htcap:01bc,htagg:1b,htmcs:0000ffff|oui:samsung':
+        ('', 'Nexus 10', '2.4GHz'),
+    'wifi3|probe:0,1,50,3,45,221(001018,2),221(00904c,51),htcap:01bc,htagg:1b,htmcs:0000ffff|assoc:0,1,48,50,45,221(001018,2),221(00904c,51),221(0050f2,2),cap:0431,htcap:01bc,htagg:1b,htmcs:0000ffff|oui:murata':
+        ('', 'Nexus 10', '2.4GHz'),
 
     'wifi|probe:0,1,45,127,191,221(0050f2,4),221(506f9a,9),221(001018,2),htcap:006f,vhtcap:0f815832,wps:Nexus_Player|assoc:0,1,33,36,48,45,127,191,221(001018,2),221(0050f2,2),htcap:006f,vhtcap:0f815832':
         ('BCM4356', 'Nexus Player', '5GHz'),
     'wifi|probe:0,1,50,3,45,127,221(0050f2,4),221(506f9a,9),221(001018,2),htcap:002d,wps:Nexus_Player|assoc:0,1,50,33,36,48,45,127,221(001018,2),221(0050f2,2),htcap:002d':
         ('BCM4356', 'Nexus Player', '2.4GHz'),
 
-    'wifi|probe:0,1,50,45,htcap:012c,htagg:1b,htmcs:000000ff|assoc:0,1,48,50,221(0050f2,2),45,51,127,htcap:012c,htagg:1b,htmcs:000000ff,extcap:00000001|os:windows-phone':
+    'wifi3|probe:0,1,50,45,51,127,htcap:012c,htagg:1b,htmcs:000000ff,extcap:0100000000000040|assoc:0,1,48,50,221(0050f2,2),45,51,127,cap:0431,htcap:012c,htagg:1b,htmcs:000000ff,extcap:0100000000000040|os:windows-phone':
+        ('', 'Nokia Lumia 635', '2.4GHz'),
+    'wifi3|probe:0,1,50,45,htcap:012c,htagg:1b,htmcs:000000ff|assoc:0,1,48,50,221(0050f2,2),45,51,127,cap:0431,htcap:012c,htagg:1b,htmcs:000000ff,extcap:0100000000000040|os:windows-phone':
         ('', 'Nokia Lumia 635', '2.4GHz'),
 
     'wifi|probe:0,1,50|assoc:0,1,50,48,221(005043,1)|os:playstation':
@@ -490,11 +535,16 @@
     'wifi|probe:0,1,50,3,45,127,221(001018,2),221(00904c,51),htcap:19bc,htagg:16,htmcs:0000ffff,extcap:00000000|assoc:0,1,33,36,48,50,45,127,221(001018,2),221(0050f2,2),htcap:19bc,htagg:16,htmcs:0000ffff,extcap:00000000|os:roku':
         ('BCM43236', 'Roku 3', '2.4GHz'),
 
-    'wifi|probe:0,1,45,191,221(001018,2),htcap:01ad,htagg:17,htmcs:0000ffff,vhtcap:0f8159b2,vhtrxmcs:0000fffa,vhttxmcs:0000fffa|assoc:0,1,33,36,48,45,191,199,221(001018,2),221(0050f2,2),htcap:01ad,htagg:17,htmcs:0000ffff,vhtcap:0f8159b2,vhtrxmcs:0000fffa,vhttxmcs:0000fffa|os:roku':
+    'wifi3|probe:0,1,45,191,221(001018,2),htcap:01ad,htagg:17,htmcs:0000ffff,vhtcap:0f8159b2,vhtrxmcs:0000fffa,vhttxmcs:0000fffa|assoc:0,1,33,36,48,45,191,199,221(001018,2),221(0050f2,2),cap:0111,htcap:01ad,htagg:17,htmcs:0000ffff,vhtcap:0f8159b2,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,txpow:1109|os:roku':
         ('', 'Roku 4', '5GHz'),
-    'wifi|probe:0,1,50,3,45,221(001018,2),htcap:01ad,htagg:17,htmcs:0000ffff|assoc:0,1,50,33,36,48,45,221(001018,2),221(0050f2,2),htcap:01ad,htagg:17,htmcs:0000ffff|os:roku':
+    'wifi3|probe:0,1,50,3,45,127,221(001018,2),htcap:01ad,htagg:17,htmcs:0000ffff,extcap:0000000000000040|assoc:0,1,50,33,36,48,45,221(001018,2),221(0050f2,2),cap:0431,htcap:01ad,htagg:17,htmcs:0000ffff,txpow:1209|os:roku':
         ('', 'Roku 4', '2.4GHz'),
 
+    'wifi3|probe:0,1,50,3,45,htcap:0020,htagg:01,htmcs:000000ff|assoc:0,1,50,45,61,48,221(0050f2,2),cap:0411,htcap:0020,htagg:01,htmcs:000000ff|oui:samsung':
+        ('', 'Samsung Galaxy Mini', '2.4GHz'),
+    'wifi3|probe:0,1,50,3,45,htcap:0020,htagg:01,htmcs:000000ff|assoc:0,1,50,45,61,48,221(0050f2,2),cap:0411,htcap:0020,htagg:01,htmcs:000000ff|oui:murata':
+        ('', 'Samsung Galaxy Mini', '2.4GHz'),
+
     'wifi|probe:0,1,45,221(0050f2,4),221(001018,2),221(00904c,51),htcap:010c,wps:Galaxy_Nexus|assoc:0,1,33,36,48,45,221(001018,2),221(00904c,51),221(0050f2,2),htcap:010c':
         ('BCM4330', 'Samsung Galaxy Nexus', '5GHz'),
     'wifi|probe:0,1,50,45,3,221(001018,2),221(00904c,51),htcap:110c,htagg:19,htmcs:000000ff|assoc:0,1,33,36,48,50,45,221(001018,2),221(00904c,51),221(0050f2,2),htcap:110c,htagg:19,htmcs:000000ff|oui:samsung':
@@ -502,9 +552,9 @@
     'wifi|probe:0,1,50,45,3,221(0050f2,4),221(001018,2),221(00904c,51),htcap:110c,wps:Galaxy_Nexus|assoc:0,1,33,36,48,50,45,221(001018,2),221(00904c,51),221(0050f2,2),htcap:110c':
         ('BCM4330', 'Samsung Galaxy Nexus', '2.4GHz'),
 
-    'wifi3|probe:0,1,45,221(001018,2),221(00904c,51),htcap:000c,htagg:19,htmcs:000000ff|assoc:0,1,33,36,48,45,221(001018,2),221(00904c,51),221(0050f2,2),cap:0011,htcap:000c,htagg:19,htmcs:000000ff,txpow:0f09|oui:samsung':
+    'wifi3|probe:0,1,45,3,221(001018,2),221(00904c,51),htcap:000c,htagg:19,htmcs:000000ff|assoc:0,1,33,36,48,45,221(001018,2),221(00904c,51),221(0050f2,2),cap:0111,htcap:000c,htagg:19,htmcs:000000ff,txpow:0f09|oui:samsung':
         ('', 'Samsung Galaxy Note', '5GHz'),
-    'wifi3|probe:0,1,45,221(001018,2),221(00904c,51),htcap:000c,htagg:19,htmcs:000000ff|assoc:0,1,33,36,48,45,221(001018,2),221(00904c,51),221(0050f2,2),cap:0011,htcap:000c,htagg:19,htmcs:000000ff,txpow:0f09|oui:murata':
+    'wifi3|probe:0,1,45,3,221(001018,2),221(00904c,51),htcap:000c,htagg:19,htmcs:000000ff|assoc:0,1,33,36,48,45,221(001018,2),221(00904c,51),221(0050f2,2),cap:0111,htcap:000c,htagg:19,htmcs:000000ff,txpow:0f09|oui:murata':
         ('', 'Samsung Galaxy Note', '5GHz'),
     'wifi3|probe:0,1,50,45,3,221(001018,2),221(00904c,51),htcap:100c,htagg:19,htmcs:000000ff|assoc:0,1,33,36,48,50,45,221(001018,2),221(00904c,51),221(0050f2,2),cap:0431,htcap:100c,htagg:19,htmcs:000000ff,txpow:1409|oui:samsung':
         ('', 'Samsung Galaxy Note', '2.4GHz'),
@@ -532,6 +582,10 @@
         ('BCM4335', 'Samsung Galaxy Note 3', '5GHz'),
     'wifi3|probe:0,1,3,45,127,191,221(001018,2),221(00904c,51),221(00904c,4),221(0050f2,8),htcap:016f,htagg:17,htmcs:000000ff,vhtcap:0f805932,vhtrxmcs:0000fffe,vhttxmcs:0000fffe,extcap:0000080000000040|assoc:0,1,33,36,48,45,127,191,221(001018,2),221(00904c,4),221(0050f2,2),cap:0011,htcap:016f,htagg:17,htmcs:000000ff,vhtcap:0f805932,vhtrxmcs:0000fffe,vhttxmcs:0000fffe,txpow:e008,extcap:0000000000000040|oui:murata':
         ('BCM4335', 'Samsung Galaxy Note 3', '5GHz'),
+    'wifi3|probe:0,1,45,127,191,221(001018,2),221(00904c,51),221(00904c,4),221(0050f2,8),htcap:016f,htagg:17,htmcs:000000ff,vhtcap:0f805932,vhtrxmcs:0000fffe,vhttxmcs:0000fffe,extcap:0000080000000040|assoc:0,1,33,36,48,45,127,191,221(001018,2),221(00904c,4),221(0050f2,2),cap:0011,htcap:016f,htagg:17,htmcs:000000ff,vhtcap:0f805932,vhtrxmcs:0000fffe,vhttxmcs:0000fffe,txpow:e008,extcap:0000000000000040|oui:samsung':
+        ('BCM4335', 'Samsung Galaxy Note 3', '5GHz'),
+    'wifi3|probe:0,1,45,127,191,221(001018,2),221(00904c,51),221(00904c,4),221(0050f2,8),htcap:016f,htagg:17,htmcs:000000ff,vhtcap:0f805932,vhtrxmcs:0000fffe,vhttxmcs:0000fffe,extcap:0000080000000040|assoc:0,1,33,36,48,45,127,191,221(001018,2),221(00904c,4),221(0050f2,2),cap:0011,htcap:016f,htagg:17,htmcs:000000ff,vhtcap:0f805932,vhtrxmcs:0000fffe,vhttxmcs:0000fffe,txpow:e008,extcap:0000000000000040|oui:murata':
+        ('BCM4335', 'Samsung Galaxy Note 3', '5GHz'),
     'wifi3|probe:0,1,50,3,45,127,221(001018,2),221(00904c,51),221(00904c,4),221(0050f2,8),htcap:112d,htagg:17,htmcs:000000ff,extcap:0000080000000040|assoc:0,1,33,36,48,50,45,221(001018,2),221(0050f2,2),cap:0431,htcap:112d,htagg:17,htmcs:000000ff,txpow:1208|oui:samsung':
         ('BCM4335', 'Samsung Galaxy Note 3', '2.4GHz'),
     'wifi3|probe:0,1,50,3,45,127,221(001018,2),221(00904c,51),221(00904c,4),221(0050f2,8),htcap:112d,htagg:17,htmcs:000000ff,extcap:0000080000000040|assoc:0,1,33,36,48,50,45,221(001018,2),221(0050f2,2),cap:0431,htcap:112d,htagg:17,htmcs:000000ff,txpow:1208|oui:murata':
@@ -558,10 +612,14 @@
     'wifi3|probe:0,1,50,3,45,127,221(506f9a,16),221(00904c,4),221(0050f2,8),221(001018,2),htcap:002d,htagg:17,htmcs:0000ffff,intwrk:0f,extcap:0000088001400040|assoc:0,1,50,33,36,48,70,45,127,221(001018,2),221(0050f2,2),cap:0431,htcap:002d,htagg:17,htmcs:0000ffff,txpow:1509,intwrk:0f,extcap:0000088001400040|oui:murata':
         ('BCM4358', 'Samsung Galaxy Note 4', '2.4GHz'),
 
-    'wifi|probe:0,1,45,221(001018,2),221(00904c,51),htcap:000c|assoc:0,1,33,36,48,45,221(001018,2),221(00904c,51),221(0050f2,2),htcap:000c|oui:samsung':
-        ('BCM4330', 'Samsung Galaxy S2 or Galaxy Note', ''),
-    'wifi|probe:0,1,45,221(001018,2),221(00904c,51),htcap:000c|assoc:0,1,33,36,48,45,221(001018,2),221(00904c,51),221(0050f2,2),htcap:000c|oui:samsung':
-        ('BCM4330', 'Samsung Galaxy S2 or Galaxy Note', ''),
+    'wifi3|probe:0,1,45,127,107,191,221(506f9a,16),221(00904c,4),221(0050f2,8),221(001018,2),htcap:01ef,htagg:17,htmcs:0000ffff,vhtcap:0f9118b2,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,intwrk:0f,extcap:00080f8401400040|assoc:0,1,33,36,48,45,127,191,199,221(00904c,4),221(001018,2),221(0050f2,2),cap:0011,htcap:01ef,htagg:17,htmcs:0000ffff,vhtcap:0f9118b2,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,txpow:1102,extcap:0000000000000040|oui:samsung':
+        ('BCM4359', 'Samsung Galaxy Note 5', '5GHz'),
+    'wifi3|probe:0,1,45,127,107,191,221(506f9a,16),221(00904c,4),221(0050f2,8),221(001018,2),htcap:01ef,htagg:17,htmcs:0000ffff,vhtcap:0f9118b2,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,intwrk:0f,extcap:00080f8401400040|assoc:0,1,33,36,48,45,127,191,199,221(00904c,4),221(001018,2),221(0050f2,2),cap:0011,htcap:01ef,htagg:17,htmcs:0000ffff,vhtcap:0f9118b2,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,txpow:1102,extcap:0000000000000040|oui:murata':
+        ('BCM4359', 'Samsung Galaxy Note 5', '5GHz'),
+    'wifi3|probe:0,1,50,3,45,127,107,221(506f9a,16),221(00904c,4),221(0050f2,8),221(001018,2),htcap:01ad,htagg:17,htmcs:0000ffff,intwrk:0f,extcap:00080f8401400040|assoc:0,1,50,33,36,48,45,221(001018,2),221(0050f2,2),cap:0431,htcap:01ad,htagg:17,htmcs:0000ffff,txpow:1202|oui:samsung':
+        ('BCM4359', 'Samsung Galaxy Note 5', '2.4GHz'),
+    'wifi3|probe:0,1,50,3,45,127,107,221(506f9a,16),221(00904c,4),221(0050f2,8),221(001018,2),htcap:01ad,htagg:17,htmcs:0000ffff,intwrk:0f,extcap:00080f8401400040|assoc:0,1,50,33,36,48,45,221(001018,2),221(0050f2,2),cap:0431,htcap:01ad,htagg:17,htmcs:0000ffff,txpow:1202|oui:murata':
+        ('BCM4359', 'Samsung Galaxy Note 5', '2.4GHz'),
 
     'wifi|probe:0,1,45,221(001018,2),221(00904c,51),htcap:0062|assoc:0,1,33,36,48,45,221(001018,2),221(00904c,51),221(0050f2,2),htcap:0062|oui:samsung':
         ('BCM4334', 'Samsung Galaxy S3', '5GHz'),
@@ -572,45 +630,61 @@
     'wifi|probe:0,1,50,45,3,221(001018,2),221(00904c,51),htcap:1020|assoc:0,1,33,36,48,50,45,221(001018,2),221(00904c,51),221(0050f2,2),htcap:1020|oui:murata':
         ('BCM4334', 'Samsung Galaxy S3', '2.4GHz'),
 
+    'wifi3|probe:0,1,45,127,191,221(001018,2),221(00904c,51),221(00904c,4),221(0050f2,8),htcap:006f,htagg:17,htmcs:000000ff,vhtcap:0f805832,vhtrxmcs:0000fffe,vhttxmcs:0000fffe,extcap:0000080000000040|assoc:0,1,33,36,48,45,127,191,221(001018,2),221(00904c,4),221(0050f2,2),cap:1111,htcap:006f,htagg:17,htmcs:000000ff,vhtcap:0f805832,vhtrxmcs:0000fffe,vhttxmcs:0000fffe,txpow:e001,extcap:0000000000000040|oui:samsung':
+        ('BCM4335', 'Samsung Galaxy S4', '5GHz'),
+    'wifi3|probe:0,1,45,127,191,221(001018,2),221(00904c,51),221(00904c,4),221(0050f2,8),htcap:006f,htagg:17,htmcs:000000ff,vhtcap:0f805832,vhtrxmcs:0000fffe,vhttxmcs:0000fffe,extcap:0000080000000040|assoc:0,1,33,36,48,45,127,191,221(001018,2),221(00904c,4),221(0050f2,2),cap:1111,htcap:006f,htagg:17,htmcs:000000ff,vhtcap:0f805832,vhtrxmcs:0000fffe,vhttxmcs:0000fffe,txpow:e001,extcap:0000000000000040|oui:murata':
+        ('BCM4335', 'Samsung Galaxy S4', '5GHz'),
     'wifi3|probe:0,1,45,127,107,191,221(506f9a,16),221(001018,2),221(00904c,51),221(00904c,4),221(0050f2,8),htcap:006f,htagg:17,htmcs:000000ff,vhtcap:0f805832,vhtrxmcs:0000fffe,vhttxmcs:0000fffe,intwrk:0f,extcap:0000088000400040|assoc:0,1,33,36,48,45,127,107,191,221(001018,2),221(00904c,4),221(0050f2,2),cap:0011,htcap:006f,htagg:17,htmcs:000000ff,vhtcap:0f805832,vhtrxmcs:0000fffe,vhttxmcs:0000fffe,txpow:e001,intwrk:0f,extcap:0000008000400040|oui:samsung':
         ('BCM4335', 'Samsung Galaxy S4', '5GHz'),
     'wifi3|probe:0,1,45,127,107,191,221(506f9a,16),221(001018,2),221(00904c,51),221(00904c,4),221(0050f2,8),htcap:006f,htagg:17,htmcs:000000ff,vhtcap:0f805832,vhtrxmcs:0000fffe,vhttxmcs:0000fffe,intwrk:0f,extcap:0000088000400040|assoc:0,1,33,36,48,45,127,107,191,221(001018,2),221(00904c,4),221(0050f2,2),cap:0011,htcap:006f,htagg:17,htmcs:000000ff,vhtcap:0f805832,vhtrxmcs:0000fffe,vhttxmcs:0000fffe,txpow:e001,intwrk:0f,extcap:0000008000400040|oui:murata':
         ('BCM4335', 'Samsung Galaxy S4', '5GHz'),
-    'wifi3|probe:0,1,50,3,45,127,107,221(506f9a,16),221(001018,2),221(00904c,51),221(00904c,4),221(0050f2,8),htcap:102d,htagg:17,htmcs:000000ff,intwrk:0f,extcap:0000088000400040|assoc:0,1,33,36,48,50,45,127,107,221(001018,2),221(0050f2,2),cap:0431,htcap:102d,htagg:17,htmcs:000000ff,txpow:1201,intwrk:0f,extcap:00000080|oui:samsung':
+    'wifi3|probe:0,1,3,45,127,107,191,221(506f9a,16),221(001018,2),221(00904c,51),221(00904c,4),221(0050f2,8),htcap:006f,htagg:17,htmcs:000000ff,vhtcap:0f805832,vhtrxmcs:0000fffe,vhttxmcs:0000fffe,intwrk:0f,extcap:0000088000400040|assoc:0,1,33,36,48,45,127,107,191,221(001018,2),221(00904c,4),221(0050f2,2),cap:0011,htcap:006f,htagg:17,htmcs:000000ff,vhtcap:0f805832,vhtrxmcs:0000fffe,vhttxmcs:0000fffe,txpow:e001,intwrk:0f,extcap:0000008000400040|oui:samsung':
+        ('BCM4335', 'Samsung Galaxy S4', '5GHz'),
+    'wifi3|probe:0,1,3,45,127,107,191,221(506f9a,16),221(001018,2),221(00904c,51),221(00904c,4),221(0050f2,8),htcap:006f,htagg:17,htmcs:000000ff,vhtcap:0f805832,vhtrxmcs:0000fffe,vhttxmcs:0000fffe,intwrk:0f,extcap:0000088000400040|assoc:0,1,33,36,48,45,127,107,191,221(001018,2),221(00904c,4),221(0050f2,2),cap:0011,htcap:006f,htagg:17,htmcs:000000ff,vhtcap:0f805832,vhtrxmcs:0000fffe,vhttxmcs:0000fffe,txpow:e001,intwrk:0f,extcap:0000008000400040|oui:murata':
+        ('BCM4335', 'Samsung Galaxy S4', '5GHz'),
+    'wifi3|probe:0,1,50,3,45,127,107,221(506f9a,16),221(001018,2),221(00904c,51),221(00904c,4),221(0050f2,8),htcap:102d,htagg:17,htmcs:000000ff,intwrk:0f,extcap:0000088000400040|assoc:0,1,33,36,48,50,45,127,107,221(001018,2),221(0050f2,2),cap:0431,htcap:102d,htagg:17,htmcs:000000ff,txpow:1201,intwrk:0f,extcap:000000800040|oui:samsung':
         ('BCM4335', 'Samsung Galaxy S4', '2.4GHz'),
-    'wifi3|probe:0,1,50,3,45,127,107,221(506f9a,16),221(001018,2),221(00904c,51),221(00904c,4),221(0050f2,8),htcap:102d,htagg:17,htmcs:000000ff,intwrk:0f,extcap:0000088000400040|assoc:0,1,33,36,48,50,45,127,107,221(001018,2),221(0050f2,2),cap:0431,htcap:102d,htagg:17,htmcs:000000ff,txpow:1201,intwrk:0f,extcap:00000080|oui:murata':
+    'wifi3|probe:0,1,50,3,45,127,107,221(506f9a,16),221(001018,2),221(00904c,51),221(00904c,4),221(0050f2,8),htcap:102d,htagg:17,htmcs:000000ff,intwrk:0f,extcap:0000088000400040|assoc:0,1,33,36,48,50,45,127,107,221(001018,2),221(0050f2,2),cap:0431,htcap:102d,htagg:17,htmcs:000000ff,txpow:1201,intwrk:0f,extcap:000000800040|oui:murata':
         ('BCM4335', 'Samsung Galaxy S4', '2.4GHz'),
 
     'wifi3|probe:0,1,45,127,107,191,221(506f9a,16),221(00904c,4),221(0050f2,8),221(001018,2),htcap:006f,htagg:17,htmcs:0000ffff,vhtcap:0f815832,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,intwrk:0f,extcap:0000088001400040|assoc:0,1,33,36,48,45,127,107,191,221(00904c,4),221(001018,2),221(0050f2,2),cap:0011,htcap:006f,htagg:17,htmcs:0000ffff,vhtcap:0f815832,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,txpow:e20b,intwrk:0f,extcap:0000088001400040|oui:samsung':
         ('BCM4354', 'Samsung Galaxy S5', '5GHz'),
     'wifi3|probe:0,1,45,127,107,191,221(506f9a,16),221(00904c,4),221(0050f2,8),221(001018,2),htcap:006f,htagg:17,htmcs:0000ffff,vhtcap:0f815832,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,intwrk:0f,extcap:0000088001400040|assoc:0,1,33,36,48,45,127,107,191,221(00904c,4),221(001018,2),221(0050f2,2),cap:0011,htcap:006f,htagg:17,htmcs:0000ffff,vhtcap:0f815832,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,txpow:e20b,intwrk:0f,extcap:0000088001400040|oui:murata':
         ('BCM4354', 'Samsung Galaxy S5', '5GHz'),
-    'wifi3|probe:0,1,50,3,45,127,107,221(506f9a,16),221(00904c,4),221(0050f2,8),221(001018,2),htcap:002d,htagg:17,htmcs:0000ffff,intwrk:0f,extcap:00000880|assoc:0,1,50,33,36,48,45,127,107,221(001018,2),221(0050f2,2),cap:0431,htcap:002d,htagg:17,htmcs:0000ffff,txpow:1209,intwrk:0f,extcap:00000880|oui:samsung':
+    'wifi3|probe:0,1,50,3,45,127,107,221(506f9a,16),221(00904c,4),221(0050f2,8),221(001018,2),htcap:002d,htagg:17,htmcs:0000ffff,intwrk:0f,extcap:000008800140|assoc:0,1,50,33,36,48,45,127,107,221(001018,2),221(0050f2,2),cap:0431,htcap:002d,htagg:17,htmcs:0000ffff,txpow:1209,intwrk:0f,extcap:000008800140|oui:samsung':
         ('BCM4354', 'Samsung Galaxy S5', '2.4GHz'),
-    'wifi3|probe:0,1,50,3,45,127,107,221(506f9a,16),221(00904c,4),221(0050f2,8),221(001018,2),htcap:002d,htagg:17,htmcs:0000ffff,intwrk:0f,extcap:00000880|assoc:0,1,50,33,36,48,45,127,107,221(001018,2),221(0050f2,2),cap:0431,htcap:002d,htagg:17,htmcs:0000ffff,txpow:1209,intwrk:0f,extcap:00000880|oui:murata':
+    'wifi3|probe:0,1,50,3,45,127,107,221(506f9a,16),221(00904c,4),221(0050f2,8),221(001018,2),htcap:002d,htagg:17,htmcs:0000ffff,intwrk:0f,extcap:000008800140|assoc:0,1,50,33,36,48,45,127,107,221(001018,2),221(0050f2,2),cap:0431,htcap:002d,htagg:17,htmcs:0000ffff,txpow:1209,intwrk:0f,extcap:000008800140|oui:murata':
+        ('BCM4354', 'Samsung Galaxy S5', '2.4GHz'),
+    'wifi3|probe:0,1,50,3,45,127,107,221(506f9a,16),221(00904c,4),221(0050f2,8),221(001018,2),htcap:002d,htagg:17,htmcs:0000ffff,intwrk:0f,extcap:0000088001400040|assoc:0,1,50,33,36,48,45,127,107,221(001018,2),221(0050f2,2),cap:0431,htcap:002d,htagg:17,htmcs:0000ffff,txpow:1209,intwrk:0f,extcap:000008800140|oui:samsung':
+        ('BCM4354', 'Samsung Galaxy S5', '2.4GHz'),
+    'wifi3|probe:0,1,50,3,45,127,107,221(506f9a,16),221(00904c,4),221(0050f2,8),221(001018,2),htcap:002d,htagg:17,htmcs:0000ffff,intwrk:0f,extcap:0000088001400040|assoc:0,1,50,33,36,48,45,127,107,221(001018,2),221(0050f2,2),cap:0431,htcap:002d,htagg:17,htmcs:0000ffff,txpow:1209,intwrk:0f,extcap:000008800140|oui:murata':
         ('BCM4354', 'Samsung Galaxy S5', '2.4GHz'),
 
-    'wifi|probe:0,1,45,127,191,221(00904c,4),221(0050f2,8),221(001018,2),htcap:006f,htagg:17,htmcs:0000ffff,vhtcap:0f815832,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,extcap:80080000|assoc:0,1,33,36,45,127,191,221(00904c,4),221(001018,2),221(0050f2,2),htcap:006f,htagg:17,htmcs:0000ffff,vhtcap:0f815832,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,extcap:80080000|oui:samsung':
+    'wifi3|probe:0,1,45,127,191,221(00904c,4),221(0050f2,8),221(001018,2),htcap:006f,htagg:17,htmcs:0000ffff,vhtcap:0f815832,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,extcap:0000088001400040|assoc:0,1,33,36,48,45,127,191,221(00904c,4),221(001018,2),221(0050f2,2),cap:1111,htcap:006f,htagg:17,htmcs:0000ffff,vhtcap:0f815832,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,txpow:e002,extcap:0000088001400040|oui:samsung':
         ('BCM4358', 'Samsung Galaxy S6', '5GHz'),
-    'wifi|probe:0,1,45,127,191,221(00904c,4),221(0050f2,8),221(001018,2),htcap:006f,htagg:17,htmcs:0000ffff,vhtcap:0f815832,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,extcap:80080000|assoc:0,1,33,36,45,127,191,221(00904c,4),221(001018,2),221(0050f2,2),htcap:006f,htagg:17,htmcs:0000ffff,vhtcap:0f815832,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,extcap:80080000|oui:murata':
+    'wifi3|probe:0,1,45,127,191,221(00904c,4),221(0050f2,8),221(001018,2),htcap:006f,htagg:17,htmcs:0000ffff,vhtcap:0f815832,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,extcap:0000088001400040|assoc:0,1,33,36,48,45,127,191,221(00904c,4),221(001018,2),221(0050f2,2),cap:1111,htcap:006f,htagg:17,htmcs:0000ffff,vhtcap:0f815832,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,txpow:e002,extcap:0000088001400040|oui:murata':
         ('BCM4358', 'Samsung Galaxy S6', '5GHz'),
-    'wifi|probe:0,1,45,127,191,221(00904c,4),221(0050f2,8),221(001018,2),htcap:006f,htagg:17,htmcs:0000ffff,vhtcap:0f815832,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,extcap:80080000|assoc:0,1,33,36,48,45,127,191,221(00904c,4),221(001018,2),221(0050f2,2),htcap:006f,htagg:17,htmcs:0000ffff,vhtcap:0f815832,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,extcap:80080000|oui:samsung':
+    'wifi3|probe:0,1,45,127,191,221(00904c,4),221(0050f2,8),221(001018,2),htcap:006f,htagg:17,htmcs:0000ffff,vhtcap:0f815832,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,extcap:0000088001400040|assoc:0,1,33,36,45,127,191,221(00904c,4),221(001018,2),221(0050f2,2),cap:1111,htcap:006f,htagg:17,htmcs:0000ffff,vhtcap:0f815832,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,txpow:e002,extcap:0000088001400040|oui:samsung':
         ('BCM4358', 'Samsung Galaxy S6', '5GHz'),
-    'wifi|probe:0,1,45,127,191,221(00904c,4),221(0050f2,8),221(001018,2),htcap:006f,htagg:17,htmcs:0000ffff,vhtcap:0f815832,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,extcap:80080000|assoc:0,1,33,36,48,45,127,191,221(00904c,4),221(001018,2),221(0050f2,2),htcap:006f,htagg:17,htmcs:0000ffff,vhtcap:0f815832,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,extcap:80080000|oui:murata':
+    'wifi3|probe:0,1,45,127,191,221(00904c,4),221(0050f2,8),221(001018,2),htcap:006f,htagg:17,htmcs:0000ffff,vhtcap:0f815832,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,extcap:0000088001400040|assoc:0,1,33,36,45,127,191,221(00904c,4),221(001018,2),221(0050f2,2),cap:1111,htcap:006f,htagg:17,htmcs:0000ffff,vhtcap:0f815832,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,txpow:e002,extcap:0000088001400040|oui:murata':
         ('BCM4358', 'Samsung Galaxy S6', '5GHz'),
-    'wifi|probe:0,1,50,3,45,127,221(00904c,4),221(0050f2,8),221(001018,2),htcap:002d,htagg:17,htmcs:0000ffff,extcap:80080000|assoc:0,1,50,33,36,48,45,127,221(001018,2),221(0050f2,2),htcap:002d,htagg:17,htmcs:0000ffff,extcap:80080000|oui:samsung':
+    'wifi3|probe:0,1,50,3,45,127,221(00904c,4),221(0050f2,8),221(001018,2),htcap:002d,htagg:17,htmcs:0000ffff,extcap:0000088001400040|assoc:0,1,50,33,36,45,127,221(001018,2),221(0050f2,2),cap:1431,htcap:002d,htagg:17,htmcs:0000ffff,txpow:1402,extcap:0000088001400040|oui:samsung':
         ('BCM4358', 'Samsung Galaxy S6', '2.4GHz'),
-    'wifi|probe:0,1,50,3,45,127,221(00904c,4),221(0050f2,8),221(001018,2),htcap:002d,htagg:17,htmcs:0000ffff,extcap:80080000|assoc:0,1,50,33,36,48,45,127,221(001018,2),221(0050f2,2),htcap:002d,htagg:17,htmcs:0000ffff,extcap:80080000|oui:murata':
+    'wifi3|probe:0,1,50,3,45,127,221(00904c,4),221(0050f2,8),221(001018,2),htcap:002d,htagg:17,htmcs:0000ffff,extcap:0000088001400040|assoc:0,1,50,33,36,45,127,221(001018,2),221(0050f2,2),cap:1431,htcap:002d,htagg:17,htmcs:0000ffff,txpow:1402,extcap:0000088001400040|oui:murata':
         ('BCM4358', 'Samsung Galaxy S6', '2.4GHz'),
-    'wifi|probe:0,1,50,3,45,127,221(00904c,4),221(0050f2,8),221(001018,2),htcap:002d,htagg:17,htmcs:0000ffff,extcap:80080000|assoc:0,1,50,33,36,45,127,221(001018,2),221(0050f2,2),htcap:002d,htagg:17,htmcs:0000ffff,extcap:80080000|oui:samsung':
+    'wifi3|probe:0,1,50,3,45,127,221(00904c,4),221(0050f2,8),221(001018,2),htcap:002d,htagg:17,htmcs:0000ffff,extcap:0000088001400040|assoc:0,1,50,33,36,48,45,127,221(001018,2),221(0050f2,2),cap:1431,htcap:002d,htagg:17,htmcs:0000ffff,txpow:1402,extcap:0000088001400040|oui:samsung':
         ('BCM4358', 'Samsung Galaxy S6', '2.4GHz'),
-    'wifi|probe:0,1,50,3,45,127,221(00904c,4),221(0050f2,8),221(001018,2),htcap:002d,htagg:17,htmcs:0000ffff,extcap:80080000|assoc:0,1,50,33,36,45,127,221(001018,2),221(0050f2,2),htcap:002d,htagg:17,htmcs:0000ffff,extcap:80080000|oui:murata':
+    'wifi3|probe:0,1,50,3,45,127,221(00904c,4),221(0050f2,8),221(001018,2),htcap:002d,htagg:17,htmcs:0000ffff,extcap:0000088001400040|assoc:0,1,50,33,36,48,45,127,221(001018,2),221(0050f2,2),cap:1431,htcap:002d,htagg:17,htmcs:0000ffff,txpow:1402,extcap:0000088001400040|oui:murata':
         ('BCM4358', 'Samsung Galaxy S6', '2.4GHz'),
 
     'wifi3|probe:0,1,45,50,htcap:0162,htagg:03,htmcs:00000000|assoc:0,1,48,127,221(0050f2,2),45,cap:0011,htcap:016e,htagg:03,htmcs:000000ff,extcap:0400000000000140|oui:samsung':
         ('Marvell_88W8787', 'Samsung Galaxy Tab 3', '5GHz'),
     'wifi3|probe:0,1,45,50,htcap:0162,htagg:03,htmcs:00000000|assoc:0,1,48,127,221(0050f2,2),45,cap:0011,htcap:016e,htagg:03,htmcs:000000ff,extcap:0400000000000140|oui:murata':
         ('Marvell_88W8787', 'Samsung Galaxy Tab 3', '5GHz'),
+    'wifi3|probe:0,1,45,50,htcap:0162,htagg:03,htmcs:00000000|assoc:0,1,33,36,48,127,221(0050f2,2),45,cap:0111,htcap:016e,htagg:03,htmcs:000000ff,txpow:1208,extcap:0400000000000140|oui:samsung':
+        ('Marvell_88W8787', 'Samsung Galaxy Tab 3', '5GHz'),
+    'wifi3|probe:0,1,45,50,htcap:0162,htagg:03,htmcs:00000000|assoc:0,1,33,36,48,127,221(0050f2,2),45,cap:0111,htcap:016e,htagg:03,htmcs:000000ff,txpow:1208,extcap:0400000000000140|oui:murata':
+        ('Marvell_88W8787', 'Samsung Galaxy Tab 3', '5GHz'),
     'wifi3|probe:0,1,3,45,50,htcap:0162,htagg:03,htmcs:00000000|assoc:0,1,48,50,127,221(0050f2,2),45,cap:0411,htcap:012c,htagg:03,htmcs:000000ff,extcap:0000000000000140|oui:samsung':
         ('Marvell_88W8787', 'Samsung Galaxy Tab 3', '2.4GHz'),
     'wifi3|probe:0,1,3,45,50,htcap:0162,htagg:03,htmcs:00000000|assoc:0,1,48,50,127,221(0050f2,2),45,cap:0411,htcap:012c,htagg:03,htmcs:000000ff,extcap:0000000000000140|oui:murata':
@@ -629,29 +703,32 @@
         ('BCM4330', 'Samsung Galaxy Tab 10.1', '5GHz'),
     'wifi3|probe:0,1,45,221(0050f2,4),221(001018,2),221(00904c,51),htcap:000c,htagg:19,htmcs:000000ff,wps:_|assoc:0,1,33,36,48,45,221(001018,2),221(00904c,51),221(0050f2,2),cap:0011,htcap:000c,htagg:19,htmcs:000000ff,txpow:0c0a|oui:murata':
         ('BCM4330', 'Samsung Galaxy Tab 10.1', '5GHz'),
+    'wifi3|probe:0,1,45,3,221(0050f2,4),221(001018,2),221(00904c,51),htcap:000c,htagg:19,htmcs:000000ff,wps:_|assoc:0,1,33,36,48,45,221(001018,2),221(00904c,51),221(0050f2,2),cap:0111,htcap:000c,htagg:19,htmcs:000000ff,txpow:0c0a|oui:samsung':
+        ('BCM4330', 'Samsung Galaxy Tab 10.1', '5GHz'),
+    'wifi3|probe:0,1,45,3,221(0050f2,4),221(001018,2),221(00904c,51),htcap:000c,htagg:19,htmcs:000000ff,wps:_|assoc:0,1,33,36,48,45,221(001018,2),221(00904c,51),221(0050f2,2),cap:0111,htcap:000c,htagg:19,htmcs:000000ff,txpow:0c0a|oui:murata':
+        ('BCM4330', 'Samsung Galaxy Tab 10.1', '5GHz'),
     'wifi3|probe:0,1,50,45,3,221(0050f2,4),221(001018,2),221(00904c,51),htcap:100c,htagg:19,htmcs:000000ff,wps:_|assoc:0,1,33,36,48,50,45,221(001018,2),221(00904c,51),221(0050f2,2),cap:0431,htcap:100c,htagg:19,htmcs:000000ff,txpow:0f0a|oui:samsung':
         ('BCM4330', 'Samsung Galaxy Tab 10.1', '2.4GHz'),
     'wifi3|probe:0,1,50,45,3,221(0050f2,4),221(001018,2),221(00904c,51),htcap:100c,htagg:19,htmcs:000000ff,wps:_|assoc:0,1,33,36,48,50,45,221(001018,2),221(00904c,51),221(0050f2,2),cap:0431,htcap:100c,htagg:19,htmcs:000000ff,txpow:0f0a|oui:murata':
         ('BCM4330', 'Samsung Galaxy Tab 10.1', '2.4GHz'),
 
-    'wifi|probe:0,1,45,htcap:11ee,htagg:02,htmcs:0000ffff|assoc:0,1,45,127,33,36,48,221(0050f2,2),htcap:11ee,htagg:02,htmcs:0000ffff|os:samsungtv':
+    'wifi3|probe:0,1,45,htcap:11ee,htagg:02,htmcs:0000ffff|assoc:0,1,45,127,33,36,48,221(0050f2,2),cap:0111,htcap:11ee,htagg:02,htmcs:0000ffff,txpow:1100,extcap:01|os:samsungtv':
         ('', 'Samsung Smart TV', '5GHz'),
-    'wifi|probe:0,1,50,45,htcap:01ac,htagg:02,htmcs:0000ffff|assoc:0,1,50,45,127,48,221(0050f2,2),htcap:01ac,htagg:02,htmcs:0000ffff|os:samsungtv':
+    'wifi3|probe:0,1,50,45,htcap:01ac,htagg:02,htmcs:0000ffff|assoc:0,1,50,45,127,48,221(0050f2,2),cap:0411,htcap:01ac,htagg:02,htmcs:0000ffff,extcap:01|os:samsungtv':
         ('', 'Samsung Smart TV', '2.4GHz'),
 
-    'wifi|probe:0,1,50,45,221(001018,2),221(00904c,51),htcap:182c,htagg:1b,htmcs:000000ff|assoc:0,1,33,36,48,50,45,221(001018,2),221(00904c,51),221(0050f2,2),htcap:182c,htagg:1b,htmcs:000000ff|oui:sony':
-        ('', 'Sony Ericsson Play R800x', '2.4GHz'),
-
-    'wifi|probe:0,1,3,45,221(0050f2,8),191,htcap:016e,htagg:03,htmcs:000000ff,vhtcap:31800120,vhtrxmcs:0000fffc,vhttxmcs:0000fffc|assoc:0,1,33,36,48,70,45,221(0050f2,2),127,htcap:012c,htagg:03,htmcs:000000ff,extcap:020a0000|oui:sony':
+    'wifi3|probe:0,1,3,45,221(0050f2,8),191,htcap:016e,htagg:03,htmcs:000000ff,vhtcap:31800120,vhtrxmcs:0000fffc,vhttxmcs:0000fffc|assoc:0,1,33,36,48,70,45,221(0050f2,2),127,cap:0011,htcap:012c,htagg:03,htmcs:000000ff|oui:sony':
         ('WCN3680', 'Sony Xperia Z Ultra', '5GHz'),
-    'wifi|probe:0,1,50,3,45,221(0050f2,8),htcap:012c,htagg:03,htmcs:000000ff|assoc:0,1,50,33,48,70,45,221(0050f2,2),127,htcap:012c,htagg:03,htmcs:000000ff,extcap:020a0000|oui:sony':
+    'wifi3|probe:0,1,3,45,221(0050f2,8),191,htcap:016e,htagg:03,htmcs:000000ff,vhtcap:31800120,vhtrxmcs:0000fffc,vhttxmcs:0000fffc|assoc:0,1,48,45,221(0050f2,2),cap:0011,htcap:012c,htagg:03,htmcs:000000ff|oui:sony':
+        ('WCN3680', 'Sony Xperia Z Ultra', '5GHz'),
+    'wifi3|probe:0,1,50,3,45,221(0050f2,8),htcap:012c,htagg:03,htmcs:000000ff|assoc:0,1,50,33,48,70,45,221(0050f2,2),127,cap:1411,htcap:012c,htagg:03,htmcs:000000ff,txpow:170d,extcap:00000a0200000000|oui:sony':
         ('WCN3680', 'Sony Xperia Z Ultra', '2.4GHz'),
-    'wifi|probe:0,1,50,45,htcap:016e,htagg:03,htmcs:000000ff|assoc:0,1,50,33,48,70,45,221(0050f2,2),127,htcap:012c,htagg:03,htmcs:000000ff,extcap:020a0000|oui:sony':
+    'wifi3|probe:0,1,50,45,htcap:012c,htagg:03,htmcs:000000ff|assoc:0,1,50,33,48,70,45,221(0050f2,2),127,cap:1411,htcap:012c,htagg:03,htmcs:000000ff,txpow:170d,extcap:00000a0200000000|oui:sony':
         ('WCN3680', 'Sony Xperia Z Ultra', '2.4GHz'),
 
-    'wifi|probe:0,1,45,127,107,191,221(506f9a,16),221(0050f2,8),221(001018,2),htcap:006f,htagg:17,htmcs:0000ffff,vhtcap:0f815832,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,intwrk:0f,extcap:80080000|assoc:0,1,33,36,48,70,45,127,107,191,221(001018,2),221(0050f2,2),htcap:006f,htagg:17,htmcs:0000ffff,vhtcap:0f815832,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,intwrk:0f,extcap:80080000|oui:sony':
+    'wifi3|probe:0,1,45,127,107,191,221(506f9a,16),221(0050f2,8),221(001018,2),htcap:006f,htagg:17,htmcs:0000ffff,vhtcap:0f815832,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,intwrk:0f,extcap:0000088001400040|assoc:0,1,33,36,48,70,45,127,107,191,221(001018,2),221(0050f2,2),cap:1111,htcap:006f,htagg:17,htmcs:0000ffff,vhtcap:0f815832,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,txpow:e007,intwrk:0f,extcap:0000088001400040|oui:sony':
         ('', 'Sony Xperia Z4 Tablet', '5GHz'),
-    'wifi|probe:0,1,50,3,45,127,107,221(506f9a,16),221(0050f2,8),221(001018,2),htcap:002d,htagg:17,htmcs:0000ffff,intwrk:0f,extcap:80080000|assoc:0,1,50,33,36,48,70,45,127,107,221(001018,2),221(0050f2,2),htcap:002d,htagg:17,htmcs:0000ffff,intwrk:0f,extcap:80080000|oui:sony':
+    'wifi3|probe:0,1,50,3,45,127,107,221(506f9a,16),221(0050f2,8),221(001018,2),htcap:002d,htagg:17,htmcs:0000ffff,intwrk:0f,extcap:0000088001400040|assoc:0,1,50,33,36,48,70,45,127,107,221(001018,2),221(0050f2,2),cap:1431,htcap:002d,htagg:17,htmcs:0000ffff,txpow:1307,intwrk:0f,extcap:0000088001400040|oui:sony':
         ('', 'Sony Xperia Z4 Tablet', '2.4GHz'),
 
     'wifi|probe:0,1,50,221(0050f2,4),wps:Ralink_Wireless_Linux_Client|assoc:0,1,50,45,127,221(000c43,6),221(0050f2,2),48,htcap:000c,htagg:12,htmcs:000000ff,extcap:00000001|os:visiotv':
@@ -664,7 +741,7 @@
     'wifi|probe:0,1,50,221(001018,2)|assoc:0,1,48,50,221(001018,2)|os:wii':
         ('BCM4318', 'Wii', '2.4GHz'),
 
-    'wifi|probe:0,1,50,45,3,221(00904c,51),htcap:100c|assoc:0,1,48,50,45,221(00904c,51),221(0050f2,2),htcap:100c|os:wii':
+    'wifi3|probe:0,1,50,45,3,221(00904c,51),htcap:100c,htagg:19,htmcs:000000ff|assoc:0,1,48,50,45,221(00904c,51),221(0050f2,2),cap:0431,htcap:100c,htagg:19,htmcs:000000ff|os:wii':
         ('BCM43362', 'Wii-U', '2.4GHz'),
 
     'wifi|probe:0,1,50,45,3,221(001018,2),221(00904c,51),htcap:110c,htagg:19,htmcs:000000ff|assoc:0,1,48,50,45,221(001018,2),221(00904c,51),221(0050f2,2),htcap:110c,htagg:19,htmcs:000000ff|oui:withings':
@@ -675,36 +752,10 @@
     'wifi|probe:0,1,3,45,50,htcap:016e,htagg:03,htmcs:0000ffff|assoc:0,1,33,48,50,127,221(0050f2,2),45,htcap:012c,htagg:03,htmcs:0000ffff,extcap:00000000|oui:microsoft':
         ('', 'Xbox', '5GHz'),
 
-    'wifi|probe:0,1,3,45,50,htcap:058f,htagg:03,htmcs:0000ffff|assoc:0,1,48,50,221(0050f2,2),45,htcap:058d,htagg:03,htmcs:0000ffff|name:Xbox-SystemOS':
-        ('Marvell_88W8897', 'Xbox One', '5GHz'),
     'wifi|probe:0,1,3,45,50,htcap:058f,htagg:03,htmcs:0000ffff|assoc:0,1,48,50,221(0050f2,2),45,htcap:058d,htagg:03,htmcs:0000ffff|oui:microsoft':
         ('Marvell_88W8897', 'Xbox One', '5GHz'),
-    'wifi|probe:0,1,45,50,htcap:058f|assoc:0,1,48,221(0050f2,2),45,htcap:058f|name:Xbox-SystemOS':
-        ('Marvell_88W8897', 'Xbox One', '2.4GHz'),
     'wifi|probe:0,1,45,50,htcap:058f|assoc:0,1,48,221(0050f2,2),45,htcap:058f|oui:microsoft':
         ('Marvell_88W8897', 'Xbox One', '2.4GHz'),
-
-    'wifi|probe:0,1,50|assoc:0,1,33,36,50,48,221(0050f2,2),221(00904c,51),45,htcap:104c':
-        ('AR9170', '', '2.4GHz'),
-
-    'wifi|probe:0,1,45,127,191,221(001018,2),221(00904c,51),htcap:086f,vhtcap:0f815032|assoc:0,1,33,36,48,45,127,191,221(001018,2),221(00904c,51),221(0050f2,2),htcap:086f,vhtcap:0f815032':
-        ('BCM43526', '', '5GHz'),
-    'wifi|probe:0,1,50,3,45,127,221(001018,2),221(00904c,51),htcap:186f|assoc:0,1,33,36,48,50,45,127,221(001018,2),221(00904c,51),221(0050f2,2),htcap:186f':
-        ('BCM43526', '', '2.4GHz'),
-
-    'wifi|probe:0,1,45,191,htcap:0966,vhtcap:03837122|assoc:0,1,45,48,127,191,221(0050f2,2),htcap:0962,vhtcap:03800122':
-        ('Intel_7260', '', '5GHz'),
-    'wifi|probe:0,1,45,50,191,htcap:0924,vhtcap:03837122|assoc:0,1,45,48,50,127,221(0050f2,2),htcap:0920':
-        ('Intel_7260', '', '2.4GHz'),
-
-    'wifi|probe:0,1,50|assoc:0,1,50,48,221(0050f2,2),45,htcap:18ee':
-        ('Realtek?', '', '2.4GHz'),
-
-    'wifi|probe:0,1,50,45,htcap:086c|assoc:0,1,50,48,221(0050f2,2),45,127,htcap:086c':
-        ('RTL8188EU', '', '2.4GHz'),
-
-    'wifi|probe:0,1,50,45,htcap:186e|assoc:0,1,50,48,221(0050f2,2),45,127,htcap:086c':
-        ('RTL8192CU', '', '2.4GHz'),
 }
 
 
diff --git a/waveguide/clientinfo_test.py b/waveguide/clientinfo_test.py
index aa2f2b5..93d13e8 100755
--- a/waveguide/clientinfo_test.py
+++ b/waveguide/clientinfo_test.py
@@ -24,7 +24,7 @@
   clientinfo.FINGERPRINTS_DIR = 'fake/taxonomy'
   wvtest.WVPASS(';Nexus 6;' in clientinfo.taxonomize('00:00:01:00:00:01'))
   wvtest.WVPASS(';Nexus 6;' in clientinfo.taxonomize('00:00:01:00:00:01\n'))
-  v = ';MOTO-X 2013 version;'
+  v = ';Moto X;'
   wvtest.WVPASS(v in clientinfo.taxonomize('9c:d9:17:00:00:02'))
   wvtest.WVPASSEQ(clientinfo.taxonomize('00:00:22:00:00:22'), None)
 
diff --git a/waveguide/fake/taxonomy/00:00:01:00:00:01 b/waveguide/fake/taxonomy/00:00:01:00:00:01
index 1343ccf..31815eb 100644
--- a/waveguide/fake/taxonomy/00:00:01:00:00:01
+++ b/waveguide/fake/taxonomy/00:00:01:00:00:01
@@ -1 +1 @@
-wifi|probe:0,1,50,3,45,127,221(0050f2,4),221(506f9a,9),221(001018,2),htcap:002d,wps:Nexus_6|assoc:0,1,50,33,36,48,45,127,221(001018,2),221(0050f2,2),htcap:002d
+wifi3|probe:0,1,45,191,221(0050f2,4),221(506f9a,9),221(001018,2),htcap:006f,htagg:17,htmcs:0000ffff,vhtcap:0f815832,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,extcap:000008800140,wps:Nexus_6|assoc:0,1,33,36,48,45,127,191,221(001018,2),221(0050f2,2),cap:0011,htcap:006f,htagg:17,htmcs:0000ffff,vhtcap:0f815832,vhtrxmcs:0000fffa,vhttxmcs:0000fffa,txpow:e009,extcap:000008800140