Linux за българи: Форуми

Linux секция за начинаещи => Настройка на програми => Темата е започната от: Recku в Feb 12, 2016, 12:35



Титла: Автоматично стартиране на pulseaudio след събуждане (resume)
Публикувано от: Recku в Feb 12, 2016, 12:35
Понеже не видях отговор на запитването си, нищо чудно и просто да не е станало ясно, защото малко набързо го „надрасках“, та сега ще споделя как реших проблема. :)

Да припомня накратко, този път ще се постарая да опиша проблема по-ясно:
принуден съм да използвам готово ядро само едно единствено 3.1.10 за да заработи без проблеми модула на nvidia tegra, машината на която се случва това е смартбук Toshiba AC100. Дистрибуцията, която използвам е Ubuntu 12.04.
Като всяко друго лаптопо-подобно се предполага, че активно ще се използва функцията приспиване (suspend или както е модерно в новите преводи Суспендиране :D), но нещеш ли има бъг в това ядро и след събуждане няма звук.
Решението на този проблем е с изпълнението на следната последователност от действия:
Код
GeSHi (Bash):
  1. echo "autospawn = no" > ~/.pulse/client.conf
това ще ограничи автоматичното стартиране на pulseaudio, чието забавяне  на стартирането е от значение по-нататък, което пък от своя страна налага въвеждане на стартовата команда
Код
GeSHi (Bash):
  1. pulseaudio --start
още с началото на сесията. С други думи изпълняваме:
1. В случай, че нямаме папка autostart в ~/.config
Код
GeSHi (Bash):
  1. mkdir ~/.config/autostart

2. Създаваме файл за автоматично стартиране на pulseaudio --start с началото на сесията
Код
GeSHi (Bash):
  1. cat <<END > ~/.config/autostart/pulseaudio.desktop
  2. [Desktop Entry]
  3. Type=Application
  4. Exec=pulseaudio --start
  5. Hidden=false
  6. NoDisplay=false
  7. X-GNOME-Autostart-enabled=true
  8. END
Дотук добре! Остава да се справим със самото събуждане, при което се налага спирането на действащия процес на pulseaudio с командата:
Код
GeSHi (Bash):
  1. pulseaudio --kill
(да „убием“ копелето :D)
след това нареждаме на alsa да си презареди модулите:
Код
GeSHi (Bash):
  1. sudo alsa force-reload
приключването на този процес изисква известно време (около 10 секунди), затова спряхме автоматичното стартиране на pulseaudio с
autospawn = no
и след като приключи въпросното презареждане на модули, вече сме готови да заредим пулса:
Код
GeSHi (Bash):
  1. pulseaudio --start

Целият този процес, разбира се, може да бъде автоматизиран, чиято автоматизация аз изпълних по следния начин:
1. Създадох файл 30_alsa_reload в /etc/pm/sleep.d/:
Код
GeSHi (Bash):
  1. sudo nano /etc/pm/sleep.d/30_alsa_reload
2. Въведох съдържанието:
Код
GeSHi (Bash):
  1. #!/bin/bash
  2.  
  3. PATH=/sbin:/usr/sbin:/bin:/usr/bin
  4. USER=personal #името на потребителя
  5.  
  6. case "${1}" in
  7.    suspend)
  8.        # executed on suspend
  9.        #      killall pulseaudio
  10.        ;;
  11.    resume)
  12.                killall pulseaudio
  13.                alsa force-reload
  14.                pulseaudio --start    #стартира пулсаудиото за root, не че е необходимо
  15.                su $USER -c "pulseaudio --start" &
  16.        # executed on resume
  17.        ;;
  18. esac
  19.  

!!!NB: Тук новото е командата

Код
GeSHi (Bash):
  1. su $USER -c "pulseaudio --start"
която изпълнява стартирането на pulseaudio от наше име в нашата среда, така след спирането на pulseaudio отново ще имаме работещ интерфейс, ще можем да управляваме звука от предназначената икона за това, понеже, ако си спомняте, бяхме деактивирали автоматичното стартиране (рестартиране) на pulseaudio в нашата среда. За да упоменем за кой потребител се отнася, записваме името му след
USER=
# в началото на скрипта

3. Правим файла изпълним:
Код
GeSHi (Bash):
  1. sudo chmod +x /etc/pm/sleep.d/30_alsa_reload

4. Приспиваме, за да проверим резултата и...
Воаля, звук имаме и интерфейсът си работи, само бутоните за управление на звука от клавиатурата не работят, но това не е толкова голям проблем, поне иконата може да се използва. :)  [_]3 [_]3 [_]3

ПП: За да станат ясни разликите преди и след добавянето на
Код
GeSHi (Bash):
  1. su $USER -c "pulseaudio --start" &
прикачам 2 снимки за сравнение :) Всъщност това е и проблема, за който търсих решение. :)


Титла: Re: Автоматично стартиране на pulseaudio
Публикувано от: Recku в Feb 14, 2016, 11:32
Понеже си намерих решение на проблема и от запитване се превърна в статия за справянето с проблем за хора, които ги мързи да си прекомпилират ядро, предлагам модератор да заключи темата. :) Освен ако, разбира се, няма някой, който да допълни с нещо или да ме поправи в това, което съм сътворил. :D  [_]3