mirror of
https://github.com/armbian/build
synced 2025-09-24 19:47:06 +07:00
bluetooth-hciattach: new generic extension to facilitate adding hciattach systemd service, given the correct params
This commit is contained in:
committed by
igorpecovnik
parent
7036b0492b
commit
a9cc0620ec
69
extensions/bluetooth-hciattach.sh
Normal file
69
extensions/bluetooth-hciattach.sh
Normal file
@@ -0,0 +1,69 @@
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
# Copyright (c) 2023 Ricardo Pardini <ricardo@pardini.net>
|
||||
# This file is a part of the Armbian Build Framework https://github.com/armbian/build/
|
||||
#
|
||||
|
||||
# Some boards needs a special treatment for bluetooth, running hciattach manually.
|
||||
# To use, enable_extension bluetooth-hciattach, and set BLUETOOTH_HCIATTACH_PARAMS and BLUETOOTH_HCIATTACH_RKFILL_NUM.
|
||||
|
||||
function extension_prepare_config__bluetooth_hciattach() {
|
||||
display_alert "${EXTENSION} ${BOARD}" "initializing config" "info"
|
||||
|
||||
# Bomb if BLUETOOTH_HCIATTACH_PARAMS is not set.
|
||||
if [[ -z "${BLUETOOTH_HCIATTACH_PARAMS}" ]]; then
|
||||
exit_with_error "${EXTENSION} ${BOARD} - BLUETOOTH_HCIATTACH_PARAMS is not set - please set in the board file."
|
||||
fi
|
||||
|
||||
# Default BLUETOOTH_HCIATTACH_RKFILL_NUM to 0 if not set.
|
||||
if [[ -z "${BLUETOOTH_HCIATTACH_RKFILL_NUM}" ]]; then
|
||||
declare -g BLUETOOTH_HCIATTACH_RKFILL_NUM=0
|
||||
fi
|
||||
}
|
||||
|
||||
# Add bluetooth packages to the image (not rootfs cache)
|
||||
function post_family_config__bluetooth_hciattach_add_bluetooth_packages() {
|
||||
display_alert "${EXTENSION} ${BOARD}" "adding bluetooth packages to image" "info"
|
||||
add_packages_to_image rfkill bluetooth bluez bluez-tools
|
||||
}
|
||||
|
||||
# Deploy the script and the systemd service in the BSP. It'll be enabled below in the image.
|
||||
function post_family_tweaks_bsp__bluetooth_hciattach_add_systemd_service() {
|
||||
display_alert "${EXTENSION} ${BOARD}" "adding bluetooth hciattach service to BSP" "info"
|
||||
: "${destination:?destination is not set}"
|
||||
|
||||
declare script_dir="/usr/local/sbin"
|
||||
run_host_command_logged mkdir -pv "${destination}${script_dir}"
|
||||
declare script_path="${script_dir}/bluetooth-hciattach.sh"
|
||||
|
||||
cat <<- BT_HCIATTACH_SCRIPT > "${destination}${script_path}"
|
||||
#!/bin/bash
|
||||
rfkill unblock ${BLUETOOTH_HCIATTACH_RKFILL_NUM}
|
||||
hciattach -n ${BLUETOOTH_HCIATTACH_PARAMS}
|
||||
BT_HCIATTACH_SCRIPT
|
||||
run_host_command_logged chmod -v +x "${destination}${script_path}" # Make it executable
|
||||
|
||||
cat <<- BT_HCIATTACH_SYSTEMD_SERVICE > "$destination"/lib/systemd/system/bluetooth-hciattach.service
|
||||
[Unit]
|
||||
Description=${BOARD} Bluetooth HCIAttach fix
|
||||
After=network.target
|
||||
StartLimitIntervalSec=0
|
||||
[Service]
|
||||
Type=simple
|
||||
ExecStart=${script_path}
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
BT_HCIATTACH_SYSTEMD_SERVICE
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
# Enable the service created in the BSP above.
|
||||
function post_family_tweaks__bluetooth_hciattach_enable_bt_service_in_image() {
|
||||
display_alert "${EXTENSION} ${BOARD}" "enabling bluetooth hciattach service in the image" "info"
|
||||
|
||||
chroot_sdcard systemctl --no-reload enable "bluetooth-hciattach.service"
|
||||
|
||||
return 0
|
||||
}
|
||||
Reference in New Issue
Block a user