#summary BlueCove supported stacks. = BlueCove supported stacks = If automatic Bluetooth Stack detection is not enough Java System property "bluecove.stack" can be used to force desired Stack Initialization. Values "widcomm", "bluesoleil" or "winsock". By default winsock is selected if available. Use `LocalDevice.getProperty("bluecove.stack")` to find out what stack is used. WIDCOMM and BlueSoleil are added in BlueCove version 2.0.0. To determine which Bluetooth stack is installed on your Windows [http://bluecove.sourceforge.net/bluetooth-stack.html see this page] [http://code.google.com/p/bluecove/wiki/WindowsMobile Windows Mobile] == WIDCOMM (Broadcom) == This stack is most stable stack from one supported by !BlueCove === Requirements === * BTW Stack software version 1.4.2.10 SP5 or above on Windows32 * For AMD64 systems you need to build dll yourself * Broadcom wbtapi.dll required. It is installed with WIDCOMM drivers. === JSR-82 Limitations === * RFCOMM Server can accept only one connection at a time * `ServiceRecord` attributes of `DataElement` types URL are discovered as STRING * `ServiceRecord` attributes of `DataElement` types U_INT_8, INT_8, INT_16 and UINT_16 are not properly discovered (Bug submitted to Support@broadcom) == Winsock (Microsoft) == === Requirements === * Microsoft Bluetooth stack (currently this means Windows XP SP2 or newer and Windows Mobile 2003 or newer) * A Bluetooth [http://support.microsoft.com/default.aspx?kbid=841803 device supported] by the Microsoft Bluetooth stack. * [http://bluecove.wiki.sourceforge.net/ms-usb-dongles List of Bluetooth USB dongles working with Microsoft Bluetooth stack] * [http://code.google.com/p/bluecove/wiki/WindowsMobile Windows Mobile Devices] === Limitations === * Microsoft Bluetooth stack only supporting RFCOMM connections * `DiscoveryAgent.searchServices()` can't query for BOOL !DataElements * `DiscoveryAgent.searchServices()` can't query for UUID !DataElements other than one in !ProtocolDescriptorList and !ServiceClassIDList * `DiscoveryListener.deviceDiscovered()` would be called for devices that a _paired_ with your Microsoft BT stack regardless if device ON or OFF == BlueSoleil (IVT Corporation) == === Requirements === * !BlueSoleil version 1.6.0 or above === JSR-82 Limitations === SDK provided by IVT is very limited. We just implemented what we can on top of it. * Service attributes are not supported in Service search of when creating Server, `LocalDevice.getProperty("bluetooth.sd.attr.retrievable.max") == "0"` * `DiscoveryAgent.searchServices()` can only find 128bits-GUID service with specific UUID. You can't list all service on remote device. * `DiscoveryAgent.searchServices(.. UUID[] uuidSet, ..)` only ONE UUID is used during search, the last one in array. * You need to run `DiscoveryAgent.searchServices()` with UUID of your service before you can make connection to it using `Connector.open(url);` * Client `Connector.open()` use GUID of the discovered service. Only one would be selected * Server can't close incoming connection. It will wait until connection is closed remotely. (Our implementation should be changed to restart Service(Server) each time connection is closed to fix this) * In our test lab we can only make from 180 to 250 max connections in sequence. After this !BlueSoleil.exe needs to restart or Windows needs to be rebooted (May be you can help fixing this, I wrote to !BlueSoleil support; no reply)