fsOTDR

Software for USB OTDR modules, on your Android phone and the Linux desktop. Measure fibers, find splices, connectors and breaks – without the vendor app and without the cloud.

OTDR & events · Power meter · Light source · Fault locator · SOR & PDF

Free · no ads · no analytics · no account · works offline · Android 8 or newer with USB OTG · Debian 13 or newer

fsOTDR on a phone: a 2 km fiber measured with Auto

An OTDR, power meter, light source and fault locator in one

Everything the module can do, in an app that works offline – on the phone in the field and on the laptop at the desk.

Offline

No vendor app, no account, no cloud

fsOTDR talks to the module directly over USB. It needs no account, no login and no internet connection – the Android app does not even ask for internet access. Your measurements stay on your phone or computer, in the files you save.

OTDR traces

1310 and 1550 nm, ranges from 100 m to 260 km, pulses from 3 ns to 20 µs and 1 to 180 seconds of averaging – or Auto, which finds the fiber length and picks range and pulse. The trace updates live while it averages; zoom and pan to the detail.

Event analysis

Finds splices, connectors and the fiber end, with loss, reflectance and attenuation of each section, plus fiber length and total loss. On the desktop, two markers measure distance, loss and dB/km.

Power meter and light source

The power meter is calibrated for 850 to 1650 nm and shows dBm and watts, the loss relative to a reference you set, and whether the light is steady or modulated. The OTDR laser doubles as a light source at 1310 or 1550 nm, steady or modulated at 270 Hz, 330 Hz, 1 kHz or 2 kHz.

Visual fault locator

Sends red light into the fiber to find breaks, sharp bends and bad connectors and to identify fibers – steady or blinking 1, 2, 4 or 8 times a second.

SOR files and PDF reports

Opens and saves Telcordia SR-4731 (.sor) files with their events, for other OTDR software. One tap makes a PDF report with parameters, trace and event table (sample); the desktop also exports CSV.

At home on Android

Plug the module into your phone with a USB OTG adapter and fsOTDR opens. Works in portrait and landscape; the fault locator keeps running in the background while you walk to the other end.

At home on Linux

A desktop app with a large trace view, event table and markers. The Debian package sets up USB access for the module and the calibration data, so it works after plugging in.

Screenshots

The Android app and the Linux app, measuring a 2 km test fiber. Tap a screenshot to see it full size.

A 2 km fiber measured with Auto: trace, fiber end and event list
OTDR trace
Power meter reading −6.81 dBm with 270 Hz modulation
Power meter
Light source at 1310 nm, modulated at 270 Hz, switched on
Light source
Fault locator blinking twice a second
Fault locator

On the Linux desktop

The OTDR tab of the Linux app with a trace, two markers and the event table
OTDR trace
The power meter tab of the Linux app
Power meter
The light source tab of the Linux app
Light source
The fault locator tab of the Linux app
Visual fault locator
First page of a sample PDF report: parameters, trace and event table

Sample PDF report

The report of the 2 km test fiber from the screenshots: measurement parameters, a summary with fiber length, total loss and average attenuation, the trace with the events marked, and the event table – here the joint between the two 1 km spools at 1020 m (0.23 dB) and the fiber end.

Open the sample report (PDF, 38 kB)

Which modules

fsOTDR works with USB OTDR modules built around the WCH CH347 USB bridge (USB ID 1a86:55db), sold for example as the NK1500 series. It is tested with an NK1500-D1-Live (1310/1550 nm OTDR, power meter, light source, fault locator).

  • The calibration data for the module types (1310/1550, 1550 and 1610 nm) is included – no import needed.
  • The power meter, fault locator and light source tabs appear when the module has them.

fsOTDR is an independent project, not affiliated with the maker of the modules.

Download

Install the APK on your phone, or the package on your Debian computer.

Android

Android app

For phones with Android 8 or newer and USB OTG (arm64, armv7, x86_64).

Download APK
Version 0.1.3 · 18MB · SHA-256 d65f02b7d94d5a3e69b84ae5c760de5e42aee8a734dbb5ecfa205ef5a9299d31
Changelog
Linux

Debian package

For 64-bit PCs (amd64) running Debian. Includes the calibration data and USB access for the module.

  • Debian 13 (trixie)
    Not available yet.
  • Debian testing
    Not available yet.
  • Debian unstable
    Not available yet.
Changelog
Installing on Android
  1. Open the downloaded file on your phone (Android 8 or newer). If asked, allow your browser or file manager to install unknown apps.
  2. Connect the module with a USB OTG adapter. Android offers to open fsOTDR – allow access to the USB device.
Installing on Debian

Download the package for your Debian version and install it with

sudo apt install ./fsotdr_*_amd64.deb

Then plug the module in (again), so the USB access rule applies. fsOTDR appears among your applications.

For automatic updates, use the apt repository instead.

Install from the apt repository

With the repository, fsOTDR is updated together with the rest of your system. Choose your Debian version:

  1. Download the key the packages are signed with:

    curl -fsSL https://packages.freestone.net/repo.asc | sudo tee /etc/apt/keyrings/packages.freestone.net.asc > /dev/null
  2. Save this as /etc/apt/sources.list.d/packages.freestone.net.sources:

    Types: deb
    URIs: https://packages.freestone.net
    Suites: trixie
    Components: main
    Signed-By: /etc/apt/keyrings/packages.freestone.net.asc
    Types: deb
    URIs: https://packages.freestone.net
    Suites: testing
    Components: main
    Signed-By: /etc/apt/keyrings/packages.freestone.net.asc
    Types: deb
    URIs: https://packages.freestone.net
    Suites: unstable
    Components: main
    Signed-By: /etc/apt/keyrings/packages.freestone.net.asc

    For example with sudo nano /etc/apt/sources.list.d/packages.freestone.net.sources

  3. Install fsOTDR:

    sudo apt update
    sudo apt install fsotdr

Privacy

No ads, no analytics, no account. fsOTDR makes no network connections at all: it talks only to the module on its USB port. Traces and reports are saved only where you choose.

Read the full privacy policy · Datenschutzerklärung (Deutsch)

Changelog

0.1.3-1

  • Stable light source: new "Light source" tab (desktop and Android) that runs the OTDR laser at 1310 or 1550 nm, CW or modulated at 270 Hz, 330 Hz, 1 kHz or 2 kHz; switched off by a measurement, on reconnect and when the app closes.
  • Automatic range/pulse tested on 1 km and 2 km links; the long probes (260 km and 80 km) now average 3 s instead of 1 s.
  • Fix: measurements at 180 km and 260 km timed out (the first shot waited 0.5 s, one acquisition takes up to 1.4 s).
  • Android, tested on a phone: wait for the FPGA after plug-in (connect failed with "FPGA not responding"), and repeat the light check when the FPGA returns no data (every second measurement failed with "light detected on the fiber"). Log messages go to logcat (tag fsotdr).
  • Fix: traces opened from SOR files were not drawn (plot, PDF report), and the Android app saved them flat; levels are now read back as written. The report shows the range rounded to whole metres.

0.1.2-1

  • Desktop: power meter and VFL in their own tabs, like the Android app; large power reading; connection status and Connect in the top bar.
  • VFL blinks at 1, 2, 4 or 8 flashes per second (1 and 2 now really flash that often; the vendor timings were half as fast).
  • Power meter: micro-watts shown as µW.

0.1.0-2

  • Renamed to fsOTDR (package, binaries, desktop ID net.freestone.fsotdr, calibration DB now in ~/.config/fsotdr or /etc/fsotdr).
  • PDF trace report export.
  • Optical power meter and visual fault locator (VFL) of modules that have them.
  • Ship the calibration DB in /usr/share/fsotdr (fsotdr-import-db now only needed to override it).

0.1.0-1

  • Initial release: manual measurements at 1310/1550 nm, live trace, event analysis, SOR import/export, live-fiber light check.