Colibri iMX6ULL: Bluetooth SPP (Serial Port Profile) / RFCOMM not stablishing connection

Hi team,

I opened another question from here.

I’m looking to stablish a simple SPP connection between the ULL and a bluetooth device that will act as SPP server: Basically in Windows associate the Bluetooth incoming connections to a serial COM port.

I’ve been able to connect this between the Serial Bluetooth Terminal android app and TeraTerm (Windows equivalent to minicom), so we can assume that the SPP server is working correctly.

This time I’m trying to use rfcomm commands to interact with the server. With bluetoothctl I could connect to the server and confirm the SPP service availability (UUID: Serial Port):

[SURFACELAPTOP]# info F0:6E:0B:D8:D4:E6
Device F0:6E:0B:D8:D4:E6
        Name: SURFACELAPTOP
        Alias: SURFACELAPTOP
        Class: 0x0a010c
        Icon: computer
        Paired: yes
        Trusted: yes
        Blocked: no
        Connected: yes
        LegacyPairing: no
        UUID: Service Discovery Serve.. (00001000-0000-1000-8000-00805f9b34fb)
        UUID: Serial Port               (00001101-0000-1000-8000-00805f9b34fb)
        UUID: Audio Source              (0000110a-0000-1000-8000-00805f9b34fb)
        UUID: A/V Remote Control Target (0000110c-0000-1000-8000-00805f9b34fb)
        UUID: A/V Remote Control        (0000110e-0000-1000-8000-00805f9b34fb)
        UUID: PANU                      (00001115-0000-1000-8000-00805f9b34fb)
        UUID: Handsfree Audio Gateway   (0000111f-0000-1000-8000-00805f9b34fb)
        UUID: PnP Information           (00001200-0000-1000-8000-00805f9b34fb)
        UUID: Vendor specific           (c7f94713-891e-496a-a0e7-983a0946126e)
        Modalias: bluetooth:v0006p0001d0A00

Now, I’m trying to connect to the server and create my /dev/rfcomm device node:

root@colibri-imx6ull:~# rfcomm connect /dev/rfcomm0 F0:6E:0B:D8:D4:E6 
Connected /dev/rfcomm0 to F0:6E:0B:D8:D4:E6 on channel 1
Press CTRL-C for hangup

But both echo and cat commands for writting and reading don’t seem to reach.

I haven’t created any /etc/bluetooth/rfcomm.conf file (I did in the past but deleted it and restarted the service).

Also hcidump don’t seem to react to any message from the server.

On the other hand, I’ve also tried to listen through rfcomm without much luck (the client informs that the connection failed because the socket might closed/timeout). I’ve added the hcidump for this case:

root@colibri-imx6ull:~# rfcomm listen /dev/rfcomm5
Waiting for connection on channel 1    

Of course, RFCOMM seems to be added to the kernel.

root@colibri-imx6ull:~# dmesg | grep RFCOMM
[   22.657552] Bluetooth: RFCOMM TTY layer initialized
[   22.673080] Bluetooth: RFCOMM socket layer initialized
[   22.681847] Bluetooth: RFCOMM ver 1.11

Sorry to push on this but it is quite urgent so any help would be greatly appreciated.

Thanks and regards.

(If we get this working, I would be adding this to the Bluetooth page as I find it quite useful!).

I will further update this and the developer page but basically also rfcomm calls (in addition to obexftp and sdp) are deprecated in BlueZ5. Here is an example program of using SPP with BlueZ:

https://github.com/tonyespy/bluez5-spp-example