📻 New TinyCLR Project: Full Automotive‑DSP FM Tuner (TEF6686) for SITCore

Hi everyone,

I’d like to share my current TinyCLR project:
a full‑featured automotive DSP FM tuner driver for SITCore, based on the NXP TEF6686.

The TEF6686 is a modern FM DSP tuner used in high‑end car radios.
This driver brings the chip natively into TinyCLR for the first time, enabling professional‑grade FM radio reception directly from .NET code.

Repository:
:backhand_index_pointing_right: https://github.com/Implicate-X/ImplicateX.TinyCLR.Drivers.Tuner.Tef668x

:rocket: Overview

The driver implements the complete TEF6686 DSP pipeline:

  • RF front end

  • IF demodulation

  • Pilot tracking

  • Stereo matrix

  • High‑cut / High‑blend

  • Softmute

  • Multipath management

  • RDS status

  • Audio processing flags

The result is a true TinyCLR FM tuner, technically far beyond typical hobby‑level FM chips like Si47xx, RDA5807, BK1080, or QN8035.

:check_mark: Features

FM Tuning

  • 10 kHz tuning steps

  • stable PLL lock

  • automatic IF correction

  • stereo pilot detection

DSP Status

The driver exposes all relevant DSP parameters:

  • softmute

  • highcut

  • stereo

  • sthiblend

  • softmuteActive

  • highcutActive

  • stereoProcessingActive

  • stHiBlendActive

This allows building a complete audio quality display, similar to automotive receivers.

RDS Status

  • RDS available

  • RDS loss

  • RDS data present

  • RDS synchronization

(Full RDS decoding will be added later.)

Signal Quality

  • stereo available

  • digital radio flag (DAB/DRM)

  • multipath indicators

  • noise floor tracking

TinyCLR‑Optimized

  • pure I²C driver

  • no unsafe operations

  • no external dependencies

  • fully compatible with SITCore boards

:wrench: Architecture

The TEF6686 outputs analog audio directly from its DSP.

In my setup, it is combined with a VS1053B web‑radio decoder using an ADG888 analog switch:

TEF6686 → analog out → ADG888 → vintage tuner audio path
VS1053B → analog out → ADG888 → vintage tuner audio path

A front‑panel BAND button (originally FM/AM) now switches between FM and Web Radio.

:blue_book: Example: Reading FM Status

FM frequency: 91.20 MHz
FM status tuned/raw: 0x03E8
FM status RDS/raw: 0x0200 available=False loss=False
FM status signal/raw: 0x8000
FM status signal: stereoAvailable=True digitalAvailable=False
FM status processing: softmute=0 highcut=378 stereo=847 sthiblend=1000
FM status processing/flags:
softmuteActive=False
highcutActive=True
stereoProcessingActive=True
stHiBlendActive=True

These values indicate:

  • stable stereo pilot

  • active DSP optimization

  • no softmute

  • slight high‑cut adjustment

  • full stereo width

  • RDS synchronization

The TEF6686 operates at automotive‑grade quality, even with a simple whip antenna.

:hammer_and_wrench: Roadmap

  • [ ] Full RDS decoder (PS, RT, PTY, PI, AF)

  • [ ] Stereo width visualizer

  • [ ] Multipath indicator

  • [ ] Automatic station scan

  • [ ] Sample TinyCLR UI (display)

  • [ ] Integration with VS1053B web‑radio module

If anyone is interested in FM/DSP work on TinyCLR or wants to test the driver, feedback is very welcome.
This is an active project and will continue to evolve…

4 Likes

I have not heard of this chip before but I guess it is very popular, and with many cool devices on the market like this one

I wonder if I can load tinyclr on these radios and use your driver :nerd_face:

1 Like

This started as my summer project and has now grown into a full autumn project:
a DENON tuner, completely gutted and rebuilt from the inside out.
FM reception stays, of course — but the unit now gains a full Web‑Radio, powered by TinyCLR and my TEF6686 stack.

You can still see an early, abandoned attempt with a Si4703 module in the photo.
That was just a short detour — interesting, but not suitable for this project.
The real reason this investment makes sense is the TEF6686.
Some devices use this module, and everyone who works with it is impressed by its capabilities:
automotive‑grade DSP, excellent RF performance, a stable RDS pipeline, and high‑quality signal processing.
It’s the perfect foundation for a modern tuner project.

What makes this especially exciting is the broader context:
Consumer electronics is still filled with a wild mix of proprietary controllers, each with its own isolated firmware ecosystem.
With TinyCLR, something genuinely transformative is happening:
modern software architecture and its methodologies are entering embedded systems — creating a unified approach across system boundaries.
A classic consumer device suddenly gains a .NET runtime, a modular architecture, and a DSP subsystem normally found only in automotive radios.

GHI Electronics has long used the slogan:

“Where hardware meets software.”

To that, I’d like to add:

“Where consumer electronics meets TinyCLR.”

And as a fun update:
I’m currently working on the RDS Subsystem — the part that extracts and processes all RDS information as a parallel signal path.

5 Likes

Oh this deserves to be shared with everyone we know! Thanks for sharing with us.

1 Like

The project has been delayed for now because I had to work on something else.
And a PCA9306 has been added to the board.
But progress is continuing now.
The TEF6686 operates at 3.3 volts. Unfortunately, the off-the-shelf module, which is readily available, only operates at 5 volts.
The standard level shifters using the BSS138 haven’t proven to be very reliable.
Otherwise, I prefer the SN74LVC8T245, which is very reliable for SPI and I/O.

1 Like

Hi Robert.Net,
very interesting project. I’ve already ordered and received a TEF6686 module and will try to run your project in the next time.
However, I think that a voltage shifting chip might be not really required to work with the 3.3V GHI modules. A TEF6686 module can be powered with 5 V while communicating with a 3.3 V MCU at the same time, provided that the I²C lines operate at 3.3 V logic levels, which is mostly the case.
Best regards
Roland