This time, I identified my issue. To get the video display properly through the HDMI I have to set : xrandr --output DVI-I-1 --mode 1280x720 --rate 60
If I don’t specify the –output DVI-I-1 I get a black screen display at startup. But Batocera works properly in background. If I connect my bluetooth gamepad, and browse the menu like a blind mouse, I can launch a game and hear the game sound.
But when I force the DVI-I with xrandr to get the video, the HDMI audio signal isn’t provided anymore.
Edit : if I force the display into 1024×768 I get the video and audio HDMI output on my TV screen.
/userdata/system/.xinitrc content is :
xrandr -s 1024x768 -r 60
/userdata/system/.asoundrc content is :
pcm.!default { type plug slave { pcm "hw:1,3" } }
ctl.!default { type hw card 1 }
if I #xrandr -s 1024×768 -r 60 to let the resolution autosize the TV screen, HDMI audio is broken.
Edit 2 : I plugged my new PC case to an HDMI capture card and I can get video+audio through the HDMI cable using 1280×720@60Hz in the video capture software Obs Studio.
So, I suspect the EDID datagram provided from the TV’s firmware is locking some video resolution.
If I take a look in the /var/log/Xorg.0.log, I can see :
[ 15.602] (II) modeset(0): EDID for output DVI-I-1
[ 15.603] (II) modeset(0): Manufacturer: PHL Model: 1 Serial#: 16843009
[ 15.603] (II) modeset(0): Year: 2006 Week: 1
[ 15.603] (II) modeset(0): EDID Version: 1.3
[ 15.603] (II) modeset(0): Digital Display Input
[ 15.603] (II) modeset(0): Max Image Size [cm]: horiz.: 64 vert.: 36
[ 15.603] (II) modeset(0): Gamma: 2.20
[ 15.603] (II) modeset(0): No DPMS capabilities specified
[ 15.603] (II) modeset(0): Supported color encodings: RGB 4:4:4 YCrCb 4:4:4
[ 15.603] (II) modeset(0): First detailed timing is preferred mode
[ 15.603] (II) modeset(0): redX: 0.640 redY: 0.330 greenX: 0.290 greenY: 0.600
[ 15.603] (II) modeset(0): blueX: 0.150 blueY: 0.060 whiteX: 0.289 whiteY: 0.299
[ 15.603] (II) modeset(0): Supported established timings:
[ 15.603] (II) modeset(0): 640x480@60Hz
[ 15.603] (II) modeset(0): 800x600@60Hz
[ 15.603] (II) modeset(0): 1024x768@60Hz
[ 15.603] (II) modeset(0): Manufacturer's mask: 0
However I can get an HDMI output 1280×720@60Hz with audio while using a Windows 10 or an Ununbu operating system on this same TV set. I’m surprised to know its HDMI input only supports 4:3 ratio while its screen ratio is 16:9 and its natives resolutions are 720p and 1080i.
Edit 3 I used EDID Viewer as a free Windows tool from Eldim and checked the EDID content. And it confirms the TV’s HDMI input should only accepts 640×480@60Hz, 800×600@60Hz and 1024×768@60Hz. I understand why I found it on the pavment^^
But now, if Windows 10 and Ubuntu can display 1280×720@60Hz and 1920×1080@60Hz on this TV screen with audio playback, there is something to bypass/overide/ignore this incomplete EDID datagram.
Edit 4 I tried to dupe the EDID datagram with 3 methods :
. add a new mode with the xrandr --newmode Modeline "1280x720_60.00" 74.50 1280 1344 1472 1664 720 723 728 748 -hsync +vsync
command
. force the video output a boot up with the value video=1280x720@60
in the grub.cfg/syslinux.cfg file
. force some customised EDID files at boot up with the value drm.edid_firmware=edid/fake_edid.bin
in the grub.cfg/syslinux.cfg file
I’m unfortunately unable to get HDMI audio playback at 1280×720p. I read somewhere EDID provide 2 communications mode : VESA mode for computer display and true HDMI mode supporting audio. And there is a miss in the switching mode because the video card provide HDMI over DVI-I.
I used Advantiv EEditGold to modify my EDID dump file. I was able to remove all timings and replace the 1024×768 timing with my 1280×720 values. 1024×768 doesn’t work anymore but 1280×720 is only producing the video output. 1024×768 was set in the VESA display mode area of the EDID dump file. Seems something is hard coded on the ATI driver part or something like that.