How to use
Azimuth.
A complete walkthrough for every page, button interaction and web app feature. New to Azimuth? Start with First Boot and work your way down.
When you power on Azimuth for the first time, the OLED briefly shows the OEO splash screen, then moves to the Position page while the GPS acquires a fix. This can take a few minutes outdoors — the device is downloading almanac data from satellites.
The Position page shows Acquiring… with an animated bar and the current satellite count while waiting for a fix. Once acquired, coordinates, speed, heading, altitude and satellite count are displayed.
The small icons in the top-right corner of every page show BLE connection status and battery level. A B icon appears when the web app is connected.
Azimuth uses Web Bluetooth — no installation required. The companion app runs entirely in your browser.
- 01Open azimuth.oeo.dev in Chrome
- 02Tap Connect in the top-right corner
- 03A Bluetooth device picker appears — select your Azimuth device (named
Azimuth-XXXXXX) - 04A PIN entry screen appears in the app
- 05Navigate to the Device Info page on your Azimuth (near the end of the page list) — the 6-digit PIN is displayed there
- 06Enter the PIN in the app and tap Verify
- 07The app connects, syncs settings and your position appears on the map
The home page of the device. Shows your GPS coordinates, speed, heading, altitude and the number of satellites in view. While waiting for a fix it shows Acquiring… with an animated satellite graphic.
| Action | Result |
|---|---|
| Single press | Next page |
| Long press (hold) | Shows the BLE pairing PIN for as long as the button is held. Release to return to this page. Works on both the Acquiring and Position screens. |
2:5 (2 unread of 5 total) when LoRa messages have arrived. Navigate to the Messages page to read them.This page only appears when LoRa messages have been received. It shows the last 3 messages with sender name, message preview and time received. Navigating to this page marks all messages as read.
| Action | Result |
|---|---|
| Single press | Next page |
| Long press | Clear all messages |
Manage encryption groups directly from the device. Shows a list of stored groups with the active group highlighted. Use this to switch between private networks without needing the web app.
| Action | Result |
|---|---|
| Single press | Next page |
| Double press | Cycle through groups in the list |
| Long press | Open sub-menu for selected group |
When you long press on a group, a menu appears with options depending on the group:
- →Activate / Deactivate — switch to this group's encryption key
- →Share Key — broadcast the key over LoRa for others to join (leaders only)
- →Leave Group — remove yourself from this group
- →Back — return to list view
When another device shares a key with you, the Groups page automatically shows a prompt: "Join group? [Group Name] Via: [Leader Name]".
- →Long press — accept and join the group
- →Double press — decline the request
This page only appears when the multi-protocol scanner is enabled (Settings → Scanner). Shows external peers detected from Meshtastic and MeshCore networks.
Each peer displays:
- →[M] or [C] — source network (Meshtastic or MeshCore)
- →Node ID — the peer's identifier (e.g. !0407032c)
- →Distance — calculated from your GPS position
- →Age — time since last seen (e.g. 12s, 2m)
When no peers are detected, the page shows scanner status and time since last scan.
| Action | Result |
|---|---|
| Single press | Next page (or scroll if more than 4 peers) |
An animated compass rose driven by GPS heading. The needle rotates in real time. Shows bearing in degrees, cardinal direction, current speed and altitude alongside the compass graphic.
| Action | Result |
|---|---|
| Single press | Next page |
| Long press | Turn screen off (without powering down) — useful to save battery during navigation |
Controls route recording. Shows current status (recording or stopped), point count, elapsed time and total distance. The white LED flashes every 10 seconds while recording is active.
| Action | Result |
|---|---|
| Single press | Next page |
| Double press | Start or stop route recording. When stopped, the completed route is automatically saved to the route log. |
| Long press | Clear the current in-memory route (does not delete saved route log entries) |
In its default state this page shows your current coordinates and invites you to mark a waypoint. Once marked, it switches to Navigate mode — showing a bearing arrow and distance to your saved point.
| Action | Result |
|---|---|
| Single press | Next page |
| Long press (no waypoint) | Mark current position as waypoint — switches to Navigate mode |
| Long press (waypoint saved) | Clear waypoint — returns to default state |
A scrolling elevation chart showing altitude over time. Useful for seeing ascent/descent patterns on a hike or ride. Displays current altitude, min/max range and total climb.
| Action | Result |
|---|---|
| Single press | Next page |
| Long press | Toggle between bar chart and line chart display |
A scrollable list of saved routes. The first row shows a summary (total tracks and combined distance). Subsequent rows show individual routes with name and distance. Double press to cycle through routes; long press to access the delete menu.
| Action | Result |
|---|---|
| Single press | Next page |
| Double press | Cycle through routes (summary → route 1 → route 2 → ...) |
| Long press (summary selected) | Clear all routes — shows confirmation, hold again to confirm |
| Long press (route selected) | Delete selected route — shows confirmation with route name, hold again to confirm |
Shows current weather conditions from OpenWeatherMap. Displays a 24×24px icon, temperature, condition text and when the data was last fetched. The device connects to WiFi every 6 hours to refresh.
| Action | Result |
|---|---|
| Single press | Next page |
| Long press (hold) | Show Sky & Sun detail while held: wind, humidity, sunrise/sunset, golden hour, moon phase, magnetic declination. Reverts when released. |
A GPS-synced clock. Accurate to within a second once a GPS fix is acquired. The timezone can be adjusted to show local time.
| Action | Result |
|---|---|
| Single press (normal mode) | Next page |
| Long press | Enter timezone edit mode — display changes to show UTC offset |
| Single press (edit mode) | Cycle UTC offset (+/- hours) |
| Long press (edit mode) | Save timezone and return to normal mode |
A countdown timer with seven preset durations. Useful for timing intervals, rest periods or any time-based activity.
| Action | Result |
|---|---|
| Single press (idle) | Start countdown |
| Single press (running) | Pause countdown |
| Long press (idle) | Enter set mode — choose from 5, 10, 15, 20, 30, 45 or 60 minutes |
| Single press (set mode) | Cycle to next preset |
| Long press (set mode) | Confirm selection and return to idle |
| Long press (running/paused) | Reset to selected duration |
A simple HH:MM:SS stopwatch. Navigate away and return — it keeps running in the background.
| Action | Result |
|---|---|
| Single press (stopped) | Start stopwatch |
| Single press (running) | Stop stopwatch |
| Long press | Reset to 00:00:00 |
Displays device name, firmware version, battery percentage, WiFi SSID (if configured) and the 6-digit BLE pairing PIN. This is where to find the PIN when connecting the web app.
| Action | Result |
|---|---|
| Single press | Next page |
| Long press | Show about screen with firmware version and oeo.dev URL |
On-device configuration across 3 scrollable pages. All settings are saved to flash and also configurable via the web app.
- →Speed — km/h or mph
- →Elevation — metres or feet
- →Timeout — screen sleep delay (10s, 30s, 60s, 120s, Never)
- →Theme — Light or Dark (affects OLED contrast)
- →Hotspot — WiFi access point on/off
- →Relay — mesh relay mode on/off (forwards packets for other devices)
- →Scanner — Off, Mesh (Meshtastic), Core (MeshCore), or Auto (both)
- →Lock — lockdown mode on/off (blocks remote config)
Scroll indicators (arrows) appear when there are more rows above or below.
| Action | Result |
|---|---|
| Single press (normal) | Next page |
| Long press | Enter edit mode — highlights first setting row |
| Single press (edit mode) | Cycle value for highlighted row |
| Double press (edit mode) | Move to next setting row (scrolls if needed) |
| Long press (edit mode) | Save and exit edit mode |
The last page in the list. Confirms before entering deep sleep to avoid accidental shutdown. This page also houses the SOS function — a double press activates a repeating emergency broadcast over LoRa.
| Action | Result |
|---|---|
| Single press | Cancel — go back to Position page |
| Hold 3 seconds | Confirm shutdown — device enters deep sleep |
| Double press | Activate SOS — broadcasts an encrypted SOS packet over LoRa 6 times at 4-second intervals. LED flashes rapidly while active. OLED shows SOS status and remaining transmissions. |
| Single press (SOS active) | Cancel SOS broadcast immediately |
The main view of the web app is a live map. Your device position is shown as an orange marker with your device name as a label. The map follows your position automatically until you scroll or zoom manually.
- →Scroll away from your position to explore the map — auto-follow pauses
- →Locate button (crosshair, bottom-right of map) snaps back to your position and re-enables auto-follow
- →Switch map tiles using the button overlaid on the map — CyclOSM is best for outdoor use
- →Approximate position (amber marker + circle) shows before GPS fix — driven by WiFi or IP geolocation
Tap the signal icon in the header to open the Peers panel. Any nearby Azimuth devices on your LoRa network appear here and as markers on the map. Up to 20 peers are tracked simultaneously.
- →Distance button — draws a dotted line from you to the peer with distance, bearing and ETA label
- →Follow button — map pans to keep the peer centred as they move
- →Locate button — instantly pans the map to the peer's position
- →Peer markers show a heading arrow indicating direction of travel
- →A dashed orange line shows the peer's recent track history
- →A 📍 badge and separate map marker shows the peer's saved waypoint
- →Toast notifications appear when peers come into or go out of range
- →Stale peer alert — if a peer has not broadcast for 5 minutes, a warning toast appears. The device also flashes its OLED display briefly to alert you.
- →SOS alert — if a peer activates SOS, a red banner appears across the top of the app with their name and coordinates. A red SOS marker is placed on the map and the map pans to their location. Tap Dismiss to clear the banner.
At the bottom of the Peers panel is a message compose area. Select a recipient (All Peers for broadcast, or a specific device for a direct message) and type up to 48 characters.
Broadcast messages are automatically transmitted 3 times with 5-second gaps between each attempt, significantly improving delivery reliability in challenging terrain. Direct messages are sent once only.
Groups let you create private networks with their own encryption keys. Only devices with the key can see each other — ideal for events, expeditions, or team coordination.
- 01Open the hamburger menu (☰) and tap Groups
- 02Tap + New to create a group with a custom name
- 03A 16-character encryption key is auto-generated
- 04Tap the group to activate it — your device now broadcasts on that key
- 05To add others, tap Share Key — a request is sent over LoRa
- 06Recipients see a modal asking to accept. Once accepted, the key syncs automatically
You can store up to 5 groups per device. Switch between them instantly by tapping a different group, or return to Personal mode to use the default network key.
Open the hamburger menu (☰) and tap Saved routes to browse, view and manage all routes stored on the device.
If connected via BLE, routes are automatically imported when you open the panel. A progress indicator shows "Importing route X of N..." during transfer.
Each route shows date, time, duration, elevation gain and point count. The distance is displayed prominently on the right. Tap a route to view details.
- →Route name — tap the pencil icon to rename. Names sync back to the device.
- →Stats grid — distance, elevation gain, average speed, max speed
- →Map view — route polyline with start (green) and end (red) markers. Map remains interactive.
- →Chart tabs — Elevation, Speed, Pace profiles. X-axis toggles between distance and time. Chart style toggles between line and bar.
- →Export as GPX — downloads a GPX file compatible with Strava, Komoot, OsmAnd, etc.
- →Delete route — removes from device with double confirmation
Tap ⚙ in the header to open the settings modal. Changes sync to the device immediately over BLE.
- →Device tab — rename your device. Name is prefixed with
Azimuth-and shown on other peers' screens - →Units tab — speed in km/h or mph, elevation in metres or feet
- →Display tab — screen timeout (10s to always-on), brightness (full or dim), device theme
- →Network tab — WiFi credentials, OWM key, LoRa region/interval/network key
- →Screen tab — live OLED mirror. Click Capture then Save PNG to grab a screenshot
LoRa peer sharing works out of the box between any two Azimuth devices on the same frequency. For a private group, set a custom network key so only your devices communicate.
- 01Go to Settings → Network → Peer Settings
- 02Set Region — EU868 for UK/Europe, US915 for North America, AU915 for Australia
- 03Set Interval — how often the device broadcasts its position (10–300 seconds). Shorter = more responsive but more duty cycle usage
- 04Optionally set a Network Key — exactly 16 characters, must match on all devices in your group
- 05Restart all devices after changing the key
Relay mode turns a device into a range extender for your mesh network. When enabled, the device automatically forwards packets for other devices — useful for stationary positions like checkpoints, base camps, or high ground.
- 01Enable via Settings → Relay on the device OLED, or via the web app
- 02Position the relay device where it has good line-of-sight to other devices
- 03The relay will automatically forward position broadcasts, SOS alerts, and messages
The relay also provides store-and-forward — if a peer goes offline, messages are queued (up to 8, 1 hour expiry) and delivered when that peer broadcasts again.
Azimuth can passively listen for position broadcasts from other mesh networks and display them on your map. This lets you see Meshtastic and MeshCore users without them needing an Azimuth device.
- 01Go to Settings → LoRa settings in the web app
- 02Under Scanner, select a mode: Meshtastic only, MeshCore only, or Auto (both)
- 03Tap Save — the scanner activates on the next scan interval
The scanner runs every 30 seconds and listens for 8 seconds per protocol. During scanning, your device temporarily switches radio configuration to receive external packets, then returns to normal Azimuth operation.
- →Meshtastic — EU868 LongFast (869.525 MHz, SF11, BW250). Requires matching channel key for decryption. The default public key (AQ==) works out of the box.
- →MeshCore — EU868 (869.4 MHz, SF11, BW250). Unencrypted position broadcasts.
To decrypt Meshtastic traffic from custom channels, you need the channel's pre-shared key (PSK).
- 01In the Meshtastic app, go to your channel and tap Share
- 02Copy the share URL (starts with
meshtastic.org/e/#...) - 03In Azimuth, go to LoRa Settings → Meshtastic channels
- 04Paste the URL and tap Import
- 05The channel name and key are extracted automatically
You can also add channels manually by entering the name and base64 PSK directly.
External peers appear on the map and in the Peers panel with an "M" badge indicating they're from the Meshtastic/MeshCore network. The peers panel shows:
- →Node ID (e.g.
!0407032c) - →Distance from your position
- →Last seen time
- →Signal quality (RSSI/SNR)
- →Channel used for decryption
When the device hotspot is enabled, you can connect directly to the device WiFi and access several web pages without needing the phone app or BLE connection.
- 01On the device, go to Settings → Hotspot and set to On
- 02After saving settings, a QR code appears on screen — scan with your phone camera to auto-join the WiFi
- 03Or manually connect to "Azimuth-[Name]" network, password
azimuth1
Once connected, access these pages:
- 192.168.4.1 — Main web app (radar view, peers, settings)
- 192.168.4.1/status — Mesh status page showing device info and peer table with signal strength
- 192.168.4.1/config — Configuration portal for device setup without BLE
Lockdown mode prevents any remote configuration changes via BLE or WiFi. Use it when lending your device or if you're concerned about tampering.
- 01On the device, go to Settings → Lock and set to On
- 02All config commands via BLE and WiFi will be rejected
- 03SOS and messages still work normally
- 04To unlock, go to Settings → Lock on the device screen and set to Off
Web Bluetooth requires Chrome. Check you're not using Safari, Firefox or a WebView browser. On Android, ensure Bluetooth and Location permissions are granted to Chrome in system settings.
Make sure the device is powered on and not already connected to another browser tab. Only one BLE connection is supported at a time. Close other tabs and try again.
The PIN changes on every boot. Restart the device and check the current PIN on the Device Info page. Make sure you're entering it without spaces.
Go outdoors with a clear view of the sky. Buildings and tree canopy significantly reduce signal. The first fix after a long power-off (cold start) can take 2–5 minutes. Subsequent fixes are typically under 30 seconds.
Ensure both devices are set to the same LoRa region. Ensure the network key matches on both devices. Check that LoRa broadcasting is enabled (interval > 0). LoRa requires line-of-sight or near-line-of-sight — urban environments reduce range significantly.
Weather requires WiFi credentials and an OpenWeatherMap API key saved to the device. Free OWM keys have a call limit — if you've exceeded it, the page shows a fetch error. Check your OWM account dashboard.