]> git.ipfire.org Git - thirdparty/dracut.git/blame - modules.d/62bluetooth/module-setup.sh
feat(bluetooth): implement bluetooth support in initrd
[thirdparty/dracut.git] / modules.d / 62bluetooth / module-setup.sh
CommitLineData
64ee2a53
AA
1#!/bin/sh
2# This file is part of dracut.
3# SPDX-License-Identifier: GPL-2.0-or-later
4
5# Prerequisite check(s) for module.
6check() {
7 # If the binary(s) requirements are not fulfilled the module can't be installed
8 require_any_binary /usr/lib/bluetooth/bluetoothd /usr/libexec/bluetooth/bluetoothd || return 1
9 # Include by default if a Peripheral (0x500) is found of minor class:
10 # * Keyboard (0x40)
11 # * Keyboard/pointing (0xC0)
12 grep -qiE 'Class=0x[0-9a-f]{3}5[4c]0' /var/lib/bluetooth/*/*/info 2> /dev/null && return 0
13
14 return 255
15}
16
17# Module dependency requirements.
18depends() {
19 # This module has external dependencies on the systemd and dbus modules.
20 echo systemd dbus
21 # Return 0 to include the dependent modules in the initramfs.
22 return 0
23}
24
25installkernel() {
26 instmods bluetooth btrtl btintel btbcm bnep ath3k btusb rfcomm hidp
27 inst_multiple -o \
28 /usr/lib/firmware/ar3k/AthrBT* \
29 /usr/lib/firmware/ar3k/ramps* \
30 /usr/lib/firmware/ath3k-1.fw \
31 /usr/lib/firmware/BCM2033-MD.hex \
32 /usr/lib/firmware/bfubase.frm \
33 /usr/lib/firmware/BT3CPCC.bin \
34 /usr/lib/firmware/brcm/*.hcd \
35 /usr/lib/firmware/mediatek/mt7622pr2h.bin \
36 /usr/lib/firmware/qca/nvm* \
37 /usr/lib/firmware/qca/crnv* \
38 /usr/lib/firmware/qca/rampatch* \
39 /usr/lib/firmware/qca/crbtfw* \
40 /usr/lib/firmware/rtl_bt/* \
41 /usr/lib/firmware/intel/ibt* \
42 /usr/lib/firmware/ti-connectivity/TIInit_* \
43 /usr/lib/firmware/nokia/bcmfw.bin \
44 /usr/lib/firmware/nokia/ti1273.bin
45
46}
47
48# Install the required file(s) for the module in the initramfs.
49install() {
50 inst_multiple \
51 $(find /usr/libexec/bluetooth/bluetoothd /usr/lib/bluetooth/bluetoothd 2> /dev/null || :) \
52 "${systemdsystemunitdir}/bluetooth.target" \
53 "${systemdsystemunitdir}/bluetooth.service" \
54 bluetoothctl
55
56 if [[ $hostonly ]]; then
57 inst_multiple \
58 /etc/bluetooth/main.conf \
59 /etc/dbus-1/system.d/bluetooth.conf
60 fi
61
62 inst_multiple $(find /var/lib/bluetooth)
63
64 inst_rules 69-btattach-bcm.rules 60-persistent-input.rules
65
66 sed -i -e \
67 '/^\[Unit\]/aDefaultDependencies=no\
68 Conflicts=shutdown.target\
69 Before=shutdown.target\
70 After=dbus.service' \
71 "${initdir}/${systemdsystemunitdir}/bluetooth.service"
72
73 $SYSTEMCTL -q --root "$initdir" enable bluetooth.service
74}