Skip to content

VIPnytt/Frekvens

💡 Frekvens

Frekvens is an ESP32 mod for IKEA Frekvens and Obegränsad LED displays, adding dozens of new display modes, smart-home control, and real-time integrations — all fully open-source and customizable.

The modular firmware is designed for flexibility and can be adapted to third-party or custom display configurations.

📋 Table of Contents

✨ Features

Frekvens replicates all original display modes while introducing a range of new features.

Key Highlights

  • 33 display modes:
    • Animations
    • Clocks
    • Interactive tools
    • Text scrolling
    • Streaming content
    • Weather
  • 19 extensions:
    • Web app
    • Smart-home integrations
    • Notifications
    • Accessories
    • API interfaces
    • Miscellaneous
  • 8 fonts
  • Extensive documentation

⚙️ Hardware

ESP32 board

Frekvens can run on any commonly available ESP32 board with Wi-Fi.

Because board layouts vary widely, the documentation refers to pin types rather than fixed pin numbers. For board-specific guidance, see the discussions section — many common configurations are already covered there. Further details are available in the wiki.

Tip

If a new board is required, the ESP32-S3 chip is recommended — for example this or this board. It offers excellent performance, and variants with 8 MB flash memory provide plenty of room for features and future expansion. Boards with 4 MB flash work fine too for basic setups.

Optional Accessories

If desired, extra hardware can be added:

  • IR receiver — lets you control the device with a standard TV-style remote
  • Microphone — syncs the display with music
  • Photocell — automatic ambient brightness adaptation
  • RTC clock — keeps accurate time, even without internet access

Note

IKEA Frekvens already has a built-in microphone.

Wiring

Each display model has its own hardware setup guide:

  • IKEA Frekvens
    • Desolder the U2 chip
    • Connect power, SPI and EN
    • Microphone input available at U3 pin 7 or U2 pin 11
  • IKEA Obegränsad
    • Desolder the U1 chip
    • Connect power, SPI, and EN

🏗️ Getting started

PlatformIO IDE is required. It provides integrations for a wide range of IDEs — use whichever editor you are most comfortable with.

Download the source code

  • Via Git (recommended) – In your IDE/editor, select Clone Git Repository and enter:

    https://github.com/vipnytt/frekvens.git

  • From the Releases page – If you prefer a direct download, grab a zip or tar.gz archive from the releases page.

PlatformIO

Specify your board in the platformio.ini file. If your board is not already listed, check the PlatformIO Boards reference or the pioarduino board database.

Configure in platformio.ini:

[env:seeed_xiao_esp32s3]
board = seeed_xiao_esp32s3 ; Board ID

File Structure

Configuration is split into shared and firmware-specific settings:

This separation keeps common parameters in one place, while allowing firmware builds to have their own purpose-specific configuration.

Environment Template

Add one of the following to .env:

IKEA_FREKVENS='true' # IKEA Frekvens
IKEA_OBEGRANSAD='true' # IKEA Obegränsad

Define pin assignments in secrets.h:

// IKEA Frekvens
#define PIN_CS 1   // LAK
#define PIN_SCLK 2 // CLK
#define PIN_MOSI 3 // DA
#define PIN_OE 4   // EN
#define PIN_SW1 5  // SW1
#define PIN_SW2 6  // SW
#define PIN_MIC 7  // U3 pin 7
// IKEA Obegränsad
#define PIN_CS 1   // CLA
#define PIN_SCLK 2 // CLK
#define PIN_MOSI 3 // DI
#define PIN_OE 4   // EN
#define PIN_SW2 5  // SW

Wi-Fi

Define the Wi-Fi credentials in secrets.h.

#define WIFI_SSID "name"
#define WIFI_KEY "secret"

Tip

Additional networks can be configured later in the web UI, optionally via Wi-Fi hotspot if needed.

Weather

Coordinates are needed for most weather services:

#define LATITUDE "0.000"
#define LONGITUDE "0.000"

Additional options

Check out the Wiki for more configuration options.

⬆️ Upload to the device

Via PlatformIO, there’s an Upload option that uploads the firmware, and a Upload Filesystem Image option that uploads the Web app. You’ll need to upload both.

Over-the-Air updates

Configure in platformio.ini:

upload_protocol = espota ; Update via Wi-Fi

Note

Migration from Frekvens v1 to v2 requires wired flashing.

🏠 Smart-home integrations

Alexa

Control power and brightness via Amazon Alexa, using voice, app, or automation.

Home Assistant

Home Assistant is deeply integrated and supports full control over power, brightness, modes, extensions, and more.

🤖 API

Four API interfaces are supported:

Refer to the Wiki for supported endpoints and use cases.

❓ FAQ

How do I change Wi-Fi network?

Hold any button during startup to activate the Wi-Fi hotspot. Connect to it with your phone or computer, and a configuration portal will open. From there, you can configure new network credentials. Multiple networks can be saved.

🚧 Troubleshooting

Build fails

If the build fails due to size limits, try disabling features you don’t plan to use in the .env. OTA support requires space for two firmware images, so disabling OTA is often the most effective option on 4 MB boards.

Where is the web UI?

First, ensure that the Web app has been uploaded to the device using the Upload Filesystem Image option in PlatformIO. Then open frekvens.local, obegransad.local, or your custom HOSTNAME.local in a browser. If the page does not open, make sure the device has connected to Wi-Fi. If you know its IP address, try that instead.

Power supply

Use the correct power source during normal operation.

  • IKEA Frekvens: Use the integrated 4 V / 1.5 A power supply during normal operation. The ESP32’s USB port should only be used for short setup tasks, such as uploading firmware or checking terminal logs. Otherwise, the display may not function properly.
  • IKEA Obegränsad: Use a USB power supply rated for at least 5 V / 2 A, together with the original USB-A cable. The ESP32’s USB port can be used for uploading firmware and short-term testing, but it is usually not rated to handle the full current the display may draw at maximum brightness.

Unexpected reboots

If the device is rebooting unexpectedly, this is often a symptom of a software or hardware issue.

First, check that the correct power source is being used. If the device still reboots unexpectedly, check the terminal logs. If the logs include error messages, please report an issue.