dev builds
themes manual
device status forums
mailing lists
IRC bugs
dev guide

Search | Go
Wiki > Main > FmTunerHardware (r17)

Overview of FM tuner chips


This page gives an overview of the various FM chips in current Rockbox targets and experimental Rockbox ports.

Philips/NXP TEA5700 family

This family of FM tuners is the most popular in rockbox targets.


Supported in rockbox by the tea5760uk.c driver.

These chips are used in:


Supported in rockbox by the tea5767.c driver.

These chips are used in:

Sanyo LV24000 family

General features:
  • bus interface is a proprietary 3-wire protocol
  • tuning requires a multi-step algorithm with assistance of the host microcontroller
These chips are used in:

Silicon Laboratories Si4700 family

General features:
  • few external components (basically an antenna and a crystal).
  • bus interface is either a 2-wire I2C-like protocol, or a 3-wire proprietary protocol
  • built-in firmware provides a high-level command interface (e.g. it can automatically seek forwards/backwards)
Some models of this chip provide RDS support (Si4701 and Si4703).


These chips are basic FM tuners, without RDS support. The Si4700 and Si4702 are supported by the rockbox si4700.c driver.

These chips are used in:


These chips provide the same functionality as the Si4700/Si4702 but with RDS support added. RDS is not yet supported by rockbox.

These chips are used in:

Mystery Silabs chip in some Sansa Clip+

This chip appears to have 32 registers of 16-bit each. Writes start at register 0x02, read start at register 0x0A (similar to si4700). The first 16 registers are shown below.

Reg Name D15 D14 D13 D12 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0
02 POWERCFG   DMUTE MONO                         ENABLE
04 SYSCONFIG1         DE MUTE? SMUTE                  
05 SYSCONFIG2                         VOLUME
06 SYSCONFIG3                                
0B STATUSRSSI RSSI   AFCRL                
0C IDENT ID1 = 0x58                  
0D   ID2 = 0x00 or not                  

Radio chip detection

Read 128 bytes from the chip, check if bytes[4] == 0x58. If this is the case, the chip has been detected. Now write 2 bytes (0x200) and wait a bit (10 ms), then check bytes[6] and compare against 0. If 0, write a set of 72 initialisation values, else write a set of 82 initialisation values.

Mute radio

Set or clear the DMUTE bit, just like the si4700. Also set bits 9 and 10 of register 0x04 and the four lowest bits of register 5 (VOLUME).

Force mono

Set or clear the MONO bit, just like the si4700.

Set band

Write the 2-bit band code in BAND, similar to the si4700, but in a different location.

The lowest bit of BAND indicates the start of the band as follows: 0 = 76 MHz, 1 = 87 MHz

Power down

Write either 0 (powerdown) or 1 (powerup) to register 0x02. Set register bits 9 and 10 of register 0x04.

Set soft-mute

On un-mute, clear bit 9 of register 0x04. On mute, set bits 9 and 10 of register 0x04.

Set de-emphasis

Set or clear bit 11 of register 0x04, just like the si4700.

Set channel spacing

Write the 2-bit channel space code in SPACE, similar to si4700, but in a different location.

Set frequency

Calculate the channel code CHAN = (Fdesired - Flow) / 50 KHz, where Fdesired is the frequency to tune to and Flow is the lowest frequency in this band. Then write CHAN together with the TUNE bit set. Wait 70 ms, read 4 bytes status. Verify that READCHAN = CHAN and that STC is set, if so we're done, otherwise clear TUNE and try the whole procedure again up to 25 times.


Read 4 bytes from the radio chip. If AFCRL is set, assume 0, otherwise return RSSI bits.

Samsung S1A0903X01

Supported in rockbox by the s1a0903x01.c driver

Used in:
  • Archos FM recorder

Niigata family

There is no driver yet for this family of FM tuners in rockbox.

General features: These chips are used in:
r17 - 13 Jun 2010 - 21:06:36 - BertrikSikken

Copyright by the contributing authors.