LinuxForum.Fans
Тема

Linphone ALSA no soundcard

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

Всем привет! Продолжаю мучать http://www.variscite.com/products/item/48-var-dvk-am35 с процессорным модулем на основе AM3517.

Система:

text
root@am3517-evm:/home/mc_here/bin# uname -a
Linux am3517-evm 2.6.37 #1 Sun Aug 28 08:36:02 IDT 2011 armv7l unknown

Скомпилировал и установил туда Linphone с опцией "--enable-alsa". При его запуске получаю:

text
root@am3517-evm:/usr/share/alsa# /home/linphone/install/usr/local/bin/linphonec
ortp-error-Could not find a suitable soundcard !
ortp-error-Could not find a suitable soundcard !
ortp-error-Could not find a suitable soundcard !
Ready
Warning: video is disabled in linphonec, use -V or -C or -D to enable.
linphonec>

Команда

text
soundcard list

в Linphone выводит пустой список. Не видит звуковой карты.

Но aplay и arecord работают нормально.

text
root@am3517-evm:/usr/share/alsa# aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: am3517evm [am3517evm], device 0: AIC23 tlv320aic23-hifi-0 []
  Subdevices: 1/1
  Subdevice #0: subdevice #0
root@am3517-evm:/usr/share/alsa# aplay -L
null
    Discard all samples (playback) or generate zero samples (capture)

MPlayer проигрывает mp3 файлы.
Alsamixer также удачно работает и позволяет регулировать настройки.

Каталог /dev/dsp отсутствует. В наличии имеется /dev/snd

text
root@am3517-evm:/usr/share/alsa# ls -la /dev/snd
drwxr-xr-x    2 root     root          120 Jul  7 19:31 .
drwxr-xr-x   12 root     root         3200 Jul  7 19:31 ..
crw-rw----    1 root     audio    116,   0 Jan  1  2000 controlC0
crw-rw----    1 root     audio    116,  24 Jan  1  2000 pcmC0D0c
crw-rw----    1 root     audio    116,  16 Jan  1  2000 pcmC0D0p
crw-rw----    1 root     audio    116,  33 Jan  1  2000 timer

Также в наличии имеется каталог ALSA

text
root@am3517-evm:/usr/share/alsa# ls
alsa.conf         cards             pcm               sndo-mixer.alisp
bluetooth.conf    init              smixer.conf       speaker-test

Но LInphone всё равно не хочет запускаться.
Пробывал также софтфон PJSUA. Он тоже не видит звуковую карту. :(

Может кто сталкивался с таким

#239946

godor2008, а strace запихнуть на эту коробочку можно?
чтобы посмотреть, куда он тыкается в поисках звуковухи...

и устройства в /dev ручками создаёте или там udev есть?

#239949

Устройства вручную не создавал

text
root@am3517-evm:~# find / -name "*udev*"
/dev/udev_network_queue
/etc/udev
/etc/udev/rules.d/50-udev-default.rules
/etc/udev/rules.d/95-udev-late.rules
/etc/udev/rules.d/udev.rules
/etc/udev/udev.conf
/etc/default/udev
/etc/rcS.d/S12udev-cache
/etc/rcS.d/S03udev
/etc/init.d/udev
/etc/init.d/udev-cache
/lib/udev

strace я скомпилил и запустил на ките. При запуске "/home/strace/install/usr/local/bin/strace /home/linphone/install/usr/local/bin/linphonec" получаю бесконечный поток сообщений

text

...
gettimeofday({1310083181, 460582}, NULL) = 0
select(7, [6], NULL, NULL, {0, 0})      = 0 (Timeout)
gettimeofday({1310083181, 461019}, NULL) = 0
gettimeofday({1310083181, 461208}, NULL) = 0
....
#239958
godor2008 написал:
root@am3517-evm:~# find / -name "*udev*"

какие-то ошмётки... настораживает, что udevd нет...
но проще посмотреть, запущен ли он... ps aux | grep udev

godor2008 написал:
strace я скомпилил и запустил на ките. При запуске "/home/strace/install/usr/local/bin/strace /home/linphone/install/usr/local/bin/linphonec" получаю бесконечный поток сообщений

нас не всё интересует: strace -e open /home/linphone/install/usr/local/bin/linphonec

#239963
text
root@am3517-evm:~# ps | grep udev
  595 root      1852 S <  /sbin/udevd -d
 1514 root      2680 S    grep udev

При запуске с кодом "ps aux" получаю ошибку:

text
root@am3517-evm:~# ps aux | grep udev
ps: invalid option -- 'a'
BusyBox v1.13.2 (2011-07-05 21:30:53 CDT) multi-call binary

Usage: ps

Report process status

Options: w Wide output

text
root@am3517-evm:~# /home/strace/install/usr/local/bin/strace -e open /home/linphone/install/usr/local/bin/linphonec
open("/home/linphone/install/usr/local/lib/tls/v7l/fast-mult/half/liblinphone.so.4", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/home/linphone/install/usr/local/lib/tls/v7l/fast-mult/liblinphone.so.4", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/home/linphone/install/usr/local/lib/tls/v7l/half/liblinphone.so.4", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/home/linphone/install/usr/local/lib/tls/v7l/liblinphone.so.4", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/home/linphone/install/usr/local/lib/tls/fast-mult/half/liblinphone.so.4", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/home/linphone/install/usr/local/lib/tls/fast-mult/liblinphone.so.4", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/home/linphone/install/usr/local/lib/tls/half/liblinphone.so.4", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/home/linphone/install/usr/local/lib/tls/liblinphone.so.4", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/home/linphone/install/usr/local/lib/v7l/fast-mult/half/liblinphone.so.4", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/home/linphone/install/usr/local/lib/v7l/fast-mult/liblinphone.so.4", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/home/linphone/install/usr/local/lib/v7l/half/liblinphone.so.4", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/home/linphone/install/usr/local/lib/v7l/liblinphone.so.4", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/home/linphone/install/usr/local/lib/fast-mult/half/liblinphone.so.4", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/home/linphone/install/usr/local/lib/fast-mult/liblinphone.so.4", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/home/linphone/install/usr/local/lib/half/liblinphone.so.4", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/home/linphone/install/usr/local/lib/liblinphone.so.4", O_RDONLY) = 3
open("/home/linphone/install/usr/local/lib/libreadline.so.6", O_RDONLY) = 3
open("/home/linphone/install/usr/local/lib/libncurses.so.5", O_RDONLY) = 3
open("/home/linphone/install/usr/local/lib/libmediastreamer.so.1", O_RDONLY) = 3
open("/home/linphone/install/usr/local/lib/libortp.so.8", O_RDONLY) = 3
open("/home/linphone/install/usr/local/lib/libspeex.so.1", O_RDONLY) = 3
open("/home/linphone/install/usr/local/lib/libpthread.so.0", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/var/run/ld.so.cache", O_RDONLY)  = -1 ENOENT (No such file or directory)
open("/lib/tls/v7l/fast-mult/half/libpthread.so.0", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/lib/tls/v7l/fast-mult/libpthread.so.0", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/lib/tls/v7l/half/libpthread.so.0", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/lib/tls/v7l/libpthread.so.0", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/lib/tls/fast-mult/half/libpthread.so.0", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/lib/tls/fast-mult/libpthread.so.0", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/lib/tls/half/libpthread.so.0", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/lib/tls/libpthread.so.0", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/lib/v7l/fast-mult/half/libpthread.so.0", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/lib/v7l/fast-mult/libpthread.so.0", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/lib/v7l/half/libpthread.so.0", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/lib/v7l/libpthread.so.0", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/lib/fast-mult/half/libpthread.so.0", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/lib/fast-mult/libpthread.so.0", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/lib/half/libpthread.so.0", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/lib/libpthread.so.0", O_RDONLY)  = 3
open("/home/linphone/install/usr/local/lib/libeXosip2.so.6", O_RDONLY) = 3
open("/home/linphone/install/usr/local/lib/libosip2.so.6", O_RDONLY) = 3
open("/home/linphone/install/usr/local/lib/libSDL-1.2.so.0", O_RDONLY) = 3
open("/home/linphone/install/usr/local/lib/libspeexdsp.so.1", O_RDONLY) = 3
open("/home/linphone/install/usr/local/lib/libogg.so.0", O_RDONLY) = 3
open("/home/linphone/install/usr/local/lib/libosipparser2.so.6", O_RDONLY) = 3
open("/home/linphone/install/usr/local/lib/libgcc_s.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/lib/libgcc_s.so.1", O_RDONLY)    = 3
open("/home/linphone/install/usr/local/lib/libc.so.6", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/lib/libc.so.6", O_RDONLY)        = 3
open("/home/linphone/install/usr/local/lib/libstdc++.so.6", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/lib/libstdc++.so.6", O_RDONLY)   = -1 ENOENT (No such file or directory)
open("/usr/lib/tls/v7l/fast-mult/half/libstdc++.so.6", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/lib/tls/v7l/fast-mult/libstdc++.so.6", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/lib/tls/v7l/half/libstdc++.so.6", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/lib/tls/v7l/libstdc++.so.6", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/lib/tls/fast-mult/half/libstdc++.so.6", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/lib/tls/fast-mult/libstdc++.so.6", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/lib/tls/half/libstdc++.so.6", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/lib/tls/libstdc++.so.6", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/lib/v7l/fast-mult/half/libstdc++.so.6", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/lib/v7l/fast-mult/libstdc++.so.6", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/lib/v7l/half/libstdc++.so.6", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/lib/v7l/libstdc++.so.6", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/lib/fast-mult/half/libstdc++.so.6", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/lib/fast-mult/libstdc++.so.6", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/lib/half/libstdc++.so.6", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/lib/libstdc++.so.6", O_RDONLY) = 3
open("/home/linphone/install/usr/local/lib/libm.so.6", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/lib/libm.so.6", O_RDONLY)        = 3
open("/home/linphone/install/usr/local/lib/librt.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/lib/librt.so.1", O_RDONLY)       = 3
open("/home/linphone/install/usr/local/lib/libdl.so.2", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/lib/libdl.so.2", O_RDONLY)       = 3
open("/home/linphone/install/usr/local/lib/libnsl.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/lib/libnsl.so.1", O_RDONLY)      = 3
open("/home/linphone/install/usr/local/lib/libresolv.so.2", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/lib/libresolv.so.2", O_RDONLY)   = 3
open("/usr/local/lib/mediastreamer/plugins", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/home/root/.linphonerc", O_RDONLY) = 3
[b]open("/usr/local/lib/liblinphone/plugins", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
ortp-error-Could not find a suitable soundcard !
ortp-error-Could not find a suitable soundcard !
ortp-error-Could not find a suitable soundcard ![/b]
Ready
Warning: video is disabled in linphonec, use -V or -C or -D to enable.
open("/home/root/.linphonec_history", O_RDONLY|O_LARGEFILE) = 9
open("/etc/inputrc", O_RDONLY|O_LARGEFILE) = 9
linphonec> open("/dev/urandom", O_RDONLY)          = 9
open("/home/root/.linphonerc", O_WRONLY|O_CREAT|O_TRUNC, 0666) = 9

Я тут не вижу попыток обращения к звуковой карте
open("/usr/local/lib/liblinphone/plugins", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
ortp-error-Could not find a suitable soundcard !
ortp-error-Could not find a suitable soundcard !
ortp-error-Could not find a suitable soundcard !

#239975
godor2008 написал:
Я тут не вижу попыток обращения к звуковой карте

я тоже...
странно, что он фейлится при открытии библиотек... а, не... он просто их ищет...
а ещё, что он не тыкается в поисках asound...
он вообще с ним слинкован? ldd /home/linphone/install/usr/local/bin/linphonec

godor2008 написал:
При запуске с кодом "ps aux" получаю ошибку:

не суть... важно, что он запущен...

#239980

Мой Linux не понимает "ldd"

Перед запуском Linphone я добавляю либы
export LD_LIBRARY_PATH=/home/linphone/install/usr/local/lib

Отредактировал /etc/asound.conf

text

pcm.!default {
    type hw
    card 0
}
ctl.!default {
    type hw
    card 0
}
#239981
godor2008 написал:
Мой Linux не понимает "ldd"

это часть glibc... какая у вас libc сказать и даже предположить не берусь...

просто похоже, что он собран без поддержки alsa...

#239983

Очень странно, ибо опцию "--enable-alsa" я включил на хостовой машине, где компилил. Там же стоит пакет libasound-dev и есть папка с header файлами alsa

#239988

ну тогда давайте подробно, как-что собирали...

*сам кросс-компиляцией ни разу не занимался...

#240002

Скомпилированный под x86 Linphone исправно работает в виртуальных машинах.

Компиляция под АРМ:

export PATH=/opt/arm-2011.09/bin:$PATH
export HOSTTPL=arm-none-linux-gnueabi
export PREFIX=/usr/local
export SOURCEDIR=$HOME/linphone
export INSTALLDIR=$SOURCEDIR/install
export COMPDIR=$SOURCEDIR/install$PREFIX

...
Компиляция под ARM всех зависимостей:
ncurses-5.9
readline-6.2
libosip2-3.5.0
libogg-1.3.0
libeXosip2-3.5.0
speex-1.2rc1
libav-0.7.4
SDL-1.2.15
libvorbis-1.3.2
...

Периодическое удаление *.la файлов в конечной директории

Компиляция Linphone:

text
cd $SOURCEDIR/linphone-3.5.2
./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" --disable-video --enable-alsa --disable-strict --disable-tests SPEEXDSP_CFLAGS="-I$COMPDIR/include" SPEEXDSP_LIBS="-L$COMPDIR/lib -lspeexdsp"

make
make install DESTDIR=$INSTALLDIR
За основу всё взял http://embedfun.blogspot.com/2011/08/cross-compiling-linphone.html

#240003

Если я создам каталог /dev/dsp то при запуске Linphone ошибка отсутствия звуковой карты не возникает. Правда она появляется при звонке smile

#240004
godor2008 написал:
Если я создам каталог /dev/dsp то при запуске Linphone ошибка отсутствия звуковой карты не возникает. Правда она появляется при звонке

:lol: /dev/dsp - это устройство OSS... судя по всему он у вас в ядре отключён...

godor2008 написал:
Компиляция под ARM всех зависимостей:

в зависимостях явно не хватает alsa-lib

godor2008 написал:
./configure

странно, что он не выдал ошибку... и можно его высер?

ЗЫ: у тов. snyper в блоге та же проблема...

#240007

ЗЫ: у тов. snyper в блоге та же проблема...

Это моя вторая личность smile

Сейчас покажу что он выдает...

Вот зараза - актуальные исходники остались на рабочем компе. Придется уже завтра их скопипастить

#240291

Во время конфигурации заметил такое сообщение:

text
checking alsa/asoundlib.h usability... no
checking alsa/asoundlib.h presence... no
checking for alsa/asoundlib.h... no

Да, но по адресу /usr/include/alsa есть исходники. У меня в системе установлен пакет liasound-dev

Но в файлах конфигурации я не нашел возможности указания где искать исходники.

В linphone/mediastreamer2/configure.sh есть такой текст:

text

if test "$alsa" = "true"; then
    for ac_header in alsa/asoundlib.h
do :
  ac_fn_c_check_header_mongrel "$LINENO" "alsa/asoundlib.h" "ac_cv_header_alsa_asoundlib_h" "$ac_includes_default"
if test "x$ac_cv_header_alsa_asoundlib_h" = x""yes; then :
  cat >>confdefs.h <<_ACEOF

Пробывал менять адрес - не помогает


Также в linphone/mediastreamer2/alsa.c есть строка

#include <alsa/alsalib.h>

#240299

godor2008, надо собрать alsa-lib аналогично другим зависимостям и добавить соответствующие параметры в строку конфигурации...
ещё лучше, если вы отыщете, какие исходники использовались в вашем арме, возьмёте оттуда хедеры, а саму библиотеку с вашей коробочки...

ЗЫ: по-хорошему весь тулчейн для сборки должен быть в отдельном chroot'е и он не должен использовать ни какие хедеры или библиотеки из основной системы.

#240313

Проблема в том, что в настройках я не нашел опции указания местарасположения исходников ALSA. Для osip/sdl например есть, а для альсы только вкл/выкл.

#240318

а если вместо всех этих опций указать просто --prefix="$INSTALLDIR/usr/local/" ?

#240396

Все равно не находит звуковые исходники. А опции все убирать нельзя, он тогда не видит кучи скомпиленных библиотек

#240409
"godor2008" написал:
Все равно не находит звуковые исходники. А опции все убирать нельзя, он тогда не видит кучи скомпиленных библиотек

да... сглупил... префикс только при install'е значение имеет...
ещё как вариант тотальной замены:
export LDFLAGS="-L$INSTALLDIR/usr/local/lib"
export CFLAGS="-I$INSTALLDIR/usr/local/include"

Войдите или зарегистрируйтесь, чтобы ответить.