Hi everybody:

 

I’ve been months reading the bluez source and learning about the bluetooth specification, plus other documents (the correct coding style, Wireless Technologies Congress 2003 and other documents by Marcel holtmann)

 

I’m developing an application to connect two Bluetooth-enabled phones via internet using two Bluetooth-enabled PCs both connected to internet. I mean that I can transmit files and play Bluetooth multiplayer games to my friend that is 25 miles away like if it were in my device’s Bluetooth radio range. (I know that ping times would be very ugly!).

I use a raw socket as hcidump does, then I send the data trough TCP to the other peer, when received is sent over Bluetooth hoping that the other device receives it, this is more complex than it seems since bluez handles and answers all HCI requests, i.e (when a device performs a SDP request to find a service UUID bluez handles and answers the request) but this is not correct for my application, hci responses and data acks may be received via TCP from the other peer, in other words: no bluez support, only HCI frames sniffing, sending, receiving and transmitting. Now my questions are:

 

-          Can I send HCI frames with a raw socket ?

-          How can I tell the bluez stack not to answer HCI requests (receiving only, leave the sends to me).

 

-     Is there a better way to make this application?

 

Any help would be greatly appreciated.

 

Thanks in advance and happy new year.