[истории успеха]alsa -> oss v4 gentoo
Последнее время, довольно продолжительное - месяцы, стал замечать, что прослушивание музыки не приносит былого кайфа. Хотелось не продолжать слушать, а сделать потише и поскорее выключить. Так получилось, что в машине раньше была приличная акустика, а сейчас стоковое дерьмо. Дома система тоже исчерпала себя, как начальный hi-fi. Казалось, что проблема с усилителем. Переслушал в наушниках, слух явно не хуже, чем раньше, слышу всё.
Описать проблему тяжело и мало кто меня поймёт, однако наблюдалось явное урезание полосы частот. Не было слышно многих звуков, которые раньше были. Также звуковые образы имели тенденцию к уменьшению, рояль был каким-то небольшим и невесомым инструментом, без послезвучий, вокал девушки превращался в пискливое пение девочки, скрипка не походила на скрипку. Последней каплей стала попытка просмотра любимого фильма на DVD. Отлично помню, что полгода назад на нём был прекрасный отчётливый звук. Сейчас было полное впечатление от просмотра некачественной ТВ-программы. А образ DVD у меня тот самый, что и раньше. Стало очевидно, что проблема явно с софтом. И категорически не лечится старыми рецептами и шаманством с .asoundrc.
Ранее пробовал oss, но не проникся - сразу работать не хотело и удобных микшеров под это дело в пределах доступности не было. Перечитал устаревшие на 2 года wiki дистрибутивов gentoo и arch.
Оказалось, что достаточно:
1. пересобрать alsa и все зависимые звуковые модули модулями, а не статически.
2. добавить эти модули в blacklist, потому что они нам не нужны.
$ cat /etc/modprobe.d/alsa.conf
blacklist snd_ice1724 snd_ac97_codec snd_ice17xx_ak4xxx snd_pcm
3. откуда-нибудь поставить oss версии 4.x. Я сделал это через оверлей flora. layman -a flora; emerge oss
4. Добавить загрузку модулей и восстановление уровней в автозагрузку: rc-update add oss default
5. Очень важно апппаратно уменьшить громкость на усилителе. Там, где на alsa было -10dB, на oss играет -35dB.
6. Тестируем и смотрим, что вышло: ossdetect -v ; soundoff && soundon ; osstest
7. Пересобрать свои приложения с USE-флагами "oss -alsa"
Навскидку, плееры работают. С микшерами еще предстоит разобраться, но в OSS регулируется уровень по приложению. Полоса частот снова полная. Что было с alsa и когда оно возникло - тайна, покрытая мраком.
Апдейт, спустя неделю использования
Итак, на новой звуковой системе была детализация, но не хватало драйва и музыкальности. Голоса были какие-то хриплые, даже женские, ощущался недостаток высоких частот. После того, как я нашел новые виниловые рипы 96 kHz, а они играли как говно, это было печально...
В качестве твика был применен рецепт по изменению Sample Rate из АрчВики
Результат оказался ошеломительным. Гитара, как живая. Голоса - насколько это позволяет моя неважная акустика Monitor Audio RS1 и комната - натуральные. Верха есть. И самое главное - есть драйв!
Для моей звуковой карты, как оказалось, максимум поддерживающей 192000 Гц, оказалось достаточно выполнить команды:
sudo /usr/lib/oss/scripts/killprocs.sh sudo vmixctl rate /dev/dsp 192000 sudo ossmix envy24.rate 192000 sudo ossmix envy24.ratelock ONЕще не проверил, работает ли при перезагрузке, но надо добавить следующие команды
vmixctl rate /dev/dsp 192000 ossmix envy24.rate 192000 ossmix envy24.ratelock ONв файл
/usr/lib/oss/soundon.userи сделать его исполняемым
sudo chmod a+x /usr/lib/oss/soundon.user
Еще апдейт на следующий день
Изменения сохраняются. После перезагрузки частота дискретизации 192 kHz. Заработал звук в xbmc 12. Оказывается, он работает через libSDL. Пришлось пересобрать эту библиотеку без поддержки alsa и включив oss. Файл ~/.asoundrc следующий, но я не уверен, что он вообще задействован:
pcm.!default { type oss device /dev/dsp } mixer.!default { type oss device /dev/dsp }Поиск микшера превратился в большую проблему. Всё, что есть, включая aumix и wsmixer и другие, даже декларирующие поддержку OSS, не работают. Возможно, потому что все они для oss v.3.x. Регулировка громкости по приложениям действительно есть по-умолчанию. Но мне неудобно постоянно переключаться на виртуальный экран с плеером deadbeef, а горячие клавиши на steelseries пока не поддаются настройке. Патч для ядер >3.7.2 @ Patch for kernels >3.7.2
как применять:
cd /usr/lib/oss/build vim patch patch -p1 < patch выбрать файл pci_wrapper.inc ./install для сборки и инсталляции модулей. ossdetect -v soundon
Для версии ядра Linux-3.14.0 применяется следующий патч для файла osscore.c:
--- setup/Linux/oss/build/osscore.c 2014-02-14 22:59:55.000000000 +0000 +++ setup/Linux/oss/build/osscore.c 2014-04-06 01:16:06.171974568 +0100 @@ -472,7 +472,9 @@ int oss_get_uid (void) { -#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,29) +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,14,0) + return __kuid_val(current->cred->uid); +#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,29) return current->cred->uid; #else return current->uid;
Комментарии
Отправить комментарий