Bluetooth und verschiedene Devices verbinden

18/10/2008 - 03:24 von Andreas Kohlbach | Report spam
Ich hatte mit Bluetooth bisher nichts zu tun, und Googlen bringt meistens
das, was ich schon probiert habe, so dass ich mich an die Gruppe wende.

Ich habe hier einen Computer mit Broadcom Bluetooth Dongle. Das
funktioniert auch von den Treibern her. OS ist Debian Lenny,
Kernel 2.6.26-1.

Ein Mobil-Telefon Samsung m300, was die Profile HSP, HFP and OPP (siehe
unten) beherrschen soll. Computer und Telefon können sich gegenseitig
"sehen".

Außerdem ein Billig-Headset BK-200.

Das Handy und das Headset zu "paaren" (Pairing, nicht was man sonst
denken könnte :-), funktioniert.

[Computer mit Handy paaren]

Ein "hcitool scan" zeigt mir das Handy an, wenn ich es mittels
"hcitool cc HW" (seiner Hardware Adresse) verbinde, geht das ohne
Fehlermeldung. Ein "hcitool con" zeigt aber nichts an. Nur wenn ich das
sofort hinterher (per ";" getrennt) eingebe, wird es angezeigt. So als ob
die Verbindung gleich wieder getrennt wird. Ist das so vorgesehen?

[Handy mit Computer paaren]

Wenn ich das Handy mit dem Computer paare, geht das auch, es sagt
"Pairing successful" und der Computer wird in der Liste der "trusted
devices" angezeigt. Sonst aber keine Optionen, außer "info". Was mir
sagt, das Profile des Computers sei "untrusted". Worauf sich die Frage
anschließt: kann ich dem Computer sagen, welche Bluetooth-Profile er
können soll? Wenn ja, wie? Und möglichst ohne GUI. kdebluetooth wirft
nàmlich einen Error, dass es Probleme mit dem SMBus gàbe. Laut Boot-Log
er aber schon erfolgreich gestartet würde. Shutdown von Bluetooth und
DBUS, wie geraten, bringen nichts.

Ich wollte möglichst auf Dateien im Handy per Computer zugreifen. Ich
habe auch versucht, das per obexfs zu mounten. Dazu die Zeile

obexfs#-b00:1F:CD:E6:7C:AC\040-B10 /mnt/cell fuse allow_other,user,fsname=obexfs#-b00:1F:CD:E6:7C:AC 0 0

in der /etc/fstab. Eine Fehlermeldung gibt es beim Mounten nicht, aber es
wird auch nichts gemountet. Es gibt auch keine, wenn ich den Dongle ab
ziehe, also kein Bluetooth mehr zur Verfügung steht. :-( das Handy soll
OBEX können, siehe Infos weiter unten.

[Computer mit Headset paaren]

Hier für ist wohl rfcomm zustàndig. Ich bekomme aber die Meldung, "Host
is down". Welcher, wird nicht gesagt. In den Bootmeldungen steht aber,
dass rfcomm initialisiert sei. Ich weiß, dass die PIN der Headsets immer
0000 ist, und habe in /etc/bluetooth/pin auch nur eine Zeile mit 0000
stehen. Trotzdem geht das nicht. Das Profil des Headset sagt es könne HFP
(Hands Free Profile).

Hier mal, was mein Handy können soll aus dem "sdptool browse" Befehl.

,-
| Service Name: Dial-up Networking
| Service RecHandle: 0x10001
| Service Class ID List:
| "Dialup Networking" (0x1103)
| "Generic Networking" (0x1201)
| Protocol Descriptor List:
| "L2CAP" (0x0100)
| "RFCOMM" (0x0003)
| Channel: 2
| Language Base Attr List:
| code_ISO639: 0x656e
| encoding: 0x6a
| base_offset: 0x100
| Profile Descriptor List:
| "Dialup Networking" (0x1103)
| Version: 0x0100
|
| Service Name: AUDIO Gateway
| Service RecHandle: 0x10002
| Service Class ID List:
| "Headset Audio Gateway" (0x1112)
| "Generic Audio" (0x1203)
| Protocol Descriptor List:
| "L2CAP" (0x0100)
| "RFCOMM" (0x0003)
| Channel: 3
| Language Base Attr List:
| code_ISO639: 0x656e
| encoding: 0x6a
| base_offset: 0x100
| Profile Descriptor List:
| "Headset" (0x1108)
| Version: 0x0100
|
| Service Name: Voice Gateway
| Service RecHandle: 0x10003
| Service Class ID List:
| "Handsfree Audio Gateway" (0x111f)
| "Generic Audio" (0x1203)
| Protocol Descriptor List:
| "L2CAP" (0x0100)
| "RFCOMM" (0x0003)
| Channel: 4
| Language Base Attr List:
| code_ISO639: 0x656e
| encoding: 0x6a
| base_offset: 0x100
| Profile Descriptor List:
| "Handsfree" (0x111e)
| Version: 0x0101
|
| Service Name: OBEX Object Push
| Service RecHandle: 0x10004
| Service Class ID List:
| "OBEX Object Push" (0x1105)
| Protocol Descriptor List:
| "L2CAP" (0x0100)
| "RFCOMM" (0x0003)
| Channel: 1
| "OBEX" (0x0008)
| Language Base Attr List:
| code_ISO639: 0x656e
| encoding: 0x6a
| base_offset: 0x100
`-
Andreas
Warum Linux? http://www.getgnulinux.org/ (Englisch)
 

Lesen sie die antworten

#1 Michael Ziegler
18/10/2008 - 10:48 | Warnen spam
Andreas Kohlbach wrote:
Ich hatte mit Bluetooth bisher nichts zu tun, und Googlen bringt meistens
das, was ich schon probiert habe, so dass ich mich an die Gruppe wende.



Ich hoffe mal dir helfen zu können, ich betreibe seit einiger Zeit ein
Handy, ein Headset und ein Autoradio relativ erfolgreich - wenn auch mit
Laptop-integrierter Bluetooth-Hardware, nicht mit einem Dongle.

[Computer mit Handy paaren]

Ein "hcitool scan" zeigt mir das Handy an, wenn ich es mittels
"hcitool cc HW" (seiner Hardware Adresse) verbinde, geht das ohne
Fehlermeldung. Ein "hcitool con" zeigt aber nichts an. Nur wenn ich das
sofort hinterher (per ";" getrennt) eingebe, wird es angezeigt. So als ob
die Verbindung gleich wieder getrennt wird. Ist das so vorgesehen?



Das ganze Bluetooth-Gekramse ist vor kurzem recht radikal umgestellt
worden (radikal genug dass Mumble nicht mehr mit meinem Headset funzt,
hmpf), daher bin ich mir nichtmal sicher ob das Pairing überhaupt noch
mit HCITool gemacht wird. Ich benutze das KDEBluetooth-Framework, was
bei mir (Debian Sid) auch ausgezeichnet funktioniert.

Wenn ich im Konqueror bluetooth:/ ansurfe, wird dort mein Handy
angezeigt, wenn ich dann draufklicke fragt erst mein Handy nach einem
Passkey, dann KBluetooth - gebe ich einen ein, kann Konqueror per OBEX
aufs Handy verbinden und zeigt mir alle Dateien an.

[Handy mit Computer paaren]

Wenn ich das Handy mit dem Computer paare, geht das auch, es sagt
"Pairing successful" und der Computer wird in der Liste der "trusted
devices" angezeigt. Sonst aber keine Optionen, außer "info". Was mir
sagt, das Profile des Computers sei "untrusted". Worauf sich die Frage
anschließt: kann ich dem Computer sagen, welche Bluetooth-Profile er
können soll? Wenn ja, wie?



Normalerweise ist das Pairing _ein_ Vorgang, danach wissen _beide_
Geràte dass sie mit dem jeweils anderen ab jetzt befreundet sein sollen,
daher brauchst du eigentlich nicht "Computer mit Handy pairen" und
"Handy mit Computer pairen"; das eine impliziert das andere.

Welche Profile soll dein Rechner denn können? Wenn du Dateien saugen
willst brauchst du auf deinem Rechner afaik einen OBEX-Server,
KBluetooth kann so einen wohl anbieten, allerdings hab ich es noch nicht
geschafft mit meinem Handy diesen zu nutzen. Zumindest kann ich aber mit
"Send File" Dateien vom Notebook aufs Handy übertragen.

Und möglichst ohne GUI. kdebluetooth wirft
nàmlich einen Error, dass es Probleme mit dem SMBus gàbe. Laut Boot-Log
er aber schon erfolgreich gestartet würde. Shutdown von Bluetooth und
DBUS, wie geraten, bringen nichts.



Ich denke es ist am Sinnvollsten hier anzusetzen, KBluetooth erleichtert
die Bedienung des ganzen nàmlich doch erheblich.

[Computer mit Headset paaren]

Hier für ist wohl rfcomm zustàndig. Ich bekomme aber die Meldung, "Host
is down". Welcher, wird nicht gesagt. In den Bootmeldungen steht aber,
dass rfcomm initialisiert sei. Ich weiß, dass die PIN der Headsets immer
0000 ist, und habe in /etc/bluetooth/pin auch nur eine Zeile mit 0000
stehen. Trotzdem geht das nicht. Das Profil des Headset sagt es könne HFP
(Hands Free Profile).



Kann es nur HFP oder auch A2DP? Eine ALSA-Config um A2DP zu nutzen sieht
in etwa so aus:

pcm.blueheady {
type bluetooth
device 00:0C:78:41:B5:C6
profile "hifi"
}
ctl.blueheady {
type bluetooth
}



Für HFP:

pcm.lowblueheady {
type bluetooth
device 00:0C:78:41:B5:C6
profile "voice"
}
ctl.lowblueheady {
type bluetooth
}



Ich hab es allerdings wie gesagt noch nicht hinbekommen Mumble dazu zu
bewegen was aufzunehmen, vielleicht hast du mit anderen Programmen mehr
Glück. HFP bedeutet afaik für die Codierung des Sounds: 8khz Mono S16_LE.

Um das Pairing des Headsets durchzuführen muss ich nur mit irgendeinem
Audioplayer drauf zugreifen, wenn es noch nicht gepaart ist fragt
KBluetooth sofort nach dem PIN, und danach startet die Wiedergabe.

Viele Grüße
Michael

Ähnliche fragen