Open dog-in-space opened 1 month ago
Fix will be in the next bazzite unstable version and come with F41.
Still not fixed as of unstable-41.20241026
Will report back as testing versions come out...
Thanks for catching that. New build in unstable with the firmware file.
Firmware file is in place as of ublue-os/bazzite@313ffe8b831cd2881fc01bd869609142b2f64c44 but still no sound on the Aya Neo Air 1s.
I have confirmed the firmware file is located at /usr/lib/firmware/aw87xxx_acf.bin.xz
and /usr/lib/firmware/aw87559/aw87xxx_acf.bin.xz
as of unstable-41.20241027.3 images
Maybe it doesn't like being in .xz format?
Paste a dmesg here
lsmod | grep aw87xxx
does that show anything"
The realtek quirk for the 1S is there for sure too
justinhunkele@syn-2603-6010-e4f0-81b0-0000-0000-0000-1aa9:~$ lsmod | grep aw87xxx
snd_soc_aw87xxx 188416 0
snd_soc_core 512000 3 snd_soc_aw87xxx,snd_sof,soundwire_amd
justinhunkele@syn-2603-6010-e4f0-81b0-0000-0000-0000-1aa9:~$
justinhunkele@syn-2603-6010-e4f0-81b0-0000-0000-0000-1aa9:~$ sudo dmesg | grep aw87
[ 6.663804] [Awinic] [i2c-AWDZ8830:00]aw87xxx_i2c_probe: I2C_ACPI_CLIENT_COUNT returned [2]
[ 6.663809] [Awinic] [i2c-AWDZ8830:00]aw87xxx_malloc_init: Driver struct alloc and mutex init done, devinfo: i2c_bus=1, i2c_addr=58
[ 6.663814] [Awinic] [i2c-AWDZ8830:00]aw87xxx_device_parse_port_id_dt: read aw-rx-port-id failed,use default
[ 6.663817] [Awinic] [i2c-AWDZ8830:00]aw87xxx_device_parse_port_id_dt: rx-port-id: 0x4000
[ 6.663819] [Awinic] [i2c-AWDZ8830:00]aw87xxx_device_parse_topo_id_dt: read aw-rx-topo-id failed,use default
[ 6.663822] [Awinic] [i2c-AWDZ8830:00]aw87xxx_device_parse_topo_id_dt: rx-topo-id: 0x1000ff01
[ 6.663889] [Awinic] [i2c-AWDZ8830:00]aw87xxx_i2c_probe: reset gpio[24c] parse succeed
[ 6.667904] [Awinic] [i2c-AWDZ8830:00]aw87xxx_dev_hw_pwr_ctrl: hw power on
[ 6.668079] [Awinic] [i2c-AWDZ8830:00]aw87xxx_dev_get_chipid: read chipid[0x5a] succeed
[ 6.670218] [Awinic] [i2c-AWDZ8830:00]aw87xxx_dev_hw_pwr_ctrl: hw power off
[ 6.672458] [Awinic] [i2c-AWDZ8830:00]aw87xxx_fw_load_init: enter
[ 6.672521] [Awinic] [i2c-AWDZ8830:00]aw87xxx_monitor_init: monitor init succeed
[ 6.672523] [Awinic] [i2c-AWDZ8830:00]aw87xxx_i2c_probe: succeed, dev_index=[1], g_aw87xxx_dev_cnt= [1]
[ 6.672525] [Awinic] [i2c-AWDZ8830:00]aw87xxx_i2c_probe: acpi_c=[2] dev_c=[1]
[ 6.676553] [Awinic] [i2c-AWDZ8830:00]aw87xxx_dev_hw_pwr_ctrl: hw power on
[ 6.676711] [Awinic] [i2c-AWDZ8830:00.1]aw87xxx_malloc_init: Driver struct alloc and mutex init done, devinfo: i2c_bus=1, i2c_addr=5b
[ 6.676716] [Awinic] [i2c-AWDZ8830:00.1]aw87xxx_device_parse_port_id_dt: read aw-rx-port-id failed,use default
[ 6.676718] [Awinic] [i2c-AWDZ8830:00.1]aw87xxx_device_parse_port_id_dt: rx-port-id: 0x4000
[ 6.676720] [Awinic] [i2c-AWDZ8830:00.1]aw87xxx_device_parse_topo_id_dt: read aw-rx-topo-id failed,use default
[ 6.676722] [Awinic] [i2c-AWDZ8830:00.1]aw87xxx_device_parse_topo_id_dt: rx-topo-id: 0x1000ff01
[ 6.677431] [Awinic] [i2c-AWDZ8830:00.1]aw87xxx_dev_get_chipid: read chipid[0x5a] succeed
[ 6.677609] [Awinic] [i2c-AWDZ8830:00.1]aw87xxx_fw_load_init: enter
[ 6.677618] [Awinic] [i2c-AWDZ8830:00.1]aw87xxx_monitor_init: monitor init succeed
[ 6.677620] [Awinic] [i2c-AWDZ8830:00.1]aw87xxx_i2c_probe: succeed, dev_index=[2], g_aw87xxx_dev_cnt= [2]
[ 6.677623] [Awinic] [i2c-AWDZ8830:00.1]aw87xxx_i2c_probe: acpi_c=[0] dev_c=[2]
[ 6.960378] Modules linked in: snd_sof_amd_acp63(+) wl(POE+) snd_sof_amd_vangogh snd_sof_amd_rembrandt mac80211(+) snd_sof_amd_renoir snd_sof_amd_acp snd_sof_pci snd_sof_xtensa_dsp intel_rapl_msr btusb amd_atl libarc4 snd_sof btrtl snd_hda_codec_realtek intel_rapl_common snd_sof_utils btintel edac_mce_amd btbcm snd_hda_codec_generic btmtk snd_pci_ps snd_hda_scodec_component snd_hda_codec_hdmi snd_hda_intel snd_amd_sdw_acpi bluetooth ayaneo_platform(OE) kvm_amd iwlwifi soundwire_amd snd_intel_dspcfg snd_intel_sdw_acpi soundwire_generic_allocation xpad joydev spd5118 oxp_sensors soundwire_bus snd_soc_aw87xxx bmi260_i2c(OE) kvm snd_hda_codec snd_rpl_pci_acp6x bmi260_core(OE) snd_pci_acp6x cfg80211 snd_soc_core snd_hda_core bmi160_spi snd_pci_acp5x rapl snd_hwdep regmap_spi wmi_bmof snd_compress snd_rn_pci_acp3x snd_seq ac97_bus snd_acp_config snd_pcm_dmaengine snd_seq_device snd_soc_acpi bmi160_i2c i2c_piix4 thunderbolt pcspkr rfkill soc_button_array snd_pci_acp3x k10temp snd_pcm bmi160_core i2c_smbus
[ 9.682214] [Awinic] [i2c-AWDZ8830:00]aw87xxx_fw_load: fw_data parse failed
[ 9.682243] [Awinic] [i2c-AWDZ8830:00.1]aw87xxx_fw_load: fw_data parse failed
[ 21.711495] Modules linked in: rfcomm snd_seq_dummy snd_hrtimer uinput acpi_call nf_conntrack_netbios_ns nf_conntrack_broadcast nft_fib_inet nft_fib_ipv4 nft_fib_ipv6 nft_fib nft_reject_inet nf_reject_ipv4 nf_reject_ipv6 nft_reject nft_ct nft_chain_nat nf_nat nf_conntrack nf_defrag_ipv6 nf_defrag_ipv4 ip_set nf_tables qrtr bnep sunrpc binfmt_misc vfat fat iwlmvm snd_sof_amd_acp63 wl(POE) snd_sof_amd_vangogh snd_sof_amd_rembrandt mac80211 snd_sof_amd_renoir snd_sof_amd_acp snd_sof_pci snd_sof_xtensa_dsp intel_rapl_msr btusb amd_atl libarc4 snd_sof btrtl snd_hda_codec_realtek intel_rapl_common snd_sof_utils btintel edac_mce_amd btbcm snd_hda_codec_generic btmtk snd_pci_ps snd_hda_scodec_component snd_hda_codec_hdmi snd_hda_intel snd_amd_sdw_acpi bluetooth ayaneo_platform(OE) kvm_amd iwlwifi soundwire_amd snd_intel_dspcfg snd_intel_sdw_acpi soundwire_generic_allocation xpad joydev spd5118 oxp_sensors soundwire_bus snd_soc_aw87xxx bmi260_i2c(OE) kvm snd_hda_codec snd_rpl_pci_acp6x bmi260_core(OE) snd_pci_acp6x cfg80211
[ 21.713806] Modules linked in: rfcomm snd_seq_dummy snd_hrtimer uinput acpi_call nf_conntrack_netbios_ns nf_conntrack_broadcast nft_fib_inet nft_fib_ipv4 nft_fib_ipv6 nft_fib nft_reject_inet nf_reject_ipv4 nf_reject_ipv6 nft_reject nft_ct nft_chain_nat nf_nat nf_conntrack nf_defrag_ipv6 nf_defrag_ipv4 ip_set nf_tables qrtr bnep sunrpc binfmt_misc vfat fat iwlmvm snd_sof_amd_acp63 wl(POE) snd_sof_amd_vangogh snd_sof_amd_rembrandt mac80211 snd_sof_amd_renoir snd_sof_amd_acp snd_sof_pci snd_sof_xtensa_dsp intel_rapl_msr btusb amd_atl libarc4 snd_sof btrtl snd_hda_codec_realtek intel_rapl_common snd_sof_utils btintel edac_mce_amd btbcm snd_hda_codec_generic btmtk snd_pci_ps snd_hda_scodec_component snd_hda_codec_hdmi snd_hda_intel snd_amd_sdw_acpi bluetooth ayaneo_platform(OE) kvm_amd iwlwifi soundwire_amd snd_intel_dspcfg snd_intel_sdw_acpi soundwire_generic_allocation xpad joydev spd5118 oxp_sensors soundwire_bus snd_soc_aw87xxx bmi260_i2c(OE) kvm snd_hda_codec snd_rpl_pci_acp6x bmi260_core(OE) snd_pci_acp6x cfg80211
-> [ 9.682214] [Awinic] [i2c-AWDZ8830:00]aw87xxx_fw_load: fw_data parse failed -> [ 9.682243] [Awinic] [i2c-AWDZ8830:00.1]aw87xxx_fw_load: fw_data parse failed
paste the whole thing please as a file
Your device reads the firmware file and finds the speakers. So first thought is it doesnt like the firmware and wants some ayaneo one.
This is the same orangepi-xunlong firmware file that Chimera uses in their fix out of the AUR and sound works as expected on Chimera.
Weird...
This is what Chimera is using - https://aur.archlinux.org/packages/aw87559-firmware
It sure looks the same at least
It does indeed. Maybe i did the merge wrong, unsure. But it fails to bind your device to firmware. Also, the firmware file in that repo updated 3 months ago, there is a previous version there.
Can you try it? sudo rpm-ostree usroverlay --hotfix
Turns out Awinic made the fine decision to name all their firmware files the same. So the orange pi repo has 2 firmware files that have different hashes.
Then, the AUR repo used to reference a google driver rar file with 1S drivers that now is gonezo and was definitely a different hash. This is when Chos 46 was built.
And if you look online, there are some phone dumps with more random files with different hashes
@KyleGospo this will have to be BYO for now. Drop the fw file, and symlink the fw file to /usr/local/
for the F41 release. Then we ask for people to collect the firmware files.
Ok, so there are multiple firmware files depending on your device. I edited the kernel driver to automatically select the correct file depending on the device. We do not have the permission to redistribute the files for now, so you will need to install them yourself.
However, they are easy enough to find. For Ayn MiniPro and Ayaneo, the driver pack for your device (for Ayaneo download the driver pack without Audio in the name), then head into 0X_Audio -> AW87XXX... -> Driver -> Signed -> awinic_smartk_acf.bin (or similar name; ~1kb size)
In the case of Orange Pi, here is the file.
Then, place the file in /usr/local/firmware
(make the directory first) with the following name depending on device:
❯ sha256sum awinic/*
# Ayn Loki MiniPro
d29703932b73a6588c131ea20d0f2d2cf76221018aa179984a758da2982dab15 awinic/aw87xxx_acf_minipro.bin
# Ayaneo Air 1S
d29703932b73a6588c131ea20d0f2d2cf76221018aa179984a758da2982dab15 awinic/aw87xxx_acf_air1s.bin
# Ayaneo Air Plus (AMD; all variants)
d29703932b73a6588c131ea20d0f2d2cf76221018aa179984a758da2982dab15 awinic/aw87xxx_acf_airplus.bin
# Ayaneo Flip KB/DS
916b0ea592f747a96b59426eb7ceb6419e4634ddde3dcea317bc91bec7f7ffca awinic/aw87xxx_acf_flip.bin
# Ayaneo Kun
8e6edd2623d9b90a60acbe04aded7eb038abcb2d48e17656319366db9582e21f awinic/aw87xxx_acf_kun.bin
# Orange Pi (?)
7db2c6eaca3135d732c2e635388e87cb49fc998b3f9a859c2a891ee78797eba3 awinic/aw87xxx_acf_orangepi.bin
Those are the hashes and how to calculate them as well, so you can be sure you have the correct file. Other devices will expect aw87xxx_acf.bin
until we identify them.
You can verify the name with the following command:
sudo dmesg | grep "loading firmware name:"
For people in this thread, this is for kernel 6.11.5-306
onward, which is currently building.
I can confirm this fix is working now with the firmware file manually in place and as of ublue-os/bazzite@e3832fea8141aa041a58945a1bf6bbc6f088b669 successfully links to the provided file. Thank you for the quick response to this 😄
Heads up, we are changing the directory to /usr/local/firmware
to not spam files all over /usr/local
so you will need to move the file over when you update.
sudo mkdir -p /usr/local/firmware
sudo mv /usr/local/aw87* /usr/local/firmware
Apologies in advance, this isn't that clear, is the file in the directory meant to be called:
d29703932b73a6588c131ea20d0f2d2cf76221018aa179984a758da2982dab15 awinic/aw87xxx_acf_air1s.bin
or awinic/aw87xxx_acf_air1s.bin
or
aw87xxx_acf_air1s.bin
Ive tried all three in the directory and once i restart nothing has changed. I might be being a massive noob on this one. Once Ive got clear instructions ill make a youtube video on this as a lot of people will appreciate this change
Just run ujust install-speaker-firmare
Still no sound from the speakers on my end. I ran in terminal:
sudo dmesg | grep "loading firmware name:"
And it produces:
bazzite@192:~$ sudo dmesg | grep "loading firmware name:"
[sudo] password for bazzite:
[ 8.258845] [Awinic] [i2c-AWDZ8830:00]aw87xxx_fw_load_init: loading firmware name: [aw87xxx_acf_air1s.bin]
[ 8.265908] [Awinic] [i2c-AWDZ8830:00.1]aw87xxx_fw_load_init: loading firmware name: [aw87xxx_acf_air1s.bin]
bazzite@192:~$
So I assume its working, and then I ran:
ujust install-speaker-firmare
and it produces:
/usr/local/firmware/ 100% [============================================================>] 43 --.-KB/s
[Files: 1 Bytes: 43 [86 B/s] Redirects: 0 Todo: 0 Errors: ]
/usr/local/firmware/ 100% [============================================================>] 43 --.-KB/s
[Files: 1 Bytes: 43 [129 B/s] Redirects: 0 Todo: 0 Errors:]
/usr/local/firmware/ 100% [============================================================>] 756 --.-KB/s
[Files: 1 Bytes: 756 [2.39KB/s] Redirects: 0 Todo: 0 Error]
/usr/local/firmware/ 100% [============================================================>] 756 --.-KB/s
[Files: 1 Bytes: 756 [2.10KB/s] Redirects: 0 Todo: 0 Error]
/usr/local/firmware/ 100% [============================================================>] 756 --.-KB/s
[Files: 1 Bytes: 756 [2.23KB/s] Redirects: 0 Todo: 0 Error]
/usr/local/firmware/ 100% [============================================================>] 1.51K --.-KB/s
[Files: 1 Bytes: 1.51K [5.88KB/s] Redirects: 0 Todo: 0 Erro]
did you reboot afterwards?
yes sir, reboot and no change - i checked the audio settings and tested the speakers to no avail
Send the full log
sudo dmesg | fpaste
It says you are using the wrong firmware, specifically that its the wrong size.
sha256sum file
it and see if it matches the hash above.
The link is fine delete the other comment.
Here is the log for anyone interested.
[ 10.512741] [Awinic] [i2c-AWDZ8830:00.1]aw_check_header_size: acf size check failed,size less-than aw_acf_hdr
[ 10.512746] [Awinic] [i2c-AWDZ8830:00.1]aw87xxx_acf_parse: load firmware check failed
[ 10.512747] [Awinic] [i2c-AWDZ8830:00]aw_check_header_size: acf size check failed,size less-than aw_acf_hdr
[ 10.512748] [Awinic] [i2c-AWDZ8830:00.1]aw87xxx_fw_load: fw_data parse failed
[ 10.512750] [Awinic] [i2c-AWDZ8830:00]aw87xxx_acf_parse: load firmware check failed
It says you are using the wrong firmware, specifically that its the wrong size.
sha256sum file
it and see if it matches the hash above.
the wrong firmware for the audio driver? I downloaded the ayaneo firmware update file specified and unzipped the Audio file. Where am I going wrong?
I ran this command:
asha256sum admin:/usr/local/firmware/aw87*/703932b73a6588c131ea20d0f2d2cf76221018aa179984a758da2982dab15 awinic⁄aw87xxx_acf_air1s.bin
and this is returned:
sha256sum: awinic⁄aw87xxx_acf_air1s.bin: No such file or directory
Can you run the command and show the result? There are multiple firmware files
Maybe my hash is wrong instead
sha256sum admin:/usr/local/firmware/aw87*/703932b73a6588c131ea20d0f2d2cf76221018aa179984a758da2982dab15 awinic⁄aw87xxx_acf_air1s.bin
sha256sum: 'admin:/usr/local/firmware/aw87*/703932b73a6588c131ea20d0f2d2cf76221018aa179984a758da2982dab15': No such file or directory
The file needs to be placed in /usr/local/firmware/aw87xxx_acf_air1s.bin
. Since you ran the command its there.
Seems like its incorrect for your device. So with the file from your driver pack:
sudo rm /usr/local/firmware/aw87xxx_acf_air1s.bin
sudo cp awinic_smartk_acf.bin /usr/local/firmware/aw87xxx_acf_air1s.bin
awinic_smartk_acf.bin is the original name and to run the cp command you need to be in the directory of the file
Finally (after moving the firmware), run
sha256sum /usr/local/firmware/aw87xxx_acf_air1s.bin
And show the result
bazzite@192:~$ sha256sum /usr/local/firmware/aw87xxx_acf_air1s.bin d29703932b73a6588c131ea20d0f2d2cf76221018aa179984a758da2982dab15 /usr/local/firmware/aw87xxx_acf_air1s.bin
Try some of the other files. That's all I can say
Good sir, this worked¬! reboot and the sound is working. Thanks for all the follow ups! I shall do a tutorial on Youtube tomorrow
The command I sent you should have worked too, maybe there's an issue in it @HikariKnight
Can you verify the hash is that one?
@antheas
running the command myself i get these firmware files with the hashes in /usr/local/firmware
4a493b3f487db0ae2bd7a36337f070cbea005f1f89222dd78c5cd4121f250b62 aw87xxx_acf_air1s.bin
4a493b3f487db0ae2bd7a36337f070cbea005f1f89222dd78c5cd4121f250b62 aw87xxx_acf_airplus.bin
916b0ea592f747a96b59426eb7ceb6419e4634ddde3dcea317bc91bec7f7ffca aw87xxx_acf_flip.bin
8e6edd2623d9b90a60acbe04aded7eb038abcb2d48e17656319366db9582e21f aw87xxx_acf_kun.bin
d29703932b73a6588c131ea20d0f2d2cf76221018aa179984a758da2982dab15 aw87xxx_acf_minipro.bin
7db2c6eaca3135d732c2e635388e87cb49fc998b3f9a859c2a891ee78797eba3 aw87xxx_acf_orangepi.bin
Well, if you look closer you'll realize your hashes are wrong
didnt get to read much of the messages as im on my way to work :)
Describe the bug
Ayaneo Air 1S does not have any sound in bazzite due to a really odd speaker pin out.
What did you expect to happen?
This issue have been fixed in a few other similar distro's like ChimeraOS/chimeraos@2ae2da734ae95740b6a3caa19fee55e559c8364d and SteamFork/distribution@16b78597b19f691d1e25d6c26a4b77ef11ef2a38
Hardware
Ayaneo Air 1S