Documentation
Everything you need to know to operate your DiscoX. These instructions cover the latest C++ firmware.
The DiscoX has four buttons labelled 1–4 on the top of the device — all accessible even with gloves.
In normal mode:
In menu mode, Buttons 1/2/3 become scroll-up, scroll-down, and select. Button 4 still powers off.
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:
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.
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.
If the laser has auto-timed-out, pressing any measure button re-enables it with a short beep before taking the shot.
The 128×128 pixel OLED screen shows three values from your most recent stable shot:
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.
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.
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.
All common settings are accessible from the onboard menu — press Button 3 to open it.
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:
0.4) — how many degrees the sensor readings must converge within before a shot is accepted. Lower = stricter, steadier hold required.3) — number of consecutive stable samples required before accepting a reading.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.0.162) — length of the device in metres, subtracted from the raw laser distance so the reading is station-to-station.1.7) — maximum difference in degrees between three consecutive shots' bearing/clino for them to count as the same leg.0.05) — maximum difference in metres between three consecutive distance readings for leg detection.true) — when a leg is detected, blink the laser on and off in quick succession as a visual confirmation.false) — enable or disable warnings when nearby metallic objects may be distorting the magnetic field.10.0) — magnetometer field-strength tolerance in degrees. Readings outside this window from the expected local field trigger a warning.10.0) — accelerometer magnitude tolerance in degrees.10.0) — magnetic dip angle tolerance in degrees.0.5) — angular consistency window in degrees for the magnetometer during calibration. Tighter values demand steadier holds per calibration point.0.4) — angular consistency window in degrees for the accelerometer during calibration.5) — number of samples in the calibration consistency window.250) — milliseconds the device must remain stable before a calibration point is accepted.0.3) — EMA smoothing factor used during calibration. Lower = smoother with more lag.3000) — maximum milliseconds to wait for stability before a calibration point is force-accepted.1800) — seconds of inactivity before automatic power-off. 1800 = 30 minutes.120) — seconds of inactivity before the laser turns off to save power. 120 = 2 minutes.255) — OLED contrast level, 0–255."SAP6_Unicorn") — the Bluetooth device name advertised to survey apps. Maximum 20 characters.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.
Calibration
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.
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
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
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)
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.