Bug 316314 - "Send via Bluetooth" in cannot transfer file (progress bar stuck at 0%)
Summary: "Send via Bluetooth" in cannot transfer file (progress bar stuck at 0%)
Status: RESOLVED FIXED
Alias: None
Product: solid
Classification: Unmaintained
Component: bluetooth (show other bugs)
Version: 4.10.0
Platform: openSUSE Linux
: NOR normal
Target Milestone: ---
Assignee: Alex Fiestas
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2013-03-07 14:59 UTC by Jiri Slaby
Modified: 2014-03-09 01:27 UTC (History)
12 users (show)

See Also:
Latest Commit:
Version Fixed In:
Sentry Crash Report:


Attachments
patch (541 bytes, patch)
2013-04-15 07:18 UTC, Jiri Slaby
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Jiri Slaby 2013-03-07 14:59:50 UTC
+++ This bug was initially created as a clone of Bug #297785 +++

KDE version 4.10.0
bluedevil version: 1.3
bluez version: 4.101

Steps to reproduce:
(1) Enable bluetooth in KDE and pair with a bluetooth device with file transfer capability
(2) Send a file using KDE bluetooth stack

What happened?
Progress bar stuck at 0% and never finish. Remove device does not get prompted for any incoming file transfer. Tested with a Nokia 5800 phone.

I tried:
$ bluedevil-sendfile -f txt -u /org/bluez/27872/hci0/dev_00_24_7D_65_55_C5
$ bluedevil-sendfile -f txt -k bluetooth://00:24:7D:65:55:C5
with no success, it stalls for 5 or so seconds and then tells me that it finished, but it didn't:
 bluedevilsendfile(3071) SendFileWizard::SendFileWizard: DeviceUbi:  "bluetooth://00:24:7D:65:55:C5"
bluedevilsendfile(3071) SendFileWizard::SendFileWizard: Files
bluedevilsendfile(3071) SendFileWizard::SendFileWizard: ("txt")
bluedevilsendfile(3071) SendFileWizard::setDevice: BlueDevil::Device(0x97d300)
bluedevilsendfile(3071) SendFileWizard::setFiles: ("txt")
bluedevilsendfile(3071) SendFilesJob::SendFilesJob: Adding size :  0
bluedevilsendfile(3071) KSharedUiServerProxy::KSharedUiServerProxy: kuiserver registered
bluedevilsendfile(3071) SendFilesJob::doStart:
bluedevilsendfile(3071) SendFilesJob::sendFileResult: Error:
bluedevilsendfile(3071) SendFilesJob::sendFileResult: "org.freedesktop.DBus.Error.NoReply"
bluedevilsendfile(3071) SendFilesJob::sendFileResult: "Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken."


/var/log/messages says this after the delay:
dbus[619]: [system] Rejected send message, 2 matched rules; type="method_return", sender=":1.291" (uid=0 pid=2440 comm="/usr/sbin/bluetoothd -n ") interface="(unset)" member="(unset)" error name="(unset)" requested_reply="0" destination=":1.311" (uid=500 pid=3046 comm="/usr/lib64/obex/obex-client ")
dbus[619]: [system] Rejected send message, 2 matched rules; type="method_return", sender=":1.291" (uid=0 pid=2440 comm="/usr/sbin/bluetoothd -n ") interface="(unset)" member="(unset)" error name="(unset)" requested_reply="0" destination=":1.311" (uid=500 pid=3046 comm="/usr/lib64/obex/obex-client ")


Gnome works:
bluetooth-sendto --device=00:24:7D:65:55:C5 txt



$ rpm -q `rpmqpack |grep -E 'kde|blue|obex'|sort`
bluedevil-1.3-2.1.2.x86_64
bluedevil-lang-1.3-2.1.2.noarch
bluez-4.101-7.2.1.x86_64
bluez-devel-4.101-7.2.1.x86_64
bluez-hcidump-2.5-2.1.1.x86_64
bundle-lang-kde-cs-12.3-3.4.3.noarch
flash-player-kde4-11.2.202.273-2.8.1.x86_64
gnome-bluetooth-3.6.1-3.1.2.x86_64
kdeartwork4-wallpapers-4.10.0-1.1.1.noarch
kdeartwork4-wallpapers-weather-4.10.0-1.1.1.noarch
kdebase4-artwork-4.10.0-1.1.1.noarch
kdebase4-libkonq-4.10.0-1.1.1.x86_64
kdebase4-openSUSE-12.3-10.8.7.x86_64
kdebase4-runtime-4.10.0-1.1.2.x86_64
kdebase4-runtime-branding-openSUSE-12.3-10.8.7.x86_64
kdebase4-session-4.10.0-1.1.1.noarch
kdebase4-wallpapers-4.10.0-1.2.1.noarch
kdebase4-workspace-4.10.0-1.8.1.x86_64
kdebase4-workspace-branding-openSUSE-12.3-10.8.7.x86_64
kdebase4-workspace-ksysguardd-4.10.0-1.8.1.x86_64
kdebase4-workspace-liboxygenstyle-4.10.0-1.8.1.x86_64
kdebase4-workspace-plasma-calendar-4.10.0-1.8.1.x86_64
kde-gtk-config-2.1.1-4.1.1.x86_64
kdelibs3-3.5.10-67.3.1.x86_64
kdelibs3-default-style-3.5.10-67.3.1.x86_64
kdelibs4-4.10.0-1.2.1.x86_64
kdelibs4-branding-openSUSE-12.3-6.7.5.noarch
kdelibs4-core-4.10.0-1.2.1.x86_64
kdenlive-0.9.4-2.8.x86_64
kdepimlibs4-4.10.0-1.2.1.x86_64
kdepim4-runtime-4.10.0-1.1.1.x86_64
kde-susetranslations-12.1-16.1.1.noarch
kde4-filesystem-4.10.0-1.1.1.x86_64
kde4-kgreeter-plugins-4.10.0-1.8.1.x86_64
kde4-l10n-cs-4.10.0-1.1.1.noarch
kde4-l10n-en_GB-data-4.10.0-1.1.1.noarch
kde4-l10n-en_GB-doc-4.10.0-1.1.1.noarch
libbluedevil1-1.9.2-4.1.1.x86_64
libbluetooth3-4.101-7.2.1.x86_64
libgnome-bluetooth11-3.6.1-3.1.2.x86_64
libkdecore4-4.10.0-1.2.1.x86_64
libkdepimlibs4-4.10.0-1.2.1.x86_64
libkde4-4.10.0-1.2.1.x86_64
liblockdev1-1.0.3_git201003141408-22.1.1.x86_64
liblockdev1-32bit-1.0.3_git201003141408-22.1.1.x86_64
libopenobex1-1.5-16.1.1.x86_64
libproxy1-config-kde4-0.4.11-2.1.1.x86_64
lockdev-1.0.3_git201003141408-22.1.1.x86_64
mozilla-kde4-integration-0.6.4-36.1.x86_64
NetworkManager-kde4-libs-0.9.0.7-1.1.1.x86_64
NetworkManager-openvpn-kde4-0.9.0.7-1.1.1.x86_64
NetworkManager-pptp-kde4-0.9.0.7-1.1.1.x86_64
obexd-0.45-6.1.2.x86_64
obex-data-server-0.4.6-8.1.1.x86_64
obexd-client-0.45-6.1.2.x86_64
obexftp-0.23-16.1.1.x86_64
openobex-apps-1.5-16.1.1.x86_64
polkit-kde-agent-1-0.99.0-15.1.1.x86_64
polkit-kde-kcmmodules-1-0.98.1+git20110929-5.1.1.x86_64
pulseaudio-module-bluetooth-3.0-1.1.1.x86_64
python-kdebase4-4.10.0-1.8.1.x86_64
python-kde4-4.10.0-1.2.1.x86_64
tomahawk-kde-0.6.0-2.2.2.x86_64
Comment 1 Jiri Slaby 2013-03-07 15:24:22 UTC
Hmm, the dbus call is wrong:
method call sender=:1.200 -> dest=org.openobex.client serial=26 path=/; interface=org.openobex.Client; member=SendFiles
   array [
      dict entry(
         string "Destination"
         variant             string ""
      )
   ]
   array [
      string "/home/xslaby/txt"
   ]
   object path "/BlueDevil_sendAgent"


as opposed to gnome's:
method call sender=:1.203 -> dest=:1.185 serial=11 path=/; interface=org.openobex.Client; member=SendFiles
   array [
      dict entry(
         string "Destination"
         variant             string "00:24:7D:65:55:C5"
      )
   ]
   array [
      string "/home/xslaby/txt"
   ]
   object path "/org/bluez/agent/sendto"
Comment 2 Alex Fiestas 2013-03-08 10:59:19 UTC
Will try to fix before this weekend release.
Comment 3 Alex Fiestas 2013-03-10 16:52:49 UTC
I have been trying to reproduce this with no luck so far, is this 100% reproducible for you?

Are you able to apply some patches so we can get more debug info?
Comment 4 Jiri Slaby 2013-03-10 16:57:52 UTC
(In reply to comment #3)
> I have been trying to reproduce this with no luck so far, is this 100%
> reproducible for you?

Yeah.

> Are you able to apply some patches so we can get more debug info?

Sure.
Comment 5 Alex Fiestas 2013-03-10 22:42:23 UTC
Pushed some changes to bluedevil master, can you try again?
Comment 6 Alex Fiestas 2013-03-24 17:21:15 UTC
Setting it as needsinfo
Comment 7 Jiri Slaby 2013-04-08 10:00:57 UTC
Still no cookies with libbluedevil 1.9.3 and bluedvil 1.3.1:
method call sender=:1.97 -> dest=org.openobex.client serial=26 path=/; interface=org.openobex.Client; member=SendFiles
   array [
      dict entry(
         string "Destination"
         variant             string "00:24:7D:65:55:C5"
      )
   ]
   array [
      string "txt"
   ]
   object path "/BlueDevil_sendAgent"


gnome's sendto:
method call sender=:1.95 -> dest=:1.76 serial=11 path=/; interface=org.openobex.Client; member=SendFiles
   array [
      dict entry(
         string "Destination"
         variant             string "00:24:7D:65:55:C5"
      )
   ]
   array [
      string "/home/xslaby/txt"
   ]
   object path "/org/bluez/agent/sendto"



Note that you should pass an absolute path to openobex from bluedevil. But even if I try /home/xslaby/txt, the file is not delivered:
$ bluedevil-sendfile -f /home/xslaby/txt -k bluetooth://00:24:7D:65:55:C5 
bluedevilsendfile(13127) SendFileWizard::SendFileWizard: DeviceUbi:  "bluetooth://00:24:7D:65:55:C5"
bluedevilsendfile(13127) SendFileWizard::SendFileWizard: Files
bluedevilsendfile(13127) SendFileWizard::SendFileWizard: ("/home/xslaby/txt")
bluedevilsendfile(13127) SendFileWizard::SendFileWizard: DeviceUbi:  "bluetooth://00:24:7D:65:55:C5"
bluedevilsendfile(13127) SendFileWizard::SendFileWizard: Files
bluedevilsendfile(13127) SendFileWizard::SendFileWizard: ("/home/xslaby/txt")
bluedevilsendfile(13127) SendFileWizard::setDevice: "bluetooth://00:24:7D:65:55:C5"
bluedevilsendfile(13127) SendFileWizard::setFiles: ("/home/xslaby/txt")
bluedevilsendfile(13127) SendFilesJob::SendFilesJob: Adding size :  5
bluedevilsendfile(13127) KSharedUiServerProxy::KSharedUiServerProxy: kuiserver registered
bluedevilsendfile(13127) SendFilesJob::doStart:
bluedevilsendfile(13127) SendFilesJob::sendFileResult: Error:
bluedevilsendfile(13127) SendFilesJob::sendFileResult: "org.freedesktop.DBus.Error.NoReply"
bluedevilsendfile(13127) SendFilesJob::sendFileResult: "Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken."
Comment 8 Jiri Slaby 2013-04-08 11:05:59 UTC
I played with that a bit more. Sometimes, it works for a couple of times after I restart bluetoothd. Bluetooth might get into a bad state somehow or something...
Comment 9 Jiri Slaby 2013-04-14 13:08:53 UTC
(In reply to comment #8)
> I played with that a bit more. Sometimes, it works for a couple of times
> after I restart bluetoothd. Bluetooth might get into a bad state somehow or
> something...

I dag into that a bit more. It works until this is emitted by bluetoothd:
src/agent.c:agent_confirm_mode_change() Calling Agent.ConfirmModeChange: name=:1.14, path=/blueDevil_agent, mode=discoverable

This happens when I try to send a file after some idle time. When this occurs, the file is not sent and bluedevil times out.

Perhaps you do not service that signal while sending a file?
Comment 10 Jiri Slaby 2013-04-15 07:18:55 UTC
Created attachment 78917 [details]
patch

Perhaps this one :)?
Comment 11 Jiri Slaby 2013-04-15 09:25:12 UTC
(In reply to comment #10)
> Perhaps this one :)?

It's correct, but nobody tested that path obviously. It still doesn't work.

Maybe a single process is used for both this confirmation and send-file events?
Comment 12 Alex Fiestas 2014-01-19 20:50:21 UTC
You are completely right ! <facepalm>

None of the developers ever had to use bluedevil-confirmmodechange :/

Going to push your patch and make a release asap.
Does your patch fix this issue?
> (In reply to comment #10)
> > Perhaps this one :)?
> 
> It's correct, but nobody tested that path obviously. It still doesn't work.
> 
> Maybe a single process is used for both this confirmation and send-file
> events?
Comment 13 Alex Fiestas 2014-01-19 20:50:50 UTC
Oh, and sorry for the late deply :/
Comment 14 Alex Fiestas 2014-01-20 02:23:12 UTC
Git commit c59a99f425075277a4836b2ec8b0a410c67b69d6 by Àlex Fiestas.
Committed on 20/01/2014 at 02:20.
Pushed by afiestas into branch '1.3'.

Call the correct binary

M  +1    -1    src/daemon/kded/bluezagent.cpp

http://commits.kde.org/bluedevil/c59a99f425075277a4836b2ec8b0a410c67b69d6
Comment 15 Alex Fiestas 2014-03-09 01:27:32 UTC
So, this should be fixed in 1.3.3.