MWV — user manual

Edition for MWV 0.16.4 · rendered from MANUAL.md

MWV draws a PCB board file on screen so you can look at a board, inspect its parts and nets, and follow it into the board's schematic PDF.

This is the user manual for MWV. It is written for the people who open a board with MWV, not for the people who build it.

About this manual

Contents

  1. Getting started
  2. The board on screen
  3. The Inspector
  4. The schematic PDF pane
  5. Finding things
  6. Keyboard and the keymap
  7. Settings
  8. The window
  9. Your data on disk
  10. Board file formats
  11. OBData repair data
  12. Repair jobs
  13. Troubleshooting

1. Getting started

MWV has one view — the board — and no empty start screen. You open a board and everything follows from it. This chapter opens 820-02016, the board this manual uses throughout, says what happens while a board loads, and takes the first look.

This chapter assumes MWV is installed and waiting with a board file at hand.

Open a board

There are four ways to open one, and all four do the same thing:

  1. File → Open… and choose the board file. The dialog's Board files filter lists every format MWV can read; Board files, not yet readable lists the formats it recognises but cannot draw yet, so a board with a familiar extension can still come back with a refusal (chapter 10).
  2. Drag the file onto the MWV window, or onto the board itself.
  3. Name the file when you launch MWV — mwv 820-02016_V1.3.bvr. On the command line a second file is refused rather than quietly ignored.
  4. Hand it to MWV from your operating system — Open With for the file type, or a drop onto the app's icon. A plain double-click is not wired up yet (chapter 10).

Each way takes one file, because a board is one file plus whatever sidecar sits beside it. If you hand MWV several, it opens the first.

What happens while it loads

Reading the file, importing it and preparing it for drawing all happen off the main thread, so the window never freezes and you can open something else meanwhile.

The first question, about repair data

The first time you open a board the archive knows, MWV asks about archived repair data. The dialog names the board and offers three answers:

The archive is a mirror of OpenBoardData that travels inside MWV; nothing is downloaded, and the archive is never written. The answer is remembered per board, so the question is asked once (chapter 11). A .obdata sidecar that you put beside the board yourself is applied without the archive question, and it always wins over the archive. Its own identity is checked separately, below.

A sidecar also states which board it is for in its header. If that identity disagrees with the board you opened — the classic case is a file copied from another board and left beside this one — MWV asks before applying anything:

A sidecar that states no identity — a converted file, or a guide-only override — is not stated, not wrong, and applies without a question. View → Board data… after the open shows which sidecar was used, where it came from, its header and identity, and a list of the notes the load made. A note that names a part or net is clickable and takes the board to it. Select any note and press Cmd+C (macOS) or Ctrl+C to copy its text, which is the easy way to quote it in a bug report.

The first look

The board arrives fitted — the whole outline on screen, nothing to hunt for.

Around the canvas

The window is mostly board. The controls this viewer needs are states rather than buttons, so they are drawn onto the canvas or gathered into a strip down its left edge, and the rest lives in dockable panes:

If a board will not open

A box titled Cannot open board names the reason, and the status line reads <name> — not loaded. The previous board stays on screen, because that is still what is displayed, and the log carries the full path and the detail. Chapter 13 covers the failures worth knowing.

What's next

Chapter 2 moves the board: panning, zooming, turning it over, and reading what is on it.

2. The board on screen

The window is the board. Everything in this chapter happens on the canvas or on the strip down its left edge — moving the view, turning the board over, deciding what is drawn, and reading what is under the pointer.

Move around the board

Turn the board over

The layer strip

Down the left edge is a fixed column of twelve icons, the full height of the canvas and never moving with a pan, a zoom, a flip or a resize. Ten of them are drawing groups — board, copper pour, part bodies, silkscreen, traces, vias, pads, nails, drills and part names — and one click toggles one group. Hovering an icon names the group in a tooltip beside it, and a group that is off is the same icon faded. The icons take their colour from Settings → Colours.

The last two rows are modes, not groups: one switches the spotlight that dims the rest of the board while something is selected, and the other switches butterfly view. Each names its state in its tooltip (Highlight selected: on/off, Butterfly view: on/off).

The strip is not part of the board: with the pointer over it you are not over the board, so it will not pan, zoom or select, and the status line stops naming copper.

The Layers pane

The strip carries ten of the fourteen element groups. The other four — the part body class colours, net names and the two OBData readings — live in the Layers pane, a dockable pane that offers visibility only (colour stays on the Colours page). Its important property: it filters the board, not the pointer. A group you have hidden still picks and still reads in the status line — hiding it is a decision about what is drawn, not about what exists.

How the parts are drawn

Some board files carry no shape for a part, and MWV draws one from the part's own copper:

Every guessed body is filled with the Part body colour as a ground under its pins, so a part reads as a body rather than a hollow outline. The nine Part body / … class colours are a second, optional layer inside that ground: turn on Fill a guessed body with its class colour in Settings → Drawing (or Part body class colours in the Layers pane) to show the resistor, capacitor, tantalum, can or coil as its class. A part whose shape the file did state is drawn as stated, and the guessed bodies can be turned off in the same place.

Pad colours

Five colours, set on Settings → Colours, tell a pad's role apart at a glance: a pad the file described plainly, and the four MWV can recognise — pin 1 of a multi-pin part, a pin the file marked as connected to nothing, a test point, and a ground pin.

Names over the board

MWV writes a part's designator over it, together with its value and its not-stuffed mark when the Text options ask for them, and a net's name where a bridge aliased it. Three rules shape what you see:

Net names belong to the selected part, and the zoom. The monospaced labels — net names, OBData readings and pin names — are set in a real monospaced font; the designators use Inter, a proportional real face. The net at each pin of the part you have selected in the Inspector — and its OBData voltage or resistance, stacked under the name, when a sidecar carries one — appears on that one part and no other, and only once the view is past six times the fit. The net name sits just outside its pad, pushed clear of the part body, and a crowded top or bottom edge turns the name to run outward rather than across the part. The OBData readings sit inside, opposite the name, their block centred on the pin. A net the file names UNCONNECTED_n is a placeholder for a pin that goes nowhere, so its name is not drawn. Zoomed out, the board is the board and no net names are drawn; zoom in on a part and its pins name their nets. The Net names layer opens on, and the two OBData groups open off; all three are in the Layers pane.

Which of these are drawn, and how large, is on Settings → Text.

Butterfly view

Butterfly view puts both faces of the board in one picture: the top face above, drawn plainly, the bottom face below it turned over, with a gap between. A single camera pans and zooms over the whole scene, a faint line marks the fold, and a click selects the copper of whichever face it lands on. Turn it on from the View menu (Ctrl+Shift+B) or from the strip's last row. It is a way of looking, not a property of the board, so it is not saved — a fresh start opens on a single face.

Hover and select

Development bridges

A development bridge — a part that joins two different nets, such as a fitted wire or a zero-ohm jumper — is hidden, and the nets it joins are aliased rather than merged. The status line shows the alias as (= <canonical name>), clicking one side of the bridge lights both, and the Inspector carries the alias on the net (chapter 3).

What's next

Chapter 3 opens the Inspector and reads a selected part or net.

3. The Inspector

The Inspector reads out what is selected on the board. It is one pane with two sections — Part and Net — because a pin belongs to a part and sits on a net, so the part's pins and the net's members are the same question asked twice. The pane is mostly a reader: it shows, and it reports where you want the board to look. The two things you can change are a net's reference reading, from the V, D or R cell of a part's pin list (chapter 11), and a job reading for the net on screen, with Record Reading... (chapter 12). That button is enabled only while a repair job is active.

Open and close it from View → Inspector (Ctrl+I). It is docked to the right, starts reading from the first board on, and follows the selection wherever that selection came from.

The Part section

The Net section

The Inspector's net section: reference readings, members, and Record Reading...

The button under the net's readings records a job reading on that net; without an active job it stays disabled. The V, D and R cells in the pin list are the editable reference readings.

Following a row to the board

Selecting a row takes the board to that pin:

That is also the keyboard path: the arrow keys walk the rows, and the row under the cursor keeps a neutral tint even past the ends of the list. The two lists are app-drawn tables: they take keyboard focus, their headers stay visible when a list is empty, and a header is a label rather than a selectable column. The boundary between two header cells is a drag handle: drag it to widen or narrow the column, and double-click it to put the column back to its automatic width.

What's next

Chapter 4 pairs the board with its schematic and links the two.

4. The schematic PDF pane

MWV pairs a board with the PDF of its schematic and links the two by part reference and net name, in both directions. The pane sits beside the board and docks to any frame edge — right by default — and that choice is remembered.

Pairing

When a board opens, MWV looks in the board's own directory only — never further afield — and pairs it with:

A PDF for a different revision is never paired automatically, and an ambiguous or revision-unconfirmed result leaves the board unpaired and says so in the log rather than guessing.

File → Open Schematic… picks any local PDF yourself. That choice is remembered per board file — a different revision gets its own entry — and wins on later opens. If the remembered file has gone, automatic discovery runs again with a notice. A board that pairs with nothing closes the previous schematic rather than showing it beside the new board.

Reading the schematic

The pane shows one page at 100%, with page controls and Fit page and Fit width. Zoom with the wheel or a pinch and move by dragging, as on the board; the wheel never leaves the page under it. A zoom previews from the page already on screen and redraws it sharply once the gesture settles, so fast scrolling stays smooth. Jumping to a match centres that match in the view, not merely its page. The pane carries no status bar of its own — the toolbar names the page and the current result, and lasting notices go to the log.

With Follow board colors on — the default — a dark board canvas turns the page dark, so ink and paper trade places and the two agree about light and dark. A light canvas is never touched.

The pane can follow the board and be followed from it, but the two searches are separate:

Auto link is one app-wide switch, off by default, toggled in the pane and in the View menu. With it off, a board selection changes only the board (Find in schematic jumps to its first match) and a PDF click only selects the PDF name (Show on board applies it). With it on, both sides follow immediately. Next and previous match cycle every occurrence across all sheets, with the current result count and page.

Matches are marked with a wash, not an outline — a filled highlight, the current one stronger, in an ink that follows the page from light to dark.

A PDF with no extractable text stays viewable and explains why search and links are off. The text index is built in the background and cached under the app's data (chapter 9).

What's next

Chapter 5 finds a part or a net by name.

5. Finding things

Two searches look through a board and its schematic: Find part or net on the board, and the schematic pane's own text search. They are separate — one searches board names, the other searches the PDF's text — and this chapter covers the first.

Find a part or a net

Ctrl+F opens the Find part or net dialog — from the keyboard, or from Edit → Find part or net..., which is also what reaches it while another pane has focus. Type into the field and the matches appear below as you type. Matching is on text, ignoring case:

Selecting a row selects what it names, centres it on the board, and — for a part — turns the board to that part's side: a designator names a body on one face, and leaving the other face in view would show the selection on the side the part is not on. A net spans both faces and is centred without turning. The dialog is modeless, so the board stays visible while you look — a modal box would hide the very thing you are looking for. Enter steps to the first match, and a double-click selects the row under the pointer; neither closes the dialog.

The dialog is not kept between sessions: closing it forgets it, and reopening seeds the field with the last query you typed.

Step through results

Copy a name

Ctrl+C copies the selected part's designator or the selected net's name to the clipboard.

Walking a selection

The other way through a selection is the Inspector: with a part selected, its arrow keys walk the part's pins and take the board with them (chapter 3), and Tab and Shift+Tab walk the same pins from the canvas (chapter 6).

What's next

Chapter 6 lists the keyboard's commands and how to rebind them.

6. Keyboard and the keymap

The board's commands run from the keyboard while the canvas has focus. A left press on the canvas gives it focus, and MWV focuses it once at start-up, so the shortcuts act on the board you just reached for. A key no board command claims is passed back to the system: a focused text field or table keeps its own typing, and the menu accelerators still work. That is the one rule to remember — if a key does nothing, click the board and try again. Find is the exception: it also has an Edit menu item, so Ctrl+F opens it whatever has focus.

A dialog on top of the board — the guide editor, Find, Board data — takes the keys for itself, including Space: the board underneath does not claim them while you are typing into a dialog.

The default keymap

CommandPrimaryAlternate
Pan left / right / up / downarrow keys—
Flip board top/bottomSpaceCtrl+B
Mirror board left/rightM—
Centre on the selectionX—
Rotate clockwiseR—
Rotate counter-clockwiseShift+R—
Zoom in / out+ / -—
Zoom to fit (reset the view)0Ctrl+0
Find a part or netCtrl+F—
Next / previous find resultN / Shift+N—
Copy the selected part or net nameCtrl+C—
Clear the selectionEsc—
Next / previous pin of the selected partTab / Shift+Tab—
Toggle net namesA—
Toggle OBData readingsO—

Every key is written Ctrl+X; on macOS Ctrl means the Command key, because the system reports both as the same modifier (see Conventions).

A part's pins are walked within that one part, wrapping round; moving between parts is a click, the Inspector or Find, and there is no key for it. A net selection is folded onto one of its pins so a click and a Tab share one cursor.

Two slots, and rebinding

Every command has two slots — a primary and a nullable alternate — so a second keyboard layout or a second habit can have its own key. The alternate shows only on the Keys page; the View menu's Flip Board, Mirror Board and Zoom to Fit labels carry the primary alone, so a rebound Flip shows your own key there. A bare-key primary (space, a letter) is shown in parentheses, Flip Board (Space), because a key written after a tab would become a global menu shortcut and be taken from every text field in the window — the guide editor's own typing included. Only Ctrl/Cmd and Alt combinations appear as menu shortcuts.

Rebind on the Keys page of the Settings dialog (chapter 7): select a slot, press a chord, and it is captured. The Natural direction checkbox on that page is not a key — it decides whether an arrow key moves the board (the default) or the camera.

What's next

Chapter 7 opens the Settings dialog.

7. Settings

Settings holds everything about how the board is drawn — the colours, the drawing options, the text and the keymap. It is a native window with four pages: Colours, Drawing, Text and Keys. Open it with Settings… on the File menu (Ctrl+Alt+S, and Cmd+, on macOS, where it also sits in the application menu).

Element-group visibility is deliberately not here: it is the layer strip and the Layers pane (chapter 2), because those are used while looking at the board, and a settings window would put the board behind the thing being adjusted.

Colours

Colours come in named themes. A theme is one complete palette, and exactly one theme is active. Three ship:

The dropdown at the top of the page chooses the active theme. New starts a theme from the shipped vanilla palette, Duplicate copies the active one, Rename renames it, and Delete removes it; the last theme cannot be deleted. The colour rows below edit the active theme, so each theme keeps its own customisations. A theme name can be anything you like, as long as it is not already taken.

The rows are grouped: the board and its copper, pads and nails, the board body and part bodies, the pointer overlays, the labels over the board, and the window chrome. The chrome rows are the status bar's background, text and link and the panes' background, text and link; the Inspector's marked row is a neutral tint of the pane text, not the link colour, so the reading colours stay readable. The dialogs, menus and other native controls keep the platform's own appearance.

Two things about the colours are easy to trip over:

Drawing

The options for copper the file measured: circle segments (how finely a drawn circle is tessellated), pad scale, the nail, trace and via default sizes, and a minimum radius for the smallest drawn shapes.

Then, under a heading of its own, the options for a body the renderer invents: draw a guessed body for a part that stated no shape; fill it with the part body colour (on by default); fill it with its class colour — the class-colour resistor, capacitor, tantalum, can or coil, off until you ask for it; case sizes and polarity marks; large capacitor — Auto (a tantalum only where the lands match a published case), Tantalum or Aluminium; and can size, the standard size an aluminium can is drawn at. No board format here states a dielectric, so which a large capacitor is, is your answer rather than the viewer's.

Pad scale is the one to understand. A board file often carries no pad size — a BVR1 pin record states a position and a net and nothing else — so MWV supplies a nominal radius, and on a fine-pitch part those nominal pads merge. The scale shrinks only those invented pads; a pad the file measured, a polygon, a box, a stated width or radius, and a two-terminal chip's own lands are drawn as the file described them whatever this is set to. The default (0.25) is the value the 820-01700 sample settled on.

Text

What the names over the board say — part values, not-stuffed marks, pin names, and a net's canonical alias — and how big they are: a target pixel height, a minimum and maximum height in mils, and the stroke weight. Nothing on this page rebuilds the board; only the text is rebuilt.

Keys

The keymap editor: one row per command with a primary and an alternate column, a slot to capture a chord into, and the Natural direction switch (chapter 6).

Apply, OK and Cancel

The dialog holds a working copy, and a theme switch or a colour change previews it on the board, the status strip and the panes at once. A preview is not a save.

When settings are saved

Settings are written on Apply and OK, and on a layer toggle from the strip or the Layers pane, and nowhere else — never per keystroke and never on exit. A preview is never a save. All of those paths land in one save, which is where the rule lives.

What's next

Chapter 8 describes the rest of the window around the board.

8. The window

Around the canvas are a title, a strip of status along the bottom, two log palettes and a menu bar.

The title

The title names the open documents, in order: the board's file name, then the schematic's when one is loaded, then the version. It is set only on a successful open, so a failed open leaves the previous board's name on screen, which is the truth about what is still displayed. A board that pairs with nothing closes the previous schematic rather than naming it beside the new board.

The status strip

The status strip along the bottom is MWV's own rather than the system's, so its background, text and link are the active theme's status bar colours (chapter 7). The note count is underlined as well as coloured, so it remains a link even on a theme whose accent sits close to its text. It carries four fields:

The board's reading also names the OBData sidecar the open used — (from the archive), (local override), not applied, and (identity mismatch) when a mismatched file was accepted or skipped. View → Board data… carries the detail, including the load-notes list; the note count beside the reading is a link to it.

When a load records a problem note — something dropped, skipped, unreadable or conflicting — the dialog opens once by itself. OK leaves the preference unchanged, Don't show for this board remembers that file, and Don't show for any board switches the prompt off. View → Open import notes on load turns it back on.

The log palettes

Two floating panes, hidden at first and toggled from the View menu:

The menus

The About box and Licenses

About MWV shows the icon, the name, the version and the copyright, the viewers MWV was inspired by, and the open-source projects it is built with. Its Licenses button opens a second window listing every third-party component and the selected one's licence text; components whose text is identical share a single entry. Both windows are modeless, and the Licenses window is parented to the frame rather than to the About box, so it stays open and readable after the About box is dismissed.

What's next

Chapter 9 lists the files MWV keeps on your disk.

9. Your data on disk

MWV keeps a small number of files in your own application-data directory — ~/Library/Application Support/MWV on macOS, and the platform's standard per-user data directory elsewhere. It writes nothing into a board or a PDF. The only file it writes beside a board is the local *.obdlocal you create by editing a reading (chapter 11).

WhatWhereWhat it holds
Settingssettings.jsonEverything you have changed: colours, drawing options, text options, element-group visibility, the keymap, the schematic pane's own preferences (Auto link, Follow board colors, the docking side, and the schematics you have picked by hand), the per-board answer about the OBData archive, and any remembered "apply anyway" answers for a mismatched sidecar (chapters 4, 6, 7 and 11).
Logmwv.log, with mwv.log.1 … mwv.log.5Every record of a session. The file is rotated at start-up, so each session begins empty and the five previous sessions are kept.
Schematic index cachepdf-index/pdf-<key>.jsonThe derived text index for a PDF, so a schematic need not be re-extracted each time it is opened. It is a discardable cache: delete the directory and the next open rebuilds it.
Repair jobsjobs/<ulid>.jsonOne file per repair job: its number, board identity, readings, changed parts, checklist progress, notes and journal. Never beside a board (chapter 12).
Local override<board stem>.obdlocal beside the boardThe reference readings you edited, in OBData syntax (chapter 11). Never the bundled archive.

The app logs the paths it resolves — the version, the log file, the settings file, the schematic cache and the repair jobs directory — as the first lines of each session, so the log tells you where everything is.

What is written, and what is not

Resetting

What's next

Chapter 10 lists the board formats MWV can read.

10. Board file formats

MWV registers sixteen board formats; ten of them really import, and the other six recognise their files and decline them with a message.

What opens

FormatExtensionsOpens?
XZZ.pcbYes
BRD.brdYes
BVR1, BVR3.bvr, .bvYes
FZ.fzYes
KICAD.kicad_pcbYes
BDV.brd, .bdv (often .GR in the wild)Yes
BDV_ASC.bdv, .ascYes
CAD (GenCAD).cadYes
TVW.tvwYes
BV.bvNo — recognised, not read
ALLEGRO_BRD, EAGLE_BRD.brdNo
CAE.caeNo
MENTOR.cadNo
ALTIUM_PCB.pcbdoc, .cmpcbdoc, .cspcbdocNo

Several extensions are claimed by more than one format — .brd by four, .bv by three, and .cad and .bdv by two each — because the formats genuinely share them. Which one you get is decided by the file's content first, so a real board of one of these reaches the right reader.

The Open dialog

The dialog offers three filters:

An extension a readable format shares with a stub stays in the first filter, which is why .bv, .brd and .cad are there even though they can also reach a refusal.

How a file is identified

MWV sniffs the first 512 bytes of the file and tries each format's detector. If none matches, it falls back to the file extension. Only when both fail does it report Unknown board file format.

That order explains most surprises when a board will not open:

When the imported model is invalid

A file can be read from beginning to end and still describe a board MWV cannot use: a coordinate that is not a number, a net that points at a pin which does not exist, bounds that run backwards, or a count so large it can only be corruption. After the importer finishes, MWV checks the finished model once, before repair data is applied or the board is prepared for drawing.

A structural fault refuses the open. The Cannot open board box carries The board imported but its model is invalid: … and the specific fault; the previous board stays on screen. This is deliberate: a partly drawn or unclickable board is worse than a clear refusal.

A recoverable finding lets the board open and becomes a Validation: line in View → Board data… and in the log. Because it is a problem note, the dialog opens once by itself on that load. The two current cases are bounds that do not enclose every part and pin, and a trace or surface naming a layer the board does not have; both have a defined fallback in the drawing.

The limits behind this check are far above real boards — a million parts, ten million pins and net references, twenty million traces, a thousand layers and a hundred million polygon points — so crossing one means a malformed file rather than a large design.

When a board imports but looks wrong

Each format has its own quirks — its container, its encoding, the geometry it guesses, and where it departs from its reference. An import that looks wrong usually says why in the board's notes (View → Board data…, chapter 8) before you conclude the board is bad.

What's next

Chapter 11 explains the repair data that sits beside a board.

11. OBData repair data

The repair data a technician wants — part values, not-stuffed flags, and per-net diode, voltage and resistance readings — is not in the board file. It lives in an OBData sidecar beside the board, or in the archive bundled with the app. A sidecar can also carry repair guides — prose about the board — which MWV reads and shows in a pane of their own.

The sidecar beside the board

MWV looks in the board's own directory for *.obdata and *.obdlocal, and matches one to the board by name:

A candidate that does not relate is refused even when it is the only one, because a directory legally holds one board and somebody else's sidecar — and another board's values look right while being wrong. A shared 820- is not a relation. Every non-obvious choice, and every refusal, explains itself in the log.

A *.obdlocal is layered over the *.obdata, field by field, so it needs to state only what it changes: a local correction to a sidecar, or to the archive's copy.

The bundled archive

With no sidecar beside the board, the data comes from the archive that ships inside MWV — a mirror of OpenBoardData, read-only, keyed by the board's own number. The first time you open a board the archive knows, MWV asks:

The archive that ships with MWV holds repair data for … : part values, not-stuffed flags and per-net readings. … Apply it to the board you are opening?

with Apply, No, not this board and Ask me next time. Apply and No are remembered per board; Ask me next time applies to that open only, so there is always a way back. A sidecar you place beside the board yourself is applied without asking, and wins over the archive either way.

What a sidecar changes

Where the readings appear

A part's value and not-stuffed mark appear over the board and in the Inspector; a net's diode, voltage and resistance readings appear in the Inspector, with a voltage in red, a diode drop in green and a resistance in grey, each in a light and a dark variant.

Editing a net's readings

The Inspector's readings are editable. Double-click a cell in the V, D or R column of a part's pin list; the cell becomes a text field with its current value selected. Type the new reading and press Enter, or press Escape to leave it alone. A reading belongs to the net: every pin on the same net shows the same value, and changing it changes all of them.

The change is written to the board's local *.obdlocal — <board stem>.obdlocal beside the board, created on the first edit. The bundled archive is never written. Only the rows for the readings you changed are touched: the header, the guides and every other row in the file are kept exactly as they were, including files written with Windows line endings.

The board you are looking at updates at once, without reopening. If the local override on disk is not the one the board opened with — it appeared, vanished, was renamed or was skipped for an identity mismatch — MWV asks you to reopen the board before editing rather than write into a file whose other rows the session has not applied.

Reading the guides

A sidecar can also carry a DIAGNOSIS block: prose about the board — a power sequence, a list of rails, troubleshooting notes — written with references to the nets and parts it means. MWV reads it and shows it in the Guides pane, docked under the Inspector (Guides in the View menu, Ctrl+G — Cmd+G on macOS). The pane appears when the board you open has guides, and stays out of the way when it does not.

The Guides Expected table with the Job reading column.

With a job active, each expectation carries the latest reading and its verdict. Record Reading... fills the dialog from the selected row; Save as Template... turns the note on screen into a reusable checklist.

A guide is reference material: MWV records no progress in one — progress, readings and changed parts live in a repair job (chapter 12). A correction to a note's text lives in the board's local *.obdlocal, never in the imported file or the archive.

Correcting a guide

Edit Guides..., under the pane, opens the editor on the section you are reading. The headings are on the left, their notes in the middle and the selected note's text on the right, with the imported text a correction replaces shown underneath.

Reloading repair data

If you correct a *.obdlocal outside MWV — or simply want the open board to pick up a file that changed — File → Reload Repair Data (Ctrl+R) re-reads the sidecars beside the board and applies them to the board on screen. Part values, packages, ratings, not-stuffed marks, net readings and guides all come from the fresh files; the view and the mesh are kept, so nothing is reopened and nothing is re-imported. A changed package is the one exception: a guessed body has to be rebuilt, so the mesh is rebuilt for it.

A sidecar that names a different board is refused rather than applied; reopen the board to make that decision, where the identity prompt belongs.

Nothing is downloaded, and the archive is never written

The archive is mirrored rather than queried because the site it comes from is scheduled for retirement: there is no network in the application at all. Nothing is downloaded, and the archive is never written. The only board-side file MWV creates is the *.obdlocal from an edited reading.

What's next

Chapter 12 records a repair job — the readings, parts and progress that belong to one attempt at fixing a board. Chapter 13 is what to do when something does not work.

12. Repair jobs

A repair job is MWV's record of one repair attempt on one board: the readings you take, the parts you change, the steps you tick and the notes you write. It is deliberately separate from the board's shared repair data. A reading recorded in a job never changes a sidecar, and editing a reference reading in the Inspector never creates a job.

Starting a job

Open the board, then choose Job → New Job.... The dialog asks for:

The job is bound to the board by its name, revision and content, not by a folder. Opening the same board later finds the job while it is unfinished; moving or copying the board file keeps it. If the board that opens does not match the recorded key — a re-export, an edit, or another board or revision at the path — the job pane says so and offers Rebind...; only you can say whether it is the board the job was recorded against.

A new job also imports the board's guide lines as checklist steps, in guide order. A step you do not need is removed from the job; the guide itself is not changed.

The job pane

The pane docks along the bottom of the window and is shown when a job is found or started. Its header names the job, its state and the counts, and carries:

Starting a job and opening an earlier one are in the Job menu, as are the pane's actions when it is closed or narrow.

The four pages are Checklist, Measurements, Changed parts and Notes. The Job menu carries the same actions when the pane is closed.

The checklist

A checklist step is a line from a guide or a template, and the page makes it a working list:

The Checklist page with a recorded reading and a step note.

A checklist step holds its own Reading and Note; the reading is judged against the step's line, and Enter ticks the selected step and moves to the next. The buttons wrap when the pane is narrow.

Readings and changed parts

Comparing a reading with its reference

The Measurements page shows, for every reading, the Expected value, the Tolerance that judged it and the Verdict. The Guides Expected table shows the same result beside the expectation it came from. A verdict is one of:

The Measurements page with Expected, Tolerance and Verdict.

Each reading shows what it was judged against, the tolerance that judged it, and the verdict with its reason. The journal keeps the as-recorded verdict; the page recomputes the display from the current guide.

A reading is judged against the guide row it was recorded from, or — when it was recorded on its own — the first matching guide expectation, then the sidecar's net reading. Record Reading... is available under the Guides table and in the Inspector's net section; both fill in the target and the reference, and a guide row also fills in the mode its expectation implies. The buttons are enabled only while a repair job is active. The verdict is recomputed whenever it is shown, so editing a guide or a sidecar reading changes the display without rewriting what the job recorded. A difference is never by itself a diagnosis.

Reusable templates

Save as Template... under the Guides table writes the note on screen as a reusable checklist file; the job pane's Checklist page can save the current job's checklist the same way. The file is an OBData checklist you choose the location of each time: every non-empty line is a step, and it records an optional board key.

New Job... offers Choose... beside its Template row. A chosen template replaces the automatic guide-step import, and its steps become the job's editable checklist. A template written for another board is accepted with a warning — its references may name nothing on this board — and a hand-written guide-only OBData file works too. The template file is never changed; the job owns the copy.

Where jobs live

Jobs are your data, not the board's: one JSON file per job under jobs/ in the application-data directory (chapter 9), never beside a board. A save replaces the file atomically. Every change is also appended to the job's journal, which the future client integration reads; nothing in this feature uses the network.

What's next

Chapter 13 is what to do when something does not work.

13. Troubleshooting

The log is the first place to look for anything here; its location is in chapter 9, and the app writes its own paths there at the start of every session.

A board will not open

A box titled Cannot open board names the reason, the status line reads <name> — not loaded, and the log carries the full path and the detail. The previous board stays on screen, because that is still what is displayed.

The reason is usually one of:

The log also carries the parser notes the import produced; View → Board data… shows the same notes as a list beside the sidecar provenance. The status strip carries their count as a link to that list. A Validation: note there is a recoverable model finding, not a failed open; one that names a part or net is clickable and takes the board to it.

A second open never blocks on the first: opening another board abandons the one running, so a slow import cannot freeze the window. A board you replaced will not appear — the abandoned import is dropped rather than reported, so the log may show only the board that won.

The schematic will not pair

Board links recognise only complete names from the loaded board, at token boundaries, and keep part and net apart. A board link that finds nothing leaves the board selection alone and reports it. Only the loaded board's names are recognised, so a schematic has no link to a name the board does not carry — and a part's value can be the anchor as well as its designator.

A PDF with no extractable text — a scan — stays viewable and says why search and links are off. Nothing in it can be searched or linked.

It feels slow

Reporting a problem

Include the log's session lines (the version, the build number and the paths), the board file's format, and what you did. The log is written to be read afterwards, so it is the right thing to attach.

What's next

That is the end of the manual; Appendix A defines the vocabulary.

Appendix A. Glossary

The board and repair vocabulary the manual uses, defined once. Each entry names the chapter that uses it.

Appendix B. A repair, start to finish

This is the hands-on case: one real board-level fault, followed from the first look to the answer, using only what the earlier chapters describe. It is a replay of a real repair, done in MWV, and each step names the feature it uses.

The fault

A MacBook Air M1 (A2337) logic board, 820-02016, arrives dead. A USB-C ammeter reads 5.15 V / 0.00 A on both ports with no battery attached: the board draws nothing. The technician's hypothesis is that the main system bus, PPBUS_AON, is shorted to ground, forcing the charger into over-current shutdown.

Open the board

Open 820-02016_V1.3.bvr. MWV finds 820-02016.pdf beside it, so the board and its schematic are side by side from the first moment (chapter 1).

The board and its schematic, fitted, on opening.

The status strip names the file, the format MWV actually read it as (BVR3), the part and net counts, and the repair data applied from the archive.

Step 1 — find the rail, and read its reference

Press Ctrl+F and type the rail's name; the matches appear as you type (chapter 5).

The Find box with the rail typed.

Choose the net. It lights up across the board, the Inspector lists all 52 of its pins with the archive's reference readings, and — because Auto link is on — the schematic jumps to a page where PPBUS_AON appears (chapters 2, 3 and 4).

The PPBUS_AON net highlighted, with its Inspector readings and the schematic page.

The Inspector reads Diode: 480 mV. That is the reference for a healthy board; the board in front of the technician measured 0.002 V — a dead short.

The fuse itself is F5200, beside the battery connector J5150. Searching a designator selects the part rather than the net, and draws its pin numbers. Pin 2 is the rail:

F5200 selected, pin 2 on PPBUS_AON.

The schematic page the search landed on shows F5200 in the charger circuit, between PPVBAT_AON_CHGR_REG and PPBUS_AON:

The charger page, with F5200 highlighted.

Step 2 — check the input side

If the short were upstream, the input rail would be shorted too. Search PPDCIN_AONSW — the board's name for PPDCIN_AON. The Inspector reads Diode: 540 mV, normal, and the member list includes R5220, the current-sense resistor the technician probed:

PPDCIN_AONSW, not shorted.

So the input is intact and the short is downstream, on PPBUS_AON.

Step 3 — check the 3.8 V rail

The largest load on PPBUS_AON is the buck converter U5700, which makes the 3.8 V rail through its inductor L5800. Searching that designator gives the inductor's value and its two pins — the switch node P3V8AON_VSW1 and the phase output PP3V8AON_PH1 — and the schematic jumps to it:

L5800, the 3.8 V rail's inductor, and its schematic callout.

The rail is PP3V8_AON_VDDMAIN on this board — its name for PP3V8_AON. Searching it shows the rail spanning 307 pins, with its decoupling capacitors (C5889 among them), and the Inspector reads 3.8 V:

PP3V8_AON_VDDMAIN, reaching the PMU.

The board shows the rail reaching into the master PMU U8100. That is the point of the step: if the PMU's high-side switch had failed, this rail would be shorted too. The technician's meter read 0.310 V here — not a short.

Step 4 — isolate the shorted branch

PPBUS_AON has dozens of decoupling capacitors, and the Inspector's member list is exactly the list to walk. The suspect is a capacitor; searching its designator selects it, draws its pin numbers, and jumps the schematic to it:

A decoupling capacitor on the rail, pin 1 on PPBUS_AON, pin 2 on GND.

A note on the designators. The repair this appendix replays was recorded on a different revision of the board than the one in the repository, and one name in the transcript is simply wrong: the 3.8 V inductor is L5800, not L5700 (there is no L5700, on this Air board or the Pro M1). This board's rail names differ too — its PP3V8_AON is PP3V8_AON_VDDMAIN — and its C6420 and J6500 are not present, so the walkthrough uses the names this board actually has (the capacitor in step 4 is C5840). The method is identical; only the labels differ.

Step 5 — turn the board over

A rail usually runs on both faces. Press Space and the same net is lit on the other side, so the top-side and bottom-side members can both be read (chapter 2):

The same net, other face.

Step 6 — follow the answer into the schematic

The schematic is not decoration. Every board selection that matches a page jumps to it, and every search you do on the board can be read on the schematic beside it. With Auto link on, the two views stay in step; with it off, Find in schematic and Show on board move one side at a time (chapter 4).

The conclusion

Remove the shorted capacitor, and diode mode on PPBUS_AON returns to 0.525 V — normal. On power-up the board retests at 20 V / 1.18 A and boots.

What this case exercised

One repair, and nearly every feature the manual describes: search by part and by net, the Inspector's reference readings, pin-level detail, the layer flip, and the board-to-schematic link. That is the daily loop of chapter 1 — locate, then read — with the schematic and the repair data beside you.