Base mode hack: serial output plus raw log

What can I do to make my base output to the serial port and also to a raw log file?

In the case where I loose radio reception for RTK, I’d like to be able to continue working and then post-process the logs later.

The other use case is where one reach is the base with radio, and two more reach are rovers (one raw logging and one doing RTK with radios).

Yeah, this is a limitation with Reach currently. We completely understand the need to have both the corrections output and the log on the base station. This functionality will come.

What Luke is doing currently is he has two units as bases as a workaround.

I am lucky enough to have 3 Reach now, so I will probably do the same as Luke for now.


I just tried this hack and it seems to allow the base to log to file plus serial (uart) output:

  • set base output to tcpsvr, port 9000

  • start the base, then

  • ssh into Reach base and enter the following command:
    nc 9000 | tee /home/reach/logs/my_base_log.rtcm3 > /dev/ttyMFD2

    • nc connects to the tcp server,
    • tee splits the output to a file and also to the serial port

That is just the basic method. There is more to it, like:

  • backgrounding the process
  • stopping the process
  • transferring the log file you created
  • deleting the log file you created

I’m changing the title of this thread to include HACK so I can mark it solved.

1 Like

in the above command:

If you disconnect your terminal, then netcat exits. The answer to that is the -d switch, but it is not supported in that version. Second option is to run screen. That way you can detach the screen session and the nc command stays running.

Last time when testing in the field, the base log file was saving properly on the base, and the data was coming through the RFD900+ radios, but ReachView was not accepting the input (no grey bars on the status page). Not sure why. More testing needed at this point.

Reach has tmux installed by default, which is a really handy to run something like this in background.

How did you have the rover configured? I think the issue is probably connected to ttyMFD2 baud rate. By default, without external settings it’s 9600.

The rover was configured for serial input, and you were right, I forgot to set the baud rate. If you start it in serial mode first, then it sets the baud rate, but if not then you must set it yourself.

After setting base output to tcpsvr and starting the base, use your smartphone to open a terminal window and connect to the base with:

ssh root@reach.local screen stty -F /dev/ttyMFD2 57600 nc 9000 | tee my_base_log.rtcm3 > /dev/ttyMFD2

open second terminal window and:

ssh root@reach.local screen -d exit

go back to first terminal window and:


Now set rover input to serial and start it and get to work.

When you are finished and want to stop the base log, go back to the base and:

ssh root@reach.local ps | grep SCREEN kill 619 # or whatever the PID is for SCREEN exit

These commands were picked to avoid the use of the CNTRL key mainly because it is not supported in my Android terminal emulator app.

I have not tried tmux yet, but it seems very similar to screen.

1 Like