cannot talk to dongle after connect

I connect to the nRF52840-MDK dongle thru the Serial Terminal (nRF52 Connectivity) it found the comm port and set the baudrate automatically. However, the terminal window constantly fills up the screen with ~/ characters. it repeats every 1 second. What I would like is detailed instructions on how to configure this dongle to be a BT 5 sniffer and read the Extended Advertising for any BT device near the dongle. It would also be helpful to filter the devices seen. Eventually I like to use Python to filter the choices and obtain the advertises data where I can parse the data received. I'm using Windows 10 pro.

Thanks.

Parents
  • Torbjorn,

    I started to look into this again. I modified your 'example_count_by_type_v2.py" to print out only selected mac addresses and the data in hex.

    I noticed at the top of this file you including SnifferAPI. Since I'm new to Python, I presume that you are including everything in the subfolder named SnifferAPI. I started looking into these files and found one named "Types.py".  I cannot find the type "AUX_SCAN_RSP" it seems that WireShark was able to extract the data I need using this type. Is it possible to include this type while scanning and see the data of this type? Let me know if this edit is simple you can send it to me or send me a new file.  

    Greatly appreciate it.

    FYI: I'll be out tomorrow (Wednesday)  and return on Monday.

    Jim D.

  • Addr =F1:4B:94:83:92:2C:01 type=7  flag=17 name="" data=1D 00 03 4C E7 02 0A 11 0E 36 00 00 FB 75 B6 69 D6 BE 89 8E 47 0A 89 09 2C 92 83 94 4B F1 B4 01 DF 05 F5
    Addr =FD:70:6A:BC:33:FC:01 type=7  flag=17 name="" data=1D 00 03 87 E7 02 0A 11 18 3E 00 00 9A B8 B7 69 D6 BE 89 8E 47 0A 89 09 FC 33 BC 6A 70 FD 53 0D 7D 27 DA
    Addr =D5:DC:9F:6C:E8:74:01 type=7  flag=17 name="" data=1D 00 03 8B E7 02 0A 11 15 35 00 00 FF C2 B7 69 D6 BE 89 8E 47 0A 89 09 74 E8 6C 9F DC D5 AB 0E A9 36 D9
    Addr =F1:4B:94:83:92:2C:01 type=7  flag=17 name="" data=1D 00 03 98 E7 02 0A 11 1B 36 00 00 8E F0 B7 69 D6 BE 89 8E 47 0A 89 09 2C 92 83 94 4B F1 38 02 8A 09 F7
    Addr =CB:D8:BD:92:4D:46:01 type=7  flag=17 name="" data=1D 00 03 B2 E7 02 0A 11 1C 34 00 00 88 73 B8 69 D6 BE 89 8E 47 0A 89 09 46 4D 92 BD D8 CB B4 0F 05 F8 57
    Addr =D8:84:97:C3:1F:A8:01 type=7  flag=17 name="" data=1D 00 03 CC E7 02 0A 11 00 36 00 00 4F FA B8 69 D6 BE 89 8E 47 0A 89 09 A8 1F C3 97 84 D8 07 01 DA B1 79
    Addr =F1:39:E9:5B:2C:18:01 type=7  flag=17 name="" data=1D 00 03 E3 E7 02 0A 11 15 40 00 00 CC 78 B9 69 D6 BE 89 8E 47 0A 89 09 18 2C 5B E9 39 F1 7C 05 B6 6B C6
    Addr =F1:4B:94:83:92:2C:01 type=7  flag=17 name="" data=1D 00 03 EA E7 02 0A 11 04 37 00 00 DD 90 B9 69 D6 BE 89 8E 47 0A 89 09 2C 92 83 94 4B F1 38 02 8A 09 F7
    Addr =CB:D8:BD:92:4D:46:01 type=7  flag=17 name="" data=1D 00 03 07 E8 02 0A 11 10 32 00 00 16 0A BA 69 D6 BE 89 8E 47 0A 89 09 46 4D 92 BD D8 CB B4 0F 05 F8 57
    Addr =D8:84:97:C3:1F:A8:01 type=7  flag=17 name="" data=1D 00 03 6B E8 02 0A 11 0B 3A 00 00 6C 3A BC 69 D6 BE 89 8E 47 0A 89 09 A8 1F C3 97 84 D8 07 01 DA B1 79
    Addr =D5:DC:9F:6C:E8:74:01 type=7  flag=17 name="" data=1D 00 03 6F E8 02 0A 11 13 34 00 00 C9 43 BC 69 D6 BE 89 8E 47 0A 89 09 74 E8 6C 9F DC D5 27 02 BC 92 D2
    Addr =F1:39:E9:5B:2C:18:01 type=7  flag=17 name="" data=1D 00 03 79 E8 02 0A 11 02 39 00 00 6C 76 BC 69 D6 BE 89 8E 47 0A 89 09 18 2C 5B E9 39 F1 F2 0D CA 7F 11
    Addr =F1:4B:94:83:92:2C:01 type=7  flag=17 name="" data=1D 00 03 83 E8 02 0A 11 20 37 00 00 2E 9C BC 69 D6 BE 89 8E 47 0A 89 09 2C 92 83 94 4B F1 8B 05 A3 C2 9E
    Addr =CB:D8:BD:92:4D:46:01 type=7  flag=17 name="" data=1D 00 03 9A E8 02 0A 11 12 31 00 00 65 01 BD 69 D6 BE 89 8E 47 0A 89 09 46 4D 92 BD D8 CB E1 09 9E 63 E5
    Addr =D8:84:97:C3:1F:A8:01 type=7  flag=17 name="" data=1D 00 03 BC E8 02 0A 11 13 35 00 00 2D 9C BD 69 D6 BE 89 8E 47 0A 89 09 A8 1F C3 97 84 D8 76 0C 4A 61 C4
    Addr =F1:39:E9:5B:2C:18:01 type=7  flag=17 name="" data=1D 00 03 D9 E8 02 0A 11 15 40 00 00 CB 0E BE 69 D6 BE 89 8E 47 0A 89 09 18 2C 5B E9 39 F1 F2 0D CA 7F 11
    Addr =CB:D8:BD:92:4D:46:01 type=7  flag=17 name="" data=1D 00 03 F1 E8 02 0A 11 20 34 00 00 A3 9A BE 69 D6 BE 89 8E 47 0A 89 09 46 4D 92 BD D8 CB E1 09 9E 63 E5
    Addr =D8:84:97:C3:1F:A8:01 type=7  flag=17 name="" data=1D 00 03 11 E9 02 0A 11 1C 31 00 00 AA 36 BF 69 D6 BE 89 8E 47 0A 89 09 A8 1F C3 97 84 D8 76 0C 4A 61 C4
    Addr =D5:DC:9F:6C:E8:74:01 type=7  flag=17 name="" data=1D 00 03 1E E9 02 0A 11 0E 37 00 00 B4 71 BF 69 D6 BE 89 8E 47 0A 89 09 74 E8 6C 9F DC D5 27 02 BC 92 D2
    Addr =F1:39:E9:5B:2C:18:01 type=7  flag=17 name="" data=1D 00 03 2F E9 02 0A 11 04 3A 00 00 38 A7 BF 69 D6 BE 89 8E 47 0A 89 09 18 2C 5B E9 39 F1 F2 0D CA 7F 11
    Addr =FD:70:6A:BC:33:FC:01 type=7  flag=17 name="" data=1D 00 03 79 E9 02 0A 11 0A 3F 00 00 69 E8 C0 69 D6 BE 89 8E 47 0A 89 09 FC 33 BC 6A 70 FD 19 0B 02 9E 05
    Addr =CB:D8:BD:92:4D:46:01 type=7  flag=17 name="" data=1D 00 03 A1 E9 02 0A 11 0C 31 00 00 23 AA C1 69 D6 BE 89 8E 47 0A 89 09 46 4D 92 BD D8 CB 01 0C 96 85 E2
    Addr =D8:84:97:C3:1F:A8:01 type=7  flag=17 name="" data=1D 00 03 B8 E9 02 0A 11 21 33 00 00 AB 0F C2 69 D6 BE 89 8E 47 0A 89 09 A8 1F C3 97 84 D8 91 0D 4C 60 A8
    Addr =D5:DC:9F:6C:E8:74:01 type=7  flag=17 name="" data=1D 00 03 C6 E9 02 0A 11 10 35 00 00 14 63 C2 69 D6 BE 89 8E 47 0A 89 09 74 E8 6C 9F DC D5 34 0B ED A9 B3
    Addr =D8:84:97:C3:1F:A8:01 type=7  flag=17 name="" data=1D 00 03 10 EA 02 0A 11 1D 30 00 00 0A 9D C3 69 D6 BE 89 8E 47 0A 89 09 A8 1F C3 97 84 D8 91 0D 4C 60 A8
    Addr =FD:70:6A:BC:33:FC:01 type=7  flag=17 name="" data=1D 00 03 21 EA 02 0A 11 22 3B 00 00 06 FE C3 69 D6 BE 89 8E 47 0A 89 09 FC 33 BC 6A 70 FD 19 0B 02 9E 05
    Addr =F1:4B:94:83:92:2C:01 type=7  flag=17 name="" data=1D 00 03 32 EA 02 0A 11 19 34 00 00 3B 61 C4 69 D6 BE 89 8E 47 0A 89 09 2C 92 83 94 4B F1 A8 0B 66 DA FB
    Addr =CB:D8:BD:92:4D:46:01 type=7  flag=17 name="" data=1D 00 03 4E EA 02 0A 11 13 31 00 00 0F E7 C4 69 D6 BE 89 8E 47 0A 89 09 46 4D 92 BD D8 CB 01 0C 96 85 E2
    Addr =D8:84:97:C3:1F:A8:01 type=7  flag=17 name="" data=1D 00 03 69 EA 02 0A 11 1A 31 00 00 A8 43 C5 69 D6 BE 89 8E 47 0A 89 09 A8 1F C3 97 84 D8 91 0D 4C 60 A8
    Addr =D5:DC:9F:6C:E8:74:01 type=7  flag=17 name="" data=1D 00 03 70 EA 02 0A 11 0C 37 00 00 72 69 C5 69 D6 BE 89 8E 47 0A 89 09 74 E8 6C 9F DC D5 DD 08 77 A9 06
    Addr =F1:4B:94:83:92:2C:01 type=7  flag=17 name="" data=1D 00 03 7E EA 02 0A 11 0D 37 00 00 CD A5 C5 69 D6 BE 89 8E 47 0A 89 09 2C 92 83 94 4B F1 E4 06 E3 7D F1
    Addr =CB:D8:BD:92:4D:46:01 type=7  flag=17 name="" data=1D 00 03 9E EA 02 0A 11 05 33 00 00 31 46 C6 69 D6 BE 89 8E 47 0A 89 09 46 4D 92 BD D8 CB 8B 0E B9 58 3B
    Addr =D5:DC:9F:6C:E8:74:01 type=7  flag=17 name="" data=1D 00 03 C7 EA 02 0A 11 19 34 00 00 EF 03 C7 69 D6 BE 89 8E 47 0A 89 09 74 E8 6C 9F DC D5 DD 08 77 A9 06
    Addr =FD:70:6A:BC:33:FC:01 type=7  flag=17 name="" data=1D 00 03 CB EA 02 0A 11 0C 3E 00 00 B7 0F C7 69 D6 BE 89 8E 47 0A 89 09 FC 33 BC 6A 70 FD E4 0C 07 50 B6
    Addr =CB:D8:BD:92:4D:46:01 type=7  flag=17 name="" data=1D 00 03 F3 EA 02 0A 11 1D 34 00 00 BF D7 C7 69 D6 BE 89 8E 47 0A 89 09 46 4D 92 BD D8 CB 8B 0E B9 58 3B
    Addr =FD:70:6A:BC:33:FC:01 type=7  flag=17 name="" data=1D 00 03 22 EB 02 0A 11 15 3F 00 00 F6 9D C8 69 D6 BE 89 8E 47 0A 89 09 FC 33 BC 6A 70 FD E4 0C 07 50 B6
    Addr =F1:4B:94:83:92:2C:01 type=7  flag=17 name="" data=1D 00 03 30 EB 02 0A 11 1D 37 00 00 5C E0 C8 69 D6 BE 89 8E 47 0A 89 09 2C 92 83 94 4B F1 E4 06 E3 7D F1
    Addr =D5:DC:9F:6C:E8:74:01 type=7  flag=17 name="" data=1D 00 03 74 EB 02 0A 11 07 35 00 00 2E 1D CA 69 D6 BE 89 8E 47 0A 89 09 74 E8 6C 9F DC D5 14 05 F5 83 BB
    Addr =F1:4B:94:83:92:2C:01 type=7  flag=17 name="" data=1D 00 03 7B EB 02 0A 11 0E 39 00 00 AD 43 CA 69 D6 BE 89 8E 47 0A 89 09 2C 92 83 94 4B F1 B3 03 51 58 9B
    Addr =F1:4B:94:83:92:2C:01 type=7  flag=17 name="" data=1D 00 03 D2 EB 02 0A 11 00 36 00 00 4D DD CB 69 D6 BE 89 8E 47 0A 89 09 2C 92 83 94 4B F1 B3 03 51 58 9B
    Addr =D5:DC:9F:6C:E8:74:01 type=7  flag=17 name="" data=1D 00 03 20 EC 02 0A 11 14 34 00 00 18 55 CD 69 D6 BE 89 8E 47 0A 89 09 74 E8 6C 9F DC D5 14 05 F5 83 BB
    Addr =F1:39:E9:5B:2C:18:01 type=7  flag=17 name="" data=1D 00 03 24 EC 02 0A 11 01 3A 00 00 72 5C CD 69 D6 BE 89 8E 47 0A 89 09 18 2C 5B E9 39 F1 DF 00 53 D2 AC
    Addr =F1:4B:94:83:92:2C:01 type=7  flag=17 name="" data=1D 00 03 2E EC 02 0A 11 18 36 00 00 AA 73 CD 69 D6 BE 89 8E 47 0A 89 09 2C 92 83 94 4B F1 B3 03 51 58 9B
    Addr =CB:D8:BD:92:4D:46:01 type=7  flag=17 name="" data=1D 00 03 4E EC 02 0A 11 1D 33 00 00 EC 0C CE 69 D6 BE 89 8E 47 0A 89 09 46 4D 92 BD D8 CB 49 0B 40 EB E6
    Addr =D8:84:97:C3:1F:A8:01 type=7  flag=17 name="" data=1D 00 03 6A EC 02 0A 11 00 36 00 00 35 84 CE 69 D6 BE 89 8E 47 0A 89 09 A8 1F C3 97 84 D8 C7 0B 0A C9 77
    Addr =D5:DC:9F:6C:E8:74:01 type=7  flag=17 name="" data=1D 00 03 7C EC 02 0A 11 0B 35 00 00 C9 B1 CE 69 D6 BE 89 8E 47 0A 89 09 74 E8 6C 9F DC D5 56 07 2C E4 62
    Addr =F1:4B:94:83:92:2C:01 type=7  flag=17 name="" data=1D 00 03 86 EC 02 0A 11 08 37 00 00 6E D3 CE 69 D6 BE 89 8E 47 0A 89 09 2C 92 83 94 4B F1 05 07 5F 19 47
    Addr =D5:DC:9F:6C:E8:74:01 type=7  flag=17 name="" data=1D 00 03 DA EC 02 0A 11 03 34 00 00 15 5C D0 69 D6 BE 89 8E 47 0A 89 09 74 E8 6C 9F DC D5 56 07 2C E4 62
    Addr =F1:4B:94:83:92:2C:01 type=7  flag=17 name="" data=1D 00 03 DE EC 02 0A 11 1E 37 00 00 FD 6C D0 69 D6 BE 89 8E 47 0A 89 09 2C 92 83 94 4B F1 05 07 5F 19 47
    Addr =F1:4B:94:83:92:2C:01 type=7  flag=17 name="" data=1D 00 03 3E ED 02 0A 11 10 35 00 00 3B 08 D2 69 D6 BE 89 8E 47 0A 89 09 2C 92 83 94 4B F1 05 07 5F 19 47
    Addr =CB:D8:BD:92:4D:46:01 type=7  flag=17 name="" data=1D 00 03 63 ED 02 0A 11 22 34 00 00 4A B5 D2 69 D6 BE 89 8E 47 0A 89 09 46 4D 92 BD D8 CB 9A 0A 41 C1 8A
    Addr =D8:84:97:C3:1F:A8:01 type=7  flag=17 name="" data=1D 00 03 74 ED 02 0A 11 0D 33 00 00 F4 02 D3 69 D6 BE 89 8E 47 0A 89 09 A8 1F C3 97 84 D8 15 0A BF B2 AC
    Addr =FD:70:6A:BC:33:FC:01 type=7  flag=17 name="" data=1D 00 03 7E ED 02 0A 11 03 40 00 00 A9 35 D3 69 D6 BE 89 8E 47 0A 89 09 FC 33 BC 6A 70 FD E8 04 72 FD BB
    Addr =F1:39:E9:5B:2C:18:01 type=7  flag=17 name="" data=1D 00 03 82 ED 02 0A 11 0A 3E 00 00 53 44 D3 69 D6 BE 89 8E 47 0A 89 09 18 2C 5B E9 39 F1 1C 0E 5E 4B C9
    Addr =F1:4B:94:83:92:2C:01 type=7  flag=17 name="" data=1D 00 03 90 ED 02 0A 11 20 37 00 00 5F 64 D3 69 D6 BE 89 8E 47 0A 89 09 2C 92 83 94 4B F1 DE 07 38 8A 2A
    Addr =CB:D8:BD:92:4D:46:01 type=7  flag=17 name="" data=1D 00 03 B3 ED 02 0A 11 12 31 00 00 8A 00 D4 69 D6 BE 89 8E 47 0A 89 09 46 4D 92 BD D8 CB EF 0B 02 62 3C
    Addr =D5:DC:9F:6C:E8:74:01 type=7  flag=17 name="" data=1D 00 03 E0 ED 02 0A 11 04 33 00 00 30 C1 D4 69 D6 BE 89 8E 47 0A 89 09 74 E8 6C 9F DC D5 FA 02 61 64 65
    Addr =F1:39:E9:5B:2C:18:01 type=7  flag=17 name="" data=1D 00 03 EA ED 02 0A 11 22 3C 00 00 A0 EE D4 69 D6 BE 89 8E 47 0A 89 09 18 2C 5B E9 39 F1 1C 0E 5E 4B C9
    Addr =F1:4B:94:83:92:2C:01 type=7  flag=17 name="" data=1D 00 03 F4 ED 02 0A 11 0C 37 00 00 BD 10 D5 69 D6 BE 89 8E 47 0A 89 09 2C 92 83 94 4B F1 DE 07 38 8A 2A
    Addr =CB:D8:BD:92:4D:46:01 type=7  flag=17 name="" data=1D 00 03 19 EE 02 0A 11 03 34 00 00 08 9E D5 69 D6 BE 89 8E 47 0A 89 09 46 4D 92 BD D8 CB EF 0B 02 62 3C
    Addr =D8:84:97:C3:1F:A8:01 type=7  flag=17 name="" data=1D 00 03 2F EE 02 0A 11 0A 3C 00 00 63 08 D6 69 D6 BE 89 8E 47 0A 89 09 A8 1F C3 97 84 D8 2C 03 B9 D1 17
    Addr =F1:4B:94:83:92:2C:01 type=7  flag=17 name="" data=1D 00 03 54 EE 02 0A 11 1E 37 00 00 5C A0 D6 69 D6 BE 89 8E 47 0A 89 09 2C 92 83 94 4B F1 DE 07 38 8A 2A
    Addr =CB:D8:BD:92:4D:46:01 type=7  flag=17 name="" data=1D 00 03 76 EE 02 0A 11 1A 32 00 00 67 26 D7 69 D6 BE 89 8E 47 0A 89 09 46 4D 92 BD D8 CB EF 0B 02 62 3C
    Addr =D8:84:97:C3:1F:A8:01 type=7  flag=17 name="" data=1D 00 03 8C EE 02 0A 11 0A 3C 00 00 C1 9F D7 69 D6 BE 89 8E 47 0A 89 09 A8 1F C3 97 84 D8 2C 03 B9 D1 17
    Addr =F1:39:E9:5B:2C:18:01 type=7  flag=17 name="" data=1D 00 03 A2 EE 02 0A 11 22 3C 00 00 00 F4 D7 69 D6 BE 89 8E 47 0A 89 09 18 2C 5B E9 39 F1 7B 00 78 38 AC
    Addr =F1:4B:94:83:92:2C:01 type=7  flag=17 name="" data=1D 00 03 A6 EE 02 0A 11 21 37 00 00 2F 01 D8 69 D6 BE 89 8E 47 0A 89 09 2C 92 83 94 4B F1 96 0C EE 91 25
    Addr =CB:D8:BD:92:4D:46:01 type=7  flag=17 name="" data=1D 00 03 C5 EE 02 0A 11 1E 34 00 00 49 86 D8 69 D6 BE 89 8E 47 0A 89 09 46 4D 92 BD D8 CB 9B 01 B5 EB 32
    Addr =D5:DC:9F:6C:E8:74:01 type=7  flag=17 name="" data=1D 00 03 F4 EE 02 0A 11 10 35 00 00 7D 4F D9 69 D6 BE 89 8E 47 0A 89 09 74 E8 6C 9F DC D5 5E 0F 8A 4F 6F
    Addr =CB:D8:BD:92:4D:46:01 type=7  flag=17 name="" data=1D 00 03 20 EF 02 0A 11 23 35 00 00 87 13 DA 69 D6 BE 89 8E 47 0A 89 09 46 4D 92 BD D8 CB 9B 01 B5 EB 32
    Addr =D8:84:97:C3:1F:A8:01 type=7  flag=17 name="" data=1D 00 03 3D EF 02 0A 11 1F 31 00 00 32 9C DA 69 D6 BE 89 8E 47 0A 89 09 A8 1F C3 97 84 D8 2E 0C 90 1A C4
    Addr =D5:DC:9F:6C:E8:74:01 type=7  flag=17 name="" data=1D 00 03 50 EF 02 0A 11 1E 37 00 00 0A E9 DA 69 D6 BE 89 8E 47 0A 89 09 74 E8 6C 9F DC D5 5E 0F 8A 4F 6F
    Addr =CB:D8:BD:92:4D:46:01 type=7  flag=17 name="" data=1D 00 03 82 EF 02 0A 11 04 33 00 00 D6 BA DB 69 D6 BE 89 8E 47 0A 89 09 46 4D 92 BD D8 CB 9B 01 B5 EB 32
    Addr =D5:DC:9F:6C:E8:74:01 type=7  flag=17 name="" data=1D 00 03 A2 EF 02 0A 11 0A 35 00 00 2C 5A DC 69 D6 BE 89 8E 47 0A 89 09 74 E8 6C 9F DC D5 98 08 20 93 B1
    Addr =CB:D8:BD:92:4D:46:01 type=7  flag=17 name="" data=1D 00 03 C7 EF 02 0A 11 0C 32 00 00 46 12 DD 69 D6 BE 89 8E 47 0A 89 09 46 4D 92 BD D8 CB A8 04 7C 93 58
    Addr =D5:DC:9F:6C:E8:74:01 type=7  flag=17 name="" data=1D 00 03 FE EF 02 0A 11 1C 36 00 00 C8 03 DE 69 D6 BE 89 8E 47 0A 89 09 74 E8 6C 9F DC D5 98 08 20 93 B1
    Addr =F1:39:E9:5B:2C:18:01 type=7  flag=17 name="" data=1D 00 03 05 F0 02 0A 11 23 3D 00 00 8C 19 DE 69 D6 BE 89 8E 47 0A 89 09 18 2C 5B E9 39 F1 42 08 BE EF 16
    Addr =CB:D8:BD:92:4D:46:01 type=7  flag=17 name="" data=1D 00 03 1E F0 02 0A 11 15 31 00 00 D5 AC DE 69 D6 BE 89 8E 47 0A 89 09 46 4D 92 BD D8 CB A8 04 7C 93 58
    Addr =D8:84:97:C3:1F:A8:01 type=7  flag=17 name="" data=1D 00 03 37 F0 02 0A 11 06 35 00 00 80 26 DF 69 D6 BE 89 8E 47 0A 89 09 A8 1F C3 97 84 D8 7D 0B 71 50 AD
    Addr =FD:70:6A:BC:33:FC:01 type=7  flag=17 name="" data=1D 00 03 47 F0 02 0A 11 1E 3E 00 00 37 6D DF 69 D6 BE 89 8E 47 0A 89 09 FC 33 BC 6A 70 FD 84 0D 6F BF B7
    Addr =D5:DC:9F:6C:E8:74:01 type=7  flag=17 name="" data=1D 00 03 57 F0 02 0A 11 0A 35 00 00 16 A8 DF 69 D6 BE 89 8E 47 0A 89 09 74 E8 6C 9F DC D5 98 08 20 93 B1
    Addr =F1:4B:94:83:92:2C:01 type=7  flag=17 name="" data=1D 00 03 65 F0 02 0A 11 24 35 00 00 BB CE DF 69 D6 BE 89 8E 47 0A 89 09 2C 92 83 94 4B F1 65 0A 37 83 4D
    Addr =D8:84:97:C3:1F:A8:01 type=7  flag=17 name="" data=1D 00 03 98 F0 02 0A 11 1A 31 00 00 D0 BF E0 69 D6 BE 89 8E 47 0A 89 09 A8 1F C3 97 84 D8 7D 0B 71 50 AD
    Addr =F1:4B:94:83:92:2C:01 type=7  flag=17 name="" data=1D 00 03 BA F0 02 0A 11 04 34 00 00 AE 3D E1 69 D6 BE 89 8E 47 0A 89 09 2C 92 83 94 4B F1 95 0B 73 AD 4C
    Addr =CB:D8:BD:92:4D:46:01 type=7  flag=17 name="" data=1D 00 03 CA F0 02 0A 11 0C 32 00 00 C5 B0 E1 69 D6 BE 89 8E 47 0A 89 09 46 4D 92 BD D8 CB F2 0D 0F 99 8E
    Addr =F1:4B:94:83:92:2C:01 type=7  flag=17 name="" data=1D 00 03 0C F1 02 0A 11 0A 36 00 00 ED CC E2 69 D6 BE 89 8E 47 0A 89 09 2C 92 83 94 4B F1 95 0B 73 AD 4C
    Addr =D5:DC:9F:6C:E8:74:01 type=7  flag=17 name="" data=1D 00 03 56 F1 02 0A 11 23 38 00 00 00 1F E4 69 D6 BE 89 8E 47 0A 89 09 74 E8 6C 9F DC D5 C3 05 E7 1B D6
    Addr =F1:39:E9:5B:2C:18:01 type=7  flag=17 name="" data=1D 00 03 60 F1 02 0A 11 06 3C 00 00 A9 41 E4 69 D6 BE 89 8E 47 0A 89 09 18 2C 5B E9 39 F1 74 06 50 BB C4
    Addr =CB:D8:BD:92:4D:46:01 type=7  flag=17 name="" data=1D 00 03 89 F1 02 0A 11 0E 32 00 00 61 DC E4 69 D6 BE 89 8E 47 0A 89 09 46 4D 92 BD D8 CB F2 0D 0F 99 8E
    Addr =D8:84:97:C3:1F:A8:01 type=7  flag=17 name="" data=1D 00 03 AD F1 02 0A 11 15 33 00 00 5D 65 E5 69 D6 BE 89 8E 47 0A 89 09 A8 1F C3 97 84 D8 EA 09 D3 CC C3
    Addr =D5:DC:9F:6C:E8:74:01 type=7  flag=17 name="" data=1D 00 03 B4 F1 02 0A 11 05 34 00 00 F2 85 E5 69 D6 BE 89 8E 47 0A 89 09 74 E8 6C 9F DC D5 72 0B 67 A1 69
    Addr =CB:D8:BD:92:4D:46:01 type=7  flag=17 name="" data=1D 00 03 E2 F1 02 0A 11 0F 32 00 00 A3 54 E6 69 D6 BE 89 8E 47 0A 89 09 46 4D 92 BD D8 CB BD 01 97 B8 E8
    Addr =D5:DC:9F:6C:E8:74:01 type=7  flag=17 name="" data=1D 00 03 0D F2 02 0A 11 0D 36 00 00 50 0E E7 69 D6 BE 89 8E 47 0A 89 09 74 E8 6C 9F DC D5 72 0B 67 A1 69
    Addr =F1:39:E9:5B:2C:18:01 type=7  flag=17 name="" data=1D 00 03 14 F2 02 0A 11 16 40 00 00 B9 23 E7 69 D6 BE 89 8E 47 0A 89 09 18 2C 5B E9 39 F1 20 02 FF 18 C2
    Addr =F1:4B:94:83:92:2C:01 type=7  flag=17 name="" data=1D 00 03 1B F2 02 0A 11 21 36 00 00 1D 3D E7 69 D6 BE 89 8E 47 0A 89 09 2C 92 83 94 4B F1 6A 02 9F 1C 2D
    Addr =CB:D8:BD:92:4D:46:01 type=7  flag=17 name="" data=1D 00 03 9A F2 02 0A 11 14 31 00 00 D0 7E E9 69 D6 BE 89 8E 47 0A 89 09 46 4D 92 BD D8 CB BD 01 97 B8 E8
    Addr =F1:4B:94:83:92:2C:01 type=7  flag=17 name="" data=1D 00 03 CE F2 02 0A 11 1D 37 00 00 5F 52 EA 69 D6 BE 89 8E 47 0A 89 09 2C 92 83 94 4B F1 99 00 46 DD 43
    Addr =D8:84:97:C3:1F:A8:01 type=7  flag=17 name="" data=1D 00 03 0E F3 02 0A 11 1C 31 00 00 1E 60 EB 69 D6 BE 89 8E 47 0A 89 09 A8 1F C3 97 84 D8 60 0E 3C 76 1D
    Addr =F1:4B:94:83:92:2C:01 type=7  flag=17 name="" data=1D 00 03 33 F3 02 0A 11 23 35 00 00 BE F5 EB 69 D6 BE 89 8E 47 0A 89 09 2C 92 83 94 4B F1 99 00 46 DD 43
    Addr =CB:D8:BD:92:4D:46:01 type=7  flag=17 name="" data=1D 00 03 52 F3 02 0A 11 0B 31 00 00 2E 69 EC 69 D6 BE 89 8E 47 0A 89 09 46 4D 92 BD D8 CB C6 06 48 C9 81
    Addr =D8:84:97:C3:1F:A8:01 type=7  flag=17 name="" data=1D 00 03 6C F3 02 0A 11 09 39 00 00 5C FA EC 69 D6 BE 89 8E 47 0A 89 09 A8 1F C3 97 84 D8 60 0E 3C 76 1D
    Addr =FD:70:6A:BC:33:FC:01 type=7  flag=17 name="" data=1D 00 03 80 F3 02 0A 11 1F 3C 00 00 06 3F ED 69 D6 BE 89 8E 47 0A 89 09 FC 33 BC 6A 70 FD E5 06 33 CE 0F
    Addr =D5:DC:9F:6C:E8:74:01 type=7  flag=17 name="" data=1D 00 03 88 F3 02 0A 11 06 35 00 00 78 5A ED 69 D6 BE 89 8E 47 0A 89 09 74 E8 6C 9F DC D5 02 0B 83 E1 69
    Addr =D8:84:97:C3:1F:A8:01 type=7  flag=17 name="" data=1D 00 03 CC F3 02 0A 11 1C 31 00 00 EB 83 EE 69 D6 BE 89 8E 47 0A 89 09 A8 1F C3 97 84 D8 60 0E 3C 76 1D
    Addr =D5:DC:9F:6C:E8:74:01 type=7  flag=17 name="" data=1D 00 03 33 F4 02 0A 11 10 35 00 00 F6 53 F0 69 D6 BE 89 8E 47 0A 89 09 74 E8 6C 9F DC D5 BA 05 11 07 61
    Addr =F1:4B:94:83:92:2C:01 type=7  flag=17 name="" data=1D 00 03 3A F4 02 0A 11 19 34 00 00 BE 6D F0 69 D6 BE 89 8E 47 0A 89 09 2C 92 83 94 4B F1 28 04 46 A8 F2
    Addr =FD:70:6A:BC:33:FC:01 type=7  flag=17 name="" data=1D 00 03 89 F4 02 0A 11 0B 3D 00 00 D7 CE F1 69 D6 BE 89 8E 47 0A 89 09 FC 33 BC 6A 70 FD E5 09 73 66 06
    Addr =D5:DC:9F:6C:E8:74:01 type=7  flag=17 name="" data=1D 00 03 93 F4 02 0A 11 04 35 00 00 64 ED F1 69 D6 BE 89 8E 47 0A 89 09 74 E8 6C 9F DC D5 BA 05 11 07 61
    Addr =CB:D8:BD:92:4D:46:01 type=7  flag=17 name="" data=1D 00 03 BE F4 02 0A 11 1C 35 00 00 2A AD F2 69 D6 BE 89 8E 47 0A 89 09 46 4D 92 BD D8 CB 6E 06 16 28 81
    Addr =D8:84:97:C3:1F:A8:01 type=7  flag=17 name="" data=1D 00 03 D7 F4 02 0A 11 23 32 00 00 F9 15 F3 69 D6 BE 89 8E 47 0A 89 09 A8 1F C3 97 84 D8 8C 01 C1 54 14
    Addr =CB:D8:BD:92:4D:46:01 type=7  flag=17 name="" data=1D 00 03 64 F5 02 0A 11 24 34 00 00 9A 96 F5 69 D6 BE 89 8E 47 0A 89 09 46 4D 92 BD D8 CB 66 02 B0 F6 87
    Addr =F1:39:E9:5B:2C:18:01 type=7  flag=17 name="" data=1D 00 03 A2 F5 02 0A 11 0B 3F 00 00 E0 8E F6 69 D6 BE 89 8E 47 0A 89 09 18 2C 5B E9 39 F1 5E 02 07 30 18
    Addr =FD:70:6A:BC:33:FC:01 type=7  flag=17 name="" data=1D 00 03 A6 F5 02 0A 11 16 3E 00 00 27 9C F6 69 D6 BE 89 8E 47 0A 89 09 FC 33 BC 6A 70 FD 5B 0D DB 2A DA
    Addr =D8:84:97:C3:1F:A8:01 type=7  flag=17 name="" data=1D 00 03 E9 F5 02 0A 11 03 36 00 00 B7 98 F7 69 D6 BE 89 8E 47 0A 89 09 A8 1F C3 97 84 D8 31 0C 74 38 A9
    Addr =FD:70:6A:BC:33:FC:01 type=7  flag=17 name="" data=1D 00 03 F6 F5 02 0A 11 1F 3C 00 00 2A CD F7 69 D6 BE 89 8E 47 0A 89 09 FC 33 BC 6A 70 FD 6E 09 68 83 6B
    Addr =D5:DC:9F:6C:E8:74:01 type=7  flag=17 name="" data=1D 00 03 FD F5 02 0A 11 0C 37 00 00 31 E5 F7 69 D6 BE 89 8E 47 0A 89 09 74 E8 6C 9F DC D5 E5 08 05 89 06
    Addr =D8:84:97:C3:1F:A8:01 type=7  flag=17 name="" data=1D 00 03 47 F6 02 0A 11 1E 30 00 00 7B FE F8 69 D6 BE 89 8E 47 0A 89 09 A8 1F C3 97 84 D8 B5 02 47 F8 A1
    Addr =D5:DC:9F:6C:E8:74:01 type=7  flag=17 name="" data=1D 00 03 6D F6 02 0A 11 21 37 00 00 CE 84 F9 69 D6 BE 89 8E 47 0A 89 09 74 E8 6C 9F DC D5 E5 08 05 89 06
    Addr =D8:84:97:C3:1F:A8:01 type=7  flag=17 name="" data=1D 00 03 B2 F6 02 0A 11 15 34 00 00 F8 95 FA 69 D6 BE 89 8E 47 0A 89 09 A8 1F C3 97 84 D8 B5 02 47 F8 A1
    Addr =F1:4B:94:83:92:2C:01 type=7  flag=17 name="" data=1D 00 03 E0 F6 02 0A 11 13 37 00 00 9C 36 FB 69 D6 BE 89 8E 47 0A 89 09 2C 92 83 94 4B F1 1F 05 5C 05 9E
    Addr =CB:D8:BD:92:4D:46:01 type=7  flag=17 name="" data=1D 00 03 03 F7 02 0A 11 0A 32 00 00 D7 CA FB 69 D6 BE 89 8E 47 0A 89 09 46 4D 92 BD D8 CB D8 08 98 A6 53
    Addr =F1:39:E9:5B:2C:18:01 type=7  flag=17 name="" data=1D 00 03 26 F7 02 0A 11 1E 3D 00 00 92 86 FC 69 D6 BE 89 8E 47 0A 89 09 18 2C 5B E9 39 F1 A6 0C A5 BB 10
    Addr =F1:4B:94:83:92:2C:01 type=7  flag=17 name="" data=1D 00 03 2D F7 02 0A 11 15 36 00 00 AF 98 FC 69 D6 BE 89 8E 47 0A 89 09 2C 92 83 94 4B F1 EF 05 D8 9F 9E
    Addr =CB:D8:BD:92:4D:46:01 type=7  flag=17 name="" data=1D 00 03 47 F7 02 0A 11 24 33 00 00 D8 26 FD 69 D6 BE 89 8E 47 0A 89 09 46 4D 92 BD D8 CB D2 0C 57 1B 8F
    Addr =D5:DC:9F:6C:E8:74:01 type=7  flag=17 name="" data=1D 00 03 73 F7 02 0A 11 09 36 00 00 6B F1 FD 69 D6 BE 89 8E 47 0A 89 09 74 E8 6C 9F DC D5 FA 0B A1 76 69
    Addr =CB:D8:BD:92:4D:46:01 type=7  flag=17 name="" data=1D 00 03 A9 F7 02 0A 11 1A 32 00 00 77 D4 FE 69 D6 BE 89 8E 47 0A 89 09 46 4D 92 BD D8 CB D2 0C 57 1B 8F
    Addr =D5:DC:9F:6C:E8:74:01 type=7  flag=17 name="" data=1D 00 03 19 FA 02 0A 11 09 36 00 00 79 17 B1 72 D6 BE 89 8E 47 0A 89 09 74 E8 6C 9F DC D5 27 06 BC 41 D4
    Addr =CB:D8:BD:92:4D:46:01 type=7  flag=17 name="" data=1D 00 03 9A FE 02 0A 11 03 34 00 00 E9 94 C4 72 D6 BE 89 8E 47 0A 89 09 46 4D 92 BD D8 CB 38 0C 50 F4 55
    Addr =F1:4B:94:83:92:2C:01 type=7  flag=17 name="" data=1D 00 03 D3 FE 02 0A 11 22 36 00 00 13 80 C5 72 D6 BE 89 8E 47 0A 89 09 2C 92 83 94 4B F1 02 0B 51 58 21
    Addr =D5:DC:9F:6C:E8:74:01 type=7  flag=17 name="" data=1D 00 03 0A FF 02 0A 11 22 36 00 00 E5 49 C6 72 D6 BE 89 8E 47 0A 89 09 74 E8 6C 9F DC D5 1B 0F DD 75 D8
    Addr =FD:70:6A:BC:33:FC:01 type=7  flag=17 name="" data=1D 00 03 15 FF 02 0A 11 09 3E 00 00 41 6A C6 72 D6 BE 89 8E 47 0A 89 09 FC 33 BC 6A 70 FD AC 0C 91 30 B6
    Addr =F1:4B:94:83:92:2C:01 type=7  flag=17 name="" data=1D 00 03 28 FF 02 0A 11 1A 36 00 00 F6 BF C6 72 D6 BE 89 8E 47 0A 89 09 2C 92 83 94 4B F1 82 09 B1 EB 22
    Addr =F1:39:E9:5B:2C:18:01 type=7  flag=17 name="" data=1D 00 03 4A FF 02 0A 11 23 3F 00 00 0B 36 C7 72 D6 BE 89 8E 47 0A 89 09 18 2C 5B E9 39 F1 91 0A FF 18 78
    Addr =CB:D8:BD:92:4D:46:01 type=7  flag=17 name="" data=1D 00 03 6D FF 02 0A 11 15 31 00 00 89 A3 C7 72 D6 BE 89 8E 47 0A 89 09 46 4D 92 BD D8 CB 67 0B C4 B5 3C
    Addr =D5:DC:9F:6C:E8:74:01 type=7  flag=17 name="" data=1D 00 03 83 FF 02 0A 11 11 35 00 00 42 EA C7 72 D6 BE 89 8E 47 0A 89 09 74 E8 6C 9F DC D5 1B 0F DD 75 D8
    Addr =F1:4B:94:83:92:2C:01 type=7  flag=17 name="" data=1D 00 03 9C FF 02 0A 11 13 38 00 00 95 52 C8 72 D6 BE 89 8E 47 0A 89 09 2C 92 83 94 4B F1 82 09 B1 EB 22
    Addr =D8:84:97:C3:1F:A8:01 type=7  flag=17 name="" data=1D 00 03 A3 FF 02 0A 11 07 35 00 00 AD 65 C8 72 D6 BE 89 8E 47 0A 89 09 A8 1F C3 97 84 D8 9C 03 0D 26 17
    Addr =D5:DC:9F:6C:E8:74:01 type=7  flag=17 name="" data=1D 00 03 E1 FF 02 0A 11 01 34 00 00 C0 71 C9 72 D6 BE 89 8E 47 0A 89 09 74 E8 6C 9F DC D5 1B 0F DD 75 D8
    Addr =F1:4B:94:83:92:2C:01 type=7  flag=17 name="" data=1D 00 03 04 00 02 0A 11 0D 39 00 00 04 E9 C9 72 D6 BE 89 8E 47 0A 89 09 2C 92 83 94 4B F1 82 09 B1 EB 22
    Addr =D5:DC:9F:6C:E8:74:01 type=7  flag=17 name="" data=1D 00 03 37 00 02 0A 11 10 36 00 00 72 D7 CA 72 D6 BE 89 8E 47 0A 89 09 74 E8 6C 9F DC D5 E6 0A 58 D2 68
    Addr =F1:4B:94:83:92:2C:01 type=7  flag=17 name="" data=1D 00 03 C4 00 02 0A 11 0A 38 00 00 54 EC CC 72 D6 BE 89 8E 47 0A 89 09 2C 92 83 94 4B F1 C0 03 68 2A F6
    Addr =D8:84:97:C3:1F:A8:01 type=7  flag=17 name="" data=1D 00 03 CF 00 02 0A 11 0F 35 00 00 BB 0A CD 72 D6 BE 89 8E 47 0A 89 09 A8 1F C3 97 84 D8 EB 02 27 E6 7B
    Addr =F1:39:E9:5B:2C:18:01 type=7  flag=17 name="" data=1D 00 03 D6 00 02 0A 11 09 3C 00 00 4B 28 CD 72 D6 BE 89 8E 47 0A 89 09 18 2C 5B E9 39 F1 66 02 75 10 18
    Addr =D5:DC:9F:6C:E8:74:01 type=7  flag=17 name="" data=1D 00 03 07 01 02 0A 11 0C 37 00 00 3B 0C CE 72 D6 BE 89 8E 47 0A 89 09 74 E8 6C 9F DC D5 E6 0A 58 D2 68
    Addr =F1:4B:94:83:92:2C:01 type=7  flag=17 name="" data=1D 00 03 27 01 02 0A 11 0A 38 00 00 A4 8D CE 72 D6 BE 89 8E 47 0A 89 09 2C 92 83 94 4B F1 C0 03 68 2A F6
    Addr =D5:DC:9F:6C:E8:74:01 type=7  flag=17 name="" data=1D 00 03 58 01 02 0A 11 11 35 00 00 8D 60 CF 72 D6 BE 89 8E 47 0A 89 09 74 E8 6C 9F DC D5 F8 07 C8 60 B8
    Addr =F1:4B:94:83:92:2C:01 type=7  flag=17 name="" data=1D 00 03 81 01 02 0A 11 08 38 00 00 86 E0 CF 72 D6 BE 89 8E 47 0A 89 09 2C 92 83 94 4B F1 DF 01 0C 61 98
    Addr =D8:84:97:C3:1F:A8:01 type=7  flag=17 name="" data=1D 00 03 A3 01 02 0A 11 20 31 00 00 78 60 D0 72 D6 BE 89 8E 47 0A 89 09 A8 1F C3 97 84 D8 EB 02 27 E6 7B
    Addr =CB:D8:BD:92:4D:46:01 type=7  flag=17 name="" data=1D 00 03 BC 01 02 0A 11 13 31 00 00 15 C0 D0 72 D6 BE 89 8E 47 0A 89 09 46 4D 92 BD D8 CB F8 09 C0 24 52
    Addr =D5:DC:9F:6C:E8:74:01 type=7  flag=17 name="" data=1D 00 03 C8 01 02 0A 11 17 35 00 00 2A E7 D0 72 D6 BE 89 8E 47 0A 89 09 74 E8 6C 9F DC D5 F8 07 C8 60 B8
    Addr =F1:4B:94:83:92:2C:01 type=7  flag=17 name="" data=1D 00 03 EC 01 02 0A 11 07 38 00 00 15 69 D1 72 D6 BE 89 8E 47 0A 89 09 2C 92 83 94 4B F1 DF 01 0C 61 98
    Addr =D5:DC:9F:6C:E8:74:01 type=7  flag=17 name="" data=1D 00 03 1F 02 02 0A 11 1E 36 00 00 A7 6F D2 72 D6 BE 89 8E 47 0A 89 09 74 E8 6C 9F DC D5 F8 07 C8 60 B8
    Addr =F1:4B:94:83:92:2C:01 type=7  flag=17 name="" data=1D 00 03 40 02 02 0A 11 07 38 00 00 74 F7 D2 72 D6 BE 89 8E 47 0A 89 09 2C 92 83 94 4B F1 DF 01 0C 61 98
    Addr =D8:84:97:C3:1F:A8:01 type=7  flag=17 name="" data=1D 00 03 4D 02 02 0A 11 06 35 00 00 C9 36 D3 72 D6 BE 89 8E 47 0A 89 09 A8 1F C3 97 84 D8 D6 08 B2 5E C2
    Addr =F1:39:E9:5B:2C:18:01 type=7  flag=17 name="" data=1D 00 03 5A 02 02 0A 11 07 3C 00 00 88 68 D3 72 D6 BE 89 8E 47 0A 89 09 18 2C 5B E9 39 F1 5F 03 73 D5 AE
    Addr =F1:4B:94:83:92:2C:01 type=7  flag=17 name="" data=1D 00 03 A6 02 02 0A 11 21 38 00 00 86 96 D4 72 D6 BE 89 8E 47 0A 89 09 2C 92 83 94 4B F1 6A 02 9F 1C 2D
    Addr =CB:D8:BD:92:4D:46:01 type=7  flag=17 name="" data=1D 00 03 D4 02 02 0A 11 21 34 00 00 23 54 D5 72 D6 BE 89 8E 47 0A 89 09 46 4D 92 BD D8 CB A7 02 54 10 30
    Addr =D5:DC:9F:6C:E8:74:01 type=7  flag=17 name="" data=1D 00 03 EA 02 02 0A 11 12 34 00 00 95 B4 D5 72 D6 BE 89 8E 47 0A 89 09 74 E8 6C 9F DC D5 B8 08 B8 A5 B1
    Addr =D8:84:97:C3:1F:A8:01 type=7  flag=17 name="" data=1D 00 03 07 03 02 0A 11 0C 36 00 00 39 31 D6 72 D6 BE 89 8E 47 0A 89 09 A8 1F C3 97 84 D8 92 0C 51 E6 C4
    Addr =D8:84:97:C3:1F:A8:01 type=7  flag=17 name="" data=1D 00 03 60 03 02 0A 11 0C 36 00 00 A7 B8 D7 72 D6 BE 89 8E 47 0A 89 09 A8 1F C3 97 84 D8 92 0C 51 E6 C4
    Addr =F1:39:E9:5B:2C:18:01 type=7  flag=17 name="" data=1D 00 03 67 03 02 0A 11 03 3A 00 00 A6 E6 D7 72 D6 BE 89 8E 47 0A 89 09 18 2C 5B E9 39 F1 5B 0F A0 A6 A5
    Addr =CB:D8:BD:92:4D:46:01 type=7  flag=17 name="" data=1D 00 03 8A 03 02 0A 11 19 31 00 00 2E 90 D8 72 D6 BE 89 8E 47 0A 89 09 46 4D 92 BD D8 CB A7 02 54 10 30
    Addr =D5:DC:9F:6C:E8:74:01 type=7  flag=17 name="" data=1D 00 03 94 03 02 0A 11 23 37 00 00 15 A3 D8 72 D6 BE 89 8E 47 0A 89 09 74 E8 6C 9F DC D5 B8 0B F8 78 B3
    Addr =F1:4B:94:83:92:2C:01 type=7  flag=17 name="" data=1D 00 03 B1 03 02 0A 11 12 38 00 00 46 1D D9 72 D6 BE 89 8E 47 0A 89 09 2C 92 83 94 4B F1 6C 0A 25 DF FA
    Addr =D8:84:97:C3:1F:A8:01 type=7  flag=17 name="" data=1D 00 03 15 04 02 0A 11 20 32 00 00 D7 CD DA 72 D6 BE 89 8E 47 0A 89 09 A8 1F C3 97 84 D8 D4 0F 9B 33 1C
    Addr =D5:DC:9F:6C:E8:74:01 type=7  flag=17 name="" data=1D 00 03 52 04 02 0A 11 07 35 00 00 FF D0 DB 72 D6 BE 89 8E 47 0A 89 09 74 E8 6C 9F DC D5 B8 0B F8 78 B3
    Addr =F1:4B:94:83:92:2C:01 type=7  flag=17 name="" data=1D 00 03 73 04 02 0A 11 1D 38 00 00 64 54 DC 72 D6 BE 89 8E 47 0A 89 09 2C 92 83 94 4B F1 6C 0A 25 DF FA
    Addr =CB:D8:BD:92:4D:46:01 type=7  flag=17 name="" data=1D 00 03 9C 04 02 0A 11 0C 31 00 00 DD F8 DC 72 D6 BE 89 8E 47 0A 89 09 46 4D 92 BD D8 CB E1 0B 1E 0A E6
    Addr =D5:DC:9F:6C:E8:74:01 type=7  flag=17 name="" data=1D 00 03 AF 04 02 0A 11 05 35 00 00 BF 31 DD 72 D6 BE 89 8E 47 0A 89 09 74 E8 6C 9F DC D5 9E 04 9A 83 60
    Addr =F1:4B:94:83:92:2C:01 type=7  flag=17 name="" data=1D 00 03 C8 04 02 0A 11 16 36 00 00 17 B4 DD 72 D6 BE 89 8E 47 0A 89 09 2C 92 83 94 4B F1 95 0F 73 7E 4A
    Addr =D8:84:97:C3:1F:A8:01 type=7  flag=17 name="" data=1D 00 03 DF 04 02 0A 11 24 31 00 00 C2 0F DE 72 D6 BE 89 8E 47 0A 89 09 A8 1F C3 97 84 D8 D4 0F 9B 33 1C
    Addr =CB:D8:BD:92:4D:46:01 type=7  flag=17 name="" data=1D 00 03 F5 04 02 0A 11 00 34 00 00 DF 94 DE 72 D6 BE 89 8E 47 0A 89 09 46 4D 92 BD D8 CB 41 01 66 29 E8
    Addr =D8:84:97:C3:1F:A8:01 type=7  flag=17 name="" data=1D 00 03 23 05 02 0A 11 05 33 00 00 D6 41 DF 72 D6 BE 89 8E 47 0A 89 09 A8 1F C3 97 84 D8 B5 09 07 83 AE
    Addr =F1:4B:94:83:92:2C:01 type=7  flag=17 name="" data=1D 00 03 2A 05 02 0A 11 10 37 00 00 94 54 DF 72 D6 BE 89 8E 47 0A 89 09 2C 92 83 94 4B F1 95 0F 73 7E 4A
    Addr =CB:D8:BD:92:4D:46:01 type=7  flag=17 name="" data=1D 00 03 5C 05 02 0A 11 1A 32 00 00 2D 20 E0 72 D6 BE 89 8E 47 0A 89 09 46 4D 92 BD D8 CB 41 01 66 29 E8
    Addr =D8:84:97:C3:1F:A8:01 type=7  flag=17 name="" data=1D 00 03 86 05 02 0A 11 0C 36 00 00 24 D0 E0 72 D6 BE 89 8E 47 0A 89 09 A8 1F C3 97 84 D8 B5 09 07 83 AE
    Addr =F1:4B:94:83:92:2C:01 type=7  flag=17 name="" data=1D 00 03 93 05 02 0A 11 0B 37 00 00 13 01 E1 72 D6 BE 89 8E 47 0A 89 09 2C 92 83 94 4B F1 95 0F 73 7E 4A
    Addr =D5:DC:9F:6C:E8:74:01 type=7  flag=17 name="" data=1D 00 03 B6 05 02 0A 11 1E 36 00 00 9A BF E1 72 D6 BE 89 8E 47 0A 89 09 74 E8 6C 9F DC D5 8B 0D 71 DD DB
    Addr =F1:4B:94:83:92:2C:01 type=7  flag=17 name="" data=1D 00 03 CF 05 02 0A 11 0B 37 00 00 96 37 E2 72 D6 BE 89 8E 47 0A 89 09 2C 92 83 94 4B F1 6E 0C CC 06 25
    Addr =CB:D8:BD:92:4D:46:01 type=7  flag=17 name="" data=1D 00 03 01 06 02 0A 11 1C 34 00 00 9C 22 E3 72 D6 BE 89 8E 47 0A 89 09 46 4D 92 BD D8 CB 18 04 C8 64 58
    Addr =FD:70:6A:BC:33:FC:01 type=7  flag=17 name="" data=1D 00 03 1E 06 02 0A 11 20 3E 00 00 50 7E E3 72 D6 BE 89 8E 47 0A 89 09 FC 33 BC 6A 70 FD 66 0F 4E 34 6E
    Addr =F1:4B:94:83:92:2C:01 type=7  flag=17 name="" data=1D 00 03 31 06 02 0A 11 0C 38 00 00 15 CC E3 72 D6 BE 89 8E 47 0A 89 09 2C 92 83 94 4B F1 6E 0C CC 06 25
    Addr =D8:84:97:C3:1F:A8:01 type=7  flag=17 name="" data=1D 00 03 38 06 02 0A 11 03 34 00 00 84 E4 E3 72 D6 BE 89 8E 47 0A 89 09 A8 1F C3 97 84 D8 10 0B 18 51 1A
    Addr =CB:D8:BD:92:4D:46:01 type=7  flag=17 name="" data=1D 00 03 67 06 02 0A 11 04 33 00 00 DA AC E4 72 D6 BE 89 8E 47 0A 89 09 46 4D 92 BD D8 CB 18 04 C8 64 58
    Addr =D5:DC:9F:6C:E8:74:01 type=7  flag=17 name="" data=1D 00 03 80 06 02 0A 11 0B 36 00 00 95 11 E5 72 D6 BE 89 8E 47 0A 89 09 74 E8 6C 9F DC D5 8B 0D 71 DD DB
    Addr =F1:4B:94:83:92:2C:01 type=7  flag=17 name="" data=1D 00 03 96 06 02 0A 11 0E 37 00 00 64 6D E5 72 D6 BE 89 8E 47 0A 89 09 2C 92 83 94 4B F1 6E 0C CC 06 25
    Addr =D8:84:97:C3:1F:A8:01 type=7  flag=17 name="" data=1D 00 03 9D 06 02 0A 11 18 31 00 00 22 85 E5 72 D6 BE 89 8E 47 0A 89 09 A8 1F C3 97 84 D8 10 0B 18 51 1A
    Addr =F1:39:E9:5B:2C:18:01 type=7  flag=17 name="" data=1D 00 03 A8 06 02 0A 11 10 3C 00 00 B0 A5 E5 72 D6 BE 89 8E 47 0A 89 09 18 2C 5B E9 39 F1 79 07 51 55 72
    Addr =CB:D8:BD:92:4D:46:01 type=7  flag=17 name="" data=1D 00 03 DA 06 02 0A 11 12 31 00 00 78 59 E6 72 D6 BE 89 8E 47 0A 89 09 46 4D 92 BD D8 CB 18 04 C8 64 58
    Addr =D5:DC:9F:6C:E8:74:01 type=7  flag=17 name="" data=1D 00 03 2F 07 02 0A 11 06 34 00 00 94 DC E7 72 D6 BE 89 8E 47 0A 89 09 74 E8 6C 9F DC D5 CE 08 E6 80 6B
    Addr =D8:84:97:C3:1F:A8:01 type=7  flag=17 name="" data=1D 00 03 5A 07 02 0A 11 22 32 00 00 93 83 E8 72 D6 BE 89 8E 47 0A 89 09 A8 1F C3 97 84 D8 46 0F DE 91 C6
    Addr =F1:39:E9:5B:2C:18:01 type=7  flag=17 name="" data=1D 00 03 5E 07 02 0A 11 09 3D 00 00 20 8B E8 72 D6 BE 89 8E 47 0A 89 09 18 2C 5B E9 39 F1 2F 0F 97 E0 A5
    Addr =FD:70:6A:BC:33:FC:01 type=7  flag=17 name="" data=1D 00 03 A0 07 02 0A 11 03 3F 00 00 AF 9F E9 72 D6 BE 89 8E 47 0A 89 09 FC 33 BC 6A 70 FD 8B 03 47 9A D2
    Addr =F1:4B:94:83:92:2C:01 type=7  flag=17 name="" data=1D 00 03 BD 07 02 0A 11 17 36 00 00 93 15 EA 72 D6 BE 89 8E 47 0A 89 09 2C 92 83 94 4B F1 55 03 23 BC 41
    Addr =F1:39:E9:5B:2C:18:01 type=7  flag=17 name="" data=1D 00 03 C4 07 02 0A 11 0C 3D 00 00 9F 28 EA 72 D6 BE 89 8E 47 0A 89 09 18 2C 5B E9 39 F1 2F 0F 97 E0 A5
    Addr =CB:D8:BD:92:4D:46:01 type=7  flag=17 name="" data=1D 00 03 E7 07 02 0A 11 18 32 00 00 56 D7 EA 72 D6 BE 89 8E 47 0A 89 09 46 4D 92 BD D8 CB D2 08 57 C8 89
    Addr =FD:70:6A:BC:33:FC:01 type=7  flag=17 name="" data=1D 00 03 F5 07 02 0A 11 03 40 00 00 B2 07 EB 72 D6 BE 89 8E 47 0A 89 09 FC 33 BC 6A 70 FD 7E 05 24 ED 60
    Addr =F1:4B:94:83:92:2C:01 type=7  flag=17 name="" data=1D 00 03 12 08 02 0A 11 22 36 00 00 77 68 EB 72 D6 BE 89 8E 47 0A 89 09 2C 92 83 94 4B F1 A4 0E D3 B6 FC
    Addr =D8:84:97:C3:1F:A8:01 type=7  flag=17 name="" data=1D 00 03 2C 08 02 0A 11 0D 34 00 00 8F C8 EB 72 D6 BE 89 8E 47 0A 89 09 A8 1F C3 97 84 D8 46 0F DE 91 C6
    Addr =F1:39:E9:5B:2C:18:01 type=7  flag=17 name="" data=1D 00 03 92 08 02 0A 11 10 3E 00 00 EE 3E ED 72 D6 BE 89 8E 47 0A 89 09 18 2C 5B E9 39 F1 68 0A 69 DE CF
    Addr =D8:84:97:C3:1F:A8:01 type=7  flag=17 name="" data=1D 00 03 E4 08 02 0A 11 13 35 00 00 8F AE EE 72 D6 BE 89 8E 47 0A 89 09 A8 1F C3 97 84 D8 5F 00 C0 7E 78

    this is the output

  • # Copyright (c) Nordic Semiconductor ASA
    # All rights reserved.
    #
    # Redistribution and use in source and binary forms, with or without modification,
    # are permitted provided that the following conditions are met:
    #
    # 1. Redistributions of source code must retain the above copyright notice, this
    #    list of conditions and the following disclaimer.
    #
    # 2. Redistributions in binary form, except as embedded into a Nordic
    #    Semiconductor ASA integrated circuit in a product or a software update for
    #    such product, must reproduce the above copyright notice, this list of
    #    conditions and the following disclaimer in the documentation and/or other
    #    materials provided with the distribution.
    #
    # 3. Neither the name of Nordic Semiconductor ASA nor the names of its
    #    contributors may be used to endorse or promote products derived from this
    #    software without specific prior written permission.
    #
    # 4. This software, with or without modification, must only be used with a
    #    Nordic Semiconductor ASA integrated circuit.
    #
    # 5. Any software provided in binary form under this license must not be reverse
    #    engineered, decompiled, modified and/or disassembled.
    #
    # THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS
    # OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
    # OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE
    # DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA OR CONTRIBUTORS BE
    # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
    # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
    # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
    # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
    # OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    
    import time
    from SnifferAPI import Sniffer, UART
    
    nPackets = 0
    nPacketsByType = [0,0,0,0,0,0,0,0]
    mySniffer = None
    packets2see = 200
    alldone = False
    MAX_MACS = 7
    look_for_these_macs = [' '] * MAX_MACS
    found_flags = [False] * MAX_MACS
    
    look_for_these_macs[1] = "D8:84:97:C3:1F:A8"
    look_for_these_macs[2] = "F1:39:E9:5B:2C:18"
    look_for_these_macs[3] = "F1:4B:94:83:92:2C"
    look_for_these_macs[4] = "D5:DC:9F:6C:E8:74"
    look_for_these_macs[5] = "FD:70:6A:BC:33:FC"
    look_for_these_macs[6] = "CB:D8:BD:92:4D:46"
    
    output_text = open("output_results.txt", "w")
    
    
    def setup():
        global mySniffer
        
        # Find connected sniffers
        ports = UART.find_sniffer()
        
        if len(ports) > 0:
            # Initialize the sniffer on the first COM port found with baudrate 1000000.
            # If you are using an old firmware version <= 2.0.0, simply remove the baudrate parameter here.
            mySniffer = Sniffer.Sniffer(portnum=ports[0], baudrate=1000000)
        
        else:
            print("No sniffers found!")
            return
        
        # Start the sniffer module. This call is mandatory.
        mySniffer.start()
        # Scan for new advertisers
        mySniffer.scan(findAux=True)
    
        # Wait to allow the sniffer to discover device mySniffer.
        #time.sleep(5)
        # Retrieve list of discovered devicemySniffer.
        #d = mySniffer.getDevices()
        # Find device with name "Example".
        #dev = d.find('Example')
        
        #if dev is not None:
            # Follow (sniff) device "Example". This call sends a REQ_FOLLOW command over UART.
        #    mySniffer.follow(dev)
        #else:
        #    print("Could not find device")
    
    def loop():
        # Enter main loop
        nLoops = 0
        while True:
            time.sleep(0.1)
            # Get (pop) unprocessed BLE packets.
            packets = mySniffer.getPackets()
            
            processPackets(packets) # function defined below
            
            nLoops += 1
            
            # # print diagnostics every so often
            # if nLoops % 25 == 0:
            #     #print(mySniffer.getDevices())
            #     print("inConnection", mySniffer.inConnection)
            #     print("currentConnectRequest", mySniffer.currentConnectRequest)
            #     print("packetsInLastConnection", mySniffer.packetsInLastConnection)
            #     print("nPackets", nPackets)
            #     print("packet by type", nPacketsByType)
            #     print()
            
    # Takes list of packets
    def processPackets(packets):
        global alldone
        global packets2see
        global look_for_these_macs
    
        for packet in packets:
            # packet is of type Packet
            # packet.blePacket is of type BlePacket
            global nPackets
            if packet.OK:
                # Counts number of packets which are not malformed.
                nPackets += 1
                nPacketsByType[packet.blePacket.advType] += 1
                #if packet.blePacket.advType == 7:
    
    
                if packet.RSSI > -65:               # and packet.blePacket.advType == 7:         #  packet.blePacket.advType == 7  and packet.flags == 17                
    
                    if packet.blePacket.advAddress:
                        myAddrhexvalue = packet.blePacket.advAddress
                        myAddrhexvalue = ' '.join(format(x,'02x') for x in myAddrhexvalue).upper() 
                        myAddrhexvalue = myAddrhexvalue.replace(' ',':')
                        # print(f"\nSee This-->{myAddrhexvalue}")       
                    else:
                        myAddrhexvalue = 'none'
    
    
                    for i in range(1,MAX_MACS):
    
                        if look_for_these_macs[i] in myAddrhexvalue:
                            found_flags[i] = True
                            # print(f"Address= {myAddrhexvalue} flag= {packet.flags} name={packet.blePacket.name}  List={packet.getList()}" )
    
                            myDataHexvalue = packet.getList()
                            myDataHexvalue = ' '.join(format(x,'02x') for x in myDataHexvalue).upper()
    
                            # myAddrhexvalue = myAddrhexvalue.strip('[').strip(']')
                            print("i=", str(i), "adv type=", packet.blePacket.advType, " Addr =", myAddrhexvalue, "  flag=", packet.flags, " name=", packet.blePacket.name, " data=", myDataHexvalue)
                            buffer = "\nAddr =" + str(myAddrhexvalue) + " type=" + str(packet.blePacket.advType) + "  flag=" + str(packet.flags) + " name=" + packet.blePacket.name + " data=" + myDataHexvalue
                            output_text.write(buffer)
                            packets2see-=1
                            if packets2see < 1:
                                for idx in range(1,MAX_MACS):
                                    if found_flags[idx] == False:
                                        print(f"\nNever Found this index {idx}  mac --> {look_for_these_macs[idx]}")
                                print("\nAll Done")
                                output_text.close
                                mySniffer = None
                                raise SystemExit
    
    setup()
    if mySniffer is not None:
        loop()
    
    

    This is the modified code.

  • Hi James, 

    Torbjørn is away for 2 weeks so I will take over the ticket. 
    Have you got any progress on this ? 
    Please make sure that you have a scanner that scan for the AUX_ADV_IND and send the AUX_SCAN_REQ. Otherwise the peripheral will not send the AUX_SCA_RSP. 

    I'm not so sure why in your output_result you have all packet with flag = 17. 
    Is it hexa 0x17 or decimal 17 ? 
    The AUX_SCAN_RSP should have the flag 0x17 = 23 when the ADV_EXT_IND has the flag = 0x11 = 17.

  • Hung,

    I took all the advertising type filters off and only print out any of the 6 mac addresses found.

    Maybe all of these have the same type? If you look at line 152 above in the code I print out whatever packet.blePacket.advType is. I'm not sure if its hex or decimal.  I'm sure you have read thru the conversations and know that I'm trying to get the extended advertising data. See output from the wire shark. I'm trying to use python to capture this data. Am I using the correct firmware in the dongle?

    nrf_sniffer_for_bluetooth_le_4.1.1

    Thanks.

    Jim

  • Hi Jim, 


    Could you answer my question, have you made sure you have a scanner that send the scan request?  You can use a phone (that support extended advertising) as the scanner. 

    Note that the PDU type of ADV_EXT_IND and AUX_SCAN_RSP are the same.
    Please try to use as less filter as possible so you can see the advertising data packet print out and can find the correct filter for it. 
    Try to have distinct data for example 0x123456789 in your AUX_SCAN_RSP so you can detect it quickly. If you don't have control over the DUT, please use one of our example in the SDK that can do extended advertising, for example peripheral_hr_code. I attached the main.c file and the hex file that you can use to test.

    4628.zephyr.hex

    /*
     * Copyright (c) 2020 Nordic Semiconductor ASA
     *
     * SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
     */
    
    /** @file
     *  @brief Peripheral Heart Rate over LE Coded PHY sample
     */
    #include <stddef.h>
    #include <string.h>
    #include <errno.h>
    #include <zephyr/kernel.h>
    #include <zephyr/types.h>
    #include <zephyr/sys/printk.h>
    
    #include <zephyr/bluetooth/bluetooth.h>
    #include <zephyr/bluetooth/conn.h>
    #include <zephyr/bluetooth/gatt.h>
    #include <zephyr/bluetooth/uuid.h>
    #include <zephyr/bluetooth/services/bas.h>
    #include <zephyr/bluetooth/services/hrs.h>
    
    #include <dk_buttons_and_leds.h>
    
    #define DEVICE_NAME             CONFIG_BT_DEVICE_NAME
    #define DEVICE_NAME_LEN         (sizeof(DEVICE_NAME) - 1)
    
    #define RUN_STATUS_LED          DK_LED1
    #define CON_STATUS_LED          DK_LED2
    #define RUN_LED_BLINK_INTERVAL  1000
    #define NOTIFY_INTERVAL         1000
    
    static void start_advertising_coded(struct k_work *work);
    static void notify_work_handler(struct k_work *work);
    
    static K_WORK_DEFINE(start_advertising_worker, start_advertising_coded);
    static K_WORK_DELAYABLE_DEFINE(notify_work, notify_work_handler);
    
    static struct bt_le_ext_adv *adv;
    
    static const struct bt_data ad[] = {
    	BT_DATA_BYTES(BT_DATA_FLAGS, (BT_LE_AD_GENERAL | BT_LE_AD_NO_BREDR)),
    BT_DATA_BYTES(BT_DATA_UUID16_ALL, BT_UUID_16_ENCODE(BT_UUID_HRS_VAL),
    					  BT_UUID_16_ENCODE(BT_UUID_BAS_VAL),
    					  BT_UUID_16_ENCODE(BT_UUID_DIS_VAL)),
    
    	
    };
    static const struct bt_data sd[] = {
    		BT_DATA(BT_DATA_NAME_COMPLETE, DEVICE_NAME, DEVICE_NAME_LEN)
    	
    };
    
    static void connected(struct bt_conn *conn, uint8_t conn_err)
    {
    	int err;
    	struct bt_conn_info info;
    	char addr[BT_ADDR_LE_STR_LEN];
    
    	bt_addr_le_to_str(bt_conn_get_dst(conn), addr, sizeof(addr));
    
    	if (conn_err) {
    		printk("Connection failed (err %d)\n", conn_err);
    		return;
    	}
    
    	err = bt_conn_get_info(conn, &info);
    	if (err) {
    		printk("Failed to get connection info (err %d)\n", err);
    	} else {
    		const struct bt_conn_le_phy_info *phy_info;
    		phy_info = info.le.phy;
    
    		printk("Connected: %s, tx_phy %u, rx_phy %u\n",
    		       addr, phy_info->tx_phy, phy_info->rx_phy);
    	}
    
    	dk_set_led_on(CON_STATUS_LED);
    }
    
    static void disconnected(struct bt_conn *conn, uint8_t reason)
    {
    	printk("Disconnected (reason 0x%02x)\n", reason);
    
    	k_work_submit(&start_advertising_worker);
    
    	dk_set_led_off(CON_STATUS_LED);
    }
    
    BT_CONN_CB_DEFINE(conn_callbacks) = {
    	.connected = connected,
    	.disconnected = disconnected,
    };
    
    static int create_advertising_coded(void)
    {
    	int err;
    	struct bt_le_adv_param param =
    		BT_LE_ADV_PARAM_INIT( 
    				     BT_LE_ADV_OPT_EXT_ADV|BT_LE_ADV_OPT_SCANNABLE,
    				     BT_GAP_ADV_FAST_INT_MIN_2,
    				     BT_GAP_ADV_FAST_INT_MAX_2,
    				     NULL);
    
    	err = bt_le_ext_adv_create(&param, NULL, &adv);
    	if (err) {
    		printk("Failed to create advertiser set (err %d)\n", err);
    		return err;
    	}
    
    	printk("Created adv: %p\n", adv);
    
    	err = bt_le_ext_adv_set_data(adv, NULL,0, sd,ARRAY_SIZE(sd));
    	if (err) {
    		printk("Failed to set advertising data (err %d)\n", err);
    		return err;
    	}
    
    	return 0;
    }
    
    static void start_advertising_coded(struct k_work *work)
    {
    	int err;
    
    	err = bt_le_ext_adv_start(adv, NULL);
    	if (err) {
    		printk("Failed to start advertising set (err %d)\n", err);
    		return;
    	}
    
    	printk("Advertiser %p set started\n", adv);
    }
    
    static void bas_notify(void)
    {
    	uint8_t battery_level = bt_bas_get_battery_level();
    
    	__ASSERT_NO_MSG(battery_level > 0);
    
    	battery_level--;
    
    	if (!battery_level) {
    		battery_level = 100;
    	}
    
    	bt_bas_set_battery_level(battery_level);
    }
    
    static void hrs_notify(void)
    {
    	static uint8_t heartrate = 100;
    
    	heartrate++;
    	if (heartrate == 160) {
    		heartrate = 100;
    	}
    
    	bt_hrs_notify(heartrate);
    }
    
    static void notify_work_handler(struct k_work *work)
    {
    	/* Services data simulation. */
    	hrs_notify();
    	bas_notify();
    
    	k_work_reschedule(k_work_delayable_from_work(work), K_MSEC(NOTIFY_INTERVAL));
    }
    
    int main(void)
    {
    	uint32_t led_status = 0;
    	int err;
    
    	printk("Starting Bluetooth Peripheral HR coded example\n");
    
    	err = dk_leds_init();
    	if (err) {
    		printk("LEDs init failed (err %d)\n", err);
    		return 0;
    	}
    
    	err = bt_enable(NULL);
    	if (err) {
    		printk("Bluetooth init failed (err %d)\n", err);
    		return 0;
    	}
    
    	printk("Bluetooth initialized\n");
    
    	err = create_advertising_coded();
    	if (err) {
    		printk("Advertising failed to create (err %d)\n", err);
    		return 0;
    	}
    
    	k_work_submit(&start_advertising_worker);
    	k_work_schedule(&notify_work, K_NO_WAIT);
    
    	for (;;) {
    		dk_set_led(RUN_STATUS_LED, (++led_status) % 2);
    		k_sleep(K_MSEC(RUN_LED_BLINK_INTERVAL));
    	}
    }
    

    The scan response packet will contain many 0x41 that make it easy to detect. 


    If you see the data on wireshark that means you can get the same data  on your python script, I don't see why you think the firmware on the dongle would be an issue here. 

Reply
  • Hi Jim, 


    Could you answer my question, have you made sure you have a scanner that send the scan request?  You can use a phone (that support extended advertising) as the scanner. 

    Note that the PDU type of ADV_EXT_IND and AUX_SCAN_RSP are the same.
    Please try to use as less filter as possible so you can see the advertising data packet print out and can find the correct filter for it. 
    Try to have distinct data for example 0x123456789 in your AUX_SCAN_RSP so you can detect it quickly. If you don't have control over the DUT, please use one of our example in the SDK that can do extended advertising, for example peripheral_hr_code. I attached the main.c file and the hex file that you can use to test.

    4628.zephyr.hex

    /*
     * Copyright (c) 2020 Nordic Semiconductor ASA
     *
     * SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
     */
    
    /** @file
     *  @brief Peripheral Heart Rate over LE Coded PHY sample
     */
    #include <stddef.h>
    #include <string.h>
    #include <errno.h>
    #include <zephyr/kernel.h>
    #include <zephyr/types.h>
    #include <zephyr/sys/printk.h>
    
    #include <zephyr/bluetooth/bluetooth.h>
    #include <zephyr/bluetooth/conn.h>
    #include <zephyr/bluetooth/gatt.h>
    #include <zephyr/bluetooth/uuid.h>
    #include <zephyr/bluetooth/services/bas.h>
    #include <zephyr/bluetooth/services/hrs.h>
    
    #include <dk_buttons_and_leds.h>
    
    #define DEVICE_NAME             CONFIG_BT_DEVICE_NAME
    #define DEVICE_NAME_LEN         (sizeof(DEVICE_NAME) - 1)
    
    #define RUN_STATUS_LED          DK_LED1
    #define CON_STATUS_LED          DK_LED2
    #define RUN_LED_BLINK_INTERVAL  1000
    #define NOTIFY_INTERVAL         1000
    
    static void start_advertising_coded(struct k_work *work);
    static void notify_work_handler(struct k_work *work);
    
    static K_WORK_DEFINE(start_advertising_worker, start_advertising_coded);
    static K_WORK_DELAYABLE_DEFINE(notify_work, notify_work_handler);
    
    static struct bt_le_ext_adv *adv;
    
    static const struct bt_data ad[] = {
    	BT_DATA_BYTES(BT_DATA_FLAGS, (BT_LE_AD_GENERAL | BT_LE_AD_NO_BREDR)),
    BT_DATA_BYTES(BT_DATA_UUID16_ALL, BT_UUID_16_ENCODE(BT_UUID_HRS_VAL),
    					  BT_UUID_16_ENCODE(BT_UUID_BAS_VAL),
    					  BT_UUID_16_ENCODE(BT_UUID_DIS_VAL)),
    
    	
    };
    static const struct bt_data sd[] = {
    		BT_DATA(BT_DATA_NAME_COMPLETE, DEVICE_NAME, DEVICE_NAME_LEN)
    	
    };
    
    static void connected(struct bt_conn *conn, uint8_t conn_err)
    {
    	int err;
    	struct bt_conn_info info;
    	char addr[BT_ADDR_LE_STR_LEN];
    
    	bt_addr_le_to_str(bt_conn_get_dst(conn), addr, sizeof(addr));
    
    	if (conn_err) {
    		printk("Connection failed (err %d)\n", conn_err);
    		return;
    	}
    
    	err = bt_conn_get_info(conn, &info);
    	if (err) {
    		printk("Failed to get connection info (err %d)\n", err);
    	} else {
    		const struct bt_conn_le_phy_info *phy_info;
    		phy_info = info.le.phy;
    
    		printk("Connected: %s, tx_phy %u, rx_phy %u\n",
    		       addr, phy_info->tx_phy, phy_info->rx_phy);
    	}
    
    	dk_set_led_on(CON_STATUS_LED);
    }
    
    static void disconnected(struct bt_conn *conn, uint8_t reason)
    {
    	printk("Disconnected (reason 0x%02x)\n", reason);
    
    	k_work_submit(&start_advertising_worker);
    
    	dk_set_led_off(CON_STATUS_LED);
    }
    
    BT_CONN_CB_DEFINE(conn_callbacks) = {
    	.connected = connected,
    	.disconnected = disconnected,
    };
    
    static int create_advertising_coded(void)
    {
    	int err;
    	struct bt_le_adv_param param =
    		BT_LE_ADV_PARAM_INIT( 
    				     BT_LE_ADV_OPT_EXT_ADV|BT_LE_ADV_OPT_SCANNABLE,
    				     BT_GAP_ADV_FAST_INT_MIN_2,
    				     BT_GAP_ADV_FAST_INT_MAX_2,
    				     NULL);
    
    	err = bt_le_ext_adv_create(&param, NULL, &adv);
    	if (err) {
    		printk("Failed to create advertiser set (err %d)\n", err);
    		return err;
    	}
    
    	printk("Created adv: %p\n", adv);
    
    	err = bt_le_ext_adv_set_data(adv, NULL,0, sd,ARRAY_SIZE(sd));
    	if (err) {
    		printk("Failed to set advertising data (err %d)\n", err);
    		return err;
    	}
    
    	return 0;
    }
    
    static void start_advertising_coded(struct k_work *work)
    {
    	int err;
    
    	err = bt_le_ext_adv_start(adv, NULL);
    	if (err) {
    		printk("Failed to start advertising set (err %d)\n", err);
    		return;
    	}
    
    	printk("Advertiser %p set started\n", adv);
    }
    
    static void bas_notify(void)
    {
    	uint8_t battery_level = bt_bas_get_battery_level();
    
    	__ASSERT_NO_MSG(battery_level > 0);
    
    	battery_level--;
    
    	if (!battery_level) {
    		battery_level = 100;
    	}
    
    	bt_bas_set_battery_level(battery_level);
    }
    
    static void hrs_notify(void)
    {
    	static uint8_t heartrate = 100;
    
    	heartrate++;
    	if (heartrate == 160) {
    		heartrate = 100;
    	}
    
    	bt_hrs_notify(heartrate);
    }
    
    static void notify_work_handler(struct k_work *work)
    {
    	/* Services data simulation. */
    	hrs_notify();
    	bas_notify();
    
    	k_work_reschedule(k_work_delayable_from_work(work), K_MSEC(NOTIFY_INTERVAL));
    }
    
    int main(void)
    {
    	uint32_t led_status = 0;
    	int err;
    
    	printk("Starting Bluetooth Peripheral HR coded example\n");
    
    	err = dk_leds_init();
    	if (err) {
    		printk("LEDs init failed (err %d)\n", err);
    		return 0;
    	}
    
    	err = bt_enable(NULL);
    	if (err) {
    		printk("Bluetooth init failed (err %d)\n", err);
    		return 0;
    	}
    
    	printk("Bluetooth initialized\n");
    
    	err = create_advertising_coded();
    	if (err) {
    		printk("Advertising failed to create (err %d)\n", err);
    		return 0;
    	}
    
    	k_work_submit(&start_advertising_worker);
    	k_work_schedule(&notify_work, K_NO_WAIT);
    
    	for (;;) {
    		dk_set_led(RUN_STATUS_LED, (++led_status) % 2);
    		k_sleep(K_MSEC(RUN_LED_BLINK_INTERVAL));
    	}
    }
    

    The scan response packet will contain many 0x41 that make it easy to detect. 


    If you see the data on wireshark that means you can get the same data  on your python script, I don't see why you think the firmware on the dongle would be an issue here. 

Children
  • Hung,

    Forgive me, I'm new to both Bluetooth and Python and most of the time I have to research things on the internet. I think what you are looking for is below. I have a company phone running nrfConnect and this is what it sees.

    I'm not sure what you mean by "that send the scan request". Does the receiver (phone) send out a request for Bluetooth data? Is this what I'm missing in the Python script?

    Jim

  • Hi Jim, 
    Yes, as far as I understand, you are looking for the AUX_SCAN_RSP (scan response) from the DUT. 
    For the DUT to send the scan response, you would need to have a scan request (AUX_SCAN_REQ).
    If you take a look at your screenshot or the one I sent you will see: 

    It starts with ADV_EXT_IND then AUX_ADV_IND, after that the phone send AUX_SCAN_REQ and then the device under test will send AUX_SCAN_RSP. 

    So you need to have a phone that scan and send scan request to be able to capture AUX_SCAN_RSP. 

    The problem is that the phone only scan for a short period of time (default 45seconds). You can increase that by going to Menu ->Settings -> Scanner->Scanning Period to increase that. 

    After you have that, make sure you have the phone scanning and then try to capture again. 


  • Wow, I did not know that. I did what you said and scanned. I took a picture of both the data before the utf-8 decoding and without...

    Do you have Python code (or snippet) that will send this request to the dongle? That is what I may be missing.

    Jim.

  • Hi Jim, 

    The dongle doesn't send anything. It's the sniffer. So it only scan for packets without interacting to the communication. 

    If you don't want to use the phone as the scanner you can write your own scanner and send the scan request packet. You use base your application on one of our sample to do so. 

    But my suggestion here is to use the phone as the scanner first. Then use the dongle to capture the AUX_SCAN_RSP. 

    Another thing you need to note is that you would need to follow the device for the sniffer to follow the AUX_SCAN_REQ. 

    I'm not familiar with the python code, but there must be a python API that you can call to follow a device (the same as when you select the device in the drop down list ).
    You need to call the function before you can get the AUX_SCAN_REQ. 

  • Sorry but I'm confused. Please be patient I'm trying to understand.

    You say that the dongle doesn't send anything but I thought it has to send AUX_SCAN_REQ. to get the extended advertising data.

    Is the extended advertising data always being sent without a request to send it?

    My setup...

    I have a number of our Bluetooth devices sending out advertised messages.  I have the Android phone scanning using your rfConnect application running on the phone. with a filter of G4.

    The data being captured by the phone is the snapshot of what I sent above. The data seen by the phone is what I like to capture.

    Confused.

    Jim

Related