Help with DIY Ambilight


I have been trying to set up a DIY ambilight using this guide here.

The only thing I changed with the guide is using a ws2813 LED strip with 300 LEDs instead of a ws2812b LED strip that has been cut to have 99 LEDs. I loaded the program below into the arduino, attached the yellow LED wire to the 6th data pin and black wire to the ground pin onto an arduino mega 2560, and then the arduino makes the entire 300 LEDs flash red, then green, then blue. Upon loading prismatik, however, none of the LEDs turn on on Windows 10. On macOS only the first LED turns on with prismatik.

I’m unsure of my issue but upon googling I found this forum topic. Which states I have to attach both the green and yellow data line wires to the same data pin, in this case data pin 6. I tried to twist the two wires but cannot get both to fit into the socket of the 6th data pin. Is there some kind of attachment that can attach two pins to one socket? Or do I have to solder these connections directly. I can solder, just hesitating because I am unsure if this is the issue. Any help is appreciated.

 * Arduino interface for the use of WS2812 strip LEDs
 * Uses Adalight protocol and is compatible with Boblight, Prismatik etc...
 * "Magic Word" for synchronisation is 'Ada' followed by LED High, Low and Checksum
 * @author: Wifsimster <> 
 * @library: FastLED v3.001
 * @date: 11/22/2015
#include "FastLED.h"
#define NUM_LEDS 300
#define DATA_PIN 6

// Baudrate, higher rate allows faster refresh rate and more LEDs (defined in /etc/boblight.conf)
#define serialRate 115200

// Adalight sends a "Magic Word" (defined in /etc/boblight.conf) before sending the pixel data
uint8_t prefix[] = {'A', 'd', 'a'}, hi, lo, chk, i;

// Initialise LED-array

void setup() {
  // Use NEOPIXEL to keep true colors
  FastLED.addLeds<NEOPIXEL, DATA_PIN>(leds, NUM_LEDS);
  // Initial RGB flash
  LEDS.showColor(CRGB(255, 0, 0));
  LEDS.showColor(CRGB(0, 255, 0));
  LEDS.showColor(CRGB(0, 0, 255));
  LEDS.showColor(CRGB(0, 0, 0));
  // Send "Magic Word" string to host

void loop() { 
  // Wait for first byte of Magic Word
  for(i = 0; i < sizeof prefix; ++i) {
    waitLoop: while (!Serial.available()) ;;
    // Check next byte in Magic Word
    if(prefix[i] == continue;
    // otherwise, start over
    i = 0;
    goto waitLoop;
  // Hi, Lo, Checksum  
  while (!Serial.available()) ;;;
  while (!Serial.available()) ;;;
  while (!Serial.available()) ;;;
  // If checksum does not match go back to wait
  if (chk != (hi ^ lo ^ 0x55)) {
    goto waitLoop;
  memset(leds, 0, NUM_LEDS * sizeof(struct CRGB));
  // Read the transmission data and set LED values
  for (uint8_t i = 0; i < NUM_LEDS; i++) {
    byte r, g, b;    
    r =;
    g =;
    b =;
    leds[i].r = r;
    leds[i].g = g;
    leds[i].b = b;
  // Shows new values;

Edit: Spelling