MPO Polarity Explained: Type A, B, C and the 8-Fiber Trap at 400G

Type A/B/C fiber mapping end to end: why Type B suits 8-fiber 400G DR4 and 16-fiber 800G DR8, and where Base-8 trunks break.

The one-line answer

Connect two 400G-DR4 or 800G-DR8 ports with a single MPO cable and you want Type B. Not Type A, even though "straight through" sounds like the safe default. On a parallel-optic port, straight is the failure mode: every transmitter fires into the transmitter facing it, receive power reads as dark on all lanes, and the link never trains.

The useful question is not "which type is standard" but "how many reversals does this channel need". Once you count that, the cable choice stops being a coin flip, and the same arithmetic covers 12-fiber, 16-fiber, patch panels and 8-fiber trunks that quietly break everything.

Three cable types, and the key as a field check

ANSI/TIA-568.3-E defines three mappings for multi-fiber assemblies. The names are annoyingly similar to the method names, which is where a lot of the confusion starts: Type A/B/C describe the cable, Method A/B/C describe the channel.

AssemblyKey orientationMapping, 12 positionsEffect on a parallel link
Type Akey-up ↔ key-downP1β†’P1 … P12β†’P12straight; a crossover must come from somewhere else
Type Bkey-up ↔ key-upP1β†’P12, P2β†’P11 … P6β†’P7one full reversal; what 8F and 16F parallel links want
Type Ckey-up ↔ key-downP1β†’P2, P2β†’P1, P3β†’P4 …pairwise; duplex and cassette plants only

Key orientation is a consequence of the mapping rather than its definition, but it is the fastest thing to check in a rack. Two key-up ends on the same trunk means reversed. Key-up to key-down on a trunk that is not Type C means straight, and someone in that link is about to have a bad afternoon.

Finding position 1 on a bare connector: hold it key-up, look at the ferrule, and count left to right. The white dot on the housing marks the same side. Do this once per connector type and write it down, because the numbering on the boot and the numbering in the drawing do not always agree.

Why the receivers are numbered backwards

Here is the detail that makes Type B look wrong until it suddenly makes sense. The eight active fibers of a 400G-DR4 port are not four transmit followed by four receive in order. They are 1–4 transmit, 5–8 idle, 9–12 receive β€” and the receive lanes count in the opposite direction. Position 12 is RX1, position 9 is RX4.

PortTX positionsRX positionsIdle
400G-DR4 (MPO-12)1, 2, 3, 4 = TX1–TX412, 11, 10, 9 = RX1, 2, 3, 45–8
400G-SR8 (MPO-16)1–8 = TX1–TX816…9 = RX1–RX8none
800G-DR8 (MPO-16)1–8 = TX1–TX816…9 = RX1–RX8none
800G-DR8 as 2Γ—MPO-121–4 per connector12…9 per connector5–8

Put those two facts together and Type B is no longer a convention, just arithmetic. P1β†’P12 sends TX1 into RX1. P2β†’P11 sends TX2 into RX2. Lane order is preserved even though fiber order is reversed, and that is precisely what a PAM4 link needs, because lane 1 on one ASIC has to meet lane 1 on the other.

For an assembly of N positions, the Type B mapping is short enough to memorise:

P_far = N + 1 βˆ’ P_near

Twelve positions: 1↔12. Sixteen positions: 1↔16. Eight positions: 1↔8 β€” remember that last one, it comes back in a moment.

Counting reversals across a real channel

A link between two switches is rarely one cable. It is a cord, a trunk, maybe a panel, another cord. Each element either reverses or it does not, and what matters is the parity of the total.

Here is the whole argument in a diagram. Two Type B cords and a Type B trunk look like three flips; electrically they behave like one.

flowchart LR
    A["TX1 pos 1"] --> B["Cord B: 1 to 12"]
    B --> C["Trunk B: 12 to 1"]
    C --> D["Cord B: 1 to 12"]
    D --> E["RX1 pos 12"]
    A2["TX2 pos 2"] --> B2["Cord B: 2 to 11"]
    B2 --> C2["Trunk B: 11 to 2"]
    C2 --> D2["Cord B: 2 to 11"]
    D2 --> E2["RX2 pos 11"]

That parity rule explains a field habit that otherwise looks careless. In Method B you buy one cord type and use it at both ends, because three reversals still land on the right lane. In Method A the trunk is straight, so exactly one cord has to cross and the other must not β€” two different part numbers on the same truck, and a coin toss every time somebody grabs the wrong bag.

Channel buildNet reversalsResult on an 8-fiber parallel link
Type A trunk, Type A cords both ends0no light; TX faces TX
Type A trunk, one Type B cord and one Type A cord1correct
Type B trunk, Type B cords both ends3, equivalent to 1correct
Type B trunk, no patch cords1correct
Type C trunk with Type C cordspairwise, no full reversalwrong lane order at 400G

Two reversals is the trap worth flagging. It happens when someone "fixes" a link by swapping one cord for a Type B and leaves the other Type B in place, or when a panel internally reverses and nobody counted it. The link is then straight again, and it fails in exactly the same way as the original fault.

The 8-fiber trap, in two flavours

The first flavour is the MPO-8 connector. Base-8 cabling uses an eight-position ferrule, and its Type B mapping is 1β†’8, 2β†’7, 3β†’6, 4β†’5. Mate an MPO-8 trunk to a 400G-DR4 port and TX1 arrives at position 8, which is idle. You get four dark lanes, normal transmit power, and no diagnostic that points at the cable.

The second flavour is subtler. Assemblies sold as "8-fiber MPO-12" can be built two ways: eight fibers populated at positions 1–4 and 9–12 with the middle empty, or eight fibers populated contiguously at 1–8. Only the first matches a 400G-DR4 port. The part number often says "8F MPO" and nothing else, so the mapping has to come from the drawing or from the vendor, in writing.

This is also why a 12-fiber trunk sometimes seems to work at 100G and fails at 400G. A 100G-SR4 link uses 1–4 and 9–12 as well, so it is the same eight positions β€” but a 100G link built on cassettes may have had its polarity corrected inside the cassette, and that correction does not survive the move to a direct 400G connection.

Sixteen fibers, same logic with bigger numbers

400G-SR8, 800G-SR8 and 800G-DR8 use all sixteen positions: eight transmit, eight receive, no idle fibers. Type B still delivers one net reversal, mapping 1β†’16 and 2β†’15, and the receiver side is still numbered backwards, so lane order survives.

800G-DR8 also ships as a two-connector variant, usually written 2Γ—DR4 or 2DR4. Each MPO-12 APC port carries four transmit and four receive lanes and behaves exactly like a DR4 connector, which is convenient when the plant was built for 400G and is being upgraded port by port. What it is not is a place to reuse eight-fiber cords with both ends key-up and assume the far side sorts it out.

Worth knowing before ordering: 400G-SR8 is multimode UPC, 400G-DR4 and 800G-DR8 are single-mode APC. A UPC plug in an APC adapter gives back-reflection high enough to spoil a PAM4 eye, and the symptom β€” clean receive power, unstable pre-FEC BER β€” gets blamed on the module. If you want the loss arithmetic for a channel with this many mated pairs, the link budget walkthrough covers the connector and splice allowances for DR4 and DR8.

What the failure actually looks like

Polarity faults are oddly consistent once you know the signatures. What they never look like is a marginal link: the light either lands on a listening lane or it does not.

ObservationWhat it points to
Tx power normal, all lanes at minimum Rxeven number of reversals; cable mapping is straight
Four lanes lit, four dark, always the same groupMPO-8 trunk or an 8F assembly wired 1–8
Rx power on every lane, FEC never lockslane order scrambled, often a miswired harness
Link up at 100G, down at 400G on the same trunkcassette polarity correction that does not apply to direct attach
Clean Rx power, BER climbing after a re-cableUPC into APC, or an extra adapter used to flip polarity

The last two rows are the ones that get misdiagnosed, and both are worth separating from polarity proper. A link that fails in one direction only is not a polarity fault at all β€” a reversal affects both directions identically, because the same fibers carry the two directions in a parallel link. One-way failure means a broken fiber or a dead lane, which is a different investigation.

There is a quicker path through the whole set: check whether the module is even reaching a ready state before you touch the fiber, then compare per-lane receive power against transmit power. The link-down triage sequence runs through that order, and the 802.3 map is the place to confirm whether a given PMD uses eight fibers or sixteen before you count anything.

Before the cable order goes out

A short checklist, in the order that saves the most money.

None of this is hard. It is just unforgiving, and it fails at exactly the moment a link is supposed to be carrying production traffic.

Bottom line

Compiled from ANSI/TIA-568.3-E polarity methods, IEEE 802.3bs, 802.3cm, 802.3df PMD lane assignments, QSFP-DD hardware specification connector definitions, and published connector documentation; mapping tables recomputed here, original synthesis, no reproduction of source text.

FAQ

Is Type A or Type B correct for 400G-DR4?
Type B, if the link is a single cable between two transceivers. 400GBASE-DR4 puts TX1–TX4 on positions 1–4 and RX1–RX4 on positions 12 down to 9, so you need exactly one reversal across the channel. Type A is straight and leaves each transmitter aimed at the transmitter opposite it, which is why a Type A patch on a DR4 port gives normal transmit power and no receive light.
Why can I use identical Type B patch cords at both ends?
Because reversals add up modulo two. A Type B trunk is one reversal and each Type B cord is another, so the channel carries three reversals, which behaves like one. Method A cannot do this: its trunk is straight, so exactly one of the two patch cords has to cross and the other must not.
Can an 8-fiber MPO-8 trunk feed an MPO-12 transceiver port?
Not directly. An MPO-8 ferrule has eight positions, and its Type B mapping runs 1β†’8, 2β†’7, 3β†’6, 4β†’5, so TX1 lands on position 8 β€” one of the four idle positions in a 400G-DR4 port. You need a conversion harness that remaps 1–4 to 12–9, or a Base-12 trunk built with eight active fibers.
Does wrong polarity change insertion loss or damage anything?
It does not change loss through the fibers; the light simply arrives at a lane that is not listening, so the host reports a very low receive power and the link never trains. The damage risk comes from the fix, not the fault: stacking adapters or gender changers to flip polarity burns 0.35 to 0.75 dB per mated pair, and mixing UPC plugs into APC adapters is what actually scratches endfaces.
How do I verify polarity without a live link?
Use a polarity tester, or a light source and power meter with a fan-out, and record the mapping as a table per trunk. If you are working visually, confirm position 1 by the white dot on the connector body or by viewing the ferrule key-up with positions running left to right β€” do not infer position 1 from the cable jacket printing.
Is Type C ever correct at 400G?
Only where the channel is duplex or cassette-based and the pairwise flip is part of a documented design. A Type C trunk swaps adjacent pairs, so on an 8-fiber parallel link TX1 arrives at position 2, which is another transmitter. It belongs to legacy 10G duplex plants and pre-terminated cassette systems, not to direct 400G or 800G parallel links.