MxL5007T Silicon Tuner Radio | Full DIY Guide & Linux Driver Explained
MxL5007T Tuner Radio: Build a Wideband 44–885 MHz Receiver from a Digital TV Chip
The MxL5007T is a low-power silicon tuner IC from MaxLinear, originally designed for digital terrestrial TV standards (DVB-T/H, ATSC, DTMB). Hobbyists successfully repurpose it as a broad-frequency analog radio receiver covering 44 MHz to 885 MHz with programmable IF output and I²C control.
MxL5007T Silicon Tuner Radio | Full DIY Guide & Linux Driver Explained
Key Specs and Features
- Tuning range: Continuous 44–885 MHz (product briefs and Linux drivers confirm this; many commercial receivers software-limit it to VHF/UHF TV bands).
- Package: 5×5 mm QFN-32.
- Power: Ultra-low (~300 mW typical), “green” design for ATSC converter boxes and set-top boxes.
- Interface: I²C (write address typically 0xC0).
- IF output: Software-programmable (common values include 4, 4.5, 5, 6, 36.15, 44 MHz, etc.).
- Channel filter BW: Programmable 6/7/8 MHz.
- Other: Integrated LNA, tracking filters, no external SAW filters required, single-ended 75 Ω RF input, optional loop-through and reference clock output.
It was introduced around 2008 targeting low-cost digital TV cutover products and remains available via salvage from old DVB-T/ATSC receivers or electronics suppliers.
Why Use It for Radio
Traditional TV tuners often have coarser steps (31.25 or 62.5 kHz). The MxL5007T offers a finer ~15.625 kHz step. It works for analog FM/AM-style reception when paired with a simple demodulator (e.g., TA2003 or similar FM detector IC) after the IF stage. Linux kernel drivers (mxl5007t.c / mxl5007t.h) provide the register-level interface that Arduino and other microcontroller libraries are based on.
Practical Build Notes (from documented projects)
- Salvage the IC from a discarded SCART/USB DVB-T stick or set-top box. Trace power, RF input, IF output, and I²C lines (SDA/SCL).
- Power and connect to an MCU I²C bus (3.3 V logic typical).
- Initialize with crystal frequency (common options: 16–48 MHz range; 24 MHz is frequently used).
- Set frequency and bandwidth via library calls (example Arduino-style):
