diff mbox series

Add missing Atheros firmware files

Message ID 20231004111107.366994-1-sergio.costas@canonical.com
State New
Headers show
Series Add missing Atheros firmware files | expand

Commit Message

Sergio Costas Rodriguez Oct. 4, 2023, 11:11 a.m. UTC
When using the Ubuntu Core 22 kernel in an Asus Zenbook UX22,
this error is shown in journalctl:

    usb 1-1-1: Direct firmware load for ar3k/AthrBT_0x01020200.dfu failed with error -2
    Bluetooth: Patch file not found ar3k/AthrBT_0x01020200.dfu
    Bluetooth: Loading patch file failed
    ath3k: probe of 1-1.1:1.0 failed with error -2

and, of course, bluetooth doesn't work.

This patch adds the missing files, and makes bluetooth work.

Fix https://bugs.launchpad.net/ubuntu/+bug/2025054

Signed-off-by: Sergio Costas Rodriguez <sergio.costas@canonical.com>
---
 trim-firmware | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)
diff mbox series

Patch

diff --git a/trim-firmware b/trim-firmware
index 148c964..e2fe269 100755
--- a/trim-firmware
+++ b/trim-firmware
@@ -68,6 +68,24 @@  if [ -e "${DESTDIR}"/firmware/regulatory.db ] ; then
 	cp "${DESTDIR}"/firmware/regulatory.* "${DESTDIR}"/firmware.new
 fi
 
+# Copy all AthrBT files, because they are needed for some devices
+# like the original Asus Zenbook, but only if the module ath3k.ko
+# is compiled
+if [[ -n `find "${DESTDIR}"/modules -name ath3k.ko` ]] ; then
+	if [ -d "${DESTDIR}"/firmware/ar3k ] ; then
+	    mkdir -p "${DESTDIR}"/firmware.new/ar3k
+		cp -a "${DESTDIR}"/firmware/ar3k/AthrBT_0x*.dfu "${DESTDIR}"/firmware.new/ar3k/
+		# the "ramps_" files are refered in the source code of the driver, so
+		# we must add them too.
+		cp -a "${DESTDIR}"/firmware/ar3k/ramps_0x*.dfu "${DESTDIR}"/firmware.new/ar3k/
+	else
+		# fail if the folder doesn't exist, because that means that this
+		# script requires a rework
+		echo "The firmware folder for the Atheros Bluetoot firmware doesn't exist".
+		exit 1
+	fi
+fi
+
 # Move kernel firmware files to the new firmware directory
 for d in "${DESTDIR}"/modules/* ; do
 	if [ -d "${DESTDIR}"/firmware/"${d##*/}" ] ; then