C++ Interest in porting Direct-BT (Bluetooth LE) to FreeBSD?

Is there any interest in having my Direct-BT (Bluetooth LE) to be ported to FreeBSD?

Its used jaulibs and Direct-BT is (or was) compile clean on FreeBSD 13+,
but I never found time to add the native kernel level BLE layer (which I am not familiar with).

Years ago somebody asked me whether there could be support .. never condensed to anything.
In case there is some interest and perhaps folks willing to give me some links to some documentation
for the kernel BLE API .. we could realize this.

Cheers,
~Sven
 
IMO, that would be terrific as currently we do not have much for BLE in FreeBSD.
https://github.com/takawata/FreeBSD-BLE is the only code that I am aware of that can do anything (close to) useful.
Thank you. Glancing over this project's source code using plain kernel socket communication gives hope to a seamless port.
I structured Direct-BT the same way, dismissing the nasty low-detailed inefficient slow dbus subsystem and using direct socket/ioctl kernel communication.

So the first approach would be to list all those limited Linux-Kernel/BlueZ code segments and see to a FreeBSD alternative. This is mostly socket setup via ioctl and then using HCI, L2CAP, SMP (security) .. socket streams.
From memory, for Linux/BlueZ I even had to hack intercepting the SMP (security) protocol stream interception. For FreeBSD this might even work more proper and direct?

Mind you, Direct-BT is not intended for a shared dbus alike desktop use case, but mostly single application management/programming of BLE client and server scenarios.
 
what is the bluetooth stack in bsd? in linux it is bluez, which I have not been particularly impressed with, due to the "windozy" command line feel of the management utilities. I mean they scream "run me in interactive mode!"
 
what is the bluetooth stack in bsd? in linux it is bluez, which I have not been particularly impressed with, due to the "windozy" command line feel of the management utilities. I mean they scream "run me in interactive mode!"
BlueZ has two components (1) the kernel/BlueZ and (2) userland/BlueZ part.
The (1) kernel part is straightforward connecting the hardware communication channels from the actual (USB) device like HCI to userland via sockets. Problem here are some restriction for the SMB protocol, as direct security programming is not allowed. To at least get all SMB information to track its security state, I captured L2CAP messages and recombined the SMB message flow.

The (2) userland part is what lead to Direct-BT, i.e. it mainly offers the dbus interface only. The dbus interface hides information of the Bluetooth spec like error codes etc and is not real-time.
Hence Direct-BT's goal is to allow native BLE programming w/o any information hiding, supporting threading etc.

Edit: Oh, additionally a Java binding is provided w/ Direct-BT as well.
But 'interactive' nope, i.e. you still need to write your UI application using it :)
 
Back
Top