Is there a way to completely disable audio signal of HDMI output in an Amlogic system? Practically turning HDMI into DVI.
Audio output device options doesn’t provide the functionality I want.
The reason for my request is, my TV always displays processed filtered picture if it’s coming from HDMI. Even the game mode option doesn’t turn off that. Whether a TV box or a PC is connected, it doesn’t matter, always the same.
If I use the VGA port, on the other hand, it switches to the PC mode (which is otherwise hidden and unavailable) so the picture is crisp and clean and pixel perfect.
Now the twist is: On a Windows PC, If I delete the audio block from HDMI EDID file and override it using CRU utility, then connect to TV via HDMI, TV “recognizes” it and switches to PC mode.
I want to replicate it in CoreELEC, but I couldn’t find any option to override EDID file, but only specifying custom resolution modes.
Is there a way to make the HDMI output of the Coreelec device video-only (by means of EDID override, custom device tree or an Amlogic kernel specific feature)?
I found some leads at /sys/class/amhdmitx/amhdmitx0/aud_*, also a variable named hdmi_audio_off_flag in the kernel source. I hope there’s a way to invoke it without the need for recompiling the kernel.
While I haven’t tried that, I tried half of it and unfortunately I don’t think it’d work.
If I plug in DVI-HDMI adapter to DVI output of the graphics card, it works just like HDMI. Audio capability is recognized and audio is transmitted.
I guess the reason is because HDMI/DVI doesn’t have separate pins for audio (unlike CEC), and adapters are passive, so data signals are passed through. Only way to disable audio is from source. This why I’m looking for an option at the box side.
Sure, but if I’m gonna plug in HDMI cable to the box, and an HDMI cable to the TV. Then the box won’t be aware of any DVI, and still push audio signals along the data channel. These will right pass through the DVI adapters between. Which is why I don’t think this is a solution.
HDMI → VGA active adapter would be a solution, but those adapters are finicky as well thus I’d like to solve it in software if possible, please.
I mean, variable is right there at the kernel source, but from my understanding I need to recompile it with the #ifdef. I’d want to avoid recompiling if possible (to keep up with updates easily). I wonder if any of the toggles in /sys/class/amhdmitx/amhdmitx0/ would have the same effect.
Are you talking about active adapters like these? I don’t want to buy a separate equipment for that alone.
Simple passive DVI-HDMI adapter couldn’t do that. A/V signals are all passing together through TMDS data pins. I’m not talking about CEC/ARC which do have separate pins that can be blocked.
Wondering that your TV has no HDMI setting for PC mode, instead, you need to suppress audio instead…
Maybe that’s what you are looking for: coreelec:video_disp_cap [CoreELEC Wiki]
But keep in mind this is a bad workaround, and needs to be reverted when you connect to another TV…
And I’m also not sure about impact on audio routing when you replace disp_cap with a modified version w/o audio.