Понеже не видях отговор на запитването си, нищо чудно и просто да не е станало ясно, защото малко набързо го „надрасках“, та сега ще споделя как реших проблема.
Да припомня накратко, този път ще се постарая да опиша проблема по-ясно:
принуден съм да използвам готово ядро само едно единствено 3.1.10 за да заработи без проблеми модула на nvidia tegra, машината на която се случва това е смартбук Toshiba AC100. Дистрибуцията, която използвам е Ubuntu 12.04.
Като всяко друго лаптопо-подобно се предполага, че активно ще се използва функцията приспиване (suspend или както е модерно в новите преводи Суспендиране
), но нещеш ли има бъг в това ядро и след събуждане няма звук.
Решението на този проблем е с изпълнението на следната последователност от действия:
GeSHi (Bash):
echo "autospawn = no" > ~/.pulse/client.conf
това ще ограничи автоматичното стартиране на pulseaudio, чието забавяне на стартирането е от значение по-нататък, което пък от своя страна налага въвеждане на стартовата команда
GeSHi (Bash):
pulseaudio --start
още с началото на сесията. С други думи изпълняваме:
1. В случай, че нямаме папка autostart в ~/.config
GeSHi (Bash):
mkdir ~/.config/autostart
2. Създаваме файл за автоматично стартиране на
pulseaudio --start с началото на сесията
GeSHi (Bash):
cat <<END > ~/.config/autostart/pulseaudio.desktop
[Desktop Entry]
Type=Application
Exec=pulseaudio --start
Hidden=false
NoDisplay=false
X-GNOME-Autostart-enabled=true
END
Дотук добре! Остава да се справим със самото събуждане, при което се налага спирането на действащия процес на pulseaudio с командата:
GeSHi (Bash):
pulseaudio --kill
(да „убием“ копелето
)
след това нареждаме на alsa да си презареди модулите:
GeSHi (Bash):
sudo alsa force-reload
приключването на този процес изисква известно време (около 10 секунди), затова спряхме автоматичното стартиране на pulseaudio с
autospawn = no
и след като приключи въпросното презареждане на модули, вече сме готови да заредим пулса:
GeSHi (Bash):
pulseaudio --start
Целият този процес, разбира се, може да бъде автоматизиран, чиято автоматизация аз изпълних по следния начин:
1. Създадох файл 30_alsa_reload в /etc/pm/sleep.d/:
GeSHi (Bash):
sudo nano /etc/pm/sleep.d/30_alsa_reload
2. Въведох съдържанието:
GeSHi (Bash):
#!/bin/bash
PATH=/sbin:/usr/sbin:/bin:/usr/bin
USER=personal #името на потребителя
case "${1}" in
suspend)
# executed on suspend
# killall pulseaudio
;;
resume)
killall pulseaudio
alsa force-reload
pulseaudio --start #стартира пулсаудиото за root, не че е необходимо
su $USER -c "pulseaudio --start" &
# executed on resume
;;
esac
!!!NB: Тук новото е командатаGeSHi (Bash):
su $USER -c "pulseaudio --start"
която изпълнява стартирането на pulseaudio от наше име в нашата среда, така след спирането на pulseaudio отново ще имаме работещ интерфейс, ще можем да управляваме звука от предназначената икона за това, понеже, ако си спомняте, бяхме деактивирали автоматичното стартиране (рестартиране) на pulseaudio в нашата среда. За да упоменем за кой потребител се отнася, записваме името му след
USER=
# в началото на скрипта
3. Правим файла изпълним:
GeSHi (Bash):
sudo chmod +x /etc/pm/sleep.d/30_alsa_reload
4. Приспиваме, за да проверим резултата и...
Воаля, звук имаме и интерфейсът си работи, само бутоните за управление на звука от клавиатурата не работят, но това не е толкова голям проблем, поне иконата може да се използва.
ПП: За да станат ясни разликите преди и след добавянето на
GeSHi (Bash):
su $USER -c "pulseaudio --start" &
прикачам 2 снимки за сравнение
Всъщност това е и проблема, за който търсих решение.