Hyperion.NG, Amlogic improvements

I would like to bring this up again, as I’m facing the same issues currently.

I’m on a ODROID N2 with an APA102 strip controlled via SPI. The setup was smooth, except some short crashes. However, I experience the same switch to IDLE animation when pausing a video. It almost seams like the grabber crashes. The log only shows a single line of error, but I paused and played the video multiple times.

I didn’t find any reference issue, I’m on version 103 and my, rather empty, debug log:

KodiWohnzimmer:~ # hyperiond --userdata /storage/.kodi/userdata/addon_data/service.hyperion.ng/ -d
[hyperiond MAIN] <INFO> Set user data path to '/storage/.kodi/userdata/addon_data/service.hyperion.ng'
[hyperiond DAEMON] <DEBUG> <PythonInit.cpp:20:PythonInit()> Initializing Python interpreter
[hyperiond SettingsManager] <DEBUG> <SettingsManager.cpp:101:SettingsManager()> Settings database initialized
[hyperiond EFFECTFILES] <INFO> 37 effects loaded from directory :/effects/
[hyperiond EFFECTFILES] <INFO> 20 effect schemas loaded from directory :/effects/schema/
[hyperiond EFFECTFILES] <INFO> 0 effects loaded from directory /storage/.kodi/userdata/addon_data/service.hyperion.ng//custom-effects
[hyperiond SettingsManager] <DEBUG> <SettingsManager.cpp:101:SettingsManager()> Settings database initialized
[hyperiond BLACKBORDER] <DEBUG> <BlackBorderProcessor.cpp:65:handleSettingsUpdate()> Set mode to: default
[hyperiond ComponentRegister] <DEBUG> <ComponentRegister.cpp:67:componentStateChanged()> Blackborder detector: enabled
[hyperiond DAEMON] <INFO> set screen capture device to 'amlogic'
[hyperiond AMLOGICGRABBER] <DEBUG> <Grabber.cpp:33:setVideoMode()> Set videomode to 0
[hyperiond FRAMEBUFFERGRABBER] <DEBUG> <Grabber.cpp:33:setVideoMode()> Set videomode to 0
[hyperiond FRAMEBUFFERGRABBER] <INFO> Display opened with resolution: 3840x2160@32bit
[hyperiond AMLOGICGRABBER] <DEBUG> <AmlogicGrabber.cpp:31:AmlogicGrabber()> constructed(960 x 540), grabber device: /dev/amvideocap0
[hyperiond DAEMON] <INFO> AMLOGIC grabber created
[hyperiond V4L2:auto] <DEBUG> <Grabber.cpp:33:setVideoMode()> Set videomode to 0
[hyperiond V4L2:auto] <INFO> Signal threshold set to: {12, 12, 12}
[hyperiond V4L2:auto] <INFO> Signal detection is now disabled
[hyperiond V4L2:auto] <INFO> Signal detection area set to: 0.250000,0.250000 x 0.750000,0.750000
[hyperiond DAEMON] <DEBUG> <hyperiond.cpp:440:handleSettingsUpdate()> V4L2 grabber created
[hyperiond JSONSERVER] <DEBUG> <JsonServer.cpp:25:JsonServer()> Created instance
[hyperiond JSONSERVER] <INFO> Started on port 19444
[hyperiond ComponentRegister] <DEBUG> <ComponentRegister.cpp:67:componentStateChanged()> LED device: enabled
[hyperiond LEDDEVICE] <INFO> LedDevice 'apa102' configured.
[hyperiond ComponentRegister] <DEBUG> <ComponentRegister.cpp:67:componentStateChanged()> Smoothing: enabled
[hyperiond LEDDEVICE] <DEBUG> <ProviderSpi.cpp:48:open()> _baudRate_Hz 1000000,  _latchTime_ns 1
[hyperiond LEDDEVICE] <DEBUG> <ProviderSpi.cpp:49:open()> _spiDataInvert 0,  _spiMode 0
[hyperiond FLATBUFCONNECTION] <INFO> Connecting to Hyperion: 127.0.0.1:19401
[hyperiond HYPERION] <DEBUG> <PriorityMuxer.cpp:153:registerInput()> Register new input 'System/GRABBER' with priority 250 as inactive
[hyperiond ComponentRegister] <DEBUG> <ComponentRegister.cpp:67:componentStateChanged()> Framegrabber: enabled
[hyperiond BOBLIGHT] <DEBUG> <BoblightServer.cpp:28:BoblightServer()> Instance created
[hyperiond PROTOSERVER] <INFO> Started on port 19445
[hyperiond FLATBUFSERVER] <INFO> Started on port 19400
[hyperiond HYPERION] <INFO> Hyperion instance 'First LED Hardware instance' has been started
[hyperiond AMLOGICGRABBER] <INFO> VPU mode
[hyperiond WEBSERVER] <DEBUG> <WebServer.cpp:105:handleSettingsUpdate()> Set document root to: :/webconfig
[hyperiond WEBSERVER] <DEBUG> Previous line repeats 1 times
[hyperiond WEBSERVER] <INFO> Started on port 8090 name 'Hyperion Webserver'
[hyperiond HYPERION] <DEBUG> <PriorityMuxer.cpp:233:setInputImage()> Priority 250 is now active
[hyperiond HYPERION] <DEBUG> <PriorityMuxer.cpp:333:setCurrentTime()> Set visible priority to 250
[hyperiond WEBSERVER] <DEBUG> <WebServer.cpp:171:handleSettingsUpdate()> Setup SSL certificate
[hyperiond WEBSERVER] <DEBUG> <WebServer.cpp:187:handleSettingsUpdate()> Setup private SSL key
[hyperiond WEBSERVER] <INFO> Started on port 8092 name 'Hyperion Webserver'
[hyperiond WEBSOCKET] <DEBUG> <WebSocketClient.cpp:30:WebSocketClient()> New connection from ::ffff:192.168.1.127
[hyperiond WEBSOCKET] <DEBUG> <JsonAPI.cpp:107:handleInstanceSwitch()> Client '::ffff:192.168.1.127' switch to Hyperion instance 0
[hyperiond WEBSOCKET] <DEBUG> <WebSocketClient.cpp:30:WebSocketClient()> New connection from ::ffff:192.168.1.127
[hyperiond WEBSOCKET] <DEBUG> <JsonAPI.cpp:107:handleInstanceSwitch()> Client '::ffff:192.168.1.127' switch to Hyperion instance 0
[hyperiond HYPERION] <DEBUG> <PriorityMuxer.cpp:233:setInputImage()> Priority 250 is now inactive
[hyperiond HYPERION] <DEBUG> <PriorityMuxer.cpp:333:setCurrentTime()> Set visible priority to 255
[hyperiond AMLOGICGRABBER] <ERROR> Read of device failed: 11 - Resource temporarily unavailable
[hyperiond HYPERION] <DEBUG> <PriorityMuxer.cpp:233:setInputImage()> Priority 250 is now active
[hyperiond HYPERION] <DEBUG> <PriorityMuxer.cpp:333:setCurrentTime()> Set visible priority to 250

When play/pausing, it just switches the priority, nothing more in the logs

[hyperiond HYPERION] <DEBUG> <PriorityMuxer.cpp:333:setCurrentTime()> Set visible priority to 250
[hyperiond HYPERION] <DEBUG> <PriorityMuxer.cpp:233:setInputImage()> Priority 250 is now inactive
[hyperiond HYPERION] <DEBUG> <PriorityMuxer.cpp:333:setCurrentTime()> Set visible priority to 255
[hyperiond HYPERION] <DEBUG> <PriorityMuxer.cpp:233:setInputImage()> Priority 250 is now active
[hyperiond HYPERION] <DEBUG> <PriorityMuxer.cpp:333:setCurrentTime()> Set visible priority to 250
[hyperiond HYPERION] <DEBUG> <PriorityMuxer.cpp:233:setInputImage()> Priority 250 is now inactive
[hyperiond HYPERION] <DEBUG> <PriorityMuxer.cpp:333:setCurrentTime()> Set visible priority to 255
[hyperiond HYPERION] <DEBUG> <PriorityMuxer.cpp:233:setInputImage()> Priority 250 is now active
[hyperiond HYPERION] <DEBUG> <PriorityMuxer.cpp:333:setCurrentTime()> Set visible priority to 250

Any tips?

Does anybody else have issues watching HDR footage with Hyperion? Playback is fine but colors are not right in hyperion.

Try adding this line into .config/autostart.sh

echo 3 | tee /sys/module/amvdec_h265/parameters/double_write_mode

The PR was merged to master. It would be very nice, if you update the addon, so we can test it. :slight_smile:

Is on the todo list…

Hyperion.NG got now updated and should be available tomorrow.
It’s now on status 14.07.2020 and the addon version is not changed. So It’s still 9.2.103 and if someone want to update it have to be done by user.

When the new Alpha.7 becomes available I will bump also the addon version and the addon should auto update by itself.

Thank you for the update! :slight_smile: I imported the update manually today via the repository. But unfortunately I still get the error “[hyperiond LEDDEVICE] (ERROR) SPI failed to write. errno: 14, Bad address”. How can I determine if the version from 14.07.2020 has been installed?

Activate in Webinterface the debug log and take a try to change the led hardware and post debug log.

Is anyone able to help me with my USB problem posted above? I’m still having this problem, and I can’t figure out if it is an issue with my Odroid hardware, or if I’m missing something software-wise.

Hi, I activatet the debug log and changed the device from apa102 to ws2801 and back.

Debug log:

[hyperiond EFFECTFILES] (INFO) 37 effects loaded from directory :/effects/
[hyperiond EFFECTFILES] (INFO) 20 effect schemas loaded from directory :/effects/schema/
[hyperiond EFFECTFILES] (INFO) 0 effects loaded from directory /storage/.kodi/userdata/addon_data/service.hyperion.ng/custom-effects
[hyperiond SettingsManager] (DEBUG) (SettingsManager.cpp:101:SettingsManager()) Settings database initialized
[hyperiond BLACKBORDER] (DEBUG) (BlackBorderProcessor.cpp:65:handleSettingsUpdate()) Set mode to: default
[hyperiond ComponentRegister] (DEBUG) (ComponentRegister.cpp:67:componentStateChanged()) Blackborder detector: enabled
[hyperiond DAEMON] (INFO) set screen capture device to ‘amlogic’
[hyperiond AMLOGICGRABBER] (DEBUG) (Grabber.cpp:33:setVideoMode()) Set videomode to 0
[hyperiond FRAMEBUFFERGRABBER] (DEBUG) (Grabber.cpp:33:setVideoMode()) Set videomode to 0
[hyperiond FRAMEBUFFERGRABBER] (INFO) Display opened with resolution: 1920x1080@32bit
[hyperiond AMLOGICGRABBER] (DEBUG) (AmlogicGrabber.cpp:31:AmlogicGrabber()) constructed(160 x 160), grabber device: /dev/amvideocap0
[hyperiond DAEMON] (INFO) AMLOGIC grabber created
[hyperiond V4L2:auto] (DEBUG) (Grabber.cpp:33:setVideoMode()) Set videomode to 0
[hyperiond V4L2:auto] (INFO) Signal threshold set to: {12, 12, 12}
[hyperiond V4L2:auto] (INFO) Signal detection is now disabled
[hyperiond V4L2:auto] (INFO) Signal detection area set to: 0.250000,0.250000 x 0.750000,0.750000
[hyperiond DAEMON] (DEBUG) (hyperiond.cpp:440:handleSettingsUpdate()) V4L2 grabber created
[hyperiond JSONSERVER] (DEBUG) (JsonServer.cpp:25:JsonServer()) Created instance
[hyperiond JSONSERVER] (INFO) Started on port 19444
[hyperiond ComponentRegister] (DEBUG) (ComponentRegister.cpp:67:componentStateChanged()) LED device: enabled
[hyperiond LEDDEVICE] (INFO) LedDevice ‘apa102’ configured.
[hyperiond LEDDEVICE] (DEBUG) (ProviderSpi.cpp:48:open()) _baudRate_Hz 1000000, _latchTime_ns 1
[hyperiond LEDDEVICE] (DEBUG) (ProviderSpi.cpp:49:open()) _spiDataInvert 0, _spiMode 0
[hyperiond ComponentRegister] (DEBUG) (ComponentRegister.cpp:67:componentStateChanged()) Smoothing: enabled
[hyperiond FLATBUFCONNECTION] (INFO) Connecting to Hyperion: 127.0.0.1:19401
[hyperiond EFFECTENGINE] (INFO) run effect Rainbow swirl fast on channel 0
[hyperiond FLATBUFSERVER] (INFO) Started on port 19400
[hyperiond PROTOSERVER] (INFO) Started on port 19445
[hyperiond AMLOGICGRABBER] (INFO) FB mode
[hyperiond WEBSERVER] (DEBUG) (WebServer.cpp:105:handleSettingsUpdate()) Set document root to: :/webconfig
[hyperiond WEBSERVER] (DEBUG) (WebServer.cpp:105:handleSettingsUpdate()) Set document root to: :/webconfig
[hyperiond WEBSERVER] (INFO) Started on port 8090 name ‘Hyperion Webserver’
[hyperiond HYPERION] (DEBUG) (PriorityMuxer.cpp:153:registerInput()) Register new input ‘System/EFFECT’ with priority 0 as inactive
[hyperiond HYPERION] (INFO) Initial foreground effect ‘Rainbow swirl fast’ started
[hyperiond EFFECTENGINE] (INFO) run effect Warm mood blobs on channel 254
[hyperiond HYPERION] (DEBUG) (PriorityMuxer.cpp:153:registerInput()) Register new input ‘System/EFFECT’ with priority 254 as inactive
[hyperiond HYPERION] (INFO) Inital background effect ‘Warm mood blobs’ started
[hyperiond HYPERION] (DEBUG) (PriorityMuxer.cpp:153:registerInput()) Register new input ‘System/GRABBER’ with priority 250 as inactive
[hyperiond ComponentRegister] (DEBUG) (ComponentRegister.cpp:67:componentStateChanged()) Framegrabber: enabled
[hyperiond BOBLIGHT] (DEBUG) (BoblightServer.cpp:28:BoblightServer()) Instance created
[hyperiond HYPERION] (INFO) Hyperion instance ‘First LED Hardware instance’ has been started
[hyperiond HYPERION] (DEBUG) (PriorityMuxer.cpp:233:setInputImage()) Priority 250 is now active
[hyperiond HYPERION] (DEBUG) (PriorityMuxer.cpp:333:setCurrentTime()) Set visible priority to 0
[hyperiond LEDDEVICE] (ERROR) SPI failed to write. errno: 14, Bad address
[hyperiond LEDDEVICE] (ERROR) Previous line repeats 1 times
[hyperiond WEBSERVER] (DEBUG) (WebServer.cpp:171:handleSettingsUpdate()) Setup SSL certificate
[hyperiond WEBSERVER] (DEBUG) (WebServer.cpp:187:handleSettingsUpdate()) Setup private SSL key
[hyperiond WEBSERVER] (INFO) Started on port 8092 name ‘Hyperion Webserver’
[hyperiond LEDDEVICE] (ERROR) SPI failed to write. errno: 14, Bad address
[hyperiond LEDDEVICE] (ERROR) Previous line repeats 12 times
[hyperiond HYPERION] (DEBUG) (PriorityMuxer.cpp:193:setInput()) Priority 254 is now active
[hyperiond LEDDEVICE] (ERROR) SPI failed to write. errno: 14, Bad address
[hyperiond HYPERION] (DEBUG) (PriorityMuxer.cpp:233:setInputImage()) Priority 0 is now active
[hyperiond LEDDEVICE] (ERROR) SPI failed to write. errno: 14, Bad address
[hyperiond LEDDEVICE] (ERROR) Previous line repeats 18 times
[hyperiond WEBSOCKET] (DEBUG) (WebSocketClient.cpp:30:WebSocketClient()) New connection from ::ffff:192.168.178.50
[hyperiond WEBSOCKET] (DEBUG) (JsonAPI.cpp:107:handleInstanceSwitch()) Client ‘::ffff:192.168.178.50’ switch to Hyperion instance 0
[hyperiond LEDDEVICE] (ERROR) SPI failed to write. errno: 14, Bad address
[hyperiond LEDDEVICE] (ERROR) Previous line repeats 43 times
[hyperiond HYPERION] (DEBUG) (PriorityMuxer.cpp:293:setCurrentTime()) Timeout clear for priority 0
[hyperiond LEDDEVICE] (ERROR) SPI failed to write. errno: 14, Bad address
[hyperiond LEDDEVICE] (ERROR) Previous line repeats 5 times
[hyperiond HYPERION] (DEBUG) (PriorityMuxer.cpp:333:setCurrentTime()) Set visible priority to 250
[hyperiond LEDDEVICE] (ERROR) SPI failed to write. errno: 14, Bad address
[hyperiond LEDDEVICE] (ERROR) Previous line repeats 104 times
[hyperiond WEBSOCKET] (DEBUG) (WebSocketClient.cpp:204:sendClose()) send close: 1000
[hyperiond LEDDEVICE] (ERROR) SPI failed to write. errno: 14, Bad address
[hyperiond LEDDEVICE] (ERROR) Previous line repeats 108 times
[hyperiond WEBSOCKET] (DEBUG) (WebSocketClient.cpp:30:WebSocketClient()) New connection from ::ffff:192.168.178.50
[hyperiond WEBSOCKET] (DEBUG) (JsonAPI.cpp:107:handleInstanceSwitch()) Client ‘::ffff:192.168.178.50’ switch to Hyperion instance 0
[hyperiond LEDDEVICE] (ERROR) SPI failed to write. errno: 14, Bad address
[hyperiond LEDDEVICE] (ERROR) Previous line repeats 137 times
[hyperiond WEBSOCKET] (DEBUG) (WebSocketClient.cpp:204:sendClose()) send close: 1000
[hyperiond LEDDEVICE] (ERROR) SPI failed to write. errno: 14, Bad address
[hyperiond LEDDEVICE] (ERROR) Previous line repeats 6 times
[hyperiond WEBSOCKET] (DEBUG) (WebSocketClient.cpp:30:WebSocketClient()) New connection from ::ffff:192.168.178.50
[hyperiond WEBSOCKET] (DEBUG) (JsonAPI.cpp:107:handleInstanceSwitch()) Client ‘::ffff:192.168.178.50’ switch to Hyperion instance 0
[hyperiond LEDDEVICE] (ERROR) SPI failed to write. errno: 14, Bad address
[hyperiond LEDDEVICE] (ERROR) Previous line repeats 200 times
[hyperiond LEDDEVICE] (ERROR) Previous line repeats 59 times
[hyperiond WEBSOCKET] (DEBUG) (JsonAPI.cpp:1114:handleLoggingCommand()) log streaming activated for client ::ffff:192.168.178.50
[hyperiond LEDDEVICE] (ERROR) SPI failed to write. errno: 14, Bad address
[hyperiond WEBSOCKET] (DEBUG) (JsonAPI.cpp:1123:handleLoggingCommand()) log streaming deactivated for client ::ffff:192.168.178.50
[hyperiond LEDDEVICE] (ERROR) SPI failed to write. errno: 14, Bad address
[hyperiond LEDDEVICE] (ERROR) Previous line repeats 200 times
[hyperiond LEDDEVICE] (ERROR) Previous line repeats 200 times
[hyperiond LEDDEVICE] (ERROR) Previous line repeats 200 times
[hyperiond LEDDEVICE] (ERROR) Previous line repeats 200 times
[hyperiond LEDDEVICE] (ERROR) Previous line repeats 200 times
[hyperiond LEDDEVICE] (ERROR) Previous line repeats 200 times
[hyperiond LEDDEVICE] (ERROR) Previous line repeats 165 times
[hyperiond LEDDEVICE] (INFO) LedDevice ‘ws2801’ configured.
[hyperiond LEDDEVICE] (DEBUG) (ProviderSpi.cpp:48:open()) _baudRate_Hz 1000000, _latchTime_ns 1
[hyperiond LEDDEVICE] (DEBUG) (ProviderSpi.cpp:49:open()) _spiDataInvert 0, _spiMode 0
[hyperiond LEDDEVICE] (ERROR) SPI failed to write. errno: 14, Bad address
[hyperiond LEDDEVICE] (ERROR) Previous line repeats 132 times
[hyperiond WEBSOCKET] (DEBUG) (JsonAPI.cpp:1114:handleLoggingCommand()) log streaming activated for client ::ffff:192.168.178.50
[hyperiond LEDDEVICE] (ERROR) SPI failed to write. errno: 14, Bad address
[hyperiond WEBSOCKET] (DEBUG) (JsonAPI.cpp:1123:handleLoggingCommand()) log streaming deactivated for client ::ffff:192.168.178.50
[hyperiond LEDDEVICE] (ERROR) SPI failed to write. errno: 14, Bad address
[hyperiond LEDDEVICE] (ERROR) Previous line repeats 200 times
[hyperiond LEDDEVICE] (ERROR) Previous line repeats 200 times
[hyperiond LEDDEVICE] (ERROR) Previous line repeats 200 times
[hyperiond LEDDEVICE] (ERROR) Previous line repeats 76 times
[hyperiond LEDDEVICE] (INFO) LedDevice ‘apa102’ configured.
[hyperiond LEDDEVICE] (DEBUG) (ProviderSpi.cpp:48:open()) _baudRate_Hz 1000000, _latchTime_ns 1
[hyperiond LEDDEVICE] (DEBUG) (ProviderSpi.cpp:49:open()) _spiDataInvert 0, _spiMode 0
[hyperiond LEDDEVICE] (ERROR) SPI failed to write. errno: 14, Bad address
[hyperiond LEDDEVICE] (ERROR) Previous line repeats 200 times
[hyperiond LEDDEVICE] (ERROR) Previous line repeats 155 times
[hyperiond WEBSOCKET] (DEBUG) (JsonAPI.cpp:1114:handleLoggingCommand()) log streaming activated for client ::ffff:192.168.178.50
[hyperiond WEBSOCKET] (DEBUG) (JsonAPI.cpp:1114:handleLoggingCommand()) log streaming activated for client ::ffff:192.168.178.50

My plugin just updated to 9.2.104 - could have sworn I had updates for the plugin disabled… My setup is now terminally broken - LED device disables after ~5 seconds. Managed to find a zip for 103 but still the same:

Device disabled, device ‘adalight’ signals error: ‘Timeout writing data to ttyACM0’

Can I download older versions anywhere?

Just make a new config before trying to downgrade?

Tried new config on plugins 104,103, upgraded CE from 9.2.3 > 9.2.4.1, same result for everything: hyperion works for a few secs then LED device goes off. Really just want to go back to a version that works for me if possible.

Looks like you are using SPI for LED control.
Maybe the SPI got deactivated by update, see similar case:

I’m using the Lightberry (Arduino) USB serial > SPI adaptor, given that I’m not using the built in SPI would this still be relevant?

Sorry, wanted to reply to vorohe6910
No, not needed if connection N2-Arduino is USB.

Anybody having this issue on the latest Alpha 7?

https://hyperion-project.org/threads/howto-hyperion-ng-libreelec-inoffiziell-unofficially.10463/page-3 (post 47, I couldn’t hyper link)

Basically controlling Hyperion with anything but the web interface causes this disco light effect? Like documented on the hyperion project forum this is an alpha 7 issue, but downgrading back to Alpha 6 I STILL have this issue? Is there any way to solve this or can I get a link to the older version?

So is there a way to get older versions?

Yes, i am using SPI for LED control. SPI is enabled and works with the odroid test program: https://wiki.odroid.com/odroid-c2/application_note/gpio/spi#tab__odroid-c2

I took a second SD card, installed Ubuntu and compiled Hyperion NG.
I was not able to get the platform capture working but the LED were lightning and effects or colours works as well.

No, because for some reason Portisch didn’t put this on github? At least not that I see? I basically just went here and got the oldest version.

https://relkai.coreelec.org/?dir=addons/9.2/Amlogic/arm/service.hyperion.ng

I have no idea why it’s not on github because I could just easily downgrade my Hyperion install and have this common issue fixed. It really sucks because I’m unable to use my ambilight easily.