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.
- Features
- Hardware
- Getting started
- Upload to the device
- Smart-home integrations
- API
- FAQ
- Troubleshooting
Frekvens replicates all original display modes while introducing a range of new features.
- 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
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.
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.
Each display model has its own hardware setup guide:
- IKEA Frekvens
- Desolder the
U2chip - Connect power, SPI and
EN - Microphone input available at
U3pin 7 orU2pin 11
- Desolder the
- IKEA Obegränsad
- Desolder the
U1chip - Connect power, SPI, and
EN
- Desolder the
PlatformIO IDE is required. It provides integrations for a wide range of IDEs — use whichever editor you are most comfortable with.
-
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
ziportar.gzarchive from the releases page.
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 IDConfiguration is split into shared and firmware-specific settings:
- Shared variables used by the firmware and web app are defined in
.env - Firmware-only settings go in
firmware/include/config/secrets.h
This separation keeps common parameters in one place, while allowing firmware builds to have their own purpose-specific configuration.
Add one of the following to .env:
IKEA_FREKVENS='true' # IKEA FrekvensIKEA_OBEGRANSAD='true' # IKEA ObegränsadDefine 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 // SWDefine 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.
Coordinates are needed for most weather services:
#define LATITUDE "0.000"
#define LONGITUDE "0.000"Check out the Wiki for more configuration options.
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.
Configure in platformio.ini:
upload_protocol = espota ; Update via Wi-FiNote
Migration from Frekvens v1 to v2 requires wired flashing.
Control power and brightness via Amazon Alexa, using voice, app, or automation.
Home Assistant is deeply integrated and supports full control over power, brightness, modes, extensions, and more.
Four API interfaces are supported:
Refer to the Wiki for supported endpoints and use cases.
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.
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.
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.
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.
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.