Skip to the content
2 layers77.5 × 55.6 mmMost reader, the printed circuit board in 3D

Listen-only MOST25 adapter for JLR: the factory stereo out over TOSLINK, the car's own volume controls applied digitally with no quality loss

Size
77.5 × 55.6 mm
Copper layers
2
Thickness
1.6 mm
Parts
62
Nets
63
Pads
209
Tracks, vias
222, 155
Pours
2
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
3 Oct 2026
Updated
13 Oct 2026

Overview

Most reader is an open-source printed circuit board by Oleg-mk, from the Oleg-mk/JLR-MOST-Reader repository on GitHub, published under the CERN-OHL-S-2.0 licence. It is a 2-layer board of 77.5 × 55.6 mm with 62 parts on 63 nets, routed with 222 tracks and 155 vias.

It is built around the 74LVC1G125, 74LVC1G34Z and PLT237/T10WH, with the LMR38020FDDA, 74LVC1G123DC and TPS7B8133DRV among its other parts. Its parts include 27 capacitors, 10 resistors, 5 ICs, 3 diodes and 3 connectors.

Main components

8

README

reader_hw/README.md

reader_hw - the reader's board

One KiCad 10 sheet, most_reader.kicad_sch, written by gen_reader.py: the generator is the source, the sheet is its output (tools/check_sheet.py fails when they differ). Cut from MOST25-to-AUDIO's listener_hw/gen_listener.py (board v1.5, 7ff5d2f): the references of the parts that stay are the listener's, so the two boards compare block for block.

text
python reader_hw/gen_reader.py       the sheet, the project symbol library, the footprints
                                     (FOT, TOSLINK T10, Tang Nano 20K) with the FOT's and the
                                     T10's 3D bodies, the library tables
kicad-cli sch erc ...                0 errors, 0 warnings (check_all.py runs it)

The blocks

BlockWhatFrom the listener
1 ЖивленняJ4 battery in, F1, D2 SMBJ36A, D1, L2 and the input capacitors; U5 TPS7B8133 always-on 3.3 V (3V3_AON); U6 LMR38020 buck to 5V_SW, enabled by WAKEunchanged, less U10 and 5V_HOST (no ESP32)
2 ПробудженняU4 74LVC1G123: every RX edge restarts 0.1 s, the ring asleep turns the buck offunchanged, less U11 (no bypass to watch: the bypass is wire)
3 КільцеJ1 the TE MOST FOT header with its ferrites and Rext; R1, U1 74LVC1G34, R7; U1's output is the ring's TX through R2 and RX_BUF for U4 and U3less U2 (the mux), R9, C11
4 Розв'язкаU3 74LVC1G125 on 3V3_SW: RX_BUF into the FPGA, Ioff while the FPGA is not runningless U9 (the retiming flip-flop)
5 FPGAM1 Tang Nano 20K: RX_IN on pin 27 (IDES8), SPDIF_F on pin 42 (OSER8), 3V3_SW from pin 16 held high, 5 V through D3 with C63/C64/C852 signals of the listener's 24
6 ВихідJ6 PLT237/T10WH through R28, fed from 3V3_SW (5.5 mA typical, 10 at most) with C31 100n, C32 1uthe T10 transmitter of block 9, no coax
7 Тестові точкиTP6 3V3_AON, TP7 5V_SW, TP9 GNDunchanged
0 Про платуthe notes: what the board is and what is not on itnew

The FPGA's two lines keep the listener's pins: the ring comes in on 27 (LCD_B7) through the IDES8 that was proven there; the S/PDIF leaves on 42 (LCD_R3), where the listener's S/PDIF was, now through an OSER8 on the same 1.26 ns grid - both on pins whose only other connection is the module's empty LCD connector. Logs and ring captures go over the module's own USB-UART, the status over its LEDs.

The TOSLINK transmitter runs from 3V3_SW, FPGA pin 16 held high by the gateware: 5.5 mA typical, 10 at most, nothing a PLL in the listener's block 9 wanted a regulator of its own for. At 10 mA the pin gives VCCIO - 0.4 V at least (DS226, LVCMOS33 at DRIVE=24: 2.90 V at 3.30 V), 3.21 V by Gowin's IBIS model; the part wants 2.7 V. It is powered and driven by the same FPGA, so its input is never driven high while its supply is down.

The transmitter is Everlight's PLT237/T10WH (DPL-0000256 Rev.1, 2021): 2.7 to 5.0 V, -40 to +85 C, 25 Mbps, the pins and the T10 housing of the PLT133/T10W the board was drawn for (pegs 1.10 on 5.08, 2.62 typ in front of the pins; 8.66 +-0.40 from the pins to the front foot: the footprint's 2.63 and 8.76 are inside that). The PLT133/T10W is out of production (Everlight's last time buy 2019-09-30, Rutronik). The listener went to Cliff's ORJ-5/OTJ-5 because its receiver went too; this board has none, and the Cliff part would have meant new pegs over the copper round J6 and -20 C at the cold end.

C32 on 3V3_SW is 1u, not 10u: when the FPGA starts, pin 16 goes from its weak pull-up to a full drive and charges the rail's capacitance at the pin's short-circuit current, about 0.18 A (the IBIS model), out of the module's 3.3 V that also feeds VCCX and the SDRAM. 10u would make that a 0.3 ms pulse, 1u makes it 30 us; C31 (100n, within the data sheet's 7 mm) is the transmitter's own bypass.

Not on this board, and why

  • U2, U9, U11, the Si514 (U7) and its LDO (U8): nothing is put back on the ring. The FOT transmitter is driven by U1 alone, as an OS8104 in all-bypass drives it after reset.
  • M2 (ESP32), U10 and 5V_HOST: the control channel is read in the FPGA (reader_gw).
  • U12 DIR9001, U13 SRC4192, X1, U14: no TOSLINK input, no audio in.
  • U15 PCM5102A, U16, U17 and the line out: one output, TOSLINK.
  • J2, J3 (TDM, I2S, UART headers), J5 (TOSLINK in), J7 (coax).

The board

gen_reader_pcb.py, run with KiCad's own Python, lays the parts out once from the sheet's netlist: every part's place and the reason in its table (PLACE), the outline, four M3 holes, ground pours on both sides, the net classes (Default 0.25 mm, Rail 0.35 mm for the 3.3 V rails, Power 0.6 mm for the battery path and 5 V) and the project's DRC rule (most_reader.kicad_dru, one thermal spoke). The copper was drawn on that layout afterwards, and from then on most_reader.kicad_pcb belongs to the PCB editor: the script refuses to overwrite the file unless run with --fresh, which discards every track. Sheet changes reach the board through Tools > Update PCB from Schematic.

text
"%LOCALAPPDATA%\Programs\KiCad\10.0\bin\python.exe" reader_hw\gen_reader_pcb.py [--fresh]
python tools/check_board.py          DRC with the parity check: no violation, no difference
                                     from the sheet; unconnected items fail only once routing
                                     has begun

The layout is this board's own, 77.54 x 55.55 mm, not the listener's cut down. The board is the master and PLACE is read back off it. J1 sits on the left edge, its optical face past the edge; J4 below it with its face flush with the edge, so the car's two cables, fibre and power, leave through one face. The FOT's parts sit in rows on J1's pins (TXVCC on pin 3 with RGAIN under it, RXVCC on pin 5 with C10 and C18), R2 over U1 and U3, the column C17, R7, R1, C8 at x 23.6 and U4 with C9 and R6 under them. The battery input runs along the bottom left (F1, D1 and L2 from J4, D2 under J4, C44 on the bottom edge). M1 stands upright in the middle with its USB-C at the top edge and its HDMI end past the bottom one. On the right are D3 with C64, C85 and C63 at M1's 5 V pin, R28 and J6 on the right edge, and the buck with C45 under it. The module's 3D view shows only its pin headers (soldered in, no sockets).

Three ceramics, each 100 nF: C83 (100 V) across the input behind F1, beside D2; C84 (100 V) on the VBAT_P riser between C45 and the buck, across the electrolytic; C85 on 5V_SW beside C64. TP10 is a second ground test point beside TP6.

3V3_SW, the supply of U3 and J6, comes from module pin 7, FPGA pin 16 (LED1) held high by the gateware: U3 takes microamps and J6 5.5 mA typical, 10 at most. The module's own 3.3 V pins (19, 36) sit at its bottom, and their line up to U3 and J6 would have to cross /WAKE with a jumper; pin 7 sits above /WAKE, so nothing crosses it. Pin 16 is in bank 6 with the LEDs alone, away from the crystal's bank and the two serdes pins'. LED1 stays dark.

The routing follows the listener's scheme: the top carries every signal and supply, the bottom is one ground plane, the top's ground pour is stitched to it every 6 mm and every SMD ground pad has its own via. There is no jumper: the bottom is one unbroken ground plane with nothing but vias in it. No signal track comes within 3.5 mm of a mounting hole's centre, so an M3 head, washer or standoff sits on ground copper only: TXD bends away from H1 and S/PDIF goes round H2.

  • The ring. RXD runs 4 mm from J1 to R1 and U1. U1's output goes straight up to R2, the source resistor, and TXD runs up a lane at x 28.3 to J1's pin 1 (21 mm, point to point, nothing hanging on it). RX_BUF goes from U1 through U1's and U3's bodies to U3 and on as RX_IN to the FPGA's pin 27 (8 mm). Its branch to U4 runs west under C18's and C10's bodies, out between J1's pins 5 and 6 and down the pins' far side; RX_BUF is 31 mm in all, most of it that branch.
  • 3V3_AON leaves U5 west along y 37.6 past TP6, runs under J1's body west of its pins and comes in between pins 4 and 5 to FB2, and on under C20's body, between its pads, to FB1. In the knot it rises from C8 up the channel at x 23.7 to C17 and U1; U4 takes it straight from the trunk.
  • 3V3_SW leaves module pin 7 west to C12 and U3, and east across the module's inside to J6 with C31 and C32 on stubs. /WAKE crosses the module below it, on top, to the right side and along y 30.3 into U6's EN.
  • VBAT_P goes from L2 down to C44, under the module's lower end along y 60.1, up its right side at x 58.1 past C45 and C84 to C43, C4 and U6. L2's top end feeds U5's input pins from below, and the cap row hangs on them.
  • The buck. C4 straddles VIN and GND right over U6; C43 on the VBAT_P line beside it; RT and FB short on U6's left; BOOT and SW straight down into C6 and L1; R4 senses at C7; TP7 on a stub from C7; the 5 V goes round L1's foot, up the right edge into C63 and along the top to C85, C64 and D3.
  • Widths. Power 0.6 mm (0.3 into U5's 0.65 mm pins), Rail 0.35, signals 0.25, 0.2 through the bodies of U1, U3 and U4.

Checks on the routed board: DRC 0 violations with the schematic parity check, 0 unconnected items, no silkscreen overlaps (the only silk finding is J4's library outline at the board edge, as on the listener). The silkscreen is at JLCPCB's minimums: text 1.0 mm high with a 0.15 mm stroke, lines 0.15 mm (KiCad's footprints draw 0.12), checked by tools/check_board.py. The labels sit beside their parts, clear of every pad; in the crowded corners eight small parts' labels could not, and are hidden on the silk (C10, C17, C18, FB2, R1, R7 by J1; C47, C84). They stay on F.Fab. The board carries its stackup: 1.6 mm FR-4, 1 oz, ENIG. Tracks run 558 mm, all on the top; 155 vias, all of them ground. gen_reader_pcb.py --fresh on a copy lays every part where the board has it.

The manufacturing package

make_fab.py writes fab/ from the board and the sheet, as the listener's does: the Gerbers and both drill files with a zip for the board house, the BOM and the pick-and-place, the same two in JLCPCB's format for an order with the SMD parts assembled (every part with the LCSC number chosen for the listener, the reader's parts among them, but C32's 1u 0805, C28323; none is consigned), and a README with the board's numbers and the order steps. Every date in the files is the board's title-block date, so the package is the same on every run, and check_all.py fails when it no longer matches the board or the commit. By hand after delivery: J1 (the FOT unit), J4 (Micro-Fit), J6 (TOSLINK, PLT237/T10WH: DigiKey 1080-PLT237/T10WH-ND; LCSC lists it as C17296340) and M1 (the Tang Nano, on its own pin headers). The CPL's rotations were read off each chosen part's LCSC footprint: the community table's 180 for the electrolytics and for VSSOP-8 would have put C44, C45 and C63 in reversed and U4 across its pads.

text
python reader_hw/make_fab.py

Next

The first boards: bring-up on the bench (the supplies, then the bitstream over the module's own USB-C, SRAM first, then flash), then the car (the ring's bypass first, then the reader).

Parts

62
QtyValueFootprintReferences
9100nCapacitor_SMD:C_0603_1608MetricC6, C8, C10, C12, C17, C19, C31, C64, C85
7100n 100VCapacitor_SMD:C_0603_1608MetricC2, C43, C46, C47, C82, C83, C84
4M3MountingHole_3.2mm_M3H1, H2, H3, H4
3100kResistor_SMD:R_0603_1608MetricR4, R6, R7
2100u 63VCapacitor_SMD:CP_Elec_10x10.5C44, C45
210uCapacitor_SMD:C_0805_2012MetricC18, C20
2150Resistor_SMD:R_0603_1608MetricR1, R2
227kResistor_SMD:R_0603_1608MetricR3, R42
2600RInductor_SMD:L_0603_1608MetricFB1, FB2
2GNDTestPoint:TestPoint_Pad_D2.0mmTP9, TP10
2SS34Diode_SMD:D_SMAD1, D3
11-1394640-1most_reader:TE_MOST_Pigtail_FOT_2+0J1
1100u 16VCapacitor_SMD:CP_Elec_6.3x7.7C63
110u 100VCapacitor_SMD:C_1210_3225MetricC1
115uInductor_SMD:L_Bourns_SRN6045TAL1
11uCapacitor_SMD:C_0603_1608MetricC9
11uCapacitor_SMD:C_0805_2012MetricC32
122uInductor_SMD:L_Bourns-SRN8040_8x8.15mmL2
123k2Resistor_SMD:R_0603_1608MetricR5
12A TFuse:Fuse_1206_3216MetricF1
12u2Capacitor_SMD:C_0603_1608MetricC3
133Resistor_SMD:R_0603_1608MetricR28
13V3_AONTestPoint:TestPoint_Pad_D2.0mmTP6
147u 10VCapacitor_SMD:C_1210_3225MetricC7
14u7 100VCapacitor_SMD:C_1210_3225MetricC4
15V_SWTestPoint:TestPoint_Pad_D2.0mmTP7
164k9 1%Resistor_SMD:R_0603_1608MetricR31
174LVC1G123Package_SO:VSSOP-8_2.3x2mm_P0.5mmU4
174LVC1G125Package_TO_SOT_SMD:SOT-353_SC-70-5U3
174LVC1G34Package_TO_SOT_SMD:SOT-353_SC-70-5U1
1LMR38020FPackage_SO:Texas_HSOP-8-1EP_3.9x4.9mm_P1.27mm_ThermalViasU6
1PLT237/T10WHmost_reader:Everlight_TOSLINK_T10J6
1SMBJ36ADiode_SMD:D_SMBD2
1TPS7B8133DRVPackage_SON:WSON-6-1EP_2x2mm_P0.65mm_EP1x1.6mmU5
1Tang Nano 20Kmost_reader:Sipeed_TangNano20KM1
1VBAT_INConnector_Molex:Molex_Micro-Fit_3.0_43650-0200_1x02_P3.00mm_HorizontalJ4

Similar boards

  • 2 layers123.6 × 78.9 mmMost listener, the printed circuit board in 3D

    Most listener

    Oleg-mk/MOST25-to-AUDIO

    Passive MOST25 listener: Tang Nano 20K FPGA, ESP32 host, stereo I2S out with the head unit's volume, balance and tone

    172 parts1CERN-OHL-S-2.0
  • 4 layers41 × 34 mmTdc tdt kicad, the printed circuit board in 3D

    Tdc tdt kicad

    akionu/mameTDT

    $\theta=−5.3 × 10^{−2} + 2.92 × 10^{−2} \epsilon−5.5 × 10^{−4} \epsilon^2+ 4.3 × 10^{−6}\epsilon^3$ ただし、土の水分量$\theta [m^3/m^3]$、比誘電率$\epsilon$です。

    65 partsApache-2.0
  • 6 layers36 × 36 mmRidge3-fc, the printed circuit board in 3D

    Ridge3-fc

    offgridevices/offgrid-hardware

    Open hardware from OffGrid Devices. One folder per board. CERN-OHL-S.

    124 partsCERN-OHL-S-2.0
  • 2 layers102 × 56 mmI2S SPDIF Toslink, the printed circuit board in 3D

    I2S SPDIF Toslink

    chrissk0212/I2S_Toslink

    This revision finalizes the two output devices:

    56 parts
  • 2 layers25.4 × 22.9 mmFiberaudio pm, the printed circuit board in 3D

    Fiberaudio pm

    islandcontroller/fiberaudio-pm

    A Pmod™ Compatible peripheral module featuring a pair of active optical audio transmitter/receivers

    8 partsCERN-OHL-P-2.0
  • 2 layers30.9 × 24.4 mmAdapter spdif, the printed circuit board in 3D

    Adapter spdif

    schenkmi/electronic-projects

    misc electronic projects

    11 parts6CERN-OHL-W-2.0
  • 2 layers129.5 × 72.6 mmOpenPLC, the printed circuit board in 3D

    OpenPLC

    radioelf/OpenPlc

    Hardware for OpenPLC with raspberry PI Z and Mod. software OpenPlc

    165 parts7
  • 2 layers340 × 220 mmFg2 fdim surrogate routed, the printed circuit board in 3D

    Fg2 fdim surrogate routed

    lcsingleton/fg2-fdim-surrogate

    A carrier/backplane KiCad project that hosts four prefab modules (WeAct STM32F412RET6 Core Board, MCP2551 CAN breakout, LD24AJTA LED driver, two adjustable buck converters) and wires them into the Ford FG2 Falcon…

    21 parts1MIT

Questions

How big is the Most reader PCB?

It measures 77.5 × 55.6 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Most reader use?

62 parts, built around the 74LVC1G125, 74LVC1G34Z, PLT237/T10WH and LMR38020FDDA. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the Most reader KiCad files?

From the Oleg-mk/JLR-MOST-Reader repository on GitHub, at the commit this page was made from: the board is reader_hw/most_reader.kicad_pcb and its schematic reader_hw/most_reader.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Most reader design in my own project?

Its repository publishes it under the CERN-OHL-S-2.0 licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).