| layout | default |
|---|
AOSP with BlueZ 5 integrated as replacement for default Bluedroid Bluetooth stack.
This project is an example on how BlueZ 5 for Android can be integrated with AOSP project.
Supported Android versions:
- 5.0 (
lollipopbranch) - 4.4.4 (
kitkatbranch)
- Nexus 4 (
makotarget) - Nexus 7 2013 (
flotarget) - Nexus 7 2013 LTE (
debtarget) - Nexus 5 (
hammerheadtarget)
Provided instructions are for Android 5.0 (Lollipop). For Android 4.4 (KitKat) use
kitkatbranch for repo andandroid-msm-<target>-3.4-kitkat-mr2for kernel.
repo init -u https://github.com/bluez-android/aosp_platform_manifest.git -b lollipop
repo syncAdditional binary drivers are required to boot AOSP on Nexus devices. Those require accepting EULA and can be downloaded from https://developers.google.com/android/nexus/drivers. Follow instructions for your supported device and Android version of choice and after unpacking place them in vendor folder of downloaded repo.
Replace
<target>with appropriate value depending on your device, see above.
source build/envsetup.sh
lunch aosp_<target>-userdebugmake -j8You can skip
-wto keep userdata and cache partitions content, i.e. in case you want just to upgrade software without erasing any data.
adb reboot bootloader
fastboot flashall -wBlueZ for Android provides prebuilt kernels for all supported devices. When building own kernel from MSM tree, following configuration is recommended in order for all features to work properly:
- enabled
Enable loadable modules support(CONFIG_MODULES) - enabled
Bluetooth subsystem support(CONFIG_BT) as module - enabled
802.1d Ethernet Bridging(CONFIG_BRIDGE) - backported
hid-genericdriver - backported
aes-cmaccrypto hash - Bluetooth subsystem built from backports (with RFCOMM and BNEP protocols support) recommended latest development release available from https://www.kernel.org/pub/linux/kernel/projects/backports/
- HCI SMD driver built with backports
To make things easier, we provide required modifications as patches available in misc repository and step-by-step instruction below to have own kernel binaries built.
### download misc repository
git clone https://github.com/bluez-android/misc.git
### download kernel
git clone https://android.googlesource.com/kernel/msm kernel-msm
cd kernel-msm
### prepare kernel sources
git checkout android-msm-"target"-3.4-lollipop-release
git am ../misc/patches-kernel/0001-hid-Backport-hid-generic-driver.patch
git am ../misc/patches-kernel/0002-crypto-add-CMAC-support-to-CryptoAPI.patch
git am ../misc/patches-kernel/0003-crypto-af_alg-properly-label-AF_ALG-socket.patch
### configure kernel
make ARCH=arm CROSS_COMPILE=arm-eabi- <target>_defconfig
scripts/config --enable CONFIG_MODULES
scripts/config --module CONFIG_BT
scripts/config --enable CONFIG_BRIDGE
scripts/config --enable CONFIG_CRYPTO_CMAC
scripts/config --enable CONFIG_CRYPTO_USER_API
scripts/config --enable CONFIG_CRYPTO_USER_API_HASH
scripts/config --enable CONFIG_CRYPTO_USER_API_SKCIPHER
make ARCH=arm CROSS_COMPILE=arm-eabi- oldnoconfig
### build kernel
make ARCH=arm CROSS_COMPILE=arm-eabi- -j8
cd ..
### unpack backports
tar xf backports-<yyyymmdd>.tar.xz
cd backports-<yyyymmdd>
### prepare backports sources
patch -p1 < ../misc/patches-backports/0001-Add-defconfig-bluetooth.patch
# (optional)
patch -p1 < ../misc/patches-backports/0002-Enable-6LOWPAN.patch
# (for Nexus 4 and Nexus 7)
patch -p1 < ../misc/patches-backports/0003-Add-HCI-SMD.patch
# (for Nexus 5)
patch -p1 < ../misc/patches-backports/0004-Add-HCI-H4.patch
patch -p1 < ../misc/patches-backports/0005-Workaround-for-msm-kernel-tree.patch
### configure backprots
make ARCH=arm CROSS_COMPILE=arm-eabi- KLIB_BUILD=../kernel-msm defconfig-bluetooth
### build backports
make ARCH=arm CROSS_COMPILE=arm-eabi- KLIB_BUILD=../kernel-msm -j8Finally, existing kernel should be replaced with kernel-msm/arch/arm/boot/zImage and modules/*.ko with corresponding files from backports-<yyyymmdd>/.
Google documentation on how to download and build AOSP: http://source.android.com/source/building.html
BlueZ documentation for BlueZ for Android: http://git.kernel.org/cgit/bluetooth/bluez.git/tree/android/README