
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

Listen-only MOST25 adapter for JLR: the factory stereo out over TOSLINK, the car's own volume controls applied digitally with no quality loss
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.
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.
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)| Block | What | From 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 WAKE | unchanged, less U10 and 5V_HOST (no ESP32) |
| 2 Пробудження | U4 74LVC1G123: every RX edge restarts 0.1 s, the ring asleep turns the buck off | unchanged, 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 U3 | less U2 (the mux), R9, C11 |
| 4 Розв'язка | U3 74LVC1G125 on 3V3_SW: RX_BUF into the FPGA, Ioff while the FPGA is not running | less U9 (the retiming flip-flop) |
| 5 FPGA | M1 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/C85 | 2 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 1u | the T10 transmitter of block 9, no coax |
| 7 Тестові точки | TP6 3V3_AON, TP7 5V_SW, TP9 GND | unchanged |
| 0 Про плату | the notes: what the board is and what is not on it | new |
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.
reader_gw).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.
"%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 begunThe 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.
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.
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.
python reader_hw/make_fab.pyThe 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).
| Qty | Value | Footprint | References |
|---|---|---|---|
| 9 | 100n | Capacitor_SMD:C_0603_1608Metric | C6, C8, C10, C12, C17, C19, C31, C64, C85 |
| 7 | 100n 100V | Capacitor_SMD:C_0603_1608Metric | C2, C43, C46, C47, C82, C83, C84 |
| 4 | M3 | MountingHole_3.2mm_M3 | H1, H2, H3, H4 |
| 3 | 100k | Resistor_SMD:R_0603_1608Metric | R4, R6, R7 |
| 2 | 100u 63V | Capacitor_SMD:CP_Elec_10x10.5 | C44, C45 |
| 2 | 10u | Capacitor_SMD:C_0805_2012Metric | C18, C20 |
| 2 | 150 | Resistor_SMD:R_0603_1608Metric | R1, R2 |
| 2 | 27k | Resistor_SMD:R_0603_1608Metric | R3, R42 |
| 2 | 600R | Inductor_SMD:L_0603_1608Metric | FB1, FB2 |
| 2 | GND | TestPoint:TestPoint_Pad_D2.0mm | TP9, TP10 |
| 2 | SS34 | Diode_SMD:D_SMA | D1, D3 |
| 1 | 1-1394640-1 | most_reader:TE_MOST_Pigtail_FOT_2+0 | J1 |
| 1 | 100u 16V | Capacitor_SMD:CP_Elec_6.3x7.7 | C63 |
| 1 | 10u 100V | Capacitor_SMD:C_1210_3225Metric | C1 |
| 1 | 15u | Inductor_SMD:L_Bourns_SRN6045TA | L1 |
| 1 | 1u | Capacitor_SMD:C_0603_1608Metric | C9 |
| 1 | 1u | Capacitor_SMD:C_0805_2012Metric | C32 |
| 1 | 22u | Inductor_SMD:L_Bourns-SRN8040_8x8.15mm | L2 |
| 1 | 23k2 | Resistor_SMD:R_0603_1608Metric | R5 |
| 1 | 2A T | Fuse:Fuse_1206_3216Metric | F1 |
| 1 | 2u2 | Capacitor_SMD:C_0603_1608Metric | C3 |
| 1 | 33 | Resistor_SMD:R_0603_1608Metric | R28 |
| 1 | 3V3_AON | TestPoint:TestPoint_Pad_D2.0mm | TP6 |
| 1 | 47u 10V | Capacitor_SMD:C_1210_3225Metric | C7 |
| 1 | 4u7 100V | Capacitor_SMD:C_1210_3225Metric | C4 |
| 1 | 5V_SW | TestPoint:TestPoint_Pad_D2.0mm | TP7 |
| 1 | 64k9 1% | Resistor_SMD:R_0603_1608Metric | R31 |
| 1 | 74LVC1G123 | Package_SO:VSSOP-8_2.3x2mm_P0.5mm | U4 |
| 1 | 74LVC1G125 | Package_TO_SOT_SMD:SOT-353_SC-70-5 | U3 |
| 1 | 74LVC1G34 | Package_TO_SOT_SMD:SOT-353_SC-70-5 | U1 |
| 1 | LMR38020F | Package_SO:Texas_HSOP-8-1EP_3.9x4.9mm_P1.27mm_ThermalVias | U6 |
| 1 | PLT237/T10WH | most_reader:Everlight_TOSLINK_T10 | J6 |
| 1 | SMBJ36A | Diode_SMD:D_SMB | D2 |
| 1 | TPS7B8133DRV | Package_SON:WSON-6-1EP_2x2mm_P0.65mm_EP1x1.6mm | U5 |
| 1 | Tang Nano 20K | most_reader:Sipeed_TangNano20K | M1 |
| 1 | VBAT_IN | Connector_Molex:Molex_Micro-Fit_3.0_43650-0200_1x02_P3.00mm_Horizontal | J4 |

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

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$です。

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


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



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…
It measures 77.5 × 55.6 mm and has 2 copper layers, 1.6 mm thick.
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.
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.
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).