This is a demo application for bluetooth USB dongle connected to STM32F4DISCOVERY (http://www.st.com/internet/evalboard/product/252419.jsp) board based on BTstack (http://code.google.com/p/btstack) project and ST USB libraries.
My files are licensed under the terms of GPLv3, although I haven't thoroughly investigated the licenses compatibility for packages used. Please note that files from different projects involved use different licences.
Pure FOSS components using hardware comprized of very cheap STM32F4DISCOVERY board and commodity bluetooth USB dongles.
Currently 2 build flavours are supported: bare (no OS) and for ChibiOS/RT (http://www.chibios.org).
To build for ChibiOS/RT, additionally download respective sources (I use trunk, which is currently at 2.3.4+). You will probably not need newlib_stubs.c here.
The description below is for no-OS build.
Fix ST libs (mine are marked as 1.1.0 revision) using the patch provided. Btstack source probably needs configuring (I'm not sure).
Couple of build options are currently implemented via Makefile variables, see Makefile head for details.
Fix paths in Makefile and verify that defines in source files match your hardware. Grab missing files (such as linker script) from btstack and ST packages. After successful make flash the board using gdb shipped with code sourcery lite and stlink utility.
Please have in mind that btstack uses several libc functions. You may use newlib shipped with code sourcery lite, but you will need to provide libnosys or stubs file, for instance as described in https://sites.google.com/site/stm32discovery/open-source-development-with-the-stm32-discovery/getting-newlib-to-work-with-stm32-and-code-sourcery-lite-eabi
Personally I use custom printf() printing to memory buffer and using stlink/SWD to communicate it to host. I find it quite comfortable, but I don't want to share this code because it's very ugly and not essential for this project.
The demo app is based on btstack/MSP-EXP430F5438-CC256x/example/spp_counter.c example.
See btstack site wiki (MSP430 section) for example apps description.
Besides that I can see my board responding to remote l2ping, hcitool name, hcitool scan and possibly more.
To observe app main function, connect rfcomm port (sudo rfcomm <connect|bind> 0
Using any one of 2 of my dongles, no-OS build flavour feels quite stable.
ChibiOS build works but not so stable, in particular, removing -O0 gcc option breaks things for me. l2ping looks reproducable, contrary to rfcomm. ChibiOS flavour firmware loading is not tested.
I'd like to try to integrate this example to ChibiOS (I mean weak integration, because ST libs are not that tiny). Another goal is to squeeze binary to reasonable size.
I'm very interested in your feedback (via github or btstack forum), especially bug fixes ;) and results for different dongles. If you have stm32f10[57] board, such as Olimex STM32-H107, it would be interesting to give it a run. Happy hacking!