اگر از لینوکس (مثل Pop!_OS یا Arch) روی لپتاپی با سختافزار AMD (مثل HP 255 G8 با Ryzen 3 3300U) استفاده میکنید و موقع پخش آهنگ یا فیلم با خشخش، پتپت، یا قطعووصل صدا مواجه شدید، این مقاله برای شماست! من این مشکل رو داشتم و با چند قدم ساده تونستم صدامو کامل درست کنم. این راهنما خلاصهای از راهحلهاییه که با کمک Grok (هوش مصنوعی xAI) پیدا کردم و روی Pop!_OS 22.04 با کارت صوتی Realtek ALC236 و گرافیک AMD Vega 6 جواب داد.
هر بار که سیستم بوت میشد، صدا خشخش یا پتپت (قطعووصل لحظهای) داشت. این مشکل تو پخش آهنگ، فیلم، یا حتی تست ساده با speaker-test دیده میشد. جالب اینجاست که تو ویندوز هیچ مشکلی نبود! مشخصات سیستم من:
- مدل: HP 255 G8 Notebook PC
- پردازنده: AMD Ryzen 3 3300U with Radeon Vega Mobile Gfx
- گرافیک: AMD Radeon Vega 6
- رم: 16GB
- سیستمعامل: Pop!_OS 22.04 LTS (64-bit)
- صدا: PipeWire (روی PulseAudio) با کارت صوتی Realtek ALC236
مشکل اصلی به خاطر ناهماهنگی PipeWire موقع بوت بود که قبل از لود کامل درایورهای صوتی (ALSA) استارت میکرد.
این قدمها مشکل رو کامل حل کرد. از سادهترین شروع کنید و بعد از هر قدم تست کنید، مثل دستور زیر:
speaker-test -c 2 -t sine -f 440
وقتی دستور بالا رو در ترمینال وارد کردید، تست صدا فعال میشه(اگه پکیج speaker-test را نصب کرده باشید) و اون موقع اگه صدای خش خش و پت پت یا صدا شفاف نبود مراحل رو دنبال کنید:
۱. ریاستارت سرویسهای PipeWire
چرا؟ گاهی PipeWire موقع بوت درست لود نمیشه و ریاستارت دستی مشکل رو موقتاً حل میکنه.
دستور:
systemctl --user restart pipewire pipewire-pulse wireplumber
نتیجه: این کار خشخش و پتپت رو موقتاً برطرف کرد، ولی باید خودکار میشد.
اگه با این دستور هم مشکل صدا برطرف نشد، احتمال داره که مشکل صدا از سخت افزاری باشه
۲. خودکارسازی ریاستارت PipeWire موقع بوت
برای اینکه نیازی به دستور دستی نباشه، یه سرویس systemd ساختیم که ۵ ثانیه بعد از بوت، PipeWire رو ریاستارت کنه:
mkdir -p ~/.config/systemd/user/ nano ~/.config/systemd/user/fix-audio-startup.service
محتوایی که در داخل این فایل قرار میدید:
[Unit] Description=Fix audio services on startup After=pipewire.service pipewire-pulse.service wireplumber.service [Service] Type=oneshot ExecStart=/bin/sleep 5 ExecStart=/usr/bin/systemctl --user restart pipewire pipewire-pulse wireplumber RemainAfterExit=yes [Install] WantedBy=default.target
و بعد دوباره فعال سازی کنید:
systemctl --user enable fix-audio-startup.service systemctl --user start fix-audio-startup.service
سپس سیستم را مجدداْ راه اندازی کنید و دوباره تست صدا انجام بدید.
نتیجه: این سرویس مشکل لود نادرست PipeWire موقع بوت رو حل کرد.
باز هم اگر سوالی چیزی داشتید یا جایی به مشکل بر خوردید توی کامنت ها بهم بگید.