From 903346fe9876be467696c5c481ca8dce27a7724f Mon Sep 17 00:00:00 2001 From: Matthias Reichl Date: Sat, 1 Dec 2018 11:58:58 +0100 Subject: [PATCH 1/2] bluez: symlink /etc/firmware to /usr/lib/firmware This enables bluez/hciattach to use firmware files added by the kernel overlay system. Also move /etc/firmware symlink creation from linux to bluez, the linux kernel package shouldn't need to care about quirks needed by other packages. Signed-off-by: Matthias Reichl --- packages/linux/package.mk | 3 --- packages/network/bluez/package.mk | 3 +++ 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/linux/package.mk b/packages/linux/package.mk index b17be702c2..7eba1e703c 100644 --- a/packages/linux/package.mk +++ b/packages/linux/package.mk @@ -298,9 +298,6 @@ post_install() { mkdir -p $INSTALL/$(get_full_firmware_dir)/ ln -sf /storage/.config/firmware/ $INSTALL/$(get_full_firmware_dir)/updates - # bluez looks in /etc/firmware/ - ln -sf /$(get_full_firmware_dir)/ $INSTALL/etc/firmware - # regdb and signature is now loaded as firmware by 4.15+ if grep -q ^CONFIG_CFG80211_REQUIRE_SIGNED_REGDB= $PKG_BUILD/.config; then cp $(get_build_dir wireless-regdb)/regulatory.db{,.p7s} $INSTALL/$(get_full_firmware_dir) diff --git a/packages/network/bluez/package.mk b/packages/network/bluez/package.mk index 5f21f5d8dc..a208a1d3f3 100644 --- a/packages/network/bluez/package.mk +++ b/packages/network/bluez/package.mk @@ -59,6 +59,9 @@ post_makeinstall_target() { mkdir -p $INSTALL/usr/share/services cp -P $PKG_DIR/default.d/*.conf $INSTALL/usr/share/services + + # bluez looks in /etc/firmware/ + ln -sf /usr/lib/firmware $INSTALL/etc/firmware } post_install() { From 315421e634577b87d6cf2cee57edf367ac6868b6 Mon Sep 17 00:00:00 2001 From: Matthias Reichl Date: Sat, 1 Dec 2018 12:15:53 +0100 Subject: [PATCH 2/2] linux: move .config/firmware handling to kernel overlay system Creating an updates symlink to /storage/.config/firmware in the kernel firmware directory makes it impossible to add firmware overlays with an updates folder. Furthermore bluez/hciattach only looks for firmware files directly in the /lib/firmware directory and ignores the /lib/firmware/updates directory. So adding BT firmware via .config/firmware didn't work. Solve this by adding files from /storage/.config/firmware as the last step in kernel overlays setup so firmware files from there will show up directly under /lib/firmware and override other firmware files installed by the system and kernel overlays. Signed-off-by: Matthias Reichl --- packages/linux/package.mk | 1 - packages/sysutils/systemd/scripts/kernel-overlays-setup | 9 +++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/packages/linux/package.mk b/packages/linux/package.mk index 7eba1e703c..b4fbc68d5b 100644 --- a/packages/linux/package.mk +++ b/packages/linux/package.mk @@ -296,7 +296,6 @@ makeinstall_init() { post_install() { mkdir -p $INSTALL/$(get_full_firmware_dir)/ - ln -sf /storage/.config/firmware/ $INSTALL/$(get_full_firmware_dir)/updates # regdb and signature is now loaded as firmware by 4.15+ if grep -q ^CONFIG_CFG80211_REQUIRE_SIGNED_REGDB= $PKG_BUILD/.config; then diff --git a/packages/sysutils/systemd/scripts/kernel-overlays-setup b/packages/sysutils/systemd/scripts/kernel-overlays-setup index f9d1b27353..8b27956967 100755 --- a/packages/sysutils/systemd/scripts/kernel-overlays-setup +++ b/packages/sysutils/systemd/scripts/kernel-overlays-setup @@ -8,6 +8,7 @@ OVERLAY_CONFIG_DIR=/storage/.cache/kernel-overlays KVER=$(uname -r) MODULES_DIR="/var/lib/modules/${KVER}" FIRMWARE_DIR="/var/lib/firmware" +USER_FIRMWARE_DIR="/storage/.config/firmware" mkdir -p "${MODULES_DIR}" mkdir -p "${FIRMWARE_DIR}" @@ -73,4 +74,12 @@ if [ -d "${OVERLAY_CONFIG_DIR}" ] ; then fi fi +if [ -d "${USER_FIRMWARE_DIR}" -a -n "$(ls ${USER_FIRMWARE_DIR})" ] ; then + if cp -rfs "${USER_FIRMWARE_DIR}"/* "${FIRMWARE_DIR}" ; then + log "added firmware from ${USER_FIRMWARE_DIR}" + else + log "failed to add firmware from ${USER_FIRMWARE_DIR}" + fi +fi + log "done"