Только перед этим скомпилить ALSA и поместить ее в INSTALLDIR ?
Linphone ALSA no soundcard
Только перед этим скомпилить ALSA и поместить ее в INSTALLDIR ?
само собой... впрочем как и всё остальное...
Теперь получаю вот такое при компиляции
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... yesUsability есть, а presence нет ?!
alsa-lib как собрали? дословно...
Альсу компилил так:
cd $SOURCEDIR/alsa-lib-1.0.25
./configure --prefix=$PREFIX --host=$HOSTTPL --enable-static --disable-shared
make
make install DESTDIR=$INSTALLDIRКонфиг Linphone:
./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 ов:
#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
Запускаю и получаю новые ошибки:
...
../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'
...
--enable-static --disable-shared
а чего не разделяемая?
vi $SOURCEDIR/linphone-3.5.2/mediastreamer2
и суда можно в линковку -lasound добавить... раз всёравно руками правите...
Добавил -lasound в каждый LIBS=... и о чудо! Оно скомпилировалось!
Но теперь другая проблема. Запускаю телефон на девките на ARM:
...
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 теперь хоть появился список карт:
linphonec> soundcard list
0: ALSA: default device
1: ALSA: am3517evm
На ките отсутствует папка /usr/local/share с последующей ALSA внутри.
Поиск по альсе выдает
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
Поробывал сделать хак и создать ссылки на драйвера в системе:
root@am3517-evm:/usr/local# cp -r -s /usr/share/alsa /usr/local/shareТеперь другие ошибки при запуске:
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.ИМХО два варианта:
1. скопировать алсу с девайса, и положить её в соответствующую папку в своей системе сборки. + узнать её версию и положить хедеры от соответствующей версии в include'ы
2. компилировать динамическую, а не статическую альсу и не копировать её на девайс.
ЗЫ:
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"
по идее это всё уже не нужно
Убрал --static в ALSA.
Изменил параметр export PREFIX=/usr/local на export PREFIX=/usr
Скомпилил. Оно запустилось на ките с ошибками:
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. Совсем никуда не звонит!!!
Выдает:
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. Может это повлиять?
Папку /linphone/share/alsa удалил уже когда посыпались ошибки
почему отсюда то...нужно удалить libasound из /что-то/там/lib.
чтобы точно посмотреть, откуда она подгружается, можно тем же strace воспользовался...
ЗЫ: не знаю, что там док предлагал, но если перенести в какой-нить раздел, то идея здравая. т.к. тема достаточно специфичная, а тут она просто затеряется...
прим. verg: позже будет перенесена
Скомпилил с альсой 1.0.23 --enable-static, --enable-shared
Теперь другие ошибки при конекте:
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 ошибки:
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 не дает никакого эффекта
Что интересно:
При звонке на 99991008 - это тестовый номер на сервере Yate, получаю такие вот сообщения:
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 не появляются. Как будто бы всё ок.
Я в Linphone отключил кодек speex 32000.
Теперь при конекте не появляются ошибки, но и звука тоже нет. Оставил включенными кодеки PCMA и PCMU
Удаление libasound.a из /home/linphone/usr/lib не дает никакого эффекта
.a - само собой не дало - это же статическая библиотека! она линкуется прямо в исполняемый файл. после компиляции нас интересуют .so файлы.
Моя идея в том, чтобы linphone использовал системный libasound.so из /usr/lib/. для того, чтобы это было наверняка - надо удалить лишние копии библиотеки.
для того, чтобы удостоверится в этом - можно воспользоваться strace'ом.
При запуске со strace обнаружил такую строчку:
open("/home/linphone/install/usr/lib/libasound.so.2", O_RDONLY) = 3Удалил данный файл. После запуска получаю:
...
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
...
Но ошибки при старте все равно возникают
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гмм... может и правда у алсы кривой конфиг?
если на коробке установлены alsa-utils и записываемая ФС в корне, то запуск alsaconf должен поправить дело...
остальное вроде всё правильно уже...
alsaconf на ките отсутствует(
1. скопировать алсу с девайса, и положить её в соответствующую папку в своей системе сборки. + узнать её версию и положить хедеры от соответствующей версии в include'ы
На ките нету:
root@am3517-evm:~# find / -name "*asound.a*"
/home/linphone/install/usr/lib/libasound.aКаким образом ее оттуда стащить?
"*asound.a*"
ну зачем опять статическую библиотеку ищите? libasound.so*
Точно...
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:~#