LinuxForum.Fans
Тема

Linphone ALSA no soundcard

Автор: godor2008 59 сообщений 14191 просмотров
#240434

Только перед этим скомпилить ALSA и поместить ее в INSTALLDIR ?

#240436
"godor2008" написал:
Только перед этим скомпилить ALSA и поместить ее в INSTALLDIR ?

само собой... впрочем как и всё остальное...

#240718

Теперь получаю вот такое при компиляции

text
checking alsa/asoundlib.h usability... yes
checking alsa/asoundlib.h presence... no
configure: WARNING: alsa/asoundlib.h: accepted by the compiler, rejected by the preprocessor!
configure: WARNING: alsa/asoundlib.h: proceeding with the compiler's result
checking for alsa/asoundlib.h... yes
checking for snd_pcm_open in -lasound... yes

Usability есть, а presence нет ?!

#240741

alsa-lib как собрали? дословно...

#240756

Альсу компилил так:

text
cd $SOURCEDIR/alsa-lib-1.0.25
./configure --prefix=$PREFIX --host=$HOSTTPL --enable-static --disable-shared
make
make install DESTDIR=$INSTALLDIR

Конфиг Linphone:

text
./configure --prefix=$PREFIX --host=$HOSTTPL --with-gnu-ld --disable-static --disable-glib --enable-gtk_ui=no --enable-sdl --disable-x11 --disable-libv4l2 --with-osip=$COMPDIR --with-readline=$COMPDIR SPEEX_CFLAGS="-I$COMPDIR/include" SPEEX_LIBS="-L$COMPDIR/lib -lspeex" FFMPEG_CFLAGS="-I$COMPDIR/include" FFMPEG_LIBS="-L$COMPDIR/lib -lavcodec" SWSCALE_CFLAGS="-I$COMPDIR/include" SWSCALE_LIBS="-L$COMPDIR/lib -lswscale" SDL_CFLAGS="-I$COMPDIR/include" SDL_LIBS="-L$COMPDIR/lib -lSDL" --enable-alsa --disable-video --disable-strict --disable-tests SPEEXDSP_CFLAGS="-I$COMPDIR/include" SPEEXDSP_LIBS="-L$COMPDIR/lib -lspeexdsp" LDFLAGS="-L$COMPDIR/lib" CFLAGS="-I$COMPDIR/include"

Затем редактирование makefile ов:

text
#vi $SOURCEDIR/linphone-3.5.2/mediastreamer2/tests/Makefile
#Find the LIBS variable and change it as:
#LIBS = -pthread -lpthread -lm -lrt /home/sasha/linphone/install/usr/local/lib/libvorbis.a -logg /home/sasha/linphone/install/usr/local/lib/libspeexdsp.a /home/sasha/linphone/install/usr/local/lib/libvorbisenc.a

#vi $SOURCEDIR/linphone-3.5.2/coreapi/Makefile #Find the LIBS variable and change it as: #LIBS = /home/sasha/linphone/install/usr/local/lib/libosip2.a /home/sasha/linphone/install/usr/local/lib/libspeex.a /home/sasha/linphone/install/usr/local/lib/libSDL.a /home/sasha/linphone/install/usr/local/lib/libvorbis.a /home/sasha/linphone/install/usr/local/lib/libvorbisenc.a /home/sasha/linphone/install/usr/local/lib/libspeexdsp.a -logg /home/sasha/linphone/install/usr/local/lib/libavutil.a

#cd $SOURCEDIR/linphone-3.5.2/coreapi/help/Makefile #Find the LIBS variable and change it as: #LIBS = /home/sasha/linphone/install/usr/local/lib/libeXosip2.a /home/sasha/linphone/install/usr/local/lib/libspeex.a /home/sasha/linphone/install/usr/local/lib/libSDL.a /home/sasha/linphone/install/usr/local/lib/libvorbisenc.a /home/sasha/linphone/install/usr/local/lib/libosipparser2.a /home/sasha/linphone/install/usr/local/lib/libosip2.a /home/sasha/linphone/install/usr/local/lib/libvorbis.a /home/sasha/linphone/install/usr/local/lib/libspeexdsp.a -logg

#cd $SOURCEDIR/linphone-3.5.2/console/Makefile #Find the LIBS variable and change it as: #LIBS = -leXosip2 -losip2 -lSDL /home/sasha/linphone/install/usr/local/lib/libvorbisenc.a -lspeexdsp -logg -losipparser2

#And find linphonecsh_LDADD variable and change it as: #linphonecsh_LDADD = $(ORTP_LIBS) -L/home/sasha/linphone/install/usr/local/lib

Запускаю и получаю новые ошибки:

text

...
../mediastreamer2/src/.libs/libmediastreamer.so: undefined reference to `snd_pcm_hw_params_set_periods_near@ALSA_0.9.0rc4'
../mediastreamer2/src/.libs/libmediastreamer.so: undefined reference to `snd_pcm_recover@ALSA_0.9'
...
#240764
"godor2008" написал:
--enable-static --disable-shared

а чего не разделяемая?

"godor2008" написал:
vi $SOURCEDIR/linphone-3.5.2/mediastreamer2

и суда можно в линковку -lasound добавить... раз всёравно руками правите...

#240780

Добавил -lasound в каждый LIBS=... и о чудо! Оно скомпилировалось!

Но теперь другая проблема. Запускаю телефон на девките на ARM:

text

...
root@am3517-evm:~# /home/linphone/install/usr/local/bin/linphonec
ALSA lib conf.c:3700:(snd_config_update_r) Cannot access file /usr/local/share/alsa/alsa.conf
ALSA lib pcm.c:2217:(snd_pcm_open_noupdate) Unknown PCM default
....

На ките уже установлены драйвера ALSA. И теперь надо правильно разрешить вопрос:
Что куда копировать?)

Я попробывал удалить /home/linphone/install/usr/local/bin/linphonec/share/alsa,
но при запуске получаю всё теже ошибки

В Linphone теперь хоть появился список карт:

text
linphonec> soundcard list
0: ALSA: default device
1: ALSA: am3517evm

На ките отсутствует папка /usr/local/share с последующей ALSA внутри.

Поиск по альсе выдает

text
root@am3517-evm:/home/linphone# find / -name "*alsa*"
/etc/udev/rules.d/40-alsa.rules
/etc/rc0.d/K31alsa-state
/etc/rc6.d/K31alsa-state
/etc/rcS.d/S39alsa-state
/etc/init.d/alsa-state
/usr/bin/alsamixer
/usr/lib/jack/jack_alsa.so
/usr/lib/alsa-lib
/usr/sbin/alsaconf
/usr/sbin/alsactl
/usr/share/alsa
/usr/share/alsa/alsa.conf
/usr/share/sounds/alsa
/home/linphone/install/usr/local/lib/alsa-lib
/home/linphone/install/usr/local/lib/pkgconfig/alsa.pc
/home/linphone/install/usr/local/share/alsa
/home/linphone/install/usr/local/share/alsa/alsa.conf.d
/home/linphone/install/usr/local/share/alsa/alsa.conf
/home/linphone/install/usr/local/share/aclocal/alsa.m4

Хм, надо какимто образом указать ему на использоание альсы с кита:
/usr/share/alsa

#240797

Поробывал сделать хак и создать ссылки на драйвера в системе:

text
root@am3517-evm:/usr/local# cp -r -s /usr/share/alsa /usr/local/share

Теперь другие ошибки при запуске:

text
root@am3517-evm:/usr/local# /home/linphone/install/usr/local/bin/linphonec
ALSA lib conf.c:4687:(snd_config_expand) Unknown parameters 0
ALSA lib control.c:951:(snd_ctl_open_noupdate) Invalid CTL default:0
ALSA lib conf.c:4687:(snd_config_expand) Unknown parameters 0
ALSA lib pcm.c:2217:(snd_pcm_open_noupdate) Unknown PCM default:0
ALSA lib conf.c:4687:(snd_config_expand) Unknown parameters 0
ALSA lib pcm.c:2217:(snd_pcm_open_noupdate) Unknown PCM default:0
Ready
Warning: video is disabled in linphonec, use -V or -C or -D to enable.
linphonec> Registration on sip:192.168.20.13 successful.
#241013

ИМХО два варианта:
1. скопировать алсу с девайса, и положить её в соответствующую папку в своей системе сборки. + узнать её версию и положить хедеры от соответствующей версии в include'ы
2. компилировать динамическую, а не статическую альсу и не копировать её на девайс.

ЗЫ:

"godor2008" написал:
SPEEX_CFLAGS="-I$COMPDIR/include" SPEEX_LIBS="-L$COMPDIR/lib -lspeex" FFMPEG_CFLAGS="-I$COMPDIR/include" FFMPEG_LIBS="-L$COMPDIR/lib -lavcodec" SWSCALE_CFLAGS="-I$COMPDIR/include" SWSCALE_LIBS="-L$COMPDIR/lib -lswscale" SDL_CFLAGS="-I$COMPDIR/include" SDL_LIBS="-L$COMPDIR/lib -lSDL"

по идее это всё уже не нужно

#241147

Убрал --static в ALSA.

Изменил параметр export PREFIX=/usr/local на export PREFIX=/usr

Скомпилил. Оно запустилось на ките с ошибками:

text
root@am3517-evm:~# /home/linphone/install/usr/bin/linphonec
ALSA lib conf.c:4687:(snd_config_expand) Unknown parameters 0
ALSA lib control.c:951:(snd_ctl_open_noupdate) Invalid CTL default:0
ALSA lib conf.c:4687:(snd_config_expand) Unknown parameters 0
ALSA lib pcm.c:2217:(snd_pcm_open_noupdate) Unknown PCM default:0
ALSA lib conf.c:4687:(snd_config_expand) Unknown parameters 0
ALSA lib pcm.c:2217:(snd_pcm_open_noupdate) Unknown PCM default:0
Ready
Warning: video is disabled in linphonec, use -V or -C or -D to enable.
linphonec> Registration on sip:192.168.20.13 successful.

И о чудо! Мне удалось позвонить и услышать свой голос!

Но не долгой была радость... Теперь оно больше не звонит. Хотя я меня только уровень громкости в alsamixer. Совсем никуда не звонит!!!

Выдает:

text
linphonec> call 99991008
Establishing call id to <sip:99991008@192.168.20.13>, assigned id 1
Contacting <sip:99991008@192.168.20.13>
linphonec> Call 1 to <sip:99991008@192.168.20.13> in progress.
linphonec> Call 1 with <sip:99991008@192.168.20.13> connected.
Call answered by <sip:99991008@192.168.20.13>.
linphonec> Media streams established with <sip:99991008@192.168.20.13> for call 1.
ortp-error-alsa_open_r: Error setting params for more than 3 seconds
ortp-error-alsa_open_r: Error setting params for more than 3 seconds

Я указал альсу компилить shared. Папку /linphone/share/alsa удалил уже когда посыпались ошибки. Когда она присутствовала - звонок проходил. Когда появились ошибки, я ее удалил, но то не помогло. Восстановление папки Linphone в исходное состояние не помогает - появляется та вторая ошибка...

На плате стоит ALSA 1.0.23, а я компилил ALSA 1.0.25. Может это повлиять?

#241181
"godor2008" написал:
Папку /linphone/share/alsa удалил уже когда посыпались ошибки

почему отсюда то...нужно удалить libasound из /что-то/там/lib.
чтобы точно посмотреть, откуда она подгружается, можно тем же strace воспользовался...

ЗЫ: не знаю, что там док предлагал, но если перенести в какой-нить раздел, то идея здравая. т.к. тема достаточно специфичная, а тут она просто затеряется...

прим. verg: позже будет перенесена

#241237

Скомпилил с альсой 1.0.23 --enable-static, --enable-shared

Теперь другие ошибки при конекте:

text
ortp-error-snd_pcm_avail_update: Broken pipe
ortp-error-*** alsa_can_read fixup, trying to recover
ALSA lib pcm.c:7245:(snd_pcm_recover) overrun occured
ortp-error-snd_pcm_avail_update: Broken pipe
ortp-error-*** alsa_can_read fixup, trying to recover
ALSA lib pcm.c:7245:(snd_pcm_recover) overrun occured
ortp-error-snd_pcm_avail_update: Broken pipe
ortp-error-*** alsa_can_read fixup, trying to recover
ALSA lib pcm.c:7245:(snd_pcm_recover) overrun occured

При старте теперь всего 2 ошибки:

text
root@am3517-evm:/home/linphone# /home/linphone/install/usr/bin/linphonec
ALSA lib conf.c:4600:(snd_config_expand) Unknown parameters 0
ALSA lib control.c:902:(snd_ctl_open_noupdate) Invalid CTL default:0
Ready
Warning: video is disabled in linphonec, use -V or -C or -D to enable.
linphonec> Registration on sip:192.168.20.13 successful.

Удаление libasound.a из /home/linphone/usr/lib не дает никакого эффекта

#241256

Что интересно:

При звонке на 99991008 - это тестовый номер на сервере Yate, получаю такие вот сообщения:

text
ortp-error-snd_pcm_avail_update: Broken pipe
ortp-error-*** alsa_can_read fixup, trying to recover
ALSA lib pcm.c:7245:(snd_pcm_recover) overrun occured
ortp-error-snd_pcm_avail_update: Broken pipe

И ужасно искаженный отрывистый звук. Даже "выкрики" какието.

Когда же я звоню на другого клиента (на отдельном ноутбуке), соединение происходит нормально, в окне PhonerLite (телефон на ноутбуке) появляется сообщение об удачном конекте, показываются используемые кодеки, но звука нет! Никакие сообщения в Linphone не появляются. Как будто бы всё ок.

#241261

Я в Linphone отключил кодек speex 32000.

Теперь при конекте не появляются ошибки, но и звука тоже нет. Оставил включенными кодеки PCMA и PCMU

#241357
"godor2008" написал:
Удаление libasound.a из /home/linphone/usr/lib не дает никакого эффекта

.a - само собой не дало - это же статическая библиотека! она линкуется прямо в исполняемый файл. после компиляции нас интересуют .so файлы.
Моя идея в том, чтобы linphone использовал системный libasound.so из /usr/lib/. для того, чтобы это было наверняка - надо удалить лишние копии библиотеки.
для того, чтобы удостоверится в этом - можно воспользоваться strace'ом.

#241447

При запуске со strace обнаружил такую строчку:

text
open("/home/linphone/install/usr/lib/libasound.so.2", O_RDONLY) = 3

Удалил данный файл. После запуска получаю:

text

...
open("/home/linphone/install/usr/lib/libasound.so.2", O_RDONLY) = -1 ENOENT (No such file or directory)
...
open("/usr/lib/libasound.so.2", O_RDONLY) = 3
...

Но ошибки при старте все равно возникают

text

root@am3517-evm:~# /home/linphone/install/usr/bin/linphonec
ALSA lib conf.c:4630:(snd_config_expand) Unknown parameters 0
ALSA lib control.c:882:(snd_ctl_open_noupdate) Invalid CTL default:0
Ready
#241499

гмм... может и правда у алсы кривой конфиг?
если на коробке установлены alsa-utils и записываемая ФС в корне, то запуск alsaconf должен поправить дело...
остальное вроде всё правильно уже...

#241545

alsaconf на ките отсутствует(

"Fat-Zer" написал:
1. скопировать алсу с девайса, и положить её в соответствующую папку в своей системе сборки. + узнать её версию и положить хедеры от соответствующей версии в include'ы

На ките нету:

text
root@am3517-evm:~# find / -name "*asound.a*"
/home/linphone/install/usr/lib/libasound.a

Каким образом ее оттуда стащить?

#241550
"godor2008" написал:
"*asound.a*"

ну зачем опять статическую библиотеку ищите? libasound.so*

#241552

Точно...

text
root@am3517-evm:~# find / -name "*asound*"
/etc/asound.state
/etc/asound.conf
/usr/lib/alsa-lib/libasound_module_ctl_bluetooth.so
/usr/lib/alsa-lib/libasound_module_pcm_bluetooth.so
/usr/lib/libasound.so.2
/usr/lib/libasound.so.2.0.0
/proc/asound
/sbin/asound.state
root@am3517-evm:~#
Войдите или зарегистрируйтесь, чтобы ответить.