[Buildroot] [PATCH] rpi-bt-firmware: new package

Martin Bark martin at barkynet.com
Tue Mar 7 10:34:02 UTC 2017


 Baruch Siach,

On 1 February 2017 at 13:23, Baruch Siach <baruch at tkos.co.il> wrote:

> Add firmware file for the Raspberry Pi 3 Bluetooth module.
>
> Note that to successfully download the firmware bluez5_utils needs a
> patch[1].
>
> [1] http://www.spinics.net/lists/linux-bluetooth/msg69470.html


This seems a minor patch, is it safe it just add it to blue5_utils?


>
>
> Signed-off-by: Baruch Siach <baruch at tkos.co.il>
> ---
>  package/Config.in                          |  1 +
>  package/rpi-bt-firmware/Config.in          |  7 +++++++
>  package/rpi-bt-firmware/rpi-bt-firmware.mk | 21 +++++++++++++++++++++
>  3 files changed, 29 insertions(+)
>  create mode 100644 package/rpi-bt-firmware/Config.in
>  create mode 100644 package/rpi-bt-firmware/rpi-bt-firmware.mk
>
> diff --git a/package/Config.in b/package/Config.in
> index 44aaf0887ede..8ad7d27e9de0 100644
> --- a/package/Config.in
> +++ b/package/Config.in
> @@ -336,6 +336,7 @@ menu "Firmware"
>         source "package/b43-firmware/Config.in"
>         source "package/linux-firmware/Config.in"
>         source "package/rpi-firmware/Config.in"
> +       source "package/rpi-bt-firmware/Config.in"
>         source "package/sunxi-boards/Config.in"
>         source "package/ts4900-fpga/Config.in"
>         source "package/ux500-firmware/Config.in"
> diff --git a/package/rpi-bt-firmware/Config.in b/package/rpi-bt-firmware/
> Config.in
> new file mode 100644
> index 000000000000..366ce9196941
> --- /dev/null
> +++ b/package/rpi-bt-firmware/Config.in
> @@ -0,0 +1,7 @@
> +config BR2_PACKAGE_RPI_BT_FIRMWARE
> +       bool "rpi-bt-firmware"
> +       depends on BR2_arm || BR2_aarch64
> +       help
> +         Raspberry Pi 3 Broadcom BCM43438 Bluetooth module firmware.
>

I think this will also be needed on the raspberry pi zero w so might be
worth updating the comment.


> +
> +         https://aur.archlinux.org/packages/pi-bluetooth
> diff --git a/package/rpi-bt-firmware/rpi-bt-firmware.mk
> b/package/rpi-bt-firmware/rpi-bt-firmware.mk
> new file mode 100644
> index 000000000000..255da1926211
> --- /dev/null
> +++ b/package/rpi-bt-firmware/rpi-bt-firmware.mk
> @@ -0,0 +1,21 @@
> +###########################################################
> #####################
> +#
> +# rpi-bt-firmware
> +#
> +###########################################################
> #####################
> +
> +RPI_BT_FIRMWARE_VERSION = a439f892bf549ddfefa9ba7ad1999cc515f233bf
> +RPI_BT_FIRMWARE_SITE = https://aur.archlinux.org/pi-bluetooth.git


Is aur a good place to pull this from? Hopefully one day BCM43430A1.hcd
will make it's way into linux-firmware but until then it seems like
raspbian is the source of this file so i think it's better to get it from
them.


>
> +RPI_BT_FIRMWARE_SITE_METHOD = git
> +RPI_BT_FIRMWARE_LICENSE = PROPRIETARY
> +RPI_BT_FIRMWARE_LICENSE_FILES = LICENCE.broadcom_bcm43xx
> +
> +# The BlueZ hciattach utility looks for firmware in /etc/firmware. Add a
> +# compatibility symlink.
> +define RPI_BT_FIRMWARE_INSTALL_TARGET_CMDS
> +       ln -sf ../lib/firmware $(TARGET_DIR)/etc/firmware

+       $(INSTALL) -D -m 0644 $(@D)/BCM43430A1.hcd \
> +               $(TARGET_DIR)/lib/firmware/BCM43430A1.hcd
>

Given you have to patch hciattach_bcm43xx.c to use this firmware why not
also correct the path to the firmware? Assuming BCM43430A1.hcd ends up in
linux-firmware then it would reside in /lib/firmware/brcm.  If you patch
the correct path to BCM43430A1.hcd then there is no need for the symlink.


> +endef
> +
> +$(eval $(generic-package))
>


So i was thinking something more like this where we get the firmware from
the raspbian package. what do you think?

RPI_BT_FIRMWARE_VERSION = 1.2
RPI_BT_FIRMWARE_SOURCE=bluez-firmware_$(RPI_BT_FIRMWARE_VERSION).orig.tar.gz
RPI_BT_FIRMWARE_SITE =
https://archive.raspberrypi.org/debian/pool/main/b/bluez-firmware
RPI_BT_FIRMWARE_EXTRA_DOWNLOADS =
bluez-firmware_$(RPI_BT_FIRMWARE_VERSION)-3+rpi1.debian.tar.xz
RPI_BT_FIRMWARE_LICENSE = Proprietary
RPI_BT_FIRMWARE_LICENSE_FILES = broadcom/BCM-LEGAL.txt

# Extract the Debian tarball inside the sources
define RPI_BT_FIRMWARE_DEBIAN_EXTRACT
        $(call suitable-extractor,$(notdir
$(RPI_BT_FIRMWARE_EXTRA_DOWNLOADS))) \
                $(DL_DIR)/$(notdir $(RPI_BT_FIRMWARE_EXTRA_DOWNLOADS)) | \
                $(TAR) -C $(@D) $(TAR_OPTIONS) -
endef
RPI_BT_FIRMWARE_POST_EXTRACT_HOOKS += RPI_BT_FIRMWARE_DEBIAN_EXTRACT

define RPI_BT_FIRMWARE_INSTALL_TARGET_CMDS
$(INSTALL) -D -m 0644 $(@D)/broadcom/BCM43430A1.hcd
$(TARGET_DIR)/lib/firmware/brcm/BCM43430A1.hcd
endef



Finally for this firmware to be useful don't we also need sysv and systemd
scripts to call hciattach?

Thanks

Martin


--
> 2.11.0
>
> _______________________________________________
> buildroot mailing list
> buildroot at busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.busybox.net/pipermail/buildroot/attachments/20170307/e6299b20/attachment.html>


More information about the buildroot mailing list