Knowledge base
How to read an OTDR trace and measure a span
What every button does, how to place cursors A and B, and why the app reports three different loss figures for one and the same span: 2P, LSA and 5P. They diverge for a reason, and the divergence itself tells you something about the span.
By Ilya (engineer, 6 years in fibre optics) ·
Start
Open a file
Click Open file or drag a file into the window. Both generations of .sor are read, Bellcore 1.x and Telcordia 2.x, and with them .msor, three .trc dialects (EXFO, Anritsu T5 and T6), .bdr, Yokogawa, INNO, .csor, .tst and .TFW: the format is recognised from the bytes, not from the extension. The block layouts and scales were verified against a corpus of real measurements.
What happens to the file. No account is needed. An opened file is stored with us, and that is how we learn to read more formats; what we never do with your files is named in the terms of use. Your edits are kept with us next to the file, so the work survives a reload, a closed tab and a cleared browser alike. The browser keeps the list of open files as well; remove a file from it in the "Files" list.
Handing the trace over by link
Share gives an address you can send to a colleague or a contractor. There is nothing for them to install: the trace opens in a browser, on any system, with no account. Whoever opens the link gets a copy of this trace, their own, with every edit it holds right now; their edits will not change your file, and yours will not change theirs. The link works for two weeks. It disappears from the address as soon as the file is open: what stays in their address bar is the ordinary address of the app.
Events
Why the event list doesn't match the instrument
The file carries the event table the instrument recorded, and the app shows it straight away. It also searches the curve for events itself, but keeps those out of the list until Our analysis is chosen in the events table header: a report carries the measurement that was handed over, not our reading of it. Choose it and our rows stand next to the instrument's, with the colour of the marker on the curve saying where each event came from:
- both The event is in the instrument's table and in our detection.
- instrument only The instrument recorded it, we didn't find it. Most often the event sits too close to a neighbour or to the fibre end; see "What the app can't do".
- ours only We found it, the instrument's table has nothing there. That is not an error. The table only holds what passed the thresholds the operator set at capture time: with a loss threshold of 0.100 dB, a splice at 0.09 dB never makes it into the file, but it exists.
When our loss figure differs from the instrument's, the table shows both: the instrument's on the left, ours on the right.
What else stands behind the badge
The mode adds more than rows. Behind the same badge stand five more of our claims about somebody else's measurement:
- The fibre end we found. In the event table it stands next to the instrument's rows; on the totals strip only when the instrument recorded neither a length nor an end. It is labelled as a calculation, and it is good to hundreds of metres; see "What the app can't do".
- ORL when the instrument did not record it. If the instrument recorded a return loss, its figure is shown and nothing else. If the field is empty, our calculation from the curve fills the plate, labelled as a calculation: the figure depends on a convention about where to count from, not only on the file.
- The "bend" label on an event. It is inferred from a pair of wavelengths, not from the shape of one curve: a fusion splice loses the same on the short and the long wavelength, a macrobend loses noticeably more on the long one. It needs two traces of the same fibre at different wavelengths on one chart; without a pair the line under the table says there is nothing to compare.
- The "ghost" label on a reflection. A reflection that sits beyond the fibre end mirroring an earlier one, or at a multiple of the distance to a stronger one with almost no loss, is what light reflected twice looks like. This is our inference from geometry; the instrument's own echo mark, where the file records one, is shown without the mode.
- Recurrence across the fibres of a cable. When several fibres of one cable are on the chart, the line under the table names the positions where an event repeated on most of them. What stands there, a closure or a patch panel, the files do not say.
Why all of this lives behind the badge: none of it is in the file; it is our reading of somebody else's measurement. These rows and labels go into no report until you add a row to the file yourself, and whoever switches the mode on should read them as a second opinion, not as the instrument's record.
What the cumulative column adds up
The last column of the table, Cumulative, is the loss from the start of the trace down to that row. The figures there are the instrument's, not ours: two of its own fields are added up, the loss of the event itself and the attenuation of the fibre before it. The instrument records end-to-end loss itself as well, and where both ways can be compared, its own total agrees with the sum of its own fields on 38 % of the files and with the sum of our sections on 6 %.
The column can stop, and then a line under the table says why: the loss of an event is written as zero, which means it was not recorded at all; the attenuation of the fibre before an event is missing; the attenuation on record cannot be what fibre does; or an event has a loss but no position. Without one term the total would be incomplete, so the count stops and names the place where a term is missing.
Limits and the verdict column
The app offers no values of its own for how much a splice may lose: the limits are yours. Enter them under Limits and a Verdict column appears in the table. Until at least one limit is set there is no such column at all: a column of nothing but dashes would tell you nothing.
A row to which none of the limits you set could be applied stays unchecked and says so; it does not turn green. That happens more often than it sounds: a reflectance limit is set, and a splice has no reflectance at all. Green on such a row would claim a check that never happened.
If the table has scrolled sideways
Eight columns do not fit a narrow window, so the table scrolls sideways. The event number and the distance stay put while it does: the row you have scrolled to has to remain identifiable, or a verdict arrives without the row it belongs to. A shadow at the right edge means there are more figures further along.
Cursors A / B
Measure a span by hand
The automatics answer "what is here". Cursors answer "what does this particular stretch cost": the manual measurement you make when checking a span against the design or against what the instrument claimed.
- Click the chart to place cursor A.
- A second click places B. The span band and the readout row appear.
- From then on a click moves whichever cursor is closer. To pull an edge of the span, click near it.
- A cursor can be dragged: grab the line and lead it.
- Clear cursors removes both. Order doesn't matter: cursors can be placed right-to-left, the app works out where the span starts.
Dragging away from the cursors still zooms into a span, so you can zoom with cursors in place. A double-click resets the zoom and brings back the cursor its first click had moved.
What the readout row shows
On the left, where each cursor stands and the level there. Then the fibre length between them and three ways of computing the loss over that span. 2P and LSA each carry their own per-km attenuation beside them; 5P does not, because it measures the step of an event rather than the fibre. The last number, the deviation, shows whether LSA can be trusted; it gets its own section below.
2P, LSA and 5P
Why there are three losses and one span
The methods put three different questions to the same data and go wrong in different ways, so there is no "right" one to pick. While 2P and LSA agree, the span can be trusted; when they diverge, something sits inside the span, and the divergence points to it.
2P: two points
The level under cursor A minus the level under cursor B. No assumptions: what the instrument showed at those two points is what gets subtracted.
But a single sample doesn't sit exactly on the backscatter level, only near it: on a trace with few averages either end can miss by tenths of a dB, and the answer moves by exactly that much.
LSA: least squares
A straight line is fitted through every sample between the cursors by least squares, and the loss is taken from its slope. Noise averages out over hundreds of points, which is why per-km fibre attenuation is conventionally quoted from this value.
The weakness is the assumption. The method treats the span as one uniform piece of fibre. If a splice sits inside, the line is drawn through the step, and its slope describes a fibre that doesn't exist.
5P: the loss of the event itself
Two least-squares lines through the free fibre outside the cursors, and the gap between their extensions. The fibre between the cursors does not enter this figure at all, only the step does. This is how the instrument itself measures a splice.
But there is not always anything to fit the lines to. Too little clean fibre on one side, or samples too ragged, and a dash stands where 5P would be. We do not print a figure we do not believe ourselves.
The method goes by more than one name: EXFO, Anritsu and INNO call it "four-point", JDSU, VIAVI and VeEX call it "five-point". They all compute the same thing; the only disagreement is whether the point at which the gap is read counts as one of them.
The deviation is the judge
The deviation is the average distance of the samples from the fitted line. On uniform fibre it is hundredths of a dB. If it is noticeably larger, something sits inside the span, and the LSA slope is describing something other than the fibre.
How to use this. Measuring a splice or a connector, read 5P: that is the one computing the loss of the event itself. Measuring fibre, place the cursors so the deviation is at its smallest: that is what it means for the span to be clean fibre, and for the dB/km figure to belong to it. If the deviation is large, use 2P: it includes the fibre and everything standing between the cursors.
The example from the row above: 2P 10.660 dB against LSA 10.274 dB at a deviation of 0.184 dB. Nearly 0.4 dB apart: there are eight splices inside that span, and the deviation says so. Put the cursors on a clean stretch between them and both figures converge, with the deviation dropping to hundredths.
A reference for sanity checks: G.652 single-mode fibre loses about 0.19–0.22 dB/km at 1550 nm and 0.32–0.36 dB/km at 1310 nm. If LSA on a clean stretch shows noticeably more, the fibre rather than the instrument is the story.
Edits
What can change, and what happens when it does
Editing is free, like viewing: measurement parameters, events (move, reclassify, add, delete), the curve itself, and then export to .sor. No sign-up.
Click a value to change it: Enter saves, Esc cancels. Undo and redo live on the arrows in the header.
The original bytes are always preserved, and a file with no edits exports byte-for-byte identical to the source.
Some fields deliberately cannot be edited: the sample count, spacing and trace length follow from the data itself, while pulse width and averaging describe a capture that already happened. Changing them would describe a measurement that never took place.
Limits
What the app can't do
Below is where the app answers roughly, or does not answer at all.
- A long pulse merges nearby splices. The window a step is computed over spans several pulse widths. At 5000 ns that is about 3 km, and splices spaced 1–2 km apart won't be separated by our search: the instrument will find them, we will show one. Shoot with a short pulse when you need the resolution.
- An event cannot look like a break. At 5000 ns the dead zone is about 500 m: a splice is smeared over half a kilometre and looks like a slightly steeper stretch. If "the step isn't visible" at high zoom, that's normal: read the numbers, not the kink.
- Events right at the fibre end are not found. The method needs a window of fibre to the right of an event, and past the end there is none.
- Our own fibre end is shown only in experimental mode. The ordinary view carries the end the instrument recorded. Turn the mode on and ours appears beside it, but only to within hundreds of metres: on traces where the signal fades into noise gradually we stop before the real end, so as not to show "connectors" in the noise.
- Cursors don't measure reflectance. Reflectance comes from the event table, or is computed from the peak by the automatic search.
In short
If you remember one thing
Three numbers over one span are not redundancy. 2P says how much was actually lost between two points, including everything that stands between them. LSA says how fast the fibre itself loses, but only if there really is nothing but fibre between the cursors. 5P says what one step costs, without the fibre around it. The deviation answers whether the LSA condition holds.
So the working order is this: place the cursors → look at the deviation → if it is small, trust the dB/km from LSA; if it is large, use 2P and look for what is inside. And when the cursors stand around an event, read 5P.
The easiest way to check is on your own trace: open a file in the app; editing metadata, events and the curve is free there.