Bluetooth PBAP

Original page for older versions of obexd was moved to Bluetooth PBAP pre 0.46


The following is based on two threads on talk.maemo.org and can be applied only on obexd version 0.46 (and maybe later):

You can contact current maintainer (luf) on IRC #maemo-ssu or in the second TMO thread to get support and share your experiences with this solution there as well!!!

Contents

[edit] General Information

[edit] PBAP

The Bluetooth Phone Book Access Profile (PBAP) allows to exchange Phone Book objects and call history between carkits and mobile devices. In other words, PBAP profile gives your car unit read access to your mobile phone book (to be exact: to both, the phonebook stored on SIM card and the phone book stored on internal memory. But for the N900 only second one is relevant). You're also able to browse call history using car unit aswell.

Described in a more specific way, whenever a connection between your carkit and your PBAP enabled phone is established, your phone book will be transfered to your carkit automatically. What happens from now with the transfered phone book of course depends on the features of your carkit. Typical use cases are browse and dial (voice-dial if supported by carkit) your contacts and show caller names for incoming calls. With an integrated In-Car Infotainment/Phone/Navigation/Whatever system it is even possible to use the contacts addresses as target for the navigation system.

By default N900 does NOT support PBAP and thus the in-car use cases described above are either not possible or require manual workarounds as the in other threads described "Petrovich workaround" (manual sending of vCards via Bluetooth) or OPP (Object Push Profile - A Bluetooth profile that enables a Bluetooth device to transfer (push) an object (e.g. contact) to another Bluetooth device).

[edit] IrMC

This project also aims to provide IrMC support. IrMC is another method to transfer the phone book to e. g. a car kit via Bluetooth which is by default not supported by N900.

[edit] MAP

The Message Access Profile (MAP) allows to exchange messages objects between carkits and mobile devices. Now only SMS (GSM) are supported. In other words, MAP profile gives your car unit read access to your SMS.

MAP is not supported by default by N900.

Here comes the good news: Now you can have PBAB and IrMC and MAP on your N900 !!!

[edit] Credits

Credits for the achieved so far go to those who contributed in the old thread "Car kit can not access contact information" as well as the new thread Announce - Bluetooth PBAP and IrMC / Carkit support is coming to N900...:

Especially the developers: drdrewusaf, tuxy, jarmo2, hschmitt, Ossman, mirakels..., but of course also all the others who helped with testing and troubleshooting!

[edit] Disclaimer

Before you start playing with your phone, you should check if your carkit does support PBAP / IrMC / MAP.

If it does not, this solution can not help you - Sorry!

There is a TODO to write support for AT commands but don't hold your breath.

(Note: Carkits older than 2007 probably do NOT support PBAP)

[edit] Known issues / problems

  • Sometimes contacts synced from other devices (e.g. using PC Suite) with special characters in names/details are not transferred (correctly). Recreating these contacts on your N900 should solve this issue. - I don't know if this is still valid. Please report it if this problem persist
  • MAP implementation in N900 doesn't support neither notifications nor the push methods yet

[edit] Installation Guide

This installation is based on obexd-0.46 and provides

  • PBAP support
  • IrMC support
  • MAP support
  • PC Suite support
  • Multiple phone numbers per contact
  • Skip SIM contact requests (means contacts are not shown twice)
  • vCards are separated correctly with CRLF between END:VCARD and BEGIN:VCARD.

[edit] CSSU-testing (the easiest way)

please add correct version number of CSSU-T, or at very least date, so reader has a chance to decide if the info is still valid

Unfortunately obexd 0.46 isn't in stable branch of CSSU so you can obtain it easily only from CSSU-testing. Please read carefully CSSU information and follow CSSU installation instructions if you want to obtain obexd. You can find all neccesary information on CSSU page

Downsides:

  • CSSU-T has longer release cycle so it doesn't contain the newest version.
  • There is no map support in latest CSSU-T
  • It contains configuration bug which prevents synchronize contacts using SyncML over BT. You need to disable syncevolution plugin to fix the problem (see below in Configuration chapter).
  • The last known issue in CSSU-T is missing dependency (only affects call history feature). You need to install rtcom-eventlogger-async package (using HAM or apt).

[edit] Manual installation

This needs using command line (e.g. xterm).

  • Download following packages (version of your choice - recommended is the latest one) from http://merlin1991.at/~luf/obexd/:
    • obexd
    • librtcom-eventlogger1-async
    • rtcom-eventlogger-async (even if a car kit asks for call history, the N900 won't reply if this package is missing, so no call history would be transferred)
    • evolution-data-server-addressbook *)
    • libebook *)
    • libedata-book *)
    • libedataserver *)
    *) It's recommended to also upgrade evolution-data-server to avoid empty vcard fields.
  • Place them in a folder on the N900, say /home/user/mypackages
  • As root run (replace /home/user/mypackages with the path to the folder where you placed the files):
cd /home/user/mypackages
dpkg -i *.deb
  • Reboot the phone.

Test and ENJOY - hopefully ;-)

-> Please share your results !!!

[edit] Configuration

This is handy for some configuration fixes and debugging.


The obexd is started under user user using D-Bus (no idea why because it doesn't restart when fail). So the command to start is defined in:

/usr/share/dbus-1/services/obexd.service

[D-BUS Service]
Name=org.openobex
Exec=/usr/lib/obex/obexd --nodaemon --noplugin=mas,syncevolution --symlinks --root .obex-root --root-setup /usr/bin/obex-root-setup --capability '!/usr/bin/gen-obex-capability.sh'
Note: this is fixed version for CSSU-T version of obexd


[D-BUS Service]
Name=org.openobex
Exec=/usr/lib/obex/obexd --nodaemon --debug='*' --noplugin=syncevolution --symlinks --root .obex-root --root-setup /usr/bin/obex-root-setup --capability '!/usr/bin/gen-obex-capability.sh'
Note: this is for debugging due to some troubleshooting or recognizing what Profile is used (PBAP or IrMC)


Some useful arguments:

  -d, --debug=DEBUG           Enable debug information output
  -P, --noplugin=NAME,...     Specify plugins not to load
The most used DEBUG is '*' (--debug='*') to debug everything
  • plugin names:
    • ftp - File Transfer Profile for exchanging files
    • irmc - IrMC profile for synchronizing contacts and call history
    • map - Message Access Profile for SMS
    • opp - Object Push Profile for pushing file to the N900
    • pbap - Phone Book Access Profile for contacts and call history
    • pcsuite - Nokia PC Suite services
    • syncevolution - SyncML obex profile conflicting with nokia SyncML - should be disabled


All possibilities:

$ /usr/lib/obex/obexd --help
Usage:
  obexd [OPTION...]
 
Help Options:
  -?, --help                  Show help options
 
Application Options:
  -n, --nodaemon              Do not run as daemon in background
  -d, --debug=DEBUG           Enable debug information output
  -r, --root=PATH             Specify root folder location. Both absolute and relative can be used, but relative paths are assumed to be relative to user $HOME folder
  -S, --root-setup=SCRIPT     Root folder setup script
  -l, --symlinks              Allow symlinks leading outside of the root folder
  -c, --capability=FILE       Specify capability file, use '!' mark for scripts
  -a, --auto-accept           Automatically accept push requests
  -p, --plugin=NAME,...       Specify plugins to load
  -P, --noplugin=NAME,...     Specify plugins not to load

[edit] Troubleshooting

You should obtain debug log using syslog and also you can sniff the communication using hcidump.

[edit] Get debug messages

For obtain debug information you need to enable obexd syslog debugging messages:

  1. Install sysklogd package. As root run
    apt-get install sysklogd
    • Temporary:
      1. Kill running obexd process. As user run
        killall obexd
      2. Get the necessary command line from file /usr/share/dbus-1/services/obexd.service, line "Exec=" (only the part behind Exec=) -> it's probably best to put it in a shell script, this also enables you to quickly switch between f.e. IrMC and PBAP test cases using dedicated scripts
      3. Restart obexd with enabled debug option as user. You need to add --debug='*' (see Configuration chapter for example)
    • Permanent till next upgrade of obexd:
      1. Add the --debug='*' option into the /usr/share/dbus-1/services/obexd.service file (see Configuration chapter for example)
      2. Reboot N900
  2. Make you test case
  3. Get the debug from syslog
    • syslogd will create a file /var/log/syslog
    • After your test copy this file to some other location (do not delete the original) and edit out the relevant part
  4. Uninstall sysklogd package. As root run
    apt-get remove sysklogd

[edit] Get the communication dump

First you need to add the developer repository, see Documentation/devtools/maemo5#Installation the devtools installation instructions.

After adding the repository, run the following command as root:

apt-get install bluez-hcidump

OR if the above fails, try the following steps:

  1. Download the deb-package containing hcidump from here: hcidump download
  2. Unpack it (alien on Linux, 7-zip on Windows)
  3. Copy /usr/sbin/hcidump to the N900
  4. In xTerm as root:
    chmod a+x /usr/sbin/hcidump

[edit] Usage of hcidump

For testing/debugging with hcidump, run the following command (where "/some/path/somefilename" is a real path and any name you choose for your output file.)

hcidump -w /some/path/somefilename

right before turning your head unit/car on. Then, do what you would normally do to get contacts to show up and wait for it to finish/fail. Then, press ctrl+c on the phone to exit hcidump. Finally, you can view the output/dump file with Wireshark or upload your dump files so we can see what's going on.

-> Please share your results !!!

[edit] Downgrade to Original State

To reinstall the original packages you can use several ways.

[edit] Using apt

As root run:

apt-get update
apt-get install libopenobex1=1.4-0maemo3+0m5
apt-get install obexd=0.18-0maemo6+0m5

Reboot the phone.

[edit] Manual dpkg

  • Place them in a folder on the N900, say /home/user/mypackages
  • As root run (replace /home/user/mypackages with the path to the folder where you placed the files):
apt-get remove openobex-apps
cd /home/user/mypackages
dpkg -i *.deb
  • Reboot the phone.

[edit] Supported Carkits

So far, successful phonebook transfers were reported for the following carkits:

(If you are able to successfully transfer your phonebook to any carkit not listed here, please let us know or just add to following list!):

[edit] Via PBAP:

[edit] Built-In Carkits:

[edit] Acura
  • Acura TL -2010- SH-AWD w/Technology Package
[edit] Audi
  • Audi -2009- with RNS-E
  • Audi A3 -2009- (Facelift) with Radio Concert and bluetooth preparation
  • Audi A3 -2010- with RNS-E and bluetooth preparation
  • Audi A3 -2011- with Radio Concert and bluetooth preparation
  • Audi A4 -2010- with MMI (usable, BUT reads double entries, looks like phonebook is both on N900 and on SIM-card)
[edit] BMW
  • BMW 1series -2008- (E81/E82/E87/E88)
  • BMW 1series -2010- (E81/E82/E87/E88)
  • BMW 3series -2007- (E90/E91/E92/E93)
  • BMW 3series -2008- (E90/E91/E92/E93)
  • BMW 3series -2009- (E90/E91/E92/E93)
  • BMW 3series -2011- (E90/E91/E92/E93)
  • BMW 5series -2009- (E60/E61)
  • BMW 5series -2010- (F10/F11)
  • BMW X1 -2010- (E84)
  • BMW X5 -2007- (E70)
  • BMW 3 Series -2012- (E92) - All works, except transfering photo contact.
[edit] Chrysler
  • Town and Country 2010 (Limited)
[edit] Citroen
  • Citroen C5 (2006) with RD4 audio / Bluetooth system (phone book access works and outgoing calls can be made, but no caller ID and no phone number is shown on incoming calls; missed/dialed/received lists aren't available, either)
  • Citroen (Model unknown)
  • Citroen DS3 (2011) with MyWay audio/navigation/Bluetooth system (Phone book access direct from phone available, outgoing calls can be made, caller ID with phone number is shown on incoming calls, missed/dialed/received lists are available but this are only the calls that were made whilst connected with the MyWay-system)
[edit] Dodge
  • Durango 2012 with RHR UConnect (Citadel)
[edit] Fiat
  • Fiar Scudo Panorama - 2007 - car kit bluetooth
[edit] Ford
  • Ford Mondeo -2007- Navigationsystem NX with Touchscreen
  • Ford Galaxy -2010- Navigation with Touchscreen
  • Ford Focus -2010- with Ford 6000CD
  • Ford Escape -2011- Limited with Touchscreen
  • Ford Mondeo -2011- Navigationsystem Travelpilot NX with Touchscreen
[edit] Honda
  • Honda Accord -2009- (EU) HFT system with SatNav
  • Honda CRV -2010- (EU) HFT system with SatNav
  • Honda Civic 2012 EX,Si. HandsFreeLink HFL
[edit] Hyundai
  • Hyundai Sonata -2011- SE Stock Bluetooth
[edit] Infinity
  • Infinity FX37 -2010-
[edit] Land Rover
  • Land Rover Discovery 3 -2007-
[edit] Lexus
  • IS 220d -2011-
[edit] Mahindra and Mahindra

XUV 5OO (Only phone book Not call logs and SMS)

[edit] Mercedes
  • Mercedes S-class W 221 provided with entertainment/dialog system (standard equipment)
  • Mercedes E-class > 09/2010- Audio 50 APS
  • Mercedes E-class > 09/2010- Audio 20
  • Mercedes C-class > 03/2011- all
  • Mercedes GLK- class >09/2010- Audio 50 APS and Audio 20
[edit] MINI
  • MINI -2010- (R55/R56/R57)
[edit] Nissan
  • 370Z -2011- HD-Navi
[edit] Opel
  • Insignia -2009- DVD800 (Same as Vauxhall)
  • Zafira B -2010- CD 30 MP3
[edit] Peugeot
  • Peugeot 207 GTI 2010
  • Peugeot 307 (2007) - Default RD4 Audio Equipment
  • Peugeot 3008 - Built-In NAV Carkit
  • Peugeot 5008 -2010- Connect Nav carkit
  • Peugeot 407SW 2008
  • Peugeot 208 active eHDi 2012
[edit] Renault
  • Renault Megane 3 CoupĂ© / Hatchback - 3D Sound by Arkamys
  • Renault Scenic XMOD Live (2012)
[edit] SAAB
  • SAAB 9-3 -2011- with built-in TEL4
[edit] Seat
  • Seat Exeo -2009-
[edit] Skoda
  • Skoda Oktavia -2010-
  • Skoda Octavia -2010- with built-in "Bolero" radio/CD player and BT car kit
  • Skoda Oktavia 04.2008 does not work with latest instructions
  • Skoda Octavia 06.2010 mit Amundsen und Skoda BT (nur Phonebook funktioniert good)
  • Skoda Superb -2011- with built-in "Columbus" and BT car kit without rSAP
[edit] Toyota
  • Toyota Prius MY -2010-
[edit] Vauxhall
  • Vauxhall (Model unknown)
  • Vauxhall (Insignia - DVD 800 Navi)
[edit] Volvo
  • Volvo S60 -2011- (BT version 5.00.17H)
  • Volvo V60 -2011- (BT version 5.00.17H)
  • Volvo XC60 2011- (BT version 5.00.17Q - pair again after installation deb-files)
  • Volvo XC60 2012- (BT version 5.00.17Q - pair again after installation deb-files)
[edit] VW
  • VW Passat -2008- with RNS 300 and Bluetooth Touch Adapter
  • VW Golf -2011- with 9ZB Bluetooth and RNS-510 navigation
  • VW Golf Variant -2008- with RNS 300 and Bluetooth Touch Adapter
  • VW Golf -2012- TDI with RNS 315 navigation (tech package build option in US)
  • VW New Beetle 2012 - TSI with RNS 315 navigation (EU/The Netherlands)

[edit] Stand alone devices:

[edit] Alpine
  • Alpine CDE-103BT (has an inbuilt Parrot module)
  • Alpine CDA-137BTi (has an inbuilt Parrot Bluetooth Plus module) (FW 1.14) (no PB sync over PBAP, use IrMC!)
[edit] Blaupunkt
  • Blaupunkt Hamburg MP68
[edit] Bury
  • Bury AD9060
  • Bury CC9060 plus
  • Bury CC9056
[edit] Garmin
  • Garmin Nuvi 715
  • Garmin Nuvi 265w
  • Garmin Zumo 660
[edit] JVC
  • JVC KD-R811
[edit] Kenwood
  • Kenwood DNX6140
  • Kenwood DNX9960
  • Kenwood HD942U (with KCA-BT200 bluetooth module)
  • Kenwood KDC-BT50U (upgrade Kenwood-BT-Firmware to 3.30.4 for more reliability)
[edit] Navigon
  • Navigon 8410
[edit] Nokia
  • Nokia CK-15W
[edit] Parrot
  • Parrot MKi9000 v1.70
  • Parrot MKi9100
  • Parrot MKi9200
  • Parrot CK3100
  • Parrot CK3200LS
  • Parrot CK3200 LS-COLOR
  • Parrot LG 3200
  • Parrot LS 3200
  • Parrot Minikit Slim
[edit] Pioneer
  • Pioneer AVH-3200BT
  • Pioneer AVH-P8400BH
  • Pioneer DEH-6200BT
  • Pioneer DEH-P7100BT
  • Pioneer DEH-7300BT
  • Pioneer MVH-8200BT
  • Pioneer AVH-X5800DAB
[edit] Sony
  • Sony MEX-BT3900U
  • Sony DSX-S300BTX

[edit] Via IrMC

[edit] Built-In Carkits:

  • Citroen C4 hatch 2010
  • Citroen C4 picasso
  • Renault Megane Scenic 2010

[edit] Stand alone devices:

  • Alpine CDA-137BTi (has an inbuilt Parrot Bluetooth Plus module) (FW 1.14) (no PB sync over PBAP, use IrMC!)
  • Kenwood DNX6140
  • Parrot MK6000
  • Supertooth Voice