OSMC and Hyperion


I have a DVB-C USB adapter plugged into the Vero. While watching FIFA World Cup games recently on German stations ARD and ZDF (720p/H.264), the video begun to stutter frequently after 20 mins. Often ending up in kind of a slow motion playback. After disabling the hyperion service, playback was flawless. Btw. i‘m running your pre-compiled hyperion binaries on a devel kernel (required for DVB adapter).


As for movie playback, so far only that movie has been a consistent problem, but I shall persevere.

I also use hyperion when retro-gaming, which is a bit different, but no frank issues there either.

My TV seems ok and with the frequency of issues you describe it should be immediately obvious.

Many variables here then, ?which are relevant?:

  1. I’m streaming from a separate TVheadend server, and that using DVB-T/T2 tuners.
  2. I’m on the regular kernel.
  3. My binaries were compiled using just the options I needed, whereas the pre-compiled have everything switched on.
  4. The pre-compiled binaries are built in a regular kernel environment.

Try building your own hyperion binaries using my installer on your devel-kernel, with only the options you need. That addresses 2,3 and 4.

Try and stream your TV from another source?


Still looking in to this.



Are you involved in this? Coreelec guys has identified an issue with GE2D


I’ve installed the July update, which does support my DVB adapter, on Sunday. Running the current regular kernel, i didn’t have a single issue with hyperion in the last 4 days :thumbsup:


Yes — they need to use an iocompat fixup. I’ve told them this but haven’t had a chance to look at it myself yet


It seems the fix didn’t work: link :frowning:


It seems that we really need to give up content-dependent led-backlight functionality on Amlogic SoC without an external grabber. Too bad.
I hoped that Sam can go closer to the hw, and fix this for us, if Amlogic doesn’t do anything.


I’ve encountered further reliable slow-motion issues, now when watching my Gotham Blu-rays.

What I hadn’t realized before is that it glitches even if Hyperion is not set to react to the content i.e. just being pretty or mood backlighting.


Hey Sam,

first off my chest: just got the Vero 4k+ delivered to Germany! Wow, I love it - amazing work from you guys!

But Hyperion is still giving me grief like it did on the Odroid C2 I had to send back because the amlgrabber seems to be broken badly.

So after spending the whole day building Hyperion and Hyperion.NG back and forth with only the menus lighting up my 160 LEDs (framebuffer) I’m about to give up on video…

One final straw would be to test your kernel patches (?) for GE2D support…
Where can I find them and howto use/build them?

best regards


I hope to get some time to look in to GE2D again in a week or so.



Oh well, this would be awesome!

cracking job.

Anyway I could help?



I’ll let you know if / when I need some testing or further information.



Happy to help!



I have some time to address this now. As previously suggested, I’ve set a minimal hyperion_main.json:

root@osmc:~/hyperion# cat /root/.hyperion/config/hyperion_main.json 
"device": {
    "colorOrder": "rgb",
    "output": "/dev/null",
    "rate": 1e+06,
    "rewriteTime": 5000,
    "type": "file"

However, when I run Hyperion, I get:

[hyperiond MAIN] <ERROR> Failed to parse json data from /root/.hyperion/config/hyperion_main.json: Error: illegal value at Line: 0, Column: 1
[hyperiond MAIN] <ERROR> Hyperion Daemon aborted:
  Failed to load config!
[hyperiond MAIN] <ERROR> Hyperion aborted:
  Hyperion::getInstance used without call of Hyperion::initInstance before

Can anyone give me a minimal Hyperion config (no lights here) so I can see why GE2D isn’t being used?




Hey Sam,

I guess you’re just missing surrounding brackets… {…}

Have a look here:

UPDATE: this might be needed before the closing bracket as well:
"endOfJson" : "endOfJson"

Let’s crack this!



Unfortunately no luck:

root@osmc:~/hyperion# ./build/bin/hyperiond 
[hyperiond MAIN] <WARNING> Errors have been found in the configuration file. Automatic correction has been applied
[hyperiond MAIN] <WARNING> Config Fix: [root].endOfJson: Removed property: endOfJson
[hyperiond MAIN] <WARNING> Config Fix: [root].color: Create property: color with value: 
[hyperiond MAIN] <WARNING> Config Fix: [root].forwarder: Create property: forwarder with value: 
[hyperiond MAIN] <WARNING> Config Fix: [root].general: Create property: general with value: 
[hyperiond MAIN] <WARNING> Config Fix: [root].grabberV4L2: Create property: grabberV4L2 with value: 
[hyperiond MAIN] <WARNING> Config Fix: [root].jsonServer: Create property: jsonServer with value: 
[hyperiond MAIN] <WARNING> Config Fix: [root].leds: Create property: leds with value: 
[hyperiond MAIN] <WARNING> Config Fix: [root].protoServer: Create property: protoServer with value: 
ASSERT: "endLed < _ledAdjustments.size()" in file /root/hyperion/libsrc/hyperion/MultiColorAdjustment.cpp, line 29

If someone can give me a complete JSON file this will be great.



Maybe just try and use the whole example config and just change the device part…?

try running with verbose output parameter in case there are anymore hidden snags:

hyperiond -v

This is the one I use for my setup: https://pastebin.com/KQ6AtC0L



Thanks. I’ve tried with your JSON.

I get:

QObject::connect: No such slot ProtoServer::setVideoMode(VideoMode) in /root/hyperion/src/hyperiond/hyperiond.cpp:291
[hyperiond MAIN] <INFO> Proto server created and started on port 19445
[hyperiond ComponentRegister] <INFO> Boblight server: off
[hyperiond Core] <INFO> Register new input source named 'UDPLISTENER' for priority channel '700'
[hyperiond ComponentRegister] <INFO> UDP listener: off
[hyperiond ComponentRegister] <INFO> Blackborder detector: activated
[hyperiond V4L2:auto] <INFO> Signal threshold set to: {12, 12, 12}
[hyperiond V4L2:auto] <INFO> Signal detection area set to: 0.250000,0.250000 x 0.750000,0.750000
[hyperiond ComponentRegister] <INFO> V4L capture device: off
[hyperiond MAIN] <INFO> set screen capture device to 'amlogic'
[hyperiond ComponentRegister] <INFO> Blackborder detector: activated
[hyperiond FRAMEBUFFERGRABBER] <INFO> Display opened with resolution: 1920x1080@32bit
[hyperiond Core] <INFO> Register new input source named 'AmLogic' for priority channel '250'
[hyperiond MAIN] <INFO> AMLOGIC grabber created and started
[hyperiond ComponentRegister] <INFO> Framegrabber: activated
[hyperiond MAIN] <INFO> Hyperion started
[hyperiond EFFECTENGINE] <INFO> run effect Rainbow swirl fast on channel 0
[hyperiond Core] <INFO> Register new input source named 'Rainbow swirl fast' for priority channel '0'
[hyperiond MAIN] <INFO> Inital foreground effect 'Rainbow swirl fast' started
[hyperiond EFFECTENGINE] <INFO> run effect Warm mood blobs on channel 254
[hyperiond Core] <INFO> Register new input source named 'Warm mood blobs' for priority channel '254'
[hyperiond MAIN] <INFO> Inital background effect 'Warm mood blobs' started
[hyperiond WEBSERVER] <INFO> started on port 8099 name 'Hyperion WebConfig'
[hyperiond AMLOGICGRABBER] <INFO> FB mode
[hyperiond Smoothing] <INFO> set smoothing cfg: 25, interval: -5844732 ms, settlingTime: 40 ms, updateDelay: 0 frames
"Unexpected reply signature: got \"\", expected \"a{sv}\""
[hyperiond Smoothing] <INFO> set smoothing cfg: 0, interval: -5844860 ms, settlingTime: 40 ms, updateDelay: 0 frames
[hyperiond EFFECTENGINE] <INFO> effect finished
[hyperiond Core] <INFO> Unregister input source named 'Rainbow swirl fast' from priority register
"Unexpected reply signature: got \"\", expected \"a{sv}\""
^C[hyperiond MAIN] <INFO> Application closed with code 0
[hyperiond WEBSERVER] <INFO> stopped Hyperion WebConfig
[hyperiond Core] <INFO> set current input source to auto select
[hyperiond Core] <INFO> Unregister input source named 'AmLogic' from priority register
[hyperiond Core] <INFO> Unregister input source named 'V4L2:auto' from priority register
[hyperiond Core] <INFO> set current input source to auto select

What changes do I need to introduce the GE2D error others have posted above?



Damn, I’m not @home

Did you build Hyperion or Hyperion.NG?

I think GE2D is hyperion.ng only but it’s all a bit fuzzy. So my suggestion should be we use the newer ng version (which I was able to build with the help from this very thread)…

Then this config file should work: https://github.com/hyperion-project/hyperion.ng/blob/master/config/hyperion.config.json.default

Please try adding this under the framegrabber:

"amlgrabber" :
	"width" : 64,
	"height" : 64,
	"frequency_Hz" : 20.0,
	"priority" : 899,
        "device" : "/dev/ge2d",

When I come home I’ll grab my config directly from the box…