Nanoleaf Aurora teardown - Page 1
Forum section: electronics / projects

author: LaurentR
author_rank: Frequent Contributor
timestamp: March 13, 2017, 03:15:05 am
content: I really like the looks and idea of theNanoleaf Aurora.While I like what they have done with the app, I wanted to figure out how to drive it myself using some other method (Arduino...). I was also curious about how they built the tiles. They use a 4-wire communication link that is distributed through the tiles (GND, 20V, VBUS, EDGE according to the controller's PCB). One of the key feature of the Aurora is topology discovery, so I can only assume they have a custom protocol (at least on one of the pins).The picture below shows how the tile is put together.The bottom is a fairly strong white plastic bed.In the groove, the PCB and LEDs run around the periphery (see images below).There is the bottom layer diffuser layer, in thin white plastic.On top sits a thick transparent block of plastic with a regular hole pattern.Finally, the top is a frosted plastic that is glued around the edges to the bottom plastic chassis.The corners, where the LEDs sit are covered by aluminum cutouts.The following picture shows the triangular PCB (components on the bottom) running along the edges the plastic bottom with the 3 banks of LEDs at each corner.This is one of the 3 banks of LEDs. It seems to be composed of 6 basic white LEDs connected in series, which turn on at power up and 6 smart LEDs in a 6-pin 5050 package. I assume they are WS2812, but I haven't checked yet.The PCB is in reality 3 long strips soldered at each edge using an interesting S pattern, I assume to improve alignment. These seem to have been hansoldered as there was obvious flux residue.Below is the whole PCB, components up. Most components are on one PCB. The board has mostly simple components except for one tiny 16 pin package, which I haven't identified yet (CPLD or microcontroller?). Notice the identical connectors on each edge to allow for the arbitrary topology.Close-up:The controller itself is an assembly of a green wifi module (Nanoleaf branded), possibly leverage from one of their other product on top of a white Aurora-specific PCB, with 2 buttons. The whole tile system runs on a 24V supply (they can power up to 30 panels according to the spec).Wifi module:That's all for now!I made a rookie mistake while soldering external wiring between my tile and the controller and (stupidly) assumed that the 4-pin header on the tile PCB near the main spring-loaded connector was just a breakout of that connector, but it wasn'tat all.So with 24V, the magic smoke appeared on the 16-pin package on the tile and the controller doesn't boot anymoreI am going to wait a bit and synthesize the funds to buy another kit.I'll get back on the thread when I make actual progress in reverse engineering the protocol between the controller and the tiles

author: RainerG
author_rank: Newbie
timestamp: March 14, 2017, 02:02:45 pm
content: Thanks. I'm curious about the protocol.

author: LaurentR
author_rank: Frequent Contributor
timestamp: April 10, 2017, 06:32:48 am
content: Got a new one and have managed to spend a few hours looking into it (and didn't blow anything else so far...).As mentioned above, the connector has 4 pins allowing for any topology (names from the controller PCB silkscreen):* GND: Shared ground.* 20V: 24V DC straight from the AC adapter - propagated as is between tiles.* EDGE: 3.3V switched signal. It is the only signal that is not broadcast and seems to be used for topology discovery. Each node controls its 3 sides.* VBUS: 24V rail-to-rail, 115,200 baud, half-duplex, 8-N-1, idle-high UART (see below) that is broadcast throughout the tilesThe controller board is single sided. See topology below.Main content:* 2 buttons connected to the daughterboard.* A 3.3V switcher circuit on the right, that feeds the comparator and the daughterboard.* A 2N7002K mosfet driving the VBUS signal low with a 4k7 pullup to 24V. Mosfet is controlled from an 2N2222, itslef driven by the daughterboard.* A LM393 comparator used to read back the VBUS line (as it is half-duplex) to the daughterboard.The tile PCB uses a Silicon Labs EFM8 "Busy Bee" BB1 in a QFN20 package. That's a tiny C8051 SoC with 512B of SRAM and 4KB of flash.This is a bad news, because this means the tile is "smart" and the protocol can be fairly complex... which it is.See picture of the (blown) BB10 below:At this point, I have found 8 message types, 4 of which get a response (3 "ack" type ones with no data and one with a fair chunk of data).Each tile has a unique byte address and the controller remembers it between boots. That byte address seems to unique to the tile, not the position, although it can be reprogrammed if the tiles change enough.The boot sequence looks like this:* For the first ~30sec, all tiles display white using the white LEDs and there is very little/no traffic on the VBUS. I assume the daughterboard microcontroller is booting, attaching to wifi...* Then there is a complicate dance between the controller and the tiles, some messages including up to 11 bytes of data, which are not repeated much, so it is difficult to make sense of them. Clearly, the microcontroller is checking topology and updating it if necessary. I am not sure I'll be able to crack the boot.* Finally, the tiles switch to the WS2812 and regular messages are sent by the controller to adjust colors plus some keep-alives. I haven't spent time on the color messages yet, but they seem straightforward and I should be able to map them out.Now on the protocol details and how the EDGE signal is used...

author: mohammad
author_rank: Newbie
timestamp: September 13, 2017, 05:34:07 am
content: hi, in Nanoleaf Aurora teardown ,what is u2?

author: LaurentR
author_rank: Frequent Contributor
timestamp: September 13, 2017, 05:37:44 am
content: Quote from: mohammad on September 13, 2017, 05:34:07 amOn the controller board, U2 is the LM393 comparator used to read back the half-duplex 24V UART bus (VBUS). Not sure why they didn't simply use a resistor network to voltage divide down to 3.3V.

author: mohammad
author_rank: Newbie
timestamp: September 13, 2017, 05:43:11 am
content: What algorithm form the triangles in the software?Sorry i have a bad conversation?

author: mohammad
author_rank: Newbie
timestamp: September 13, 2017, 05:48:57 am
content: Will run with my my9942 IC. But How do I create an automatic shape?

author: LaurentR
author_rank: Frequent Contributor
timestamp: September 13, 2017, 05:56:07 am
content: Quote from: mohammad on September 13, 2017, 05:43:11 amAre you asking how they figure out the topology of the triangles?I have done a bunch more reverse-engineering I haven't published yet.For the topology discovery, they use the EDGE pin. While VBUS is UART half-duplex broadcast, EDGE is a simple level signal, purely point-to-point used only doing discovery. As they walk down the tree structure to discover it, they basically turn on one EDGE pin on an unexplored branch of the tree, then through the VBUS ask whichever tile is seeing EDGE=1 to respond. From that, they get a unique tile ID (factory programmed I believe), then use this to assign a short ID to that tile, so they can talk to it later. Then they keep going.Note that they actually store the topology in the controller, so on subsequent reboots, they quickly "confirm" the topology and unless they find anything weird, they don't do a full walk. I ave seen that algorithm fail when moving some tiles around

author: LaurentR
author_rank: Frequent Contributor
timestamp: September 13, 2017, 06:01:17 am
content: Note that the protocol to bring up the tile network and start sending color change commands is fairly complex, even if you know the topology and don't have to discover it.At some point, I'll finish publishing the reverse-engineered protocol, but I have been distracted by other projects these past few months.If you want to tackle this, you'll need a good logic analyzer that can dump the VBUS traffic (UART) and a lot of patience.

author: mohammad
author_rank: Newbie
timestamp: September 13, 2017, 07:11:30 am
content: Thank you

author: evilracer
author_rank: Newbie
timestamp: September 14, 2017, 06:11:04 pm
content: Thanks for this @LaurentR. Is it possible for you to measure the thickness of the top layers (diffuser, transparent block, and the frosted panel)?

author: LaurentR
author_rank: Frequent Contributor
timestamp: September 15, 2017, 06:01:34 am
content: Quote from: evilracer on September 14, 2017, 06:11:04 pmThe bottom, opaque white layer (some kind of plastified paper - maybe all plastic) is 0.34mmThe transparent block with the diffusing dots is 3.0mmThe frosted top layer is 0.50mm.

author: mohammad
author_rank: Newbie
timestamp: September 17, 2017, 07:41:05 am
content: hi dear ,Controller for nanowulf is dmx?

author: LaurentR
author_rank: Frequent Contributor
timestamp: September 17, 2017, 04:23:01 pm
content: Quote from: mohammad on September 17, 2017, 07:41:05 amNo, it's definitely not DMX. It uses a standard half-duplex UART protocol but the messages are completely proprietary.

author: mohammad
author_rank: Newbie
timestamp: October 07, 2017, 09:39:59 am
content: Hello. Good time. You did not investigate the lamp.

author: tmk198
author_rank: Newbie
timestamp: November 30, 2017, 09:45:52 pm
content: Hi I love the nanoleaf but I hate the stupid daughter board and trailing cable stuck to the side. I want to hide the daughter board in my loft and run a cable inside my wall. I am thinking due to the high current some 0.75mm flex with some cat 5 to carry the 2 control wires to minimise interference.I note you managed to fry your first unit but didn't understand the mistake you made? I was just going to solder directly on to the copper contacts on the daughter boards. To connect in to the leaf from behind I was going to snap one of the connectors in half and then solder on to the underside of the connector pins.Any tips?

author: LaurentR
author_rank: Frequent Contributor
timestamp: November 30, 2017, 11:38:40 pm
content: Quote from: tmk198 on November 30, 2017, 09:45:52 pmThe signalling being 24V and relatively low frequency (100kb/s), I am pretty sure you can extend the wiring quite a bit.As far as the connectivity to the first tile and to the controller, I think what you're proposing is the right approach. You may want to consider where the traces and vias are to reduce the chance of shorting traces when cutting the small connector.I fried mine by not being careful enough. The little connectors have a bit too much play in some cases and after multiple insertion and probing, the copper fingers of the connectors on the tiles can get misaligned a bit. That can result in a destructive short (and at 24V, nothing stands a chance).

author: kronoshacker
author_rank: Newbie
timestamp: January 24, 2018, 03:54:28 pm
content: If you are still interested in the protocol between the tiles - I have documented it here:https://kronoshacker.blogspot.de/2018/01/playing-with-aurora-led-panels.html

author: LaurentR
author_rank: Frequent Contributor
timestamp: January 25, 2018, 05:24:28 pm
content: Quote from: kronoshacker on January 24, 2018, 03:54:28 pmGreat job, thanks. I got 90% of this but never figured out the rest. For instance, I never could figure out what the periodic 09 (call for unconfigured tiles in your post) was about. I thought it would be some kind of beacon or timing alignment. How did you figure it out? Did you reverse-engineer this?Did you build something to control the tiles?Laurent

author: LaurentR
author_rank: Frequent Contributor
timestamp: January 25, 2018, 05:42:34 pm
content: I should also note that they came out in mid-2017 with a microphone extension for the tiles and I assume that has at least a message polling the level of the microphone. I did get one but haven't tried it yet.https://us-shop.nanoleaf.me/products/nanoleaf-rhythm-upgrade-module

author: kronoshacker
author_rank: Newbie
timestamp: January 25, 2018, 11:56:57 pm
content: Knowing from your post that the tiles speak RS232@24V, I built a simple crappy USB Interface using a cheap USB-to-RS232@3.3V Adapter and a voltage divider, a z-diode and a transistor.Then I logged the traffic on a PC and slowly built up a simple protocol decoder in python. Finally, I replaced the original host tile and sent my own commands to figure out the details by trial and error.Unfortunately there is no time sync. So you cannot change the color of multiple tiles at the same time...I also have the rhythm extension. It enumerates similar to a normal tile, but returns a different version string. It just broadcasts the energy levels on different audio frequencies about 25 times/s. it is - very strange - not polled! But all the pattern and effects logic is in the original CPU tile. The rhythm tile is just a microphone + FFT. I’ll post the detailed protocol description soon.Using a script that feeds the PCs sound output into a FFT and then emulating the rhythm tile, I get much better results for effects matching the sound than with the original mic.

author: mjanich
author_rank: Newbie
timestamp: January 26, 2018, 10:08:36 am
content: I would like to make an Arduino or ESP8266 project out of this. Anyone interested?

author: LaurentR
author_rank: Frequent Contributor
timestamp: January 26, 2018, 04:50:05 pm
content: Quote from: mjanich on January 26, 2018, 10:08:36 amI was planning to do this (and a video with the teardown / reverse engineering of the protocol) but got sidetracked.It should be fairly straightforward.You could either prototype it on a PC using the language of your choice with a cheap USB Serial TTL board as kronoshacker has done, or grab an ATSAMD21 Arduino variant (lots of space and 2 UART - one for the Nanoleaf, one for debug) like an Adafruit Feather M0 (also has small prototyping area for the voltage divider, pullup and driver transistor) or really anything else that has a UART, a free GPIO (ESP8266 or ESP32, RPi...).I had done quite a bit of protocol analysis by writing some C on a PC to interpret dumps captured by a Saleae LA, but obviously, you can do the same with a USB serial adapter. That's probably the easiest way to start.I had planned to do this in Arduino C on a Feather M0 and may still do it at some point (I have a pile of tiles at home begging to be driven by something else than the off-the-shelf Nanoleaf controller).Laurent

author: mjanich
author_rank: Newbie
timestamp: January 30, 2018, 11:13:51 am
content: Arduino development system is also the one I'm most comfortable with.I think a nano has enough CPU power and I have a few lying around. But I also have a teensy here, I think that is an M0 chip.

author: childressda
author_rank: Newbie
timestamp: January 30, 2018, 10:22:40 pm
content: I am also currently working on this, but I am trying to make everything. I want to do this as a project with our students. I am using the ESP8266 so I can connect to it and change the tile colors. I plan to connect a sound detector to use for changing the colors to music. My plan is to have very little tech in the panels. Basically, the panel will have the led lights, a comparator controlling a relay. This is needed to continue the data out of a dead end tile back through its feeder panel. The limiting factor will only be the power needs of the panel, 60ma / led. Each panel will connect via a 3 pins 5v, Di, Grnd or 4 pins 5v, Di, Grnd, Db (DataBack).I have designed the panel to be 3d printed. See the attached png. I will be happy to share the stl if anyone wants it. My next challenge is diffusing the leds. I will be testing various methods in the next week or so. If anyone has any suggestions, I will give them a try.

author: yoshiguy
author_rank: Newbie
timestamp: February 04, 2018, 05:27:08 pm
content: Has anyone looked at the LED used for the nanoleaf ? Are they ws2812 with 1515?

author: ryandetzel
author_rank: Newbie
timestamp: April 01, 2018, 10:26:14 am
content: This is a great teardown, just go back from a friends house who had these and the "how" was bugging me all the way home. I first thought i2c when I saw the four wires so that's the circuit I have in my head now. For $20 panel they could put just about anything in there and make a profit.

author: Hyperian
author_rank: Newbie
timestamp: April 28, 2018, 12:06:23 am
content: Quote from: kronoshacker on January 25, 2018, 11:56:57 pmI looked through your article, their addressing scheme seems to be very similar to SMBUS protocol, but custom made on top of UART instead of I2C. I'm willing to bet their address arbitration scheme is exactly the same as SMBUS.There is probably a general call to tell all slaves to go through arbitration.Then another general call command to tell all the devices to return their long IDs. (this will be repeated many times until there are no more IDs returned)Then master will build up a table of Long IDs and short IDs.Then master will use the command 0x01 to pass out the list of short IDs.On subsequent bootups, it will just skip reading Long IDs and go straight into 0x01, assuming that slaves don't have non-volatile storage. I'm surprised they don't have CRC behind every command.What happens if the tile connection creates a loop?

author: mohammad
author_rank: Newbie
timestamp: June 03, 2018, 07:29:04 am
content: what is the difference between longID and shortID?

author: adrianliehner
author_rank: Newbie
timestamp: July 23, 2018, 01:15:54 pm
content: Hey, I am trying to recreating the Nanoleaf using an 3D printer and epoxide resin in combination with an esp8266 nodemcu board and ws2812b LEDs.This is what Ive done so far:https://www.thingiverse.com/thing:3002866Your Teardown did really help me, thank you!

author: Hyperian
author_rank: Newbie
timestamp: August 04, 2018, 03:03:49 am
content: Quote from: mohammad on June 03, 2018, 07:29:04 amLongID is used to initially set up the internal tree, shortID is then assigned to each LongID for normal communcation to change the panel color.

author: eraz0r
author_rank: Newbie
timestamp: December 11, 2018, 09:07:19 am
content: @kronoshackercan you put your components for the interface together in a small eagle schematic?thanks a lot!

author: nomis
author_rank: Contributor
timestamp: February 25, 2019, 11:46:28 pm
content: Hi all.Sorry, I am late to the party, but I recently bought me a set of nanoleaf aurora panels.Some observations on this thread:I kind of doubt that the panels use "smart" ws2812 style LEDs. Why would they? They can show only solid colors, ws2812-LEDs would be more useful if you want to display some sort of a gradient across the panel. If you don't want to do this regular RGB-LEDs are way cheaper.Also there are suspiciously four groups of (probably) transistors visible in your photos - quite possibly for driving the RGBW channels (Q1-Q4).Other than that: would you be willing to trace the four pins above the connector? (the ones you used to blow up the panel): I kind of suspect that this is a programming port for the BB10, making it possible to use pogo pins to update the firmware of a panel in its closed form.Thanks,Simon

author: cyntrex
author_rank: Newbie
timestamp: March 01, 2019, 09:44:07 am
content: Hi everybody,Does anyone have some of the new Nanoleaf Canvas tiles and would be willing to tear down one by any chance? I would be really interested in that. I'm wondering what they changed and how they arranged the LEDs as well as the diffusors in these panels.Thanks,Marvin

author: nomis
author_rank: Contributor
timestamp: March 20, 2019, 05:04:09 pm
content: Ok, I bit the bullet and tore one openThis is my current state of figuring out the schematics of an aurora panel.There are a few uncertainties here.* I could not figure out the exact type of the transistors. I've annotated some markings on the case but it is not at all clear what the model exactly is. Hence the unspecific drawing.* The transistors for the LEDs (Q1-Q4) are marked "2X" and then a "F" rotated 90° to the left with two dots beneath it. I did not find the manufacturer using that Logo.* The power regulator (marked "Y1") is unclear to me.* Q4 = Red, Q3 = Blue, Q2 = Green, Q1 = White (EDIT: just tested it, my original assumptions were wrong and I have corrected them here)* Yep, the four pins is the programming header.* The µC unfortunately has some pads not accessible from the outside and I am not 100% sure if everything is assigned correctly. I am surprised in particular that apparently RX is not at Pin 17.I appreciate any hints regarding these matters.May this be of use to somebodyBye,Simon

author: ben_r_
author_rank: Frequent Contributor
timestamp: March 29, 2019, 10:38:44 pm
content: Quote from: cyntrex on March 01, 2019, 09:44:07 amYea Id love to see how the square ones are laid out inside! Thatd be more interesting to me.

author: flowirin
author_rank: Newbie
timestamp: June 19, 2020, 10:20:01 am
content: Quote from: mjanich on January 26, 2018, 10:08:36 amI've signed up to this forum just to answer "yes" to your question.I'd be very interested in an arduino or ESP8266 project.I have these panels but the software form nanoleaf is beyond atrocious (pairing is borked) and I'd really like to be able to run the panels some other way!

author: drakejest
author_rank: Regular Contributor
timestamp: November 13, 2020, 07:09:35 am
content: Quote from: kronoshacker on January 25, 2018, 11:56:57 pmPlease share a board pictue of the rhythm module. I would really like to see the inside and how they do the rhythm functionality

author: MemoryBytes
author_rank: Newbie
timestamp: November 17, 2020, 01:37:01 am
content: Hey,Great teardown, I learned a lot of things. Do you have the measurements for the LED strips i.e. how long are they, how far apart are each white and rgb led. I also wanted to ask, is there a way I could get an LED strip similar to that?

author: Uandr
author_rank: Newbie
timestamp: January 14, 2021, 09:25:32 pm
content: Hello, I am very interested in the dimensions of the internal components in the panelssuch as "On top sits a thick transparent block of plastic with a regular hole pattern" and the dimensions of the diode padThank you

author: stefdc91
author_rank: Newbie
timestamp: February 20, 2023, 04:50:40 pm
content: Hello, Excuse me for my language, I hope you can help me.This chip (arrow) burned out in my nanoleaf controller. Is it possible to fix it? or should you buy the controller new?

author: gamalot
author_rank: Super Contributor
timestamp: February 20, 2023, 07:16:55 pm
content: Quote from: karpouzi9 on February 20, 2023, 06:36:35 pmIt's a MP2451https://www.monolithicpower.com/en/documentview/productdocument/index/version/2/document_type/Datasheet/lang/en/sku/MP2451/document_id/253

author: Xmen06
author_rank: Newbie
timestamp: November 17, 2023, 04:09:05 pm
content: Hello all,Thanks for the teardown Laurent.I have broken the controller connector of my nanoleaf aurora.Do you have all the pin on the motherboard to solder another connector.Regards