— Я — amlet, и я виндузятник :(
— Привет, amlet *applause*
В общем без долгих вступлений — короткая история решения проблемы появления щелчков, когда ничего не играет, с поправкой на ветер то, что я виндузятник, который хочет и пытается перейти на Linux. Может кому и пригодится. А тут ещё и сообщество закидает тухлыми помидоподскажет что-то: глядишь и умнее стану ;)
Начал я свой путь с Ubuntu. Погодите — рано кидатьНу потому что мне этот мир знаком только из сказокстатей, как на Linux всё радужно и здорово, но сразу в жесть падать типа Gentoo или Slackware инстинкт самосохранения не позволяет.
Так вот, поставил я на свой новенький, но уже явно устаревший Samsung NP350U2B (да, я ещё и самсунгу продался) Ubuntu последней версии, и стал жить-поживать, да чуда-чудное ждать, что всё станет само собой зашибись, всё рассосётся, мир во всём мире, а золотой дождь посыпится с неба… Да, Ubunt’а дала мне некоторые плюшки по сравнению с той же Windows 7, стоящей тут же на этом ноуте — самое заметное глазу: это меньшее количество тормозов — но счастье, как известно в мелочах (Стив, привет): выявилась одна раздражающая вещь, которая под горячуу руку ещё и жутко выбешивала…
Итак, краткое описание проблемы: когда не поступает никакого звука в наушники — начинаются щелчки, хотя должно быть просто тихо.
Особенностью проблемы было то, что если включить видео (например vlc) и поставить на паузу — щелчков не было. Я таким поганым хаком “решал” проблему несколько месяцев. Периодический поиск более конструкитивного решения проблемы постоянно приводил на подобные советы, которые к большому сожалению не очень-то совсем не работали :(
А тут как-то субботним вечером сел, чтобы радио-т послушать, а поскольку выпуск был негиковский, то от нечего делать решил увеличить свой локальный градус гиковости и решить-таки эту проблему окончательно. Кинул клич в чат (ну тут же гики вроде как собрались!). Откликнулся один товарищ — Sergey K., который навёл на файл:
/sys/module/snd_hda_intel/parameters/power_save
и что в нём необходимо 1 на 0 поменять. Пообщались, он подтвердил мои подозрения, что это как-то с экономией батарейки связано и пр. Он ещё что-то рассказал о том, что после перезагрузки значение в этом файле вернётся на круги своя, поэтому написал какой-то там хитрый скрипт, который во время загрузки каждый раз редактирует этот файл.
Ну я не такой умный. Да и это не совсем тот путь, который я ожидал. Хотя огромное ему спасибо за наводку. Именно этот файл и стал той отправной точкой моего гугления и поисков информации в man, чтобы найти-таки решение проблемы. И вот она заветная ласточка, которая и привела к окончательному решению проблемы: PowerManagement/ReducedPower
Прочитав по диагонали (умение, приобретённое во время ускореенного чтения лицензионных соглашений на Windows) моё внимание привлёк путь:
/usr/lib/pm-utils/power.d/
заглянул:
$ ls /usr/lib/pm-utils/power.d/
95hdparm-apm
anacron
disable_wol
intel-audio-powersave
laptop-mode
pci_devices
pcie_aspm
sata_alpm
sched-powersave
usb_bluetooth
wireless
xfs_buffer
А что это у нас за intel-audio-powersave?
$ vim /usr/lib/pm-utils/power.d/intel-audio-powersave
Листинг (не очень большой):
#!/bin/sh
# Allow the driver to put the audio hardware to sleep
# once the driver has been inactive for a second.
# This hook should work with at least the ac97 and hda codecs.
INTEL_AUDIO_POWERSAVE=${INTEL_AUDIO_POWERSAVE:-true}
help() {
cat <<EOF
— $0: Intel Audio powersave parameters.
This hook has 1 tuneable parameter.
INTEL_AUDIO_POWERSAVE = controls whether we will try to save power on battery.
Defaults to true.
EOF
}
audio_powersave() {
[ "$INTEL_AUDIO_POWERSAVE" = «true» ] || exit $NA
for dev in /sys/module/snd_*; do
[ -w "$dev/parameters/power_save" ] || continue
printf «Setting power savings for %s to %d...» "${dev##*/}" "$1"
echo $1 > "$dev/parameters/power_save" && echo Done. || echo Failed.
done
}
case $1 in
true) audio_powersave 1 ;;
false) audio_powersave 0 ;;
help) help;;
*) exit $NA
esac
exit 0
После небольшого раздумывания и прикидывания на глаз, методом научного тыка было получено удовольствиебыло решено и в результате воплощено исправить строчку:
INTEL_AUDIO_POWERSAVE=${INTEL_AUDIO_POWERSAVE:-true}
на
INTEL_AUDIO_POWERSAVE=${INTEL_AUDIO_POWERSAVE:-false}
Потом перезагруз, ожидания окончания загрузки и… О чудо: щелчков вроде как не слышно! А что у нас в упоминаемом выше файле от Sergey K.:
cat /sys/module/snd_hda_intel/parameters/power_save
0
Радость, веселье и общая вакханалия от непомерной радости и собственной крутости прилагается :)
Автор: amlet