Library / SDK
pu2clr/SI4735 avatar
pu2clr/SI4735

SI4735: an Arduino library for building a broadcast radio receiver, not a demo board

SI473X Library for Arduino

820 stars225 forksHTMLMIT

At a glance

What is it?
The SI4735 library by Ricardo Lima Caratti drives the Si473X family of Silicon Labs tuner chips over I2C, covering AM, SSB and FM with RDS from 150 kHz to 30 MHz. It is the software half of a receiver you have to wire up yourself, and the documentation treats the schematics as part of the product.
Who is it for?
SI4735 fits a hobbyist or radio experimenter who wants a working AM, SSB and FM receiver on an ATmega328, an ESP32 or a Teensy, and who is prepared to build the board and work through the Si473X documentation. It does not fit a team that wants a finished receiver, and it does not fit a design that needs a mode the particular chip revision does not implement.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 177 days ago.
What is it written in?
Mainly HTML, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 22, 2026, and from our analysis. They are not legal advice.

Editorial analysis

What the library actually is, and who writes it for

The SI4735 library is an Arduino library for controlling the SI47XX family of tuner chips from Silicon Labs, and the README states the audience directly: Arduino developers, radio experimenters, hobbyists and anyone interested in building a receiver based on the Si473X IC family. It is aimed at people who are building hardware, not at people who want a radio in a box.

The scope is broadcast receivers: AM, SSB and FM with RDS. The frequency ranges are given as 150 kHz to 30 MHz for the AM and SSB modes, and 64 to 108 MHz for FM. That range is the interesting part for a hobbyist, because it covers the shortwave bands, the AM broadcast band and the FM band with the RDS traffic that a lot of receivers now display.

The README also has a page of schematics and hardware notes, several example directories and an API reference, and it offers the documentation in Portuguese alongside the English version. The author is Ricardo Lima Caratti, who describes a background in educational technology and distributed systems, and whose hobbies are electronics and amateur radio. That combination explains the shape of the project: the software is thorough, and the hardware documentation is treated as part of the deliverable rather than as an afterthought.

The library can be freely distributed under the MIT Free Software model, and the README states that using or installing it means agreeing to those terms.

I2C is the bus, and the silicon is the real constraint

The README is explicit that the communication protocol used by the library is I2C. That is the whole hardware interface: the tuner is a slave on a two wire bus, and the library drives it with Silicon Labs commands.

The constraint that matters more than the bus is the chip revision. The library supports the SI47XX family, including the boards PL102BA-S V:2.1 10628 and NE928-10A V:01 which are based on the SI4730, and it has support for the SSB mode on SI4735-D60 and SI4732-A10 devices. The README says the library can also be used on all members of the SI473X family, while respecting the features available in each IC version.

That last clause is the one to hold on to. The library mirrors the silicon rather than working around it, so a mode or a band that a particular part does not implement cannot be enabled by software. If you are buying a chip based on a datasheet rather than on the library, check the part number against the feature list before you order.

The library was built on the AN332 Si47XX Programming Guide Rev 1.0, and on the AN332 Rev 0.8 universal programming guide amendment for the SI4735-D60 and SI4732-A10 SSB and NBFM patches. In other words, the implementation follows Silicon Labs documentation, which is where you should go for the authoritative behaviour of a register or a command.

Single side band needs a Silicon Labs patch, and the library carries it

The single side band support is the part of the project that is genuinely unusual, and it comes with a caveat that the README states in the open.

SSB on the SI4735-D60 and SI4732-A10 is enabled through a patch from Silicon Labs, and the library is built to apply and work with it. The patch itself comes from the AN332 Rev 0.8 amendment, which covers SSB and NBFM patches for those two devices. The library documentation has a dedicated section on SSB patch support for single side band, separate from the general library documentation.

This is worth understanding as a design decision rather than a feature list. A chip that ships with SSB disabled can be made to do SSB by loading a patch into it, and the patch is supplied by the vendor as a documented procedure. The library does the loading and the subsequent register work, which removes the single most tedious part of the job: a long sequence of writes that has to be exactly right on every boot.

The same pattern shows up elsewhere in the documentation. There are separate sections for RDS support, for EEPROM support, for digital audio support, and for using an external active crystal or signal generator with the SI47XX family, which is what you need when a particular board revision does not have the crystal the chip expects. Each of those is a hardware fact turned into a software entry point.

Twenty example sketches, one per board you might build on

The examples directory is where this project distinguishes itself from a datasheet transcription. It contains more than twenty directories, and the names line up with the boards the documentation covers:

There is an example for a serial monitor, for a 20x4 I2C LCD, for an I2C OLED, for a TFT display, for the ATtiny85, the ESP32, the ESP8266, the STM32, the TM1638, the Nokia 5110, RDS, running without a crystal, a Morse code readout, the Raspberry Pi Pico, the Teensy, the Seeeduino, the Arduino DUE and MEGA, the ATmega128 and ATmega32, the Arduino Nano 33 BLE, an automatic bandpass filter, and the ATS20 radio kits.

The naming convention is a practical one. The number gives an order, and the suffix names the target, so the example that matches the hardware in front of you is findable without reading twenty files.

The installation instructions are in the documentation rather than in the README text, under Library Installation, and the project also documents a command line arduino-cli route, described as a faster alternative to the Arduino IDE, with a dedicated page in the examples directory. The repository carries library.properties and keywords.txt, the two files the Arduino library manager expects, so the library is distributed as a normal Arduino library rather than as a collection of loose sketches.

The schematics are part of the documentation, and they are numerous

The hardware side is documented at the same level of detail as the software. The README's contents list has a schematic section with all schematics, a component parts list, and tips to build, followed by per-board schematics: an ATmega328 based board with an OLED, an ESP32 based board, a standalone ATmega328 with or without an external crystal using the SI4735-D60 and a 16x2 LCD, an Arduino or ATmega328 with a Nokia 5110, a basic schematic with a TFT, an Arduino DUE or MEGA with a touch TFT display, an ATtiny85 basic circuit, and a Bluepill STM32F103C8 basic schematic.

The documentation also has a Hardware Requirements and Setup section, which is the one to read before buying anything, because the chip, the display and the board have to agree with each other electrically.

Two other directories in the tree matter here. The extras/ directory holds the documentation site content, the images and the schematics, and the _includes/ and _config.yml files at the root show that the documentation is published as a static site, which is where the API reference under extras/apidoc/html/ is generated.

For a reader used to software projects, this is unusual: the README treats the board as part of the deliverable, and there is a whole set of documented boards because the point of the library is that you can build the receiver rather than buy one.

Where SI4735 is the wrong choice

The first wrong fit is a finished receiver. This is a library plus schematics, and the README says plainly that it is for people building a receiver on the Si473X family. If you want an appliance, buy an appliance.

The second is a mode the silicon does not have. The library respects the features available in each IC version, and SSB specifically depends on the D60 and A10 parts with the vendor patch. Buying a part on price rather than on feature list is the mistake this project has already structured itself to warn you about.

The third is a support expectation. The README is unusually direct about the maintenance model: the project is maintained on a voluntary basis, and the author makes no commitment regarding schedules or deadlines for future releases, updates, or feature implementations. The donation section says the same thing, that donations are entirely voluntary and do not grant any special product, service, warranty, support, or development priority, and that they cover the cost of components, modules and laboratory testing. That is a fair and honest description, and it should be read as the project intends it.

The fourth is a team that wants a maintained product with a supported upstream. The releases stop at 2.1.8 dated 2023-07-20, with 2.1.7 and 2.1.6 before it, while the last push to the repository was on 2026-04-28. The library is MIT licensed with the terms in license.txt, so reuse is easy, but the Silicon Labs documentation remains the authority on what the chip does, and the library is the convenience layer on top of it rather than a replacement for it.

Editorial conclusion

SI4735 fits a hobbyist or radio experimenter who wants a working AM, SSB and FM receiver on an ATmega328, an ESP32 or a Teensy, and who is prepared to build the board and work through the Si473X documentation. It does not fit a team that wants a finished receiver, and it does not fit a design that needs a mode the particular chip revision does not implement. Before starting, check that the exact Si473X part you will buy supports the band and mode you need, because the library mirrors the silicon rather than working around it.

Frequently asked questions

What does the SI4735 Arduino library do?

It is an Arduino library for controlling Silicon Labs SI47XX tuner chips in broadcast receivers, covering AM, SSB and FM with RDS, with 150 kHz to 30 MHz for the AM and SSB modes and 64 to 108 MHz for FM, over an I2C connection.

Which Si473X chips does the SI4735 library support?

The SI47XX family, including the PL102BA-S and NE928-10A boards based on the SI4730, and it can be used on other members of the family while respecting the features available in each IC version. Single side band support is provided for the SI4735-D60 and SI4732-A10 devices.

How is single side band implemented in the SI4735 library?

It follows the Silicon Labs programming guides, AN332 Rev 1.0 and the Rev 0.8 amendment covering SSB and NBFM patches for the SI4735-D60 and SI4732-A10, so the library applies the vendor patch as part of its setup.

Which boards have example sketches for the SI4735 library?

The examples cover a serial monitor, I2C LCD and OLED displays, TFT, the ATtiny85, ESP32, ESP8266, STM32, TM1638, Nokia 5110, Raspberry Pi Pico, Teensy, Seeeduino, Arduino DUE and MEGA, ATmega128, ATmega32 and the Nano 33 BLE, among others.

What licence is the SI4735 library released under?

It can be freely distributed under the MIT Free Software model, and the README states that using or installing the library means agreeing to those terms. The copyright is held by Ricardo Lima Caratti, dated 2019.

Official sources

  1. Issues
  2. License: MIT
  3. pu2clr/SI4735 on GitHub
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/pu2clr-si4735.svg)](https://hysenlabs.com/projects/pu2clr-si4735)