diff mbox

rpi-bt-firmware: new package

Message ID 094f74654295373c7cadd47044cbcfb9a80d8c87.1489093234.git.baruch@tkos.co.il
State Changes Requested
Headers show

Commit Message

Baruch Siach March 9, 2017, 9 p.m. UTC
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

Signed-off-by: Baruch Siach <baruch@tkos.co.il>
---
v2: mention RPi Zero W in the commit log (Martin Bark)
---
 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

Comments

Thomas Petazzoni March 19, 2017, 9 p.m. UTC | #1
Hello,

On Thu,  9 Mar 2017 23:00:34 +0200, Baruch Siach 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

Wonderful patch :)

> 
> Signed-off-by: Baruch Siach <baruch@tkos.co.il>

I think the name of the package is wrong, it shouldn't be
rpi-bt-firmware. Indeed, it has nothing to do with the RPi itself, but
with the WiFi chip. And other boards, such as
http://www.armadeus.org/wiki/index.php?title=OPOS6UL, use a WiFi chip
that need the same firmware. See
http://www.armadeus.org/wiki/index.php?title=Bluetooth#OPOS6UL where
they tell to use exactly that BCM43430A1.hcd firmware.

So perhaps the package should be bcrm-43430-firmware or something along
those lines.


> +RPI_BT_FIRMWARE_VERSION = a439f892bf549ddfefa9ba7ad1999cc515f233bf
> +RPI_BT_FIRMWARE_SITE = https://aur.archlinux.org/pi-bluetooth.git

Is there a better upstream than this? I found
https://github.com/varigit/bcm_4343w_fw but I'm not sure it really
qualifies as "better".

Thanks,

Thomas
Baruch Siach March 20, 2017, 9:30 p.m. UTC | #2
Hi Thomas,

On Sun, Mar 19, 2017 at 10:00:43PM +0100, Thomas Petazzoni wrote:
> On Thu,  9 Mar 2017 23:00:34 +0200, Baruch Siach 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
> 
> Wonderful patch :)
> 
> > Signed-off-by: Baruch Siach <baruch@tkos.co.il>
> 
> I think the name of the package is wrong, it shouldn't be
> rpi-bt-firmware. Indeed, it has nothing to do with the RPi itself, but
> with the WiFi chip. And other boards, such as
> http://www.armadeus.org/wiki/index.php?title=OPOS6UL, use a WiFi chip
> that need the same firmware. See
> http://www.armadeus.org/wiki/index.php?title=Bluetooth#OPOS6UL where
> they tell to use exactly that BCM43430A1.hcd firmware.

Thanks for the link.

Do you have any indication that this is indeed the same file that RPi uses? My 
impression was that this firmware is tailored specifically for the RPi board, 
but I don't know for sure. That fact that Broadcom licenses the file may 
indicate that this is the same one. But ...

> So perhaps the package should be bcrm-43430-firmware or something along
> those lines.
> 
> 
> > +RPI_BT_FIRMWARE_VERSION = a439f892bf549ddfefa9ba7ad1999cc515f233bf
> > +RPI_BT_FIRMWARE_SITE = https://aur.archlinux.org/pi-bluetooth.git
> 
> Is there a better upstream than this? I found
> https://github.com/varigit/bcm_4343w_fw but I'm not sure it really
> qualifies as "better".

... this is not the same file:

ls -l bcm43430a1.hcd pi-bluetooth/BCM43430A1.hcd 
-rw-r--r-- 1 baruch baruch 14265 Mar 20 23:22 bcm43430a1.hcd
-rw-r--r-- 1 baruch baruch 35976 Jan 17 12:25 pi-bluetooth/BCM43430A1.hcd

I have not tested the Variscite firmware on the RPi, though. There is a small 
chance it might damage the hardware.

And since the git repo we use is named 'pi-bluetooth' maybe rpi-bt-firmware is 
not such a bad name after all.

barauch
Thomas Petazzoni March 20, 2017, 9:42 p.m. UTC | #3
Hello,

On Mon, 20 Mar 2017 23:30:39 +0200, Baruch Siach wrote:

> Do you have any indication that this is indeed the same file that RPi uses? My 
> impression was that this firmware is tailored specifically for the RPi board, 
> but I don't know for sure. That fact that Broadcom licenses the file may 
> indicate that this is the same one. But ...
> 
> > So perhaps the package should be bcrm-43430-firmware or something along
> > those lines.
> > 
> >   
> > > +RPI_BT_FIRMWARE_VERSION = a439f892bf549ddfefa9ba7ad1999cc515f233bf
> > > +RPI_BT_FIRMWARE_SITE = https://aur.archlinux.org/pi-bluetooth.git  
> > 
> > Is there a better upstream than this? I found
> > https://github.com/varigit/bcm_4343w_fw but I'm not sure it really
> > qualifies as "better".  
> 
> ... this is not the same file:
> 
> ls -l bcm43430a1.hcd pi-bluetooth/BCM43430A1.hcd 
> -rw-r--r-- 1 baruch baruch 14265 Mar 20 23:22 bcm43430a1.hcd
> -rw-r--r-- 1 baruch baruch 35976 Jan 17 12:25 pi-bluetooth/BCM43430A1.hcd

Gaah, what a mess. Why don't they just post it for integration in the
linux-firmware project? Why is it that RPi people always have to do
things the weird way?

> I have not tested the Variscite firmware on the RPi, though. There is a small 
> chance it might damage the hardware.
> 
> And since the git repo we use is named 'pi-bluetooth' maybe rpi-bt-firmware is 
> not such a bad name after all.

Yeah, indeed :-/

Can you resend the patch with just an extended explanation as to why
the package is named this way, and the fact that even though the
WiFi chip isn't RPi specific, the firmware might be.

Thomas
Baruch Siach March 21, 2017, 5:41 a.m. UTC | #4
Hi Thomas,

On Mon, Mar 20, 2017 at 10:42:06PM +0100, Thomas Petazzoni wrote:
> On Mon, 20 Mar 2017 23:30:39 +0200, Baruch Siach wrote:
> > Do you have any indication that this is indeed the same file that RPi 
> > uses? My impression was that this firmware is tailored specifically for 
> > the RPi board, but I don't know for sure. That fact that Broadcom licenses 
> > the file may indicate that this is the same one. But ...
> > 
> > > So perhaps the package should be bcrm-43430-firmware or something along
> > > those lines.
> > >   
> > > > +RPI_BT_FIRMWARE_VERSION = a439f892bf549ddfefa9ba7ad1999cc515f233bf
> > > > +RPI_BT_FIRMWARE_SITE = https://aur.archlinux.org/pi-bluetooth.git  
> > > 
> > > Is there a better upstream than this? I found
> > > https://github.com/varigit/bcm_4343w_fw but I'm not sure it really
> > > qualifies as "better".  
> > 
> > ... this is not the same file:
> > 
> > ls -l bcm43430a1.hcd pi-bluetooth/BCM43430A1.hcd 
> > -rw-r--r-- 1 baruch baruch 14265 Mar 20 23:22 bcm43430a1.hcd
> > -rw-r--r-- 1 baruch baruch 35976 Jan 17 12:25 pi-bluetooth/BCM43430A1.hcd
> 
> Gaah, what a mess. Why don't they just post it for integration in the
> linux-firmware project? Why is it that RPi people always have to do
> things the weird way?

I agree that the general attitude of the RPi community to the larger Open 
Source community resembles an island attitude to mainland. But in this case 
I'm not sure it is their fault. If indeed the firmware is board specific, 
putting it in linux-firmware under a "generic" name won't do much good I 
guess.

baruch
diff mbox

Patch

diff --git a/package/Config.in b/package/Config.in
index 9eb6a22f424a..f8413a3fa675 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -340,6 +340,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..5c6d608c232a
--- /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 and Zero W Broadcom BCM43438 Bluetooth module firmware.
+
+	  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
+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
+endef
+
+$(eval $(generic-package))