A Bluetooth stack in user space already existed for quite a while. The researchers at ETH Zurich provide software for their BTnodes. A BTnode has (among other features) an ATmega 128 micro controler and a BT module with an HCI interface that is connected via a UART.
Fortunately, you can do development and real-world tests with just the same software compiled for running on a host system (e.g. PC). The emulator runs in user mode and uses a BT module attached to the serial port. Have a look at
for further info.
For experimenting with the sensor node software I used a module like this - which has a Mitsumi Bluetooth module with a CSR chipset, works at 115200 bps and could do hardware handshaking (RTS/CTS) - nevertheless - the jumpers on the board also allow to work with no handshaking at all (in case your serial port does not provide it) by looping RTS/CTS at the module side. The photo on Flickr has notes that explain the jumper settings.
I benefited a lot from having worked with Bluetooth on the HP iPAQ (Compaq at that time still) from the very early days - when this even still involved switching the HCI transport mode for the chip in the iPAQ with a tool provided by CSR. At that time I built a 2nd generation iPAQ based wearable computer for usage in a research project.
See the recent setup with the external adapter working on Linux.
After having tested it on a Linux system - I can confirm that the software works on OSX as well - run as a standard user with read/write access to /dev/tty.KeySerial1 (a Keyspan USA-19HS adapter).
Now - let us attach the (we are still talking about an external one) BT module to the iPhone serial port and compile / run the emulator program as just another user space program.
It just works (you will notice that - as shown on the photo on the top - I have 2 external modules - that’s the reason for the different MAC addresses).