The Mesh Observer is a monitoring device that attaches to a Mesh Extender and sniffs Wi-Fi and UHF packets, forwarding them to another machine for analysis. It is useful for mapping out traffic through a Serval mesh network and diagnosing issues with bundle movements. The analysed packets are drawn into a UML Sequence Diagram.
Similar devices such as Second-Generation Dragino boards are being investigated for use in place of a GL-AR150. So far it seems that most devices supported by OpenWRT with one or more USB ports are suitable candidates.
The following sections will outline how to construct a GL-AR150-based Mesh Observer and compile, and flash firmware onto it. Note that these steps are based on the the Second-Generation Mesh Extender firmware compilation process. It is advised that you follow those steps first, as they will set up the development environment you will be using here.
NOTE: These steps were made and tested for Ubuntu Linux 18.04. The packages and commands listed here may not work with other Linux distributions, so your mileage may vary.
See the Mesh Extender firmware prerequisites.
< >) by pressing Space (you may need to press Space multiple times to deselect it)
<*>) by pressing Space (you may need to press Space multiple times to select it properly)
The firmware file should be found under
The GL-AR150 features a web-based firmware update tool that we will be using for simplicity. If this method fails, there are serial pins on the board you can use with the Mesh Extender flashing process to flash the firmware the hard way, however the former method is preferred as it does not immediately void your warranty.
After releasing the reset button, the red light should blink rapidly for about a second. If not, and instead both green LEDs are lit, then you must have released the reset button too early or too late.
When the device finishes rebooting, it will boot the Mesh Observer firmware and should be available via SSH at
192.168.1.1 with the username and password set to
To get the UHF packets from the Mesh Extender, the Mesh Observer uses a pass-through DB-25 breakout board, so that it can tap into the TX and RX lines of the radio without having to replace the standard power cable.
The breakout is connected to several USB-UART adaptors through some custom-made wires to connect a single line to two adaptors so that they can be monitored at two different serial speeds. The wires have a 2-pin DuPont connector on the breakout-end and two single-pin DuPont connectors on the USB-end. Between them is a single wire that connects each of the pins together.
The final result should look similar to the pictures below:
The final product should look like the images below:
Mesh Observer deployment is fairly straightforward:
The Mesh Observer should boot and power up the USB hub. Once it is done booting, it will be accessible via SSH at
The final setup should look similar to the below image:
The Mesh Observer firmware comes with a capture program ready to use. The capture client program (
capture) will capture packets from the Mesh Observer's Wi-Fi interface and the Mesh Extender's radio via the UHF breakout. The captured packets are sent to the capture server program (
svrCap) which will dissect each packet, classify them by type and/or payload, and draw them on a UML Sequence Diagram for analysis (shown to the right).
To start capturing with the capture server program:
Ctrl+Cto stop capturing and generate a sequence diagram like the one shown to the right
The capture server should start listening to port 3940 on all interfaces and begin processing incoming packets captured by clients. To stop the capture server, press
Ctrl+C and the program should briefly generate a diagram of the captured output and halt.
Capturing packets on a Mesh Observer is quite simple, however due to SSH limitations, it does require that you are connected to the device for the duration of the capture. This can be avoided by using the
start-stop-daemon program packaged with the Mesh Observer firmware:
start-stop-daemon -Sbx capture <args…>.
iw phy phy0 set channel 11to listen on Wi-Fi channel 11
The Mesh Observer should start capturing packets and sending them to the capture server at the specified IP address. To stop capturing, press
Ctrl+C and the program should halt.
NOTE: There are several other optional available for the capture client program. Running
capture --help will list each of them with a description of the effect they have.