Category: Bluetooth

  • 32feet.NET User Guide now live on CodePlex

    Today has been spent catching up on my To-Do list, though it still doesn’t look that way! I have however been able to make some progress with 32feet.

    Alongside the class library documentation for the project there is a User Guide which provides an overview of the functionality and some example code snippets. Alan McFarlane created the documentation and it is an excellent starting point and Alan has continued to keep it up to date throughout each version of the library (currently up to 3.0 Beta). Up until now this has been distributed as a Word document with the install package but I have for some time been trying to integrate it into the Help file for the library. The help file is created with Sandcastle Help File Builder which supports adding in static content, but you have to provide the pages in Microsoft’s proprietary MAML format and I was never able to get the layout and appearance to look right and manually copying and pasting bits of documents was tedious. As a compromise I instead investigated the Documentation support on CodePlex. Each project hub is a Wiki and the mark-up required makes it very simple to put together the right structure and hyperlink between topics. Because all of the content is now part of the project Wiki it is also searchable – Type “Broadcom” into the search box and you can get straight to the relevant topics.

    You can browse the User Guide at (now at GitHub)

    https://github.com/inthehand/32feet/wiki

    I also recommend you follow Alan’s 32feet.NET blog where he has posted some of the excellent work he has been doing to add support for further Bluetooth stacks to the project.

  • Disable StoneStreet One Bluetooth Stack on Motorola Devices

    Christian Helle has posted a registry setting on his blog which can be used to toggle the StoneStreet One Bluetooth stack off on Motorola (nee Symbol) rugged handheld devices. Their newer devices (ES400 and MC65) use the Microsoft stack by default.

    http://christian-helle.blogspot.com/2010/10/motorola-dual-bluetooth-stack-support.html

    Once you’ve made this change and soft-reset the device you can use the 32feet.NET library to work with Bluetooth from your .NET Compact Framework applications on these devices.

  • Bluetooth changes in Windows 7

    Since Bluetooth APIs were introduced into Windows (we are talking about the desktop OS here, not Windows CE / Windows Mobile / Windows Phone) there have been numerous updates and changes. Confusingly not all of these have been in Major updates or service packs but some changes are implemented in OEM only packages. We have been working on the 32feet.NET library to ensure we continue to support the new features in the Microsoft Bluetooth stack. There are a number of useful resources which describe the changes. Firstly Alan McFarlane, who has done a lot of really great work on the 32feet.NET library, has put together a detailed description of the changes in Windows 7 including a dive into the native header files. As you’ll see one of the main area of changes is the support for Bluetooth 2.1 which introduces new authentication methods. You should read Alan’s full article.

    I also noticed that Microsoft have published a new FAQ on Bluetooth support in Windows. Interestingly this covers the entire history of Bluetooth on desktop Windows showing which releases implemented which Bluetooth versions. It goes into some depth on developing drivers for Bluetooth devices too – for example if you implement the Device ID profile you are able to integrate into the new Device Stage UI in Windows 7. The Download is a Microsoft Word 2007 document:-

    http://download.microsoft.com/download/9/c/5/9c5b2167-8017-4bae-9fde-d599bac8184a/Bth_FAQ.docx

  • Personal Area Networking in the Delphi Magazine

    John Penman has written an article in the March edition of Delphi Magazine entitled “Simple Wireless Networking with Delphi for .NET” which describes using the 32feet.NET library from Delphi code. It walks the user through each of the areas of functionality in the library: IrDA, Bluetooth and Object Exchange. Its written for the v1.6 version, but the object model in the latest v2.1 version is a superset so the code will work with the latest version.

  • 32feet.NET v2.1 Released

    Yesterday I released the latest update to the personal area networking library to the 32feet.NET site. This release focussed on bug fixes and improved compatibility and error handling. This release supports device discovery on the latest WM5.0 AKU3 devices and beyond where the registry layout has undergone a few undocumented changes. You can view the full list of closed work items for this release on the CodePlex workspace.


    The code also now has unit testing (not yet covering all functionality) and a new sample application for using IrDA on desktop Windows versions.

  • Bluetooth RSSI

    By chance I was looking through the Windows CE 6.0 documentation and cam across a new Bluetooth method – BthReadRSSI. My interest was heightened when reading the Requirements section. Apparently the method is supported on Windows Mobile 5.0 as well as CE 6.0. Without further ado I added the P/Invoke definition to the 32feet source and did some quick tests on my iMate JasJar. The method was present, however it returned the error code 0x00000490 which according to the error lookup tool represents “Element not found”. So that’s where I leave it for now, but I’d be interested to hear from you if you have another device or a Bluetooth equipped CE 6.0 device. You can download the latest 32feet source from the GitHub project which has this functionality – see the BluetoothDeviceInfo.Rssi property.

  • Bluetooth DUN Profile Removed from WM5.0 AKU3

    While there have been some improvements to Bluetooth support through the version – like the addition of A2DP (Wireless Stereo) and most recently PAN in AKU3, at the same time the Dial Up Networking profile has been removed. This is a very widely supported profile for connectivity sharing. If you previously used your Windows Mobile device to share your GPRS connection you’ll no longer be able to do this with newer devices running AKU3 (or perhaps if any OEMs offer ROM updates to AKU3 for current devices). One scenario I’ve already encountered where this is a problem is using a TomTom ONE/Go unit – these use Bluetooth to use your phones connectivity to download traffic updates etc, and they support only the DUN profile.


    Read a discussion about these changes here on Smartphone Thoughts.

  • Bluetooth Audio in Vista

    The Bluetooth functionality (and related APIs) are fundamentally unchanged between XP and Vista, however additional profile support has been added for Audio devices. Based on testing with the RC2 build Vista now supports:-

     

     

    • Handsfree
    • Headset
    • A2DP (Wireless Stereo)

     

    When Vista detects a new audio device it doesn’t automatically install support for the audio services, but it does recognise hands free devices based on their Class-of-Device:-

     

     

    If you select the device properties, and view the Services tag you can see and select the supported audio profiles and when you apply the settings a new Audio device will be installed.

     

     

    You can set these programmatically using 32feet.NET with the BluetoothDeviceInfo.SetServiceState method passing in either BluetoothService.Headset or Handsfree. The audio device appears in the Sounds control panel applet, but doesn’t override the default system audio. You are unlikely to want to do this with a headset anyway, although it’s more likely you’ll want to do this with stereo headphones. You can however select this audio device to use with audio conferencing software such as Skype or Windows Messenger or with Vista’s speech recognition.

  • Hacking the Parrot 3000 Evolution Car Kit

    Recently I tried a different form of Bluetooth hacking, I purchased a simple car kit and wanted to install it myself. Alongside the kit itself I also purchased the required vehicle specific cable to sit between the vehicle wiring and the radio and connect in the Parrot loom. However I soon realised that it was going to be more difficult than originally anticipated because there wasn’t enough space behind the dash to accomodate all the bulky connectors, relaybox and oceans of cables. There were two issues, the adaptor cable passed through every single cable from the vehicle connector even though only a select few were actually used, the inline ISO connectors are rather chunky, the radio itself supports a phone input and mute trigger and so it seemed unnecessary to have the parrot amplify the audio and output it directly to the speakers.


    So I set about looking at what was happening before the relay box and was able to determine the pinouts on the Parrot unit itself. The next stage was to simplify the adapter cable to remove unnecessary passthrough wires and remove the inline ISO connectors. I had to directly solder in Power, Earth and Mute wires from the Parrot and connect up the mono phone input to the “raw” output from the Parrot. The only additional wiring required was vehicle specific as there isn’t an ignition switched power into the radio as it uses the CAN bus to change state. So I ran the ignition line for the Parrot into the connector with the vehicles cigar ligher socket (on some cars this is permanently powered on mine it’s only on with the ignition). I was then able to mount the Parrot box behind the dashboard and route all the wiring behind the vehicle trim. Using this approach has the added benefit of supporting the external volume adjustment through the radio (and hence steering wheel controls). For reference the pin out for the Parrot CK3000 Evolution is as below (Other Parrot models use rather different plugs so I doubt it’s transferrable).


    Aud-    Earth   Aud+   Mute


    White   Black   Red    Blue   Yellow


     X       X       X      X      X


     X       X       X


    Red     Yellow  Blue


    (used by control panel)


    The unused yellow wire is perhaps used by the optional flashing cable. The separate power connector contains three colour coded wires (which are labelled so I wont spell them out here)

  • 32feet.NET Reaches v2.0 Milestone

    Although it took a lot longer than I originally anticipated I’ve finally put the finishing touches to v2.0 of the 32feet.NET library. v2.0 is a major re-write of the code so that the single codebase can be built into separate dlls for desktop or device. This was primarily to get around the bug in the desktop VB.NET compiler which couldn’t cope with redirecting the device System.dll reference to the desktop equivalent. It has had the pleasant side-effect of making the footprint much smaller. The 4 previous dlls are now merged into the single InTheHand.Net.Personal.dll which range from 91kb for the .NETCF v1.0 version to 76kb for the desktop v2.0 version.


    You can download the installer which includes the library, documentation and samples from the 32feet website. This release is the first release version to have the full source code available since the project was hosted at CodePlex. You can also use the CodePlex site to download other builds of the code and post bugs/feature requests. If you want to get involved in the project drop me a mail, or join the discussions on the 32feet site.