Hi Guys
Just a quick update on Hyperion on the ODROID C2.
Essentially, yes, it works, however there is some additional config you need to add to the hyperion.config.json to support the Amlogic frame buffer.
My config is as follows:
// 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.1 (11.06.2016)
{
// DEVICE CONFIGURATION
"device" :
{
"name" : "odroid",
"type" : "ws2801",
"output" : "/dev/spidev0.0",
"rate" : 250000,
"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
// AML Grabber
"amlgrabber" :
{
"width" : 64,
"height" : 64,
"frequency_Hz" : 10.0,
"priority" : 880
},
// FRAME GRABBER CONFIG
"framegrabber" :
{
"width" : 64,
"height" : 64,
"frequency_Hz" : 10.0,
"priority" : 890
},
// BLACKBORDER CONFIG
"blackborderdetector" :
{
"enable" : true,
"threshold" : 0.0,
"unknownFrameCnt" : 600,
"borderFrameCnt" : 50,
"maxInconsistentCnt" : 10,
"blurRemoveCnt" : 1,
"mode" : "default"
},
// KODI CHECK CONFIG
"xbmcVideoChecker" :
{
"xbmcAddress" : "127.0.0.1",
"xbmcTcpPort" : 9090,
"grabVideo" : true,
"grabPictures" : true,
"grabAudio" : true,
"grabMenu" : false,
"grabPause" : true,
"grabScreensaver" : true,
"enable3DDetection" : true
},
// BOOTEFFECT CONFIG
"bootsequence" :
{
"color" : [0,0,0],
"effect" : "Rainbow swirl fast",
"duration_ms" : 3000,
"priority" : 700
},
// JSON SERVER CONFIG
"jsonServer" :
{
"port" : 19444
},
// PROTO SERVER CONFIG
"protoServer" :
{
"port" : 19445
},
// EFFECT PATH
"effects" :
{
"paths" :
[
"/storage/hyperion/effects",
"/usr/share/hyperion/effects"
]
},
// NO BOBLIGHT SERVER CONFIG
// NO JSON/PROTO FORWARD CONFIG
// LED CONFIGURATION
"leds" :
[
{
"index" : 0,
"hscan" : { "minimum" : 0.5000, "maximum" : 0.5714 },
"vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
},
{
"index" : 1,
"hscan" : { "minimum" : 0.5714, "maximum" : 0.6429 },
"vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
},
{
"index" : 2,
"hscan" : { "minimum" : 0.6429, "maximum" : 0.7143 },
"vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
},
{
"index" : 3,
"hscan" : { "minimum" : 0.7143, "maximum" : 0.7857 },
"vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
},
{
"index" : 4,
"hscan" : { "minimum" : 0.7857, "maximum" : 0.8571 },
"vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
},
{
"index" : 5,
"hscan" : { "minimum" : 0.8571, "maximum" : 0.9286 },
"vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
},
{
"index" : 6,
"hscan" : { "minimum" : 0.9286, "maximum" : 1.0000 },
"vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
},
{
"index" : 7,
"hscan" : { "minimum" : 0.9500, "maximum" : 1.0000 },
"vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
},
{
"index" : 8,
"hscan" : { "minimum" : 0.9500, "maximum" : 1.0000 },
"vscan" : { "minimum" : 0.0000, "maximum" : 0.1111 }
},
{
"index" : 9,
"hscan" : { "minimum" : 0.9500, "maximum" : 1.0000 },
"vscan" : { "minimum" : 0.1111, "maximum" : 0.2222 }
},
{
"index" : 10,
"hscan" : { "minimum" : 0.9500, "maximum" : 1.0000 },
"vscan" : { "minimum" : 0.2222, "maximum" : 0.3333 }
},
{
"index" : 11,
"hscan" : { "minimum" : 0.9500, "maximum" : 1.0000 },
"vscan" : { "minimum" : 0.3333, "maximum" : 0.4444 }
},
{
"index" : 12,
"hscan" : { "minimum" : 0.9500, "maximum" : 1.0000 },
"vscan" : { "minimum" : 0.4444, "maximum" : 0.5556 }
},
{
"index" : 13,
"hscan" : { "minimum" : 0.9500, "maximum" : 1.0000 },
"vscan" : { "minimum" : 0.5556, "maximum" : 0.6667 }
},
{
"index" : 14,
"hscan" : { "minimum" : 0.9500, "maximum" : 1.0000 },
"vscan" : { "minimum" : 0.6667, "maximum" : 0.7778 }
},
{
"index" : 15,
"hscan" : { "minimum" : 0.9500, "maximum" : 1.0000 },
"vscan" : { "minimum" : 0.7778, "maximum" : 0.8889 }
},
{
"index" : 16,
"hscan" : { "minimum" : 0.9500, "maximum" : 1.0000 },
"vscan" : { "minimum" : 0.8889, "maximum" : 1.0000 }
},
{
"index" : 17,
"hscan" : { "minimum" : 0.9500, "maximum" : 1.0000 },
"vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 }
},
{
"index" : 18,
"hscan" : { "minimum" : 0.9286, "maximum" : 1.0000 },
"vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 }
},
{
"index" : 19,
"hscan" : { "minimum" : 0.8571, "maximum" : 0.9286 },
"vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 }
},
{
"index" : 20,
"hscan" : { "minimum" : 0.7857, "maximum" : 0.8571 },
"vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 }
},
{
"index" : 21,
"hscan" : { "minimum" : 0.7143, "maximum" : 0.7857 },
"vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 }
},
{
"index" : 22,
"hscan" : { "minimum" : 0.6429, "maximum" : 0.7143 },
"vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 }
},
{
"index" : 23,
"hscan" : { "minimum" : 0.5714, "maximum" : 0.6429 },
"vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 }
},
{
"index" : 24,
"hscan" : { "minimum" : 0.5000, "maximum" : 0.5714 },
"vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 }
},
{
"index" : 25,
"hscan" : { "minimum" : 0.4286, "maximum" : 0.5000 },
"vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 }
},
{
"index" : 26,
"hscan" : { "minimum" : 0.3571, "maximum" : 0.4286 },
"vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 }
},
{
"index" : 27,
"hscan" : { "minimum" : 0.2857, "maximum" : 0.3571 },
"vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 }
},
{
"index" : 28,
"hscan" : { "minimum" : 0.2143, "maximum" : 0.2857 },
"vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 }
},
{
"index" : 29,
"hscan" : { "minimum" : 0.1429, "maximum" : 0.2143 },
"vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 }
},
{
"index" : 30,
"hscan" : { "minimum" : 0.0714, "maximum" : 0.1429 },
"vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 }
},
{
"index" : 31,
"hscan" : { "minimum" : 0.0000, "maximum" : 0.0714 },
"vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 }
},
{
"index" : 32,
"hscan" : { "minimum" : 0.0000, "maximum" : 0.0500 },
"vscan" : { "minimum" : 0.9200, "maximum" : 1.0000 }
},
{
"index" : 33,
"hscan" : { "minimum" : 0.0000, "maximum" : 0.0500 },
"vscan" : { "minimum" : 0.8889, "maximum" : 1.0000 }
},
{
"index" : 34,
"hscan" : { "minimum" : 0.0000, "maximum" : 0.0500 },
"vscan" : { "minimum" : 0.7778, "maximum" : 0.8889 }
},
{
"index" : 35,
"hscan" : { "minimum" : 0.0000, "maximum" : 0.0500 },
"vscan" : { "minimum" : 0.6667, "maximum" : 0.7778 }
},
{
"index" : 36,
"hscan" : { "minimum" : 0.0000, "maximum" : 0.0500 },
"vscan" : { "minimum" : 0.5556, "maximum" : 0.6667 }
},
{
"index" : 37,
"hscan" : { "minimum" : 0.0000, "maximum" : 0.0500 },
"vscan" : { "minimum" : 0.4444, "maximum" : 0.5556 }
},
{
"index" : 38,
"hscan" : { "minimum" : 0.0000, "maximum" : 0.0500 },
"vscan" : { "minimum" : 0.3333, "maximum" : 0.4444 }
},
{
"index" : 39,
"hscan" : { "minimum" : 0.0000, "maximum" : 0.0500 },
"vscan" : { "minimum" : 0.2222, "maximum" : 0.3333 }
},
{
"index" : 40,
"hscan" : { "minimum" : 0.0000, "maximum" : 0.0500 },
"vscan" : { "minimum" : 0.1111, "maximum" : 0.2222 }
},
{
"index" : 41,
"hscan" : { "minimum" : 0.0000, "maximum" : 0.0500 },
"vscan" : { "minimum" : 0.0000, "maximum" : 0.1111 }
},
{
"index" : 42,
"hscan" : { "minimum" : 0.0000, "maximum" : 0.0500 },
"vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
},
{
"index" : 43,
"hscan" : { "minimum" : 0.0000, "maximum" : 0.0714 },
"vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
},
{
"index" : 44,
"hscan" : { "minimum" : 0.0714, "maximum" : 0.1429 },
"vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
},
{
"index" : 45,
"hscan" : { "minimum" : 0.1429, "maximum" : 0.2143 },
"vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
},
{
"index" : 46,
"hscan" : { "minimum" : 0.2143, "maximum" : 0.2857 },
"vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
},
{
"index" : 47,
"hscan" : { "minimum" : 0.2857, "maximum" : 0.3571 },
"vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
},
{
"index" : 48,
"hscan" : { "minimum" : 0.3571, "maximum" : 0.4286 },
"vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
},
{
"index" : 49,
"hscan" : { "minimum" : 0.4286, "maximum" : 0.5000 },
"vscan" : { "minimum" : 0.0000, "maximum" : 0.0800 }
}
],
"endOfJson" : "endOfJson"
}
The pertinent bit is the Framebuffer config:
// AML Grabber
"amlgrabber" :
{
"width" : 64,
"height" : 64,
"frequency_Hz" : 10.0,
"priority" : 880
},
// FRAME GRABBER CONFIG
"framegrabber" :
{
"width" : 64,
"height" : 64,
"frequency_Hz" : 10.0,
"priority" : 890
},
You need to add in support for the Amlogic frame buffer, but you also need to make sure it has a LOWER priority than the standard frame buffer. I dont know if you might actually just be able to replace the existing frame buffer config entirely…? Anyway that’s a test for another day!
I’ve not tested extensively yet, however it seems to be working reasonably well, however there are apparently SPI timing issues on the ODROID, so we may be better off in the long run moving to APA102 based LED strips instead of those based on the WS2801.
Anyway, time for bed now!
Josh
