• Stars
    star
    637
  • Rank 70,628 (Top 2 %)
  • Language
  • Created about 7 years ago
  • Updated 3 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Hacking IKEA TRÅDFRI products, such as light bulbs, window blinds and other accessories.

Hacking IKEA TRÅDFRI

Introduction

The IKEA TRÅDFRI family of products provide you with several home automation solutions that interconnect using ZigBee Light Link. While the line-up initially only included lighting products, it includes power switches and wireless window blinds as well.

Many of the TRÅDFRI are quite simple. For instance, if we take a simple light bulb, it contains:

  • Power supply
  • LED driver
  • IKEA TRÅDFRI module

The IKEA TRÅDFRI module is used in many of their products, and is actually a small piece of circuit board with a few GPIO pins exposed. These pins are then used to control the LED driver.

You can take out the board, and hook it up to your own lighting solutions. Or, you can flash it with your own firmware, for other purposes.

To find relevant products, I have compiled a list of IKEA TRÅDFRI products in PRODUCTS.md (please help me to update this list). Several products have been opened up. Teardown pictures can be found in the teardowns folder.

TRÅDFRI modules

So far, a few variations of the TRÅDFRI modules have been identified. They are all using microcontrollers manufactured by Silicon Labs. The modules that have been identified are:

  • ICC-1
  • ICC-A-1
  • MGM210L

Front of IKEA TRÅDFRI module (ICC-1) Front of IKEA TRÅDFRI module (ICC-A-1) Front of IKEA TRÅDFRI module (MGM210L)

Some other products, such as the line-up of remote controls, have a dedicated circuit board that integrate a microcontroller directly (i.e. no separate module board).

More details and pictures on these modules can be found in MODULES.md.

Firmware analysis

An analysis of some firmware versions encountered can be found in FIRMWARE.md.

Development

The ICC-1 and ICC-A-1 have a regular Cortex M4 and the MGM210L has a Cortex M33. These architectures are very common, and you can easily flash it with your a custom firmware. I've added some firmwares in the firmwares folder.

As a starting point for your own firmwar, you could take a look at this pull request for RIOT-OS. As a proof of concept, check out this YouTube video I made. In that video, I show how I control the LED connected via a serial console.

To get access to development tools for Silicon Labs, you can take a look at Simplicity Studio.

Other hacks

Some people have came up with alternative uses for the TRÅDFRI modules. Here are a few:

EZSP Zigbee coordinator

It is possible to load the Silicon Labs EmberZNet Zigbee coordinator firmware on an ICC-1 or ICC-A-1. This allows you to use the module to set-up your own ZigBee network.

MattWestb has provided a guide and firmware here.

ZigBee router

Several users have modified the TRÅDFRI routers to improve the performance, by adding an external antenna.

This applies to the ICC-A-1 modules only, but it should be very interesting if a the TRÅDFRI routers will use the newer MGM210L modules, because they offer a solder pad for an external antenna.

FLOALT brightness hack

zw has patched the firmware of his FLOALT LED panel to have an improved range of brightness levels. A guide to perform the firmware patch has been contributed here.

DOOM

A version of DOOM was port to the IKEA TRÅDFRI MGM210L modules, including a custom contrller. The project is documented here and the source code can be found here.

Working safely

If you plan to leave the board in-place, and run your own light bulb firmware, never connect external devices (e.g. debugger or serial adapter) to a light bulb that is plugged in. Due to different voltage levels, you could destroy your devices.

If you want to connect an external device, ensure that it is properly isolated (e.g. using a optocoupler).

I have designed a board that you could use to isolate UART signals. You can find it here.

Test setup

My setup (the small board is a UART isolator):

Test setup

My safer setup, including debugger (LED is connected to same pin as it would in the GU10 light):

Safer test setup

Two soldered development boards that I use nowadays:

Safer test setup

Sources

I have gathered some information from the following sources:

License

Creative Commons BY Attribution 4.0 International

Disclaimer

This page and its content is not affiliated with IKEA of Sweden AB.

The purpose of this project is to learn and improve using reverse engineering techniques. Use this information on your own risk.

More Repositories

1

normalize-wheel

Mouse wheel normalization across multiple multiple browsers.
JavaScript
127
star
2

kippo-extra

Set of extra commands for kippo, the SSH honeypot daemon
Python
30
star
3

Arduino-CommandLine

No-nonsense serial command line interpreter.
C++
27
star
4

Course-Face3D

Implementation of a prototype 3D Face recognition system
Python
22
star
5

KNX-Universal-Taster

DIY universal taster actor for the KNX bus.
HTML
16
star
6

SubDaap

DAAP server/proxy for SubSonic: play your favorite tunes from SubSonic in iTunes!
Python
13
star
7

HTMLFeedback

jQuery website feedback plugin (like Google) using the canvas element.
JavaScript
13
star
8

flask-daapserver

DAAP server for streaming media, built around the Flask micro framework.
Python
10
star
9

python-eetlijst

Unofficial Python API to interface with Eetlijst.nl
HTML
8
star
10

xtext-standalone-maven-build

Xtext standalone maven build, without Eclipse.
Xtend
8
star
11

plugin.audio.subsonic

Kodi plugin to stream music from Subsonic.
Python
8
star
12

lpc_checksum

Python script to calculate LPC firmware checksums.
Python
8
star
13

python-whatsappy

An unofficial Python API for connecting with the WhatsApp chat protocol (deprecated).
Python
7
star
14

EFM2RIOT

Generator for initializing the EFM32 port for use with RIOT-OS
C
6
star
15

homeassistant-biketrax

Custom component for the PowUnity BikeTrax integration for Home Assistant.
Python
5
star
16

go-ble-nordic-uart

Nordic UART service for go-ble.
Go
3
star
17

aiobiketrax

Python library for interacting with the PowUnity BikeTrax GPS tracker.
Python
3
star
18

es6-geometry

Collection of immutable ES6 classes for simple 2D geometric objects and calculations.
JavaScript
3
star
19

go-ble-berrylan

Golang implementation of the BerryLan BLE server for go-ble.
Go
3
star
20

DSMR-Splitter

Active port expander for the P1 port on a Dutch Smart Meter (DSMR).
HTML
3
star
21

RIOT-gecko-sdk

Minimal distribution of the Silicon Labs Gecko SDK, prepared for usage with RIOT-OS.
C
3
star
22

Sensor-Community-Enclosure

3D printed version of a Sensor.Community Air Sensor enclosure.
2
star
23

Photod

An experimental photo gallery.
JavaScript
2
star
24

python-tinylink

Frame-based streaming protocol for embedded applications.
Python
2
star
25

BierApp-Server

Drink management system for student houses. This is the server part.
Python
2
star
26

BierApp-Android

Drink management system for student houses. This is the client (POS) part.
Java
2
star
27

RJ12-to-RJ45-Converter

A converter for RJ12 to RJ45 for just a very specific use case.
HTML
1
star
28

django-project-template

My Django template
Python
1
star
29

templated-secrets

A Kubernetes operator to template secrets dynamically.
Go
1
star
30

LPC810-FanController

Tiny PID-based fan controller board and firmware to insert between 3-pin fans.
C
1
star
31

go-serial-link

Request-response and notifications over a serial link.
Go
1
star
32

Phalcon-Uploader

File upload handler for the Phalcon Framework.
PHP
1
star
33

Phalcon-ModelGen

Generate models using an extended set of model annotations.
PHP
1
star
34

Course-HardwareSecurity

Repository for the Hardware Security project
Java
1
star
35

Arduino-BeerCounter

A beer cork counting system, built around an Arduino, with the love of beer.
Eagle
1
star
36

Course-CompilerDesign

Object oriented compiler for the Java Virtual Machine with Objective-C-like Syntax.
Java
1
star