v0.2
32 x 30 mm band module for the 772 MHz (SVRCS) and 1090 MHz (ADS-B) PCB dipoles: balun, ESD, a 3-pole highpass,
a TQP3M9036 LNA, two Tai-Saw SAW filters on one universal footprint, a coax bias tee and a u.FL output receptacle. It is
hand-assembled on a hotplate from one LCSC order and soldered across the centre gap of a bare dipole board
(util-Dipole772, util-Dipole1090) through six edge castellations. One layout serves both bands; a module is
made a 772 or a 1090 module by three passive values and the SAW part number. Part of the SDR antenna system
(beads epic kicad-gpmd, task kicad-wbhj); it supersedes the integrated util-Antenna772 / util-Antenna1090
orders, which stay as the fallback designs.
| ref | 1090 module | 772 module |
|---|---|---|
| C11, C12 | 2.7 pF C0G 0603, C95180 | 0R 0603, C21189 |
| L11 | 5.6 nH LQW18AN5N6C00D, C98081 | DNP |
| FL1, FL2 | TA1090EC (SMD3838-6P), C20415295 | TA2429A (SMD3030-6P), C46551386 |
Everything else is common: T1 TC1-1-13M+ C879854, D1 / D3 GBLC05C-TP C558424 (SOD-323, 0.3 pF), R1 1 M, L1 0R,
C8 / C9 / C17 100 pF C14858, U1 TQP3M9036 C920261, R3 10 k, L9 / L10 150 nH LQW18ANR15G00D C113131, C10 100 nF
C14663, D2 SMF5.0A C19077497, J1 Hirose U.FL-R-SMT-1 C88374 (output). J2 is a second U.FL-R-SMT-1 on the balun side of
L1, left off except on the unit being tuned. R4 (LNA bypass), R6 (FL1 bypass) and R5 (FL2 bypass) are DNP 0R pads: fit R4 for a
passive board, R6 to skip the first SAW, R5 to skip the second. The consolidated shopping list for every board is
docs/lcsc-shopping-list.csv.
| block | parts | notes |
|---|---|---|
| castellations | E1 / E2 on the feed line (arm ends), E3-E6 on ground at the end-edge corners | 1.0 mm half-holes on 1.8 mm pads; a 1.4 x 1.6 mm bare patch beside each one takes a wire bridge if a half-hole tears out |
| balun | T1 TC1-1-13M+, D1 ESD leg to leg, R1 1 M bleed | primary row on the feed line, secondary grounded, nothing else in the balanced band |
| test port | L1 0R link, J2 u.FL receptacle (DNP) | lift L1, fit J2, plug a u.FL-to-SMA pigtail into the NanoVNA: antenna + balun at 50 ohm; refit L1 afterwards. Injector OFF before any cable carrying 5 V goes into J2 (the balun secondary is DC-grounded). J2's bare ground pads take a soldered braid if you would rather not fit the receptacle |
| highpass | C11 series, L11 shunt, C12 series (0603) | 1090: fc ~950 MHz, 0.5 dB at 1090, -3 dB at 850, -7 at 700, -16 at 500; 772: 0R / DNP / 0R |
| LNA | D3 at the input, C8, U1 TQP3M9036, R3 shutdown pull-down, C9, L9 choke | 0.45 dB NF, 68 mA at 5 V, shared pedalfx/boardgen/lna_tqp.py block |
| SAWs | FL1, FL2 on RF_Antenna:SAW_TST_3030-3838 |
union of the 3838 and 3030 land patterns; 2 in, 5 out, corner pads ground |
| bias tee | L10 from the coax, C10, C17, D2 SMF5.0A, TP1 | 5 V from the indoor USB bias-tee injector (util-BiasTee); SDR bias tees off |
| output | J1 u.FL receptacle at the top edge | u.FL-to-SMA-female bulkhead pigtail (1.37 mm cable, 100-150 mm), lying along the top edge eastwards under the cinch tie (slot H5 + edge notch); the SMA bulkhead goes through the tube wall at the module's height, nut and seal outside, SMA-to-F adapter in a boot; 1-2 ferrite sleeves at the board. A second u.FL pigtail on J2 plus this one turn the module into a two-port for a bench S21 sweep of the whole chain (5 V into the J1 side) |
Module frame x 0..32, y 0..30 (board file origin +20/+20), 1 mm corner radius, every part on the front. Order it as 1.0 mm FR4 (2026-09-12): the short 0.4-0.6 mm RF tracks land nearer 50 ohm, the SAW ground vias are shorter, the castellation walls wet more easily and the board heats faster on the hotplate; the dipoles stay 1.6 mm for stiffness. The module is 2 mm wider than the dipole's 30 mm gap so the feed castellations at (0, 23) and (32, 23) land on the arm copper; its ground pours (both faces, stitched, x 1..31, y 0.6..17) stay inside the gap. The feed line is 7 mm from the bottom edge exactly as on the dipoles and the integrated boards. Balanced band y 17..30: 5 mm feed traces of equal length into T1's primary pads, D1 below the line, R1 into the pour. Row A (y 15.7) runs leftwards from the balun secondary: L1, C11, L11, C12, then R4; row B (y 12) holds D3 and the LNA block leftwards with R3 and L9 above it; the SAW1_IN bus drops down the left side to row C (y 5.5) where FL1 and FL2 run rightwards with R6 / R5 above them; the RF_OUT lane runs along the SAW row up into J1's signal pad and on to L10; J2 sits beside L1 with its south ground pad straddling the pour edge (T1's secondary ground stub lands in it); the bias tee sits under T1's free side on the right and its BIAS lane to L9 is the only track on the back. Two plated pin holes H6 (5.4, 18.3) and H7 (26.6, 18.3), no net, sit 1.3 mm below the pour and line up with the dipole's H6 / H7. No reference designators on the silk; the back carries the fit table. Ground stitching: 34 vias, one within 1.4 mm of every SAW corner pad and 2.2 mm of the braid pad. ERC 0, DRC 0/0, schematic parity 0, via audit clean.
tools/gen_module.py (system python) writes the schematic, lib tables and project text variables;
tools/check_netlist.py exports the netlist and checks it; tools/gen_module_board.py (KiCad's python) builds the
board. Shared code lives in pedalfx/boardgen (the LNA block and bias tee are lna_tqp.py), symbols and
footprints in kicad-pedal-lib/RF_Antenna (project lib tables point at ../kicad-pedal-lib). Regenerate with the
project closed in KiCad. tools/check_landing.py (KiCad's python) checks that the castellations, cinch slot and pin holes land on
both dipoles' dummy pads, slot and pin holes; run it after regenerating the module or either dipole. Renders and the schematic PDF are in docs/.
docs/lcsc-shopping-list.csv is produced by pedalfx/boardgen/bom_consolidate.py, run from ~/Documents/repos:
python3 pedalfx/boardgen/bom_consolidate.py --out util-UHFModule/docs/lcsc-shopping-list.csv \
--board mod-1090=util-UHFModule:2:J2=u.FL/C88374 \
--board mod-772=util-UHFModule:2:C11=0R/C21189,C12=0R/C21189,L11=DNP,FL1=TA2429A/C46551386,FL2=TA2429A/C46551386 \
--board vhf=util-AntennaVHFCenter:2
Two module fits (1090 and 772, the --board mod-772 overrides swap C11/C12/L11/FL1/FL2; the J2= override on the
1090 fit counts the DNP test receptacle so two of them plus a spare land in the order) plus the VHF centre
board, each at qty 2, plus a spares column (+20%, minimum +2 for 0603 passives, +1 otherwise). Description and
price tiers come from the local JLC FTS5 catalog when the LCSC number is present there. --work-dir defaults to
a fresh temp directory for the kicad-cli netlist exports (so nothing is written into the source repos); pass it
explicitly to keep the exports around.
docs/lcsc-bench-stock.csv is the companion bench kit for the same order: the Murata 0603 and 0805 inductor values,
C0G matching capacitors and 0R links that cover matching-network experiments, highpass retunes and a 2 m scaling of the
VHF bandpass, chosen so one LCSC shipment covers small tweaks without a second order.