OSMC and Hyperion

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
Anthrax

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

Sam

Oh well, this would be awesome!

cracking job.

Anyway I could help?

Marcus

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

Sam

Happy to help!

Marcus

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?

Cheers

Sam

Hey Sam,

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

Have a look here:
https://hyperion-project.org/wiki/hyperion-config-json-with-comments

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

Let’s crack this!

Anthrax

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
Aborted

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

Sam

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

Anthrax

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?

Sam

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…

I followed these instructions:

Thanks – not having much luck at the moment.

Sam

Allright, this is my config für hyperion.ng:

hyperion_main.json

I compiled with these parameters:

osmc@OSMC:~$ cmake -DPLATFORM=amlogic64 -DENABLE_AMLOGIC=ON -DENABLE_DISPMANX=OFF -DENABLE_FB=ON -DENABLE_OSX=OFF -DENABLE_SPIDEV=OFF -DENABLE_TINKERFORGE=OFF -DENABLE_V4L2=ON -DENABLE_WS281XPWM=OFF -DENABLE_X11=OFF -DENABLE_TESTS=ON -DENABLE_PROFILER=OFF -DCMAKE_BUILD_TYPE=Release …

which produces the following error while running as a service the second I start a video file (it seems to use the framebuffer for menus and the amlgrabber/ge2d automatically for video playback)

Perfect. I’ll give this a go

Thanks for giving me the compile instructions. That’s handy to verify I’m building with right options.

I can confirm the issue is ioctl related. I am investigating.

Hi Sam,

I know I’m nagging, but is there any update on this?

cheers
Anthrax

I’m still working on this

Cheers

Sam

:sunglasses:

./hyperiond -v
[hyperiond MAIN] <INFO> Selected configuration file: /root/.hyperion/config/hyperion_main.json
[hyperiond LOGGER] <WARNING> Logger settings overridden by command line argument
[hyperiond Core] <INFO> ColorAdjustment 'default' => [0; 159]
[hyperiond ComponentRegister] <INFO> Json/Proto forwarder: off
[hyperiond LedDevice] <INFO> LedDevice 'adalight' configured.
[hyperiond LedDevice] <INFO> Opening UART: /dev/ttyACM0
[hyperiond Core] <INFO> Creating linear smoothing
[hyperiond Smoothing] <INFO> smoothing cfg 0: interval: -1420738684 ms, settlingTime: 40 ms, updateDelay: 0 frames
[hyperiond Smoothing] <INFO> smoothing cfg 1: pause
[hyperiond ComponentRegister] <INFO> Smoothing: activated
[hyperiond ComponentRegister] <INFO> LED device: activated
[hyperiond Smoothing] <INFO> smoothing cfg 2: interval: -1420567704 ms, settlingTime: 40 ms, updateDelay: 0 frames
[hyperiond Smoothing] <INFO> smoothing cfg 3: interval: 0 ms, settlingTime: 40 ms, updateDelay: 0 frames
[hyperiond Smoothing] <INFO> smoothing cfg 4: interval: 0 ms, settlingTime: 40 ms, updateDelay: 0 frames
[hyperiond Smoothing] <INFO> smoothing cfg 5: interval: -1420552964 ms, settlingTime: 50 ms, updateDelay: 0 frames
[hyperiond Smoothing] <INFO> smoothing cfg 6: interval: 0 ms, settlingTime: 40 ms, updateDelay: 0 frames
[hyperiond Smoothing] <INFO> smoothing cfg 7: interval: 0 ms, settlingTime: 40 ms, updateDelay: 0 frames
[hyperiond Smoothing] <INFO> smoothing cfg 8: interval: 0 ms, settlingTime: 40 ms, updateDelay: 0 frames
[hyperiond Smoothing] <INFO> smoothing cfg 9: interval: 0 ms, settlingTime: 40 ms, updateDelay: 0 frames
[hyperiond Smoothing] <INFO> smoothing cfg 10: interval: 0 ms, settlingTime: 40 ms, updateDelay: 0 frames
[hyperiond Smoothing] <INFO> smoothing cfg 11: interval: 0 ms, settlingTime: 40 ms, updateDelay: 0 frames
[hyperiond Smoothing] <INFO> smoothing cfg 12: interval: 0 ms, settlingTime: 40 ms, updateDelay: 0 frames
[hyperiond Smoothing] <INFO> smoothing cfg 13: interval: 0 ms, settlingTime: 40 ms, updateDelay: 0 frames
[hyperiond Smoothing] <INFO> smoothing cfg 14: interval: 0 ms, settlingTime: 40 ms, updateDelay: 0 frames
[hyperiond Smoothing] <INFO> smoothing cfg 15: interval: 0 ms, settlingTime: 40 ms, updateDelay: 0 frames
[hyperiond Smoothing] <INFO> smoothing cfg 16: interval: 0 ms, settlingTime: 40 ms, updateDelay: 0 frames
[hyperiond Smoothing] <INFO> smoothing cfg 17: interval: 0 ms, settlingTime: 40 ms, updateDelay: 0 frames
[hyperiond Smoothing] <INFO> smoothing cfg 18: interval: 0 ms, settlingTime: 40 ms, updateDelay: 0 frames
[hyperiond Smoothing] <INFO> smoothing cfg 19: interval: -1420536804 ms, settlingTime: 40 ms, updateDelay: 0 frames
[hyperiond Smoothing] <INFO> smoothing cfg 20: interval: 0 ms, settlingTime: 40 ms, updateDelay: 0 frames
[hyperiond Smoothing] <INFO> smoothing cfg 21: interval: 0 ms, settlingTime: 40 ms, updateDelay: 0 frames
[hyperiond Smoothing] <INFO> smoothing cfg 22: interval: 0 ms, settlingTime: 40 ms, updateDelay: 0 frames
[hyperiond Smoothing] <INFO> smoothing cfg 23: interval: 0 ms, settlingTime: 40 ms, updateDelay: 0 frames
[hyperiond Smoothing] <INFO> smoothing cfg 24: interval: 0 ms, settlingTime: 40 ms, updateDelay: 0 frames
[hyperiond Smoothing] <INFO> smoothing cfg 25: interval: 0 ms, settlingTime: 40 ms, updateDelay: 0 frames
[hyperiond Smoothing] <INFO> smoothing cfg 26: interval: -1420528268 ms, settlingTime: 40 ms, updateDelay: 0 frames
[hyperiond Smoothing] <INFO> smoothing cfg 27: interval: -1420528572 ms, settlingTime: 50 ms, updateDelay: 0 frames
[hyperiond Smoothing] <INFO> smoothing cfg 28: interval: 0 ms, settlingTime: 40 ms, updateDelay: 0 frames
[hyperiond Smoothing] <INFO> smoothing cfg 29: interval: 0 ms, settlingTime: 40 ms, updateDelay: 0 frames
[hyperiond Smoothing] <INFO> smoothing cfg 30: interval: 0 ms, settlingTime: 40 ms, updateDelay: 0 frames
[hyperiond Smoothing] <INFO> smoothing cfg 31: interval: 0 ms, settlingTime: 40 ms, updateDelay: 0 frames
[hyperiond Smoothing] <INFO> smoothing cfg 32: interval: 0 ms, settlingTime: 40 ms, updateDelay: 0 frames
[hyperiond Smoothing] <INFO> smoothing cfg 33: interval: 0 ms, settlingTime: 40 ms, updateDelay: 0 frames
[hyperiond Smoothing] <INFO> smoothing cfg 34: interval: 0 ms, settlingTime: 40 ms, updateDelay: 0 frames
[hyperiond Smoothing] <INFO> smoothing cfg 35: interval: 0 ms, settlingTime: 40 ms, updateDelay: 0 frames
[hyperiond Smoothing] <INFO> smoothing cfg 36: interval: 0 ms, settlingTime: 40 ms, updateDelay: 0 frames
[hyperiond Smoothing] <INFO> smoothing cfg 37: interval: 0 ms, settlingTime: 40 ms, updateDelay: 0 frames
[hyperiond EFFECTENGINE] <INFO> 35 effects loaded from directory :/effects/
[hyperiond EFFECTENGINE] <INFO> 19 effect schemas loaded from directory :/effects/schema/
[hyperiond EFFECTENGINE] <INFO> 0 effects loaded from directory /root/.hyperion/custom-effects
[hyperiond MAIN] <INFO> Hyperion initialized
[hyperiond MAIN] <INFO> Json server created and started on port 19444
QObject::connect: No such slot ProtoServer::setVideoMode(VideoMode)
[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 '200'
[hyperiond ComponentRegister] <INFO> UDP listener: off
[hyperiond ComponentRegister] <INFO> Blackborder detector: off
[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: off
[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] <ERROR> document_root '/home/osmc/.hyperion/webconfig' is invalid, set to default ':/webconfig'
[hyperiond WEBSERVER] <INFO> started on port 8090 name 'Hyperion WebConfig'
[hyperiond AMLOGICGRABBER] <INFO> FB mode
"Unexpected reply signature: got \"\", expected \"a{sv}\""
[hyperiond Smoothing] <INFO> set smoothing cfg: 25, interval: 0 ms, settlingTime: 40 ms, updateDelay: 0 frames
[hyperiond Smoothing] <INFO> set smoothing cfg: 0, interval: 0 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

Does this mean it works now? I have no lights to test with.

To test this update:

  1. Login via the command line
  2. Edit the file /etc/apt/sources.list
  3. Add the following line: deb http://apt.osmc.tv stretch-devel main
  4. Run the following commands to update: sudo apt-get update && sudo apt-get dist-upgrade && reboot
  5. Your system should have have received the update.

Please see if the issue is resolved.

I also recommend you edit /etc/apt/sources.list again and remove the line that you added after updating. This will return you to the normal update channel.

Hi Sam,

will try tomorrow and report back.

Have a good night.
Anthrax