Wireless nRF24L01+ sniffer for MySensors


  • Mod

    Ok, brace yourself! :zap:

    I finally had the time to write on my blog about the wireless network sniffer I've been working on lately.
    For the impatient see:

    This wireless sniffer allows you to capture traffic on air between multiple nodes of your MySensors network and is able to even capture packets with invalid CRC Values. The amount of CRC errors gives a fair indication of link quality, which is not provided by the nRF24.

    The sniffer in action:
    nRF24L01+ Wireless network sniffer & Wireshark – 00:46
    — Emmission

    Actual capturing is performed by an nRF24L01+ module connected to an Arduino (we all known how to do that ;-) ). No other hardware is required.

    A small piece of software (currently only for Windows, sorry @hek) reads the packet data from the sniffer and forwards it to Wireshark, a network protocol analyzer.
    Wireshark then allows you to inspect the packages from high-level down to the individual bits, filter by content, and analyze statistics.
    Details are all in the blog posts. Last post in this series, which is yet to be written, will dive into using Wireshark and getting useful information from it.
    I didn't want to keep this tool to myself until finally finished and documented, so there can (will?) still be some bugs left...

    Please discuss any issues/ideas/suggestions in here or in my blog.

    Happy sniffin' to all of you!


  • Admin

    Cool. You must start collecting some statistics on link quality for different nrf-antenna layouts/models.


  • Mod

    @hek with this tool anybody can do it!


  • Mod

    @Yveaux said:

    A small piece of software currently only for Windows

    What language, tool did you create this with?

    Maybe I can help making it either multi platform (Java or Xojo) or Mac (Cocoa)...


  • Mod

    @marceltrapman it's written in C (got a cpp extension on visual studio...) but builds heavily on Windows api for serial comms and named pipe interfacing.


  • Hero Member

    Impressive project, that indeed deserves the title "Embedded Innovation" :thumbsup:

    Did dead the blog posts, very good documented, good to have this information.

    I am eager to see more of the Wireshark protocol dissector/analyzer. I find looking at traces almost always the best way to get familiar with protocols.


  • Mod

    @Yveaux hmm ok. Will check it out first on my Windows box.



  • Very good job man! i have a question! can i use a vb.net program to send commands from the gateway (conected via usb) to sensors. if y use de command SERIAL.WRITE (in vb.net) dont work!


  • Mod

    @ch3b7 better create a new topic for this, but I don't see why it wouldn't be possible


  • Mod

    @Yveaux Do you have any idea why I get this error when compiling:

    NRF24_sniff.ino: In function 'void loop()':
    NRF24_sniff.ino:287:20: error: 'class CircularBuffer<_NRF24_packet_t>' has no member named 'clear'
    

    I am using Arduino 1.5.7 (but 1.0.5 generates the same error).
    As mentioned in your post I created a separate 'Arduino Sniffer' folder with its own libraries in there.

    Any idea what I am doing wrong?


  • Mod

    @marceltrapman I recently added the clear method to the circular buffer implementation. Maybe I forgot to commit to the sniffer repository... I'm mobile right now, so maybe you can check the circular buffer component in the root of my GitHub account. If this does have the clear method you should copy that over the one from the sniffer repo.
    I'll check things tonight....


  • Mod

    @Yveaux damn, forget it... The latest version is only on my development pc then... I'll update the repo tonight.


  • Mod

    @Yveaux said:

    @Yveaux damn, forget it... The latest version is only on my development pc then... I'll update the repo tonight.

    I had already 'sniffed' the libraries and could not find it but I always think it is me doing something wrong :)

    No problem, the rest is installed.
    Uploading the sketch was the last thing to do!


  • Mod

    @marceltrapman Good to hear you got that far!
    I knew I missed something... Now it should be fixed.
    Please try again!


  • Mod

    @Yveaux said:

    @marceltrapman Good to hear you got that far!
    I knew I missed something... Now it should be fixed.
    Please try again!

    Thank you, I will check out your updated sketch and load it into my Arduino.
    Not sure that I will have the time to test it tonight though (but I must admit that I am a bit restless :) ).


  • Mod

    Compiling and uploading went well. Now the rest :)


  • Mod

    @marceltrapman Apparently you're the first to build the 'thing', so thanks for pioneering!


  • Mod

    @Yveaux Not a problem, I like being a pioneer and I greatly appreciate the efforts you put into this :)

    I thought I had everything in order this afternoon.
    Installed Visual C++ Redistributable Packages for Visual Studio 2012 SP 4 but forgot to test...

    Right now, whatever I use 'Visual C++ Redistributable Packages for Visual Studio 2012 SP 4' or (for testing purposes) 'Visual C++ Redistributable Packages for Visual Studio 2013' both x64 I still see the error message 'The program can't start because MSVCR110.dll is missing...'.
    A restart should not be necessary but even a restart did not help.

    Uninstalling all packages and reinstalling did not help either.

    Any idea?


  • Mod

    For those following this topic I have not solved it but it could be related to this:
    Upgrade to 8.1 and stuff stops working (not what most people would call an "up"-grade).


  • Mod

    OK, for those of you on Windows 8.1 this will probably not work 'out of the box'.

    For me, a Mac user, the following solution makes complete sense :-P

    You have to install or repair Microsoft Essentials and the dll will be available.
    Don't ask me why but it works!


Log in to reply
 

Looks like your connection to MySensors Forum was lost, please wait while we try to reconnect.