I solved it by sharing the archive on the Discord server (to which I can’t send you an invite if you’re not already a member), but now that I think of it, I could have also uploaded it to cloud storage and shared the link here.
Here is my debug file.
Okay, so @criticalkeith:
- Flash full firmware, RW_LEGACY won’t work correctly
- You’re missing UCMs. Did you run Tree’s script?
Yes.
I ran the tree script this morning with very little difference in sound. Still garbled.
Can I flash the firmware without a Suzy Cable?
-Keith
Yes, you will simply need to boot with battery disconnected.
I’ll take a look at UCM for this machine, can you post the output of:
strace alsactl init
?
Thank you. I think I know where the problem is, but unfortunately you’ll need to wait until the weekend.
I’m currently very busy in my day job, so it’s a bit challenging to work on the project.
No problem at all. Take your time. The Day job always takes precedence.
Every bit helps, and if the debug stuff helps other people, then that’s a good thing.
Thanks for the quick replies thus far.
Keith
Once again, thank you for your interest in this issue, and you shouldn’t have felt obliged to explain yourself.
@criticalkeith’s comment made me reminisce about the time I subscribed to the LAMMPS mailing list, my first ever dev community. I thought it was astonishing how people were willing to lend their support to complete strangers online, and for free. Then, I discovered StackOverflow and was doubly amazed. Sure, the reputation counts for something, but so does someone’s free time and their work commitments. Anyhow, I digress. What I really wish to say by all of this is that the world of open-source looks very much like a pay-it-forward-type of situation, where the benevolence of one user who spends their spare time writing free software or providing free support goes on to inspire others to do the same. That’s why I believe, like many others, that open-source it’s just a marketing ploy: it’s a philosophy, a way of life. Having said that, it’s still nice that that contribution is recognized and applauded, more often than not, and comments like the one above attest to this sentiment.
Still no fix, unfortunately. I just want to check with you whether you’re also experiencing mic issues because as things stand, the device is unusable for video calls.
I haven’t tried with a mic. I can try that over the weekend.
I did try to update the firmware with the latest version, but every time I press 1 (I am using the RW LEGACY mode), it cancels out and I can’t do anything. Seems like it’s stuck.
I’ll let you know about the mic soon, if I can get it to work.
Thanks.
Try running the script from a live USB session of Ubuntu 24.04, although if you’re on 4.22.4, there’s not much else to gain from updating it.
The kernel version, however, is more important in this regard. This commit was introduced in 6.6 which is the lts version I’m currently running and is, quite possibly, why I have audio on the device, albeit not fully functional. I was previously on 6.8 but it used to crash twice a day.
The release notes for 6.9 and 6.10 don’t mention any bug fixes for sof-rt5682, though I still would like to try them.
I’ll forget about the firmware for now.
I’m on Tumbleweed, kernel 6.9.7.1-default. The sound is still hissy, although I can nearly make it out. Is that also your current situation?
Thank you!!
Keith
Sorry for not responding sooner but I had a few important errands to run before leaving for a long trip.
That’s about right. I just tested 6.9.5-1 and 6.10.0-rc4-1 and noticed no change in the internal speaker audio quality from 6.6, as expected.
@elly, I understand that you’re busy at the moment, so can you just share what you think the problem is, so that maybe we can narrow the search and try and fix it ourselves? Thanks.
output of strace on OMNIGUL:
brk(NULL) = 0x56106b7f7000
access(“/etc/ld.so.preload”, R_OK) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, “/etc/ld.so.cache”, O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=100483, …}) = 0
mmap(NULL, 100483, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f8541fc5000
close(3) = 0
openat(AT_FDCWD, “/lib64/libasound.so.2”, O_RDONLY|O_CLOEXEC) = 3
read(3, “\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\0\0\0\0\0\0\0”…, 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=1100672, …}) = 0
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f8541fc3000
mmap(NULL, 1074448, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f8541ebc000
mmap(0x7f8541edd000, 675840, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x21000) = 0x7f8541edd000
mmap(0x7f8541f82000, 229376, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xc6000) = 0x7f8541f82000
mmap(0x7f8541fba000, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xfd000) = 0x7f8541fba000
close(3) = 0
openat(AT_FDCWD, “/lib64/libc.so.6”, O_RDONLY|O_CLOEXEC) = 3
read(3, “\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0`\242\2\0\0\0\0\0”…, 832) = 832
pread64(3, “\6\0\0\0\4\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0”…, 784, 64) = 784
fstat(3, {st_mode=S_IFREG|0755, st_size=2440240, …}) = 0
pread64(3, “\6\0\0\0\4\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0”…, 784, 64) = 784
mmap(NULL, 2034544, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f8541ccb000
mmap(0x7f8541cf3000, 1495040, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x28000) = 0x7f8541cf3000
mmap(0x7f8541e60000, 319488, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x195000) = 0x7f8541e60000
mmap(0x7f8541eae000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1e2000) = 0x7f8541eae000
mmap(0x7f8541eb4000, 31600, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f8541eb4000
close(3) = 0
openat(AT_FDCWD, “/lib64/libm.so.6”, O_RDONLY|O_CLOEXEC) = 3
read(3, “\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\0\0\0\0\0\0\0”…, 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=948240, …}) = 0
mmap(NULL, 929808, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f8541be7000
mmap(0x7f8541bf7000, 491520, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x10000) = 0x7f8541bf7000
mmap(0x7f8541c6f000, 368640, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x88000) = 0x7f8541c6f000
mmap(0x7f8541cc9000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xe1000) = 0x7f8541cc9000
close(3) = 0
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f8541be5000
arch_prctl(ARCH_SET_FS, 0x7f8541be5b80) = 0
set_tid_address(0x7f8541be5e50) = 4400
set_robust_list(0x7f8541be5e60, 24) = 0
rseq(0x7f8541be64a0, 0x20, 0, 0x53053053) = 0
mprotect(0x7f8541eae000, 16384, PROT_READ) = 0
mprotect(0x7f8541cc9000, 4096, PROT_READ) = 0
mprotect(0x7f8541fba000, 32768, PROT_READ) = 0
mprotect(0x56105db52000, 4096, PROT_READ) = 0
mprotect(0x7f8542017000, 8192, PROT_READ) = 0
prlimit64(0, RLIMIT_STACK, NULL, {rlim_cur=81921024, rlim_max=RLIM64_INFINITY}) = 0
munmap(0x7f8541fc5000, 100483) = 0
getrandom(“\xa2\x18\x5d\x48\x4b\x4c\xc5\x01”, 8, GRND_NONBLOCK) = 8
brk(NULL) = 0x56106b7f7000
brk(0x56106b818000) = 0x56106b818000
access(“/sys/kernel/uevent_seqnum”, F_OK) = 0
openat(AT_FDCWD, “/dev/snd/controlC0”, O_RDONLY|O_CLOEXEC) = 3
ioctl(3, SNDRV_CTL_IOCTL_CARD_INFO, 0x7ffce77816b0) = 0
close(3) = 0
openat(AT_FDCWD, “/var/lib/alsa/card0.conf.d”, O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = -1 ENOENT (No such file or directory)
futex(0x7f8541fc2508, FUTEX_WAKE_PRIVATE, 2147483647) = 0
newfstatat(AT_FDCWD, “/usr/share/alsa/alsa.conf”, {st_mode=S_IFREG|0644, st_size=10092, …}, 0) = 0
openat(AT_FDCWD, “/usr/share/alsa/alsa.conf”, O_RDONLY) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=10092, …}) = 0
read(3, “#\n# ALSA library configuration “…, 4096) = 4096
read(3, “iption "Direct hardware device w”…, 4096) = 4096
read(3, “e hw\n\tcard {\n\t\t@func getenv\n\t\tva”…, 4096) = 1900
read(3, “”, 4096) = 0
close(3) = 0
access(”/var/lib/alsa/conf.d”, R_OK) = -1 ENOENT (No such file or directory)
access(“/usr/etc/alsa/conf.d”, R_OK) = -1 ENOENT (No such file or directory)
access(“/etc/alsa/conf.d”, R_OK) = 0
newfstatat(AT_FDCWD, “/etc/alsa/conf.d”, {st_mode=S_IFDIR|0755, st_size=80, …}, 0) = 0
openat(AT_FDCWD, “/etc/alsa/conf.d”, O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = 3
fstat(3, {st_mode=S_IFDIR|0755, st_size=80, …}) = 0
getdents64(3, 0x56106b8097f0 / 4 entries /, 32768) = 136
getdents64(3, 0x56106b8097f0 / 0 entries */, 32768) = 0
close(3) = 0
openat(AT_FDCWD, “/etc/alsa/conf.d/50-pipewire.conf”, O_RDONLY) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=1842, …}) = 0
read(3, “# Add a specific named PipeWire “…, 4096) = 1842
read(3, “”, 4096) = 0
close(3) = 0
openat(AT_FDCWD, “/etc/alsa/conf.d/99-pipewire-default.conf”, O_RDONLY) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=226, …}) = 0
read(3, “pcm.!default {\n type pipewire”…, 4096) = 226
read(3, “”, 4096) = 0
close(3) = 0
access(”/etc/asound.conf”, R_OK) = 0
newfstatat(AT_FDCWD, “/etc/asound.conf”, {st_mode=S_IFREG|0644, st_size=55, …}, 0) = 0
openat(AT_FDCWD, “/etc/asound.conf”, O_RDONLY) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=55, …}) = 0
read(3, “#\n# Place your global alsa-lib c”…, 4096) = 55
read(3, “”, 4096) = 0
close(3) = 0
access(“/home/ak/.asoundrc”, R_OK) = -1 ENOENT (No such file or directory)
access(“/home/ak/.config/alsa/asoundrc”, R_OK) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, “/dev/snd/controlC0”, O_RDONLY|O_CLOEXEC) = 3
ioctl(3, SNDRV_CTL_IOCTL_CARD_INFO, 0x7ffce7781000) = 0
close(3) = 0
openat(AT_FDCWD, “/dev/snd/controlC0”, O_RDWR|O_CLOEXEC) = 3
ioctl(3, SNDRV_CTL_IOCTL_PVERSION, 0x7ffce77813ac) = 0
ioctl(3, SNDRV_CTL_IOCTL_CARD_INFO, 0x7ffce7781580) = 0
access(“/usr/share/alsa/ucm2/ucm.conf”, R_OK) = 0
openat(AT_FDCWD, “/usr/share/alsa/ucm2/ucm.conf”, O_RDONLY) = 4
fstat(4, {st_mode=S_IFREG|0644, st_size=3599, …}) = 0
read(4, “#\n# This is the toplevel file in”…, 4096) = 3599
read(4, “”, 4096) = 0
close(4) = 0
openat(AT_FDCWD, “/usr/share/alsa/ucm2/lib/generic.conf”, O_RDONLY) = 4
fstat(4, {st_mode=S_IFREG|0644, st_size=452, …}) = 0
read(4, “#\n# This is generic UCM configur”…, 4096) = 452
read(4, “”, 4096) = 0
close(4) = 0
access(“/usr/share/alsa/ucm2/conf.d/sof-rt5682/Google-Omnigul-rev3.conf”, R_OK) = -1 ENOENT (No such file or directory)
access(“/usr/share/alsa/ucm2/conf.d/sof-rt5682/sof-rt5682.conf”, R_OK) = 0
newfstatat(AT_FDCWD, “/usr/share/alsa/ucm2/conf.d/sof-rt5682/sof-rt5682.conf”, {st_mode=S_IFREG|0644, st_size=1009, …}, AT_SYMLINK_NOFOLLOW) = 0
openat(AT_FDCWD, “/usr/share/alsa/ucm2/conf.d/sof-rt5682/sof-rt5682.conf”, O_RDONLY) = 4
fstat(4, {st_mode=S_IFREG|0644, st_size=1009, …}) = 0
read(4, "Syntax 6\n\nSectionUseCase."HiFi" "…, 4096) = 1009
read(4, “”, 4096) = 0
close(4) = 0
openat(AT_FDCWD, “/usr/share/alsa/ucm2/platforms/intel-sof/platform.conf”, O_RDONLY) = 4
fstat(4, {st_mode=S_IFREG|0644, st_size=1563, …}) = 0
read(4, "# platform detection\n\nIf.glk {\n "…, 4096) = 1563
read(4, “”, 4096) = 0
close(4) = 0
newfstatat(AT_FDCWD, “/sys/class/dmi/id/product_family”, {st_mode=S_IFREG|0444, st_size=4096, …}, AT_SYMLINK_NOFOLLOW) = 0
openat(AT_FDCWD, “/sys/class/dmi/id/product_family”, O_RDONLY) = 4
read(4, “Google_Brya\n”, 4095) = 12
close(4) = 0
newfstatat(AT_FDCWD, “/sys/class/dmi/id/product_family”, {st_mode=S_IFREG|0444, st_size=4096, …}, AT_SYMLINK_NOFOLLOW) = 0
openat(AT_FDCWD, “/sys/class/dmi/id/product_family”, O_RDONLY) = 4
read(4, “Google_Brya\n”, 4095) = 12
close(4) = 0
newfstatat(AT_FDCWD, “/sys/class/dmi/id/product_family”, {st_mode=S_IFREG|0444, st_size=4096, …}, AT_SYMLINK_NOFOLLOW) = 0
openat(AT_FDCWD, “/sys/class/dmi/id/product_family”, O_RDONLY) = 4
read(4, “Google_Brya\n”, 4095) = 12
close(4) = 0
brk(0x56106b839000) = 0x56106b839000
brk(0x56106b85a000) = 0x56106b85a000
newfstatat(AT_FDCWD, “/sys/class/dmi/id/product_name”, {st_mode=S_IFREG|0444, st_size=4096, …}, AT_SYMLINK_NOFOLLOW) = 0
openat(AT_FDCWD, “/sys/class/dmi/id/product_name”, O_RDONLY) = 4
read(4, “Omnigul\n”, 4095) = 8
close(4) = 0
newfstatat(AT_FDCWD, “/sys/class/dmi/id/product_family”, {st_mode=S_IFREG|0444, st_size=4096, …}, AT_SYMLINK_NOFOLLOW) = 0
openat(AT_FDCWD, “/sys/class/dmi/id/product_family”, O_RDONLY) = 4
read(4, “Google_Brya\n”, 4095) = 12
close(4) = 0
openat(AT_FDCWD, “/usr/share/alsa/ucm2/platforms/intel-sof/codecs.conf”, O_RDONLY) = 4
fstat(4, {st_mode=S_IFREG|0644, st_size=1683, …}) = 0
read(4, “# codec probing\n\n# headset codec”…, 4096) = 1683
read(4, “”, 4096) = 0
close(4) = 0
newfstatat(AT_FDCWD, “/sys/bus/i2c/devices/i2c-10EC5682:00/modalias”, 0x7ffce777f1d0, AT_SYMLINK_NOFOLLOW) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, “/sys/bus/i2c/devices/i2c-RTL5682:00/modalias”, {st_mode=S_IFREG|0444, st_size=4096, …}, AT_SYMLINK_NOFOLLOW) = 0
openat(AT_FDCWD, “/sys/bus/i2c/devices/i2c-RTL5682:00/modalias”, O_RDONLY) = 4
read(4, “acpi:RTL5682:\n”, 4095) = 14
close(4) = 0
newfstatat(AT_FDCWD, “/sys/bus/platform/devices/MX98357A:00/modalias”, 0x7ffce777f1d0, AT_SYMLINK_NOFOLLOW) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, “/sys/bus/platform/devices/MX98360A:00/modalias”, 0x7ffce777f1d0, AT_SYMLINK_NOFOLLOW) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, “/sys/bus/i2c/devices/i2c-MX98373:00/modalias”, 0x7ffce777f1d0, AT_SYMLINK_NOFOLLOW) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, “/sys/bus/i2c/devices/i2c-MX98390:00/modalias”, 0x7ffce777f1d0, AT_SYMLINK_NOFOLLOW) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, “/sys/bus/i2c/devices/i2c-10EC1011:00/modalias”, 0x7ffce777f1d0, AT_SYMLINK_NOFOLLOW) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, “/sys/bus/i2c/devices/i2c-10EC1015:00/modalias”, 0x7ffce777f1d0, AT_SYMLINK_NOFOLLOW) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, “/sys/bus/platform/devices/RTL1015:00/modalias”, 0x7ffce777f1d0, AT_SYMLINK_NOFOLLOW) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, “/sys/bus/platform/devices/RTL1019:00/modalias”, {st_mode=S_IFREG|0444, st_size=4096, …}, AT_SYMLINK_NOFOLLOW) = 0
openat(AT_FDCWD, “/sys/bus/platform/devices/RTL1019:00/modalias”, O_RDONLY) = 4
read(4, “acpi:RTL1019:\n”, 4095) = 14
close(4) = 0
openat(AT_FDCWD, “/usr/share/alsa/ucm2/codecs/rt5682s/init.conf”, O_RDONLY) = 4
fstat(4, {st_mode=S_IFREG|0644, st_size=447, …}) = 0
read(4, “# RT5682S specific volume contro”…, 4096) = 447
read(4, “”, 4096) = 0
close(4) = 0
openat(AT_FDCWD, “/usr/share/alsa/ucm2/conf.d/sof-rt5682/HiFi.conf”, O_RDONLY) = 4
fstat(4, {st_mode=S_IFREG|0644, st_size=2008, …}) = 0
read(4, “# headset codecs\n\nIf.rt5682 {\n\tC”…, 4096) = 2008
read(4, “”, 4096) = 0
close(4) = 0
openat(AT_FDCWD, “/usr/share/alsa/ucm2/common/pcm/split.conf”, O_RDONLY) = 4
fstat(4, {st_mode=S_IFREG|0644, st_size=8561, …}) = 0
read(4, “#\n# Split multichannel PCM strea”…, 4096) = 4096
read(4, “\t\t\t}\n\t\t}\n\t\tIf.pos13 {\n\t\t\tConditi”…, 4096) = 4096
read(4, “\t}\n\t\t}\n\t\tTrue {\n\t\t\tDefine.__pcmd”…, 4096) = 369
read(4, “”, 4096) = 0
close(4) = 0
openat(AT_FDCWD, “/usr/share/alsa/ucm2/codecs/hda/hdmi2345.conf”, O_RDONLY) = 4
fstat(4, {st_mode=S_IFREG|0644, st_size=502, …}) = 0
read(4, “# HDA HDMI devices\n\nInclude.hdmi”…, 4096) = 502
read(4, “”, 4096) = 0
close(4) = 0
openat(AT_FDCWD, “/usr/share/alsa/ucm2/codecs/hda/hdmi.conf”, O_RDONLY) = 4
fstat(4, {st_mode=S_IFREG|0644, st_size=732, …}) = 0
read(4, “#\n# Macro HDMI\n#\n# Arguments:\n#\n”…, 4096) = 732
read(4, “”, 4096) = 0
close(4) = 0
ioctl(3, SNDRV_CTL_IOCTL_ELEM_INFO, 0x7ffce7780bf0) = 0
ioctl(3, SNDRV_CTL_IOCTL_ELEM_INFO, 0x7ffce7780bf0) = 0
ioctl(3, SNDRV_CTL_IOCTL_ELEM_INFO, 0x7ffce7780bf0) = 0
ioctl(3, SNDRV_CTL_IOCTL_ELEM_INFO, 0x7ffce7780bf0) = 0
openat(AT_FDCWD, “/usr/share/alsa/ucm2/codecs/rt5682s/headset.conf”, O_RDONLY) = 4
fstat(4, {st_mode=S_IFREG|0644, st_size=811, …}) = 0
read(4, “SectionDevice."Headphones" {\n\tCo”…, 4096) = 811
read(4, “”, 4096) = 0
close(4) = 0
openat(AT_FDCWD, “/usr/share/alsa/ucm2/codecs/rt1019p/speaker.conf”, O_RDONLY) = 4
fstat(4, {st_mode=S_IFREG|0644, st_size=301, …}) = 0
read(4, “SectionDevice."Speaker" {\n\tComme”…, 4096) = 301
read(4, “”, 4096) = 0
close(4) = 0
openat(AT_FDCWD, “/dev/snd/controlC0”, O_RDWR|O_CLOEXEC) = 4
ioctl(4, SNDRV_CTL_IOCTL_PVERSION, 0x7ffce7780fec) = 0
ioctl(4, SNDRV_CTL_IOCTL_CARD_INFO, 0x7ffce7781070) = 0
close(4) = 0
openat(AT_FDCWD, “/dev/snd/controlC0”, O_RDWR|O_CLOEXEC) = 4
ioctl(4, SNDRV_CTL_IOCTL_PVERSION, 0x7ffce778126c) = 0
ioctl(4, SNDRV_CTL_IOCTL_CARD_INFO, 0x7ffce7781440) = 0
ioctl(4, SNDRV_CTL_IOCTL_ELEM_INFO, 0x56106b847d80) = 0
ioctl(4, SNDRV_CTL_IOCTL_ELEM_READ, 0x56106b809d90) = 0
ioctl(4, SNDRV_CTL_IOCTL_ELEM_WRITE, 0x56106b809d90) = 0
ioctl(4, SNDRV_CTL_IOCTL_ELEM_INFO, 0x56106b812ef0) = 0
ioctl(4, SNDRV_CTL_IOCTL_ELEM_READ, 0x56106b809d90) = 0
ioctl(4, SNDRV_CTL_IOCTL_ELEM_WRITE, 0x56106b809d90) = 0
ioctl(4, SNDRV_CTL_IOCTL_ELEM_INFO, 0x56106b80e360) = 0
ioctl(4, SNDRV_CTL_IOCTL_ELEM_READ, 0x56106b809d90) = 0
ioctl(4, SNDRV_CTL_IOCTL_ELEM_WRITE, 0x56106b809d90) = 0
ioctl(4, SNDRV_CTL_IOCTL_ELEM_INFO, 0x56106b81b740) = 0
ioctl(4, SNDRV_CTL_IOCTL_ELEM_READ, 0x56106b809d90) = 0
ioctl(4, SNDRV_CTL_IOCTL_ELEM_INFO, 0x56106b81b740) = 0
ioctl(4, SNDRV_CTL_IOCTL_ELEM_INFO, 0x56106b81b740) = 0
ioctl(4, SNDRV_CTL_IOCTL_ELEM_INFO, 0x56106b81b740) = 0
ioctl(4, SNDRV_CTL_IOCTL_ELEM_WRITE, 0x56106b809d90) = 0
ioctl(4, SNDRV_CTL_IOCTL_ELEM_INFO, 0x56106b846470) = 0
ioctl(4, SNDRV_CTL_IOCTL_ELEM_READ, 0x56106b809d90) = 0
ioctl(4, SNDRV_CTL_IOCTL_ELEM_WRITE, 0x56106b809d90) = 0
ioctl(4, SNDRV_CTL_IOCTL_ELEM_INFO, 0x56106b81d0c0) = 0
ioctl(4, SNDRV_CTL_IOCTL_ELEM_READ, 0x56106b809d90) = 0
ioctl(4, SNDRV_CTL_IOCTL_ELEM_INFO, 0x56106b81d0c0) = 0
ioctl(4, SNDRV_CTL_IOCTL_ELEM_WRITE, 0x56106b809d90) = 0
ioctl(4, SNDRV_CTL_IOCTL_ELEM_INFO, 0x56106b81ca40) = 0
ioctl(4, SNDRV_CTL_IOCTL_ELEM_READ, 0x56106b809d90) = 0
ioctl(4, SNDRV_CTL_IOCTL_ELEM_INFO, 0x56106b81ca40) = 0
ioctl(4, SNDRV_CTL_IOCTL_ELEM_INFO, 0x56106b81ca40) = 0
ioctl(4, SNDRV_CTL_IOCTL_ELEM_WRITE, 0x56106b809d90) = 0
ioctl(4, SNDRV_CTL_IOCTL_ELEM_INFO, 0x56106b812510) = 0
ioctl(4, SNDRV_CTL_IOCTL_ELEM_READ, 0x56106b809d90) = 0
ioctl(4, SNDRV_CTL_IOCTL_ELEM_WRITE, 0x56106b809d90) = 0
ioctl(4, SNDRV_CTL_IOCTL_ELEM_INFO, 0x56106b81d0c0) = 0
ioctl(4, SNDRV_CTL_IOCTL_ELEM_READ, 0x56106b809d90) = 0
ioctl(4, SNDRV_CTL_IOCTL_ELEM_WRITE, 0x56106b809d90) = 0
close(3) = 0
close(4) = 0
openat(AT_FDCWD, “/dev/snd/controlC1”, O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, “/dev/snd/controlC2”, O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, “/dev/snd/controlC3”, O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, “/dev/snd/controlC4”, O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, “/dev/snd/controlC5”, O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, “/dev/snd/controlC6”, O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, “/dev/snd/controlC7”, O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, “/dev/snd/controlC8”, O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, “/dev/snd/controlC9”, O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, “/dev/snd/controlC10”, O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, “/dev/snd/controlC11”, O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, “/dev/snd/controlC12”, O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, “/dev/snd/controlC13”, O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, “/dev/snd/controlC14”, O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, “/dev/snd/controlC15”, O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, “/dev/snd/controlC16”, O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, “/dev/snd/controlC17”, O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, “/dev/snd/controlC18”, O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, “/dev/snd/controlC19”, O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, “/dev/snd/controlC20”, O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, “/dev/snd/controlC21”, O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, “/dev/snd/controlC22”, O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, “/dev/snd/controlC23”, O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, “/dev/snd/controlC24”, O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, “/dev/snd/controlC25”, O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, “/dev/snd/controlC26”, O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, “/dev/snd/controlC27”, O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, “/dev/snd/controlC28”, O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, “/dev/snd/controlC29”, O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, “/dev/snd/controlC30”, O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, “/dev/snd/controlC31”, O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
exit_group(0) = ?
+++ exited with 0 +++
I’ve tried tweaking the buffer size, blacklisting modules and adding kernel options, yet the distorted speaker issue and missing internal microphone remained.
However, after switching once again to Pipewire after finding a fix to the audible pop (had to modify /usr/share/wireplumber/scripts/node/suspend-node.lua
), I noticed that the volume controls of the connected headset are working as intended.
Once again @elly, if you know something, even if it’s just a hunch, please share. I’ll se to it as best as I can.
One down, two to go.
For those of you who are still watching this thread, please also follow (and maybe also contribute to) this bug report where there have been some recent developments lately. Thank you.
As per the information provided in this bug report, it is necessary to utilize the UCM and audio firmware provided by Google. The errors are said to be the result of an improper topology and UCM.
@WeirdTreeThing , is there a method to extract the UCM and topology from Chrome OS and use it on a Linux installation?
A couple of days ago, I extracted the necessary files from the ChromeOS recovery image page like so:
7z x chromeos_recovery.bin -o./extracted
sudo mkdir /tmp/chromeos
sudo mount -o ro ./extracted/ROOT-A.img /tmp/chromeos
cp -r lib/firmware/intel/sof /tmp/
cp -r lib/firmware/intel/sof-tplg /tmp/
I’m not sure how to proceed from here, that is, whether I should purge sof-bin
first before moving the files to /lib/firmware/intel/*
, or leave it installed and just replace the directories. And, I’m not sure how exactly I can parse the .tplg
files to modify the UCM.
Try and replace the directories, it might just work. Can you tell me which files are in /usr/share/alsa on your Chrome OS image?