Bluetooth headset with openSUSE 11.0

Well, this turned out to be some kind of adventure. At least when you need it urgently to work as expected on a business trip. :-(

Seems we need much more testing in this area. Anybody volunteering to provide me some more hardware of this area so i can make sure it works in future? :-) (e.g. bluetooth stereo headset etc.)

I have to admit until now I hadn’t much to do with bluetooth at all, but after a salesman here in Ottawa (here for OLS) advertised me this thing would work nicely under linux.. i somehow expected we’d do nice here, but to my frustration i found we have plenty of room for improvement here.

To make it short, after a lot of hours going through hundreds all different howtos and documentation i really was desperate i never would get this thing workin… when i finally realized our packages are broken in 11.0. Or at least bluez-audio which contains libaudio.so that seems to segfault immediatelly after connecting to the device :-( . Fortunatelly the latest factory rpms have this fixed and also works on a 11.0 system (i opened a bug report for this meanwhile, perhaps you wanna place a vote for this.. bnc#412464).

Download them either from official factory repo or from seifes home buildservice project.

Please be aware that i am absolutely no bluetooth expert and all this might just be crap and i was just lucky this worked by chance for me, but perhaps this is also helpful for some more (but try on your own risks..).

After you upgraded your bluez* packages and installed bluez-audio you can make the headphone functionality make work with two simple files to create, but that solution won’t work for simultanious voice transfer for current voip softphones (like e.g. ekiga, kcall, xten etc.).

But if thats enough just:

  1. Install new bluez* packages (including bluez-audio) from above
  2. as root create the file /etc/bluetooth/audio.service with this content:
    [Bluetooth Service]
    Identifier=audio
    Name=Audio service
    Description=Bluetooth Audio service
    Autostart=true
  3. as normal user create the file ~/.asoundrc (yes, really in your home directory) with this content:
    pcm.bluetooth {
    type bluetooth
    device "00:00:00:00:00:00"
    profile "auto"
    }

    (with the address after device being that of your bluetooth headset; findable e.g. via kbluetooth or with hcitool scan on pairing)
  4. restart bluetooth service (rcbluetooth restart as root)

From then on you have new alsa device called “bluetooth” many newer audio-/multimediaplayers can acces (e.g. for mplayer: mplayer -ao alsa:device=bluetooth ….).

Sadfully for e.g. ekiga and other softphones this does not work. There we have to use/ i had to use the old snd-bt-sco module so i get a new additionall complete sound device. When back in germany or when time permits i’ll package this so this will just be simple kmp package to install, but for now heres a tar ball with the fixed sources (so they compile with a 11.0 kernel).

  1. Deactivate above method by setting Autostart to false in /etc/bluetooth/audio.service
  2. Download and extract the tar ball fseidels-btsco-05a.tar.bz2
  3. cd into the new dir and issue (as normal user) “./configure
  4. then “make
  5. and as root in that directory a “make install
  6. if not already done install kernel-source package
  7. cd /usr/src/linux
  8. as root “make cloneconfig
  9. as root “make prepare
  10. cd back to the btsco directoy and there cd into its kernel subdirectoy
  11. issue a “make
  12. copy the snd_bt_sco.ko module to /lib/modules/$(uname -r)/weak-updates/ (as root)
  13. issue a “depmod -a” (as root)

To start/use it

  1. restart bluetooth service
  2. pair your headset (e.g. with help from kbluetooth)
  3. issue “hciconfig hci0 voice 0x0060” as root
  4. issue a modprobe snd_bt_sco as root
  5. start “btsco 00:00:00:00:00” (as root; with the address parameter being that of your headset)
  6. chmod 666 /dev/dsp1 (as root)
  7. chmod 666 /dev/mixer1 (as root)
  8. as root issue “alsamixer -c 1” to adjust volume settings

now you have a workin new /dev/dsp1 sound device you can set in the audio settings of ekiga and other voip softphones and use it like expected. :-)

Hope this helps anybody and hopefully i will soon find the time to package this up as decent kmp with automated udev-rules so it gets easier to use.

Tags: , , ,

20 Responses to “Bluetooth headset with openSUSE 11.0”

  1. [...] Go to the author’s original blog: Bluetooth headset with openSUSE 11.0 [...]

  2. CJPB says:

    Hi!
    Thanks for you guide. I’ve been trying to get this to work since openSuse 10.3 with no luck. I’not very knowleadge in linux so i never got this far :)

    I followed your instructions but they also didn’t work unfortunately. I installed the new packages from the factory rep but got this error with mplayer:
    [AO_ALSA] alsa-lib: pcm.c:2144:(snd_pcm_open_noupdate) Unknown PCM bluetooth
    [AO_ALSA] Playback open error: No such file or directory
    Could not open/initialize audio device -> no sound.
    Audio: no sound
    Video: no video

    I tried the btsco module and all went well until:
    > btsco xx:xx:xx:xx:xx
    Error: Failed to connect to SDP server: Host is down
    Assuming channel 2

    Do you have any idea of what might be wrong? Skype detects the new bluetooth device but no sound comes out.
    The device works fine in windows, and seems to pair correctly according to kbluetooth.
    I’m sorry to be asking you for help like this i you’re the first person that i found getting this to work on opensuse11 :)

    regards,
    Carlos

  3. tuxbox says:

    Hi,
    its hard to tell from only that information, but to me it somehow looks like your bluetooth host isn’t up and running. Check what rcbluetooth status tells you.

    Thanks,
    Frank

  4. [...] Re: Can’t bond with bluetooth headset Perhaps this helps you: Tuxbox Blog » Blog Archive » Bluetooth headset with openSUSE 11.0 [...]

  5. Robin says:

    “as normal user create the file ~/.asoundrc (yes, really in your home directory)”

    why not /etc/asound.conf?
    see http://alsa.opensrc.org/.asoundrc#Where_does_.asoundrc_live.3F

    imho that would be a better candidate for a udev rule…

  6. tuxbox says:

    sure, if you’d like to put it in /etc/asound.conf, but where did your read from that i’d wanted to put the .asoundrc into a udev-rule?
    In fact you got me very wrong on that point ;-)

  7. Robin says:

    okay, I guessed very very wrong ;)

  8. Paul M says:

    thanks for posting this; I’m currently playing with bluetooth headsets and my nokia tablet and suse laptop.

  9. Paul M says:

    I tried building fseidels-btsco, and it complained thus:
    checking for libasound headers version >= 1.0.3… not present.
    configure: error: Sufficiently new version of libasound not found.

    I checked…
    # rpm -qa | grep libasound
    libasound2-1.0.17-7

    there’s only libasound2 not libasound in repos. any ideas?

  10. Frank Seidel says:

    It seems you need /usr/include/alsa/asoundlib.h which is packag alsa-devel-1.0.16-39.1 on my system. Perhaps alsa-devel is missing on your systems installation?

  11. Matthias says:

    thanks to this blog entry, my LinTech blueLino V1.01 works now.
    The adapter is mentoined to play Hifi (A2DP Support), but the sound from amarok sent to it, sounds a bit better then my little daughter`s portable Mono CD Player ;)
    As described in http://wiki.bluez.org/wiki/HOWTO/AudioDevices the alsa plugin does switch automaticly to A2DP. Also edited my .asoundrc in the line profile from auto to hifi. Poor and static sound stays.. :(

    i can haz Hifi?

    Have fun

    Matthias

  12. Alex says:

    Hi. I guess there is no need to use the second method you mentioned to get SCO (voice+mic) support. Just read http://www.bluez.org/driver-updates-for-2627/. At least for me, the problem is that bluetooth devices in openSUSE 11.0 are handled by btusb module (which has no SCO support) (but hci_usb module also loads), so using the first method (it also written on the BlueZ Audio Devices Howto: http://wiki.bluez.org/wiki/HOWTO/AudioDevices) and adding btusb module to the blacklist of modprobe lets the hci_usb driver to handle bluetooth adapter and, as a result, lets me use SCO (now, using “arecord -D headset -f S16_LE | aplay -D headset -f S16_LE” command I can talk to myself, which is very interesting) :)

  13. dziku says:

    I have ht-820 and I did exacly what You described but i don’t get aditional alsadevice(alsamixer got only 0 – soundcard and 1 – hdmi output). My bluetooth adapter is working flawlesly, I can even connect to my headset, pair it and do everythink that you can do with a bluetooth device from kdebluetooth. However neither Skype or mplayer works.
    bt_audio_service_open: connect() failed: Connection refused (111)
    [AO_ALSA] Playback open error: Connection refused
    I had exacly the same problem in opensuse 10.3 and opensuse 10.2 (10.2 running on a diffrent PC with a diffrent dongle) I’ m starting to get frustrated I really don’t know what I’ m doeing wrong. Seems like it works for everyone else but Me.

  14. Ron Smith says:

    Very many thanks for this excellent help!
    I had my bluetooth headset working some time ago for Skype use. Then came upgrades and improvements. And nothing worked any more. I tried aplay/arecord to test. And that also stopped. I found this article about 3 weeks ago and have everything working again.
    One question : must I rebuild the btsco tarball against every kernel change?

  15. Paul M says:

    I’ve now got an A2DP headset (Moto S705, v nice) and have used the standard hacks to make it work with my Nokia N800 tablet:
    http://www.guardiani.us/index.php/N800_custom_packages#Bluetooth_ALSA

    Am on suse11-i586 and still unable to get A2DP to work. I tried the ideas from above, but I cannot find an A2DP daemon to set as an alsa target.

    Any ideas? I’ve be grateful to be prodded at
    paul . mansfield [.a._.t.] gmail . com
    if something comes up! thanks

  16. bpandacsoki says:

    It’s a very useful post, thanks. At the second part I got stuck.
    ./configure gives the error message

    XIPH_PATH_AO: command not found

    I cannot figure out the solution to this, I have the newest libao-0.8.8-137.48 and libao-devel-0.8.8-137.48 installed. The full output of ./configure is here:
    http://isiosf.isi.it/~kadar/output.
    Thanks for any hint.

  17. dennis says:

    excellent this really good post, i like it…….!

  18. Blue Devices says:

    Hi,
    Really nice information, i was looking for it since 2 months. Does it applicable with all bluetooth headsets.

  19. headsets says:

    hey!! thanks a tonee… I wish your tips work for my bluetooth headset as well..

    Thanks.

  20. Rajiva says:

    Nice post cuy.
    What about this problem “The process for the bluetooth protocol died unexpectedly.”

    It occurs when access using konqueror > bluetooth:/ protocol. And notification at kicker(kde panel) is “No Bluetoth adapter”.

    Itry this command:
    rajiva:/home/pingu # hwinfo –bluetooth
    08: USB 00.0: 11500 Bluetooth Device
    [Created at usb.122]
    UDI: /org/freedesktop/Hal/devices/usb_device_a5c_2101_noserial_if0
    Unique ID: Zj8l.433pBUbCLe7
    Parent ID: pBe4.moLwSePIflE
    SysFS ID: /devices/pci0000:00/0000:00:04.0/usb2/2-4/2-4:1.0
    SysFS BusID: 2-4:1.0
    Hardware Class: bluetooth
    Model: “Broadcom Acer Module”
    Hotplug: USB
    Vendor: usb 0×0a5c “Broadcom Corp.”
    Device: usb 0×2101 “Acer Module”
    Revision: “1.00″
    Driver: “btusb”
    Driver Modules: “btusb”
    Speed: 12 Mbps
    Module Alias: “usb:v0A5Cp2101d0100dcE0dsc01dp01icE0isc01ip01″
    Driver Info #0:
    Driver Status: btusb is active
    Driver Activation Cmd: “modprobe btusb”
    Config Status: cfg=new, avail=yes, need=no, active=unknown
    Attached to: #2 (Hub)

    You see? Seems there are no problem with my bluetooth. Any suggest?

Leave a Reply