It could be caused by my stupid mistake or something else. As fiddling with the GUI of AlsaMixer (v1.1.0) I changed the number of “ADMAIF2 Channels”. But ended up the number stays at 6 or higher, won’t go back down to 0. As a result, the video+audio recording always appears in fast forward mode!
The “stuck on 6” problem would happen to other channels as well.
For reference, I started the AlsaMixer GUI by a terminal command:
alsamixer -c tegrasndt186ref
or
alsamixer -c 1
Man, this sounds crazy. How do I reset the value for the devices?
Please help.
This is a bug in the ADMAIF driver and will be fixed in a future release. If you are able to rebuild and flash the kernel, then please try making the following change …
diff --git a/sound/soc/tegra-alt/tegra210_admaif_alt.c b/sound/soc/tegra-alt/tegra210_admaif_alt.c
index 0c73af735bdd..7b6ff5d6a4e4 100644
--- a/sound/soc/tegra-alt/tegra210_admaif_alt.c
+++ b/sound/soc/tegra-alt/tegra210_admaif_alt.c
@@ -557,7 +557,7 @@ static int tegra210_admaif_put_format(struct snd_kcontrol *kcontrol,
char buf[50];
if (strstr(kcontrol->id.name, "Channels")) {
- if (value > 0 && value <= 16)
+ if (value >= 0 && value <= 16)
admaif->override_channels[mc->reg] = value;
else
return -EINVAL;
Otherwise, what worked for me was …
Edit the /lib/systemd/system/alsa-restore.service file and comment out the ExecStart and ExecStop.
#
# Note that two different ALSA card state management schemes exist and they
# can be switched using a file exist check - /etc/alsa/state-daemon.conf .
#
[Unit]
Description=Save/Restore Sound Card State
ConditionPathExists=!/etc/alsa/state-daemon.conf
ConditionPathExistsGlob=/dev/snd/control*
After=alsa-state.service
[Service]
Type=oneshot
RemainAfterExit=true
ExecStartPre=/bin/mkdir -p /run/alsa
#ExecStart=-/usr/sbin/alsactl -E HOME=/run/alsa restore
#ExecStop=-/usr/sbin/alsactl -E HOME=/run/alsa store
If the file /var/lib/alsa/asound.state exists remove it (I see it did not exist for you but double check again before rebooting)
Reboot board
Edit the /lib/systemd/system/alsa-restore.service file and uncomment out the ExecStart and ExecStop.
Re-flashing the board again will also work but obviously that is a last resort!
Currently there is a udev rule that is removing the asound.state file on boot and so you will not find this file. This is something else that I am fixing for future releases.