← Back to build guide

util-UHFModule

v0.2


util-UHFModule

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.

Fit table

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.

Signal chain (front face)

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)

Layout

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.

Assembly and fitting

  1. Reflow the module on its own on the hotplate (paste by syringe; the DFN-8 LNA is the only part that needs care), fitting the band's values from the table above.
  2. Lay the module across the dipole's gap, front face up, long edges flush with the dipole's, and push a 0.6-0.8 mm tinned wire through each H6 / H7 pin-hole pair to align it. If you glue, glue first: a thin bead of medium-cure epoxy on the middle of the ground-pour half, at least 3 mm from every castellation and pin hole, then clamp and let it cure. Solder the two pins (module top, dipole back) and trim them, then E1 / E2 onto the bare arm ends, then E3-E6 onto the dipole's dummy pads. If a half-hole has torn out, run a short wire from the bare patch beside it over the edge to the dipole copper. Rev 0.1 dipoles have no pin holes and put their dummy pads 1.5 / 3.5 mm off E3-E6 (y 3 / 13 instead of 1.5 / 16.5): bridge each with a short wire from the castellation's bare patch to the pad.
  3. Snap the output pigtail onto J1 and cinch its cable with a small tie through H5 and the edge notch before the board goes into the tube; fish the SMA bulkhead out through the wall hole by a string on the connector body, never by the cable.
  4. Trim the dipole with the module fitted, L1 lifted and a pigtail on J2 hanging out of the open end of the tube (the board has to come out for every cut anyway); refit L1 at the end and unsnap J2 then. Expect the end cap to pull the final resonance down a few MHz, so leave the last cut on the low side.

Regenerating

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/.

Shopping list

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.