Buttons

The DiscoX has four buttons labelled 1–4 on the top of the device — all accessible even with gloves.

1Measure
Menu: Up
2Measure
Menu: Down
3Menu
Menu: Select
4Power off

In normal mode:

  • Button 1 — take a measurement, or wake the laser if it has timed out
  • Button 2 — short press: take a measurement; hold 2 s: toggle disco/rave mode on or off
  • Button 3 — open the settings menu
  • Button 4 — power off

In menu mode, Buttons 1/2/3 become scroll-up, scroll-down, and select. Button 4 still powers off.

Taking Readings

Press Button 1, Button 2 (short press) to take a reading. The device waits until the sensors have settled before accepting a shot — press or hold the button and keep the DiscoX steady.

The NeoPixel LED shows what's happening:

Red — Stabilising. Hold the device steady.
Green — Stable. Shot recorded and sent.
Purple — Leg detected (3 beeps).

After a shot the display freezes on the recorded reading and the laser turns off. Press any measure button again to turn the laser back on then press again to take a reading.

Leg Detection

When three consecutive shots match in bearing, clino, and distance (within configurable tolerances), the DiscoX recognises a complete survey leg. The LED pulses purple, the laser flashes on and off in quick succession, and the buzzer beeps three times. The display stays frozen on the leg data until you press a measure button to continue.

Laser Wake

If the laser has auto-timed-out, pressing any measure button re-enables it with a short beep before taking the shot.

Display

The 128×128 pixel OLED screen shows three values from your most recent stable shot:

  • Distance (top) — in metres to 2 decimal places
  • Azimuth (middle) — compass bearing in degrees
  • Inclination (bottom) — clino angle in degrees

The top-left shows BT when Bluetooth is connected, with a count of pending (unsent) readings beside it. The top-right shows a proportional battery bar — no guessing when you're underground.

Disco Mode

Hold Button 2 for 2 seconds to toggle disco/rave mode. The laser shuts off and the NeoPixel cycles through colours. Shake the device to kick into wild mode — faster cycling and full brightness.

Hold Button 2 again for 2 seconds to exit. The laser restarts and the device returns to normal operation.

Bluetooth & Memory

The DiscoX works with current versions of SexyTopo and TopoDroid via a long range C++ implementation of the SAP6 BLE protocol. The device advertises continuously, so nearby phones and tablets will discover it automatically.

Once connected, the device flashes blue and a BT label appears in the top-left of the screen and live readings are sent directly to your device.

Note:

Each DiscoX ships with a unique Bluetooth name in the format SAP6_[Nickname] — for example SAP6_Dragon. The name can be changed via the settings file (see Settings below). If you'd like a specific name, let me know before assembly.

Settings

All common settings are accessible from the onboard menu — press Button 3 to open it.

Onboard Menu

  • Enter Calibration — run Long or Short calibration, perform a Mag Field Check, or view the last calibration results
  • Anomaly Detection — toggle warnings for nearby metallic objects (helmet lights, SRT kit, bolts) on or off
  • Laser Timeout — how long the laser stays on when idle: 30 sec · 60 sec · 2 min · 5 min · 15 min · 30 min
  • Auto Shutdown — idle shutdown timer: 5 · 10 · 15 · 30 · 60 min · 2 hr
  • Delete Saved Shots — wipe any pending readings stored in flash
  • Update / Settings — access firmware update and advanced config (see below)
  • Play Snake — a hidden bonus for when you're waiting at the surface

Advanced Settings (config.json)

Go to Menu → Update / Settings → Edit Settings File. The DiscoX reboots into USB drive mode and appears as a drive called DISCOX on your PC. Open config.json, edit the values you want, save, eject the drive, then hold the power button to restart.

Any setting you omit from the file will use its default value. Below is a full reference:

Measurement & Stability

  • stability_tolerance (default 0.4) — how many degrees the sensor readings must converge within before a shot is accepted. Lower = stricter, steadier hold required.
  • stability_buffer_length (default 3) — number of consecutive stable samples required before accepting a reading.
  • ema_alpha (default 0.3) — exponential moving average smoothing factor for live sensor data. Lower values give smoother (but slower-reacting) readings; higher values are more responsive but noisier.
  • laser_distance_offset (default 0.162) — length of the device in metres, subtracted from the raw laser distance so the reading is station-to-station.

Leg Detection

  • leg_angle_tolerance (default 1.7) — maximum difference in degrees between three consecutive shots' bearing/clino for them to count as the same leg.
  • leg_distance_tolerance (default 0.05) — maximum difference in metres between three consecutive distance readings for leg detection.
  • laser_wibble (default true) — when a leg is detected, blink the laser on and off in quick succession as a visual confirmation.

Anomaly Detection

  • anomaly_detection (default false) — enable or disable warnings when nearby metallic objects may be distorting the magnetic field.
  • mag_tolerance (default 10.0) — magnetometer field-strength tolerance in degrees. Readings outside this window from the expected local field trigger a warning.
  • grav_tolerance (default 10.0) — accelerometer magnitude tolerance in degrees.
  • dip_tolerance (default 10.0) — magnetic dip angle tolerance in degrees.

Calibration

  • cal_mag_consistency (default 0.5) — angular consistency window in degrees for the magnetometer during calibration. Tighter values demand steadier holds per calibration point.
  • cal_grav_consistency (default 0.4) — angular consistency window in degrees for the accelerometer during calibration.
  • cal_buffer_length (default 5) — number of samples in the calibration consistency window.
  • cal_settle_ms (default 250) — milliseconds the device must remain stable before a calibration point is accepted.
  • cal_ema_alpha (default 0.3) — EMA smoothing factor used during calibration. Lower = smoother with more lag.
  • cal_timeout_ms (default 3000) — maximum milliseconds to wait for stability before a calibration point is force-accepted.

Timers & Display

  • auto_shutdown_timeout (default 1800) — seconds of inactivity before automatic power-off. 1800 = 30 minutes.
  • laser_timeout (default 120) — seconds of inactivity before the laser turns off to save power. 120 = 2 minutes.
  • screen_brightness (default 255) — OLED contrast level, 0–255.

Bluetooth

  • ble_name (default "SAP6_Unicorn") — the Bluetooth device name advertised to survey apps. Maximum 20 characters.

Firmware Update

Go to Menu → Update / Settings → Update Firmware. The device enters the UF2 bootloader and appears as a removable drive. Drag and drop the new .uf2 file onto the drive — the DiscoX reboots automatically when flashing is complete.

Keeping your DiscoX accurate

Calibrate whenever you survey in a new area or if readings seem off. Run a Mag Field Check before each trip to quickly verify accuracy at your survey site.

To start: press Button 3 to open the menu → Enter Calibration → choose a calibration type.

80 readings

Long Calibration

The most accurate option. Runs in two phases automatically.

Phase 1 — Ellipsoid (56 readings): Aim the DiscoX in a wide variety of directions and orientations. Spread points evenly across the sphere — think of pointing the tip towards every part of a globe's surface. A coverage bar on screen shows which zones have been sampled.

Phase 2 — Alignment (24 readings): Take 3 sets of 8 readings. Each set aims at one fixed point; barrel-roll the device ~45° between shots. Choose 3 fixed points roughly 90° apart (e.g. ahead, to the right, vertically up). The device beeps 3 times when it's time to move to the next direction.

B1: record shot  ·  B3: undo last point

Hold B1+B2 to save  ·  Hold B2 to discard

24 readings

Short Calibration

A faster option for a quick field recalibration.

Take 3 sets of 8 readings. For each set, barrel-roll the laser around a single fixed point, rotating ~45° between shots. The 3 fixed points should be roughly 90° apart — for example: ahead, to the right, and vertically up.

The same 24 readings are used for both ellipsoid and alignment fitting, so this is quicker but less thorough than the Long Calibration.

B1: record shot  ·  B3: undo last point

Hold B1+B2 to save  ·  Hold B2 to discard

Field Check

Mag Field Check

Verifies calibration accuracy in the field without re-running a full calibration.

Shoot a fixed target, walk to it, and shoot back. Repeat for 3 or more pairs in different directions. The device records each pair's bearing error and calculates an overall correction amplitude.

A consistently high amplitude suggests it's time for a full Long Calibration.

B1: take shot  ·  B2: finish early (after 2+ pairs)

Calibration Quality Metrics

After calibration the screen shows three quality scores. Lower is better in all cases. View them again any time via Menu → Enter Calibration → View Last Cal.

  • Mag — magnetometer ellipsoid fit uniformity (lower values = better)
  • Grav — accelerometer ellipsoid fit uniformity (lower values = better)
  • Acc — final accuracy in degrees (the most important number)
Excellent < 0.25°
Acceptable < 0.5°