From fda0ff63c019ffbfa29356b6b3f029abacad6d72 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alejandro=20Ojeda=20Guti=C3=A9rrez?= <63747287+alexojegu@users.noreply.github.com> Date: Mon, 1 Jul 2024 19:57:57 +0200 Subject: [PATCH] alarm/firmware-brcm43xx to 1.2 --- .../80-brcm43xx-firmware.rules | 19 +++++ alarm/firmware-brcm43xx/PKGBUILD | 62 ++++++---------- alarm/firmware-brcm43xx/bcm43xx | 4 -- .../brcm43xx-firmware-update | 70 ------------------- .../brcm43xx-firmware.service | 19 ----- .../brcm43xx-firmware@.service | 8 +++ alarm/firmware-brcm43xx/brcm43xx.service | 13 ---- 7 files changed, 50 insertions(+), 145 deletions(-) create mode 100644 alarm/firmware-brcm43xx/80-brcm43xx-firmware.rules delete mode 100644 alarm/firmware-brcm43xx/bcm43xx delete mode 100755 alarm/firmware-brcm43xx/brcm43xx-firmware-update delete mode 100644 alarm/firmware-brcm43xx/brcm43xx-firmware.service create mode 100644 alarm/firmware-brcm43xx/brcm43xx-firmware@.service delete mode 100644 alarm/firmware-brcm43xx/brcm43xx.service diff --git a/alarm/firmware-brcm43xx/80-brcm43xx-firmware.rules b/alarm/firmware-brcm43xx/80-brcm43xx-firmware.rules new file mode 100644 index 000000000..636473481 --- /dev/null +++ b/alarm/firmware-brcm43xx/80-brcm43xx-firmware.rules @@ -0,0 +1,19 @@ +################################################################################ +# udev rules file for loading brcmfmac_sdio-firmware +################################################################################ + +ACTION!="add", GOTO="end" +SUBSYSTEMS=="sdio", ATTRS{vendor}=="0x02d0", ATTRS{device}=="0x4329", GOTO="begin" +SUBSYSTEMS=="sdio", ATTRS{vendor}=="0x02d0", ATTRS{device}=="0x4330", GOTO="begin" +GOTO="end" +LABEL="begin" +### Broadcom bcm4330 bluetooth device +ATTRS{vendor}=="0x02d0", ATTRS{device}=="0x4330", \ + ENV{brcm_device}="bcm4330" +### Broadcom bcm4329 bluetooth device +ATTRS{vendor}=="0x02d0", ATTRS{device}=="0x4329", \ + ENV{brcm_device}="bcm4329" + +ENV{brcm_device}=="bcm43*", ACTION=="add", \ + TAG+="systemd", ENV{SYSTEMD_WANTS}+="brcm43xx-firmware@$env{brcm_device}.service" +LABEL="end" \ No newline at end of file diff --git a/alarm/firmware-brcm43xx/PKGBUILD b/alarm/firmware-brcm43xx/PKGBUILD index a8f500e98..7c6cc7f62 100644 --- a/alarm/firmware-brcm43xx/PKGBUILD +++ b/alarm/firmware-brcm43xx/PKGBUILD @@ -3,55 +3,39 @@ buildarch=4 pkgname=firmware-brcm43xx -pkgdesc="bluetooth firmware and firware loading utility for the bcm43xx bluetooth" -pkgver=1.1 -pkgrel=5 +pkgdesc="wifi and bluetooth firmware for the bcm43xx" +pkgver=1.2 +pkgrel=1 arch=('armv7h') -url="https://github.com/OpenBricks/openbricks/tree/master/packages/brcm-patchram-plus" +url="https://github.com/OpenBricks/openbricks/" license=('apache' 'custom') -depends=('bluez-utils') -backup=('etc/conf.d/bcm43xx') -source=('https://raw.githubusercontent.com/OpenBricks/openbricks/master/packages/firmware/firmware-wifi-brcm80211/config/bcm4329_nvram.txt' - 'https://raw.githubusercontent.com/OpenBricks/openbricks/master/packages/firmware/firmware-wifi-brcm80211/config/bcm4330_nvram.txt' - 'https://raw.githubusercontent.com/OpenBricks/openbricks/master/packages/firmware/firmware-wifi-brcm80211/config/bcm4330_nvram.txt' - 'https://github.com/OpenBricks/openbricks/raw/master/packages/net/brcm-patchram-plus/sources/bcm4329.hcd' - 'https://github.com/OpenBricks/openbricks/raw/master/packages/net/brcm-patchram-plus/sources/bcm4330.hcd' - 'https://raw.githubusercontent.com/OpenBricks/openbricks/master/packages/net/brcm-patchram-plus/sources/brcm_patchram_plus.c' - 'brcm43xx-firmware-update' - 'brcm43xx-firmware.service' - 'brcm43xx.service' - 'bcm43xx') +_commit=194b51d7f61cb05ec735c8afc9854beb692d0d6d +_url="https://raw.githubusercontent.com/OpenBricks/openbricks/$_commit/packages" +source=("$_url/firmware/firmware-wifi-brcm80211/config/bcm4329_nvram.txt" + "$_url/firmware/firmware-wifi-brcm80211/config/bcm4330_nvram.txt" + "$_url/net/brcm-patchram-plus/sources/bcm4329.hcd" + "$_url/net/brcm-patchram-plus/sources/bcm4330.hcd" + "$_url/net/brcm-patchram-plus/sources/brcm_patchram_plus.c" + '80-brcm43xx-firmware.rules' + 'brcm43xx-firmware@.service') md5sums=('bf01292eec17815baa68a83d3d7722ad' - '31a9a011ce24707ed3c1024616c9005e' '31a9a011ce24707ed3c1024616c9005e' 'ff27325602dc223203adfdd23a89844b' '8e32f9168aaa540467589c153129c57a' '627e9612337e5ef6027a87a79c491446' - 'c318d1d7cc65e89d5238e7c9ec0f4bfc' - 'a1bd492bdafced5b41abe4bdebbb07e2' - '00873c77c5c080e3a23f7c0853adbfeb' - 'f21bddcbe8c4e1dedaf31e2959b284d9') + 'b4ca6a6085eb1c2dd4560a15a178cf0e' + '943e67bcb139d37b9b62cec0004ace88') build() { - cd "${srcdir}/" - gcc -c -Wno-implicit-function-declaration brcm_patchram_plus.c -o brcm_patchram_plus + gcc -Wno-error=implicit-function-declaration brcm_patchram_plus.c -o brcm_patchram_plus } - package() { - cd "${srcdir}/" - mkdir -p ${pkgdir}/usr/lib/firmware/brcm - mkdir -p ${pkgdir}/usr/bin - mkdir -p ${pkgdir}/etc/conf.d - mkdir -p ${pkgdir}/usr/lib/systemd/scripts - install -D -m0644 bcm4329_nvram.txt "${pkgdir}/usr/lib/firmware/brcm/brcmfmac4329-sdio.txt" - install -D -m0644 bcm4330_nvram.txt "${pkgdir}/usr/lib/firmware/brcm/brcmfmac4330-sdio.txt" - install -D -m0644 bcm4329.hcd "${pkgdir}/usr/lib/firmware/brcm/bcm4329.hcd" - install -D -m0644 bcm4330.hcd "${pkgdir}/usr/lib/firmware/brcm/bcm4330.hcd" - install -D -m0755 brcm_patchram_plus "${pkgdir}/usr/bin/brcm_patchram_plus" - install -D -m0644 bcm43xx "${pkgdir}/etc/conf.d/bcm43xx" - install -D -m0644 brcm43xx.service "${pkgdir}/usr/lib/systemd/system/brcm43xx.service" - install -D -m0644 brcm43xx-firmware.service "${pkgdir}/usr/lib/systemd/system/brcm43xx-firmware.service" - install -D -m0755 brcm43xx-firmware-update "${pkgdir}/usr/lib/systemd/scripts/brcm43xx-firmware-update" + install -D -m0644 "${srcdir}/bcm4329_nvram.txt" "${pkgdir}/usr/lib/firmware/brcm/brcmfmac4329-sdio.txt" + install -D -m0644 "${srcdir}/bcm4330_nvram.txt" "${pkgdir}/usr/lib/firmware/brcm/brcmfmac4330-sdio.txt" + install -D -m0644 "${srcdir}/bcm4329.hcd" "${pkgdir}/usr/lib/firmware/brcm/bcm4329.hcd" + install -D -m0644 "${srcdir}/bcm4330.hcd" "${pkgdir}/usr/lib/firmware/brcm/bcm4330.hcd" + install -D -m0755 "${srcdir}/brcm_patchram_plus" "${pkgdir}/usr/bin/brcm_patchram_plus" + install -D -m0644 "${srcdir}/80-brcm43xx-firmware.rules" "${pkgdir}/usr/lib/udev/rules.d/80-brcm43xx-firmware.rules" + install -D -m0644 "${srcdir}/brcm43xx-firmware@.service" "${pkgdir}/usr/lib/systemd/system/brcm43xx-firmware@.service" } - diff --git a/alarm/firmware-brcm43xx/bcm43xx b/alarm/firmware-brcm43xx/bcm43xx deleted file mode 100644 index d8c74978c..000000000 --- a/alarm/firmware-brcm43xx/bcm43xx +++ /dev/null @@ -1,4 +0,0 @@ -MAC_ADDR= -HCD= -TTY= -OPTIONS= diff --git a/alarm/firmware-brcm43xx/brcm43xx-firmware-update b/alarm/firmware-brcm43xx/brcm43xx-firmware-update deleted file mode 100755 index 6a6456764..000000000 --- a/alarm/firmware-brcm43xx/brcm43xx-firmware-update +++ /dev/null @@ -1,70 +0,0 @@ -#!/bin/sh - -CACHE=/var/cache/brcm43xx-mac -if [ -z "$MAC_ADDR" ]; then - if [ ! -f "$CACHE" ]; then - echo 43:29:B1$(od -txC -An -N3 /dev/random|tr \ : | tr '[:lower:]' '[:upper:]') >"$CACHE" - fi - MAC_ADDR=`cat "$CACHE"` - echo "Warning: Using self generated MAC address! MAC_ADDR should be defined in /etc/conf.d/bcm43xx." -else - [ -f "$CACHE" ] && rm "$CACHE" -fi -OPTIONS="$OPTIONS --bd_addr $MAC_ADDR" - -# Find chip version -if [ -z "$HCD" ]; then - DEVS=($( cat /sys/class/mmc_host/mmc*/mmc?\:0001/mmc?\:0001:?/device )) - for DEV in "${DEVS[@]}"; do - if [ "${DEV:0:4}" = "0x43" ]; then - HCD="bcm${DEV:2}.hcd" - fi - done - if [ -z "$HCD" ]; then - echo "Failed: Unable to locate bluetooth device" - exit 1 - fi -fi -HCD_BASE=$(basename "$HCD") - -# Device specific options -[ "$HCD_BASE" = "bcm4330.hcd" ] && OPTIONS="--no2bytes --tosleep=50000 $OPTIONS" - -[ ! -e "$HCD" ] && HCD="/lib/firmware/brcm/${HCD_BASE}" -if [ ! -e "$HCD" ]; then - echo "Failed: $HCD does not exist." - exit 1 -fi - -# UART TTY can be different for each board -# FIXME: Possibly test each port with hciattach (-n)? -# For now, just use the highest port as it works for current boards -if [ -z "$TTY" ]; then - TTYS=($( ls -r1 /dev/ttymxc? )) - for t in "${TTYS[@]}" ; do - ttynum=${t:0-1} - if [ $ttynum -eq 0 ]; then - echo "Abort: UART ttymcx0 does not seem right." - exit 1 - else - TTY=$t - break - fi - done -fi - -[ ! -e "$TTY" ] && TTY="/dev/$(basename $TTY)" -if [ ! -e "$TTY" ]; then - echo "Failed: $TTY does not exist." - exit 1 -fi - -echo "Updating bluetooth firmware via $TTY from $HCD." -/usr/bin/brcm_patchram_plus --patchram $HCD --baudrate 3000000 --use_baudrate_for_download $TTY $OPTIONS - -# Create a symlink to TTY for hci service -if [ $? -eq 0 ]; then - ln -sr "$TTY" /dev/brcm43xx -else - exit 1 -fi diff --git a/alarm/firmware-brcm43xx/brcm43xx-firmware.service b/alarm/firmware-brcm43xx/brcm43xx-firmware.service deleted file mode 100644 index a9c1b0bea..000000000 --- a/alarm/firmware-brcm43xx/brcm43xx-firmware.service +++ /dev/null @@ -1,19 +0,0 @@ -[Unit] -Description=Broadcom 43xx firmware update -DefaultDependencies=no -Wants=local-fs.target -Conflicts=shutdown.target -After=systemd-modules-load.service local-fs.target -Before=sysinit.target shutdown.target -RefuseManualStart=yes -RefuseManualStop=yes - -[Service] -Type=oneshot -EnvironmentFile=-/etc/conf.d/bcm43xx -RemainAfterExit=yes -ExecStart=/usr/lib/systemd/scripts/brcm43xx-firmware-update -TimeoutSec=10 - -[Install] -WantedBy=sysinit.target diff --git a/alarm/firmware-brcm43xx/brcm43xx-firmware@.service b/alarm/firmware-brcm43xx/brcm43xx-firmware@.service new file mode 100644 index 000000000..a7fb11043 --- /dev/null +++ b/alarm/firmware-brcm43xx/brcm43xx-firmware@.service @@ -0,0 +1,8 @@ +[Unit] +Description=Broadcom sdio firmware update for %I +ConditionPathExists=/dev/ttymxc2 + +[Service] +Type=simple +RemainAfterExit=yes +ExecStart=/usr/bin/brcm_patchram_plus --patchram /lib/firmware/brcm/%I.hcd --baudrate 3000000 --use_baudrate_for_download /dev/ttymxc2 --enable_hci --no2bytes --tosleep=50000 \ No newline at end of file diff --git a/alarm/firmware-brcm43xx/brcm43xx.service b/alarm/firmware-brcm43xx/brcm43xx.service deleted file mode 100644 index 8d2ed7077..000000000 --- a/alarm/firmware-brcm43xx/brcm43xx.service +++ /dev/null @@ -1,13 +0,0 @@ -[Unit] -Description=Broadcom 43xx bluetooth HCI -Requires=brcm43xx-firmware.service -After=brcm43xx-firmware.service -Before=bluetooth.service -ConditionPathExists=/dev/brcm43xx - -[Service] -Type=simple -ExecStart=/usr/bin/btattach -B /dev/brcm43xx -P bcm -S 3000000 - -[Install] -WantedBy=bluetooth.target