1. 搭建蓝牙开发环境
任务说明
本案例目标为搭建一套可实际编译并运行蓝牙示例的本地开发环境,并完成可用性验证。考虑到不同平台工具链差异较大,这里以 Ubuntu 22.04 LTS + BlueZ + Zephyr RTOS 为主线(这也是当前嵌入式蓝牙开发最常用的组合),Android SDK 部分仅给出最小安装与验证命令。完成本案例后,你将拥有一个能编译 Zephyr 蓝牙示例、并能通过 BlueZ 与真实蓝牙适配器交互的环境。
1. 系统依赖与基础工具
首先更新系统并安装编译 Zephyr 所需的依赖包:
sudo apt update
sudo apt install -y git cmake ninja-build gperf \
ccache dfu-util device-tree-compiler wget \
python3-dev python3-pip python3-setuptools python3-tk \
xz-utils file make gcc gcc-multilib g++-multilib \
libsdl2-dev libmagic1
2. 安装 Zephyr SDK 与工具链
Zephyr 使用自定义的 SDK(包含交叉编译器)。安装 west 工具并获取 Zephyr 源码:
# 安装 west
pip3 install --user west
echo 'export PATH=~/.local/bin:"$PATH"' >> ~/.bashrc
source ~/.bashrc
# 初始化 Zephyr 工作目录(以 ~/zephyrproject 为例)
mkdir ~/zephyrproject && cd ~/zephyrproject
west init
west update
下载并安装 Zephyr SDK(以 v0.16.5-1 为例,其他版本请参考官方文档):
cd ~
wget https://github.com/zephyrproject-rtos/sdk-ng/releases/download/v0.16.5-1/zephyr-sdk-0.16.5-1_linux-x86_64.tar.xz
tar xf zephyr-sdk-0.16.5-1_linux-x86_64.tar.xz
cd zephyr-sdk-0.16.5-1
./setup.sh -t all -h ~/zephyr-sdk-0.16.5-1
sudo cp ~/zephyr-sdk-0.16.5-1/sysroots/x86_64-pokysdk-linux/usr/share/openocd/contrib/60-openocd.rules /etc/udev/rules.d/
sudo udevadm control --reload-rules
在 ~/.bashrc 中追加环境变量:
export ZEPHYR_TOOLCHAIN_VARIANT=zephyr
export ZEPHYR_SDK_INSTALL_DIR=~/zephyr-sdk-0.16.5-1
export ZEPHYR_BASE=~/zephyrproject/zephyr
source ~/zephyrproject/zephyr/zephyr-env.sh
3. 安装与配置 BlueZ
Ubuntu 自带 BlueZ,但版本可能较旧。为获得完整 BT 5.4 支持,建议从源码编译:
sudo apt install -y libdbus-1-dev libglib2.0-dev libudev-dev libical-dev libreadline-dev
cd ~
git clone https://github.com/bluez/bluez.git
cd bluez
./bootstrap-configure --disable-android --disable-mesh
make -j$(nproc)
sudo make install
启动蓝牙服务并验证:
sudo systemctl unmask bluetooth
sudo systemctl enable bluetooth
sudo systemctl restart bluetooth
bluetoothd --version # 预期输出:5.xx(或更高)
4. 最小 Android SDK 安装(可选)
若需进行 Android 蓝牙开发,仅安装命令行工具即可:
cd ~
wget https://dl.google.com/android/repository/commandlinetools-linux-11076708_latest.zip
unzip commandlinetools-linux-11076708_latest.zip -d android-sdk
cd android-sdk/cmdline-tools
mv tools latest
export ANDROID_HOME=~/android-sdk
export PATH=$ANDROID_HOME/cmdline-tools/latest/bin:$PATH
sdkmanager --install "platform-tools" "platforms;android-34"
5. 环境验证
完成以上步骤后,执行以下验证流程:
# 验证 Zephyr 编译环境
cd ~/zephyrproject/zephyr
west build -b qemu_cortex_m3 samples/bluetooth/beacon -d /tmp/beacon_build
若编译成功,/tmp/beacon_build/zephyr/zephyr.elf 文件将存在。接着验证 BlueZ 能否识别蓝牙适配器:
hciconfig -a # 应列出 hci0 及适配器信息
最后确认 Android SDK 可用:
adb --version # 预期输出 Android Debug Bridge 版本信息
6. 判定标准
满足以下条件即视为环境搭建成功:
west build命令以 exit code 0 结束,且生成zephyr.elf文件;hciconfig -a能列出至少一个蓝牙接口(hci0);adb --version能正常输出版本号。
7. 常见问题排查
若 west build 报错找不到 SDK,请确认 ZEPHYR_SDK_INSTALL_DIR 路径正确且已执行 source ~/.bashrc。若 hciconfig 无输出,检查蓝牙适配器是否被识别(lsusb 查看 USB 设备)以及内核模块是否加载(sudo modprobe btusb)。Android SDK 若提示 license 未接受,执行 sdkmanager --licenses 并全部接受即可。