How to send/receive files via Bluetooth using commands/Terminal?

Send files:

bluetooth-sendto --device=12:34:56:78:9A:BC filename

To know your device name (12:34:56:78:9A:BC), you can issue this command:

hcitool scan

Receive files:

Haven't found it yet, but will let you know if it can be done using terminal

edit:

it looks like it can't be done through terminal. Blueman seems to do the trick but it's in GUI


I tested this with Ubuntu Bionic Beaver (18.04) and Android Lollipop.

  1. Ubuntu. Install the needed packages:

    sudo apt install bluez bluez-tools
    

    bluez-tools come with the following tools: bt-adapter bt-agent bt-device bt-network

  2. Ubuntu. Turn on the visibility:

    bt-adapter --set Discoverable 1
    
  3. Smartphone. Scan for remote devices to ID your Ubuntu machine.

  4. Ubuntu. Prep for managing incoming requests interactively with:

    bt-agent
    
  5. Pair devices:

    1. Smartphone. Initiate pairing request;

    2. Ubuntu. Accept the request from the bt-agent screen.

  6. Ubuntu. Send files to smartphone with:

    bt-obex -p [remote_mac] [file]
    

    where [remote_mac] is the mac address of the smartphone. For example:

    bt-obex -p F0:6B:CA:A2:C4:69 ~/book.pdf
    
  7. Receive files from your smartphone:

    1. Ubuntu First create a Bluetooth file (obex) server:

      bt-obex -s [path]
      

      [path] is where to download files. For example:

      bt-obex -s ~/Downloads
      
    2. Smartphone. Send the file;

    3. Ubuntu. Accept the request from the bt-agent screen.

This works on my computer:

bluedevil-sendfile -u /org/bluez/hci0/dev_<address with underscores instead of colons> -f <file_with_absolute_path>

For example:

bluedevil-sendfile -u /org/bluez/hci0/dev_00_FF_00_FF_00_FF -f /home/tux/test.pdf