Skip to content

Custom ESP32 mod for IKEA Frekvens and Obegränsad LED displays.

License

Notifications You must be signed in to change notification settings

c64emulator/Frekvens

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

335 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

💡 Frekvens

Frekvens is a custom 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, including smart-home integration, streaming content, interactive tools, and real-time services.

Key Highlights

  • Web app
  • 47 display modes:
    • Animations
    • Clocks
    • Interactive tools
    • Text scroller
    • Streaming content
    • Weather displays
  • 17 extensions, including:
    • Smart-home integrations
    • Notifications
    • Accessories
    • API interfaces
  • 7 fonts
  • Extensive documentation

⚙️ Hardware

ESP32 board

Frekvens works with most Wi-Fi enabled ESP32 boards that support the Arduino framework, as listed in PlatformIO's board registry.

For new installations, the ESP32-S3 is recommended due to its performance and broad compatibility. Compact boards (such as this or this) are sufficient for most use cases.

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 documentation.

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 adaption
  • RTC clock — keeps accurate time, even without internet

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

For the smoothest setup, we recommend PlatformIO IDE for VS Code. PlatformIO also provides integrations for a wide range of other editors and IDEs — use whichever environment you are most comfortable with.

Download the source code

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

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

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

Dependencies

To build the Web UI, Node.js is required. The LTS version is recommended, but any recent version will work.

PlatformIO

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

platformio.ini example:

[env:seeed_xiao_esp32s3]
board = seeed_xiao_esp32s3

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 if the following to .env:

# IKEA Frekvens
ENV_FREKVENS=''
# IKEA Obegränsad
ENV_OBEGRANSAD=''

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

Wi-Fi credentials can be defined in secrets.h or configured through the web UI.

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

If no credentials are set, the device enters access point mode on first startup. Holding any button during startup also activates AP mode.

Weather

Coordinates are required for weather services:

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

Additional options

Check out the Documentation for more configuration options.

⬆️ Upload to the device

In the PlatformIO menu, there’s a "Upload" button which uploads the firmware, and a "Upload Filesystem Image" button which uploads the Web app. You’ll need to upload both.

OTA Uploads

To update Over-the-Air, extend your environment:

extends = env:upload_ota

Specify upload details:

upload_protocol = espota
upload_port = example.local
;upload_flags = --auth=password

As an alternative, it’s also possible to manually upload the firmware.bin and littlefs.bin/spiffs.bin files via the Web app.

🏠 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, and the device will remember multiple networks.

🚧 Troubleshooting

Where is the web UI?

First, ensure that the Web app has been uploaded to the device using the "Upload Filesystem Image" button in the PlatformIO menu. After a successful upload, the device will log its IP address and domain name to the terminal at boot. You can then access the web UI by entering this address into your browser.

The display is flickering

Flicker or "snow" usually indicates EMI or poor wiring. Avoid jumper wires and breadboards. Refer to wiring recommendations in the device-specific setup guides.

If display content is otherwise intact, try lowering the frame rate.

Unexpected Reboots

If the device is rebooting unexpectedly, this can be a symptom of a software or hardware issue. The ESP32’s USB port is suitable for firmware uploads and testing, but it is not designed to supply the high current levels that a display might draw during continuous operation.

If terminal logs include error messages, please report an issue.

About

Custom ESP32 mod for IKEA Frekvens and Obegränsad LED displays.

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 66.0%
  • TypeScript 24.5%
  • Python 6.0%
  • C 3.2%
  • Other 0.3%