Posts mit dem Label led werden angezeigt. Alle Posts anzeigen
Posts mit dem Label led werden angezeigt. Alle Posts anzeigen

Dienstag, 5. Februar 2013

Adalight + Processing 50 LEDs RedBlue switched

sources:
http://learn.adafruit.com/adalight-diy-ambient-tv-lighting/advanced-topics




problem: ws2801 LED stripes Red<->Blue transposed

some adjustments in code of processing sketch necessary for the colors also for the amount of LEDs (50)


 Update
solution:
sketch:



// "Adalight" is a do-it-yourself facsimile of the Philips Ambilight concept
// for desktop computers and home theater PCs.  This is the host PC-side code
// written in Processing, intended for use with a USB-connected Arduino
// microcontroller running the accompanying LED streaming code.  Requires one
// or more strands of Digital RGB LED Pixels (Adafruit product ID #322,
// specifically the newer WS2801-based type, strand of 25) and a 5 Volt power
// supply (such as Adafruit #276).  You may need to adapt the code and the
// hardware arrangement for your specific display configuration.
// Screen capture adapted from code by Cedrik Kiefer (processing.org forum)

// --------------------------------------------------------------------
//   This file is part of Adalight.

//   Adalight is free software: you can redistribute it and/or modify
//   it under the terms of the GNU Lesser General Public License as
//   published by the Free Software Foundation, either version 3 of
//   the License, or (at your option) any later version.

//   Adalight is distributed in the hope that it will be useful,
//   but WITHOUT ANY WARRANTY; without even the implied warranty of
//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//   GNU Lesser General Public License for more details.

//   You should have received a copy of the GNU Lesser General Public
//   License along with Adalight.  If not, see
//   <http://www.gnu.org/licenses/>.
// --------------------------------------------------------------------

import java.awt.*;
import java.awt.image.*;
import processing.serial.*;

// CONFIGURABLE PROGRAM CONSTANTS --------------------------------------------

// Minimum LED brightness; some users prefer a small amount of backlighting
// at all times, regardless of screen content.  Higher values are brighter,
// or set to 0 to disable this feature.

static final short minBrightness = 120;

// LED transition speed; it's sometimes distracting if LEDs instantaneously
// track screen contents (such as during bright flashing sequences), so this
// feature enables a gradual fade to each new LED state.  Higher numbers yield
// slower transitions (max of 255), or set to 0 to disable this feature
// (immediate transition of all LEDs).

static final short fade = 75;

// Pixel size for the live preview image.

static final int pixelSize = 20;

// Depending on many factors, it may be faster either to capture full
// screens and process only the pixels needed, or to capture multiple
// smaller sub-blocks bounding each region to be processed.  Try both,
// look at the reported frame rates in the Processing output console,
// and run with whichever works best for you.

static final boolean useFullScreenCaps = true;

// Serial device timeout (in milliseconds), for locating Arduino device
// running the corresponding LEDstream code.  See notes later in the code...
// in some situations you may want to entirely comment out that block.

static final int timeout = 5000; // 5 seconds

// PER-DISPLAY INFORMATION ---------------------------------------------------

// This array contains details for each display that the software will
// process.  If you have screen(s) attached that are not among those being
// "Adalighted," they should not be in this list.  Each triplet in this
// array represents one display.  The first number is the system screen
// number...typically the "primary" display on most systems is identified
// as screen #1, but since arrays are indexed from zero, use 0 to indicate
// the first screen, 1 to indicate the second screen, and so forth.  This
// is the ONLY place system screen numbers are used...ANY subsequent
// references to displays are an index into this list, NOT necessarily the
// same as the system screen number.  For example, if you have a three-
// screen setup and are illuminating only the third display, use '2' for
// the screen number here...and then, in subsequent section, '0' will be
// used to refer to the first/only display in this list.
// The second and third numbers of each triplet represent the width and
// height of a grid of LED pixels attached to the perimeter of this display.
// For example, '9,6' = 9 LEDs across, 6 LEDs down.

static final int displays[][] = new int[][] {
   {0,17,10} // Screen 0, 9 LEDs across, 6 LEDs down
//   {0,9,6} // Screen 0, 9 LEDs across, 6 LEDs down
//,{1,9,6} // Screen 1, also 9 LEDs across and 6 LEDs down
};

// PER-LED INFORMATION -------------------------------------------------------

// This array contains the 2D coordinates corresponding to each pixel in the
// LED strand, in the order that they're connected (i.e. the first element
// here belongs to the first LED in the strand, second element is the second
// LED, and so forth).  Each triplet in this array consists of a display
// number (an index into the display array above, NOT necessarily the same as
// the system screen number) and an X and Y coordinate specified in the grid
// units given for that display.  {0,0,0} is the top-left corner of the first
// display in the array.
// For our example purposes, the coordinate list below forms a ring around
// the perimeter of a single screen, with a one pixel gap at the bottom to
// accommodate a monitor stand.  Modify this to match your own setup:



//50LEDs
//falsch aufgeklebt bzgl. Bild 1=1, 50=2, 49=3,...2=50
static final int leds[][] = new int[][] {
// 1        2       3          4       5         6        7        8       9
//{0,8,9}, {0,7,9}, {0,6,9}, {0,5,9}, {0,4,9}, {0,3,9}, {0,2,9}, {0,1,9}, {0,0,9},    // Bottom edge, left half
{0,8,9}, {0,9,9},  {0,10,9},{0,11,9},{0,12,9},{0,13,9},{0,14,9}, {0,15,9},{0,16,9},



// 35      36          37        38        39        40        41        42
//{0,0,8}, {0,0,7}, {0,0,6}, {0,0,5}, {0,0,4}, {0,0,3}, {0,0,2}, {0,0,1}, {0,0,0},   
{0,16,8},{0,16,7},{0,16,6}, {0,16,5},{0,16,4},{0,16,3},  {0,16,2},{0,16,1},          // Right edge


//{0,1,0}, {0,2,0}, {0,3,0}, {0,4,0}, {0,5,0}, {0,6,0}, {0,7,0}, {0,8,0},               // Top edge
//{0,9,0}, {0,10,0}, {0,11,0}, {0,12,0}, {0,13,0}, {0,14,0}, {0,15,0}, {0,16,0},       // More top edge
{0,16,0},{0,15,0},{0,14,0},{0,13,0},{0,12,0},{0,11,0},{0,10,0},{0,9,0},
 {0,8,0},{0,7,0}, {0,6,0},{0,5,0},{0,4,0},{0,3,0}, {0,2,0}, {0,1,0},


// 10      11        12      13        14       15      16        17      18
//{0,16,1}, {0,16,2}, {0,16,3}, {0,16,4}, {0,16,5}, {0,16,6}, {0,16,7}, {0,16,8},   // Left edge
{0,0,0},{0,0,1},{0,0,2},{0,0,3},{0,0,4},{0,0,5},{0,0,6},{0,0,7},{0,0,8},

// 43        44      45        46      47      48        49        50
//{0,16,9},  {0,15,9}, {0,14,9}, {0,13,9}, {0,12,9}, {0,11,9}, {0,10,9}, {0,9,9},            // Bottom edge, right half
{0,0,9}, {0,1,9},{0,2,9}, {0,3,9},{0,4,9}, {0,5,9},{0,6,9}, {0,7,9},

//50LEDs
//static final int leds[][] = new int[][] {
// 1        2       3          4       5         6        7        8       9
//{0,8,9}, {0,7,9}, {0,6,9}, {0,5,9}, {0,4,9}, {0,3,9}, {0,2,9}, {0,1,9}, {0,0,9},    // Bottom edge, left half
// 10      11        12      13        14       15      16        17      18
//{0,16,1}, {0,16,2}, {0,16,3}, {0,16,4}, {0,16,5}, {0,16,6}, {0,16,7}, {0,16,8},     // Right edge


//{0,1,0}, {0,2,0}, {0,3,0}, {0,4,0}, {0,5,0}, {0,6,0}, {0,7,0}, {0,8,0},             // Top edge
//{0,9,0}, {0,10,0}, {0,11,0}, {0,12,0}, {0,13,0}, {0,14,0}, {0,15,0}, {0,16,0},     // More top edge

// 35      36          37        38        39        40        41        42
//{0,0,8}, {0,0,7}, {0,0,6}, {0,0,5}, {0,0,4}, {0,0,3}, {0,0,2}, {0,0,1}, {0,0,0},    // Left edge

// 43        44      45        46      47      48        49        50
//{0,16,9},  {0,15,9}, {0,14,9}, {0,13,9}, {0,12,9}, {0,11,9}, {0,10,9}, {0,9,9},            // Bottom edge, right half

//25LEDs
//static final int leds[][] = new int[][] {
//  {0,3,5}, {0,2,5}, {0,1,5}, {0,0,5}, // Bottom edge, left half
//  {0,0,4}, {0,0,3}, {0,0,2}, {0,0,1}, // Left edge
//  {0,0,0}, {0,1,0}, {0,2,0}, {0,3,0}, {0,4,0}, // Top edge
//           {0,5,0}, {0,6,0}, {0,7,0}, {0,8,0}, // More top edge
//  {0,8,1}, {0,8,2}, {0,8,3}, {0,8,4}, // Right edge
//  {0,8,5}, {0,7,5}, {0,6,5}, {0,5,5}  // Bottom edge, right half

/* Hypothetical second display has the same arrangement as the first.
   But you might not want both displays completely ringed with LEDs;
   the screens might be positioned where they share an edge in common.
 ,{1,3,5}, {1,2,5}, {1,1,5}, {1,0,5}, // Bottom edge, left half
  {1,0,4}, {1,0,3}, {1,0,2}, {1,0,1}, // Left edge
  {1,0,0}, {1,1,0}, {1,2,0}, {1,3,0}, {1,4,0}, // Top edge
           {1,5,0}, {1,6,0}, {1,7,0}, {1,8,0}, // More top edge
  {1,8,1}, {1,8,2}, {1,8,3}, {1,8,4}, // Right edge
  {1,8,5}, {1,7,5}, {1,6,5}, {1,5,5}  // Bottom edge, right half
*/
};

// GLOBAL VARIABLES ---- You probably won't need to modify any of this -------

byte[]           serialData  = new byte[6 + leds.length * 3];
short[][]        ledColor    = new short[leds.length][3],
                 prevColor   = new short[leds.length][3];
byte[][]         gamma       = new byte[256][3];
int              nDisplays   = displays.length;
Robot[]          bot         = new Robot[displays.length];
Rectangle[]      dispBounds  = new Rectangle[displays.length],
                 ledBounds;  // Alloc'd only if per-LED captures
int[][]          pixelOffset = new int[leds.length][256],
                 screenData; // Alloc'd only if full-screen captures
PImage[]         preview     = new PImage[displays.length];
Serial           port;
DisposeHandler   dh; // For disabling LEDs on exit

// INITIALIZATION ------------------------------------------------------------

void setup() {
  GraphicsEnvironment     ge;
  GraphicsConfiguration[] gc;
  GraphicsDevice[]        gd;
  int                     d, i, totalWidth, maxHeight, row, col, rowOffset;
  int[]                   x = new int[16], y = new int[16];
  float                   f, range, step, start;

  dh = new DisposeHandler(this); // Init DisposeHandler ASAP

  // Open serial port.  As written here, this assumes the Arduino is the
  // first/only serial device on the system.  If that's not the case,
  // change "Serial.list()[0]" to the name of the port to be used:
  port = new Serial(this, Serial.list()[0], 115200);
  // Alternately, in certain situations the following line can be used
  // to detect the Arduino automatically.  But this works ONLY with SOME
  // Arduino boards and versions of Processing!  This is so convoluted
  // to explain, it's easier just to test it yourself and see whether
  // it works...if not, leave it commented out and use the prior port-
  // opening technique.
  // port = openPort();
  // And finally, to test the software alone without an Arduino connected,
  // don't open a port...just comment out the serial lines above.

  // Initialize screen capture code for each display's dimensions.
  dispBounds = new Rectangle[displays.length];
  if(useFullScreenCaps == true) {
    screenData = new int[displays.length][];
    // ledBounds[] not used
  } else {
    ledBounds  = new Rectangle[leds.length];
    // screenData[][] not used
  }
  ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
  gd = ge.getScreenDevices();
  if(nDisplays > gd.length) nDisplays = gd.length;
  totalWidth = maxHeight = 0;
  for(d=0; d<nDisplays; d++) { // For each display...
    try {
      bot[d] = new Robot(gd[displays[d][0]]);
    }
    catch(AWTException e) {
      System.out.println("new Robot() failed");
      continue;
    }
    gc              = gd[displays[d][0]].getConfigurations();
    dispBounds[d]   = gc[0].getBounds();
    dispBounds[d].x = dispBounds[d].y = 0;
    preview[d]      = createImage(displays[d][1], displays[d][2], RGB);
    preview[d].loadPixels();
    totalWidth     += displays[d][1];
    if(d > 0) totalWidth++;
    if(displays[d][2] > maxHeight) maxHeight = displays[d][2];
  }

  // Precompute locations of every pixel to read when downsampling.
  // Saves a bunch of math on each frame, at the expense of a chunk
  // of RAM.  Number of samples is now fixed at 256; this allows for
  // some crazy optimizations in the downsampling code.
  for(i=0; i<leds.length; i++) { // For each LED...
    d = leds[i][0]; // Corresponding display index

    // Precompute columns, rows of each sampled point for this LED
    range = (float)dispBounds[d].width / (float)displays[d][1];
    step  = range / 16.0;
    start = range * (float)leds[i][1] + step * 0.5;
    for(col=0; col<16; col++) x[col] = (int)(start + step * (float)col);
    range = (float)dispBounds[d].height / (float)displays[d][2];
    step  = range / 16.0;
    start = range * (float)leds[i][2] + step * 0.5;
    for(row=0; row<16; row++) y[row] = (int)(start + step * (float)row);

    if(useFullScreenCaps == true) {
      // Get offset to each pixel within full screen capture
      for(row=0; row<16; row++) {
        for(col=0; col<16; col++) {
          pixelOffset[i][row * 16 + col] =
            y[row] * dispBounds[d].width + x[col];
        }
      }
    } else {
      // Calc min bounding rect for LED, get offset to each pixel within
      ledBounds[i] = new Rectangle(x[0], y[0], x[15]-x[0]+1, y[15]-y[0]+1);
      for(row=0; row<16; row++) {
        for(col=0; col<16; col++) {
          pixelOffset[i][row * 16 + col] =
            (y[row] - y[0]) * ledBounds[i].width + x[col] - x[0];
        }
      }
    }
  }

  for(i=0; i<prevColor.length; i++) {
    prevColor[i][0] = prevColor[i][1] = prevColor[i][2] =
      minBrightness / 3;
  }

  // Preview window shows all screens side-by-side
  size(totalWidth * pixelSize, maxHeight * pixelSize, JAVA2D);
  noSmooth();

  // A special header / magic word is expected by the corresponding LED
  // streaming code running on the Arduino.  This only needs to be initialized
  // once (not in draw() loop) because the number of LEDs remains constant:
  serialData[0] = 'A';                              // Magic word
  serialData[1] = 'd';
  serialData[2] = 'a';
  serialData[3] = (byte)((leds.length - 1) >> 8);   // LED count high byte
  serialData[4] = (byte)((leds.length - 1) & 0xff); // LED count low byte
  serialData[5] = (byte)(serialData[3] ^ serialData[4] ^ 0x55); // Checksum

  // Pre-compute gamma correction table for LED brightness levels:
  for(i=0; i<256; i++) {
    f           = pow((float)i / 255.0, 2.8);
    gamma[i][0] = (byte)(f * 255.0);
    gamma[i][1] = (byte)(f * 240.0);
    gamma[i][2] = (byte)(f * 220.0);
  }
}

// Open and return serial connection to Arduino running LEDstream code.  This
// attempts to open and read from each serial device on the system, until the
// matching "Ada\n" acknowledgement string is found.  Due to the serial
// timeout, if you have multiple serial devices/ports and the Arduino is late
// in the list, this can take seemingly forever...so if you KNOW the Arduino
// will always be on a specific port (e.g. "COM6"), you might want to comment
// out most of this to bypass the checks and instead just open that port
// directly!  (Modify last line in this method with the serial port name.)

Serial openPort() {
  String[] ports;
  String   ack;
  int      i, start;
  Serial   s;

  ports = Serial.list(); // List of all serial ports/devices on system.

  for(i=0; i<ports.length; i++) { // For each serial port...
    System.out.format("Trying serial port %s\n",ports[i]);
    try {
      s = new Serial(this, ports[i], 115200);
    }
    catch(Exception e) {
      // Can't open port, probably in use by other software.
      continue;
    }
    // Port open...watch for acknowledgement string...
    start = millis();
    while((millis() - start) < timeout) {
      if((s.available() >= 4) &&
        ((ack = s.readString()) != null) &&
        ack.contains("Ada\n")) {
          return s; // Got it!
      }
    }
    // Connection timed out.  Close port and move on to the next.
    s.stop();
  }

  // Didn't locate a device returning the acknowledgment string.
  // Maybe it's out there but running the old LEDstream code, which
  // didn't have the ACK.  Can't say for sure, so we'll take our
  // changes with the first/only serial device out there...
  return new Serial(this, ports[0], 115200);
}


// PER_FRAME PROCESSING ------------------------------------------------------

void draw () {
  BufferedImage img;
  int           d, i, j, o, c, weight, rb, g, sum, deficit, s2, r, b; //added rb variabeln
  int[]         pxls, offs;

  if(useFullScreenCaps == true ) {
    // Capture each screen in the displays array.
    for(d=0; d<nDisplays; d++) {
      img = bot[d].createScreenCapture(dispBounds[d]);
      // Get location of source pixel data
      screenData[d] =
        ((DataBufferInt)img.getRaster().getDataBuffer()).getData();
    }
  }

  weight = 257 - fade; // 'Weighting factor' for new frame vs. old
  j      = 6;          // Serial led data follows header / magic word

  // This computes a single pixel value filtered down from a rectangular
  // section of the screen.  While it would seem tempting to use the native
  // image scaling in Processing/Java, in practice this didn't look very
  // good -- either too pixelated or too blurry, no happy medium.  So
  // instead, a "manual" downsampling is done here.  In the interest of
  // speed, it doesn't actually sample every pixel within a block, just
  // a selection of 256 pixels spaced within the block...the results still
  // look reasonably smooth and are handled quickly enough for video.

  for(i=0; i<leds.length; i++) {  // For each LED...
    d = leds[i][0]; // Corresponding display index
    if(useFullScreenCaps == true) {
      // Get location of source data from prior full-screen capture:
      pxls = screenData[d];
    } else {
      // Capture section of screen (LED bounds rect) and locate data::
      img  = bot[d].createScreenCapture(ledBounds[i]);
      pxls = ((DataBufferInt)img.getRaster().getDataBuffer()).getData();
    }
    offs = pixelOffset[i];
    rb = r = g = b= 0;     // rgb variablen
    for(o=0; o<256; o++) {
      c   = pxls[offs[o]];
      //rb += c & 0x00ff00ff; // Bit trickery: R+B can accumulate in one var
      r += c & 0x000000ff; // R with B value
      g  += c & 0x0000ff00;
      b += c & 0x00ff0000; //B with R value
    }

    // Blend new pixel value with the value from the prior frame
    ledColor[i][0]  = (short)((((r >> 8) & 0xff) * weight +       //8 instead of 24
                               prevColor[i][0]     * fade) >> 8);
    ledColor[i][1]  = (short)(((( g >> 16) & 0xff) * weight +
                               prevColor[i][1]     * fade) >> 8);
    ledColor[i][2]  = (short)((((b >>  24) & 0xff) * weight +
                               prevColor[i][2]     * fade) >> 8); //24 instead of 8

    // Boost pixels that fall below the minimum brightness
    sum = ledColor[i][0] + ledColor[i][1] + ledColor[i][2];
    if(sum < minBrightness) {
      if(sum == 0) { // To avoid divide-by-zero
        deficit = minBrightness / 3; // Spread equally to R,G,B
        ledColor[i][0] += deficit;
        ledColor[i][1] += deficit;
        ledColor[i][2] += deficit;
      } else {
        deficit = minBrightness - sum;
        s2      = sum * 2;
        // Spread the "brightness deficit" back into R,G,B in proportion to
        // their individual contribition to that deficit.  Rather than simply
        // boosting all pixels at the low end, this allows deep (but saturated)
        // colors to stay saturated...they don't "pink out."
        ledColor[i][0] += deficit * (sum - ledColor[i][0]) / s2;
        ledColor[i][1] += deficit * (sum - ledColor[i][1]) / s2;
        ledColor[i][2] += deficit * (sum - ledColor[i][2]) / s2;
      }
    }

    // Apply gamma curve and place in serial output buffer
    serialData[j++] = gamma[ledColor[i][0]][0];
    serialData[j++] = gamma[ledColor[i][1]][1];
    serialData[j++] = gamma[ledColor[i][2]][2];
    // Update pixels in preview image
    preview[d].pixels[leds[i][2] * displays[d][1] + leds[i][1]] =
     (ledColor[i][0] << 16) | (ledColor[i][1] << 8) | ledColor[i][2];
  }

  if(port != null) port.write(serialData); // Issue data to Arduino

  // Show live preview image(s)
  scale(pixelSize);
  for(i=d=0; d<nDisplays; d++) {
    preview[d].updatePixels();
    image(preview[d], i, 0);
    i += displays[d][1] + 1;
  }

  println(frameRate); // How are we doing?

  // Copy LED color data to prior frame array for next pass
  arraycopy(ledColor, 0, prevColor, 0, ledColor.length);
}


// CLEANUP -------------------------------------------------------------------

// The DisposeHandler is called on program exit (but before the Serial library
// is shutdown), in order to turn off the LEDs (reportedly more reliable than
// stop()).  Seems to work for the window close box and escape key exit, but
// not the 'Quit' menu option.  Thanks to phi.lho in the Processing forums.

public class DisposeHandler {
  DisposeHandler(PApplet pa) {
    pa.registerDispose(this);
  }
  public void dispose() {
    // Fill serialData (after header) with 0's, and issue to Arduino...
//    Arrays.fill(serialData, 6, serialData.length, (byte)0);
    java.util.Arrays.fill(serialData, 6, serialData.length, (byte)0);
    if(port != null) port.write(serialData);
  }
}




Freitag, 1. Februar 2013

Openelec Boblight (Ambilight)

Quellen:
http://openelec.tv/forum/44-my-openelec-setup-and-cool-things-it-can-do/21026-ambient-lighting-setup-ambient-background-lighting-for-your-home-theater
(kurzform auch in Wiki)

--> Rename boblight.conf.sample to boblight.conf and edit to suit your configuration.
Channels = LEDs * 3
http://passion-xbmc.org/sous-linux/%28tuto%29-installation-ambitv-sous-openelec-tv/



100LEDs front-view














boblight.conf für 100LEDs:
--------------------------------------------------------------------------------------------------------

[global]
interface       127.0.0.1
port            19333


[device]
name            ambilight
type            momo
output          /dev/ttyACM0
channels        300 #c'est le nombre de LED multiplié par 3. Dans cette exemple 75 = 25Ledx3
prefix            41 64 61 00 63 36
interval        10000
rate            115200
debug           off #turn this on to see what it's doing with the serial port
delayafteropen    1000000

[color]
name            red
rgb             0000FF
#rgb             FF0000
adjust            0.7
gamma           1.0

[color]
name            green
rgb             00FF00
adjust            1.0
gamma           1.0

[color]
name            blue
rgb             FF0000
#rgb             0000FF
adjust            1.0
gamma           1.0
[light]
name            1
color           red     ambilight 1
color           green   ambilight 2
color           blue    ambilight 3
hscan           48.39 51.61
vscan           95.24 100

[light]
name            2
color           red     ambilight 4
color           green   ambilight 5
color           blue    ambilight 6
hscan           45.16 48.38
vscan           95.24 100

[light]
name            3
color           red     ambilight 7
color           green   ambilight 8
color           blue    ambilight 9
hscan           41.93 45.15
vscan           95.24 100

[light]
name            4
color           red     ambilight 10
color           green   ambilight 11
color           blue    ambilight 12
hscan           38.7 41.92
vscan           95.24 100

[light]
name            5
color           red     ambilight 13
color           green   ambilight 14
color           blue    ambilight 15
hscan           35.47 38.69
vscan           95.24 100

[light]
name            6
color           red     ambilight 16
color           green   ambilight 17
color           blue    ambilight 18
hscan           32.24 35.47
vscan           95.24 100

[light]
name            7
color           red     ambilight 19
color           green   ambilight 20
color           blue    ambilight 21
hscan           29.01 32.24
vscan           95.24 100

[light]
name            8
color           red     ambilight 22
color           green   ambilight 23
color           blue    ambilight 24
hscan           25.78 29.01
vscan           95.24 100

[light]
name            9
color           red     ambilight 25
color           green   ambilight 26
color           blue    ambilight 27
hscan           22.55 25.78
vscan           95.24 100

[light]
name            10
color           red     ambilight 28
color           green   ambilight 29
color           blue    ambilight 30
hscan           19.38 22.6
vscan           95.24 100

[light]
name            11
color           red     ambilight 31
color           green   ambilight 32
color           blue    ambilight 33
hscan           16.15 19.37
vscan           95.24 100

[light]
name            12
color           red     ambilight 34
color           green   ambilight 35
color           blue    ambilight 36
hscan           12.92 16.14
vscan           95.24 100

[light]
name            13
color           red     ambilight 37
color           green   ambilight 38
color           blue    ambilight 39
hscan           9.69 12.91
vscan           95.24 100

[light]
name            14
color           red     ambilight 40
color           green   ambilight 41
color           blue    ambilight 42
hscan           6.46 9.68
vscan           95.24 100

[light]
name            15
color           red     ambilight 43
color           green   ambilight 44
color           blue    ambilight 45
hscan           3.23 6.46
vscan           95.24 100

[light]
name            16
color           red     ambilight 46
color           green   ambilight 47
color           blue    ambilight 48
hscan           0 3.23
vscan           95.24 100

[light]
name            17
color           red     ambilight 49
color           green   ambilight 50
color           blue    ambilight 51
hscan           0 3.23
vscan           90.48 95.24

[light]
name            18
color           red     ambilight 52
color           green   ambilight 53
color           blue    ambilight 54
hscan           0 3.23
vscan           85.71 90.48

[light]
name            19
color           red     ambilight 55
color           green   ambilight 56
color           blue    ambilight 57
hscan           0 3.23
vscan           80.95 85.71

[light]
name            20
color           red     ambilight 58
color           green   ambilight 59
color           blue    ambilight 60
hscan           0 3.23
vscan           76.19 80.95

[light]
name            21
color           red     ambilight 61
color           green   ambilight 62
color           blue    ambilight 63
hscan           0 3.23
vscan           71.43 76.19

[light]
name            22
color           red     ambilight 64
color           green   ambilight 65
color           blue    ambilight 66
hscan           0 3.23
vscan           66.67 71.43

[light]
name            23
color           red     ambilight 67
color           green   ambilight 68
color           blue    ambilight 69
hscan           0 3.23
vscan           61.9 66.67

[light]
name            24
color           red     ambilight 70
color           green   ambilight 71
color           blue    ambilight 72
hscan           0 3.23
vscan           57.14 61.9

[light]
name            25
color           red     ambilight 73
color           green   ambilight 74
color           blue    ambilight 75
hscan           0 3.23
vscan           52.38 57.14

[light]
name            26
color           red     ambilight 76
color           green   ambilight 77
color           blue    ambilight 78
hscan           0 3.23
vscan           47.62 52.38

[light]
name            27
color           red     ambilight 79
color           green   ambilight 80
color           blue    ambilight 81
hscan           0 3.23
vscan           42.86 47.62

[light]
name            28
color           red     ambilight 82
color           green   ambilight 83
color           blue    ambilight 84
hscan           0 3.23
vscan           38.09 42.86

[light]
name            29
color           red     ambilight 85
color           green   ambilight 86
color           blue    ambilight 87
hscan           0 3.23
vscan           33.33 38.09

[light]
name            30
color           red     ambilight 88
color           green   ambilight 89
color           blue    ambilight 90
hscan           0 3.23
vscan           28.57 33.33

[light]
name            31
color           red     ambilight 91
color           green   ambilight 92
color           blue    ambilight 93
hscan           0 3.23
vscan           23.81 28.57

[light]
name            32
color           red     ambilight 94
color           green   ambilight 95
color           blue    ambilight 96
hscan           0 3.23
vscan           19.05 23.81

[light]
name            33
color           red     ambilight 97
color           green   ambilight 98
color           blue    ambilight 99
hscan           0 3.23
vscan           14.28 19.05

[light]
name            34
color           red     ambilight 100
color           green   ambilight 101
color           blue    ambilight 102
hscan           0 3.23
vscan           9.52 14.28

[light]
name            35
color           red     ambilight 103
color           green   ambilight 104
color           blue    ambilight 105
hscan           0 3.23
vscan           4.76 9.52

[light]
name            36
color           red     ambilight 106
color           green   ambilight 107
color           blue    ambilight 108
hscan           0 3.23
vscan           0 4.76

[light]
name            37
color           red     ambilight 109
color           green   ambilight 110
color           blue    ambilight 111
hscan           3.23 6.45
vscan           0 4.76

[light]
name            38
color           red     ambilight 112
color           green   ambilight 113
color           blue    ambilight 114
hscan           6.45 9.68
vscan           0 4.76

[light]
name            39
color           red     ambilight 115
color           green   ambilight 116
color           blue    ambilight 117
hscan           9.68 12.9
vscan           0 4.76

[light]
name            40
color           red     ambilight 118
color           green   ambilight 119
color           blue    ambilight 120
hscan           12.9 16.13
vscan           0 4.76

[light]
name            41
color           red     ambilight 121
color           green   ambilight 122
color           blue    ambilight 123
hscan           16.13 19.36
vscan           0 4.76

[light]
name            42
color           red     ambilight 124
color           green   ambilight 125
color           blue    ambilight 126
hscan           19.36 22.58
vscan           0 4.76

[light]
name            43
color           red     ambilight 127
color           green   ambilight 128
color           blue    ambilight 129
hscan           22.58 25.81
vscan           0 4.76

[light]
name            44
color           red     ambilight 130
color           green   ambilight 131
color           blue    ambilight 132
hscan           25.81 29.03
vscan           0 4.76

[light]
name            45
color           red     ambilight 133
color           green   ambilight 134
color           blue    ambilight 135
hscan           29.03 32.26
vscan           0 4.76

[light]
name            46
color           red     ambilight 136
color           green   ambilight 137
color           blue    ambilight 138
hscan           32.26 35.49
vscan           0 4.76

[light]
name            47
color           red     ambilight 139
color           green   ambilight 140
color           blue    ambilight 141
hscan           35.49 38.71
vscan           0 4.76

[light]
name            48
color           red     ambilight 142
color           green   ambilight 143
color           blue    ambilight 144
hscan           38.71 41.94
vscan           0 4.76

[light]
name            49
color           red     ambilight 145
color           green   ambilight 146
color           blue    ambilight 147
hscan           41.94 45.16
vscan           0 4.76

[light]
name            50
color           red     ambilight 148
color           green   ambilight 149
color           blue    ambilight 150
hscan           45.16 48.39
vscan           0 4.76

[light]
name            51
color           red     ambilight 151
color           green   ambilight 152
color           blue    ambilight 153
hscan           48.39 51.62
vscan           0 4.76

[light]
name            52
color           red     ambilight 154
color           green   ambilight 155
color           blue    ambilight 156
hscan           51.62 54.84
vscan           0 4.76

[light]
name            53
color           red     ambilight 157
color           green   ambilight 158
color           blue    ambilight 159
hscan           54.84 58.07
vscan           0 4.76

[light]
name            54
color           red     ambilight 160
color           green   ambilight 161
color           blue    ambilight 162
hscan           58.07 61.29
vscan           0 4.76

[light]
name            55
color           red     ambilight 163
color           green   ambilight 164
color           blue    ambilight 165
hscan           61.29 64.52
vscan           0 4.76

[light]
name            56
color           red     ambilight 166
color           green   ambilight 167
color           blue    ambilight 168
hscan           64.52 67.75
vscan           0 4.76

[light]
name            57
color           red     ambilight 169
color           green   ambilight 170
color           blue    ambilight 171
hscan           67.75 70.97
vscan           0 4.76

[light]
name            58
color           red     ambilight 172
color           green   ambilight 173
color           blue    ambilight 174
hscan           70.97 74.2
vscan           0 4.76

[light]
name            59
color           red     ambilight 175
color           green   ambilight 176
color           blue    ambilight 177
hscan           74.2 77.43
vscan           0 4.76

[light]
name            60
color           red     ambilight 178
color           green   ambilight 179
color           blue    ambilight 180
hscan           77.43 80.65
vscan           0 4.76

[light]
name            61
color           red     ambilight 181
color           green   ambilight 182
color           blue    ambilight 183
hscan           80.65 83.88
vscan           0 4.76

[light]
name            62
color           red     ambilight 184
color           green   ambilight 185
color           blue    ambilight 186
hscan           83.88 87.1
vscan           0 4.76

[light]
name            63
color           red     ambilight 187
color           green   ambilight 188
color           blue    ambilight 189
hscan           87.1 90.33
vscan           0 4.76

[light]
name            64
color           red     ambilight 190
color           green   ambilight 191
color           blue    ambilight 192
hscan           90.33 93.56
vscan           0 4.76

[light]
name            65
color           red     ambilight 193
color           green   ambilight 194
color           blue    ambilight 195
hscan           93.56 96.78
vscan           0 4.76

[light]
name            66
color           red     ambilight 196
color           green   ambilight 197
color           blue    ambilight 198
hscan           96.77 100
vscan           0 4.76

[light]
name            67
color           red     ambilight 199
color           green   ambilight 200
color           blue    ambilight 201
hscan           96.77 100
vscan           4.76 9.52

[light]
name            68
color           red     ambilight 202
color           green   ambilight 203
color           blue    ambilight 204
hscan           96.77 100
vscan           9.52 14.29

[light]
name            69
color           red     ambilight 205
color           green   ambilight 206
color           blue    ambilight 207
hscan           96.77 100
vscan           14.29 19.05

[light]
name            70
color           red     ambilight 208
color           green   ambilight 209
color           blue    ambilight 210
hscan           96.77 100
vscan           19.05 23.81

[light]
name            71
color           red     ambilight 211
color           green   ambilight 212
color           blue    ambilight 213
hscan           96.77 100
vscan           23.81 28.57

[light]
name            72
color           red     ambilight 214
color           green   ambilight 215
color           blue    ambilight 216
hscan           96.77 100
vscan           28.57 33.33

[light]
name            73
color           red     ambilight 217
color           green   ambilight 218
color           blue    ambilight 219
hscan           96.77 100
vscan           33.33 38.1

[light]
name            74
color           red     ambilight 220
color           green   ambilight 221
color           blue    ambilight 222
hscan           96.77 100
vscan           38.1 42.86

[light]
name            75
color           red     ambilight 223
color           green   ambilight 224
color           blue    ambilight 225
hscan           96.77 100
vscan           42.86 47.62

[light]
name            76
color           red     ambilight 226
color           green   ambilight 227
color           blue    ambilight 228
hscan           96.77 100
vscan           47.62 52.38

[light]
name            77
color           red     ambilight 229
color           green   ambilight 230
color           blue    ambilight 231
hscan           96.77 100
vscan           52.38 57.14

[light]
name            78
color           red     ambilight 232
color           green   ambilight 233
color           blue    ambilight 234
hscan           96.77 100
vscan           57.14 61.91

[light]
name            79
color           red     ambilight 235
color           green   ambilight 236
color           blue    ambilight 237
hscan           96.77 100
vscan           61.91 66.67

[light]
name            80
color           red     ambilight 238
color           green   ambilight 239
color           blue    ambilight 240
hscan           96.77 100
vscan           66.67 71.43

[light]
name            81
color           red     ambilight 241
color           green   ambilight 242
color           blue    ambilight 243
hscan           96.77 100
vscan           71.43 76.19

[light]
name            82
color           red     ambilight 244
color           green   ambilight 245
color           blue    ambilight 246
hscan           96.77 100
vscan           76.19 80.95

[light]
name            83
color           red     ambilight 247
color           green   ambilight 248
color           blue    ambilight 249
hscan           96.77 100
vscan           80.95 85.72

[light]
name            84
color           red     ambilight 250
color           green   ambilight 251
color           blue    ambilight 252
hscan           96.77 100
vscan           85.72 90.48

[light]
name            85
color           red     ambilight 253
color           green   ambilight 254
color           blue    ambilight 255
hscan           96.77 100
vscan           90.48 95.24

[light]
name            86
color           red     ambilight 256
color           green   ambilight 257
color           blue    ambilight 258
hscan           96.77 100
vscan           95.24 100

[light]
name            87
color           red     ambilight 259
color           green   ambilight 260
color           blue    ambilight 261
hscan           93.55 96.77
vscan           95.24 100

[light]
name            88
color           red     ambilight 262
color           green   ambilight 263
color           blue    ambilight 264
hscan           90.32 93.55
vscan           95.24 100

[light]
name            89
color           red     ambilight 265
color           green   ambilight 266
color           blue    ambilight 267
hscan           87.1 90.32
vscan           95.24 100

[light]
name            90
color           red     ambilight 268
color           green   ambilight 269
color           blue    ambilight 270
hscan           83.87 87.1
vscan           95.24 100

[light]
name            91
color           red     ambilight 271
color           green   ambilight 272
color           blue    ambilight 273
hscan           80.64 83.87
vscan           95.24 100

[light]
name            92
color           red     ambilight 274
color           green   ambilight 275
color           blue    ambilight 276
hscan           77.42 80.64
vscan           95.24 100

[light]
name            93
color           red     ambilight 277
color           green   ambilight 278
color           blue    ambilight 279
hscan           74.19 77.42
vscan           95.24 100

[light]
name            94
color           red     ambilight 280
color           green   ambilight 281
color           blue    ambilight 282
hscan           70.97 74.19
vscan           95.24 100

[light]
name            95
color           red     ambilight 283
color           green   ambilight 284
color           blue    ambilight 285
hscan           67.74 70.97
vscan           95.24 100

[light]
name            96
color           red     ambilight 286
color           green   ambilight 287
color           blue    ambilight 288
hscan           64.51 67.74
vscan           95.24 100

[light]
name            97
color           red     ambilight 289
color           green   ambilight 290
color           blue    ambilight 291
hscan           61.29 64.51
vscan           95.24 100

[light]
name            98
color           red     ambilight 292
color           green   ambilight 293
color           blue    ambilight 294
hscan           58.06 61.29
vscan           95.24 100

[light]
name            99
color           red     ambilight 295
color           green   ambilight 296
color           blue    ambilight 297
hscan           54.84 58.06
vscan           95.24 100

[light]
name            100
color           red     ambilight 298
color           green   ambilight 299
color           blue    ambilight 300
hscan           51.61 54.84
vscan           95.24 100



###################################################################

Arduino-Sketch:

--------------------------------------------------------------------

// Arduino "bridge" code between host computer and WS2801-based digital
// RGB LED pixels (e.g. Adafruit product ID #322).  Intended for use
// with USB-native boards such as Teensy or Adafruit 32u4 Breakout;
// works on normal serial Arduinos, but throughput is severely limited.
// LED data is streamed, not buffered, making this suitable for larger
// installations (e.g. video wall, etc.) than could otherwise be held
// in the Arduino's limited RAM.

// Some effort is put into avoiding buffer underruns (where the output
// side becomes starved of data).  The WS2801 latch protocol, being
// delay-based, could be inadvertently triggered if the USB bus or CPU
// is swamped with other tasks.  This code buffers incoming serial data
// and introduces intentional pauses if there's a threat of the buffer
// draining prematurely.  The cost of this complexity is somewhat
// reduced throughput, the gain is that most visual glitches are
// avoided (though ultimately a function of the load on the USB bus and
// host CPU, and out of our control).

// LED data and clock lines are connected to the Arduino's SPI output.
// On traditional Arduino boards, SPI data out is digital pin 11 and
// clock is digital pin 13.  On both Teensy and the 32u4 Breakout,
// data out is pin B2, clock is B1.  LEDs should be externally
// powered -- trying to run any more than just a few off the Arduino's
// 5V line is generally a Bad Idea.  LED ground should also be
// connected to Arduino ground.

// --------------------------------------------------------------------
//   This file is part of Adalight.

//   Adalight is free software: you can redistribute it and/or modify
//   it under the terms of the GNU Lesser General Public License as
//   published by the Free Software Foundation, either version 3 of
//   the License, or (at your option) any later version.

//   Adalight is distributed in the hope that it will be useful,
//   but WITHOUT ANY WARRANTY; without even the implied warranty of
//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//   GNU Lesser General Public License for more details.

//   You should have received a copy of the GNU Lesser General Public
//   License along with Adalight.  If not, see
//   <http://www.gnu.org/licenses/>.
// --------------------------------------------------------------------

#include <SPI.h>

// LED pin for Adafruit 32u4 Breakout Board:
//#define LED_DDR  DDRE
//#define LED_PORT PORTE
//#define LED_PIN  _BV(PORTE6)
// LED pin for Teensy:
//#define LED_DDR  DDRD
//#define LED_PORT PORTD
//#define LED_PIN  _BV(PORTD6)
// LED pin for Arduino:
#define LED_DDR  DDRB
#define LED_PORT PORTB
#define LED_PIN  _BV(PORTB5)

// A 'magic word' (along with LED count & checksum) precedes each block
// of LED data; this assists the microcontroller in syncing up with the
// host-side software and properly issuing the latch (host I/O is
// likely buffered, making usleep() unreliable for latch).  You may see
// an initial glitchy frame or two until the two come into alignment.
// The magic word can be whatever sequence you like, but each character
// should be unique, and frequent pixel values like 0 and 255 are
// avoided -- fewer false positives.  The host software will need to
// generate a compatible header: immediately following the magic word
// are three bytes: a 16-bit count of the number of LEDs (high byte
// first) followed by a simple checksum value (high byte XOR low byte
// XOR 0x55).  LED data follows, 3 bytes per LED, in order R, G, B,
// where 0 = off and 255 = max brightness.

static const uint8_t magic[] = {'A','d','a'};
#define MAGICSIZE  sizeof(magic)
#define HEADERSIZE (MAGICSIZE + 3)

#define MODE_HEADER 0
#define MODE_HOLD   1
#define MODE_DATA   2

// If no serial data is received for a while, the LEDs are shut off
// automatically.  This avoids the annoying "stuck pixel" look when
// quitting LED display programs on the host computer.
static const unsigned long serialTimeout = 15000; // 15 seconds

void setup()
{
  // Dirty trick: the circular buffer for serial data is 256 bytes,
  // and the "in" and "out" indices are unsigned 8-bit types -- this
  // much simplifies the cases where in/out need to "wrap around" the
  // beginning/end of the buffer.  Otherwise there'd be a ton of bit-
  // masking and/or conditional code every time one of these indices
  // needs to change, slowing things down tremendously.
  uint8_t
    buffer[256],
    indexIn       = 0,
    indexOut      = 0,
    mode          = MODE_HEADER,
    hi, lo, chk, i, spiFlag;
  int16_t
    bytesBuffered = 0,
    hold          = 0,
    c;
  int32_t
    bytesRemaining;
  unsigned long
    startTime,
    lastByteTime,
    lastAckTime,
    t;

  LED_DDR  |=  LED_PIN; // Enable output for LED
  LED_PORT &= ~LED_PIN; // LED off

  Serial.begin(115200); // Teensy/32u4 disregards baud rate; is OK!

  SPI.begin();
  SPI.setBitOrder(MSBFIRST);
  SPI.setDataMode(SPI_MODE0);
  SPI.setClockDivider(SPI_CLOCK_DIV16); // 1 MHz max, else flicker

  // Issue test pattern to LEDs on startup.  This helps verify that
  // wiring between the Arduino and LEDs is correct.  Not knowing the
  // actual number of LEDs connected, this sets all of them (well, up
  // to the first 25,000, so as not to be TOO time consuming) to red,
  // green, blue, then off.  Once you're confident everything is working
  // end-to-end, it's OK to comment this out and reprogram the Arduino.
  uint8_t testcolor[] = { 0, 0, 0, 255, 0, 0 };
  for(char n=3; n>=0; n--) {
    for(c=0; c<25000; c++) {
      for(i=0; i<3; i++) {
        for(SPDR = testcolor[n + i]; !(SPSR & _BV(SPIF)); );
      }
    }
    delay(1); // One millisecond pause = latch
  }

  Serial.print("Ada\n"); // Send ACK string to host

  startTime    = micros();
  lastByteTime = lastAckTime = millis();

  // loop() is avoided as even that small bit of function overhead
  // has a measurable impact on this code's overall throughput.

  for(;;) {

    // Implementation is a simple finite-state machine.
    // Regardless of mode, check for serial input each time:
    t = millis();
    if((bytesBuffered < 256) && ((c = Serial.read()) >= 0)) {
      buffer[indexIn++] = c;
      bytesBuffered++;
      lastByteTime = lastAckTime = t; // Reset timeout counters
    } else {
      // No data received.  If this persists, send an ACK packet
      // to host once every second to alert it to our presence.
      if((t - lastAckTime) > 1000) {
        Serial.print("Ada\n"); // Send ACK string to host
        lastAckTime = t; // Reset counter
      }
      // If no data received for an extended time, turn off all LEDs.
      if((t - lastByteTime) > serialTimeout) {
        for(c=0; c<32767; c++) {
          for(SPDR=0; !(SPSR & _BV(SPIF)); );
        }
        delay(1); // One millisecond pause = latch
        lastByteTime = t; // Reset counter
      }
    }

    switch(mode) {

     case MODE_HEADER:

      // In header-seeking mode.  Is there enough data to check?
      if(bytesBuffered >= HEADERSIZE) {
        // Indeed.  Check for a 'magic word' match.
        for(i=0; (i<MAGICSIZE) && (buffer[indexOut++] == magic[i++]););
        if(i == MAGICSIZE) {
          // Magic word matches.  Now how about the checksum?
          hi  = buffer[indexOut++];
          lo  = buffer[indexOut++];
          chk = buffer[indexOut++];
          if(chk == (hi ^ lo ^ 0x55)) {
            // Checksum looks valid.  Get 16-bit LED count, add 1
            // (# LEDs is always > 0) and multiply by 3 for R,G,B.
            bytesRemaining = 3L * (256L * (long)hi + (long)lo + 1L);
            bytesBuffered -= 3;
            spiFlag        = 0;         // No data out yet
            mode           = MODE_HOLD; // Proceed to latch wait mode
          } else {
            // Checksum didn't match; search resumes after magic word.
            indexOut  -= 3; // Rewind
          }
        } // else no header match.  Resume at first mismatched byte.
        bytesBuffered -= i;
      }
      break;

     case MODE_HOLD:

      // Ostensibly "waiting for the latch from the prior frame
      // to complete" mode, but may also revert to this mode when
      // underrun prevention necessitates a delay.

      if((micros() - startTime) < hold) break; // Still holding; keep buffering

      // Latch/delay complete.  Advance to data-issuing mode...
      LED_PORT &= ~LED_PIN;  // LED off
      mode      = MODE_DATA; // ...and fall through (no break):

     case MODE_DATA:

      while(spiFlag && !(SPSR & _BV(SPIF))); // Wait for prior byte
      if(bytesRemaining > 0) {
        if(bytesBuffered > 0) {
          SPDR = buffer[indexOut++];   // Issue next byte
          bytesBuffered--;
          bytesRemaining--;
          spiFlag = 1;
        }
        // If serial buffer is threatening to underrun, start
        // introducing progressively longer pauses to allow more
        // data to arrive (up to a point).
        if((bytesBuffered < 32) && (bytesRemaining > bytesBuffered)) {
          startTime = micros();
          hold      = 100 + (32 - bytesBuffered) * 10;
          mode      = MODE_HOLD;
    }
      } else {
        // End of data -- issue latch:
        startTime  = micros();
        hold       = 1000;        // Latch duration = 1000 uS
        LED_PORT  |= LED_PIN;     // LED on
        mode       = MODE_HEADER; // Begin next header search
      }
    } // end switch
  } // end for(;;)
}

void loop()
{
  // Not used.  See note in setup() function.
}


###############################################################
 Blinkende LEDS (Lösung by "wicht" aus OE-Forum)
http://openelec.tv/forum/85-boblightd/2679-boblight?start=300

----------------------------------------------------------------------------------------------------------
login via ssh
cd /
nano /storage/.xbmc/addons/service.multimedia.boblightd/bin/boblightd.start
----------------------------------------------------------------------------------------------------------

Edit the file
/storage/.xbmc/addons/service.multimedia.boblightd/bin/boblightd.start

On the bottom of the file there is a line that starts with "boblight-X11". This is the application that sends the stuff on the screen to boblightd. I don't know the original content of the line, but my line looks like
boblight-X11 -x -i 0.3 -o speed=50.0 >> $LOG_FILE 2>&1

I think the "-x" is the thing that removes the flickering. I read in the boblight sources that "-x" is also slower than the normal approach, but I cannot tell. Either my HTPC is too fast or the difference is not noticeable.

Be careful: If the boblight-Addon get's updated, your change will be reverted. So copy it to another location as a back up in case you need to restore it.

Another thing: Of course this only works if you are using boblight-X11. Using the other solution (that sends only XBMC's graphic output info to boblightd) this will not work.