Fedora'da Fuxi H6 Pro kulaklığımı kullanırken garip bir ses sorunu yaşıyordum. Ses %100'deyken sorunsuz çalışıyor, ancak KDE üzerinden sesi biraz kıstığımda ya aşırı düşüyor ya da tamamen kesiliyordu.
Biraz araştırdıktan sonra sorunun PipeWire/KDE'den değil, kulaklığın USB Audio Mixer'ının Linux'a bildirdiği ses seviyesi değerlerinden kaynaklandığını fark ettim. Sorun yaşanırken PipeWire tarafında ses seviyesi normal şekilde kademeli olarak (örneğin %100 → %99 → %90) değişirken, ALSA tarafında bu değer 100 → 34 → 0 gibi aniden düşüyordu.
Kernel logları şöyleydi:
Snd_usb_audio içindeki Quirk'leri denediğimde MIXER_PLAYBACK_LINEAR_VOL sorunu çözdü.
Kullandığım quirk:
Bunu uyguladıktan sonra ALSA'daki ses değerleri düzgün ve kademeli değişmeye başladı ve %100'ün altına inince sesin kaybolması sorunu ortadan kalktı.
Ayrıca MIXER_GET_CUR_BROKEN (0x40000000) Quirk'ini de ayrı olarak denedim. İkisini birlikte 0x48000000 olarak uyguladığımda kernel her ikisini de aktif ediyordu, ancak bu sefer sol/sağ kanal ses dengesi bozuluyordu.
Bu yüzden şu anda yalnızca 0x08000000 kullanıyorum.
Bu cihaz (040b: 0897) için ALSA/kernel tarafında daha önce de düzeltme çalışmaları yapılmış. Özellikle MIXER_GET_CUR_BROKEN ile ilgili bir quirk Upstream'e eklenmiş durumda.
Ancak kullandığım Fedora 44 7.1.13-200.FC44.X86_64 kernelinin kaynaklarında 040b: 0897 için bu quirk atamasını göremedim.
Burada ayrıca belirtmek gerekirse, MIXER_PLAYBACK_LINEAR_VOL (0x08000000) çözümü yapılan testler sonucunda bulundu. Upstream'deki MIXER_GET_CUR_BROKEN çalışması ise ayrı bir düzeltme.
Bu sorunu çözmek için yaklaşık 2-3 saat Claude ile uğraştım ve sonunda bu çözüme ulaştıö. Sorunu düzeltecek bir Sh dosyası hazırladım ihtiyacı olan kullanabilir.
github.com
Not: Bu workaround USB ID'si 040b: 0897 olan cihaz için hazırlandı. Farklı bir cihazda uygulamadan önce lsusb ile VID: PID değerinin kontrol etmenizi tavsiye ederim.
Biraz araştırdıktan sonra sorunun PipeWire/KDE'den değil, kulaklığın USB Audio Mixer'ının Linux'a bildirdiği ses seviyesi değerlerinden kaynaklandığını fark ettim. Sorun yaşanırken PipeWire tarafında ses seviyesi normal şekilde kademeli olarak (örneğin %100 → %99 → %90) değişirken, ALSA tarafında bu değer 100 → 34 → 0 gibi aniden düşüyordu.
Kernel logları şöyleydi:
Sticky Mixer values (0/100/1 => 80), disablingWarning! Unlikely small volume range (=100), linear volume or Custom curve?Snd_usb_audio içindeki Quirk'leri denediğimde MIXER_PLAYBACK_LINEAR_VOL sorunu çözdü.
Kullandığım quirk:
040b:0897:0x08000000Bunu uyguladıktan sonra ALSA'daki ses değerleri düzgün ve kademeli değişmeye başladı ve %100'ün altına inince sesin kaybolması sorunu ortadan kalktı.
Ayrıca MIXER_GET_CUR_BROKEN (0x40000000) Quirk'ini de ayrı olarak denedim. İkisini birlikte 0x48000000 olarak uyguladığımda kernel her ikisini de aktif ediyordu, ancak bu sefer sol/sağ kanal ses dengesi bozuluyordu.
Bu yüzden şu anda yalnızca 0x08000000 kullanıyorum.
Bu cihaz (040b: 0897) için ALSA/kernel tarafında daha önce de düzeltme çalışmaları yapılmış. Özellikle MIXER_GET_CUR_BROKEN ile ilgili bir quirk Upstream'e eklenmiş durumda.
Ancak kullandığım Fedora 44 7.1.13-200.FC44.X86_64 kernelinin kaynaklarında 040b: 0897 için bu quirk atamasını göremedim.
Burada ayrıca belirtmek gerekirse, MIXER_PLAYBACK_LINEAR_VOL (0x08000000) çözümü yapılan testler sonucunda bulundu. Upstream'deki MIXER_GET_CUR_BROKEN çalışması ise ayrı bir düzeltme.
Bu sorunu çözmek için yaklaşık 2-3 saat Claude ile uğraştım ve sonunda bu çözüme ulaştıö. Sorunu düzeltecek bir Sh dosyası hazırladım ihtiyacı olan kullanabilir.
İndirme Linki:
fuxi-h6-pro-fix.sh
Dosyayı indirdikten sonra SHA-256 değeri şu şekilde kontrol edilebilir:
fuxi-h6-pro-fix.sh
Dosyayı indirdikten sonra SHA-256 değeri şu şekilde kontrol edilebilir:
sha256sum fuxi-h6-pro-fix.shİlk olarak dosyaya çalıştırma izni verilir:
Workaround'u uygulamak için:
İşlem tamamlandıktan sonra sistem yeniden başlatılır:
Yeniden başlatma sonrasında kontrol etmek için:
Workaround'u kaldırmak için:
chmod +x fuxi-h6-pro-fix.shWorkaround'u uygulamak için:
./fuxi-h6-pro-fix.sh applyİşlem tamamlandıktan sonra sistem yeniden başlatılır:
sudo rebootYeniden başlatma sonrasında kontrol etmek için:
./fuxi-h6-pro-fix.sh checkWorkaround'u kaldırmak için:
./fuxi-h6-pro-fix.sh remove/Script'in check modu aşağıdaki kontrolleri otomatik olarak sırayla yapıyor. İstenirse aynı adımlar elle de tekrarlanabilir.
Öncelikle cihazın USB kimliği kontrol edilir. Benim cihazımın USB ID'si 040b:0897:
Mevcut modprobe. D ayarı ve çalışan snd_usb_audio quirk değeri:
ALSA tarafındaki bilgisayarım ses seviyesi:
Sorun mevcutken bu değerin PipeWire'daki kademeli değişimin aksine 100 → 34 → 0 gibi aniden düştüğü gözlemlenebilir.
Kernel tarafındaki ilgili mesajlar şu filtreyle taranır:
Ardından Initramfs'i yeniler:
Ve sistemin yeniden başlatılmasını ister.
Bilinçli olarak yalnızca MIXER_PLAYBACK_LINEAR_VOL (0x08000000) uygulanır. MIXER_GET_CUR_BROKEN (0x40000000) eklenmez, çünkü yapılan testlerde ikisi birlikte kullanıldığında sol/sağ kanal ses dengesi bozuldu.
Beklenen ana kernel satırı:
Yeniden başlatma sonrasında aktif quirk şu komutla ayrıca doğrulanabilir:
Beklenen değer:
Değişikliğin tamamen etkisizleşmesi için sistem yeniden başlatılır:
Öncelikle cihazın USB kimliği kontrol edilir. Benim cihazımın USB ID'si 040b:0897:
lsusb | grep -i '040b:0897'Mevcut modprobe. D ayarı ve çalışan snd_usb_audio quirk değeri:
Kod:
cat /etc/modprobe.d/fuxi-h6-pro.conf
cat /sys/module/snd_usb_audio/parameters/quirk_flags
ALSA tarafındaki bilgisayarım ses seviyesi:
amixer -c Pro get PCMSorun mevcutken bu değerin PipeWire'daki kademeli değişimin aksine 100 → 34 → 0 gibi aniden düştüğü gözlemlenebilir.
Kernel tarafındaki ilgili mesajlar şu filtreyle taranır:
sudo dmesg | grep -iE '040b|0897|linear volume|broken mixer|sticky mixer|quirk'Uygulama
Script root yetkisiyle çalışıp aşağıdaki içeriği /etc/modprobe.d/fuxi-h6-pro.conf dosyasına yazar:options snd_usb_audio quirk_flags=040b:0897:0x08000000Ardından Initramfs'i yeniler:
dracut --forceVe sistemin yeniden başlatılmasını ister.
Bilinçli olarak yalnızca MIXER_PLAYBACK_LINEAR_VOL (0x08000000) uygulanır. MIXER_GET_CUR_BROKEN (0x40000000) eklenmez, çünkü yapılan testlerde ikisi birlikte kullanıldığında sol/sağ kanal ses dengesi bozuldu.
Kontrol
Check modumodprobe.d içeriğini, çalışan quirk_flags değerini, USB cihaz durumunu, ALSA bilgisayarın seviyesini ve ilgili kernel loglarını tek seferde kontrol edip özetler.Beklenen ana kernel satırı:
applying playback linear volume quirkYeniden başlatma sonrasında aktif quirk şu komutla ayrıca doğrulanabilir:
cat /sys/module/snd_usb_audio/parameters/quirk_flagsBeklenen değer:
040b:0897:0x08000000Kaldırma
remove modu /etc/modprobe.d/fuxi-h6-pro.conf dosyasını siler ve Initramfs'i yeniden oluşturur.Değişikliğin tamamen etkisizleşmesi için sistem yeniden başlatılır:
sudo reboot[ALSA/usb-audio] Weltrend/XiiSound Headset (040b:0897) splits channels into independent 'PCM'/'PCM 1' mixer elements and suffers from severe dB volume curve mismatch · Issue #760 · alsa-project/alsa-ucm-conf
Description of the Bug The Weltrend Semiconductor / XiiSound wireless headset dongle (USB ID 040b:0897) is incorrectly handled by the snd-usb-audio driver. Instead of presenting a single unified st...
Not: Bu workaround USB ID'si 040b: 0897 olan cihaz için hazırlandı. Farklı bir cihazda uygulamadan önce lsusb ile VID: PID değerinin kontrol etmenizi tavsiye ederim.
Son düzenleme: