Live Asset Tracking with the OzzMaker SARA-R5 LTE-M GPS + 10DOF and Traccar

Ever wanted to know where your caravan, boat, trailer or ute is — right now, from your phone — without paying a monthly subscription to a tracking company?

In this guide we will build a complete, self-hosted live asset tracker using:

  • An OzzMaker SARA-R5 LTE-M GPS + 10DOF board on a Raspberry Pi Zero
  • Traccar, a free and open-source GPS tracking server
  • A free “Always Free” VM on Oracle Cloud to host Traccar
  • A PPP data connection over LTE-M to upload positions
  • Geofencing, so you get an alert the moment your asset leaves (or enters) an area you define

Why Traccar?

Traccar Main page

Traccar is a mature, open-source GPS tracking platform used by everyone from hobbyists to commercial fleets — and self-hosting it means you get all of its features for free, with your data staying on your own server. Highlights include:

  • Live tracking — watch all your devices move on a map in real time, from any browser or the free Traccar Manager app (iOS/Android).
  • Geofencing — draw virtual boundaries (circles or polygons) on the map and have Traccar watch them for you. We’ll set this up in Part 7.
  • Alerts & notifications — get notified by email, web popup or push notification when a device exits a geofence, exceeds a speed limit, goes offline, moves after being stationary, or triggers an ignition/motion event.
  • Route replay — scrub back through history and replay exactly where an asset travelled on any day, complete with speed at every point. Great for reviewing a trip, or working out where the trailer went last Tuesday.
  • Reports — built-in trip, stop, distance, and event summary reports over any date range, exportable to Excel.
  • Multiple devices — one server can track as many devices as you like. Build a second tracker for the boat, add the family cars with the free Traccar Client phone app — all on the same map.
  • Users & sharing — create extra accounts with access to only some devices, handy if you want to share the caravan’s location with family without handing over admin access.
  • Full REST API — everything the web interface can do can be scripted, so you can integrate tracking data into your own projects.

We’ll be using live tracking, geofencing, alerts and route replay in this guide — but it’s worth exploring the rest once you’re up and running.

How it all fits together

The SARA-R5 module does two jobs at once. Its integrated M8 GNSS receiver streams NMEA position data to the Pi, while the LTE-M modem provides an internet connection via PPP. A small Python script reads the GPS position and sends it to your Traccar server every few seconds using Traccar’s simple HTTP-based OsmAnd protocol.

GPS Tracker

  1.  NMEA data is sent from GPS to the Pi
  2. A python script sends the location data to the Traccar host on the internet via PPP
  3. The SARA-R5 establishes a PPP connection, giving the Pi internet access

Part 1 — Create a free Oracle Cloud VM

Oracle’s “Always Free” tier includes small VMs that never expire and cost nothing — ideal for a lightweight Traccar server.

  1. Sign up at oracle.com/cloud/free
    1. This is a very important gotcha in this guide. Create your Virtual Cloud Network (VCN) before you create your instance. If you skip this and try to create the network during instance setup, the public IP option will be greyed out — meaning you won’t be able to connect to your server via SSH.
    2. Click the hamburger menu (☰) in the top-left corner
    3. Click ‘Networking’
    4. Click “Virtual Cloud Networks”
    5. Click “Create VCN” and then give it a name (you will use this name later), keep all other values as default and click “save”
  2. From the hamburger menu (☰), go to Compute → Instances → Create Instance
  3. Under Image, select Ubuntu 22.04 (or later) as the image
  4. Under Shape,  choose “VM.Standard.E2.1.Micro” Always Free eligible shape.
  5. Click Next
  6. Under “Networking” , choose ‘Select existing virtual cloud network’, then under network compartment, choose the VCN you created in step one.
  7. And choose existing subnet.
  8. At the bottom of the page, download SSH public key
  9. Click next and then leave everything default on storage page.
  10. Next and then click “Create” on the summary page.

Once the instance is created, you will be able to see the public IP assigned to it.

Oracle cloud instance
Oracle cloud instance

One last item to do is to update the firewall rules to allow your Raspberry Pi to send information to Traccar and to allow access to the web GUI.

  1. Click the hamburger menu (☰) in the top-left corner
  2. Click ‘Networking’
  3. Click “Virtual Cloud Networks”
  4. Click the VCN you created earlier.
  5. Go to “subnets” tab
  6. Select public subnet for your VCN
  7. Go to security
  8. Go to the default security list for your VCN
  9. And then go to “Security rules”
  10. Click “Add ingress rule”
    1. Source Type = CIDR
    2. Source CIDR = 0.0.0.0/0
    3. IP Protocol = TCP
    4. Destination port = 8082
    5. Add a second ingress rule, with port 5055
  11. Your rules should look something like the below image
    Oracle Cloud Security list
    Oracle Cloud Security list

     

Log into your VM via SSH and install Traccar

To log into your VM, you will use the SSH private key downloaded earlier.

We will need to convert this into a format which can be used by Putty.

Convert private key

  1. Download PuttyGen from here. Search for puttygen.exe
  2. Open puttygen and import your key using the “Load” button.
    You should see something like below. (you may need to change the dropdown in the file selection to show all file types)

    puttygen
    Puttygen load key
  3. Now click “Save private key”.  A password isnt needed.

Load private key into Putty

  1. Open putty, put in the public IP address for your Oracle free VM
    Putty
    Putty with Oracle VM IP

     

  2. Go to connection → Data in the left menu and enter in “ubuntu” as the username. This is the default user account on the Oracle VM
    putty
    Putty login username

     

  3. Go to connection → SSH → Auth → Credentials  and add the converted private key
    putty
    Putty with private key

     

  4. You should now be able to log into your VM via SSH.

 

Part 2 — Install Traccar (and Docker)

We will be using docker and downloading the Traccar container

ubuntu@traccar:~$ sudo apt update
ubuntu@traccar:~$ sudo apt install -y docker.io

Now setup the container

sudo docker run -d --restart unless-stopped --name traccar \
-p 8082:8082 \
-p 5055:5055 \
-v /opt/traccar/data:/opt/traccar/data:rw \
-v /opt/traccar/logs:/opt/traccar/logs:rw \
-e CONFIG_USE_ENVIRONMENT_VARIABLES=true \
-e MAIL_SMTP_HOST=smtp.gmail.com \
-e MAIL_SMTP_PORT=587 \
-e MAIL_SMTP_STARTTLS_ENABLE=true \
-e MAIL_SMTP_AUTH=true \
-e MAIL_SMTP_FROM=username@gmail.com \
-e MAIL_SMTP_USERNAME=username@gmail.com \
-e MAIL_SMTP_PASSWORD="xxxxxxx" \
traccar/traccar:latest

If you don’t want to enable email notifications, you can skip the lines beginning with MAIL_SMTP.
Setting up email will allow you to receive email alerts for events, such as geofence events.

If all goes well, you should be able to log into the web page of your Traccar instance, using

http://<VM_PUBLIC_IP>:8082

The default login details are admin/admin

traccar
Traccar front page

Register a device in Traccar

  • In the Traccar web UI, click the + button to add a device
  • Give it a name, e.g. caravan
  • Set the Identifier to something unique, e.g. ozzmaker-tracker-01

The identifier is how Traccar matches incoming position reports to a device — we’ll use it in our Python script shortly.

 

Part 3 — Setup multiplexing on the Pi Serial interface

We need to setup multiplexing on the serial interface of the Raspberry Pi . When enabling the multiplexer protocol on the Raspberry Pi and SARA-R5 module, you can access 3 UART channels which would be able to perform these functions;

  • Channel 0 – AT Commands and Data
  • Channel 1 – AT Commands and Data
  • Channel 2 – GNSS Streaming

We have a dedicated guide for this here.

Part 4 — Stream GNSS data to a dedicated serial interface

You now need to stream the GNSS data to the Raspberry Pi virtual serial interface (/dev/ttyGSM2).

We have a dedicated guide for this also, which can be found here

 

Part 5 — Set up the PPP data connection on the Raspberry Pi

Now to get the Pi online through the SARA-R5’s LTE-M modem. We’ll use pppd with a chat script, dialling out over the multiplexer data channel (/dev/ttyGSM1).

You can follow this guide on how to get PPP going on your SARA-R5.

 

Part 6 — Send GPS position to Traccar

With the GPS streaming NMEA sentences on /dev/ttyGSM2 and an internet connection over ppp0, all that’s left is a script to glue the two together.

Traccar’s OsmAnd protocol makes this trivially easy — it’s just an HTTP request with the position in the URL parameters:

http://YOUR_SERVER_IP:5055/?id=ozzmaker-tracker-01&lat=-33.86&lon=151.20&speed=0

Here is the python script used to send GPS data to your Traccar host(make sure you update the Traccar host IP);

#!/usr/bin/env python3
"""
Live asset tracker for OzzMaker SARA-R5 LTE-M GPS + 10DOF
Reads position data from gpsd and uploads it to a Traccar
server using the OsmAnd protocol.
"""
import time
import requests
import gpsd
TRACCAR_HOST = "YOUR_SERVER_IP"   # Public IP of your Oracle VM
DEVICE_ID = "ozzmaker-tracker-01"  # Must match the Identifier you set in Traccar
INTERVAL = 10                     # Seconds between position uploads
SPEED_MS_TO_KNOTS = 1.94384
gpsd.connect()
while True:
    try:
        p = gpsd.get_current()
        # Only send if we have at least a 2D fix
        if p.mode >= 2:
            requests.get(
                f"http://{TRACCAR_HOST}:5055/",
                params={
                    "id": DEVICE_ID,
                    "lat": p.lat,
                    "lon": p.lon,
                    "speed": p.hspeed * SPEED_MS_TO_KNOTS,
                    "timestamp": int(time.time()),  # Seconds — Traccar converts to ms itself
                },
                timeout=10,
            )
            print(f"Sent {p.lat:.6f}, {p.lon:.6f}")
    except requests.RequestException as e:
        # Cellular link dropped or server unreachable — just retry next loop
        print(f"Upload failed: {e}")
    except (gpsd.NoFixError, KeyError, UserWarning) as e:
        print(f"No GPS fix yet: {e}")
    time.sleep(INTERVAL)

Run the script with python3 tracker.py, then open the Traccar web interface and you should see your device turn green and appear on the map, updating live. That’s it — you have a working tracker!

Just like the PPP connection, you can run this script as a systemd service so it starts automatically at boot.

Data usage: Each position report is only a few hundred bytes. At a 10-second interval that’s roughly 2–3MB per day of continuous movement — and far less in practice, since you can lengthen the interval or only report when moving.

⚠️ Important: Data usage

Each position report is only a few hundred bytes. At a 10-second interval that’s roughly 2–3MB per day of continuous movement — and far less in practice, since you can lengthen the interval or only report when moving.

Part 7 — Geofencing

geo fence
Geofences

This is where Traccar really shines for asset tracking. A geofence is a virtual boundary on the map — and Traccar can notify you the moment your asset crosses it.

Some practical examples:

  • Storage yard fence — get an email the second your caravan leaves the storage yard. If you didn’t move it, someone else is!
  • Mooring fence — a small circle around your boat’s mooring. If the boat drifts (or is taken), you’ll know.
  • Home fence — get notified when the work truck arrives back home.

Creating a geofence

  1. In the Traccar web UI, go to Settings → Geofences
  2. Click + to add a new geofence and give it a name, e.g. Storage Yard
  3. Use the drawing tools on the map to define the area, Polygon is the best to work with
  4. Save the geofence

Linking the geofence to your device

A geofence does nothing until it’s connected to a device:

  1. Select your device (e.g. caravan) in the device list
  2. Open the device’s Connections (the link/chain icon)
  3. Under Geofences, tick Storage Yard

From now on, every position report is checked against the fence, and Traccar records geofenceEnter and geofenceExit events for that device.

Getting alerts

To actually be told when it happens:

  1. Go to Settings → Notifications and click +
  2. Set Type to Geofence Exit (add a second one for Geofence Enter if you want both)
  3. Set Channels to Web and Mail
  4. Save, then link the notification to your device via its Connections page, just like the geofence

Make sure your email address is set under Account → Preferences. Now, the moment your caravan rolls out of the storage yard, an email lands in your inbox with the device name and event — typically within one position-report interval of it happening.

Part 8 — Replaying routes and reports

Every position your tracker uploads is stored on your server, which means you can go back in time.

Route replay

  1. Select your device and click the Replay icon (or go to Reports → Replay)
  2. Choose a device and a time period, e.g. Yesterday or a custom range
  3. Press play

Traccar animates the journey on the map, with a slider so you can scrub backwards and forwards. Clicking any point on the route shows the exact time, speed and heading at that moment. If you towed the caravan somewhere last weekend, you can re-watch the whole trip.

Reports

Under Reports you’ll also find ready-made summaries for any date range:

  • Trips — each journey with start/end location, distance, duration and average speed
  • Stops — where the asset sat still, and for how long
  • Summary — total distance and engine hours per day
  • Events — a log of every geofence entry/exit and other alerts

All of them can be exported to Excel, and you can email yourself a scheduled report — for example, a weekly summary of everywhere the trailer has been.

Where to from here?

You now have a fully self-hosted live tracker with geofence alerts, for the cost of a few megabytes of cellular data. Some ideas to take it further:

  • Power saving — the SARA-R5 supports PSM and eDRX low-power modes, and the GPS supports periodic fixes drawing under 200uA. Combined with only reporting positions while moving, a battery-powered tracker can run for a very long time.
  • Assisted GPS — use AssistNow so the tracker gets a fix within seconds of a cold boot. See our Assisted GPS guide.
  • Use the 10DOF sensors — the onboard accelerometer can wake the tracker when movement is detected, so it only powers the modem when there’s actually something to report.
  • Explore more of Traccar — speed-limit alerts, scheduled reports, extra user accounts for family members, and the full REST API for pulling tracking data into your own projects.

If you build a tracker with your SARA-R5 board, we’d love to hear about it in the comments below.

One thought on “Live Asset Tracking with the OzzMaker SARA-R5 LTE-M GPS + 10DOF and Traccar”

  1. Hi Mark. I’ve built a proof of concept Dead Fred Beacon (in case we lose it) but having an issue with JP1 for a warm restart with the mux. Ive posted on the forum.

    Thanks

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.