Bluetooth file transfer testing



  • Today I was trying to test Bluetooth for this issue request, to see if I could find some patterns to how it worked or didn't work. I figured I'd get a large enough file and transfer it around, see what happens. I started with the Fairphone 2, then thought I'd compare against the Nexus 5, then I got carried away.

    My test file was Aury88's Infinite Sea. At 6.4MB, it's a hulking file for a slow protocol like Bluetooth. If I was going to cause an error, this would be the file I'd do it with. The only app available to facilitate file transfer over Bluetooth is Bluetooth File Transfer from Ian L. I shared the image to it from the Gallery, then used it to ship the file everywhere.

    I tested file sending and receiving from multiple devices:

    • FP2 running Ubuntu Touch
    • Oneplus One running Ubuntu Touch
    • Nexus 5 running Ubuntu Touch
    • Nexus 5X running LineageOS 15.1
    • Moto X 2013 (ghost / XT1060) running Android
    • Asus T300 CHI running Windows 10
    • A desktop PC with a Qualcomm CSR8510 Bluetooth dongle, running Kubuntu 18.04
    • A Dell XPS 13 9370 running Pop!_OS 18.04

    For all of the Ubuntu Touch devices, I had to pair them using Bluetooth settings before I was able to send files. For the Windows device, I had to open "Receive files" from the Bluetooth menu in the notification area AND have Bluetooth settings open. The Plasma desktop required that the Bluetooth adapter was in "Visible" (discoverable) mode while GNOME required that Bluetooth settings was open.

    The transfers worked in many cases. Here were my observations in cases where they did not:

    • Fairphone Two
      • To Oneplus One -> Failed (local obexd says: obexd[2616]: Unable to find service record)
      • The bluetooth daemon occasionally segfaults and won't restart.
    • Oneplus One
      • Once a connection or transfer failed, the device sometimes needed to be rebooted for Bluetooth to become reliable again. It would not reboot cleanly and required I hold the power button or issue reboot -f.
      • To Nexus 5X -> Failed (local obexd says: obexd[2433]: Transport got disconnected, Android says Request can't be handled correctly)
      • To FP2 -> Failed (local obexd says: obexd[2433]: Transfer(0xb75c1bd0) Error: Timed out waiting for response; obexd[2433]: Transport got disconnected, remote obexd says: https://paste.ubuntu.com/p/8RhvqPfFYb/)
      • To Nexus 7 2013 -> Failed (local obexd says: obexd[2300]: connect error: Connection timed out (110), remote says nothing. Pairing or telling these devices to connect is not reliable. Bluetooth on both devices became unstable after a connection attempt and they had to be rebooted to resume normal operation. https://paste.ubuntu.com/p/BVPgM33MXT/)
      • To XPS 13 -> failed (local obexd says: https://paste.ubuntu.com/p/Z7drPW2ZFN/, remote says nothing.)
    • Nexus 5
      • To desktop -> failed (device locks up after failure, does not output any log messages)
      • To Oneplus One -> Failed (local obexd says: obexd[2616]: Unable to find service record)
    • Nexus 7
      • Some Bluetooth service occasionally crashed and required a reboot of the device to continue, the following log would appear from the Bluetooth file transfer app: https://paste.ubuntu.com/p/ryGmbRcgRD/. The device would not reboot normally and required I hold the power button or issue reboot -f to force a reboot.
      • I stopped testing more since this crash kept occurring. Someone would have to continue to look for the appropriate logs, then file a bug with the information they found.

    There were some cases where a transfer would start, get about 25-50% done, and then time out and fail. On a retry, the transfer would be successful. I did not list those here because turning off other Bluetooth or Wi-Fi devices in the vicinity seemed to make these cases succeed more reliably. I suspect interference is to blame.

    Overall, I was mostly impressed with Bluetooth file transfer performance under Ubuntu Touch. In any case, it was not less reliable than any of my previous attempts from Android to a desktop operating system or Android to Android... except on the Oneplus One and Nexus 7.

    I'd like to open the floor to others on this issue: Try transferring files around between your devices and see what happens! The relevant logs are:

    • Obexd / bluez: logs to /var/log/syslog
    • A Bluetooth service log can be found at /var/log/upstart/bluetooth.log, but it doesn't seem very useful.

    Use tail -f to watch these logs as you perform the file transfer, then collect only the messages that appear during or after the failed transfer. That will ensure we can find any pattern in the failures, and possibly a bug to fix!



  • @unisuperbox Test on Meizu Pro5 16.04 devel, last update 04-01-2019.

    Environmental setup:

    • Meizu Pro 5 phone: installed Bloototh File Transfer from the OpenStore;

    • Dell Inspiron PC with Ubuntu 16.04 OS: installed blueman package.

    I paired and connected both sides together prior to start with any transfer file.

    Attempt #1: Sea.zip file to be transferred from PC to Pro5 caught into the following error, without even starting the transfer. Reading from /var/log/syslog:

    Jan 5 11:59:39 ubuntu-phablet bluetoothd[2444]: Unable to get io data for Object Push: getpeername: Transport endpoint is not connected (107)

    It doesn't seem to have been logged any other relevant messages in the syslog file.

    Attempt #2: a random file, in this case it was a very small one, 2.5 kB, from Pro5 to PC was successfully transmitted.



  • I would like to add that if either device is connected to Wi-Fi, it will degrade the speed and reliability of any transfer. Bluetooth uses the 2.4Ghz Wi-Fi radio to send and receive transmissions. Any use of the radio could cause a break in communications long enough to lose the transfer.

    Also, other devices using 2.4Ghz Wi-Fi in the vicinity could cause further problems. It is best to make your environment as Wi-Fi quiet as possible to avoid interference that could change the results of your tests.

    So:

    • Perform the tests away from other active Wi-Fi devices
    • Do not download files or stream video or audio from the internet while attempting to transfer files with Bluetooth


  • @UniSuperBox I've recently used Bluetooth File Transfer to receive a short video file on my BQ M10 HD sent from a Moto G4. The transfer worked OK. However, given the caveat regarding noisey wifi environment, I wouldn't bank on being able to repeat the process.


Log in to reply