diff --git a/packages/linux-firmware/rockchip-firmware/package.mk b/packages/linux-firmware/rockchip-firmware/package.mk index 81de2d0b27..e4a4e51f06 100644 --- a/packages/linux-firmware/rockchip-firmware/package.mk +++ b/packages/linux-firmware/rockchip-firmware/package.mk @@ -14,6 +14,9 @@ PKG_LONGDESC="rockchip firmware" PKG_TOOLCHAIN="manual" makeinstall_target() { + mkdir -p $INSTALL/usr/lib/libreelec + cp $PKG_DIR/scripts/* $INSTALL/usr/lib/libreelec + mkdir -p $INSTALL/usr/bin cp -v $(get_build_dir rkbin)/firmware/bin/rtk_hciattach $INSTALL/usr/bin diff --git a/packages/linux-firmware/rockchip-firmware/scripts/hciattach-realtek-config b/packages/linux-firmware/rockchip-firmware/scripts/hciattach-realtek-config new file mode 100755 index 0000000000..33985cc96d --- /dev/null +++ b/packages/linux-firmware/rockchip-firmware/scripts/hciattach-realtek-config @@ -0,0 +1,17 @@ +#!/bin/sh + +# SPDX-License-Identifier: GPL-2.0-or-later +# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv) + +if [ "$(cat /sys/firmware/devicetree/base/model)" = "Rockchip RK3328 TRN9" ]; then + cp -f /usr/lib/kernel-overlays/base/lib/firmware/rtlbt/rtl8723b_config_noflow /var/lib/firmware/rtlbt/rtl8723b_config + + # temporarily disable bluetooth unless bootargs contains bluetooth + BOOTARGS=$(cat /sys/firmware/devicetree/base/chosen/bootargs) && [ "$BOOTARGS" = "${BOOTARGS/bluetooth/}" ] && exit 1 +fi + +if [ -d /var/lib/firmware/updates/rtlbt ]; then + cp -f /var/lib/firmware/updates/rtlbt/* /var/lib/firmware/rtlbt +fi + +exit 0 diff --git a/packages/linux-firmware/rockchip-firmware/system.d/hciattach-realtek.service b/packages/linux-firmware/rockchip-firmware/system.d/hciattach-realtek.service index 9e1d88a24b..733a4ab238 100644 --- a/packages/linux-firmware/rockchip-firmware/system.d/hciattach-realtek.service +++ b/packages/linux-firmware/rockchip-firmware/system.d/hciattach-realtek.service @@ -6,6 +6,7 @@ After=dev-ttyS0.device [Service] Type=simple +ExecStartPre=/usr/lib/libreelec/hciattach-realtek-config ExecStartPre=/usr/sbin/rfkill unblock bluetooth ExecStart=/usr/bin/rtk_hciattach -n -s 115200 ttyS0 rtk_h5 ExecStopPost=/usr/sbin/rfkill block bluetooth diff --git a/packages/linux-firmware/rockchip-firmware/udev.d/80-rockchip-firmware.rules b/packages/linux-firmware/rockchip-firmware/udev.d/80-rockchip-firmware.rules index 29ad2a944b..95e5d78d9b 100644 --- a/packages/linux-firmware/rockchip-firmware/udev.d/80-rockchip-firmware.rules +++ b/packages/linux-firmware/rockchip-firmware/udev.d/80-rockchip-firmware.rules @@ -5,8 +5,22 @@ ACTION!="add", GOTO="end" SUBSYSTEMS=="sdio", ATTRS{vendor}=="0x024c", ATTRS{device}=="0xb723", \ TAG+="systemd", ENV{SYSTEMD_WANTS}+="hciattach-realtek.service" +SUBSYSTEMS=="sdio", ATTRS{vendor}=="0x024c", ATTRS{device}=="0x8753", \ + TAG+="systemd", ENV{SYSTEMD_WANTS}+="hciattach-realtek.service" SUBSYSTEMS=="sdio", ATTRS{vendor}=="0x024c", ATTRS{device}=="0x0626", \ TAG+="systemd", ENV{SYSTEMD_WANTS}+="hciattach-realtek.service" +SUBSYSTEMS=="sdio", ATTRS{vendor}=="0x024c", ATTRS{device}=="0x0624", \ + TAG+="systemd", ENV{SYSTEMD_WANTS}+="hciattach-realtek.service" +SUBSYSTEMS=="sdio", ATTRS{vendor}=="0x024c", ATTRS{device}=="0x0623", \ + TAG+="systemd", ENV{SYSTEMD_WANTS}+="hciattach-realtek.service" +SUBSYSTEMS=="sdio", ATTRS{vendor}=="0x024c", ATTRS{device}=="0x0524", \ + TAG+="systemd", ENV{SYSTEMD_WANTS}+="hciattach-realtek.service" +SUBSYSTEMS=="sdio", ATTRS{vendor}=="0x024c", ATTRS{device}=="0x0523", \ + TAG+="systemd", ENV{SYSTEMD_WANTS}+="hciattach-realtek.service" +SUBSYSTEMS=="sdio", ATTRS{vendor}=="0x024c", ATTRS{device}=="0x0241", \ + TAG+="systemd", ENV{SYSTEMD_WANTS}+="hciattach-realtek.service" +SUBSYSTEMS=="sdio", ATTRS{vendor}=="0x024c", ATTRS{device}=="0x0240", \ + TAG+="systemd", ENV{SYSTEMD_WANTS}+="hciattach-realtek.service" SUBSYSTEMS=="sdio", ATTRS{vendor}=="0x02d0", ATTRS{device}=="0x4356", \ TAG+="systemd", ENV{SYSTEMD_WANTS}+="hciattach@bcm43xx.service" LABEL="end"