How To: Hack Christmas Lights for Custom Holiday Lighting Patterns

How To: Hack Christmas Lights for Custom Holiday Lighting Patterns

General Electric isn't known for their Christmas lights, but maybe they should be, because their GE Color Effects are pretty awesome. Especially the LED Color Effects G-35 String sets.  And especially when someone named Darco hacks them.Darco, whose real name is Robert Sun Quattlebaum, reverse-engineered (i.e. hacked) his set of 50 lights to show his own lighting pattern.  And for all of you planning to decorate your house with holiday lighting, this is the only true way to have a unique display.Here's what Darco has to say about his hacked Christmas lights:

Hacking Christmas LightsThis string contains fifty "bulbs".  Each bulb contains a red, green, and blue LED—allowing for any color to be produced.  The biggest drawback is how you control them: there are 14 pre-set "programs" that you can select, and they are all pretty lame.  However, with a little reverse engineering and an Arduino (or any other microcontroller) they can be made into the coolest Christmas lights on the block.  If you buy several strings, you could easily make a large 2D LED array.  The possibilities are endless.  At $59.99USD for a string (A tad over $1 per node), these things are a steal for what you can do with them.I wanted to share my efforts so that other people can give this a try.  At the end of the post I have a link to the code I'm now using to drive my Christmas lights. Feel free to use it for your own hacking endeavors. Please enable JavaScript to watch this video.
So far I've reverse engineered both the radio protocol and the protocol used on the LED data bus.  Of the two, the LED data bus protocol is by far the most interesting.  So, that's where I'll start…

LED Data Bus ProtocolThere are three wires connecting all of the "bulbs" in the string: +5V, Data, and Ground, respectively.  The wire isn't really marked for polarity, but the order I mention is from looking at the wire going into the first bulb from the controller box with the bulb facing up.  I've labeled the wires in the following photo:Each bulb has an address numbering from zero to fourty-nine, with bulb zero being the bulb closest to the control box.The protocol on the data line is simple and self-clocked. Here are the low-level details:Idle bus state: LowStart Bit: High for 10µSeconds0 Bit: Low for 10µSeconds, High for 20µSeconds1 Bit: Low for 20µSeconds, High for 10µSecondsMinimum quiet-time between frames: 30µSecondsEach frame is 26 bits long and has the following format:Start bit6-Bit Bulb Address, MSB first8-Bit Brightness, MSB first4-Bit Blue, MSB first4-Bit Green, MSB first4-Bit Red, MSB firstFrom this we can see that we have a color depth of 12 bits.  Not terribly great, but this should still be plenty for our purposes.  What is interesting is the Brightness field.  This field acts a bit like a multiplier and enables smooth fade-ins and fade-outs. Bulb address 63 can be thought of as the "broadcast" bulb, except that it only changes the brightness level—the color fields are ignored. Bulb addresses 50-62 are ignored under normal circumstances.Each frame takes 820 µSeconds to transmit. Since there are 50 bulbs, that means that takes a minimum of 41 milliseconds to individually update every bulb. This gives us a maximum refresh rate of slightly more than 24Hz. Not bad.
Bulb EnumerationIt turns out that the data line is not a continuous wire of copper thru the whole string.  Each bulb contains a microcontroller with two data lines: one is an input, and one is an output. When the string first powers up, all bulbs are in the "enumerate" state.  When in this state, the first command received is used to tell the bulb what its address is.  Once the address is set, all subsequent commands are forwarded to the next bulb.  This process continues until all bulbs are enumerated and have an address.Normally, you would want to perform some sort of power-on enumeration which would give each lamp it's own address—but this isn't the only option.  The enumeration step allows you to assign any address to any bulb you want—including giving several bulbs the same address.  By giving several bulbs the same address, you can control several bulbs with a single command. There may possibly be a way to force all bulbs back into the enumeration state without power cycling.  If this turns out to be possible I'll update this page with the details.
To See More...Go to Darco's original post, which has details on bus snooping observations, bugs in the bulbs, notes about voltage, opening the control unit, remote control and software needed.Click through to read Hacking Christmas Lights.



If you're tired of Google tracking you, but love how Chrome works, CyanogenMod has you covered. Their browser is called Gello, which is based off Chromium, Chrome's open-source counterpart. It's basically a souped-up version of Chrome—without all of the intrusive Google stuff.
CyanogenMod to bring a Chromium-based Android browser called


AndreiLux pointed out a new feature in the Samsung Galaxy S4 kernel called: CONFIG_SEC_RESTRICT_SETUID; This is a new addition to their kernel source code, and it's meant to prevent processes such as malware and exploits from changing a normal user to root user by using SETUID.
How to Get CyanogenMod's New Secured - Samsung Galaxy Note 2


iOS 11 Hidden Features! Top 20+ Cool iOS 11 Tips, tricks like hidden dark mode, AirPods Customization, Screen Recording, Control centre tweaks, QR Code scan, iPhone Storage and more! What's your
100+ Coolest New iOS 12 Features You Need to Know


How To: Get the Pixel's Navigation Buttons & Google Assistant Animation on Your Nexus How To: Get the Pixel's 'Zero Shutter Lag' Camera with HDR+ Features on Your Nexus How To: Get Moto X-Style 'Active Display' Notifications on a Samsung Galaxy S3 News: Christmas Is Coming Early! Android 7.1 Beta Is Hitting Nexus Devices This Month
Samsung Galaxy S7 Always-On Display Vs Motorola Active


Now, let's proceed with the tutorial below to unlock Razer Phone 2 bootloader. How to Unlock Bootloader on Razer Phone 2. We have put together a detailed step-by-step instructions guide on how to unlock bootloader on Razer Phone 2. If you are used to unlocking bootloaders on any previous Nexus devices, then this should not be any different
How to Unlock Bootloader of Android Device With KingoRoot


Cradle Your Apple Watch In This Charging Dock For Just $3.99, Limited Time Only By Oliver Haslam | May 3rd, 2019 You can now keep your costly Apple Watch safe and sound on a great stand for just $4, with the Orzly Compact Stand currently on offer at Amazon.
Check your battery and charge your Apple Watch


If you want to restart your Netflix account to get back to watching your favorite TV shows and movies, simply sign in to Netflix.com and click Restart Membership from any profile except a Kids profile. If your account is inactive, you'll be asked to restart your membership once you sign in to Netflix. Your billing date will change to the date


News: 5 Secret Snapchat Lenses That Will Make Your Weekend — Infinity War, the Chainsmokers & More News: Snapchat Unveils Web-Based Tool for Creating Custom AR Lenses & Filters News: Your Custom Snapchat Lens or Filter Could Cost You $1,000
News: Snapchat Lays Up Lens Studio Experience for Nike's


If you're having trouble reading your iPhone, you can adjust its font display. Here's how to change the font size on an iPhone and enable bold text.
Changing Fonts Style On iPhone 8 And iPhone 8 Plus


Both of Google's newest flagships have an always-on feature called Ambient Display, and it's enabled by default. Since the Pixel 2 and Pixel 2 XL both use OLED screens, it's in line with current trends, and it's an extra feature to brag about in marketing materials.
How To Disable the Always-on Ambient Display on your Pixel 2


This video tutorial belongs to the Computers & Programming category which is going to show you how to block websites in Firefox with the BlockSite add-on. Do a Google search for add-ons for Firefox and click the first link.
How to block websites on Firefox using BlockSite add-on

0 comments:

Post a Comment