Dolby Vision for Minix U22X-J (Max) and Ugoos AM6+

I’m on 20.4. Does anyone else get crashes while seeking or resuming on P7 FEL/MEL films?

If I stop a movie 3/4th in, I will crash multiple times to the point I can’t get back to the same spot. Even when trying to seek it while eventually crash the player/Kodi and enter safe mode.

Log attached: https://paste.coreelec.org/aURidW

I see there is a line in the 20.5 changelog that reads that DV updates were made.

Does this address the MEL issues? Do we still need the startup script to set the wait delay?

Link the commit. There is no change done to DV.

" * Fixed Dolby Vision on Amlogic-ng"

Or that’s just for the regular ng… Is it possible to get a more permanent fix for the MEL issue vs a startup script?

Not Amlogic-ng-dv…

Use refresh rate change, then you don’t have to force anything. It sets 8bit in tv-led correctly.

i already on start/stop, no change

Not according to my TV. Switching to 24hz for some reason the bitrate for tv led still gets set to 12-bit.

Found some time to get the code compiling and made some code changes to have it ignore the OSD when determining if the processing should be with graphics or video priority.

When it uses graphics priority it is fixing the luminance to min 50 max 4000 nits and processes the rpu data etc according to those values - if that matches your display then probably no need for any change. My LG being an OLED is well under that and is indicating it is min 1 and max 700 - though being 6 years old now even that maybe optimistic!


The OSD needs to stay on for subtitles - I have not found a way to force that plane off yet in the processing, but with this change the rpu data should be being applied according to the connected displays min and max luminance (note: I have only been testing in display led mode (aka: tv-led, sink-led, receiver-led).

I have confirmed with @Kaan’s rpu response test file, the rpu is still being applied but now the output is more appealing to me with a better sense of depth, subtle colour and contrast improvement - previously I felt it was pushing too bright for my display and having a slight flattening effect . (granted this is for my setup in which this maybe more obvious).

The changes have been implemented though another parameter - so can change on the fly whilst watching to judge more easily the effect.

The code changes will:

  • Change the wait delay from 2 to 16 for better mel detection.
  • Change the flags from 0x05 to 0x0D, adding FLAG_USE_SINK_MIN_MAX to set the luminance for the processing according to the HDMI comms from the Display.
  • Add an additional parameter to effectively force video priority - even though the OSD is always on.
  • Make sure the luminance of the graphics is though still ok to show subtitles correctly and the OSD when seeking / changing settings etc.

If you want to try the same - I think you should be able to see the changes needed here:

For those interested I also stripped out non G12 SoC related code (well most of it - I think still some more to go), so I could understand more what is going on in that module without scrolling endlessly, can find that here - this is the version I run:

Good luck with trying it out!

3 Likes

Interesting, I thought it was already doing this in tv-led mode. Can’t wait to try it out.

How would I go about trying this though?

Curious, I was under the impression that in true TV-led DV, the player doesn’t even need to worry about the min/max nits your TV can handle, because the TV is supposed to deal with that?

I wonder if this is somehow related to the fact that supposedly this SoC is always processing the RPU whether LLDV or TV-led. And yet, there’s a combination of logic that both pass/handles the min/max values and other parts in the driver that do not…

How does this all compare with player-led?

Though I don’t have these changes in place, I do want to say that TV-led DV seems a little less bright than player-led for my LG TV. So perhaps this is related to your findings.

@Kaan It would be similar to setting the wait delay. Though I can’t remember if you can pass decimal values for a param that’s set as hex or whether it has to be one or the other.

It needs a combination of parameter changes and code change as currently the OSD is always on (guess it probably needs to stay that way for subtitles - but would be interesting to see if any change when that plane is out of the loop in the picture processing) this is forcing the playback into graphics priority which is then ignoring the sink (tv) luminance values.

Should get some time at the weekend to upload a tar file somewhere with the changes - to try out - note can only say this is working/advisable for player led (kodi default) and on the Ugoos AM6B+.

Your experience is consistent with the reports in this thread on AVSforum:

CM2.9 Fake-TV Led External Players (i.e. Zidoo, Ugoos AMB6+):
TV-LED: Darker than True TV-Led. Colors similar to real TV-Led. No L2 Chroma Weight.
LLDV: Brightness comparable to True TV-LED. Colors not as good as True TV-Led. No L2 Chroma Weight.

Can someone explain me why in that thread there’s an info stating that the Minix will only play FEL if using Ugoos firmware? That’s just not true (I posted there now).

The U22X-J / AM6+ can now use CE-NG (rather than CE-NG-DV) with the discovery of a 64bit s905x2 dovi.ko module that appears to work on any Dolby Vision certified G12 device (maybe even SM1).

CE-NG-DV and CE-NG both have the same Dolby Vision code, so DV playback is no better or worse. It’s confirmed working on the Minix U22X-J and 2nd gen Cube.

I created a separate post here since this will involve switching build lines and dovi modules. Setup is very easy.

2 Likes

And this is the dovi.ko module from Fire TV Cube Gen3 with CMv4.0 support, might work with Homatics.
For 64 bit 5.4.125 kernel: [link]

1 Like

has anyone tried this on the homatics? Does it work with the same copy method as the one above for the am6b+? A homaticsbox with full fel dv playback and cm4.0 support would be really nice…

From what I have seen, the DV modules are only compatible by SOC families. The 3rd gen Cube use an A311D2 (T7), The Homatics R Box s905x4 (SC2). The amdolby_vision module has conditions for different SOC families, I doubt that the 3rd gen Cube module would work with the R Box.

There is also the possibility of Amazon specific modifications. That’s why I had to abandon the 2nd gen Cube (G12) dovi.ko for a more generic s905x2 (G12) dovi.ko

EDIT: but yes you can try different modules by placing them at /storage/dovi.ko and rebooting. I think that works on CE NG & NE

2 Likes

Unfortunately FEL does not work on Fire TV Cube 3rd Gen, but CMv4.0 would be an improvement.

Added some further parameters to play with and got some interesting results.

As usual I am using display led (aka tv-led)

Changing the luminance looks to only effect the video when in graphics priority mode (i.e. the mode for menus / HDMV etc. please see dolby doc in previous post for more info), in video priority mode it is not effecting the picture, only the OSD e.g. the kodi on screen controls etc.

Turns out it was putting the processing into video priority mode that is improving the image.
I imagine we are still in “fake tv-led” according to others findings, but as it is not changing the luminance in this mode I can still hold out hope it might yet be pushing the RPU to the tv for processing in video priority.


So to try it out for yourself:

I uploaded a tar here: 213.54 MB file on MEGA

I recommend doing a clean install of 20.4 ng dv and then applying this tar as an upgrade on your Ugoos AM6B+.

This build is for testing out mkv p7 mel and fel - not sure how it would behave with other material.

It gives three new parameters:

dolby_vision_hdmi_lum_min set to 50 by default
dolby_vision_hdmi_lum_max set to 4000 by default

These will override the HDMI luminance values being picked up in code from HDMI comms (e.g. the EDID)
I have set them high by default for simple comparisons to base.

dolby_vision_force_hdmi_lum set to 0 by default

Set this to 1 to use the new hdmi lum min and max values
Set this to 0 to keep the HDMI EDID values.


The code will now by default run in video priority mode (when a video is playing)
note: setting /sys/module/amdolby_vision/parameters/dolby_vision_graphics_priority to 1 will be reverted back to 0 during playback.

In order to set graphics priority you will need to use the force flag: FLAG_PRIORITY_GRAPHIC i.e.:

echo 0x20000D > /sys/module/amdolby_vision/parameters/dolby_vision_flags to set graphics priority
echo 0x0D > /sys/module/amdolby_vision/parameters/dolby_vision_flags to revert back to video priority


Things to try:

  • echo 1 > /sys/module/amdolby_vision/parameters/dolby_vision_force_hdmi_lum
  • Play a video and switch between graphics and video priority i.e.
  • echo 0x20000D > /sys/module/amdolby_vision/parameters/dolby_vision_flags
  • echo 0x0D > /sys/module/amdolby_vision/parameters/dolby_vision_flags

You should see a large difference in the picture, in both settings the video should respond to RPU.

  • In video priority mode switch on and off dolby_vision_force_hdmi_lum
  • echo 1 > /sys/module/amdolby_vision/parameters/dolby_vision_force_hdmi_lum
  • echo 0 > /sys/module/amdolby_vision/parameters/dolby_vision_force_hdmi_lum

You should see a difference in the kodi on screen controls, but the video will stay the same, again video should be responding to the RPU.

When in graphics priority mode with dolby_vision_force_hdmi_lum on, you can then play with the min and max lum and it should effect everything including the video.


The default settings on this build (combined with code change) are set to what I think is best so far:

video priority
dolby_vision_wait_delay set to 16 for mel detection


You can check the log to see the change in graphics / video priority as detailed in previous posts, using:

journalctl -kf


Hope I explained everything right, let me know what you find.

4 Likes