Override EDID Refresh Rates

Hi,
my normal setup is C2 -> AVR -> Dual HDMI Output, 1xLG TV, 1xHDMI in for Hyperion on another RPI).

When having a look at the possible Refresh Rates in Kodi, there are only 60.00 and 59.94 possible.
Playing 24p MKVs I see this damn stuttering.

If I change my setup to C2 -> AVR -> only LG TV I can see a lot more refresh rates (23.98, 24.00, 25.00, 29.97, 30.00, 50.00, 59.94, 60.00) and there is no stuttering when playing 24p MKVs.

If I change my setup back to dual HDMI out without rebooting CoreElec, everything works fine, too.

I don’t know if this is a KODI or a CoreElec behaviour, but I think I need a way to override the EDID informations an tell KODI/CoreElec that all refresh rates should be allowed.

Any suggestions?

Kind regards
Bastian

There are a few threads on this / white lists etc

If it works let us know

I think I found the clue by myself and I want to share it in case someone else might need it.

The autodicovered edid informations are stored in /sys/class/amhdmitx/amhdmitx0/disp_cap .
With my single HDMI out setup I had an disp_cap file that included all the informations I need.
With the help of cat /sys/class/amhdmitx/amhdmitx0/disp_cap > /storage/.kodi/userdata/disp_cap I copied this file into the “userland”.
When rebooting again with my dual HDMI out setup, the /sys/class/amhdmitx/amhdmitx0/disp_cap had only the few entrys as before.
But additionally the disp_cap in the “userland” seems to be analysed and I see all the refresh rates in KODI.
24p Movies are running smooth.

From the description you gave, It sounds like Kodi and CoreELEC are doing what they should with the information your AVR is passing to your C2, and that the AVR is sending a different list of supported modes in the edid information based on what is attached to it.

@cdu13a
you are absolutely right.

Technically the problem is the wrong edid information provided by the AVR (Denon x4200w) when using the dual HDMI output.
There is no problem or bug with KODI or CoreELEC.

But I’ve been searching for a solution.
Using the /storage/.kodi/userdata/disp_cap with the correct resolutions and refresh rates I am able to circumvent this problem.

Sounds like the AVR gets both EDIDs (TV & RPi), and forwards only the modes present in both sinks.
So maybe check the EDID provided by RPI (likely you will only see 59.94, 60.00 there).

@rho-bot
very good point.
The second HDMI out is connect to a HDMI -> Composite converter (https://www.amazon.de/gp/product/B01AG0MDY4/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&psc=1)
For the sake of completeness this is conected to an USB video grabber which is connected to the RPI.

If I start the setup in HDMI out Mode but with the HDMI -> Composite converter disconnected, the EDID information includes all resolutions and refresh rates.
Doing the same again with the converter connected, many refresh rates are missing.

Obviously the AVR delivers the EDID informations that should be compatible with both HDMI outs.

So I have 3 possibillities:

  1. Overriding EDID with /storage/.kodi/userdata/disp_cap, for the C2 with KODI and CoreELEC this will do fine, but maybe other players (FireTV) might get the same problems.
  2. Getting another HDMI->Composite converter that is officially capable of all refresh rates. Device suggestions absolutely welcom :wink:
  3. Connecting an EDID Emulator between second HDMI out and Composite converter (https://www.amazon.de/ASSMANN-Emulator-für-Extender-Splitter-Matrix-Switcher-schwarz/dp/B079Z3LZLY/ref=sr_1_4?__mk_de_DE=ÅMÅŽÕÑ&crid=SI68TSH3WGO2&keywords=hdmi+edid+emulator&qid=1576576978&sprefix=HDMI+edid+%2Caps%2C161&sr=8-4)

At the moment the disp_cap trick helps a lot. But I think I will get an EDID emulator and give it a try.

Seems that the converter uses a cheap synchronous (line-based) downscaler, therefore only supports 60Hz in NTSC or 50Hz in PAL mode.
Does the converter really work properly when you force CE to output e.g. 24Hz video?
I would expect that you either get a non-conformant 24Hz NTSC signal, or a 60Hz NTSC with a sliced video…

Anyhow, if you use Hyperion for Ambilight, you may try to run Hyperion.NG addon within CE, making the converter & RPI obsolete:
https://discourse.coreelec.org/search?q=hyperion.ng%20ambilight

The Hyperion colors seem to be OK with other refresh rates, so I gues that this converter is working as exprected.
When starting with Hyperion I had the “simple” setup without HDMI in, but I wanted to have it workiing for all connected devices. Therefor I will have to stay with the converter.

What happens if you actually look at the composite output for the HDMI->Composite converter when you are playing 24p content at 24p?

There is no composite standard for 24p video - so unless it is frame buffering p24 and 3:2 converting it to i29.97 (aka 59.94i) - which would be pretty impressive for a cheap $10 converter - it must be doing something odd (which my not be an issue for Hyperion)

Your AVR is doing ‘the right thing’ in that it is only flagging refresh rates common to both connected displays (or sinks), so as your composite converter is only flagging 59.94/60Hz compatibility (and possibly 50Hz if it supports 625/50 PAL 4.43 as well as 525/59.94 NTSC 3.58) your AVR is limiting sources to those.

The easiest solution IF you are happy with how your HDMI->Composite->USB->Raspberry Pi->Hyperion chain works with all frame rates now - is to hard code an EDID grabbed from your TV+AVR without the Pi chain connected I would suggest. That’s assuming the ODroid C2 supports EDID override from a grabbed EDID file.

I think finding a 1080p24-friendly HDMI->Composite converter is going to be more tricky - and possibly quite expensive. (But you never know with some of these low cost devices that have functionality you wouldn’t expect…)

Good idea.
I just connected the converters composite out directly to the TV to see what happens.
When playing a 1080p/24 movie I get the correct picture through the component in. The TV recognizes it as 576i/50. The picture looks good to me.
Tomorrow I will get the HDMI edid emulator. I guess I won’t need to use the disp_cap config anymore with it.

Hi @all

I’d like to say tank you for this discussion.

I bought an HDMI edid emulator for 10 bugs, coppied the edid information from my LG TV onto it and connected it to the second HDMI out at the AVR. The HDMI -> composite converter is conneted on the other end of the edid emulator.
With this setup, the C2 with CoreELEC and Kodi detects all refresh rates that the TV is capable of.
I am able to use every refresh rate and resoltion, now. And the HDMI -> component converter works with this, too.