From 1317a894faa671c82193c1f18074d84db2cb9e35 Mon Sep 17 00:00:00 2001 From: toolmmy Date: Sat, 9 Apr 2016 13:53:24 +0200 Subject: [PATCH] bluez5: Add bluez5 support for brcm43438 on raspberrypi3. This patch adds the bluetooth support for the brcm43438 module on the raspberrypi3 by deploying the modules firmware and changing the targeting firmware path. In addition the brcm43438.service adds the automatically attaching (hciattach) for systemd environments. The following steps can be used to manually configure the brcm43438: root@raspberrypi3:~# hciattach /dev/ttyAMA0 bcm43xx-3wire bcm43xx_init Flash firmware /lib/firmware/brcm/BCM43430A1.hcd Set Controller UART speed to 3000000 bit/s Device setup complete root@raspberrypi3:~# hciconfig hci0: Type: BR/EDR Bus: UART BD Address: B8:27:EB:6C:85:BE ACL MTU: 1021:8 SCO MTU: 64:1 DOWN RX bytes:983 acl:0 sco:0 events:33 errors:0 TX bytes:887 acl:0 sco:0 commands:33 errors:0 root@raspberrypi3:~# /usr/lib/bluez5/bluetooth/bluetoothd -e -n -E root@raspberrypi3:~# bluetoothctl [NEW] Controller B8:27:EB:6C:85:BE raspberrypi3 [default] [bluetooth]# power on [CHG] Controller B8:27:EB:6C:85:BE Class: 0x400000 Changing power on succeeded [CHG] Controller B8:27:EB:6C:85:BE Powered: yes [bluetooth]# scan on Discovery started [CHG] Controller B8:27:EB:6C:85:BE Discovering: yes [NEW] Device 00:1C:05:FF:F9:F8 Nonin3230_501585326 NOTE: SERIAL_CONSOLE must configured to ttyS0 instead of ttyAMA0 (used by the brcm43438). See pending patch from Martin Bergek Signed-off-by: Tom Doehring --- ...01-bcm43xx-Add-bcm43xx-3wire-variant.patch | 26 ++++++++++++ ...-speed-must-be-reset-after-the-firmw.patch | 37 ++++++++++++++++++ ...ncrease-firmware-load-timeout-to-30s.patch | 25 ++++++++++++ ...-the-43xx-firmware-into-lib-firmware.patch | 25 ++++++++++++ .../bluez5/bluez5/BCM43430A1.hcd | Bin 0 -> 35976 bytes .../bluez5/bluez5/brcm43438.service | 12 ++++++ recipes-connectivity/bluez5/bluez5_%.bbappend | 26 ++++++++++++ 7 files changed, 151 insertions(+) create mode 100644 recipes-connectivity/bluez5/bluez5/0001-bcm43xx-Add-bcm43xx-3wire-variant.patch create mode 100644 recipes-connectivity/bluez5/bluez5/0002-bcm43xx-The-UART-speed-must-be-reset-after-the-firmw.patch create mode 100644 recipes-connectivity/bluez5/bluez5/0003-Increase-firmware-load-timeout-to-30s.patch create mode 100644 recipes-connectivity/bluez5/bluez5/0004-Move-the-43xx-firmware-into-lib-firmware.patch create mode 100644 recipes-connectivity/bluez5/bluez5/BCM43430A1.hcd create mode 100644 recipes-connectivity/bluez5/bluez5/brcm43438.service create mode 100644 recipes-connectivity/bluez5/bluez5_%.bbappend diff --git a/recipes-connectivity/bluez5/bluez5/0001-bcm43xx-Add-bcm43xx-3wire-variant.patch b/recipes-connectivity/bluez5/bluez5/0001-bcm43xx-Add-bcm43xx-3wire-variant.patch new file mode 100644 index 0000000..3bc02c4 --- /dev/null +++ b/recipes-connectivity/bluez5/bluez5/0001-bcm43xx-Add-bcm43xx-3wire-variant.patch @@ -0,0 +1,26 @@ +From b4f2b77472aeb967d3a7595e8a965785c7a37c87 Mon Sep 17 00:00:00 2001 +From: Phil Elwell +Date: Tue, 16 Feb 2016 16:40:46 +0000 +Subject: [PATCH 1/4] bcm43xx: Add bcm43xx-3wire variant + +--- + tools/hciattach.c | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/tools/hciattach.c b/tools/hciattach.c +index 59a76a7..5861d33 100644 +--- a/tools/hciattach.c ++++ b/tools/hciattach.c +@@ -1144,6 +1144,9 @@ struct uart_t uart[] = { + { "bcm43xx", 0x0000, 0x0000, HCI_UART_H4, 115200, 3000000, + FLOW_CTL, DISABLE_PM, NULL, bcm43xx, NULL }, + ++ { "bcm43xx-3wire", 0x0000, 0x0000, HCI_UART_3WIRE, 115200, 3000000, ++ 0, DISABLE_PM, NULL, bcm43xx, NULL }, ++ + { "ath3k", 0x0000, 0x0000, HCI_UART_ATH3K, 115200, 115200, + FLOW_CTL, DISABLE_PM, NULL, ath3k_ps, ath3k_pm }, + +-- +1.9.1 + diff --git a/recipes-connectivity/bluez5/bluez5/0002-bcm43xx-The-UART-speed-must-be-reset-after-the-firmw.patch b/recipes-connectivity/bluez5/bluez5/0002-bcm43xx-The-UART-speed-must-be-reset-after-the-firmw.patch new file mode 100644 index 0000000..5a0a434 --- /dev/null +++ b/recipes-connectivity/bluez5/bluez5/0002-bcm43xx-The-UART-speed-must-be-reset-after-the-firmw.patch @@ -0,0 +1,37 @@ +From e145c9621f976063e5c573db1f2053d906f63427 Mon Sep 17 00:00:00 2001 +From: Phil Elwell +Date: Tue, 16 Feb 2016 16:39:09 +0000 +Subject: [PATCH 2/4] bcm43xx: The UART speed must be reset after the firmware download + +--- + tools/hciattach_bcm43xx.c | 6 ++---- + 1 file changed, 2 insertions(+), 4 deletions(-) + +diff --git a/tools/hciattach_bcm43xx.c b/tools/hciattach_bcm43xx.c +index 81f38cb..0b792e0 100644 +--- a/tools/hciattach_bcm43xx.c ++++ b/tools/hciattach_bcm43xx.c +@@ -366,11 +366,8 @@ int bcm43xx_init(int fd, int def_speed, int speed, struct termios *ti, + return -1; + + if (bcm43xx_locate_patch(FIRMWARE_DIR, chip_name, fw_path)) { +- fprintf(stderr, "Patch not found, continue anyway\n"); ++ fprintf(stderr, "Patch not found for %s, continue anyway\n", chip_name); + } else { +- if (bcm43xx_set_speed(fd, ti, speed)) +- return -1; +- + if (bcm43xx_load_firmware(fd, fw_path)) + return -1; + +@@ -380,6 +377,7 @@ int bcm43xx_init(int fd, int def_speed, int speed, struct termios *ti, + return -1; + } + ++ sleep(1); + if (bcm43xx_reset(fd)) + return -1; + } +-- +1.9.1 + diff --git a/recipes-connectivity/bluez5/bluez5/0003-Increase-firmware-load-timeout-to-30s.patch b/recipes-connectivity/bluez5/bluez5/0003-Increase-firmware-load-timeout-to-30s.patch new file mode 100644 index 0000000..f9f09eb --- /dev/null +++ b/recipes-connectivity/bluez5/bluez5/0003-Increase-firmware-load-timeout-to-30s.patch @@ -0,0 +1,25 @@ +From d41dc2046dd08d8c95197f677e224506f5b39bdd Mon Sep 17 00:00:00 2001 +From: Phil Elwell +Date: Wed, 20 Jan 2016 16:00:37 +0000 +Subject: [PATCH 3/4] Increase firmware load timeout to 30s + +--- + tools/hciattach.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/tools/hciattach.c b/tools/hciattach.c +index 5861d33..4141796 100644 +--- a/tools/hciattach.c ++++ b/tools/hciattach.c +@@ -1293,7 +1293,7 @@ int main(int argc, char *argv[]) + { + struct uart_t *u = NULL; + int detach, printpid, raw, opt, i, n, ld, err; +- int to = 10; ++ int to = 30; + int init_speed = 0; + int send_break = 0; + pid_t pid; +-- +1.9.1 + diff --git a/recipes-connectivity/bluez5/bluez5/0004-Move-the-43xx-firmware-into-lib-firmware.patch b/recipes-connectivity/bluez5/bluez5/0004-Move-the-43xx-firmware-into-lib-firmware.patch new file mode 100644 index 0000000..dadce35 --- /dev/null +++ b/recipes-connectivity/bluez5/bluez5/0004-Move-the-43xx-firmware-into-lib-firmware.patch @@ -0,0 +1,25 @@ +From 76681284b0ea49852041fdb97a35175089a08781 Mon Sep 17 00:00:00 2001 +From: Phil Elwell +Date: Tue, 23 Feb 2016 17:52:29 +0000 +Subject: [PATCH 4/4] Move the 43xx firmware into /lib/firmware + +--- + tools/hciattach_bcm43xx.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/tools/hciattach_bcm43xx.c b/tools/hciattach_bcm43xx.c +index 0b792e0..207f668 100644 +--- a/tools/hciattach_bcm43xx.c ++++ b/tools/hciattach_bcm43xx.c +@@ -43,7 +43,7 @@ + #include "hciattach.h" + + #ifndef FIRMWARE_DIR +-#define FIRMWARE_DIR "/etc/firmware" ++#define FIRMWARE_DIR "/lib/firmware" + #endif + + #define FW_EXT ".hcd" +-- +1.9.1 + diff --git a/recipes-connectivity/bluez5/bluez5/BCM43430A1.hcd b/recipes-connectivity/bluez5/bluez5/BCM43430A1.hcd new file mode 100644 index 0000000000000000000000000000000000000000..162275ac0b18c7c29ec0589e00a303867d5a998f GIT binary patch literal 35976 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