Bluetooth or usb + bluetooth module on a embedded linux?

maybe a stretch on this forum but I know some of the regulars have linux experience as well as having worked with other embedded-micro modules so here goes…

brainstorming a project someone asked me about… has anybody used/seen linux on an embedded module of some sort (ie not PC based) that has a usb port that supports a usb bluetooth adapter, or has bluetooth directly built in (not needing the usb in that case)?

want to make something like a wireless intercom that uses two or more bluetooth headsets and can also pipe mp3s to them in idle (not talking) mode.

suggestions?

other thought was this might be something an iTouch could do but I don’t know anything about them really.

I had a Mini-ITX, which I can’t seem to find anymore as it looks like it’s no longer available. The Mini-ITX motherboard had 2x USB 2.0 ports on it. It had a built-in AMD Geode LX800 (500Mhz) which was HSF-less, on-board Compact Flash slot that was used as a hard drive, audio ports and finally, a VGA port. I only got to use it for a few hours before i accidentally placed the CF card in the wrong way and ruined the whole system. It would’ve been cool to use on a robot considering how compact it was. I think it was somewhere around 6.7" x 6.7" and 1/2 an inch thick. I had windows XP running on it and was going to put linux on it because the CF card I had wasn’t able to even fit XP on it AND install the drivers (darn! I should have bought 4GB card :confused: ). Anyways, it had a slot for an Internet Card (the ones found in laptops) and laptop RAM slot that I placed 512MB of RAM into.

So I had to return it to newegg and get a refund. Would’ve been nice to try linux on it.

well mini-itx sort of ignores the whole “ie not PC based” requirement, but I’m sure it could be done that way just really feels like swatting a beetle with a bulldozer. :confused:

What exactly did you mean in particular?

um, not PC based architecture? something based on an ARM or Coldfire or 32-bit Pic or … whatever. There are tons of boards out there, I am searching myself, but you know someone else may have already found something that fits the bill while they were looking for something else. I am just looking for input from anybody who might have already used or looked seriously into using a small microcontroller board capable of runing linux with either bluetooth or usb stacks and a driver database for some common usb devices. I don’t spend a lot of time in this focus area professionally so I am looking for suggestions from a well established and generally technically literate group of people. :open_mouth:

ARM? why didn’t you say so. I’ve come across a bunch of these things while just checking out sparkfun to see what they carry.

sparkfun.com/commerce/produc … ts_id=9048

It even has a Touch screen LCD. I’m not quit sure what your budget is, but It would be PERFECT for a robot. Considering it even has a serial port on it.

Not sure how much custom programming you want to do and what your other restrictions are. Some random ideas though:

] Gumstix Line: Embedded linux base. Bluetooth built-in. USB capabilities. Add-on boards for audio in/out.
/
:m]
] Rockbox Firmware. Maybe of use as a starting point if repurposing an MP3 player. Not sure if any of the supported MP3 players support bluetooth (directly or indirectly) though.
/
:m]
] Nokia n810: Slightly larger than an iTouch , but full capability touch screen computer. Uses Maemo linux (a complete linux distro). Built-in bluetooth. Various programming options. (I have one and really want to try it as controller. Haven’t yet though.)
/
:m]
] As you already noted, I wouldn’t be suprised if itouch or similar devices got you close, though I also don’t know for sure if could create an intercom system with them. I kind-of doubt it since I don’t think most off-the-shelf media devices support audio-in simultaneously with audio-out.
/
:m]
] Assuming you already know, but just-in-case… intercom devices with music capability exist. They’re often used by motorcyclists and pilots. i.e. chatterboxusa.com/cbxbiokit.html
/
:m]

thanks for the reply. just from what I’ve been reading I think there will be some degree of programming involved as honestly this type of thing doesn’t seem very flushed out in the linux world yet.

I have been pondeing the gumstix. seems to me the verdex pro XM4-bt, a tween board, and the audiostix2 expansion board might be a workable combination. kinda feel like I’d be plunging off a cliff to just go buy that today so I need to do some more reading before laying out plastic. :slight_smile:

I’ll look at the chatterbox thing in more detail. I did just notice they had something about using bluetooth and a cellphone on one of their video links. Might be able to get away with something like that… might depend on how costly it is… although it’s not like the gumstix idea is cheap either. :wink:

Support for Bluetooth in the Embedded Linux world is not real consistant. The linux kernel has had support for Bluetooth for years. However, this support can require other utlitities besides the kernel driver in order to work properly. Unfortunately, setup can be a headache sometimes.

I have found that good Bluetooth support depends on several things.

  1. The hardware platform you invest in.

  2. The development system for that hardware. This usually has an impact on what software you will be able to build for your Embedded Linux platform. Believe me, not all Embedded Linux development systems are created equal, are easy to use, and allow access to lots of software.

  3. Whether there is a good online support forum available.

If you choose to go with an ARM7 platform (does not run Linux), you could have both better luck in some areas and have to do more work in other areas. The only reasonable development system I have found in this case is Rowley Associates Crossworks for ARM, which is one of those happy instances where things just work, and work very well. Rowley’s support is second to none (like Lynxmotion), and in many cases you will be getting answers right from one of the owners/developers themselves. There are also some higher end ARM7 boards that have USB Host and Slave support, like the NXP LPC2478 type boards sold by SparkFun and others.

For Embedded Linux, you may also have to learn to write custom kernel drivers, depending on what exactly you are trying to accomplish. This should not be an issue for what you want to do though. :slight_smile:

For platforms you might consider, there are the Gumstix Overo (the latest), BeagleBoard. Both of these use the same TI OMAP35x processor, as well as the same OpenEmbedded development environment, so finding support if needed should not be difficult. Both have very active IRC channels, for instance, where developers hang out.

One thing to remember when it comes to Embedded Linux is do NOT scrimp on your development platform. You can always scale down to a more limited processor that has just what you need for your application. But, with the price of Gumstix and BeagleBoard, this may not be necessary or desirable. In any case, get the platform with the most capabilities for development. Since both of these use the same processor, it should not be difficult to move an application between them.

As far as development systems go, I can say it goes well for either of these platforms, and I was able to get up and running and build an image for a BeagleBoard pretty much right out of the starting gate. I’d go with one of these for Embedded Linux - they both look very good from my research. You will have to do your development under Linux for either of these, but that is not a bad thing in my opinion. :slight_smile:

These boards may seem like overkill for your application at first, but take a good close look at them, especially at the development environment and hardware resources available. You can even set up a development system before you ever purchase either of these to see how well it will work for you. I did this for BeagleBoard and it worked well even for me, and I tend to have difficulty with development system setups.

You’ll have to do some research to figure out what the best way for you to go is, but hopefully I’ve shown some decent possibilities and things you will want to consider. I’ve looked at quite a few Embedded Linux capable boards, both with few and more features, and so far it looks like the Gumstix and BeagleBoard would be the best ways to go today.

I also have to add a short disclaimer here… :slight_smile: I have not had my hands on either the Gumstix Overo or BeagleBoard hardware yet. However, I have setup a development system for the BeagleBoard and believe it would be easy to work with. I built a stock software image to test my setup and it built without errors the first time. I have not built a custom software image yet, since I don’t have either board. As with all things worth doing, there will be a learning curve to go through with Embedded Linux, and it’s not always going to be a smooth ride. The online resources are available, even if they aren’t always easy to find.

8-Dale

hey dale ltns. thks for the post.
ftr, I picked up a gumstix vm4-bt, audiostik II, and a tween board last week, as well as a callpod dragon bt earpiece to test with. ups says most of it is sitting at my door for when I get home today. so far in reading up on stuff the only missing piece may be needing another linux station to cross-compile stuff for it. I am thinking I can probably do something with the mini-itx board I had bought for the trov project awhile back. I’ll cross the brige when I come to it. I’m sure it’ll be next week sometime at the earliest before I have time to mess with it all to any significant extent.
later.
EB

Another thing to consider is you may need to write some user space (not kernel driver) software to handle the specific Bluetooth profile(s) you want to work with. The basic support for Bluetooth is already in the ARM kernel tree, as (I think) all the low level drivers you would need.

The other thing to be aware of with Embedded Linux is that you won’t always have the exact same drivers in the Embedded kernel tree that you have with the regular Linux kernel tree for PC based stuff. The Embedded kernel tree can lag the main tree by quite a bit sometimes.

If you are fairly new to Linux, I recommend Kubuntu 8.10 (Ubuntu 8.10 with KDE) as a good base for a development system. I’ve already had the OpenEmbedded stuff for BeagleBoard working well with it and it should not be any more difficult to get things working for Gumstix. Kubuntu also uses KDE for the GUI, which is what I consider to be better GUI than MS Windows (XP or VISTA). All the basic shortcuts for MS Windows also work in KDE, like for copy/paste, etc.

I hope this all works out and I’ll help where and when I can.

8-Dale

Hi.

I’m using an Eddy 2.1 module for my hexapod. That’s a tiny Linux module containing an atmel at91sam9260 uC at 200 MHz, 32 MB SDRAM and 8 MB Flash.

This is connected via SPI to an FPGA board (servo controller) and via UART (serial) to a HCI-over-UART compliant bluetooth module (ericsson rok 101 107).

The drawback of using a UART connection is the slow speed, USB would be much faster.

However, UART HCI modules are supported by the bluez stack, but it was a horrible pain to get that into buildroot.

More info about the Eddy module can be found on embeddedmodule dot com (first post spam filter… -.-).

I didn’t bother about getting the devkit or lemonix IDE, but set a bridge on two of the connection jumper pins to enable boot from flash, soldered a console to the debug UART and flashed a custom kernel + initrd on that thing.