Lets move this over here.
RPi has made a lot of changes in HDMI Audio. Its really hard to trackdown without hardware to play with. Note the kms driver will only currently work on the 32bit kernels.
There are two modes now
Audio Provided by Firmware: This will show as CARD=b1 in alsa
config.txt cont
Audio Provided by kms driver: This will show as CARD=vc4hdmi in alsa
This requires you to load the graphics kernel modules. There is some commentary that edid information must be correct with the kms driver.
Then your config.txt would look like
This also requires a custom alsa configuration.
Now create a new file /usr/local/share/alsa/cards/vc4-hdmi.conf with the contents.
Then make sure to add to your backup. Edit /opt/.filetool.lst and add to the end of the file.
usr/local/share/alsa/cards/vc4-hdmi.conf
backup and then reboot.
RPi has made a lot of changes in HDMI Audio. Its really hard to trackdown without hardware to play with. Note the kms driver will only currently work on the 32bit kernels.
There are two modes now
Audio Provided by Firmware: This will show as CARD=b1 in alsa
config.txt cont
Code:
dtparam=audio=on
audio_pwm_mode=2
hdmi_drive=2
hdmi_force_hotplug=1
hdmi_force_edid_audio=1
This requires you to load the graphics kernel modules. There is some commentary that edid information must be correct with the kms driver.
Code:
pcp-load -wi graphics-KERNEL.tcz
Code:
dtparam=audio=off
dtoverlay=vc4-kms-v3d (or vc4-kms-v3d-pi4 if you have a pi4)
hdmi_drive=2
hdmi_force_hotplug=1
hdmi_force_edid_audio=1
Code:
sudo rm -f /usr/local/share/alsa/cards/vc4-hdmi.conf
Code:
# Configuration for the VC4-HDMI sound card using software IEC958
# subframe conversion
<confdir:pcm/hdmi.conf>
vc4-hdmi.pcm.hdmi.0 {
@args [ CARD AES0 AES1 AES2 AES3 ]
@args.CARD {
type string
}
@args.AES0 {
type integer
}
@args.AES1 {
type integer
}
@args.AES2 {
type integer
}
@args.AES3 {
type integer
}
type iec958
slave {
format IEC958_SUBFRAME_LE
pcm {
type hooks
slave.pcm {
type hw
card $CARD
device 0
}
hooks.0 {
type ctl_elems
hook_args [
{
name "IEC958 Playback Default"
optional true
lock true
preserve true
value [ $AES0 $AES1 $AES2 $AES3 ]
}
]
}
}
}
status [ $AES0 $AES1 $AES2 $AES3 ]
}
# default with plug
vc4-hdmi.pcm.default {
@args [ CARD ]
@args.CARD {
type string
}
type plug
slave.pcm {
type softvol
slave.pcm {
@func concat
strings [ "hdmi:" $CARD ]
}
control {
name "PCM Playback Volume"
card $CARD
}
}
}
usr/local/share/alsa/cards/vc4-hdmi.conf
backup and then reboot.