How to Build a Smartwatch: Picking a Chip

6 hours ago 1

Full video of this post is up on my podcast on YouTube! Subscribe on PocketCasts, Spotify, or Apple Podcasts.

TLDR:

  • We've selected a chip for Core Time 2 - SF32LB52J. It’s from a company called SiFli, and features an open source SDK.
  • I’m writing a series of posts on how to make a smartwatch
  • Covering how to pick a chip (today), other hardware and software stuff (later)
  • I hope others will use PebbleOS to build interesting new smartwatches and other devices!

This is the first in a series of posts around the steps you need to take in order to build a smartwatch. I want to show that it's not actually that hard to make a decent one in 2025! Hopefully the work that we're doing to make these new watches will help other folks to build some as well.

Smartwatches are not and should not be ‘one-size fits all’ devices. I really hope that the open sourcing of PebbleOS might spark someone’s imagination and enable them to build a smartwatch that fits their needs perfectly!

A smartwatch is a system made up of three main components:

  • Watch hardware (this is the actual watch itself)
  • Watch software (usually referred to as the firmware or operating system)
  • Mobile companion app (iOS and Android app that sends notifications, downloads watchfaces etc)

As I've mentioned before, designing a consumer electronics product like a smartwatch is an exercise in constraint maximization. You need to identify a target experience goal (”I want a smartwatch with an always-on daylight readable display that lasts for 30 days”), then break that down into features/specifications (”e-paper display”, “Bluetooth LE”, “water resistant”, “$150 retail price”) and then create a design with hardware and software components (”Sharp Memory LCD”, “150mAh lipoly battery”, “FreeRTOS” etc) that meet your specifications and fulfill your goal.

After almost 20 years of building products, this process comes naturally to me - sometimes unprompted! I can look at any product and picture the exploded view, estimate manufacturing costs, and imagine how its software subsystems fit together. It’s a blessing and a curse!

You can break down watch hardware into five key systems:

  • Microcontroller chip (usually includes Bluetooth radio)
  • Display
  • Sensors and outputs (tac switches, touch, mics, accelerometer, speakers)
  • Other electronic components (chips, passive components, printed circuit board, battery)
  • Mechanical structure (watch case, glass, buttons, strap, charge cable)

Picking components for the latter 3 systems is actually quite straight forward these days. There are lots of good options available at various price points for sensors, batteries, straps, watch cases, mics, etc. Constraint maximization is relatively easy for these, I’ll wrap all these up into one blog post later.

The two most challenging component decisions that need to be made when designing a smartwatch are selecting:

  • a microcontroller and Bluetooth radio (this post)
  • a display (future post)

The backstory

During the first Pebble era, we used STM32F2 microcontrollers (MCU). Why? Because over beers on one Friday evening in 2011 at the Hacker Dojo a friend of mine, Hugo Fiennes, would NOT stop raving about this relatively new MCU. At the time, I was working on inPulse which used an LPC2103 (8K of RAM!) - he rightly thought that we were in desperate need of an upgrade.

Honestly, this is 100% typical for me. I think that all the major chip selections I’ve made have come from friends raving about a particular chip. Yes, I have a delightfully eccentric set of friends 😂 Thank you Trammell Hudson, TL Lim from Pine64, Peter Barrett and many others for your chats over the years.

An MCU is the heart of the smartwatch. Think of an MCU as a miniature computer - it contains a CPU, RAM, (usually) flash storage, i/o peripherals and sometimes radios, all within a single tiny integrated circuit.

You can the specs of the MCUs we used before on this helpful table - 64-144MHz, 128-256KB RAM. During this era, MCUs didn’t have integrated BT radios, so we used additional chips like TI CC2564 (that model is forever etched in my brain for some reason, probably the pain of finding a decent BT stack to use with it).

Why is picking the right MCU so important?

Getting back to constraint maximization, the MCU sits at the focal point of the most constrained governing ‘equations’ - software compatibility, power consumption and cost.

The most interesting and difficult constraint is actually software compatibility. Embedded software is much more fragmented and requirement-specific than computer operating system software. Because computers are not very hard drive space constrained, kernels can be optimized for broader compatibility - Linux contains over 17,000 device drivers. PebbleOS was effectively hardcoded to support MCUs from only one company (STM). Switching to a different brand required writing new peripheral (i2c, SPI, DMA, etc) drivers, adopting a different SDK and (sometimes) build system changes. These changes aren't risky, but they do take time to implement and test. Some MCUs do not easily support FreeRTOS (cough nRF53/54 due to lack of BLE stack).

Since we are not planning to build hundreds of thousands or millions of watches, software engineering costs cannot be amortized and end up being a significant driver to the total cost of each watch. If a chip is easier to develop software for, one might even consider paying for a higher per-unit cost chip given software development time savings.

A smartwatch must be connected 24/7 to a phone via Bluetooth, so average power consumption while connected is one of two largest power drains - the other being display.

Picking chips for our new watches

We decided to use Nordic’s nRF52840 for Core 2 Duo. It’s an older chip, but we were very familiar with it and knew that we could get PebbleOS up and running on it relatively quickly. Initially, we planned to use Nordic’s SoftDevice BLE stack, but thanks to the clever work of Liam (colleague of mine at Pebble and now Rebble contributor), we switched to using an open source BLE stack called nimBLE.

While an nrf52840 is powerful enough for Core 2 Duo, for Core Time 2 we needed an MCU with more RAM and processing power.

For Core Time 2, we would have liked to stay with Nordic (since we had just spent a bunch of time porting PebbleOS to work with Nordic’s SDK and peripherals) but Nordic’s roadmap in the BLE MCU space was not very inviting. Their new low-end chip, nRF54L15, only has 256k of RAM. The bigger colour display on the Core Time 2 requires more RAM and we wanted some breathing room for new features. Also, it only recently went into mass production, so we don’t have any friends who are using it yet - not too many reviews. Nordic also has a 54H series with 1M of RAM, but the price doubles to $4-5 dollars or more - no 512K RAM option either. CT2 also requires a special interface for its 64 colour MIP display, which 2015-era Pebbles previously used a dedicated FPGA to drive.

So I was on the hunt for a new chip. I looked at a variety of options like Apollo, BES, and Dialog but couldn’t find anything that fit our needs exactly. One of the biggest stumbling blocks was lack of an open source SDK. One chip from BES looked pretty good but we ran into problems when trying to test it out - there was no open source SDK! No example code. Everything was locked behind an NDA. That wasn’t going to work for us - PebbleOS needs to be open source.

Luckily, lightning struck. I randomly got an email from the CEO of a smaller Bluetooth chip company called SiFli. We exchanged a few emails over the span of a few hours. It became clear that he was extraordinarily interested in getting his chips to power an open source smartwatch.

SiFli chips are custom-made to be the primary chip in smartwatches. They power tens of millions of smartwatches already from brands like Redmi, Oppo, Noise and many others. The smallest (!) SiFli chip SF32LB52x has over 512K of SRAM, 16M of PSRAM, has a dedicated MIP peripheral for our display - cutting out the need for a separate FPGA or expensive dedicated display interface chip like Epson.

It also has a extremely low power consumption profile: ~50uA with BLE connected. Oh and it’s less than $2! They even have several chips with 1 to 2MB SRAM options that we could switch to if necessary.

Best of all - their SDK is open source on Github and they offered to help port PebbleOS to work on their chips.

So there you have it. The chip for Core Time 2 will be a SF32LB52J (the 1.8V variant of SF32LB527. That’s going to be etched in my long term memory for sure!

Next post: how to pick a display…

SiFli links:

Read Entire Article