Re: An Issue with A2dpd and some suggestions

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



  I know little of ALSA or Bluez, so I don't know the detail inside.
  1. attached log files:
     Blue-startup.log: the log information when "hcid -d -n" start to run
     Bluez-play.log: during a helix based player playback an audio stream, the log information from hcid.
  
  2. ALSA api 
   snd_pcm_hw_params() --> snd_pcm_prepare() --> pcm->fast_ops->prepare(pcm->fast_op_arg)
  I guess it will call to (from printf log, it does)
  File: audio/pcm_bluetooth.c 
  Function: bluetooth_prepare()
  And in this function, it will use the return value from write(data->pipefd[1],&c,1) as its (bluetooth_prepare) return value.---- I think the positive return value "1" was create here; 
  but I don't know whether there should be some place to translate this value to a valid return value of ALSA API. And I also don't what "1" is valid return value from the write() function.
  
  
  BR
  
  
  
  >-----Original Message-----
  >From: Holtmann, Marcel
  >Sent: 2008年5月14日 21:08
  >To: Zhao, Halley; Wong, James Sing Toh
  >Cc: Guo, Young
  >Subject: RE: An Issue with A2dpd and some suggestions
  >
  >Hi Halley,
  >
  >does a call to snd_pcm_hw_params() gets re-directed to the Bluetooth plugin
  >from the ALSA API? What is the actual call chain for it.
  >
  >Personally I would say this is an ALSA problem, but it could also be a BlueZ
  >problem since I must admit the ALSA plugins APIs are not really clear and
  >the possibility that we made a mistake is quite high.
  >
  >Please run "hcid -n -d" and then copy the output from your application
  >calling sndP_pcm_hw_params() so we see where inside the BlueZ code we are
  >actually. My wild guess is that if it is a BlueZ issue, then this will be
  >hidden somewhere non obvious. Please put this result on the BlueZ mailing
  >list so Luiz can have a look at it, too.
  >
  >Regards
  >
  >Marcel
  >
  >>-----Original Message-----
  >>From: Zhao, Halley
  >>Sent: Wednesday, May 14, 2008 1:34 AM
  >>To: Holtmann, Marcel; Wong, James Sing Toh
  >>Cc: Guo, Young; Zhao, Halley
  >>Subject: FW: An Issue with A2dpd and some suggestions
  >>
  >>  Hi Marcel:
  >>  With your (and bluez community) help, finally I installed bluez-3.31
  >on
  >>my desktop. Great thanks.
  >>
  >>  But I still have the issue that snd_pcm_hw_params() give a return value
  >>of "1" which is undefined meaning for this API. After I hack that return
  >>value to 0 (success). A helix based player (RP4MID) could work well on this
  >>package.
  >>
  >>  But I still don't know where the root cause is, James is more cared
  >about
  >>it.
  >>
  >>  Thanks BR.
  >>  "
  >http://www.alsa-project.org/alsa-doc/alsa-lib/group___p_c_m.html
  >>          int snd_pcm_hw_params  ()
  >>          Returns:
  >>              0 on success otherwise a negative error code
  >>  "
  >>
  >>
  >>  -----Original Message-----
  >>From: Holtmann, Marcel
  >>Sent: 2008年5月9日 21:09
  >>To: Zhao, Halley
  >>Cc: Guo, Young; Zheng, Huan; Tang, Feng; Lynch, Rusty
  >>Subject: RE: An Issue with A2dpd and some suggestions
  >>
  >>  Hi Halley,
  >>
  >>  can you please mail this bug report to the bluez-devel mailing list.
  >Then
  >>we have more experts looking at it. There is also a avinfo tool inside the
  >>bluez-utils packages that allows you to discover details on the A2DP
  >>features supported by your headset.
  >>
  >>
  >>  Additionally you should check that the ALSA or GStreamer plugins are
  >>installed at the right location. Sometimes it happens that the wrong one
  >is
  >>used and that makes it incompatible.
  >>
  >>  Regards
  >>
  >>  Marcel
  >>
  >>  >-----Original Message-----
  >>  >From: Zhao, Halley
  >>  >Sent: Friday, May 09, 2008 3:23 AM
  >>  >To: Holtmann, Marcel
  >>  >Cc: Guo, Young; Zheng, Huan; Tang, Feng; Lynch, Rusty
  >>  >Subject: RE: An Issue with A2dpd and some suggestions
  >>  >
  >>  >  Hi Marcel:
  >>  >  My Bluetooth earphone is Motorola HT820.
  >>  >
  >>  >  1. When I try to use bluez-utils 3.31 on my desktop (Ubuntu7.10),
  >>there
  >>  >are some issues: (but there is no such issue when I use 3.19 version
  >on
  >>  >this same platform). Should I update some other package besides bluez-
  >>utils
  >>  >and bluez-libs?
  >>  >  "
  >>  >  halley@azhao2ubtg2:~$ aplay
  >/home/halley/media/audio/Track27.wav
  >>  >  ALSA lib pcm_bluetooth.c:1501:(audioservice_recv) Error
  >receiving data
  >>  >from audio service: Success(0)
  >>  >  ALSA lib pcm_bluetooth.c:1517:(audioservice_expect) Bogus
  >message
  >>  >BT_GETCAPABILITIES_REQ received while BT_GETCAPABILITIES_RSP was
  >>expected
  >>  >  aplay: main:545: audio open error: Invalid argument
  >>  >  "
  >>  >
  >>  >  2. When I use bluez-utils 3.19 version, application calls
  >>  >snd_pcm_hw_params() sometimes will got return value "1". (The
  >function
  >>  >description says it will be 0 for success and negative number for
  >>failure).
  >>  >The positive value makes me puzzled.
  >>  >
  >>  >      /* Apply parameters */
  >>  >  	err = snd_pcm_hw_params(m_pAlsaPCMHandle, hwparams);
  >>  >  	if (err < 0)
  >>  >      {
  >>  >          HXLOGL1 ( HXLOG_ADEV, "snd_pcm_hw_params: %s",
  >>  >                    snd_strerror(err));
  >>  >          m_wLastError = RA_AOE_NOTENABLED;
  >>  >  	}
  >>  >
  >>  >      /* read buffer & period sizes */
  >>  >      snd_pcm_uframes_t buffer_size = 0;
  >>  >      snd_pcm_uframes_t period_size = 0;
  >>  >
  >>  >      if (err == 0)
  >>  >      {
  >>  >
  >>  >  >-----Original Message-----
  >>  >  >From: Holtmann, Marcel
  >>  >  >Sent: 2008年4月29日 19:01
  >>  >  >To: Zhao, Halley
  >>  >  >Cc: Li, Frank; Guo, Young; Zheng, Huan; Tang, Feng; Lynch, Rusty
  >>  >  >Subject: RE: An Issue with A2dpd and some suggestions
  >>  >  >
  >>  >  >Hi Halley,
  >>  >  >
  >>  >  >if you read the ChangeLog file it clearly states that you need
  >>  >  >bluez-libs-3.30 to use bluez-utils-3.30.
  >>  >  >
  >>  >  >You can find bluez-utils-3.28 at the same position you
  >downloaded
  >>3.30
  >>  >from.
  >>  >  >However there is no link it, but the packages are still
  >available.
  >>  >However
  >>  >  >in case of 3.28 you need at least bluez-libs-3.28 to match up
  >with
  >>it.
  >>  >  >
  >>  >  >Regards
  >>  >  >
  >>  >  >Marcel
  >>  >  >
  >>  >  >
  >>  >  >-----Original Message-----
  >>  >  >From: Zhao, Halley
  >>  >  >Sent: Tue 4/29/2008 2:12 AM
  >>  >  >To: Holtmann, Marcel
  >>  >  >Cc: Li, Frank; Guo, Young; Zheng, Huan; Tang, Feng; Lynch, Rusty
  >>  >  >Subject: RE: An Issue with A2dpd and some suggestions
  >>  >  >
  >>  >  >??Hi Marcel:
  >>  >  >??When I tried bluez-utils-3.30, I was block by error:
  >>  >  >??"hciconfig.c:(.text+0x37ee): undefined reference to
  >>  >  >`hci_write_inquiry_transmit_power_level'
  >>  >  >??hciconfig.c:(.text+0x3823): undefined reference to
  >>  >  >`hci_read_inquiry_transmit_power_level'
  >>  >  >??"
  >>  >  >??
  >>  >  >??Where could I get 3.28 version ?
  >>  >  >??
  >>  >  >??
  >>  >  >??>-----Original Message-----
  >>  >  >??>From: Holtmann, Marcel
  >>  >  >??>Sent: 2008?4?29? 15:46
  >>  >  >??>To: Zhao, Halley
  >>  >  >??>Cc: Li, Frank; Guo, Young; Zheng, Huan; Tang, Feng; Lynch,
  >Rusty
  >>  >  >??>Subject: RE: An Issue with A2dpd and some suggestions
  >>  >  >??>
  >>  >  >??>Hi Halley,
  >>  >  >??>
  >>  >  >??>the latest version of bluez-utils is 3.30 and I am just about
  >to
  >>  >release
  >>  >  >??>3.31. When you talk about 3.19, then you talk about a release
  >that
  >>is
  >>  >  >over
  >>  >  >??>7 month old. In some cases that might be fine, but with a topic
  >>like
  >>  >A2DP
  >>  >  >??>it is not. Simply download bluez-utils-3.30 and look at the
  >>ChangeLog
  >>  >  >file.
  >>  >  >??>It has the highlights of changes and you will see a lot of
  >them in
  >>  >  >direction
  >>  >  >??>of A2DP. If you stick with 3.19 you might get it working, but
  >you
  >>  >might
  >>  >  >also
  >>  >  >??>discover all the fixed bugs over and over again.
  >>  >  >??>
  >>  >  >??>You can clone a copy from the git://git.infradead.org/bluez-
  >>utils.git
  >>  >  >??>mirror and then run "gitk audio" to see only the audio service
  >>(A2DP
  >>  >and
  >>  >  >??>Headset) related changes and then judge for yourself.
  >>  >  >??>
  >>  >  >??>With Ubuntu Hardy you get at least 3.26 and even that is
  >already
  >>  >pretty
  >>  >  >old.
  >>  >  >??>The best choice might be too look at some updates packages
  >from
  >>  >Debian,
  >>  >  >??>because I remember that they already packaged 3.30 and my
  >advise
  >>  >would
  >>  >  >be
  >>  >  >??>to wait until the end of this week when I actually release
  >3.31
  >>since
  >>  >  >that
  >>  >  >??>has a lot of fixes in it.
  >>  >  >??>
  >>  >  >??>If you don't wanna wait, the best release would be currently
  >the
  >>  >3.28,
  >>  >  >??>because that was before we introduced the new API. Once 3.31
  >is
  >>out
  >>  >  >??>everything is back to normal again. However with 3.28 the
  >services
  >>  >are
  >>  >  >in
  >>  >  >??>a separate process and with 3.31 everything will be a plugin
  >(just
  >>  >for
  >>  >  >the
  >>  >  >??>technical clarification).
  >>  >  >??>
  >>  >  >??>Regards
  >>  >  >??>
  >>  >  >??>Marcel
  >>  >  >??>
  >>  >  >??>-----Original Message-----
  >>  >  >??>From: Zhao, Halley
  >>  >  >??>Sent: Mon 4/28/2008 10:54 PM
  >>  >  >??>To: Holtmann, Marcel
  >>  >  >??>Cc: Li, Frank; Guo, Young; Zheng, Huan; Zhao, Halley; Tang,
  >Feng;
  >>  >Lynch,
  >>  >  >??>Rusty
  >>  >  >??>Subject: RE: An Issue with A2dpd and some suggestions
  >>  >  >??>
  >>  >  >??>??Hi Marcel:
  >>  >  >??>??Our OS is Ubuntu based, and there is bluez-utils
  >(3.19-0ubuntu3)
  >>  >  >??>installed.
  >>  >  >??>??The package information gives us the link
  >>  >  >http://bluez.sourceforge.net,
  >>  >  >??>and it is same to http://www.bluez.org/, do you think the 3.19
  >>  >version
  >>  >  >is
  >>  >  >??>ok for us?
  >>  >  >??>??
  >>  >  >??>??Is it correct?
  >>  >  >??>??If not, how could we remove the "plugz" and install
  >bluez-utils?
  >>  >  >??>??Must we start from the source package from
  >>http://www.bluez.org/?
  >>  >  >??>??
  >>  >  >??>??
  >>  >  >??>??
  >>  >  >??>??>-----Original Message-----
  >>  >  >??>??>From: Holtmann, Marcel
  >>  >  >??>??>Sent: 2008?4?28? 17:53
  >>  >  >??>??>To: Zheng, Huan
  >>  >  >??>??>Cc: Zhao, Halley; Li, Frank; Guo, Young
  >>  >  >??>??>Subject: RE: An Issue with A2dpd and some suggestions
  >>  >  >??>??>
  >>  >  >??>??>Hi Huan,
  >>  >  >??>??>
  >>  >  >??>??>there is a simple answer to this. You are using the plugz
  >code
  >>and
  >>  >  >that
  >>  >  >??>is
  >>  >  >??>??>wrong. This code is outdated and deprecated. The
  >bluez-utils
  >>  >packages
  >>  >  >??>??>contains the audio service (which is now actually a plugin)
  >and
  >>  >has
  >>  >  >??>plugins
  >>  >  >??>??>for ALSA and GStreamer integration. This audio service
  >fully
  >>  >supports
  >>  >  >??>A2DP
  >>  >  >??>??>and is widely tested. Check wiki.bluez.org for more
  >details on
  >>how
  >>  >  >to
  >>  >  >??>setup
  >>  >  >??>??>your .asoundrc for testing it.
  >>  >  >??>??>
  >>  >  >??>??>Regards
  >>  >  >??>??>
  >>  >  >??>??>Marcel
  >>  >  >??>??>
  >>  >  >??>??>-----Original Message-----
  >>  >  >??>??>From: Zheng, Huan
  >>  >  >??>??>Sent: Sun 4/27/2008 10:11 PM
  >>  >  >??>??>To: Holtmann, Marcel
  >>  >  >??>??>Cc: Zhao, Halley; Li, Frank; Guo, Young; Zheng, Huan
  >>  >  >??>??>Subject: An Issue with A2dpd and some suggestions
  >>  >  >??>??>
  >>  >  >??>??>Hi, Marcel
  >>  >  >??>??>
  >>  >  >??>??>I'm an engineer from OTC PRC, I'm currently working
  >moblin.
  >>  >  >??>??>
  >>  >  >??>??>I encountered an issue when using Bluetooth alsa on Crown
  >>Beach,
  >>  >and
  >>  >  >I
  >>  >  >??>have
  >>  >  >??>??>located the code where cause the issue, it may be a
  >potential
  >>bug,
  >>  >  >but
  >>  >  >??>I'm
  >>  >  >??>??>not sure. Since you are the expert on Bluetooth-alsa, very
  >much
  >>  >  >??>appreciate
  >>  >  >??>??>your opinions.
  >>  >  >??>??>
  >>  >  >??>??>
  >>  >  >??>??>
  >>  >  >??>??>Symptom:
  >>  >  >??>??>
  >>  >  >??>??>After finished playing one song, then opening another song
  >will
  >>  >hear
  >>  >  >??>nothing,
  >>  >  >??>??>and finally hang.
  >>  >  >??>??>
  >>  >  >??>??>
  >>  >  >??>??>
  >>  >  >??>??>Investigation:
  >>  >  >??>??>
  >>  >  >??>??>Code hang on snd_pcm_prepare, which finally goes into
  >>  >  >??>??>a2dp_prepare(snd_pcm_ioplug_t * io)  inside
  >>  >  >??>??>plugz/alsa-plugin/a2dpd/pcm_a2dpd.c
  >>  >  >??>??>
  >>  >  >??>??>Code hangs on
  >>  >  >??>??>
  >>  >  >??>??>while(poll_accept(a2dp->sk, 0)) {
  >>  >  >??>??>
  >>  >  >??>??>                   transfer = recv_socket(a2dp->sk,
  >>  >  >&GetPointerResp,
  >>  >  >??>??>sizeof(GetPointerResp));
  >>  >  >??>??>
  >>  >  >??>??>         }
  >>  >  >??>??>
  >>  >  >??>??>At this place, poll_accept always return true, but inside
  >>  >  >recv_socket,
  >>  >  >??>recv
  >>  >  >??>??>call report errono 104(connection reset by peer). This
  >becomes
  >>an
  >>  >  >??>infinite
  >>  >  >??>??>loop.
  >>  >  >??>??>
  >>  >  >??>??>
  >>  >  >??>??>
  >>  >  >??>??>Suggestions:
  >>  >  >??>??>
  >>  >  >??>??>I'm thinking that is it possible to add functionality into
  >>  >poll_accept
  >>  >  >??>to
  >>  >  >??>??>judge whether connection has been reset? If find
  >connection has
  >>  >been
  >>  >  >??>reset,
  >>  >  >??>??>then do some recovery and return 0 to let the while loop
  >end.
  >>  >  >??>??>There is a new bit since 2.6.17, maybe this will be helpful
  >to
  >>  >judge
  >>  >  >??>whether
  >>  >  >??>??>connection has been reset when using poll.
  >>  >  >??>??>
  >>  >  >??>??>POLLRDHUP " (since Linux 2.6.17)"
  >>  >  >??>??>
  >>  >  >??>??>Stream socket peer closed connection, or shut down writing
  >half
  >>of
  >>  >  >??>??>connection. The _GNU_SOURCE feature test macro must be
  >defined
  >>in
  >>  >  >order
  >>  >  >??>to
  >>  >  >??>??>obtain this definition.
  >>  >  >??>??>
  >>  >  >??>??>
  >>  >  >??>??>
  >>  >  >??>??>Could you please share your opinions on this?
  >>  >  >??>??>
  >>  >  >??>??>Thanks a lot!
  >>  >  >??>??>
  >>  >  >??>??>
  >>  >  >??>??>
  >>  >  >??>??>
  >>  >  >??>??>
  >>  >  >??>??>For your convenience, I attached the code below:
  >>  >  >??>??>
  >>  >  >??>??>int poll_accept(int sockfd, int timeout)
  >>  >  >??>??>
  >>  >  >??>??>{
  >>  >  >??>??>
  >>  >  >??>??>         int result = 0;
  >>  >  >??>??>
  >>  >  >??>??>         int ipoll = -1;
  >>  >  >??>??>
  >>  >  >??>??>         struct pollfd pollfds[1];
  >>  >  >??>??>
  >>  >  >??>??>         pollfds[0].fd = sockfd;
  >>  >  >??>??>
  >>  >  >??>??>         pollfds[0].events = POLLIN;
  >>  >  >??>??>
  >>  >  >??>??>         pollfds[0].revents = 0;
  >>  >  >??>??>
  >>  >  >??>??>
  >>  >  >??>??>
  >>  >  >??>??>         ipoll = poll(pollfds, (nfds_t)1, timeout);
  >>  >  >??>??>
  >>  >  >??>??>
  >>  >  >??>??>
  >>  >  >??>??>         if((ipoll>0) && (pollfds[0].revents & POLLIN))
  >{
  >>  >  >??>??>
  >>  >  >??>??>                   result = 1;
  >>  >  >??>??>
  >>  >  >??>??>         } else if(ipoll==0) {
  >>  >  >??>??>
  >>  >  >??>??>                   errno = EAGAIN;
  >>  >  >??>??>
  >>  >  >??>??>         }
  >>  >  >??>??>
  >>  >  >??>??>         return result;
  >>  >  >??>??>
  >>  >  >??>??>}
  >>  >  >??>??>
  >>  >  >??>??>
  >>  >  >??>??>
  >>  >  >??>??>ssize_t recv_socket(int sockfd, void* buffer, size_t
  >size)
  >>  >  >??>??>
  >>  >  >??>??>{
  >>  >  >??>??>
  >>  >  >??>??>        ssize_t received = 0;
  >>  >  >??>??>
  >>  >  >??>??>        while((buffer!=0) && (received<(ssize_t)size))
  >>  >  >??>??>
  >>  >  >??>??>        {
  >>  >  >??>??>
  >>  >  >??>??>                ssize_t result = recv(sockfd,
  >buffer+received,
  >>  >  >??>??>size-received, MSG_NOSIGNAL);
  >>  >  >??>??>
  >>  >  >??>??>                if(result>0)
  >>  >  >??>??>
  >>  >  >??>??>                {
  >>  >  >??>??>
  >>  >  >??>??>                        received += result;
  >>  >  >??>??>
  >>  >  >??>??>                        if(result != (ssize_t)size)
  >>  >  >??>??>
  >>  >  >??>??>                                DBG("split frame
  >received
  >>  >  >(%d/%d)",
  >>  >  >??>??>(int)result, (int)size);
  >>  >  >??>??>
  >>  >  >??>??>                }
  >>  >  >??>??>
  >>  >  >??>??>                else
  >>  >  >??>??>
  >>  >  >??>??>                {
  >>  >  >??>??>
  >>  >  >??>??>                        received=result;
  >>  >  >??>??>
  >>  >  >??>??>                        break;
  >>  >  >??>??>
  >>  >  >??>??>                }
  >>  >  >??>??>
  >>  >  >??>??>        }
  >>  >  >??>??>
  >>  >  >??>??>        return received;
  >>  >  >??>??>
  >>  >  >??>??>}
  >>  >  >??>??>
  >>  >  >??>??>Best Regards, Zheng, Huan(ZBT)
  >>  >  >??>??>
  >>  >  >??>??>OTC/SSD/SSG
  >>  >  >??>??>
  >>  >  >??>??>Intel Aisa-Pacific Research & Developement Ltd
  >>  >  >??>??>
  >>  >  >??>??>Tel: 021-6116 6435
  >>  >  >??>??>
  >>  >  >??>??>Inet: 8821 6435
  >>  >  >??>??>
  >>  >  >??>??>Cub: 3W035
  >>  >  >??>??>
  >>  >  >??>??>
  >>  >  >??>??>
  >>  >  >??>??
  >>  >  >??
  >>  >

Attachment: bluez-play.log
Description: bluez-play.log

Attachment: bluez-startup.log
Description: bluez-startup.log

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft 
Defy all challenges. Microsoft(R) Visual Studio 2008. 
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Bluez-devel mailing list
Bluez-devel@xxxxxxxxxxxxxxxxxxxxx
https://lists.sourceforge.net/lists/listinfo/bluez-devel

[Index of Archives]     [Linux Bluetooth Devel]     [Linux USB Devel]     [Network Devel]     [Linux Audio Users]     [Yosemite News]     [Linux SCSI]

  Powered by Linux