1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

X86/64 Intel Based PC - LibreElec - Arduino - WS2812B LEDs Setup

Discussion in 'Hardware Support' started by George, 20 September 2018.

  1. George

    George New Member

    Messages:
    2
    Hardware:
    32/64bit, +Arduino
    Hi All

    I set my ambilight system up a while ago using Boblight, Now I am looking to set it up again using Hyperion.

    My current setup is;

    Intel PC running LibreElec --> Arduino --> WS2812B Led strip

    I started following this guide https://hyperion-project.org/threads/diy-amblight-project-guide-hyperion-ws2801-ws2812b-apa102.8/ and uploaded the arduino code and the lights correctly flash red-green-blue. Then I got a bit confused, can i just plug the arduino directly into the USB port of my PC running LibreElec or does it need to go through a raspberry pi and then to the arduino.

    Intel PC LibreElec -> RPi -> Arduino -> WS2812B Led Strip

    I tried installing Hyperion onto my LibreElec using Hypericon and I can get as far as to change the colour of the LEDs live using the Color wheel on the SSH tab but it wont grab the image on the screen.

    Any help would be greatly appreciated.

    Thanks

    George
     
  2. George

    George New Member

    Messages:
    2
    Hardware:
    32/64bit, +Arduino
    So after a lot of reading on the internet it seems it may be possible to connect the arduino to my HTPC through USB. As far as I can tell I should be using the internal frame grabber. When I power on Kodi the arduino test light sequence starts followed by the boot effect. I am able to change the colour using the colour wheel in HyperCon SSH and also the iPhone app.

    My Arduino Sketch

    Code:
    #include "FastLED.h"
    
    #define ANALOG_MODE_AVERAGE  0
    #define ANALOG_MODE_LAST_LED 1
    
    /**************************************
       S E T U P
       set following values to your needs
    **************************************/
    
    #define INITIAL_LED_TEST_ENABLED true
    #define INITIAL_LED_TEST_BRIGHTNESS 255  // 0..255
    #define INITIAL_LED_TEST_TIME_MS 500  // 10..
    
    // Number of leds in your strip. set to "1" and ANALOG_OUTPUT_ENABLED to "true" to activate analog only
    // As of 26/1/2017:
    // 582 leaves ZERO bytes free and this
    // 410 is ok
    // tested with 500 leds and is fine (despite the warning)
    #define MAX_LEDS 110
    
    // type of your led controller, possible values, see below
    #define LED_TYPE WS2812B
    
    // 3 wire (pwm): NEOPIXEL BTM1829 TM1812 TM1809 TM1804 TM1803 UCS1903 UCS1903B UCS1904 UCS2903 WS2812 WS2852
    //               S2812B SK6812 SK6822 APA106 PL9823 WS2811 WS2813 APA104 WS2811_40 GW6205 GW6205_40 LPD1886 LPD1886_8BIT
    // 4 wire (spi): LPD8806 WS2801 WS2803 SM16716 P9813 APA102 SK9822 DOTSTAR
    
    // For 3 wire led stripes line Neopixel/Ws2812, which have a data line, ground, and power, you just need to define DATA_PIN.
    // For led chipsets that are SPI based (four wires - data, clock, ground, and power), both defines DATA_PIN and CLOCK_PIN are needed
    
    // DATA_PIN, or DATA_PIN, CLOCK_PIN
    #define LED_PINS 13      // 3 wire leds
    //#define LED_PINS 6, 13  // 4 wire leds
    
    #define COLOR_ORDER GRB  // colororder of the stripe, set RGB in hyperion
    
    #define OFF_TIMEOUT 15000    // ms to switch off after no data was received, set 0 to deactivate
    
    // analog rgb uni color led stripe - using of hyperion smoothing is recommended
    // ATTENTION  this pin config is default for atmega328 based arduinos, others might work to
    //            if you have flickering analog leds this might be caused by unsynced pwm signals
    //            try other pins is more or less the only thing that helps
    #define ANALOG_OUTPUT_ENABLED false
    #define ANALOG_MODE           ANALOG_MODE_LAST_LED  // use ANALOG_MODE_AVERAGE or ANALOG_MODE_LAST_LED
    #define ANALOG_GROUND_PIN     8                     // additional ground pin to make wiring a bit easier
    #define ANALOG_RED_PIN        9
    #define ANALOG_GREEN_PIN      10
    #define ANALOG_BLUE_PIN       11
    
    // overall color adjustments
    #define ANALOG_BRIGHTNESS_RED   255              // maximum brightness for analog 0-255
    #define ANALOG_BRIGHTNESS_GREEN 255              // maximum brightness for analog 0-255
    #define ANALOG_BRIGHTNESS_BLUE  255              // maximum brightness for analog 0-255
    
    #define BRIGHTNESS 255                      // maximum brightness 0-255
    #define DITHER_MODE BINARY_DITHER           // BINARY_DITHER or DISABLE_DITHER
    #define COLOR_TEMPERATURE CRGB(255,255,255) // RGB value describing the color temperature
    #define COLOR_CORRECTION  TypicalLEDStrip   // predefined fastled color correction
    //#define COLOR_CORRECTION  CRGB(255,255,255) // or RGB value describing the color correction
    
    // Baudrate, higher rate allows faster refresh rate and more LEDs
    //#define serialRate 460800      // use 115200 for ftdi based boards
    #define serialRate 115200      // use 115200 for ftdi based boards
    //#define serialRate 500000         // use 115200 for ftdi based boards
    
    
    /**************************************
       A D A L I G H T   C O D E
       no user changes needed
    **************************************/
    
    // 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;
    
    unsigned long endTime;
    
    // Define the array of leds
    CRGB leds[MAX_LEDS];
    
    // set rgb to analog led stripe
    void showAnalogRGB(const CRGB& led) {
      if (ANALOG_OUTPUT_ENABLED) {
        byte r = map(led.r, 0,255,0,ANALOG_BRIGHTNESS_RED);
        byte g = map(led.g, 0,255,0,ANALOG_BRIGHTNESS_GREEN);
        byte b = map(led.b, 0,255,0,ANALOG_BRIGHTNESS_BLUE);
        analogWrite(ANALOG_RED_PIN  , r);
        analogWrite(ANALOG_GREEN_PIN, g);
        analogWrite(ANALOG_BLUE_PIN , b);
      }
    }
    
    // set color to all leds
    void showColor(const CRGB& led) {
      #if MAX_LEDS > 1 || ANALOG_OUTPUT_ENABLED == false
      LEDS.showColor(led);
      #endif
      showAnalogRGB(led);
    }
    
    // switch of digital and analog leds
    void switchOff() {
      #if MAX_LEDS > 1 || ANALOG_OUTPUT_ENABLED == false
      memset(leds, 0, MAX_LEDS * sizeof(struct CRGB));
      FastLED.show();
      #endif
      showAnalogRGB(leds[0]);
    }
    
    // function to check if serial data is available
    // if timeout occured leds switch of, if configured
    bool checkIncommingData() {
      boolean dataAvailable = true;
      while (!Serial.available()) {
        if ( OFF_TIMEOUT > 0 && endTime < millis()) {
          switchOff();
          dataAvailable = false;
          endTime = millis() + OFF_TIMEOUT;
        }
      }
    
      return dataAvailable;
    }
    
    // main function that setups and runs the code
    void setup() {
      Serial.begin(serialRate);
    
      // analog output
      if (ANALOG_OUTPUT_ENABLED) {
        // additional ground pin to make wiring a bit easier
        pinMode(ANALOG_GROUND_PIN, OUTPUT);
        digitalWrite(ANALOG_GROUND_PIN, LOW);
        pinMode(ANALOG_BLUE_PIN , OUTPUT);
        pinMode(ANALOG_RED_PIN  , OUTPUT);
        pinMode(ANALOG_GREEN_PIN, OUTPUT);
      }
    
      int ledCount = MAX_LEDS;
      if (ANALOG_MODE == ANALOG_MODE_LAST_LED) {
        ledCount--;
      }
    
      #if MAX_LEDS > 1 || ANALOG_OUTPUT_ENABLED == false
        FastLED.addLeds<LED_TYPE, LED_PINS, COLOR_ORDER>(leds, ledCount);
      #endif
     
      // color adjustments
      FastLED.setBrightness ( BRIGHTNESS );
      FastLED.setTemperature( COLOR_TEMPERATURE );
      FastLED.setCorrection ( COLOR_CORRECTION );
      FastLED.setDither     ( DITHER_MODE );
    
      // initial RGB flash
      #if INITIAL_LED_TEST_ENABLED == true
      for (int v=0;v<INITIAL_LED_TEST_BRIGHTNESS;v++)
      {
        showColor(CRGB(v,v,v)); 
        delay(INITIAL_LED_TEST_TIME_MS/2/INITIAL_LED_TEST_BRIGHTNESS);
      }
      //for (int v=0;v<INITIAL_LED_TEST_BRIGHTNESS;v++)
      //{
       // showColor(CRGB(v,v,v)); 
       // delay(INITIAL_LED_TEST_TIME_MS/2/INITIAL_LED_TEST_BRIGHTNESS);
    // }
      #endif
      showColor(CRGB(0, 0, 0));
    
      Serial.print("Ada\n"); // Send "Magic Word" string to host
    
    
      boolean transmissionSuccess;
      unsigned long sum_r, sum_g, sum_b;
    
      // loop() is avoided as even that small bit of function overhead
      // has a measurable impact on this code's overall throughput.
      for(;;) {
        // wait for first byte of Magic Word
        for (i = 0; i < sizeof prefix; ++i) {
          // If next byte is not in Magic Word, the start over
          if (!checkIncommingData() || prefix[i] != Serial.read()) {
            i = 0;
          }
        }
    
        // Hi, Lo, Checksum
        if (!checkIncommingData()) continue;
        hi = Serial.read();
        if (!checkIncommingData()) continue;
        lo = Serial.read();
        if (!checkIncommingData()) continue;
        chk = Serial.read();
    
        // if checksum does not match go back to wait
        if (chk != (hi ^ lo ^ 0x55)) continue;
    
        memset(leds, 0, MAX_LEDS * sizeof(struct CRGB));
        transmissionSuccess = true;
        sum_r = 0;
        sum_g = 0;
        sum_b = 0;
    
        int num_leds = min ( MAX_LEDS, (hi<<8) + lo + 1 );
    
        // read the transmission data and set LED values
        for (int idx = 0; idx < num_leds; idx++) {
          byte r, g, b;
          if (!checkIncommingData()) {
            transmissionSuccess = false;
            break;
          }
          r = Serial.read();
          if (!checkIncommingData()) {
            transmissionSuccess = false;
            break;
          }
          g = Serial.read();
          if (!checkIncommingData()) {
            transmissionSuccess = false;
            break;
          }
          b = Serial.read();
          leds[idx].r = r;
          leds[idx].g = g;
          leds[idx].b = b;
          #if ANALOG_OUTPUT_ENABLED == true && ANALOG_MODE == ANALOG_MODE_AVERAGE
              sum_r += r;
              sum_g += g;
              sum_b += b;
          #endif
        }
    
        // shows new values
        if (transmissionSuccess) {
          endTime = millis() + OFF_TIMEOUT;
          #if MAX_LEDS > 1 || ANALOG_OUTPUT_ENABLED == false
          FastLED.show();
          #endif
    
          #if ANALOG_OUTPUT_ENABLED == true
            #if ANALOG_MODE == ANALOG_MODE_LAST_LED
              showAnalogRGB(leds[MAX_LEDS-1]);
            #else
              showAnalogRGB(CRGB(sum_r/MAX_LEDS, sum_g/MAX_LEDS, sum_b/MAX_LEDS));
             #endif
          #endif
        }
      }
    } // end of setup
    
    void loop() {
      // Not used. See note in setup() function.
    }
    My JSON file

    Code:
    // Automatically generated configuration file for Hyperion ambilight daemon
    // Notice: All values are explained with comments at our wiki: wiki.hyperion-project.org (config area)
    // Generated by: HyperCon (The Hyperion deamon configuration file builder)
    // Created with HyperCon V1.03.3 (22.10.2017)
    
    {
        // DEVICE CONFIGURATION
        "device" :
        {
            "name"       : "kodi",
            "type"       : "adalight",
            "output"     : "/dev/ttyACM0",
            "rate"     : 115200,
            "delayAfterConnect"     : 0,
            "colorOrder" : "rgb"
        },
    
        // COLOR CALIBRATION CONFIG
        "color" :
        {
            "channelAdjustment" :
            [
                {
                    "id"   : "default",
                    "leds" : "*",
                    "pureRed" :
                    {
                        "redChannel"        : 255,
                        "greenChannel"        : 0,
                        "blueChannel"        : 0
                    },
                    "pureGreen" :
                    {
                        "redChannel"        : 0,
                        "greenChannel"        : 255,
                        "blueChannel"        : 0
                    },
                    "pureBlue" :
                    {
                        "redChannel"        : 0,
                        "greenChannel"        : 0,
                        "blueChannel"        : 255
                    }
                }
            ],
            "temperature" :
            [
                {
                    "id"   : "default",
                    "leds" : "*",
                    "correctionValues" :
                    {
                        "red"     : 255,
                        "green"    : 255,
                        "blue"     : 255
                    }
                }
            ],
            "transform" :
            [
                {
                    "id"   : "default",
                    "leds" : "*",
                    "hsl" :
                    {
                        "saturationGain"    : 1.0000,
                        "luminanceGain"        : 1.0000,
                        "luminanceMinimum"        : 0.0000
                    },
                    "red" :
                    {
                        "threshold"     : 0.0000,
                        "gamma"         : 2.5000
                    },
                    "green" :
                    {
                        "threshold"     : 0.0000,
                        "gamma"         : 2.5000
                    },
                    "blue" :
                    {
                        "threshold"     : 0.0000,
                        "gamma"         : 2.5000
                    }
                }
            ],
        // SMOOTHING CONFIG
            "smoothing" :
            {
                "type"            : "linear",
                "time_ms"         : 200,
                "updateFrequency" : 20.0000,
                "updateDelay"     : 0
            }
        },
    
        // NO V4L2 GRABBER CONFIG
        // FRAME GRABBER CONFIG
        "framegrabber" :
        {
            "width" : 64,
            "height" : 64,
            "frequency_Hz" : 10.0,
            "priority" : 890
        },
    
        // KODI CHECK CONFIG
        "xbmcVideoChecker" :
        {
            "xbmcAddress" : "127.0.0.1",
            "xbmcTcpPort" : 9090,
            "grabVideo" : true,
            "grabPictures" : true,
            "grabAudio" : true,
            "grabMenu" : true,
            "grabPause" : true,
            "grabScreensaver" : true,
            "enable3DDetection" : true
        },
    
        // BOOTEFFECT CONFIG
        "bootsequence" :
        {
            "color" : [0,0,0],
            "effect" : "Rainbow swirl",
            "duration_ms" : 5000,
            "priority" : 900
        },
    
        // JSON SERVER CONFIG
        "jsonServer" :
        {
            "port" : 19444
        },
    
        // PROTO SERVER CONFIG
        "protoServer" :
        {
            "port" : 19445
        },
    
        // EFFECT PATH
        "effects" :
        {
            "paths" :
            [
                "/storage/hyperion/effects",
                "/usr/share/hyperion/effects"
            ]
        },
    
        // NO BLACKBORDER CONFIG
        // NO BOBLIGHT SERVER CONFIG
        // NO JSON/PROTO FORWARD CONFIG
    
        // LED CONFIGURATION
        "leds" :
        [
            {
                "index" : 0,
                "hscan" : { "minimum" : 0.0000, "maximum" : 0.0500 },
                "vscan" : { "minimum" : 0.7895, "maximum" : 0.8421 }
            },
            {
                "index" : 1,
                "hscan" : { "minimum" : 0.0000, "maximum" : 0.0500 },
                "vscan" : { "minimum" : 0.7368, "maximum" : 0.7895 }
            },
            {
                "index" : 2,
                "hscan" : { "minimum" : 0.0000, "maximum" : 0.0500 },
                "vscan" : { "minimum" : 0.6842, "maximum" : 0.7368 }
            },
            {
                "index" : 3,
                "hscan" : { "minimum" : 0.0000, "maximum" : 0.0500 },
                "vscan" : { "minimum" : 0.6316, "maximum" : 0.6842 }
            },
            {
                "index" : 4,
                "hscan" : { "minimum" : 0.0000, "maximum" : 0.0500 },
                "vscan" : { "minimum" : 0.5789, "maximum" : 0.6316 }
            },
            {
                "index" : 5,
                "hscan" : { "minimum" : 0.0000, "maximum" : 0.0500 },
                "vscan" : { "minimum" : 0.5263, "maximum" : 0.5789 }
            },
            {
                "index" : 6,
                "hscan" : { "minimum" : 0.0000, "maximum" : 0.0500 },
                "vscan" : { "minimum" : 0.4737, "maximum" : 0.5263 }
            },
            {
                "index" : 7,
                "hscan" : { "minimum" : 0.0000, "maximum" : 0.0500 },
                "vscan" : { "minimum" : 0.4211, "maximum" : 0.4737 }
            },
            {
                "index" : 8,
                "hscan" : { "minimum" : 0.0000, "maximum" : 0.0500 },
                "vscan" : { "minimum" : 0.3684, "maximum" : 0.4211 }
            },
            {
                "index" : 9,
                "hscan" : { "minimum" : 0.0000, "maximum" : 0.0500 },
                "vscan" : { "minimum" : 0.3158, "maximum" : 0.3684 }
            },
            {
                "index" : 10,
                "hscan" : { "minimum" : 0.0000, "maximum" : 0.0500 },
                "vscan" : { "minimum" : 0.2632, "maximum" : 0.3158 }
            },
            {
                "index" : 11,
                "hscan" : { "minimum" : 0.0000, "maximum" : 0.0500 },
                "vscan" : { "minimum" : 0.2105, "maximum" : 0.2632 }
            },
            {
                "index" : 12,
                "hscan" : { "minimum" : 0.0000, "maximum" : 0.0500 },
                "vscan" : { "minimum" : 0.1579, "maximum" : 0.2105 }
            },
            {
                "index" : 13,
                "hscan" : { "minimum" : 0.0000, "maximum" : 0.0500 },
                "vscan" : { "minimum" : 0.1053, "maximum" : 0.1579 }
            },
            {
                "index" : 14,
                "hscan" : { "minimum" : 0.0000, "maximum" : 0.0500 },
                "vscan" : { "minimum" : 0.0526, "maximum" : 0.1053 }
            },
            {
                "index" : 15,
                "hscan" : { "minimum" : 0.0000, "maximum" : 0.0500 },
                "vscan" : { "minimum" : 0.0000, "maximum" : 0.0526 }
            },
            {
                "index" : 16,
                "hscan" : { "minimum" : 0.0000, "maximum" : 0.0278 },
                "vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
            },
            {
                "index" : 17,
                "hscan" : { "minimum" : 0.0278, "maximum" : 0.0556 },
                "vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
            },
            {
                "index" : 18,
                "hscan" : { "minimum" : 0.0556, "maximum" : 0.0833 },
                "vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
            },
            {
                "index" : 19,
                "hscan" : { "minimum" : 0.0833, "maximum" : 0.1111 },
                "vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
            },
            {
                "index" : 20,
                "hscan" : { "minimum" : 0.1111, "maximum" : 0.1389 },
                "vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
            },
            {
                "index" : 21,
                "hscan" : { "minimum" : 0.1389, "maximum" : 0.1667 },
                "vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
            },
            {
                "index" : 22,
                "hscan" : { "minimum" : 0.1667, "maximum" : 0.1944 },
                "vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
            },
            {
                "index" : 23,
                "hscan" : { "minimum" : 0.1944, "maximum" : 0.2222 },
                "vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
            },
            {
                "index" : 24,
                "hscan" : { "minimum" : 0.2222, "maximum" : 0.2500 },
                "vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
            },
            {
                "index" : 25,
                "hscan" : { "minimum" : 0.2500, "maximum" : 0.2778 },
                "vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
            },
            {
                "index" : 26,
                "hscan" : { "minimum" : 0.2778, "maximum" : 0.3056 },
                "vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
            },
            {
                "index" : 27,
                "hscan" : { "minimum" : 0.3056, "maximum" : 0.3333 },
                "vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
            },
            {
                "index" : 28,
                "hscan" : { "minimum" : 0.3333, "maximum" : 0.3611 },
                "vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
            },
            {
                "index" : 29,
                "hscan" : { "minimum" : 0.3611, "maximum" : 0.3889 },
                "vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
            },
            {
                "index" : 30,
                "hscan" : { "minimum" : 0.3889, "maximum" : 0.4167 },
                "vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
            },
            {
                "index" : 31,
                "hscan" : { "minimum" : 0.4167, "maximum" : 0.4444 },
                "vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
            },
            {
                "index" : 32,
                "hscan" : { "minimum" : 0.4444, "maximum" : 0.4722 },
                "vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
            },
            {
                "index" : 33,
                "hscan" : { "minimum" : 0.4722, "maximum" : 0.5000 },
                "vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
            },
            {
                "index" : 34,
                "hscan" : { "minimum" : 0.5000, "maximum" : 0.5278 },
                "vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
            },
            {
                "index" : 35,
                "hscan" : { "minimum" : 0.5278, "maximum" : 0.5556 },
                "vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
            },
            {
                "index" : 36,
                "hscan" : { "minimum" : 0.5556, "maximum" : 0.5833 },
                "vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
            },
            {
                "index" : 37,
                "hscan" : { "minimum" : 0.5833, "maximum" : 0.6111 },
                "vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
            },
            {
                "index" : 38,
                "hscan" : { "minimum" : 0.6111, "maximum" : 0.6389 },
                "vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
            },
            {
                "index" : 39,
                "hscan" : { "minimum" : 0.6389, "maximum" : 0.6667 },
                "vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
            },
            {
                "index" : 40,
                "hscan" : { "minimum" : 0.6667, "maximum" : 0.6944 },
                "vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
            },
            {
                "index" : 41,
                "hscan" : { "minimum" : 0.6944, "maximum" : 0.7222 },
                "vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
            },
            {
                "index" : 42,
                "hscan" : { "minimum" : 0.7222, "maximum" : 0.7500 },
                "vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
            },
            {
                "index" : 43,
                "hscan" : { "minimum" : 0.7500, "maximum" : 0.7778 },
                "vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
            },
            {
                "index" : 44,
                "hscan" : { "minimum" : 0.7778, "maximum" : 0.8056 },
                "vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
            },
            {
                "index" : 45,
                "hscan" : { "minimum" : 0.8056, "maximum" : 0.8333 },
                "vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
            },
            {
                "index" : 46,
                "hscan" : { "minimum" : 0.8333, "maximum" : 0.8611 },
                "vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
            },
            {
                "index" : 47,
                "hscan" : { "minimum" : 0.8611, "maximum" : 0.8889 },
                "vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
            },
            {
                "index" : 48,
                "hscan" : { "minimum" : 0.8889, "maximum" : 0.9167 },
                "vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
            },
            {
                "index" : 49,
                "hscan" : { "minimum" : 0.9167, "maximum" : 0.9444 },
                "vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
            },
            {
                "index" : 50,
                "hscan" : { "minimum" : 0.9444, "maximum" : 0.9722 },
                "vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
            },
            {
                "index" : 51,
                "hscan" : { "minimum" : 0.9722, "maximum" : 1.0000 },
                "vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
            },
            {
                "index" : 52,
                "hscan" : { "minimum" : 0.9500, "maximum" : 1.0000 },
                "vscan" : { "minimum" : 0.0000, "maximum" : 0.0526 }
            },
            {
                "index" : 53,
                "hscan" : { "minimum" : 0.9500, "maximum" : 1.0000 },
                "vscan" : { "minimum" : 0.0526, "maximum" : 0.1053 }
            },
            {
                "index" : 54,
                "hscan" : { "minimum" : 0.9500, "maximum" : 1.0000 },
                "vscan" : { "minimum" : 0.1053, "maximum" : 0.1579 }
            },
            {
                "index" : 55,
                "hscan" : { "minimum" : 0.9500, "maximum" : 1.0000 },
                "vscan" : { "minimum" : 0.1579, "maximum" : 0.2105 }
            },
            {
                "index" : 56,
                "hscan" : { "minimum" : 0.9500, "maximum" : 1.0000 },
                "vscan" : { "minimum" : 0.2105, "maximum" : 0.2632 }
            },
            {
                "index" : 57,
                "hscan" : { "minimum" : 0.9500, "maximum" : 1.0000 },
                "vscan" : { "minimum" : 0.2632, "maximum" : 0.3158 }
            },
            {
                "index" : 58,
                "hscan" : { "minimum" : 0.9500, "maximum" : 1.0000 },
                "vscan" : { "minimum" : 0.3158, "maximum" : 0.3684 }
            },
            {
                "index" : 59,
                "hscan" : { "minimum" : 0.9500, "maximum" : 1.0000 },
                "vscan" : { "minimum" : 0.3684, "maximum" : 0.4211 }
            },
            {
                "index" : 60,
                "hscan" : { "minimum" : 0.9500, "maximum" : 1.0000 },
                "vscan" : { "minimum" : 0.4211, "maximum" : 0.4737 }
            },
            {
                "index" : 61,
                "hscan" : { "minimum" : 0.9500, "maximum" : 1.0000 },
                "vscan" : { "minimum" : 0.4737, "maximum" : 0.5263 }
            },
            {
                "index" : 62,
                "hscan" : { "minimum" : 0.9500, "maximum" : 1.0000 },
                "vscan" : { "minimum" : 0.5263, "maximum" : 0.5789 }
            },
            {
                "index" : 63,
                "hscan" : { "minimum" : 0.9500, "maximum" : 1.0000 },
                "vscan" : { "minimum" : 0.5789, "maximum" : 0.6316 }
            },
            {
                "index" : 64,
                "hscan" : { "minimum" : 0.9500, "maximum" : 1.0000 },
                "vscan" : { "minimum" : 0.6316, "maximum" : 0.6842 }
            },
            {
                "index" : 65,
                "hscan" : { "minimum" : 0.9500, "maximum" : 1.0000 },
                "vscan" : { "minimum" : 0.6842, "maximum" : 0.7368 }
            },
            {
                "index" : 66,
                "hscan" : { "minimum" : 0.9500, "maximum" : 1.0000 },
                "vscan" : { "minimum" : 0.7368, "maximum" : 0.7895 }
            },
            {
                "index" : 67,
                "hscan" : { "minimum" : 0.9500, "maximum" : 1.0000 },
                "vscan" : { "minimum" : 0.7895, "maximum" : 0.8421 }
            },
            {
                "index" : 68,
                "hscan" : { "minimum" : 0.9500, "maximum" : 1.0000 },
                "vscan" : { "minimum" : 0.8421, "maximum" : 0.8947 }
            },
            {
                "index" : 69,
                "hscan" : { "minimum" : 0.9500, "maximum" : 1.0000 },
                "vscan" : { "minimum" : 0.8947, "maximum" : 0.9474 }
            },
            {
                "index" : 70,
                "hscan" : { "minimum" : 0.9500, "maximum" : 1.0000 },
                "vscan" : { "minimum" : 0.9474, "maximum" : 1.0000 }
            },
            {
                "index" : 71,
                "hscan" : { "minimum" : 0.9722, "maximum" : 1.0000 },
                "vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 }
            },
            {
                "index" : 72,
                "hscan" : { "minimum" : 0.9444, "maximum" : 0.9722 },
                "vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 }
            },
            {
                "index" : 73,
                "hscan" : { "minimum" : 0.9167, "maximum" : 0.9444 },
                "vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 }
            },
            {
                "index" : 74,
                "hscan" : { "minimum" : 0.8889, "maximum" : 0.9167 },
                "vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 }
            },
            {
                "index" : 75,
                "hscan" : { "minimum" : 0.8611, "maximum" : 0.8889 },
                "vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 }
            },
            {
                "index" : 76,
                "hscan" : { "minimum" : 0.8333, "maximum" : 0.8611 },
                "vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 }
            },
            {
                "index" : 77,
                "hscan" : { "minimum" : 0.8056, "maximum" : 0.8333 },
                "vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 }
            },
            {
                "index" : 78,
                "hscan" : { "minimum" : 0.7778, "maximum" : 0.8056 },
                "vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 }
            },
            {
                "index" : 79,
                "hscan" : { "minimum" : 0.7500, "maximum" : 0.7778 },
                "vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 }
            },
            {
                "index" : 80,
                "hscan" : { "minimum" : 0.7222, "maximum" : 0.7500 },
                "vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 }
            },
            {
                "index" : 81,
                "hscan" : { "minimum" : 0.6944, "maximum" : 0.7222 },
                "vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 }
            },
            {
                "index" : 82,
                "hscan" : { "minimum" : 0.6667, "maximum" : 0.6944 },
                "vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 }
            },
            {
                "index" : 83,
                "hscan" : { "minimum" : 0.6389, "maximum" : 0.6667 },
                "vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 }
            },
            {
                "index" : 84,
                "hscan" : { "minimum" : 0.6111, "maximum" : 0.6389 },
                "vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 }
            },
            {
                "index" : 85,
                "hscan" : { "minimum" : 0.5833, "maximum" : 0.6111 },
                "vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 }
            },
            {
                "index" : 86,
                "hscan" : { "minimum" : 0.5556, "maximum" : 0.5833 },
                "vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 }
            },
            {
                "index" : 87,
                "hscan" : { "minimum" : 0.5278, "maximum" : 0.5556 },
                "vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 }
            },
            {
                "index" : 88,
                "hscan" : { "minimum" : 0.5000, "maximum" : 0.5278 },
                "vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 }
            },
            {
                "index" : 89,
                "hscan" : { "minimum" : 0.4722, "maximum" : 0.5000 },
                "vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 }
            },
            {
                "index" : 90,
                "hscan" : { "minimum" : 0.4444, "maximum" : 0.4722 },
                "vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 }
            },
            {
                "index" : 91,
                "hscan" : { "minimum" : 0.4167, "maximum" : 0.4444 },
                "vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 }
            },
            {
                "index" : 92,
                "hscan" : { "minimum" : 0.3889, "maximum" : 0.4167 },
                "vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 }
            },
            {
                "index" : 93,
                "hscan" : { "minimum" : 0.3611, "maximum" : 0.3889 },
                "vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 }
            },
            {
                "index" : 94,
                "hscan" : { "minimum" : 0.3333, "maximum" : 0.3611 },
                "vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 }
            },
            {
                "index" : 95,
                "hscan" : { "minimum" : 0.3056, "maximum" : 0.3333 },
                "vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 }
            },
            {
                "index" : 96,
                "hscan" : { "minimum" : 0.2778, "maximum" : 0.3056 },
                "vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 }
            },
            {
                "index" : 97,
                "hscan" : { "minimum" : 0.2500, "maximum" : 0.2778 },
                "vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 }
            },
            {
                "index" : 98,
                "hscan" : { "minimum" : 0.2222, "maximum" : 0.2500 },
                "vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 }
            },
            {
                "index" : 99,
                "hscan" : { "minimum" : 0.1944, "maximum" : 0.2222 },
                "vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 }
            },
            {
                "index" : 100,
                "hscan" : { "minimum" : 0.1667, "maximum" : 0.1944 },
                "vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 }
            },
            {
                "index" : 101,
                "hscan" : { "minimum" : 0.1389, "maximum" : 0.1667 },
                "vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 }
            },
            {
                "index" : 102,
                "hscan" : { "minimum" : 0.1111, "maximum" : 0.1389 },
                "vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 }
            },
            {
                "index" : 103,
                "hscan" : { "minimum" : 0.0833, "maximum" : 0.1111 },
                "vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 }
            },
            {
                "index" : 104,
                "hscan" : { "minimum" : 0.0556, "maximum" : 0.0833 },
                "vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 }
            },
            {
                "index" : 105,
                "hscan" : { "minimum" : 0.0278, "maximum" : 0.0556 },
                "vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 }
            },
            {
                "index" : 106,
                "hscan" : { "minimum" : 0.0000, "maximum" : 0.0278 },
                "vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 }
            },
            {
                "index" : 107,
                "hscan" : { "minimum" : 0.0000, "maximum" : 0.0500 },
                "vscan" : { "minimum" : 0.9474, "maximum" : 1.0000 }
            },
            {
                "index" : 108,
                "hscan" : { "minimum" : 0.0000, "maximum" : 0.0500 },
                "vscan" : { "minimum" : 0.8947, "maximum" : 0.9474 }
            },
            {
                "index" : 109,
                "hscan" : { "minimum" : 0.0000, "maximum" : 0.0500 },
                "vscan" : { "minimum" : 0.8421, "maximum" : 0.8947 }
            }
        ],
    
        "endOfJson" : "endOfJson"
    }
    
    And my Log File

    Code:
    ssh in:     hyperion-x11:
    ssh in:         version   : V1.03.4 (brindosch-c750c41/dc6a602-1522918225
    ssh in:         build time: Apr  5 2018 01:56:52
    ssh in:     PROTOCONNECTION INFO: Connecting to Hyperion: 127.0.0.1:19445
    ssh in:     X11GRABBER INFO: Update of screen resolution: [0x0] => [4096x2160]
    ssh in:     X11GRABBER INFO: Using XRender for grabbing
    ssh in:     PROTOCONNECTION INFO: Connected to Hyperion: 127.0.0.1:19445
    ssh in:     lt' => [0; 109]
    ssh in:     LEDDEVICE INFO: configuration:
    ssh in:     {
    ssh in:         "colorOrder" :PROTOCONNECTION INFO: Connected to Hyperion: 127.0.0.1:19445
    ssh in:      : "/dev/ttyACM0",
    ssh in:         "rate" : 115200,
    ssh in:         "type" : "adalight"
    ssh in:     }
    ssh in:     Opening UART: /dev/ttyACM0
    ssh in:     INFO: Creating linear smoothing
    ssh in:     HPROTOCONNECTION INFO: Connected to Hyperion: 127.0.0.1:19445
    ssh in:     ttlingTime_ms=200;updateDelay=0
    ssh in:     EFFECTENGINE INFO: 27 effects loaded from directory /storage/hyperion/effects
    ssh in:     EFFECTENGINE INFO: Initializing Python interpreter
    ssh in:     INFO: Hyperion started and initialised
    ssh in:     INFO: Boot sequence 'Rainbow swirl' EFFECTENGINE INFO: run effect Rainbow swirl on channel 0
    ssh in:     BLACKBORDER INFO: threshold set to 0.01 (3)
    ssh in:     BLACKBORDER INFO: mode:default
    ssh in:     started
    ssh in:     INFO: Kodi checker created and started
    ssh in:     INFO: Json server created and started on port 19444
    ssh in:     INFO: Proto server created and started on port 19445
    ssh in:     FRAMEBUFFERGRABBER INFO: opened with resolution: [email protected]
    ssh in:     BLACKBORDER INFO: threshold set to 0.01 (3)
    ssh in:     BLACKBORDER INFO: mode:default
    ssh in:     INFO: Framebuffer grabber created and started
    ssh in:     KODICHECK INFO: Kodi Connected
    ssh in:     KODICHECK INFO: switching to VIDEO mode
    ssh in:     PROTOSERVER INFO: New connection
    ssh in:     BLACKBORDER INFO: threshold set to 0.01 (3)
    ssh in:     BLACKBORDER INFO: mode:default
    ssh in:     BORDER SWITCH REQUIRED!!
    ssh in:     CURRENT BORDER TYPE: unknown=0 hor.size=0 vert.size=0
    ssh in:     PROTOSERVER INFO: New connection
    ssh in:     BLACKBORDER INFO: threshold set to 0.01 (3)
    ssh in:     BLACKBORDER INFO: mode:default
    ssh in:     BORDER SWITCH REQUIRED!!
    ssh in:     CURRENT BORDER TYPE: unknown=0 hor.size=0 vert.size=0
    ssh in:     PROTOSERVER INFO: New connection
    ssh in:     BLACKBORDER INFO: threshold set to 0.01 (3)
    ssh in:     BLACKBORDER INFO: mode:default
    ssh in:     BORDER SWITCH REQUIRED!!
    ssh in:     CURRENT BORDER TYPE: unknown=0 hor.size=0 vert.size=0
    ssh in:     EFFECTENGINE INFO: effect finished
    ssh in:     KODICHECK INFO: switching to MENU mode
    ssh in:     KODICHECK INFO: switching to VIDEO mode
    
    Any ideas?

    Thanks