Help hacking an LED Cube

Thread Starter

afg

Joined Jan 3, 2020
3
Hello,

I have an LED cube in the front office at my company. We bought it from a company called Seekway and the only way to write new animations to it is via an SD card. I'd like to control the LED cube myself using a combination of a raspberry pi and some Arduino-type devices. This way we can easily write new animations and maybe even play games on it.

The LED cube is 16 x 16 x 16 pixels and each pixel is an RGB LED. The design of the cube is quite clever. The cube is split up into 32 subsections, and each subsection acts like an LED strip. Each subsection is 16 pixels high and 8 pixels wide. Construction-wise this corresponds to 16 small PCBs, which each have 8 LEDs on them. I've attached some pictures to help facilitate some visual understanding of the construction.

For each subsection, power connections are made through 2 long rods. 5V on one rod, ground on the other. Each PCB gets soldered to these rods which serve as structural members as well. For signal, there is only one wire to each subsection, so I reckon the ICs are similar to those you find on LED strips with similar one-wire interfaces. Bare "wire" is used to connect each PCB to route the 1 wire signal up the subsection.

I was hoping to just be able to grab a software library that works on most COTS LED strips and use that to control the cube, but it seems the protocol for the cube's LED strips are a little more complicated. For example, on the simple side, you have the WS2812 IC which takes 3 bytes, displays the corresponding color on your LED, and goes into pass through mode so the next 3 bytes go to the next IC in the strip. I've attached a signal grab of data that goes into a WS2812 LED strip. It's quite compact, and you can see the 24 bits that go into the first IC when I turn it Red.

Thinking I'd see something similar, I cut the signal wire to the topmost PCB in one of the subsections. On this wire, I should be able to see the data that usually goes to the last 8 pixels in the chain. So I loaded up a test animation where the LEDs cycle through Red then Green then Blue. 0 red -> 255 red, 0 green -> 255 green, and then 0 blue -> 255 blue. Then I connected my oscilloscope. This waveform is much less concise, and has 4 sections. First a beginning section that is always the same, next another section that is always the same, THEN a midsection where I can see the changing color data, and an end section that seems to stay the same. It also should be noted, that I see a lot more data than I expected, so it may not act like a regular LED strip but the signal I'm seeing does have some similarities to the WS2812 strip's.

After looking at the IC's package and scouring the internet, I'm unable to identify the IC.

I'm also not able to conclusively identify the protocol being used or what represents a "1" vs a "0" like I can see easily with the WS2812 strip.

Can you help me identify the IC being used, or at least the protocol?

Thanks for reading!
 

Attachments

djsfantasi

Joined Apr 11, 2010
6,975
In a brief summary, you have a proprietary output device, with an unknown protocol that you want to change the output software. Is that correct?

First, yes, it can be done.

Secondly, it cannot be done easily!

What are you thinking? Success is more likely if you start from scratch. From a cost standpoint, you’re looking at mucho moolah in development costs.

Good luck!
 

dl324

Joined Mar 30, 2015
11,926
Welcome to AAC!
I was hoping to just be able to grab a software library that works on most COTS LED strips and use that to control the cube, but it seems the protocol for the cube's LED strips are a little more complicated.
I doubt very much that there's a standard protocol. I designed a 4x4x4 cube to use as a prototype to test my code and hardware before moving to an 8x8x8 cube. The hardware and programming approach was a combination of what I had on hand and whatever "protocol" I thought was easier to code.

What you'll probably end up doing is reverse engineering how the cube was constructed and coming up with code to drive it.
 

Sensacell

Joined Jun 19, 2012
2,634
Looks like PWM LED data packets, as you say like the WS2812 protocol.

Does the cube have 4096 LED's? (16*16*16)

The problem is bandwidth- the cube probably has more than a few signal sources to get the data out fast enough to achieve a decent frame rate.
If you just cascaded 4096 LED's from one output - the thing would be horrendously slow.

Your new controller will need to have multiple output ports too.

How many lines drive the LED array? does it have a separate CLOCK line?

If the signals embed the synchronizing clock into the datastream, (WS2812 style) the signals are rather high speed and timing is critical.
Creating this signal on multiple outputs at the same time is going to be challenging, the timing must be tight.
 

Thread Starter

afg

Joined Jan 3, 2020
3
Looks like PWM LED data packets, as you say like the WS2812 protocol.

Does the cube have 4096 LED's? (16*16*16)

The problem is bandwidth- the cube probably has more than a few signal sources to get the data out fast enough to achieve a decent frame rate.
If you just cascaded 4096 LED's from one output - the thing would be horrendously slow.

Your new controller will need to have multiple output ports too.

How many lines drive the LED array? does it have a separate CLOCK line?

If the signals embed the synchronizing clock into the datastream, (WS2812 style) the signals are rather high speed and timing is critical.
Creating this signal on multiple outputs at the same time is going to be challenging, the timing must be tight.
Hi Sensacell,

The data looks similar to PWM but seems a little different.

The cube is divided into 32 subsections so each subsection has 4096/32 = 128 LEDs. Each 128 LED section acts like an individual LED strip. So there are 32 signal lines, one for each subsection. Since each line is a one wire interface, there is no separate CLK line.

The speed is around 800kHz and what I really need help with is figuring out how 1s and 0s are encoded so I can figure out what ICs are used. Once I figure that out I can lookup a datasheet and make a driver pretty easily.
 

Analog Ground

Joined Apr 24, 2019
420
Hacking this cube is interesting. Perhaps the protocol is based on DMX? Looks like this is used for lighting and staging systems. The specs for the Seekway controllers refer to DMX. Does DMX have a standard data format and transmission protocol? If so, is that the place to start the hack? Here is an IC which may be used in this type of system. Perhaps the device in the pic is like this one?

http://www.ti.com/lit/ds/symlink/tlc59731.pdf

Intro to DMX512 with low level description:

https://learn.sparkfun.com/tutorials/introduction-to-dmx/all

Edit: Looks like DMX512 is an ANSI standard. Looks promising.
 
Last edited:

John P

Joined Oct 14, 2008
1,848
What I saw on the site linked by DNA Robotics was that the Seekway software is pretty extensive, and that got me thinking--actually figuring out how to create patterns on the display might be a serious task. So maybe you can build the hardware to drive this thing; will you be willing to put in the time to program anything useful for it?

And since this is in an office lobby, is the company paying for the time that goes into this project, or is it a leisure activity?
 

Thread Starter

afg

Joined Jan 3, 2020
3
Hacking this cube is interesting. Perhaps the protocol is based on DMX? Looks like this is used for lighting and staging systems. The specs for the Seekway controllers refer to DMX. Does DMX have a standard data format and transmission protocol? If so, is that the place to start the hack? Here is an IC which may be used in this type of system. Perhaps the device in the pic is like this one?

http://www.ti.com/lit/ds/symlink/tlc59731.pdf

Intro to DMX512 with low level description:

https://learn.sparkfun.com/tutorials/introduction-to-dmx/all

Edit: Looks like DMX512 is an ANSI standard. Looks promising.
Hi A.G.

You have some good ideas. I came across that TI chip as well but it looks like a "0" is one pulse, and a "1" is two pulses. In this case, it looks more like a 50% duty square wave that is binary phase shift key-ed to encode "0" vs "1". It is somewhat hard to tell though, but that's my best guess.

As for DMX, there isn't a DMX connection on this cube in particular, so I can't use that to control the cube at a higher level, unfortunately.

-Andrew
 
Top