This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

Wireshark cannot find interface to nRF51 dongle



I have used an nRF 51 dongle for capturing BLE packets on my Mac using Wireshark,, but it no longer works.
The only system change that I can recall that might affect this is that
I recently upgraded to Mac OSX Catalina Version 10.15.5, which was an incremental update.

The usb connection and dongle must be in good shape, because I am to run nRF Connect v3.4.1 - Bluetooth Low Energy successfully.

I am using nrf_sniffer_for_bluetooth_le_3.0.0_129d2b3.zip
To be sure that the problem is not related to Wireshark or its configuration, I have been testing with:
extcap/nrf_sniifer_ble.sh --extcap-interfaces

And, it is never able to find an interface.  It does not generate an error, but does not find an interface.
Can you suggest a solution and/or additional tests to run?

Thank you !

Parents Reply Children
  • It is not the same application. The Bluetooth Low Energy app is an application that takes serial commands from the computer, and scans for and connects to a device, pretty much like the examples in the SDK. Then it reports events and changes in characteristics back to the computer. 

    The Sniffer application is not using the softdevice, like the SDK does. It is a custom FW that will scan for advertisement packets on channel 37. When it receives this, it switches to 38 and tries to catch that same packet on that channel, and then on channel 39. It is possible to tell the sniffer FW (via serial from computer) to follow a specific device. If so, it will filter out anything that is not related to that device. It will also follow that device into a connection. Just picking up the connection request, and the channel map, and continue to sniff the packets from both the peripheral an central in that connection. This is not at all possible using the Softdevice that is used in nRF Connect -> Bluetooth Low energy. The sniffer is not capable of connecting to a device on it's own. Only follow a device into a connection. The sniffer will never transmit a packet. Only listen, and dump the relevant data over serial.

    So does this mean that the sniffer is working, or did I misunderstand?

    Best regards,

    Edvin

  • I'm sorry I was not clear. 

    The nrf_sniffer_ble  still does NOT work for me.

    I mentioned that the Bluetooth Low Energy app does work for me, because I thought that might provide

    some confirmation that the appropriate hex file had been flashed to the dongle.

  • I have looked into nrf_sniffer_ble.py and determined that  UART.find_sniffer  returns an empty list.
    reader.decodeFromSLIP(0.3, complete_timeout=0.3)  always times out.
    I uncommented these lines in UART.readByte
            logging.info('rbtype: {}'.format(r.__class__))
            logging.info('r: {}'.format(r))
    and set the logger level to logging.INFO
    to see if it was seeing any values on the interface.

    There is something there, but it never finds  a SLIP_START.
    Here is the output from such a trial.
    I removed all the lines "rbtype: <class 'int'>" to shorten this list.
    Does this provide any useful information ?

    % ./nrf_sniffer_ble.sh --extcap-interfaces
    Started PID 836
    Namespace(baudrate=None, capture=False, device='', extcap_capture_filter=None, extcap_config=False, extcap_control_in=None, extcap_control_out=None, extcap_dlts=False, extcap_interface=None, extcap_interfaces=True, fifo=None, only_advertising=False)
    extcap {version=3.0.0}{display=nRF Sniffer for Bluetooth LE}{help=www.nordicsemi.com/.../nRF-Sniffer-for-Bluetooth-LE}
    Opening serial port /dev/cu.Bluetooth-Incoming-Port
    rbtype: <class 'NoneType'>
    r: None
    closing UART
    Opening serial port /dev/cu.Bluetooth-Incoming-Port
    rbtype: <class 'NoneType'>
    r: None
    closing UART
    Opening serial port /dev/cu.usbmodem0006801572801
    r: 192
    r: 0
    r: 47
    r: 0
    r: 209
    r: 1
    r: 126
    r: 192
    r: 192
    r: 0
    r: 47
    r: 0
    r: 209
    r: 1
    r: 126
    r: 192
    r: 192
    closing UART
    Opening serial port /dev/cu.usbmodem0006801572801
    r: 252
    r: 248
    r: 249
    r: 248
    r: 254
    r: 248
    r: 255
    r: 252
    r: 252
    closing UART
    control {number=0}{type=selector}{display=Device}{tooltip=Device list}
    control {number=1}{type=string}{display=Passkey / OOB key}{tooltip=6 digit temporary key or 16 byte Out-of-band (OOB) key in hexadecimal starting with '0x', big endian format. If the entered key is shorter than 16 bytes, it will be zero-padded in front'}{validation=\b^(([0-9]{6})|(0x[0-9a-fA-F]{1,32}))$\b}
    control {number=2}{type=string}{display=Adv Hop}{default=37,38,39}{tooltip=Advertising channel hop sequence. Change the order in which the siffer switches advertising channels. Valid channels are 37, 38 and 39 separated by comma.}{validation=^\s*((37|38|39)\s*,\s*){0,2}(37|38|39){1}\s*$}{required=true}
    control {number=3}{type=button}{role=help}{display=Help}{tooltip=Access user guide (launches browser)}
    control {number=4}{type=button}{role=restore}{display=Defaults}{tooltip=Resets the user interface and clears the log file}
    control {number=5}{type=button}{role=logger}{display=Log}{tooltip=Log per interface}
    value {control=0}{value= }{display=All advertising devices}{default=true}
    Exiting PID 836

Related