GSoC Project: Native Bluetooth support for Linux and/or Windows

Jef Driesen jef at libdivecomputer.org
Mon Mar 9 07:36:22 PDT 2015


On 2015-03-09 14:12, Lubomir I. Ivanov wrote:
> i'm not very familiar with this GSoC idea and bluetooth in general.
> 
> "Subsurface and the underlying libdivecomputer today use the rfcomm
> emulation to communicate with Bluetooth enabled dive computers. We
> should use native Bluetooth instead"
> 
> https://msdn.microsoft.com/en-us/library/windows/desktop/aa362932(v=vs.85).aspx
> you probably know that BTLE support is Win8 or newer, BT2.1 is since
> Vista SP2, while we need to support Windows XP (SP1 first introduced
> BT) in Subsurface which has to be done with things like the WinSock /
> RFCOMM API, i'd say.
> 
> hmm, so i wonder what is "native Bluetooth support", does that imply
> writing a device driver for Windows that is installed by Subsurface.
> for instance i don't think that BNEP and L2CAP are accessible from user 
> space...

On the libdivecomputer side, "native bluetooth support" means using the 
operating system' native bluetooth api instead of relying on the serial 
emulation. My main motivation behind that (besides the improved 
user-experience of no longer having to setup the virtual serial ports) 
is that the serial emulation isn't always working very well. I have 
received several reports (including from personal experience) where 
downloading always fails for unknown reasons. Those problems disappear 
completely when switching to native bluetooth communication. I suspect 
this might be a driver problem, but I don't know for sure.

Linux and Windows provide a socket based api, which is exactly what I 
used in my prototype. Right now we only need SPP/RFCOMM (Serial Port 
Profile). That's what the bluetooth enabled dive computers (Shearwater 
Petrel, Heinrichs Weikamp OSTC Sport) use today. It's also the protocol 
used underneath the serial emulation.

I don't have any experience with Bluetooth Low Energy (BLE). But as far 
as I'm concerned that's not a priority. Let's go step by step and take 
care of "normal" bluetooth first :-)

Jef


More information about the subsurface mailing list