Skip to contentSkip to conversation

add support for Bluetooth on MT7622 SoC

PATCH Superseded [email protected] 2 participants 18 messages May 15, 2018 – Jun 14, 2018

Subsystems (8)

v2 of 10 Superseded Latest is v10 →

lore
Share & tools
lore

[email protected]

author maintainer
#0 lore raw

v2 cover add support for Bluetooth on MT7622 SoC

From: Sean Wang <[email protected]>

v2 and changes since v1
- Dropped patches already being applied
- Rewirte the whole driver using btuart [1], and add slight extension of btuart to fit into btmtkuart driver. Beware that [1] is also pulled into one part of the series for avoiding any breakage when the patchset is being compiled.

[1] btuart

	https://www.spinics.net/lists/linux-bluetooth/msg74918.html

v1:

Hi,

This patchset introduces built-in Bluetooth support on MT7622 SoC. And, it should be simple to make an extension to support other MediaTek SoCs with adjusting a few of changes on the initialization sequence of the device.

Before the main driver is being introduced, a few of things about power-domain management should be re-worked for serdev core and MediaTek SCPSYS to allow the Bluetooth to properly power up.

Patch 2: add a generic way attaching power domain to serdev Patch 3 and 4: add cleanups with reuse APIs from Linux core Patch 5: fix a limitation about power enablement Bluetooth depends on Patch 1, 6 and 7: the major part of adding Bluetooth support to MT7622

Sean

Marcel Holtmann (1):
Bluetooth: Add new serdev based driver for UART attached controllers

Sean Wang (6):
dt-bindings: net: bluetooth: Add mediatek-bluetooth
serdev: add dev_pm_domain_attach|detach()
Bluetooth: Add new quirk for non-persistent setup settings
Bluetooth: Extend btuart driver for join more vendor devices
Bluetooth: mediatek: Add protocol support for MediaTek serial devices
MAINTAINERS: add an entry for MediaTek Bluetooth driver

 .../devicetree/bindings/net/mediatek-bluetooth.txt |  35 ++
 MAINTAINERS                                        |   8 +
 drivers/bluetooth/Kconfig                          |  23 +
 drivers/bluetooth/Makefile                         |   3 +
 drivers/bluetooth/btmtkuart.c                      | 383 +++++++++++++++
 drivers/bluetooth/btmtkuart.h                      | 119 +++++
 drivers/bluetooth/btuart.c                         | 527 +++++++++++++++++++++
 drivers/bluetooth/btuart.h                         |  30 ++
 drivers/tty/serdev/core.c                          |  14 +-
 include/net/bluetooth/hci.h                        |   9 +
 net/bluetooth/hci_core.c                           |   3 +-
 11 files changed, 1152 insertions(+), 2 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/net/mediatek-bluetooth.txt
 create mode 100644 drivers/bluetooth/btmtkuart.c
 create mode 100644 drivers/bluetooth/btmtkuart.h
 create mode 100644 drivers/bluetooth/btuart.c
 create mode 100644 drivers/bluetooth/btuart.h
Signature · 1 line
2.7.4
author maintainer
#1 lore raw

PATCH v2 1/7 dt-bindings: net: bluetooth: Add mediatek-bluetooth

From: Sean Wang <[email protected]>

Add binding document for a SoC built-in device using MediaTek protocol. Which could be found on MT7622 SoC or other similar MediaTek SoCs.

---
 .../devicetree/bindings/net/mediatek-bluetooth.txt | 35 ++++++++++++++++++++++
 1 file changed, 35 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/net/mediatek-bluetooth.txt
Documentation/devicetree/bindings/net/mediatek-bluetooth.txt new file +35 -0
new file mode 100644
index 0000000..1335429
@@ -0,0 +1,35 @@
+MediaTek SoC built-in Bluetooth Devices
+==================================
+
+This device is a serial attached device to BTIF device and thus it must be a
+child node of the serial node with BTIF. The dt-bindings details for BTIF
+device can be known via Documentation/devicetree/bindings/serial/8250.txt.
+
+Required properties:
+
+- compatible:	Must be one of
+		  "mediatek,mt7622-bluetooth"": for MT7622 SoC
+- clocks:	Should be the clock specifiers corresponding to the entry in
+		clock-names property.
+- clock-names:	Should contain "ref" entries.
+- power-domains: Phandle to the power domain that the device is part of
+
+Example:
+
+	btif: serial at 1100c000 {
+		compatible = "mediatek,mt7622-btif",
+			     "mediatek,mtk-btif";
+		reg = <0 0x1100c000 0 0x1000>;
+		interrupts = <GIC_SPI 90 IRQ_TYPE_LEVEL_LOW>;
+		clocks = <&pericfg CLK_PERI_BTIF_PD>;
+		clock-names = "main";
+		reg-shift = <2>;
+		reg-io-width = <4>;
+
+		bluetooth {
+			compatible = "mediatek,mt7622-bluetooth";
+			power-domains = <&scpsys MT7622_POWER_DOMAIN_WB>;
+			clocks = <&clk25m>;
+			clock-names = "ref";
+		};
+	};
Signature · 1 line
2.7.4
author maintainer
#2 lore raw

PATCH v2 2/7 serdev: add dev_pm_domain_attach|detach()

In reply to [email protected]

From: Sean Wang <[email protected]>

In order to open up the required power gate before any operation can be effectively performed over the serial bus between CPU and serdev, it's clearly essential to add common attach functions for PM domains to serdev at the probe phase.

Similarly, the relevant dettach function for the PM domains should be properly and reversely added at the remove phase.

Cc Rob Herring <[email protected]>
Cc Ulf Hansson <[email protected]>
Cc Greg Kroah-Hartman <[email protected]>
Cc Jiri Slaby <[email protected]>
Cc linux-serial at vger.kernel.org
---
 drivers/tty/serdev/core.c | 14 +++++++++++++-
 1 file changed, 13 insertions(+), 1 deletion(-)
drivers/tty/serdev/core.c +13 -1
index df93b72..c93d8ee 100644
@@ -13,6 +13,7 @@
 #include <linux/module.h>
 #include <linux/of.h>
 #include <linux/of_device.h>
+#include <linux/pm_domain.h>
 #include <linux/serdev.h>
 #include <linux/slab.h>
 
@@ -330,8 +331,16 @@ EXPORT_SYMBOL_GPL(serdev_device_set_tiocm);
 static int serdev_drv_probe(struct device *dev)
 {
 	const struct serdev_device_driver *sdrv = to_serdev_device_driver(dev->driver);
+	int ret;
+
+	ret = dev_pm_domain_attach(dev, true);
+	if (ret != -EPROBE_DEFER) {
+		ret = sdrv->probe(to_serdev_device(dev));
+		if (ret)
+			dev_pm_domain_detach(dev, true);
+	}
 
-	return sdrv->probe(to_serdev_device(dev));
+	return ret;
 }
 
 static int serdev_drv_remove(struct device *dev)
@@ -339,6 +348,9 @@ static int serdev_drv_remove(struct device *dev)
 	const struct serdev_device_driver *sdrv = to_serdev_device_driver(dev->driver);
 	if (sdrv->remove)
 		sdrv->remove(to_serdev_device(dev));
+
+	dev_pm_domain_detach(dev, true);
+
 	return 0;
 }
 
Signature · 1 line
2.7.4
author maintainer
#3 lore raw

PATCH v2 3/7 Bluetooth: Add new serdev based driver for UART attached controllers

In reply to [email protected]

From: Marcel Holtmann <[email protected]>

This is a from scratch written driver to run H:4 on serdev based system with a Bluetooth controller attached via an UART. It is currently tested on RPi3 and it has Broadcom integration. It is DT only and is missing GPIO and runtime power management integration. Also Apple or ACPI support is currently not added.

To integrate with controllers from Intel and Qualcomm, similar handling like with btusb.c has to be done. A simple abstraction for that has been provided to make it similar to hci_uart.

The goal is to run individual drivers on serdev capable systems so that we can retire hci_uart on these system and continue with a lot simpler and easier to maintain driver. It seems that hci_uart has too many race conditions due to handling TTY and line disciplines. And fixes for that are not really related to serdev based drivers. In a serdev only world it makes sense to remove any of the complex code.

---
 drivers/bluetooth/Kconfig  |  11 +
 drivers/bluetooth/Makefile |   1 +
 drivers/bluetooth/btuart.c | 506 +++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 518 insertions(+)
 create mode 100644 drivers/bluetooth/btuart.c
drivers/bluetooth/Kconfig +11 -0
index 010f5f5..6d69ac2 100644
@@ -74,6 +74,17 @@ config BT_HCIBTSDIO
 	  Say Y here to compile support for Bluetooth SDIO devices into the
 	  kernel or say M to compile it as module (btsdio).
 
+config BT_HCIBTUART
+	tristate "HCI UART driver"
+	depends on SERIAL_DEV_BUS
+	help
+	  Bluetooth HCI UART driver.
+	  This driver is required if you want to use Bluetooth device with
+	  UART interface.
+
+	  Say Y here to compile support for Bluetooth UART devices into the
+	  kernel or say M to compile it as module (btuart).
+
 config BT_HCIUART
 	tristate "HCI UART driver"
 	depends on SERIAL_DEV_BUS || !SERIAL_DEV_BUS
drivers/bluetooth/Makefile +1 -0
index ec16c55..60a19cb 100644
@@ -14,6 +14,7 @@ obj-$(CONFIG_BT_HCIBLUECARD)	+= bluecard_cs.o
 
 obj-$(CONFIG_BT_HCIBTUSB)	+= btusb.o
 obj-$(CONFIG_BT_HCIBTSDIO)	+= btsdio.o
+obj-$(CONFIG_BT_HCIBTUART)	+= btuart.o
 
 obj-$(CONFIG_BT_INTEL)		+= btintel.o
 obj-$(CONFIG_BT_ATH3K)		+= ath3k.o
drivers/bluetooth/btuart.c new file +506 -0

506 lines not on this page · raw message

Signature · 1 line
2.7.4
author maintainer
#4 lore raw

PATCH v2 4/7 Bluetooth: Add new quirk for non-persistent setup settings

In reply to [email protected]

From: Sean Wang <[email protected]>

Add a new quirk HCI_QUIRK_NON_PERSISTENT_SETUP allowing that a quirk that runs setup() after every open() and not just after the first open().

---
 include/net/bluetooth/hci.h | 9 +++++++++
 net/bluetooth/hci_core.c    | 3 ++-
 2 files changed, 11 insertions(+), 1 deletion(-)
include/net/bluetooth/hci.h +9 -0
index 1668211..b37d973 100644
@@ -183,6 +183,15 @@ enum {
 	 * during the hdev->setup vendor callback.
 	 */
 	HCI_QUIRK_NON_PERSISTENT_DIAG,
+
+	/* When this quirk is set, setup() would be run after every
+	 * open() and not just after the first open().
+	 *
+	 * This quirk can be set before hci_register_dev is called or
+	 * during the hdev->setup vendor callback.
+	 *
+	 */
+	HCI_QUIRK_NON_PERSISTENT_SETUP,
 };
 
 /* HCI device flags */
net/bluetooth/hci_core.c +2 -1
index 40d260f..7de712e2 100644
@@ -1377,7 +1377,8 @@ static int hci_dev_do_open(struct hci_dev *hdev)
 	atomic_set(&hdev->cmd_cnt, 1);
 	set_bit(HCI_INIT, &hdev->flags);
 
-	if (hci_dev_test_flag(hdev, HCI_SETUP)) {
+	if (hci_dev_test_flag(hdev, HCI_SETUP) ||
+	    test_bit(HCI_QUIRK_NON_PERSISTENT_SETUP, &hdev->quirks)) {
 		hci_sock_dev_event(hdev, HCI_DEV_SETUP);
 
 		if (hdev->setup)
Signature · 1 line
2.7.4
maintainer
#5 lore raw

Re: [PATCH v2 4/7] Bluetooth: Add new quirk for non-persistent setup settings

Hi Sean,

Quoted 34 lines

Add a new quirk HCI_QUIRK_NON_PERSISTENT_SETUP allowing that a quirk that runs setup() after every open() and not just after the first open().

---
include/net/bluetooth/hci.h | 9 +++++++++
net/bluetooth/hci_core.c | 3 ++-

2 files changed, 11 insertions(+), 1 deletion(-)
include/net/bluetooth/hci.h +9 -0
index 1668211..b37d973 100644
@@ -183,6 +183,15 @@ enum {
 	 * during the hdev->setup vendor callback.
 	 */
 	HCI_QUIRK_NON_PERSISTENT_DIAG,
+
+	/* When this quirk is set, setup() would be run after every
+	 * open() and not just after the first open().
+	 *
+	 * This quirk can be set before hci_register_dev is called or
+	 * during the hdev->setup vendor callback.
+	 *
+	 */
+	HCI_QUIRK_NON_PERSISTENT_SETUP,
 };
 
 /* HCI device flags */
net/bluetooth/hci_core.c +0 -0
index 40d260f..7de712e2 100644

net/bluetooth/hci_core.c static int hci_dev_do_open(struct hci_dev *hdev) · line 1382

Quoted 7 lines
net/bluetooth/hci_core.c +2 -1
@@ -1377,7 +1377,8 @@ static int hci_dev_do_open(struct hci_dev *hdev)
 	atomic_set(&hdev->cmd_cnt, 1);
 	set_bit(HCI_INIT, &hdev->flags);
 
-	if (hci_dev_test_flag(hdev, HCI_SETUP)) {
+	if (hci_dev_test_flag(hdev, HCI_SETUP) ||
+	    test_bit(HCI_QUIRK_NON_PERSISTENT_SETUP, &hdev->quirks)) {
 		hci_sock_dev_event(hdev, HCI_DEV_SETUP);

I am not 100% sure that we want to send the HCI_DEV_SETUP event also multiple times. That is a userspace change that I would need to think about. We need to check create_monitor_event() and see what the btmon trace for this looks like. Can you send me a btmon -w trace.log when this change is active.

Regards

Marcel

author maintainer
#6 lore raw

Re: [PATCH v2 4/7] Bluetooth: Add new quirk for non-persistent setup settings

Quoted 2 lines · Marcel Holtmann

Hi Sean,

[ ... ]

Quoted 11 lines
Quoted 4 lines
net/bluetooth/hci_core.c +2 -1
-	if (hci_dev_test_flag(hdev, HCI_SETUP)) {
+	if (hci_dev_test_flag(hdev, HCI_SETUP) ||
+	    test_bit(HCI_QUIRK_NON_PERSISTENT_SETUP, &hdev->quirks)) {
		hci_sock_dev_event(hdev, HCI_DEV_SETUP);

I am not 100% sure that we want to send the HCI_DEV_SETUP event also multiple times. That is a userspace change that I would need to think about. We need to check create_monitor_event() and see what the btmon trace for this looks like. Can you send me a btmon -w trace.log when this change is active.

Regards

Marcel

Sure, I'll send you the trace.log with the change is active.

Sean

author maintainer
#7 lore raw

[SPAM]Re: [PATCH v2 4/7] Bluetooth: Add new quirk for non-persistent setup settings

Quoted 13 lines · Sean Wang
Quoted 2 lines · Marcel Holtmann

Hi Sean,

[ ... ]

Quoted 7 lines
Quoted 4 lines
net/bluetooth/hci_core.c +2 -1
-	if (hci_dev_test_flag(hdev, HCI_SETUP)) {
+	if (hci_dev_test_flag(hdev, HCI_SETUP) ||
+	    test_bit(HCI_QUIRK_NON_PERSISTENT_SETUP, &hdev->quirks)) {
		hci_sock_dev_event(hdev, HCI_DEV_SETUP);

I am not 100% sure that we want to send the HCI_DEV_SETUP event also multiple times. That is a userspace change that I would need to think about. We need to check create_monitor_event() and see what the btmon trace for this looks like. Can you send me a btmon -w trace.log when this change is active.

Quoted 9 lines
Quoted 4 lines

Regards

Marcel

Sure, I'll send you the trace.log with the change is active.

Sean

Hi, Marcel

Attached trace.log was captured when I inputted commands power on and then off in bluetoothctl.

Sean

Quoted 5 lines

_______________________________________________
Linux-mediatek mailing list
Linux-mediatek at lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-mediatek

-------------- next part --------------
A non-text attachment was scrubbed...
Name: trace.log
Type: text/x-log
Size: 6573 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20180523/db18fea4/attachment.bin>

maintainer
#8 lore raw

Re: [PATCH v2 4/7] Bluetooth: Add new quirk for non-persistent setup settings

Hi Sean,

Quoted 15 lines
Quoted 15 lines

[ ... ]

Quoted 11 lines
Quoted 4 lines
net/bluetooth/hci_core.c +2 -1
-	if (hci_dev_test_flag(hdev, HCI_SETUP)) {
+	if (hci_dev_test_flag(hdev, HCI_SETUP) ||
+	    test_bit(HCI_QUIRK_NON_PERSISTENT_SETUP, &hdev->quirks)) {
		hci_sock_dev_event(hdev, HCI_DEV_SETUP);

I am not 100% sure that we want to send the HCI_DEV_SETUP event also multiple times. That is a userspace change that I would need to think about. We need to check create_monitor_event() and see what the btmon trace for this looks like. Can you send me a btmon -w trace.log when this change is active.

Regards

Marcel

Quoted 8 lines
Quoted 4 lines

Sure, I'll send you the trace.log with the change is active.

Sean

Attached trace.log was captured when I inputted commands power on and then off in bluetoothctl.

the trace.log is somehow mangled. Something is not fully correct. Can you read it with btmon -r trace.log?

Regards

Marcel

author maintainer
#9 lore raw

Re: [PATCH v2 4/7] Bluetooth: Add new quirk for non-persistent setup settings

Quoted 23 lines · Marcel Holtmann

Hi Sean,

Quoted 21 lines
Quoted 19 lines

[ ... ]

Quoted 11 lines
Quoted 4 lines
net/bluetooth/hci_core.c +2 -1
-	if (hci_dev_test_flag(hdev, HCI_SETUP)) {
+	if (hci_dev_test_flag(hdev, HCI_SETUP) ||
+	    test_bit(HCI_QUIRK_NON_PERSISTENT_SETUP, &hdev->quirks)) {
		hci_sock_dev_event(hdev, HCI_DEV_SETUP);

I am not 100% sure that we want to send the HCI_DEV_SETUP event also multiple times. That is a userspace change that I would need to think about. We need to check create_monitor_event() and see what the btmon trace for this looks like. Can you send me a btmon -w trace.log when this change is active.

Regards

Marcel

Sure, I'll send you the trace.log with the change is active.

Sean

Quoted 9 lines
Quoted 2 lines

Attached trace.log was captured when I inputted commands power on and then off in bluetoothctl.

the trace.log is somehow mangled. Something is not fully correct. Can you read it with btmon -r trace.log?

Regards

Marcel

Yes, I can read it with btmon -r trace.log.

I post it as plain text as below

Bluetooth monitor ver 5.37
= Note: Linux version 4.16.0-rc1+ (aarch64) 0.641494
= Note: Bluetooth subsystem version 2.22 0.641502
= New Index: 00:00:46:76:22:01 (BR/EDR,UART,hci0) [hci0] 0.641505
* Unknown packet (code 14 len 30) 0.641509

        01 00 00 00 02 00 01 0e 00 01 00 00 00 10 62 6c  ..............bl
        75 65 74 6f 6f 74 68 64 00 00 00 00 00 00        uetoothd......  
* Unknown packet (code 14 len 30)                                      0.641592
        02 00 00 00 02 00 01 0e 00 01 00 00 00 10 62 74  ..............bt
        6d 6f 6e 00 00 00 00 00 00 00 00 00 00 00        mon...........  
* Unknown packet (code 16 len 7)                                [hci0] 6.536771
        01 00 00 00 05 00 01                             .......         
= Open Index: 00:00:46:76:22:01                                 [hci0] 6.717019
= Index Info: 00:00:46:76:22:01 (MediaTek, Inc.)                [hci0] 6.717030
> HCI Event: Unknown (0xe4) plen 5                              [hci0] 6.741093
        02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.742088

        02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.743102

        02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.744105

        02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.745109

        02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.746104

        02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.747097

        02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.748090

        02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.749078

        02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.750070

        02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.751061

        02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.752054

        02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.753046

        02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.754038

        02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.755031

        02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.756025

        02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.757013

        02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.758006

        02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.758999

        02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.759991

        02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.760983

        02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.761975

        02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.762963

        02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.763956

        02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.764948

        02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.765941

        02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.766933

        02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.767926

        02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.768919

        02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.769914

        02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.770909

        02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.771908

        02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.772904

        02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.773898

        02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.774892

        02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.775890

        02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.776882

        02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.777877

        02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.778871

        02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.779869

        02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.780864

        02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.781858

        02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.782852

        02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.783850

        02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.784845

        02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.785839

        02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.786833

        02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.787831

        02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.788826

        02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.789820

        02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.790814

        02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.791813

        02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.792809

        02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.793803

        02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.794798

        02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.795797

        02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.796791

        02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.797786

        02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.798779

        02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.799778

        02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.800774

        02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.801769

        02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.802763

        02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.803761

        02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.804755

        02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.805749

        02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.806743

        02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.807741

        02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.808737

        02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.809731

        02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.810725

        02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.811725

        02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.812719

        02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.813714

        02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.814708

        02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.815705

        02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.816378

        02 01 01 00 00                                   .....           
< HCI Command: Vendor (0x3f|0x006f) plen 5                      [hci0] 6.816413
        01 07 01 00 04                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.816536

        02 07 01 00 00                                   .....           
< HCI Command: Vendor (0x3f|0x006f) plen 6                      [hci0] 8.845071
        01 06 02 00 00 01                                ......          
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 8.923456

        02 06 01 00 00                                   .....           

< HCI Command: Reset (0x03|0x0003) plen 0 [hci0] 10.861118

Quoted 1 line

HCI Event: Command Complete (0x0e) plen 4 [hci0] 10.865763

      Reset (0x03|0x0003) ncmd 1
        Status: Success (0x00)

< HCI Command: Read Local Supported Fe.. (0x04|0x0003) plen 0 [hci0] 10.865805

Quoted 1 line

HCI Event: Command Complete (0x0e) plen 12 [hci0] 10.865965

Read Local Supported Features (0x04|0x0003) ncmd 1
Status: Success (0x00)
Features: 0xbf 0x3e 0x8d 0xfe 0xdb 0xff 0x7b 0x87
3 slot packets
5 slot packets
Encryption
Slot offset
Timing accuracy
Role switch
Sniff mode
Power control requests
Channel quality driven data rate (CQDDR)
SCO link
HV2 packets
HV3 packets
CVSD synchronous data
Power control
Transparent synchronous data
Broadcast Encryption
Enhanced Data Rate ACL 2 Mbps mode
Enhanced Data Rate ACL 3 Mbps mode
Enhanced inquiry scan
Interlaced inquiry scan
Interlaced page scan
RSSI with inquiry results
Extended SCO link (EV3 packets)
EV4 packets
EV5 packets
AFH capable slave
AFH classification slave
LE Supported (Controller)
3-slot Enhanced Data Rate ACL packets
5-slot Enhanced Data Rate ACL packets
Sniff subrating
Pause encryption
AFH capable master
AFH classification master
Enhanced Data Rate eSCO 2 Mbps mode
Enhanced Data Rate eSCO 3 Mbps mode
3-slot Enhanced Data Rate eSCO packets
Extended Inquiry Response
Simultaneous LE and BR/EDR (Controller)
Secure Simple Pairing
Encapsulated PDU
Erroneous Data Reporting
Non-flushable Packet Boundary Flag
Link Supervision Timeout Changed Event
Inquiry TX Power Level
Enhanced Power Control
Extended features
< HCI Command: Read Local Version Info.. (0x04|0x0001) plen 0 [hci0] 10.865987

Quoted 1 line

HCI Event: Vendor (0xff) plen 9 [hci0] 10.866259

        29 19 09 17 20 48 07 11 00                       )... H...       
Quoted 1 line

HCI Event: Command Complete (0x0e) plen 12 [hci0] 10.866372

      Read Local Version Information (0x04|0x0001) ncmd 1
        Status: Success (0x00)
        HCI version: Bluetooth 4.2 (0x08) - Revision 4359 (0x1107)
        LMP version: Bluetooth 4.2 (0x08) - Subversion 2329 (0x0919)
        Manufacturer: MediaTek, Inc. (70)

< HCI Command: Read BD ADDR (0x04|0x0009) plen 0 [hci0] 10.866391

Quoted 1 line

HCI Event: Command Complete (0x0e) plen 10 [hci0] 10.866539

      Read BD ADDR (0x04|0x0009) ncmd 1
        Status: Success (0x00)
        Address: 00:00:46:76:22:01 (OLIVETTI NORTH AMERICA)

< HCI Command: Read Buffer Size (0x04|0x0005) plen 0 [hci0] 10.866609

Quoted 1 line

HCI Event: Command Complete (0x0e) plen 11 [hci0] 10.866754

Read Buffer Size (0x04|0x0005) ncmd 1
Status: Success (0x00)
ACL MTU: 1021 ACL max packet: 8
SCO MTU: 184 SCO max packet: 1
< HCI Command: Read Class of Device (0x03|0x0023) plen 0 [hci0] 10.866775

Quoted 1 line

HCI Event: Command Complete (0x0e) plen 7 [hci0] 10.866920

      Read Class of Device (0x03|0x0023) ncmd 1
        Status: Success (0x00)
        Class: 0x001f00
          Major class: Uncategorized, specific device code not specified
          Minor class: 0x00

< HCI Command: Read Local Name (0x03|0x0014) plen 0 [hci0] 10.866939

Quoted 1 line

HCI Event: Command Complete (0x0e) plen 252 [hci0] 10.867256

      Read Local Name (0x03|0x0014) ncmd 1
        Status: Success (0x00)
        Name: MTK MT7622 #1

< HCI Command: Read Voice Setting (0x03|0x0025) plen 0 [hci0] 10.867308

Quoted 1 line

HCI Event: Command Complete (0x0e) plen 6 [hci0] 10.867447

Read Voice Setting (0x03|0x0025) ncmd 1
Status: Success (0x00)
Setting: 0x0060
Input Coding: Linear
Input Data Format: 2's complement
Input Sample Size: 16-bit
# of bits padding at MSB: 0
Air Coding Format: CVSD
< HCI Command: Read Number of Supporte.. (0x03|0x0038) plen 0 [hci0] 10.867474

Quoted 1 line

HCI Event: Command Complete (0x0e) plen 5 [hci0] 10.867611

      Read Number of Supported IAC (0x03|0x0038) ncmd 1
        Status: Success (0x00)
        Number of IAC: 4

< HCI Command: Read Current IAC LAP (0x03|0x0039) plen 0 [hci0] 10.867678

Quoted 1 line

HCI Event: Command Complete (0x0e) plen 8 [hci0] 10.867865

      Read Current IAC LAP (0x03|0x0039) ncmd 1
        Status: Success (0x00)
        Number of IAC: 1
        Access code: 0x9e8b33 (General Inquiry)
< HCI Command: Set Event Filter (0x03|0x0005) plen 1           [hci0] 10.867890
        Type: Clear All Filters (0x00)
Quoted 1 line

HCI Event: Command Complete (0x0e) plen 4 [hci0] 10.868033

      Set Event Filter (0x03|0x0005) ncmd 1
        Status: Success (0x00)
< HCI Command: Write Connection Accept.. (0x03|0x0016) plen 2  [hci0] 10.868054
        Timeout: 20000.000 msec (0x7d00)
Quoted 1 line

HCI Event: Command Complete (0x0e) plen 4 [hci0] 10.868235

      Write Connection Accept Timeout (0x03|0x0016) ncmd 1
        Status: Success (0x00)

< HCI Command: LE Read Buffer Size (0x08|0x0002) plen 0 [hci0] 10.868262

Quoted 1 line

HCI Event: Command Complete (0x0e) plen 7 [hci0] 10.868392

LE Read Buffer Size (0x08|0x0002) ncmd 1
Status: Success (0x00)
Data packet length: 251
Num data packets: 8
< HCI Command: LE Read Local Supported.. (0x08|0x0003) plen 0 [hci0] 10.868413

Quoted 1 line

HCI Event: Command Complete (0x0e) plen 12 [hci0] 10.868587

LE Read Local Supported Features (0x08|0x0003) ncmd 1
Status: Success (0x00)
Features: 0xfd 0x00 0x00 0x00 0x00 0x00 0x00 0x00
LE Encryption
Extended Reject Indication Slave-initiated Features Exchange
LE Ping
LE Data Packet Length Extension
LL Privacy
Extended Scanner Filter Policies
< HCI Command: LE Read Supported States (0x08|0x001c) plen 0 [hci0] 10.868646

Quoted 1 line

HCI Event: Command Complete (0x0e) plen 12 [hci0] 10.868787

LE Read Supported States (0x08|0x001c) ncmd 1
Status: Success (0x00)
States: 0x000000001fffffff
Non-connectable Advertising State
Scannable Advertising State
Connectable Advertising State
High Duty Cycle Directed Advertising State
Passive Scanning State
Active Scanning State
Initiating State
and Connection State (Master Role)
Connection State (Slave Role)
Non-connectable Advertising State
and Passive Scanning State
Scannable Advertising State
and Passive Scanning State
Connectable Advertising State
and Passive Scanning State
High Duty Cycle Directed Advertising State
and Passive Scanning State
Non-connectable Advertising State
and Active Scanning State
Scannable Advertising State
and Active Scanning State
Connectable Advertising State
and Active Scanning State
High Duty Cycle Directed Advertising State
and Active Scanning State
Non-connectable Advertising State
and Initiating State
Scannable Advertising State
and Initiating State
Non-connectable Advertising State
and Connection State (Master Role)
Scannable Advertising State
and Connection State (Master Role)
Non-connectable Advertising State
and Connection State (Slave Role)
Scannable Advertising State
and Connection State (Slave Role)
Passive Scanning State
and Initiating State
Active Scanning State
and Initiating State
Passive Scanning State
and Connection State (Master Role)
Active Scanning State
and Connection State (Master Role)
Passive Scanning State
and Connection State (Slave Role)
Active Scanning State
and Connection State (Slave Role)
Initiating State
and Connection State (Master Role)
and Master Role & Master Role
< HCI Command: Read Local Supported Co.. (0x04|0x0002) plen 0 [hci0] 10.868807

Quoted 1 line

HCI Event: Command Complete (0x0e) plen 68 [hci0] 10.868985

Read Local Supported Commands (0x04|0x0002) ncmd 1
Status: Success (0x00)
Commands: 176 entries
Inquiry (Octet 0 - Bit 0)
Inquiry Cancel (Octet 0 - Bit 1)
Periodic Inquiry Mode (Octet 0 - Bit 2)
Exit Periodic Inquiry Mode (Octet 0 - Bit 3)
Create Connection (Octet 0 - Bit 4)
Disconnect (Octet 0 - Bit 5)
Add SCO Connection (Octet 0 - Bit 6)
Create Connection Cancel (Octet 0 - Bit 7)
Accept Connection Request (Octet 1 - Bit 0)
Reject Connection Request (Octet 1 - Bit 1)
Link Key Request Reply (Octet 1 - Bit 2)
Link Key Request Negative Reply (Octet 1 - Bit 3)
PIN Code Request Reply (Octet 1 - Bit 4)
PIN Code Request Negative Reply (Octet 1 - Bit 5)
Change Connection Packet Type (Octet 1 - Bit 6) Authentication Requested (Octet 1 - Bit 7)
Set Connection Encryption (Octet 2 - Bit 0)
Change Connection Link Key (Octet 2 - Bit 1)
Master Link Key (Octet 2 - Bit 2)
Remote Name Request (Octet 2 - Bit 3)
Remote Name Request Cancel (Octet 2 - Bit 4)
Read Remote Supported Features (Octet 2 - Bit 5)
Read Remote Extended Features (Octet 2 - Bit 6)
Read Remote Version Information (Octet 2 - Bit 7)
Read Clock Offset (Octet 3 - Bit 0)
Read LMP Handle (Octet 3 - Bit 1)
Sniff Mode (Octet 4 - Bit 2)
Exit Sniff Mode (Octet 4 - Bit 3)
QoS Setup (Octet 4 - Bit 6)
Role Discovery (Octet 4 - Bit 7)
Switch Role (Octet 5 - Bit 0)
Read Link Policy Settings (Octet 5 - Bit 1)
Write Link Policy Settings (Octet 5 - Bit 2)
Read Default Link Policy Settings (Octet 5 - Bit 3) Write Default Link Policy Settings (Octet 5 - Bit 4) Flow Specification (Octet 5 - Bit 5)
Set Event Mask (Octet 5 - Bit 6)
Reset (Octet 5 - Bit 7)
Set Event Filter (Octet 6 - Bit 0)
Flush (Octet 6 - Bit 1)
Read PIN Type (Octet 6 - Bit 2)
Write PIN Type (Octet 6 - Bit 3)
Create New Unit Key (Octet 6 - Bit 4)
Read Stored Link Key (Octet 6 - Bit 5)
Write Stored Link Key (Octet 6 - Bit 6)
Delete Stored Link Key (Octet 6 - Bit 7)
Write Local Name (Octet 7 - Bit 0)
Read Local Name (Octet 7 - Bit 1)
Read Connection Accept Timeout (Octet 7 - Bit 2)
Write Connection Accept Timeout (Octet 7 - Bit 3)
Read Page Timeout (Octet 7 - Bit 4)
Write Page Timeout (Octet 7 - Bit 5)
Read Scan Enable (Octet 7 - Bit 6)
Write Scan Enable (Octet 7 - Bit 7)
Read Page Scan Activity (Octet 8 - Bit 0)
Write Page Scan Activity (Octet 8 - Bit 1)
Read Inquiry Scan Activity (Octet 8 - Bit 2)
Write Inquiry Scan Activity (Octet 8 - Bit 3)
Read Authentication Enable (Octet 8 - Bit 4)
Write Authentication Enable (Octet 8 - Bit 5)
Read Encryption Mode (Octet 8 - Bit 6)
Write Encryption Mode (Octet 8 - Bit 7)
Read Class of Device (Octet 9 - Bit 0)
Write Class of Device (Octet 9 - Bit 1)
Read Voice Setting (Octet 9 - Bit 2)
Write Voice Setting (Octet 9 - Bit 3)
Read Automatic Flush Timeout (Octet 9 - Bit 4)
Write Automatic Flush Timeout (Octet 9 - Bit 5)
Read Num Broadcast Retransmissions (Octet 9 - Bit 6) Write Num Broadcast Retransmissions (Octet 9 - Bit 7) Read Transmit Power Level (Octet 10 - Bit 2)
Read Sync Flow Control Enable (Octet 10 - Bit 3)
Write Sync Flow Control Enable (Octet 10 - Bit 4)
Set Controller To Host Flow Control (Octet 10 - Bit 5) Host Buffer Size (Octet 10 - Bit 6)
Host Number of Completed Packets (Octet 10 - Bit 7)
Read Link Supervision Timeout (Octet 11 - Bit 0)
Write Link Supervision Timeout (Octet 11 - Bit 1)
Read Number of Supported IAC (Octet 11 - Bit 2)
Read Current IAC LAP (Octet 11 - Bit 3)
Write Current IAC LAP (Octet 11 - Bit 4)
Read Page Scan Mode (Octet 11 - Bit 7)
Write Page Scan Mode (Octet 12 - Bit 0)
Set AFH Host Channel Classification (Octet 12 - Bit 1) Read Inquiry Scan Type (Octet 12 - Bit 4)
Write Inquiry Scan Type (Octet 12 - Bit 5)
Read Inquiry Mode (Octet 12 - Bit 6)
Write Inquiry Mode (Octet 12 - Bit 7)
Read Page Scan Type (Octet 13 - Bit 0)
Write Page Scan Type (Octet 13 - Bit 1)
Read AFH Channel Assessment Mode (Octet 13 - Bit 2) Write AFH Channel Assessment Mode (Octet 13 - Bit 3) Read Local Version Information (Octet 14 - Bit 3)
Read Local Supported Features (Octet 14 - Bit 5)
Read Local Extended Features (Octet 14 - Bit 6)
Read Buffer Size (Octet 14 - Bit 7)
Read Country Code (Octet 15 - Bit 0)
Read BD ADDR (Octet 15 - Bit 1)
Read Failed Contact Counter (Octet 15 - Bit 2)
Reset Failed Contact Counter (Octet 15 - Bit 3)
Read Link Quality (Octet 15 - Bit 4)
Read RSSI (Octet 15 - Bit 5)
Read AFH Channel Map (Octet 15 - Bit 6)
Read Clock (Octet 15 - Bit 7)
Read Loopback Mode (Octet 16 - Bit 0)
Write Loopback Mode (Octet 16 - Bit 1)
Enable Device Under Test Mode (Octet 16 - Bit 2)
Setup Synchronous Connection (Octet 16 - Bit 3)
Accept Synchronous Connection Request (Octet 16 - Bit 4) Reject Synchronous Connection Request (Octet 16 - Bit 5) Read Extended Inquiry Response (Octet 17 - Bit 0)
Write Extended Inquiry Response (Octet 17 - Bit 1) Refresh Encryption Key (Octet 17 - Bit 2)
Sniff Subrating (Octet 17 - Bit 4)
Read Simple Pairing Mode (Octet 17 - Bit 5)
Write Simple Pairing Mode (Octet 17 - Bit 6)
Read Local OOB Data (Octet 17 - Bit 7)
Read Inquiry Response TX Power Level (Octet 18 - Bit 0) Write Inquiry Transmit Power Level (Octet 18 - Bit 1) Read Default Erroneous Data Reporting (Octet 18 - Bit 2) Write Default Erroneous Data Reporting (Octet 18 - Bit 3) IO Capability Request Reply (Octet 18 - Bit 7)
User Confirmation Request Reply (Octet 19 - Bit 0)
User Confirmation Request Neg Reply (Octet 19 - Bit 1) User Passkey Request Reply (Octet 19 - Bit 2)
User Passkey Request Negative Reply (Octet 19 - Bit 3) Remote OOB Data Request Reply (Octet 19 - Bit 4)
Write Simple Pairing Debug Mode (Octet 19 - Bit 5) Enhanced Flush (Octet 19 - Bit 6)
Remote OOB Data Request Neg Reply (Octet 19 - Bit 7) Send Keypress Notification (Octet 20 - Bit 2)
IO Capability Request Negative Reply (Octet 20 - Bit 3) Read Encryption Key Size (Octet 20 - Bit 4)
Set Event Mask Page 2 (Octet 22 - Bit 2)
Read Enhanced Transmit Power Level (Octet 24 - Bit 0) Enhanced Setup Synchronous Connection (Octet 29 - Bit 3) Enhanced Accept Synchronous Connection Request (Octet 29 - Bit 4) Read Local Supported Codecs (Octet 29 - Bit 5)
Set Triggered Clock Capture (Octet 30 - Bit 5)
Truncated Page (Octet 30 - Bit 6)
Truncated Page Cancel (Octet 30 - Bit 7)
Set Connectionless Slave Broadcast (Octet 31 - Bit 0) Start Synchronization Train (Octet 31 - Bit 2)
Set Reserved LT_ADDR (Octet 31 - Bit 4)
Delete Reserved LT_ADDR (Octet 31 - Bit 5)
Set Connectionless Slave Broadcast Data (Octet 31 - Bit 6) Read Synchronization Train Parameters (Octet 31 - Bit 7) Write Synchronization Train Parameters (Octet 32 - Bit 0) Remote OOB Extended Data Request Reply (Octet 32 - Bit 1) Read Authenticated Payload Timeout (Octet 32 - Bit 4) Write Authenticated Payload Timeout (Octet 32 - Bit 5) Read Local OOB Extended Data (Octet 32 - Bit 6)
Write Secure Connections Test Mode (Octet 32 - Bit 7) Read Extended Page Timeout (Octet 33 - Bit 0)
Write Extended Page Timeout (Octet 33 - Bit 1)
Read Extended Inquiry Length (Octet 33 - Bit 2)
Write Extended Inquiry Length (Octet 33 - Bit 3)
LE Set Data Length (Octet 33 - Bit 6)
LE Read Suggested Default Data Length (Octet 33 - Bit 7) LE Write Suggested Default Data Length (Octet 34 - Bit 0) LE Read Local P-256 Public Key (Octet 34 - Bit 1)
LE Generate DHKey (Octet 34 - Bit 2)
LE Add Device To Resolving List (Octet 34 - Bit 3)
LE Remove Device From Resolving List (Octet 34 - Bit 4) LE Clear Resolving List (Octet 34 - Bit 5)
LE Read Resolving List Size (Octet 34 - Bit 6)
LE Read Peer Resolvable Address (Octet 34 - Bit 7)
LE Read Local Resolvable Address (Octet 35 - Bit 0)
LE Set Address Resolution Enable (Octet 35 - Bit 1)
LE Set Resolvable Private Address Timeout (Octet 35 - Bit 2) LE Read Maximum Data Length (Octet 35 - Bit 3)
Octet 35 - Bit 4
Octet 35 - Bit 5
Octet 35 - Bit 6
Octet 35 - Bit 7
Octet 36 - Bit 0
< HCI Command: Write Simple Pairing Mode (0x03|0x0056) plen 1 [hci0] 10.869023

        Mode: Enabled (0x01)
Quoted 1 line

HCI Event: Command Complete (0x0e) plen 4 [hci0] 10.869185

      Write Simple Pairing Mode (0x03|0x0056) ncmd 1
        Status: Success (0x00)
< HCI Command: Write Inquiry Mode (0x03|0x0045) plen 1         [hci0] 10.869239
        Mode: Inquiry Result with RSSI or Extended Inquiry Result (0x02)
Quoted 1 line

HCI Event: Command Complete (0x0e) plen 4 [hci0] 10.869371

      Write Inquiry Mode (0x03|0x0045) ncmd 1
        Status: Success (0x00)

< HCI Command: Read Inquiry Response T.. (0x03|0x0058) plen 0 [hci0] 10.869396

Quoted 1 line

HCI Event: Command Complete (0x0e) plen 5 [hci0] 10.869552

      Read Inquiry Response TX Power Level (0x03|0x0058) ncmd 1
        Status: Success (0x00)
        TX power: -1 dBm
< HCI Command: Read Local Extended Fea.. (0x04|0x0004) plen 1  [hci0] 10.869572
        Page: 1
Quoted 1 line

HCI Event: Command Complete (0x0e) plen 14 [hci0] 10.869729

      Read Local Extended Features (0x04|0x0004) ncmd 1
        Status: Success (0x00)
        Page: 1/2
        Features: 0x01 0x00 0x00 0x00 0x00 0x00 0x00 0x00
          Secure Simple Pairing (Host Support)

< HCI Command: Set Event Mask (0x03|0x0001) plen 8 [hci0] 10.869783
Mask: 0x3dbff807fffbffff
Inquiry Complete
Inquiry Result
Connection Complete
Connection Request
Disconnection Complete Authentication Complete
Remote Name Request Complete Encryption Change
Change Connection Link Key Complete Master Link Key Complete
Read Remote Supported Features Complete Read Remote Version Information Complete QoS Setup Complete
Command Complete
Command Status
Hardware Error
Flush Occurred
Role Change
Mode Change
Return Link Keys
PIN Code Request
Link Key Request
Link Key Notification
Loopback Command
Data Buffer Overflow
Max Slots Change
Read Clock Offset Complete Connection Packet Type Changed
QoS Violation
Page Scan Mode Change
Page Scan Repetition Mode Change Flow Specification Complete
Inquiry Result with RSSI
Read Remote Extended Features Complete Synchronous Connection Complete Synchronous Connection Changed Sniff Subrating
Extended Inquiry Result
Encryption Key Refresh Complete
IO Capability Request
IO Capability Request Reply
User Confirmation Request
User Passkey Request
Remote OOB Data Request
Simple Pairing Complete
Link Supervision Timeout Changed Enhanced Flush Complete
User Passkey Notification
Keypress Notification
Remote Host Supported Features Notification LE Meta

Quoted 1 line

HCI Event: Command Complete (0x0e) plen 4 [hci0] 10.869921

      Set Event Mask (0x03|0x0001) ncmd 1
        Status: Success (0x00)
< HCI Command: Read Stored Link Key (0x03|0x000d) plen 7       [hci0] 10.869947
        Address: 00:00:00:00:00:00 (OUI 00-00-00)
        Read all: 0x01
Quoted 1 line

HCI Event: Command Complete (0x0e) plen 8 [hci0] 10.870129

Read Stored Link Key (0x03|0x000d) ncmd 1
Status: Success (0x00)
Max num keys: 4
Num keys: 0
< HCI Command: Write Default Link Poli.. (0x02|0x000f) plen 2 [hci0] 10.870148
Link policy: 0x0005
Enable Role Switch
Enable Sniff Mode

Quoted 1 line

HCI Event: Command Complete (0x0e) plen 4 [hci0] 10.870310

      Write Default Link Policy Settings (0x02|0x000f) ncmd 1
        Status: Success (0x00)

< HCI Command: Read Page Scan Activity (0x03|0x001b) plen 0 [hci0] 10.870331

Quoted 1 line

HCI Event: Command Complete (0x0e) plen 8 [hci0] 10.870485

      Read Page Scan Activity (0x03|0x001b) ncmd 1
        Status: Success (0x00)
        Interval: 1280.000 msec (0x0800)
        Window: 11.250 msec (0x0012)

< HCI Command: Read Page Scan Type (0x03|0x0046) plen 0 [hci0] 10.870504

Quoted 1 line

HCI Event: Command Complete (0x0e) plen 5 [hci0] 10.870652

      Read Page Scan Type (0x03|0x0046) ncmd 1
        Status: Success (0x00)
        Type: Standard Scan (0x00)

< HCI Command: LE Set Event Mask (0x08|0x0001) plen 8 [hci0] 10.870671
Mask: 0x0000000000000980
LE Read Local P-256 Public Key Complete
LE Generate DHKey Complete
Unknown mask (0x0000000000000800)

Quoted 1 line

HCI Event: Command Complete (0x0e) plen 4 [hci0] 10.870839

      LE Set Event Mask (0x08|0x0001) ncmd 1
        Status: Success (0x00)
< HCI Command: Write LE Host Supported (0x03|0x006d) plen 2    [hci0] 10.870859
        Supported: 0x01
        Simultaneous: 0x00
Quoted 1 line

HCI Event: Command Complete (0x0e) plen 4 [hci0] 10.871028

      Write LE Host Supported (0x03|0x006d) ncmd 1
        Status: Success (0x00)
< HCI Command: Read Local Extended Fea.. (0x04|0x0004) plen 1  [hci0] 10.871059
        Page: 2
Quoted 1 line

HCI Event: Command Complete (0x0e) plen 14 [hci0] 10.871201

      Read Local Extended Features (0x04|0x0004) ncmd 1
        Status: Success (0x00)
        Page: 2/2
        Features: 0x25 0x0b 0x00 0x00 0x00 0x00 0x00 0x00
          Connectionless Slave Broadcast - Master
          Synchronization Train
          Generalized interlaced scan
          Secure Connections (Controller Support)
          Ping
          Train nudging
< HCI Command: Delete Stored Link Key (0x03|0x0012) plen 7     [hci0] 10.871240
        Address: 00:00:00:00:00:00 (OUI 00-00-00)
        Delete all: 0x01
Quoted 1 line

HCI Event: Command Complete (0x0e) plen 6 [hci0] 10.871384

      Delete Stored Link Key (0x03|0x0012) ncmd 1
        Status: Success (0x00)
        Num keys: 0

< HCI Command: Set Event Mask Page 2 (0x03|0x0063) plen 8 [hci0] 10.871403
Mask: 0x0000000000b0c000
Triggered Clock Capture
Synchronization Train Complete
Slave Page Response Timeout Connectionless Slave Broadcast Channel Map Change Authenticated Payload Timeout Expired

Quoted 1 line

HCI Event: Command Complete (0x0e) plen 4 [hci0] 10.871566

      Set Event Mask Page 2 (0x03|0x0063) ncmd 1
        Status: Success (0x00)

< HCI Command: Read Local Supported Co.. (0x04|0x000b) plen 0 [hci0] 10.871599

Quoted 1 line

HCI Event: Command Complete (0x0e) plen 8 [hci0] 10.871750

      Read Local Supported Codecs (0x04|0x000b) ncmd 1
        Status: Success (0x00)
        Number of supported codecs: 2
          Codec: CVSD (0x02)
          Codec: Transparent (0x03)
        Number of vendor codecs: 0

< HCI Command: Read Synchronization Tr.. (0x03|0x0077) plen 0 [hci0] 10.871769

Quoted 1 line

HCI Event: Command Complete (0x0e) plen 11 [hci0] 10.871928

      Read Synchronization Train Parameters (0x03|0x0077) ncmd 1
        Status: Success (0x00)
        Interval: 0.000 msec (0x0000)
        Timeout: 0.000 msec (0x00000000)
        Service data: 0x00
< HCI Command: Write Secure Connection.. (0x03|0x007a) plen 1  [hci0] 10.871947
        Support: Enabled (0x01)
Quoted 1 line

HCI Event: Command Complete (0x0e) plen 4 [hci0] 10.872098

      Write Secure Connections Host Support (0x03|0x007a) ncmd 1
        Status: Success (0x00)

< HCI Command: Unknown (0x08|0x0031) plen 3 [hci0] 10.872156
03 00 00 ...

Quoted 1 line

HCI Event: Command Complete (0x0e) plen 4 [hci0] 10.872322

      Unknown (0x08|0x0031) ncmd 1
        Status: Success (0x00)

= Index Info: 00:00:46:76:22:01 (MediaTek, Inc.) [hci0] 10.872361
< HCI Command: LE Set Scan Response D.. (0x08|0x0009) plen 32 [hci0] 10.872431
Length: 10
Name (complete): builder

Quoted 1 line

HCI Event: Command Complete (0x0e) plen 4 [hci0] 10.872606

      LE Set Scan Response Data (0x08|0x0009) ncmd 1
        Status: Success (0x00)
< HCI Command: Write Scan Enable (0x03|0x001a) plen 1          [hci0] 10.872627
        Scan enable: Page Scan (0x02)
Quoted 1 line

HCI Event: Command Complete (0x0e) plen 4 [hci0] 10.872819

      Write Scan Enable (0x03|0x001a) ncmd 1
        Status: Success (0x00)
< HCI Command: Write Class of Device (0x03|0x0024) plen 3      [hci0] 10.872841
        Class: 0x000000
          Major class: Miscellaneous
          Minor class: 0x00
Quoted 1 line

HCI Event: Command Complete (0x0e) plen 4 [hci0] 10.873036

      Write Class of Device (0x03|0x0024) ncmd 1
        Status: Success (0x00)
* Unknown packet (code 17 len 9)                               [hci0] 10.873069
        02 00 00 00 07 00 00 00 00                       .........       
* Unknown packet (code 17 len 9)                               [hci0] 10.873069
        01 00 00 00 07 00 00 00 00                       .........       

< HCI Command: Write Local Name (0x03|0x0013) plen 248 [hci0] 10.873096
Name: builder

Quoted 1 line

HCI Event: Command Complete (0x0e) plen 4 [hci0] 10.873446

      Write Local Name (0x03|0x0013) ncmd 1
        Status: Success (0x00)
< HCI Command: Write Extended Inquir.. (0x03|0x0052) plen 241  [hci0] 10.873470
        FEC: Not required (0x00)
        Name (complete): builder
        TX power: -1 dBm
        Device ID: USB Implementer's Forum assigned (0x0002)
          Vendor: Linux Foundation (0x1d6b)
          Product: 0x0246
          Version: 5.2.11 (0x052b)
        16-bit Service UUIDs (complete): 4 entries
          Generic Access Profile (0x1800)
          Generic Attribute Profile (0x1801)
          A/V Remote Control (0x110e)
          A/V Remote Control Target (0x110c)
Quoted 1 line

HCI Event: Command Complete (0x0e) plen 4 [hci0] 10.873857

      Write Extended Inquiry Response (0x03|0x0052) ncmd 1
        Status: Success (0x00)
* Unknown packet (code 17 len 13)                              [hci0] 10.873903
        01 00 00 00 01 00 05 00 00 d1 0a 00 00           .............   
* Unknown packet (code 17 len 10)                              [hci0] 10.873913
        02 00 00 00 06 00 d1 0a 00 00                    ..........      
* Unknown packet (code 16 len 7)                               [hci0] 17.803939
        01 00 00 00 05 00 00                             .......         
< HCI Command: Write Scan Enable (0x03|0x001a) plen 1          [hci0] 17.803983
        Scan enable: No Scans (0x00)
Quoted 1 line

HCI Event: Command Complete (0x0e) plen 4 [hci0] 17.804233

      Write Scan Enable (0x03|0x001a) ncmd 1
        Status: Success (0x00)
< HCI Command: Vendor (0x3f|0x006f) plen 6                     [hci0] 17.804282
        01 06 02 00 00 00                                ......          
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 17.804636

        02 06 01 00 00                                   .....           
* Unknown packet (code 17 len 13)                              [hci0] 17.811580
        01 00 00 00 01 00 05 00 00 d0 0a 00 00           .............   
* Unknown packet (code 17 len 10)                              [hci0] 17.811596
        02 00 00 00 06 00 d0 0a 00 00                    ..........      

= Close Index: 00:00:46:76:22:01 [hci0] 17.811625

maintainer
#10 lore raw

Re: [PATCH v2 4/7] Bluetooth: Add new quirk for non-persistent setup settings

Hi Sean,

Quoted 48 lines
Quoted 21 lines
Quoted 21 lines
Quoted 19 lines

[ ... ]

Quoted 11 lines
Quoted 4 lines
net/bluetooth/hci_core.c +2 -1
-	if (hci_dev_test_flag(hdev, HCI_SETUP)) {
+	if (hci_dev_test_flag(hdev, HCI_SETUP) ||
+	    test_bit(HCI_QUIRK_NON_PERSISTENT_SETUP, &hdev->quirks)) {
		hci_sock_dev_event(hdev, HCI_DEV_SETUP);

I am not 100% sure that we want to send the HCI_DEV_SETUP event also multiple times. That is a userspace change that I would need to think about. We need to check create_monitor_event() and see what the btmon trace for this looks like. Can you send me a btmon -w trace.log when this change is active.

Regards

Marcel

Sure, I'll send you the trace.log with the change is active.

Sean

Quoted 9 lines
Quoted 2 lines

Attached trace.log was captured when I inputted commands power on and then off in bluetoothctl.

the trace.log is somehow mangled. Something is not fully correct. Can you read it with btmon -r trace.log?

Regards

Marcel

Yes, I can read it with btmon -r trace.log.

I post it as plain text as below

Bluetooth monitor ver 5.37
= Note: Linux version 4.16.0-rc1+ (aarch64) 0.641494
= Note: Bluetooth subsystem version 2.22 0.641502
= New Index: 00:00:46:76:22:01 (BR/EDR,UART,hci0) [hci0] 0.641505
* Unknown packet (code 14 len 30) 0.641509

       01 00 00 00 02 00 01 0e 00 01 00 00 00 10 62 6c  ..............bl
       75 65 74 6f 6f 74 68 64 00 00 00 00 00 00        uetoothd......  
* Unknown packet (code 14 len 30)                                      0.641592
       02 00 00 00 02 00 01 0e 00 01 00 00 00 10 62 74  ..............bt
       6d 6f 6e 00 00 00 00 00 00 00 00 00 00 00        mon...........  
* Unknown packet (code 16 len 7)                                [hci0] 6.536771
       01 00 00 00 05 00 01                             .......         
Quoted 2 lines

= Open Index: 00:00:46:76:22:01 [hci0] 6.717019
= Index Info: 00:00:46:76:22:01 (MediaTek, Inc.) [hci0] 6.717030

can you try with the latest BlueZ 5.49 or git version. Seems it actually stumbles over the extra packet here. Fun fact is that I can not get a backtrace to pin-point the issue in btmon and why it crashes.

Quoted 146 lines
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.741093

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.742088

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.743102

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.744105

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.745109

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.746104

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.747097

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.748090

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.749078

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.750070

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.751061

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.752054

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.753046

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.754038

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.755031

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.756025

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.757013

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.758006

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.758999

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.759991

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.760983

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.761975

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.762963

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.763956

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.764948

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.765941

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.766933

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.767926

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.768919

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.769914

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.770909

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.771908

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.772904

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.773898

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.774892

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.775890

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.776882

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.777877

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.778871

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.779869

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.780864

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.781858

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.782852

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.783850

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.784845

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.785839

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.786833

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.787831

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.788826

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.789820

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.790814

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.791813

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.792809

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.793803

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.794798

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.795797

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.796791

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.797786

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.798779

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.799778

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.800774

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.801769

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.802763

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.803761

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.804755

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.805749

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.806743

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.807741

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.808737

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.809731

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.810725

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.811725

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.812719

       02 01 01 00 00                                   .....           
Quoted 8 lines
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.813714

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.814708

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.815705

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.816378

       02 01 01 00 00                                   .....           

Why do I see only HCI events here? Is this event conveying any useful information. It is kinda complicated that this is 0xe4 event code which is actually reserved for future use by the Bluetooth SIG. Are there any accompanying HCI commands for this and they just not make it into btmon?

Quoted 8 lines

< HCI Command: Vendor (0x3f|0x006f) plen 5 [hci0] 6.816413

       01 07 01 00 04                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.816536

       02 07 01 00 00                                   .....           
< HCI Command: Vendor (0x3f|0x006f) plen 6                      [hci0] 8.845071
       01 06 02 00 00 01                                ......          
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 8.923456

       02 06 01 00 00                                   .....           

Here it looks like you have 0x006f opcode with first octet 0x01 for command and then vendor event 0xe4 with first octet 0x02 for event. I assume the second octet is then the vendor command code for these.

Quoted 57 lines

< HCI Command: Reset (0x03|0x0003) plen 0 [hci0] 10.861118

Quoted 1 line

HCI Event: Command Complete (0x0e) plen 4 [hci0] 10.865763

     Reset (0x03|0x0003) ncmd 1
       Status: Success (0x00)

< HCI Command: Read Local Supported Fe.. (0x04|0x0003) plen 0 [hci0] 10.865805

Quoted 1 line

HCI Event: Command Complete (0x0e) plen 12 [hci0] 10.865965

Read Local Supported Features (0x04|0x0003) ncmd 1
Status: Success (0x00)
Features: 0xbf 0x3e 0x8d 0xfe 0xdb 0xff 0x7b 0x87
3 slot packets
5 slot packets
Encryption
Slot offset
Timing accuracy
Role switch
Sniff mode
Power control requests
Channel quality driven data rate (CQDDR)
SCO link
HV2 packets
HV3 packets
CVSD synchronous data
Power control
Transparent synchronous data
Broadcast Encryption
Enhanced Data Rate ACL 2 Mbps mode
Enhanced Data Rate ACL 3 Mbps mode
Enhanced inquiry scan
Interlaced inquiry scan
Interlaced page scan
RSSI with inquiry results
Extended SCO link (EV3 packets)
EV4 packets
EV5 packets
AFH capable slave
AFH classification slave
LE Supported (Controller)
3-slot Enhanced Data Rate ACL packets
5-slot Enhanced Data Rate ACL packets
Sniff subrating
Pause encryption
AFH capable master
AFH classification master
Enhanced Data Rate eSCO 2 Mbps mode
Enhanced Data Rate eSCO 3 Mbps mode
3-slot Enhanced Data Rate eSCO packets
Extended Inquiry Response
Simultaneous LE and BR/EDR (Controller)
Secure Simple Pairing
Encapsulated PDU
Erroneous Data Reporting
Non-flushable Packet Boundary Flag
Link Supervision Timeout Changed Event
Inquiry TX Power Level
Enhanced Power Control
Extended features
< HCI Command: Read Local Version Info.. (0x04|0x0001) plen 0 [hci0] 10.865987

Quoted 2 lines
Quoted 1 line

HCI Event: Vendor (0xff) plen 9 [hci0] 10.866259

       29 19 09 17 20 48 07 11 00                       )... H?       

Is this meant to happen here?

Quoted 308 lines
Quoted 1 line

HCI Event: Command Complete (0x0e) plen 12 [hci0] 10.866372

     Read Local Version Information (0x04|0x0001) ncmd 1
       Status: Success (0x00)
       HCI version: Bluetooth 4.2 (0x08) - Revision 4359 (0x1107)
       LMP version: Bluetooth 4.2 (0x08) - Subversion 2329 (0x0919)
       Manufacturer: MediaTek, Inc. (70)

< HCI Command: Read BD ADDR (0x04|0x0009) plen 0 [hci0] 10.866391

Quoted 1 line

HCI Event: Command Complete (0x0e) plen 10 [hci0] 10.866539

     Read BD ADDR (0x04|0x0009) ncmd 1
       Status: Success (0x00)
       Address: 00:00:46:76:22:01 (OLIVETTI NORTH AMERICA)

< HCI Command: Read Buffer Size (0x04|0x0005) plen 0 [hci0] 10.866609

Quoted 1 line

HCI Event: Command Complete (0x0e) plen 11 [hci0] 10.866754

Read Buffer Size (0x04|0x0005) ncmd 1
Status: Success (0x00)
ACL MTU: 1021 ACL max packet: 8
SCO MTU: 184 SCO max packet: 1
< HCI Command: Read Class of Device (0x03|0x0023) plen 0 [hci0] 10.866775

Quoted 1 line

HCI Event: Command Complete (0x0e) plen 7 [hci0] 10.866920

     Read Class of Device (0x03|0x0023) ncmd 1
       Status: Success (0x00)
       Class: 0x001f00
         Major class: Uncategorized, specific device code not specified
         Minor class: 0x00

< HCI Command: Read Local Name (0x03|0x0014) plen 0 [hci0] 10.866939

Quoted 1 line

HCI Event: Command Complete (0x0e) plen 252 [hci0] 10.867256

     Read Local Name (0x03|0x0014) ncmd 1
       Status: Success (0x00)
       Name: MTK MT7622 #1

< HCI Command: Read Voice Setting (0x03|0x0025) plen 0 [hci0] 10.867308

Quoted 1 line

HCI Event: Command Complete (0x0e) plen 6 [hci0] 10.867447

Read Voice Setting (0x03|0x0025) ncmd 1
Status: Success (0x00)
Setting: 0x0060
Input Coding: Linear
Input Data Format: 2's complement
Input Sample Size: 16-bit
# of bits padding at MSB: 0
Air Coding Format: CVSD
< HCI Command: Read Number of Supporte.. (0x03|0x0038) plen 0 [hci0] 10.867474

Quoted 1 line

HCI Event: Command Complete (0x0e) plen 5 [hci0] 10.867611

     Read Number of Supported IAC (0x03|0x0038) ncmd 1
       Status: Success (0x00)
       Number of IAC: 4

< HCI Command: Read Current IAC LAP (0x03|0x0039) plen 0 [hci0] 10.867678

Quoted 1 line

HCI Event: Command Complete (0x0e) plen 8 [hci0] 10.867865

     Read Current IAC LAP (0x03|0x0039) ncmd 1
       Status: Success (0x00)
       Number of IAC: 1
       Access code: 0x9e8b33 (General Inquiry)
< HCI Command: Set Event Filter (0x03|0x0005) plen 1           [hci0] 10.867890
       Type: Clear All Filters (0x00)
Quoted 1 line

HCI Event: Command Complete (0x0e) plen 4 [hci0] 10.868033

     Set Event Filter (0x03|0x0005) ncmd 1
       Status: Success (0x00)
< HCI Command: Write Connection Accept.. (0x03|0x0016) plen 2  [hci0] 10.868054
       Timeout: 20000.000 msec (0x7d00)
Quoted 1 line

HCI Event: Command Complete (0x0e) plen 4 [hci0] 10.868235

     Write Connection Accept Timeout (0x03|0x0016) ncmd 1
       Status: Success (0x00)

< HCI Command: LE Read Buffer Size (0x08|0x0002) plen 0 [hci0] 10.868262

Quoted 1 line

HCI Event: Command Complete (0x0e) plen 7 [hci0] 10.868392

LE Read Buffer Size (0x08|0x0002) ncmd 1
Status: Success (0x00)
Data packet length: 251
Num data packets: 8
< HCI Command: LE Read Local Supported.. (0x08|0x0003) plen 0 [hci0] 10.868413

Quoted 1 line

HCI Event: Command Complete (0x0e) plen 12 [hci0] 10.868587

LE Read Local Supported Features (0x08|0x0003) ncmd 1
Status: Success (0x00)
Features: 0xfd 0x00 0x00 0x00 0x00 0x00 0x00 0x00
LE Encryption
Extended Reject Indication Slave-initiated Features Exchange
LE Ping
LE Data Packet Length Extension
LL Privacy
Extended Scanner Filter Policies
< HCI Command: LE Read Supported States (0x08|0x001c) plen 0 [hci0] 10.868646

Quoted 1 line

HCI Event: Command Complete (0x0e) plen 12 [hci0] 10.868787

LE Read Supported States (0x08|0x001c) ncmd 1
Status: Success (0x00)
States: 0x000000001fffffff
Non-connectable Advertising State
Scannable Advertising State
Connectable Advertising State
High Duty Cycle Directed Advertising State
Passive Scanning State
Active Scanning State
Initiating State
and Connection State (Master Role)
Connection State (Slave Role)
Non-connectable Advertising State
and Passive Scanning State
Scannable Advertising State
and Passive Scanning State
Connectable Advertising State
and Passive Scanning State
High Duty Cycle Directed Advertising State
and Passive Scanning State
Non-connectable Advertising State
and Active Scanning State
Scannable Advertising State
and Active Scanning State
Connectable Advertising State
and Active Scanning State
High Duty Cycle Directed Advertising State
and Active Scanning State
Non-connectable Advertising State
and Initiating State
Scannable Advertising State
and Initiating State
Non-connectable Advertising State
and Connection State (Master Role)
Scannable Advertising State
and Connection State (Master Role)
Non-connectable Advertising State
and Connection State (Slave Role)
Scannable Advertising State
and Connection State (Slave Role)
Passive Scanning State
and Initiating State
Active Scanning State
and Initiating State
Passive Scanning State
and Connection State (Master Role)
Active Scanning State
and Connection State (Master Role)
Passive Scanning State
and Connection State (Slave Role)
Active Scanning State
and Connection State (Slave Role)
Initiating State
and Connection State (Master Role)
and Master Role & Master Role
< HCI Command: Read Local Supported Co.. (0x04|0x0002) plen 0 [hci0] 10.868807

Quoted 1 line

HCI Event: Command Complete (0x0e) plen 68 [hci0] 10.868985

Read Local Supported Commands (0x04|0x0002) ncmd 1
Status: Success (0x00)
Commands: 176 entries
Inquiry (Octet 0 - Bit 0)
Inquiry Cancel (Octet 0 - Bit 1)
Periodic Inquiry Mode (Octet 0 - Bit 2)
Exit Periodic Inquiry Mode (Octet 0 - Bit 3)
Create Connection (Octet 0 - Bit 4)
Disconnect (Octet 0 - Bit 5)
Add SCO Connection (Octet 0 - Bit 6)
Create Connection Cancel (Octet 0 - Bit 7)
Accept Connection Request (Octet 1 - Bit 0)
Reject Connection Request (Octet 1 - Bit 1)
Link Key Request Reply (Octet 1 - Bit 2)
Link Key Request Negative Reply (Octet 1 - Bit 3)
PIN Code Request Reply (Octet 1 - Bit 4)
PIN Code Request Negative Reply (Octet 1 - Bit 5) Change Connection Packet Type (Octet 1 - Bit 6) Authentication Requested (Octet 1 - Bit 7)
Set Connection Encryption (Octet 2 - Bit 0)
Change Connection Link Key (Octet 2 - Bit 1)
Master Link Key (Octet 2 - Bit 2)
Remote Name Request (Octet 2 - Bit 3)
Remote Name Request Cancel (Octet 2 - Bit 4)
Read Remote Supported Features (Octet 2 - Bit 5)
Read Remote Extended Features (Octet 2 - Bit 6)
Read Remote Version Information (Octet 2 - Bit 7) Read Clock Offset (Octet 3 - Bit 0)
Read LMP Handle (Octet 3 - Bit 1)
Sniff Mode (Octet 4 - Bit 2)
Exit Sniff Mode (Octet 4 - Bit 3)
QoS Setup (Octet 4 - Bit 6)
Role Discovery (Octet 4 - Bit 7)
Switch Role (Octet 5 - Bit 0)
Read Link Policy Settings (Octet 5 - Bit 1)
Write Link Policy Settings (Octet 5 - Bit 2)
Read Default Link Policy Settings (Octet 5 - Bit 3) Write Default Link Policy Settings (Octet 5 - Bit 4) Flow Specification (Octet 5 - Bit 5)
Set Event Mask (Octet 5 - Bit 6)
Reset (Octet 5 - Bit 7)
Set Event Filter (Octet 6 - Bit 0)
Flush (Octet 6 - Bit 1)
Read PIN Type (Octet 6 - Bit 2)
Write PIN Type (Octet 6 - Bit 3)
Create New Unit Key (Octet 6 - Bit 4)
Read Stored Link Key (Octet 6 - Bit 5)
Write Stored Link Key (Octet 6 - Bit 6)
Delete Stored Link Key (Octet 6 - Bit 7)
Write Local Name (Octet 7 - Bit 0)
Read Local Name (Octet 7 - Bit 1)
Read Connection Accept Timeout (Octet 7 - Bit 2) Write Connection Accept Timeout (Octet 7 - Bit 3) Read Page Timeout (Octet 7 - Bit 4)
Write Page Timeout (Octet 7 - Bit 5)
Read Scan Enable (Octet 7 - Bit 6)
Write Scan Enable (Octet 7 - Bit 7)
Read Page Scan Activity (Octet 8 - Bit 0)
Write Page Scan Activity (Octet 8 - Bit 1)
Read Inquiry Scan Activity (Octet 8 - Bit 2)
Write Inquiry Scan Activity (Octet 8 - Bit 3)
Read Authentication Enable (Octet 8 - Bit 4)
Write Authentication Enable (Octet 8 - Bit 5)
Read Encryption Mode (Octet 8 - Bit 6)
Write Encryption Mode (Octet 8 - Bit 7)
Read Class of Device (Octet 9 - Bit 0)
Write Class of Device (Octet 9 - Bit 1)
Read Voice Setting (Octet 9 - Bit 2)
Write Voice Setting (Octet 9 - Bit 3)
Read Automatic Flush Timeout (Octet 9 - Bit 4)
Write Automatic Flush Timeout (Octet 9 - Bit 5)
Read Num Broadcast Retransmissions (Octet 9 - Bit 6) Write Num Broadcast Retransmissions (Octet 9 - Bit 7) Read Transmit Power Level (Octet 10 - Bit 2)
Read Sync Flow Control Enable (Octet 10 - Bit 3) Write Sync Flow Control Enable (Octet 10 - Bit 4)
Set Controller To Host Flow Control (Octet 10 - Bit 5) Host Buffer Size (Octet 10 - Bit 6)
Host Number of Completed Packets (Octet 10 - Bit 7) Read Link Supervision Timeout (Octet 11 - Bit 0) Write Link Supervision Timeout (Octet 11 - Bit 1) Read Number of Supported IAC (Octet 11 - Bit 2)
Read Current IAC LAP (Octet 11 - Bit 3)
Write Current IAC LAP (Octet 11 - Bit 4)
Read Page Scan Mode (Octet 11 - Bit 7)
Write Page Scan Mode (Octet 12 - Bit 0)
Set AFH Host Channel Classification (Octet 12 - Bit 1) Read Inquiry Scan Type (Octet 12 - Bit 4)
Write Inquiry Scan Type (Octet 12 - Bit 5)
Read Inquiry Mode (Octet 12 - Bit 6)
Write Inquiry Mode (Octet 12 - Bit 7)
Read Page Scan Type (Octet 13 - Bit 0)
Write Page Scan Type (Octet 13 - Bit 1)
Read AFH Channel Assessment Mode (Octet 13 - Bit 2) Write AFH Channel Assessment Mode (Octet 13 - Bit 3) Read Local Version Information (Octet 14 - Bit 3) Read Local Supported Features (Octet 14 - Bit 5)
Read Local Extended Features (Octet 14 - Bit 6)
Read Buffer Size (Octet 14 - Bit 7)
Read Country Code (Octet 15 - Bit 0)
Read BD ADDR (Octet 15 - Bit 1)
Read Failed Contact Counter (Octet 15 - Bit 2)
Reset Failed Contact Counter (Octet 15 - Bit 3)
Read Link Quality (Octet 15 - Bit 4)
Read RSSI (Octet 15 - Bit 5)
Read AFH Channel Map (Octet 15 - Bit 6)
Read Clock (Octet 15 - Bit 7)
Read Loopback Mode (Octet 16 - Bit 0)
Write Loopback Mode (Octet 16 - Bit 1)
Enable Device Under Test Mode (Octet 16 - Bit 2) Setup Synchronous Connection (Octet 16 - Bit 3) Accept Synchronous Connection Request (Octet 16 - Bit 4) Reject Synchronous Connection Request (Octet 16 - Bit 5) Read Extended Inquiry Response (Octet 17 - Bit 0) Write Extended Inquiry Response (Octet 17 - Bit 1) Refresh Encryption Key (Octet 17 - Bit 2)
Sniff Subrating (Octet 17 - Bit 4)
Read Simple Pairing Mode (Octet 17 - Bit 5)
Write Simple Pairing Mode (Octet 17 - Bit 6)
Read Local OOB Data (Octet 17 - Bit 7)
Read Inquiry Response TX Power Level (Octet 18 - Bit 0) Write Inquiry Transmit Power Level (Octet 18 - Bit 1) Read Default Erroneous Data Reporting (Octet 18 - Bit 2) Write Default Erroneous Data Reporting (Octet 18 - Bit 3) IO Capability Request Reply (Octet 18 - Bit 7)
User Confirmation Request Reply (Octet 19 - Bit 0) User Confirmation Request Neg Reply (Octet 19 - Bit 1) User Passkey Request Reply (Octet 19 - Bit 2)
User Passkey Request Negative Reply (Octet 19 - Bit 3) Remote OOB Data Request Reply (Octet 19 - Bit 4) Write Simple Pairing Debug Mode (Octet 19 - Bit 5) Enhanced Flush (Octet 19 - Bit 6)
Remote OOB Data Request Neg Reply (Octet 19 - Bit 7) Send Keypress Notification (Octet 20 - Bit 2)
IO Capability Request Negative Reply (Octet 20 - Bit 3) Read Encryption Key Size (Octet 20 - Bit 4)
Set Event Mask Page 2 (Octet 22 - Bit 2)
Read Enhanced Transmit Power Level (Octet 24 - Bit 0) Enhanced Setup Synchronous Connection (Octet 29 - Bit 3) Enhanced Accept Synchronous Connection Request (Octet 29 - Bit 4) Read Local Supported Codecs (Octet 29 - Bit 5)
Set Triggered Clock Capture (Octet 30 - Bit 5) Truncated Page (Octet 30 - Bit 6)
Truncated Page Cancel (Octet 30 - Bit 7)
Set Connectionless Slave Broadcast (Octet 31 - Bit 0) Start Synchronization Train (Octet 31 - Bit 2)
Set Reserved LT_ADDR (Octet 31 - Bit 4)
Delete Reserved LT_ADDR (Octet 31 - Bit 5)
Set Connectionless Slave Broadcast Data (Octet 31 - Bit 6) Read Synchronization Train Parameters (Octet 31 - Bit 7) Write Synchronization Train Parameters (Octet 32 - Bit 0) Remote OOB Extended Data Request Reply (Octet 32 - Bit 1) Read Authenticated Payload Timeout (Octet 32 - Bit 4) Write Authenticated Payload Timeout (Octet 32 - Bit 5) Read Local OOB Extended Data (Octet 32 - Bit 6)
Write Secure Connections Test Mode (Octet 32 - Bit 7) Read Extended Page Timeout (Octet 33 - Bit 0)
Write Extended Page Timeout (Octet 33 - Bit 1)
Read Extended Inquiry Length (Octet 33 - Bit 2)
Write Extended Inquiry Length (Octet 33 - Bit 3)
LE Set Data Length (Octet 33 - Bit 6)
LE Read Suggested Default Data Length (Octet 33 - Bit 7) LE Write Suggested Default Data Length (Octet 34 - Bit 0) LE Read Local P-256 Public Key (Octet 34 - Bit 1)
LE Generate DHKey (Octet 34 - Bit 2)
LE Add Device To Resolving List (Octet 34 - Bit 3)
LE Remove Device From Resolving List (Octet 34 - Bit 4) LE Clear Resolving List (Octet 34 - Bit 5)
LE Read Resolving List Size (Octet 34 - Bit 6)
LE Read Peer Resolvable Address (Octet 34 - Bit 7)
LE Read Local Resolvable Address (Octet 35 - Bit 0)

Quoted 8 lines

LE Set Address Resolution Enable (Octet 35 - Bit 1) LE Set Resolvable Private Address Timeout (Octet 35 - Bit 2) LE Read Maximum Data Length (Octet 35 - Bit 3) Octet 35 - Bit 4
Octet 35 - Bit 5
Octet 35 - Bit 6
Octet 35 - Bit 7
Octet 36 - Bit 0

So you support the PHY commands, but do not indicate support LE 2M or LE Coded? Also these are Bluetooth 5.0 commands.

Quoted 167 lines

< HCI Command: Write Simple Pairing Mode (0x03|0x0056) plen 1 [hci0] 10.869023

       Mode: Enabled (0x01)
Quoted 1 line

HCI Event: Command Complete (0x0e) plen 4 [hci0] 10.869185

     Write Simple Pairing Mode (0x03|0x0056) ncmd 1
       Status: Success (0x00)
< HCI Command: Write Inquiry Mode (0x03|0x0045) plen 1         [hci0] 10.869239
       Mode: Inquiry Result with RSSI or Extended Inquiry Result (0x02)
Quoted 1 line

HCI Event: Command Complete (0x0e) plen 4 [hci0] 10.869371

     Write Inquiry Mode (0x03|0x0045) ncmd 1
       Status: Success (0x00)

< HCI Command: Read Inquiry Response T.. (0x03|0x0058) plen 0 [hci0] 10.869396

Quoted 1 line

HCI Event: Command Complete (0x0e) plen 5 [hci0] 10.869552

     Read Inquiry Response TX Power Level (0x03|0x0058) ncmd 1
       Status: Success (0x00)
       TX power: -1 dBm
< HCI Command: Read Local Extended Fea.. (0x04|0x0004) plen 1  [hci0] 10.869572
       Page: 1
Quoted 1 line

HCI Event: Command Complete (0x0e) plen 14 [hci0] 10.869729

     Read Local Extended Features (0x04|0x0004) ncmd 1
       Status: Success (0x00)
       Page: 1/2
       Features: 0x01 0x00 0x00 0x00 0x00 0x00 0x00 0x00
         Secure Simple Pairing (Host Support)

< HCI Command: Set Event Mask (0x03|0x0001) plen 8 [hci0] 10.869783
Mask: 0x3dbff807fffbffff
Inquiry Complete
Inquiry Result
Connection Complete
Connection Request
Disconnection Complete Authentication Complete
Remote Name Request Complete Encryption Change
Change Connection Link Key Complete Master Link Key Complete
Read Remote Supported Features Complete Read Remote Version Information Complete QoS Setup Complete
Command Complete
Command Status
Hardware Error
Flush Occurred
Role Change
Mode Change
Return Link Keys
PIN Code Request
Link Key Request
Link Key Notification
Loopback Command
Data Buffer Overflow
Max Slots Change
Read Clock Offset Complete Connection Packet Type Changed
QoS Violation
Page Scan Mode Change
Page Scan Repetition Mode Change Flow Specification Complete
Inquiry Result with RSSI
Read Remote Extended Features Complete Synchronous Connection Complete Synchronous Connection Changed Sniff Subrating
Extended Inquiry Result
Encryption Key Refresh Complete
IO Capability Request
IO Capability Request Reply
User Confirmation Request
User Passkey Request
Remote OOB Data Request
Simple Pairing Complete
Link Supervision Timeout Changed Enhanced Flush Complete
User Passkey Notification
Keypress Notification
Remote Host Supported Features Notification LE Meta

Quoted 1 line

HCI Event: Command Complete (0x0e) plen 4 [hci0] 10.869921

     Set Event Mask (0x03|0x0001) ncmd 1
       Status: Success (0x00)
< HCI Command: Read Stored Link Key (0x03|0x000d) plen 7       [hci0] 10.869947
       Address: 00:00:00:00:00:00 (OUI 00-00-00)
       Read all: 0x01
Quoted 1 line

HCI Event: Command Complete (0x0e) plen 8 [hci0] 10.870129

Read Stored Link Key (0x03|0x000d) ncmd 1
Status: Success (0x00)
Max num keys: 4
Num keys: 0
< HCI Command: Write Default Link Poli.. (0x02|0x000f) plen 2 [hci0] 10.870148
Link policy: 0x0005
Enable Role Switch
Enable Sniff Mode

Quoted 1 line

HCI Event: Command Complete (0x0e) plen 4 [hci0] 10.870310

     Write Default Link Policy Settings (0x02|0x000f) ncmd 1
       Status: Success (0x00)

< HCI Command: Read Page Scan Activity (0x03|0x001b) plen 0 [hci0] 10.870331

Quoted 1 line

HCI Event: Command Complete (0x0e) plen 8 [hci0] 10.870485

     Read Page Scan Activity (0x03|0x001b) ncmd 1
       Status: Success (0x00)
       Interval: 1280.000 msec (0x0800)
       Window: 11.250 msec (0x0012)

< HCI Command: Read Page Scan Type (0x03|0x0046) plen 0 [hci0] 10.870504

Quoted 1 line

HCI Event: Command Complete (0x0e) plen 5 [hci0] 10.870652

     Read Page Scan Type (0x03|0x0046) ncmd 1
       Status: Success (0x00)
       Type: Standard Scan (0x00)

< HCI Command: LE Set Event Mask (0x08|0x0001) plen 8 [hci0] 10.870671
Mask: 0x0000000000000980
LE Read Local P-256 Public Key Complete
LE Generate DHKey Complete
Unknown mask (0x0000000000000800)

Quoted 1 line

HCI Event: Command Complete (0x0e) plen 4 [hci0] 10.870839

     LE Set Event Mask (0x08|0x0001) ncmd 1
       Status: Success (0x00)
< HCI Command: Write LE Host Supported (0x03|0x006d) plen 2    [hci0] 10.870859
       Supported: 0x01
       Simultaneous: 0x00
Quoted 1 line

HCI Event: Command Complete (0x0e) plen 4 [hci0] 10.871028

     Write LE Host Supported (0x03|0x006d) ncmd 1
       Status: Success (0x00)
< HCI Command: Read Local Extended Fea.. (0x04|0x0004) plen 1  [hci0] 10.871059
       Page: 2
Quoted 1 line

HCI Event: Command Complete (0x0e) plen 14 [hci0] 10.871201

     Read Local Extended Features (0x04|0x0004) ncmd 1
       Status: Success (0x00)
       Page: 2/2
       Features: 0x25 0x0b 0x00 0x00 0x00 0x00 0x00 0x00
         Connectionless Slave Broadcast - Master
         Synchronization Train
         Generalized interlaced scan
         Secure Connections (Controller Support)
         Ping
         Train nudging
< HCI Command: Delete Stored Link Key (0x03|0x0012) plen 7     [hci0] 10.871240
       Address: 00:00:00:00:00:00 (OUI 00-00-00)
       Delete all: 0x01
Quoted 1 line

HCI Event: Command Complete (0x0e) plen 6 [hci0] 10.871384

     Delete Stored Link Key (0x03|0x0012) ncmd 1
       Status: Success (0x00)
       Num keys: 0

< HCI Command: Set Event Mask Page 2 (0x03|0x0063) plen 8 [hci0] 10.871403
Mask: 0x0000000000b0c000
Triggered Clock Capture
Synchronization Train Complete
Slave Page Response Timeout Connectionless Slave Broadcast Channel Map Change Authenticated Payload Timeout Expired

Quoted 1 line

HCI Event: Command Complete (0x0e) plen 4 [hci0] 10.871566

     Set Event Mask Page 2 (0x03|0x0063) ncmd 1
       Status: Success (0x00)

< HCI Command: Read Local Supported Co.. (0x04|0x000b) plen 0 [hci0] 10.871599

Quoted 1 line

HCI Event: Command Complete (0x0e) plen 8 [hci0] 10.871750

     Read Local Supported Codecs (0x04|0x000b) ncmd 1
       Status: Success (0x00)
       Number of supported codecs: 2
         Codec: CVSD (0x02)
         Codec: Transparent (0x03)
       Number of vendor codecs: 0

< HCI Command: Read Synchronization Tr.. (0x03|0x0077) plen 0 [hci0] 10.871769

Quoted 1 line

HCI Event: Command Complete (0x0e) plen 11 [hci0] 10.871928

     Read Synchronization Train Parameters (0x03|0x0077) ncmd 1
       Status: Success (0x00)
       Interval: 0.000 msec (0x0000)
       Timeout: 0.000 msec (0x00000000)
       Service data: 0x00
< HCI Command: Write Secure Connection.. (0x03|0x007a) plen 1  [hci0] 10.871947
       Support: Enabled (0x01)
Quoted 1 line

HCI Event: Command Complete (0x0e) plen 4 [hci0] 10.872098

Quoted 8 lines
     Write Secure Connections Host Support (0x03|0x007a) ncmd 1
       Status: Success (0x00)

< HCI Command: Unknown (0x08|0x0031) plen 3 [hci0] 10.872156
03 00 00 ...

Quoted 1 line

HCI Event: Command Complete (0x0e) plen 4 [hci0] 10.872322

     Unknown (0x08|0x0031) ncmd 1
       Status: Success (0x00)

= Index Info: 00:00:46:76:22:01 (MediaTek, Inc.) [hci0] 10.872361

This extra index info worries me a little bit. I need to check if that is suppose to happen.

Quoted 56 lines

< HCI Command: LE Set Scan Response D.. (0x08|0x0009) plen 32 [hci0] 10.872431
Length: 10
Name (complete): builder

Quoted 1 line

HCI Event: Command Complete (0x0e) plen 4 [hci0] 10.872606

     LE Set Scan Response Data (0x08|0x0009) ncmd 1
       Status: Success (0x00)
< HCI Command: Write Scan Enable (0x03|0x001a) plen 1          [hci0] 10.872627
       Scan enable: Page Scan (0x02)
Quoted 1 line

HCI Event: Command Complete (0x0e) plen 4 [hci0] 10.872819

     Write Scan Enable (0x03|0x001a) ncmd 1
       Status: Success (0x00)
< HCI Command: Write Class of Device (0x03|0x0024) plen 3      [hci0] 10.872841
       Class: 0x000000
         Major class: Miscellaneous
         Minor class: 0x00
Quoted 1 line

HCI Event: Command Complete (0x0e) plen 4 [hci0] 10.873036

     Write Class of Device (0x03|0x0024) ncmd 1
       Status: Success (0x00)
* Unknown packet (code 17 len 9)                               [hci0] 10.873069
       02 00 00 00 07 00 00 00 00                       .........       
* Unknown packet (code 17 len 9)                               [hci0] 10.873069
       01 00 00 00 07 00 00 00 00                       .........       

< HCI Command: Write Local Name (0x03|0x0013) plen 248 [hci0] 10.873096
Name: builder

Quoted 1 line

HCI Event: Command Complete (0x0e) plen 4 [hci0] 10.873446

     Write Local Name (0x03|0x0013) ncmd 1
       Status: Success (0x00)
< HCI Command: Write Extended Inquir.. (0x03|0x0052) plen 241  [hci0] 10.873470
       FEC: Not required (0x00)
       Name (complete): builder
       TX power: -1 dBm
       Device ID: USB Implementer's Forum assigned (0x0002)
         Vendor: Linux Foundation (0x1d6b)
         Product: 0x0246
         Version: 5.2.11 (0x052b)
       16-bit Service UUIDs (complete): 4 entries
         Generic Access Profile (0x1800)
         Generic Attribute Profile (0x1801)
         A/V Remote Control (0x110e)
         A/V Remote Control Target (0x110c)
Quoted 1 line

HCI Event: Command Complete (0x0e) plen 4 [hci0] 10.873857

     Write Extended Inquiry Response (0x03|0x0052) ncmd 1
       Status: Success (0x00)
* Unknown packet (code 17 len 13)                              [hci0] 10.873903
       01 00 00 00 01 00 05 00 00 d1 0a 00 00           .............   
* Unknown packet (code 17 len 10)                              [hci0] 10.873913
       02 00 00 00 06 00 d1 0a 00 00                    ..........      
* Unknown packet (code 16 len 7)                               [hci0] 17.803939
       01 00 00 00 05 00 00                             .......         
< HCI Command: Write Scan Enable (0x03|0x001a) plen 1          [hci0] 17.803983
       Scan enable: No Scans (0x00)
Quoted 1 line

HCI Event: Command Complete (0x0e) plen 4 [hci0] 17.804233

     Write Scan Enable (0x03|0x001a) ncmd 1
       Status: Success (0x00)
< HCI Command: Vendor (0x3f|0x006f) plen 6                     [hci0] 17.804282
       01 06 02 00 00 00                                ......          
Quoted 7 lines
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 17.804636

       02 06 01 00 00                                   .....           
* Unknown packet (code 17 len 13)                              [hci0] 17.811580
       01 00 00 00 01 00 05 00 00 d0 0a 00 00           .............   
* Unknown packet (code 17 len 10)                              [hci0] 17.811596
       02 00 00 00 06 00 d0 0a 00 00                    ..........      

= Close Index: 00:00:46:76:22:01 [hci0] 17.811625

Regards

Marcel

author maintainer
#11 lore raw

Re: [PATCH v2 4/7] Bluetooth: Add new quirk for non-persistent setup settings

Quoted 4 lines · Marcel Holtmann

Hi Sean,

Quoted 2 lines
Quoted 2 lines
Quoted 2 lines
Quoted 2 lines

[ ... ]

[ ... ]

Quoted 18 lines
Quoted 15 lines

I post it as plain text as below

Bluetooth monitor ver 5.37
= Note: Linux version 4.16.0-rc1+ (aarch64) 0.641494
= Note: Bluetooth subsystem version 2.22 0.641502
= New Index: 00:00:46:76:22:01 (BR/EDR,UART,hci0) [hci0] 0.641505
* Unknown packet (code 14 len 30) 0.641509

       01 00 00 00 02 00 01 0e 00 01 00 00 00 10 62 6c  ..............bl
       75 65 74 6f 6f 74 68 64 00 00 00 00 00 00        uetoothd......  
* Unknown packet (code 14 len 30)                                      0.641592
       02 00 00 00 02 00 01 0e 00 01 00 00 00 10 62 74  ..............bt
       6d 6f 6e 00 00 00 00 00 00 00 00 00 00 00        mon...........  
* Unknown packet (code 16 len 7)                                [hci0] 6.536771
       01 00 00 00 05 00 01                             .......         
Quoted 2 lines

= Open Index: 00:00:46:76:22:01 [hci0] 6.717019
= Index Info: 00:00:46:76:22:01 (MediaTek, Inc.) [hci0] 6.717030

Quoted 2 lines

can you try with the latest BlueZ 5.49 or git version. Seems it actually stumbles over the extra packet here. Fun fact is that I can not get a backtrace to pin-point the issue in btmon and why it crashes.

I had less experience updating user land BlueZ, but I can try it as possible and see whether Unknown packets still are present at newest version BlueZ. Hopefully I don't misunderstand your point here.

Quoted 148 lines
Quoted 148 lines
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.741093

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.742088

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.743102

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.744105

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.745109

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.746104

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.747097

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.748090

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.749078

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.750070

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.751061

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.752054

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.753046

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.754038

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.755031

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.756025

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.757013

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.758006

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.758999

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.759991

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.760983

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.761975

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.762963

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.763956

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.764948

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.765941

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.766933

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.767926

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.768919

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.769914

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.770909

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.771908

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.772904

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.773898

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.774892

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.775890

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.776882

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.777877

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.778871

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.779869

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.780864

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.781858

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.782852

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.783850

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.784845

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.785839

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.786833

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.787831

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.788826

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.789820

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.790814

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.791813

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.792809

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.793803

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.794798

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.795797

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.796791

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.797786

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.798779

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.799778

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.800774

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.801769

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.802763

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.803761

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.804755

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.805749

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.806743

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.807741

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.808737

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.809731

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.810725

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.811725

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.812719

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.813714

       02 01 01 00 00                                   .....           
Quoted 9 lines
Quoted 6 lines
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.814708

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.815705

       02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.816378

       02 01 01 00 00                                   .....           

Why do I see only HCI events here? Is this event conveying any useful information. It is kinda complicated that this is 0xe4 event code which is actually reserved for future use by the Bluetooth SIG. Are there any accompanying HCI commands for this and they just not make it into btmon?

I have made all vendor HCI commands go through BlueZ core in v2 patch.

And for these HCI events, they are all corresponding to vendor ACL data, applied only to firmware setup packets, but they're not being sent via BlueZ core, so they are not being logged in btmon.

As for its event, where heading 0xe4 refers to a vendor event and is used on notification of that either vendor ACL data or vendor HCI command have been done.

Quoted 4 lines
Quoted 4 lines

< HCI Command: Vendor (0x3f|0x006f) plen 5 [hci0] 6.816413

       01 07 01 00 04                                   .....           
Quoted 9 lines
Quoted 6 lines
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.816536

       02 07 01 00 00                                   .....           
< HCI Command: Vendor (0x3f|0x006f) plen 6                      [hci0] 8.845071
       01 06 02 00 00 01                                ......          
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 8.923456

       02 06 01 00 00                                   .....           

Here it looks like you have 0x006f opcode with first octet 0x01 for command and then vendor event 0xe4 with first octet 0x02 for event. I assume the second octet is then the vendor command code for these.

Yes, you're right.

Quoted 57 lines
Quoted 57 lines

< HCI Command: Reset (0x03|0x0003) plen 0 [hci0] 10.861118

Quoted 1 line

HCI Event: Command Complete (0x0e) plen 4 [hci0] 10.865763

     Reset (0x03|0x0003) ncmd 1
       Status: Success (0x00)

< HCI Command: Read Local Supported Fe.. (0x04|0x0003) plen 0 [hci0] 10.865805

Quoted 1 line

HCI Event: Command Complete (0x0e) plen 12 [hci0] 10.865965

Read Local Supported Features (0x04|0x0003) ncmd 1
Status: Success (0x00)
Features: 0xbf 0x3e 0x8d 0xfe 0xdb 0xff 0x7b 0x87
3 slot packets
5 slot packets
Encryption
Slot offset
Timing accuracy
Role switch
Sniff mode
Power control requests
Channel quality driven data rate (CQDDR)
SCO link
HV2 packets
HV3 packets
CVSD synchronous data
Power control
Transparent synchronous data
Broadcast Encryption
Enhanced Data Rate ACL 2 Mbps mode
Enhanced Data Rate ACL 3 Mbps mode
Enhanced inquiry scan
Interlaced inquiry scan
Interlaced page scan
RSSI with inquiry results
Extended SCO link (EV3 packets)
EV4 packets
EV5 packets
AFH capable slave
AFH classification slave
LE Supported (Controller)
3-slot Enhanced Data Rate ACL packets
5-slot Enhanced Data Rate ACL packets
Sniff subrating
Pause encryption
AFH capable master
AFH classification master
Enhanced Data Rate eSCO 2 Mbps mode
Enhanced Data Rate eSCO 3 Mbps mode
3-slot Enhanced Data Rate eSCO packets
Extended Inquiry Response
Simultaneous LE and BR/EDR (Controller)
Secure Simple Pairing
Encapsulated PDU
Erroneous Data Reporting
Non-flushable Packet Boundary Flag
Link Supervision Timeout Changed Event
Inquiry TX Power Level
Enhanced Power Control
Extended features
< HCI Command: Read Local Version Info.. (0x04|0x0001) plen 0 [hci0] 10.865987

Quoted 5 lines
Quoted 2 lines
Quoted 1 line

HCI Event: Vendor (0xff) plen 9 [hci0] 10.866259

       29 19 09 17 20 48 07 11 00                       )... H?       

Is this meant to happen here?

If event received is not expected as the specification defines, I think it's probably incorrect.

But it requires more discussion with firmware people to make it clearer.

Quoted 317 lines
Quoted 308 lines
Quoted 1 line

HCI Event: Command Complete (0x0e) plen 12 [hci0] 10.866372

     Read Local Version Information (0x04|0x0001) ncmd 1
       Status: Success (0x00)
       HCI version: Bluetooth 4.2 (0x08) - Revision 4359 (0x1107)
       LMP version: Bluetooth 4.2 (0x08) - Subversion 2329 (0x0919)
       Manufacturer: MediaTek, Inc. (70)

< HCI Command: Read BD ADDR (0x04|0x0009) plen 0 [hci0] 10.866391

Quoted 1 line

HCI Event: Command Complete (0x0e) plen 10 [hci0] 10.866539

     Read BD ADDR (0x04|0x0009) ncmd 1
       Status: Success (0x00)
       Address: 00:00:46:76:22:01 (OLIVETTI NORTH AMERICA)

< HCI Command: Read Buffer Size (0x04|0x0005) plen 0 [hci0] 10.866609

Quoted 1 line

HCI Event: Command Complete (0x0e) plen 11 [hci0] 10.866754

Read Buffer Size (0x04|0x0005) ncmd 1
Status: Success (0x00)
ACL MTU: 1021 ACL max packet: 8
SCO MTU: 184 SCO max packet: 1
< HCI Command: Read Class of Device (0x03|0x0023) plen 0 [hci0] 10.866775

Quoted 1 line

HCI Event: Command Complete (0x0e) plen 7 [hci0] 10.866920

     Read Class of Device (0x03|0x0023) ncmd 1
       Status: Success (0x00)
       Class: 0x001f00
         Major class: Uncategorized, specific device code not specified
         Minor class: 0x00

< HCI Command: Read Local Name (0x03|0x0014) plen 0 [hci0] 10.866939

Quoted 1 line

HCI Event: Command Complete (0x0e) plen 252 [hci0] 10.867256

     Read Local Name (0x03|0x0014) ncmd 1
       Status: Success (0x00)
       Name: MTK MT7622 #1

< HCI Command: Read Voice Setting (0x03|0x0025) plen 0 [hci0] 10.867308

Quoted 1 line

HCI Event: Command Complete (0x0e) plen 6 [hci0] 10.867447

Read Voice Setting (0x03|0x0025) ncmd 1
Status: Success (0x00)
Setting: 0x0060
Input Coding: Linear
Input Data Format: 2's complement
Input Sample Size: 16-bit
# of bits padding at MSB: 0
Air Coding Format: CVSD
< HCI Command: Read Number of Supporte.. (0x03|0x0038) plen 0 [hci0] 10.867474

Quoted 1 line

HCI Event: Command Complete (0x0e) plen 5 [hci0] 10.867611

     Read Number of Supported IAC (0x03|0x0038) ncmd 1
       Status: Success (0x00)
       Number of IAC: 4

< HCI Command: Read Current IAC LAP (0x03|0x0039) plen 0 [hci0] 10.867678

Quoted 1 line

HCI Event: Command Complete (0x0e) plen 8 [hci0] 10.867865

     Read Current IAC LAP (0x03|0x0039) ncmd 1
       Status: Success (0x00)
       Number of IAC: 1
       Access code: 0x9e8b33 (General Inquiry)
< HCI Command: Set Event Filter (0x03|0x0005) plen 1           [hci0] 10.867890
       Type: Clear All Filters (0x00)
Quoted 1 line

HCI Event: Command Complete (0x0e) plen 4 [hci0] 10.868033

     Set Event Filter (0x03|0x0005) ncmd 1
       Status: Success (0x00)
< HCI Command: Write Connection Accept.. (0x03|0x0016) plen 2  [hci0] 10.868054
       Timeout: 20000.000 msec (0x7d00)
Quoted 1 line

HCI Event: Command Complete (0x0e) plen 4 [hci0] 10.868235

     Write Connection Accept Timeout (0x03|0x0016) ncmd 1
       Status: Success (0x00)

< HCI Command: LE Read Buffer Size (0x08|0x0002) plen 0 [hci0] 10.868262

Quoted 1 line

HCI Event: Command Complete (0x0e) plen 7 [hci0] 10.868392

LE Read Buffer Size (0x08|0x0002) ncmd 1
Status: Success (0x00)
Data packet length: 251
Num data packets: 8
< HCI Command: LE Read Local Supported.. (0x08|0x0003) plen 0 [hci0] 10.868413

Quoted 1 line

HCI Event: Command Complete (0x0e) plen 12 [hci0] 10.868587

LE Read Local Supported Features (0x08|0x0003) ncmd 1
Status: Success (0x00)
Features: 0xfd 0x00 0x00 0x00 0x00 0x00 0x00 0x00
LE Encryption
Extended Reject Indication Slave-initiated Features Exchange
LE Ping
LE Data Packet Length Extension
LL Privacy
Extended Scanner Filter Policies
< HCI Command: LE Read Supported States (0x08|0x001c) plen 0 [hci0] 10.868646

Quoted 1 line

HCI Event: Command Complete (0x0e) plen 12 [hci0] 10.868787

LE Read Supported States (0x08|0x001c) ncmd 1
Status: Success (0x00)
States: 0x000000001fffffff
Non-connectable Advertising State
Scannable Advertising State
Connectable Advertising State
High Duty Cycle Directed Advertising State
Passive Scanning State
Active Scanning State
Initiating State
and Connection State (Master Role)
Connection State (Slave Role)
Non-connectable Advertising State
and Passive Scanning State
Scannable Advertising State
and Passive Scanning State
Connectable Advertising State
and Passive Scanning State
High Duty Cycle Directed Advertising State
and Passive Scanning State
Non-connectable Advertising State
and Active Scanning State
Scannable Advertising State
and Active Scanning State
Connectable Advertising State
and Active Scanning State
High Duty Cycle Directed Advertising State
and Active Scanning State
Non-connectable Advertising State
and Initiating State
Scannable Advertising State
and Initiating State
Non-connectable Advertising State
and Connection State (Master Role)
Scannable Advertising State
and Connection State (Master Role)
Non-connectable Advertising State
and Connection State (Slave Role)
Scannable Advertising State
and Connection State (Slave Role)
Passive Scanning State
and Initiating State
Active Scanning State
and Initiating State
Passive Scanning State
and Connection State (Master Role)
Active Scanning State
and Connection State (Master Role)
Passive Scanning State
and Connection State (Slave Role)
Active Scanning State
and Connection State (Slave Role)
Initiating State
and Connection State (Master Role)
and Master Role & Master Role
< HCI Command: Read Local Supported Co.. (0x04|0x0002) plen 0 [hci0] 10.868807

Quoted 1 line

HCI Event: Command Complete (0x0e) plen 68 [hci0] 10.868985

Read Local Supported Commands (0x04|0x0002) ncmd 1
Status: Success (0x00)
Commands: 176 entries
Inquiry (Octet 0 - Bit 0)
Inquiry Cancel (Octet 0 - Bit 1)
Periodic Inquiry Mode (Octet 0 - Bit 2)
Exit Periodic Inquiry Mode (Octet 0 - Bit 3)
Create Connection (Octet 0 - Bit 4)
Disconnect (Octet 0 - Bit 5)
Add SCO Connection (Octet 0 - Bit 6)
Create Connection Cancel (Octet 0 - Bit 7)
Accept Connection Request (Octet 1 - Bit 0)
Reject Connection Request (Octet 1 - Bit 1)
Link Key Request Reply (Octet 1 - Bit 2)
Link Key Request Negative Reply (Octet 1 - Bit 3)
PIN Code Request Reply (Octet 1 - Bit 4)
PIN Code Request Negative Reply (Octet 1 - Bit 5) Change Connection Packet Type (Octet 1 - Bit 6) Authentication Requested (Octet 1 - Bit 7)
Set Connection Encryption (Octet 2 - Bit 0)
Change Connection Link Key (Octet 2 - Bit 1)
Master Link Key (Octet 2 - Bit 2)
Remote Name Request (Octet 2 - Bit 3)
Remote Name Request Cancel (Octet 2 - Bit 4)
Read Remote Supported Features (Octet 2 - Bit 5)
Read Remote Extended Features (Octet 2 - Bit 6)
Read Remote Version Information (Octet 2 - Bit 7) Read Clock Offset (Octet 3 - Bit 0)
Read LMP Handle (Octet 3 - Bit 1)
Sniff Mode (Octet 4 - Bit 2)
Exit Sniff Mode (Octet 4 - Bit 3)
QoS Setup (Octet 4 - Bit 6)
Role Discovery (Octet 4 - Bit 7)
Switch Role (Octet 5 - Bit 0)
Read Link Policy Settings (Octet 5 - Bit 1)
Write Link Policy Settings (Octet 5 - Bit 2)
Read Default Link Policy Settings (Octet 5 - Bit 3) Write Default Link Policy Settings (Octet 5 - Bit 4) Flow Specification (Octet 5 - Bit 5)
Set Event Mask (Octet 5 - Bit 6)
Reset (Octet 5 - Bit 7)
Set Event Filter (Octet 6 - Bit 0)
Flush (Octet 6 - Bit 1)
Read PIN Type (Octet 6 - Bit 2)
Write PIN Type (Octet 6 - Bit 3)
Create New Unit Key (Octet 6 - Bit 4)
Read Stored Link Key (Octet 6 - Bit 5)
Write Stored Link Key (Octet 6 - Bit 6)
Delete Stored Link Key (Octet 6 - Bit 7)
Write Local Name (Octet 7 - Bit 0)
Read Local Name (Octet 7 - Bit 1)
Read Connection Accept Timeout (Octet 7 - Bit 2) Write Connection Accept Timeout (Octet 7 - Bit 3) Read Page Timeout (Octet 7 - Bit 4)
Write Page Timeout (Octet 7 - Bit 5)
Read Scan Enable (Octet 7 - Bit 6)
Write Scan Enable (Octet 7 - Bit 7)
Read Page Scan Activity (Octet 8 - Bit 0)
Write Page Scan Activity (Octet 8 - Bit 1)
Read Inquiry Scan Activity (Octet 8 - Bit 2)
Write Inquiry Scan Activity (Octet 8 - Bit 3)
Read Authentication Enable (Octet 8 - Bit 4)
Write Authentication Enable (Octet 8 - Bit 5)
Read Encryption Mode (Octet 8 - Bit 6)
Write Encryption Mode (Octet 8 - Bit 7)
Read Class of Device (Octet 9 - Bit 0)
Write Class of Device (Octet 9 - Bit 1)
Read Voice Setting (Octet 9 - Bit 2)
Write Voice Setting (Octet 9 - Bit 3)
Read Automatic Flush Timeout (Octet 9 - Bit 4)
Write Automatic Flush Timeout (Octet 9 - Bit 5)
Read Num Broadcast Retransmissions (Octet 9 - Bit 6) Write Num Broadcast Retransmissions (Octet 9 - Bit 7) Read Transmit Power Level (Octet 10 - Bit 2)
Read Sync Flow Control Enable (Octet 10 - Bit 3) Write Sync Flow Control Enable (Octet 10 - Bit 4)
Set Controller To Host Flow Control (Octet 10 - Bit 5) Host Buffer Size (Octet 10 - Bit 6)
Host Number of Completed Packets (Octet 10 - Bit 7) Read Link Supervision Timeout (Octet 11 - Bit 0) Write Link Supervision Timeout (Octet 11 - Bit 1) Read Number of Supported IAC (Octet 11 - Bit 2)
Read Current IAC LAP (Octet 11 - Bit 3)
Write Current IAC LAP (Octet 11 - Bit 4)
Read Page Scan Mode (Octet 11 - Bit 7)
Write Page Scan Mode (Octet 12 - Bit 0)
Set AFH Host Channel Classification (Octet 12 - Bit 1) Read Inquiry Scan Type (Octet 12 - Bit 4)
Write Inquiry Scan Type (Octet 12 - Bit 5)
Read Inquiry Mode (Octet 12 - Bit 6)
Write Inquiry Mode (Octet 12 - Bit 7)
Read Page Scan Type (Octet 13 - Bit 0)
Write Page Scan Type (Octet 13 - Bit 1)
Read AFH Channel Assessment Mode (Octet 13 - Bit 2) Write AFH Channel Assessment Mode (Octet 13 - Bit 3) Read Local Version Information (Octet 14 - Bit 3) Read Local Supported Features (Octet 14 - Bit 5)
Read Local Extended Features (Octet 14 - Bit 6)
Read Buffer Size (Octet 14 - Bit 7)
Read Country Code (Octet 15 - Bit 0)
Read BD ADDR (Octet 15 - Bit 1)
Read Failed Contact Counter (Octet 15 - Bit 2)
Reset Failed Contact Counter (Octet 15 - Bit 3)
Read Link Quality (Octet 15 - Bit 4)
Read RSSI (Octet 15 - Bit 5)
Read AFH Channel Map (Octet 15 - Bit 6)
Read Clock (Octet 15 - Bit 7)
Read Loopback Mode (Octet 16 - Bit 0)
Write Loopback Mode (Octet 16 - Bit 1)
Enable Device Under Test Mode (Octet 16 - Bit 2) Setup Synchronous Connection (Octet 16 - Bit 3) Accept Synchronous Connection Request (Octet 16 - Bit 4) Reject Synchronous Connection Request (Octet 16 - Bit 5) Read Extended Inquiry Response (Octet 17 - Bit 0) Write Extended Inquiry Response (Octet 17 - Bit 1) Refresh Encryption Key (Octet 17 - Bit 2)
Sniff Subrating (Octet 17 - Bit 4)
Read Simple Pairing Mode (Octet 17 - Bit 5)
Write Simple Pairing Mode (Octet 17 - Bit 6)
Read Local OOB Data (Octet 17 - Bit 7)
Read Inquiry Response TX Power Level (Octet 18 - Bit 0) Write Inquiry Transmit Power Level (Octet 18 - Bit 1) Read Default Erroneous Data Reporting (Octet 18 - Bit 2) Write Default Erroneous Data Reporting (Octet 18 - Bit 3) IO Capability Request Reply (Octet 18 - Bit 7)
User Confirmation Request Reply (Octet 19 - Bit 0) User Confirmation Request Neg Reply (Octet 19 - Bit 1) User Passkey Request Reply (Octet 19 - Bit 2)
User Passkey Request Negative Reply (Octet 19 - Bit 3) Remote OOB Data Request Reply (Octet 19 - Bit 4) Write Simple Pairing Debug Mode (Octet 19 - Bit 5) Enhanced Flush (Octet 19 - Bit 6)
Remote OOB Data Request Neg Reply (Octet 19 - Bit 7) Send Keypress Notification (Octet 20 - Bit 2)
IO Capability Request Negative Reply (Octet 20 - Bit 3) Read Encryption Key Size (Octet 20 - Bit 4)
Set Event Mask Page 2 (Octet 22 - Bit 2)
Read Enhanced Transmit Power Level (Octet 24 - Bit 0) Enhanced Setup Synchronous Connection (Octet 29 - Bit 3) Enhanced Accept Synchronous Connection Request (Octet 29 - Bit 4) Read Local Supported Codecs (Octet 29 - Bit 5)
Set Triggered Clock Capture (Octet 30 - Bit 5) Truncated Page (Octet 30 - Bit 6)
Truncated Page Cancel (Octet 30 - Bit 7)
Set Connectionless Slave Broadcast (Octet 31 - Bit 0) Start Synchronization Train (Octet 31 - Bit 2)
Set Reserved LT_ADDR (Octet 31 - Bit 4)
Delete Reserved LT_ADDR (Octet 31 - Bit 5)
Set Connectionless Slave Broadcast Data (Octet 31 - Bit 6) Read Synchronization Train Parameters (Octet 31 - Bit 7) Write Synchronization Train Parameters (Octet 32 - Bit 0) Remote OOB Extended Data Request Reply (Octet 32 - Bit 1) Read Authenticated Payload Timeout (Octet 32 - Bit 4) Write Authenticated Payload Timeout (Octet 32 - Bit 5) Read Local OOB Extended Data (Octet 32 - Bit 6)
Write Secure Connections Test Mode (Octet 32 - Bit 7) Read Extended Page Timeout (Octet 33 - Bit 0)
Write Extended Page Timeout (Octet 33 - Bit 1)
Read Extended Inquiry Length (Octet 33 - Bit 2)
Write Extended Inquiry Length (Octet 33 - Bit 3)
LE Set Data Length (Octet 33 - Bit 6)
LE Read Suggested Default Data Length (Octet 33 - Bit 7) LE Write Suggested Default Data Length (Octet 34 - Bit 0) LE Read Local P-256 Public Key (Octet 34 - Bit 1)
LE Generate DHKey (Octet 34 - Bit 2)
LE Add Device To Resolving List (Octet 34 - Bit 3)
LE Remove Device From Resolving List (Octet 34 - Bit 4) LE Clear Resolving List (Octet 34 - Bit 5)
LE Read Resolving List Size (Octet 34 - Bit 6)
LE Read Peer Resolvable Address (Octet 34 - Bit 7)
LE Read Local Resolvable Address (Octet 35 - Bit 0)

Quoted 8 lines

LE Set Address Resolution Enable (Octet 35 - Bit 1) LE Set Resolvable Private Address Timeout (Octet 35 - Bit 2) LE Read Maximum Data Length (Octet 35 - Bit 3) Octet 35 - Bit 4
Octet 35 - Bit 5
Octet 35 - Bit 6
Octet 35 - Bit 7
Octet 36 - Bit 0

Quoted 2 lines

So you support the PHY commands, but do not indicate support LE 2M or LE Coded? Also these are Bluetooth 5.0 commands.

To be honest. When I ported the device into Bluez core, a unexpected event for LE read local feature would cause a fail at Bluez core, so I made a hack on Bluez core

to allow that I can keeping bring up the device without be blocked by the issue most probably from firmware.

Below code snippet is the only thing I added to avoid a fail at Bluez core to bring up the device.

@@ -927,6 +927,8 @@ static void hci_cc_le_read_local_features(struct hci_dev *hdev,

                return;

        memcpy(hdev->le_features, rp->features, 8);

+ hdev->le_features[0] = 0;
+ hdev->le_features[1] = 0;
}

Quoted 245 lines
Quoted 167 lines

< HCI Command: Write Simple Pairing Mode (0x03|0x0056) plen 1 [hci0] 10.869023

       Mode: Enabled (0x01)
Quoted 1 line

HCI Event: Command Complete (0x0e) plen 4 [hci0] 10.869185

     Write Simple Pairing Mode (0x03|0x0056) ncmd 1
       Status: Success (0x00)
< HCI Command: Write Inquiry Mode (0x03|0x0045) plen 1         [hci0] 10.869239
       Mode: Inquiry Result with RSSI or Extended Inquiry Result (0x02)
Quoted 1 line

HCI Event: Command Complete (0x0e) plen 4 [hci0] 10.869371

     Write Inquiry Mode (0x03|0x0045) ncmd 1
       Status: Success (0x00)

< HCI Command: Read Inquiry Response T.. (0x03|0x0058) plen 0 [hci0] 10.869396

Quoted 1 line

HCI Event: Command Complete (0x0e) plen 5 [hci0] 10.869552

     Read Inquiry Response TX Power Level (0x03|0x0058) ncmd 1
       Status: Success (0x00)
       TX power: -1 dBm
< HCI Command: Read Local Extended Fea.. (0x04|0x0004) plen 1  [hci0] 10.869572
       Page: 1
Quoted 1 line

HCI Event: Command Complete (0x0e) plen 14 [hci0] 10.869729

     Read Local Extended Features (0x04|0x0004) ncmd 1
       Status: Success (0x00)
       Page: 1/2
       Features: 0x01 0x00 0x00 0x00 0x00 0x00 0x00 0x00
         Secure Simple Pairing (Host Support)

< HCI Command: Set Event Mask (0x03|0x0001) plen 8 [hci0] 10.869783
Mask: 0x3dbff807fffbffff
Inquiry Complete
Inquiry Result
Connection Complete
Connection Request
Disconnection Complete Authentication Complete
Remote Name Request Complete Encryption Change
Change Connection Link Key Complete Master Link Key Complete
Read Remote Supported Features Complete Read Remote Version Information Complete QoS Setup Complete
Command Complete
Command Status
Hardware Error
Flush Occurred
Role Change
Mode Change
Return Link Keys
PIN Code Request
Link Key Request
Link Key Notification
Loopback Command
Data Buffer Overflow
Max Slots Change
Read Clock Offset Complete Connection Packet Type Changed
QoS Violation
Page Scan Mode Change
Page Scan Repetition Mode Change Flow Specification Complete
Inquiry Result with RSSI
Read Remote Extended Features Complete Synchronous Connection Complete Synchronous Connection Changed Sniff Subrating
Extended Inquiry Result
Encryption Key Refresh Complete
IO Capability Request
IO Capability Request Reply
User Confirmation Request
User Passkey Request
Remote OOB Data Request
Simple Pairing Complete
Link Supervision Timeout Changed Enhanced Flush Complete
User Passkey Notification
Keypress Notification
Remote Host Supported Features Notification LE Meta

Quoted 1 line

HCI Event: Command Complete (0x0e) plen 4 [hci0] 10.869921

     Set Event Mask (0x03|0x0001) ncmd 1
       Status: Success (0x00)
< HCI Command: Read Stored Link Key (0x03|0x000d) plen 7       [hci0] 10.869947
       Address: 00:00:00:00:00:00 (OUI 00-00-00)
       Read all: 0x01
Quoted 1 line

HCI Event: Command Complete (0x0e) plen 8 [hci0] 10.870129

Read Stored Link Key (0x03|0x000d) ncmd 1
Status: Success (0x00)
Max num keys: 4
Num keys: 0
< HCI Command: Write Default Link Poli.. (0x02|0x000f) plen 2 [hci0] 10.870148
Link policy: 0x0005
Enable Role Switch
Enable Sniff Mode

Quoted 1 line

HCI Event: Command Complete (0x0e) plen 4 [hci0] 10.870310

     Write Default Link Policy Settings (0x02|0x000f) ncmd 1
       Status: Success (0x00)

< HCI Command: Read Page Scan Activity (0x03|0x001b) plen 0 [hci0] 10.870331

Quoted 1 line

HCI Event: Command Complete (0x0e) plen 8 [hci0] 10.870485

     Read Page Scan Activity (0x03|0x001b) ncmd 1
       Status: Success (0x00)
       Interval: 1280.000 msec (0x0800)
       Window: 11.250 msec (0x0012)

< HCI Command: Read Page Scan Type (0x03|0x0046) plen 0 [hci0] 10.870504

Quoted 1 line

HCI Event: Command Complete (0x0e) plen 5 [hci0] 10.870652

     Read Page Scan Type (0x03|0x0046) ncmd 1
       Status: Success (0x00)
       Type: Standard Scan (0x00)

< HCI Command: LE Set Event Mask (0x08|0x0001) plen 8 [hci0] 10.870671
Mask: 0x0000000000000980
LE Read Local P-256 Public Key Complete
LE Generate DHKey Complete
Unknown mask (0x0000000000000800)

Quoted 1 line

HCI Event: Command Complete (0x0e) plen 4 [hci0] 10.870839

     LE Set Event Mask (0x08|0x0001) ncmd 1
       Status: Success (0x00)
< HCI Command: Write LE Host Supported (0x03|0x006d) plen 2    [hci0] 10.870859
       Supported: 0x01
       Simultaneous: 0x00
Quoted 1 line

HCI Event: Command Complete (0x0e) plen 4 [hci0] 10.871028

     Write LE Host Supported (0x03|0x006d) ncmd 1
       Status: Success (0x00)
< HCI Command: Read Local Extended Fea.. (0x04|0x0004) plen 1  [hci0] 10.871059
       Page: 2
Quoted 1 line

HCI Event: Command Complete (0x0e) plen 14 [hci0] 10.871201

     Read Local Extended Features (0x04|0x0004) ncmd 1
       Status: Success (0x00)
       Page: 2/2
       Features: 0x25 0x0b 0x00 0x00 0x00 0x00 0x00 0x00
         Connectionless Slave Broadcast - Master
         Synchronization Train
         Generalized interlaced scan
         Secure Connections (Controller Support)
         Ping
         Train nudging
< HCI Command: Delete Stored Link Key (0x03|0x0012) plen 7     [hci0] 10.871240
       Address: 00:00:00:00:00:00 (OUI 00-00-00)
       Delete all: 0x01
Quoted 1 line

HCI Event: Command Complete (0x0e) plen 6 [hci0] 10.871384

     Delete Stored Link Key (0x03|0x0012) ncmd 1
       Status: Success (0x00)
       Num keys: 0

< HCI Command: Set Event Mask Page 2 (0x03|0x0063) plen 8 [hci0] 10.871403
Mask: 0x0000000000b0c000
Triggered Clock Capture
Synchronization Train Complete
Slave Page Response Timeout Connectionless Slave Broadcast Channel Map Change Authenticated Payload Timeout Expired

Quoted 1 line

HCI Event: Command Complete (0x0e) plen 4 [hci0] 10.871566

     Set Event Mask Page 2 (0x03|0x0063) ncmd 1
       Status: Success (0x00)

< HCI Command: Read Local Supported Co.. (0x04|0x000b) plen 0 [hci0] 10.871599

Quoted 1 line

HCI Event: Command Complete (0x0e) plen 8 [hci0] 10.871750

     Read Local Supported Codecs (0x04|0x000b) ncmd 1
       Status: Success (0x00)
       Number of supported codecs: 2
         Codec: CVSD (0x02)
         Codec: Transparent (0x03)
       Number of vendor codecs: 0

< HCI Command: Read Synchronization Tr.. (0x03|0x0077) plen 0 [hci0] 10.871769

Quoted 1 line

HCI Event: Command Complete (0x0e) plen 11 [hci0] 10.871928

     Read Synchronization Train Parameters (0x03|0x0077) ncmd 1
       Status: Success (0x00)
       Interval: 0.000 msec (0x0000)
       Timeout: 0.000 msec (0x00000000)
       Service data: 0x00
< HCI Command: Write Secure Connection.. (0x03|0x007a) plen 1  [hci0] 10.871947
       Support: Enabled (0x01)
Quoted 1 line

HCI Event: Command Complete (0x0e) plen 4 [hci0] 10.872098

Quoted 8 lines
     Write Secure Connections Host Support (0x03|0x007a) ncmd 1
       Status: Success (0x00)

< HCI Command: Unknown (0x08|0x0031) plen 3 [hci0] 10.872156
03 00 00 ...

Quoted 1 line

HCI Event: Command Complete (0x0e) plen 4 [hci0] 10.872322

     Unknown (0x08|0x0031) ncmd 1
       Status: Success (0x00)

= Index Info: 00:00:46:76:22:01 (MediaTek, Inc.) [hci0] 10.872361

This extra index info worries me a little bit. I need to check if that is suppose to happen.

Quoted 56 lines

< HCI Command: LE Set Scan Response D.. (0x08|0x0009) plen 32 [hci0] 10.872431
Length: 10
Name (complete): builder

Quoted 1 line

HCI Event: Command Complete (0x0e) plen 4 [hci0] 10.872606

     LE Set Scan Response Data (0x08|0x0009) ncmd 1
       Status: Success (0x00)
< HCI Command: Write Scan Enable (0x03|0x001a) plen 1          [hci0] 10.872627
       Scan enable: Page Scan (0x02)
Quoted 1 line

HCI Event: Command Complete (0x0e) plen 4 [hci0] 10.872819

     Write Scan Enable (0x03|0x001a) ncmd 1
       Status: Success (0x00)
< HCI Command: Write Class of Device (0x03|0x0024) plen 3      [hci0] 10.872841
       Class: 0x000000
         Major class: Miscellaneous
         Minor class: 0x00
Quoted 1 line

HCI Event: Command Complete (0x0e) plen 4 [hci0] 10.873036

     Write Class of Device (0x03|0x0024) ncmd 1
       Status: Success (0x00)
* Unknown packet (code 17 len 9)                               [hci0] 10.873069
       02 00 00 00 07 00 00 00 00                       .........       
* Unknown packet (code 17 len 9)                               [hci0] 10.873069
       01 00 00 00 07 00 00 00 00                       .........       

< HCI Command: Write Local Name (0x03|0x0013) plen 248 [hci0] 10.873096
Name: builder

Quoted 1 line

HCI Event: Command Complete (0x0e) plen 4 [hci0] 10.873446

     Write Local Name (0x03|0x0013) ncmd 1
       Status: Success (0x00)
< HCI Command: Write Extended Inquir.. (0x03|0x0052) plen 241  [hci0] 10.873470
       FEC: Not required (0x00)
       Name (complete): builder
       TX power: -1 dBm
       Device ID: USB Implementer's Forum assigned (0x0002)
         Vendor: Linux Foundation (0x1d6b)
         Product: 0x0246
         Version: 5.2.11 (0x052b)
       16-bit Service UUIDs (complete): 4 entries
         Generic Access Profile (0x1800)
         Generic Attribute Profile (0x1801)
         A/V Remote Control (0x110e)
         A/V Remote Control Target (0x110c)
Quoted 1 line

HCI Event: Command Complete (0x0e) plen 4 [hci0] 10.873857

     Write Extended Inquiry Response (0x03|0x0052) ncmd 1
       Status: Success (0x00)
* Unknown packet (code 17 len 13)                              [hci0] 10.873903
       01 00 00 00 01 00 05 00 00 d1 0a 00 00           .............   
* Unknown packet (code 17 len 10)                              [hci0] 10.873913
       02 00 00 00 06 00 d1 0a 00 00                    ..........      
* Unknown packet (code 16 len 7)                               [hci0] 17.803939
       01 00 00 00 05 00 00                             .......         
< HCI Command: Write Scan Enable (0x03|0x001a) plen 1          [hci0] 17.803983
       Scan enable: No Scans (0x00)
Quoted 1 line

HCI Event: Command Complete (0x0e) plen 4 [hci0] 17.804233

     Write Scan Enable (0x03|0x001a) ncmd 1
       Status: Success (0x00)
< HCI Command: Vendor (0x3f|0x006f) plen 6                     [hci0] 17.804282
       01 06 02 00 00 00                                ......          
Quoted 7 lines
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 17.804636

       02 06 01 00 00                                   .....           
* Unknown packet (code 17 len 13)                              [hci0] 17.811580
       01 00 00 00 01 00 05 00 00 d0 0a 00 00           .............   
* Unknown packet (code 17 len 10)                              [hci0] 17.811596
       02 00 00 00 06 00 d0 0a 00 00                    ..........      

= Close Index: 00:00:46:76:22:01 [hci0] 17.811625

Regards

Marcel

maintainer
#12 lore raw

Re: [PATCH v2 4/7] Bluetooth: Add new quirk for non-persistent setup settings

Hi Sean,

Quoted 23 lines
Quoted 2 lines
Quoted 2 lines
Quoted 2 lines
Quoted 2 lines
Quoted 2 lines

[ ... ]

[ ... ]

Quoted 18 lines
Quoted 17 lines

I post it as plain text as below

Bluetooth monitor ver 5.37
= Note: Linux version 4.16.0-rc1+ (aarch64) 0.641494
= Note: Bluetooth subsystem version 2.22 0.641502
= New Index: 00:00:46:76:22:01 (BR/EDR,UART,hci0) [hci0] 0.641505
* Unknown packet (code 14 len 30) 0.641509

      01 00 00 00 02 00 01 0e 00 01 00 00 00 10 62 6c  ..............bl
      75 65 74 6f 6f 74 68 64 00 00 00 00 00 00        uetoothd......  
* Unknown packet (code 14 len 30)                                      0.641592
      02 00 00 00 02 00 01 0e 00 01 00 00 00 10 62 74  ..............bt
      6d 6f 6e 00 00 00 00 00 00 00 00 00 00 00        mon...........  
* Unknown packet (code 16 len 7)                                [hci0] 6.536771
      01 00 00 00 05 00 01                             .......         

= Open Index: 00:00:46:76:22:01 [hci0] 6.717019
= Index Info: 00:00:46:76:22:01 (MediaTek, Inc.) [hci0] 6.717030

Quoted 4 lines
Quoted 2 lines

can you try with the latest BlueZ 5.49 or git version. Seems it actually stumbles over the extra packet here. Fun fact is that I can not get a backtrace to pin-point the issue in btmon and why it crashes.

I had less experience updating user land BlueZ, but I can try it as possible and see whether Unknown packets still are present at newest version BlueZ. Hopefully I don't misunderstand your point here.

please use the latest btmon and check if it can read your trace.

Quoted 155 lines
Quoted 155 lines
Quoted 154 lines
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.741093

      02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.742088

      02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.743102

      02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.744105

      02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.745109

      02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.746104

      02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.747097

      02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.748090

      02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.749078

      02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.750070

      02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.751061

      02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.752054

      02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.753046

      02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.754038

      02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.755031

      02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.756025

      02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.757013

      02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.758006

      02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.758999

      02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.759991

      02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.760983

      02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.761975

      02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.762963

      02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.763956

      02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.764948

      02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.765941

      02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.766933

      02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.767926

      02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.768919

      02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.769914

      02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.770909

      02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.771908

      02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.772904

      02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.773898

      02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.774892

      02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.775890

      02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.776882

      02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.777877

      02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.778871

      02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.779869

      02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.780864

      02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.781858

      02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.782852

      02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.783850

      02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.784845

      02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.785839

      02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.786833

      02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.787831

      02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.788826

      02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.789820

      02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.790814

      02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.791813

      02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.792809

      02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.793803

      02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.794798

      02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.795797

      02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.796791

      02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.797786

      02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.798779

      02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.799778

      02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.800774

      02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.801769

      02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.802763

      02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.803761

      02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.804755

      02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.805749

      02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.806743

      02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.807741

      02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.808737

      02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.809731

      02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.810725

      02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.811725

      02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.812719

      02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.813714

      02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.814708

      02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.815705

      02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.816378

      02 01 01 00 00                                   .....           
Quoted 8 lines
Quoted 2 lines

Why do I see only HCI events here? Is this event conveying any useful information. It is kinda complicated that this is 0xe4 event code which is actually reserved for future use by the Bluetooth SIG. Are there any accompanying HCI commands for this and they just not make it into btmon?

I have made all vendor HCI commands go through BlueZ core in v2 patch.

And for these HCI events, they are all corresponding to vendor ACL data, applied only to firmware setup packets, but they're not being sent via BlueZ core, so they are not being logged in btmon.

As for its event, where heading 0xe4 refers to a vendor event and is used on notification of that either vendor ACL data or vendor HCI command have been done.

I would prefer if everything goes via the Bluetooth core since then we have it all properly scheduled. Sending things down the ACL data path however if kinda funky. Does your hardware accept sending command both via ACL data and as HCI command? If so, then I would prefer sending them as HCI commands since the speed improvement you think you are getting is neglectable on Linux (I have been down that path). This seems to be a pure optimization when Windows is driving the device.

And the vendor event 0xe4 is really only received during firmware download? It is not ever received during normal operation?

Quoted 75 lines
Quoted 5 lines
Quoted 5 lines

< HCI Command: Vendor (0x3f|0x006f) plen 5 [hci0] 6.816413

      01 07 01 00 04                                   .....           
Quoted 9 lines
Quoted 6 lines
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.816536

      02 07 01 00 00                                   .....           
< HCI Command: Vendor (0x3f|0x006f) plen 6                      [hci0] 8.845071
      01 06 02 00 00 01                                ......          
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 8.923456

      02 06 01 00 00                                   .....           

Here it looks like you have 0x006f opcode with first octet 0x01 for command and then vendor event 0xe4 with first octet 0x02 for event. I assume the second octet is then the vendor command code for these.

Yes, you're right.

Quoted 58 lines
Quoted 58 lines

< HCI Command: Reset (0x03|0x0003) plen 0 [hci0] 10.861118

Quoted 1 line

HCI Event: Command Complete (0x0e) plen 4 [hci0] 10.865763

    Reset (0x03|0x0003) ncmd 1
      Status: Success (0x00)

< HCI Command: Read Local Supported Fe.. (0x04|0x0003) plen 0 [hci0] 10.865805

Quoted 1 line

HCI Event: Command Complete (0x0e) plen 12 [hci0] 10.865965

Read Local Supported Features (0x04|0x0003) ncmd 1
Status: Success (0x00)
Features: 0xbf 0x3e 0x8d 0xfe 0xdb 0xff 0x7b 0x87
3 slot packets
5 slot packets
Encryption
Slot offset
Timing accuracy
Role switch
Sniff mode
Power control requests
Channel quality driven data rate (CQDDR)
SCO link
HV2 packets
HV3 packets
CVSD synchronous data
Power control
Transparent synchronous data
Broadcast Encryption
Enhanced Data Rate ACL 2 Mbps mode
Enhanced Data Rate ACL 3 Mbps mode
Enhanced inquiry scan
Interlaced inquiry scan
Interlaced page scan
RSSI with inquiry results
Extended SCO link (EV3 packets)
EV4 packets
EV5 packets
AFH capable slave
AFH classification slave
LE Supported (Controller)
3-slot Enhanced Data Rate ACL packets
5-slot Enhanced Data Rate ACL packets
Sniff subrating
Pause encryption
AFH capable master
AFH classification master
Enhanced Data Rate eSCO 2 Mbps mode
Enhanced Data Rate eSCO 3 Mbps mode
3-slot Enhanced Data Rate eSCO packets
Extended Inquiry Response
Simultaneous LE and BR/EDR (Controller)
Secure Simple Pairing
Encapsulated PDU
Erroneous Data Reporting
Non-flushable Packet Boundary Flag
Link Supervision Timeout Changed Event
Inquiry TX Power Level
Enhanced Power Control
Extended features
< HCI Command: Read Local Version Info.. (0x04|0x0001) plen 0 [hci0] 10.865987

Quoted 1 line

HCI Event: Vendor (0xff) plen 9 [hci0] 10.866259

Quoted 8 lines
Quoted 4 lines
Quoted 1 line
      29 19 09 17 20 48 07 11 00                       )... H?       

Is this meant to happen here?

If event received is not expected as the specification defines, I think it's probably incorrect.

But it requires more discussion with firmware people to make it clearer.

Please check and let them decode what this event means.

Quoted 328 lines
Quoted 318 lines
Quoted 309 lines
Quoted 2 lines

HCI Event: Command Complete (0x0e) plen 12 [hci0] 10.866372

    Read Local Version Information (0x04|0x0001) ncmd 1
      Status: Success (0x00)
      HCI version: Bluetooth 4.2 (0x08) - Revision 4359 (0x1107)
      LMP version: Bluetooth 4.2 (0x08) - Subversion 2329 (0x0919)
      Manufacturer: MediaTek, Inc. (70)

< HCI Command: Read BD ADDR (0x04|0x0009) plen 0 [hci0] 10.866391

Quoted 1 line

HCI Event: Command Complete (0x0e) plen 10 [hci0] 10.866539

    Read BD ADDR (0x04|0x0009) ncmd 1
      Status: Success (0x00)
      Address: 00:00:46:76:22:01 (OLIVETTI NORTH AMERICA)

< HCI Command: Read Buffer Size (0x04|0x0005) plen 0 [hci0] 10.866609

Quoted 1 line

HCI Event: Command Complete (0x0e) plen 11 [hci0] 10.866754

Read Buffer Size (0x04|0x0005) ncmd 1
Status: Success (0x00)
ACL MTU: 1021 ACL max packet: 8
SCO MTU: 184 SCO max packet: 1
< HCI Command: Read Class of Device (0x03|0x0023) plen 0 [hci0] 10.866775

Quoted 1 line

HCI Event: Command Complete (0x0e) plen 7 [hci0] 10.866920

    Read Class of Device (0x03|0x0023) ncmd 1
      Status: Success (0x00)
      Class: 0x001f00
        Major class: Uncategorized, specific device code not specified
        Minor class: 0x00

< HCI Command: Read Local Name (0x03|0x0014) plen 0 [hci0] 10.866939

Quoted 1 line

HCI Event: Command Complete (0x0e) plen 252 [hci0] 10.867256

    Read Local Name (0x03|0x0014) ncmd 1
      Status: Success (0x00)
      Name: MTK MT7622 #1

< HCI Command: Read Voice Setting (0x03|0x0025) plen 0 [hci0] 10.867308

Quoted 1 line

HCI Event: Command Complete (0x0e) plen 6 [hci0] 10.867447

Read Voice Setting (0x03|0x0025) ncmd 1
Status: Success (0x00)
Setting: 0x0060
Input Coding: Linear
Input Data Format: 2's complement
Input Sample Size: 16-bit
# of bits padding at MSB: 0
Air Coding Format: CVSD
< HCI Command: Read Number of Supporte.. (0x03|0x0038) plen 0 [hci0] 10.867474

Quoted 1 line

HCI Event: Command Complete (0x0e) plen 5 [hci0] 10.867611

    Read Number of Supported IAC (0x03|0x0038) ncmd 1
      Status: Success (0x00)
      Number of IAC: 4

< HCI Command: Read Current IAC LAP (0x03|0x0039) plen 0 [hci0] 10.867678

Quoted 1 line

HCI Event: Command Complete (0x0e) plen 8 [hci0] 10.867865

    Read Current IAC LAP (0x03|0x0039) ncmd 1
      Status: Success (0x00)
      Number of IAC: 1
      Access code: 0x9e8b33 (General Inquiry)
< HCI Command: Set Event Filter (0x03|0x0005) plen 1           [hci0] 10.867890
      Type: Clear All Filters (0x00)
Quoted 1 line

HCI Event: Command Complete (0x0e) plen 4 [hci0] 10.868033

    Set Event Filter (0x03|0x0005) ncmd 1
      Status: Success (0x00)
< HCI Command: Write Connection Accept.. (0x03|0x0016) plen 2  [hci0] 10.868054
      Timeout: 20000.000 msec (0x7d00)
Quoted 1 line

HCI Event: Command Complete (0x0e) plen 4 [hci0] 10.868235

    Write Connection Accept Timeout (0x03|0x0016) ncmd 1
      Status: Success (0x00)

< HCI Command: LE Read Buffer Size (0x08|0x0002) plen 0 [hci0] 10.868262

Quoted 1 line

HCI Event: Command Complete (0x0e) plen 7 [hci0] 10.868392

LE Read Buffer Size (0x08|0x0002) ncmd 1
Status: Success (0x00)
Data packet length: 251
Num data packets: 8
< HCI Command: LE Read Local Supported.. (0x08|0x0003) plen 0 [hci0] 10.868413

Quoted 1 line

HCI Event: Command Complete (0x0e) plen 12 [hci0] 10.868587

LE Read Local Supported Features (0x08|0x0003) ncmd 1
Status: Success (0x00)
Features: 0xfd 0x00 0x00 0x00 0x00 0x00 0x00 0x00
LE Encryption
Extended Reject Indication Slave-initiated Features Exchange
LE Ping
LE Data Packet Length Extension
LL Privacy
Extended Scanner Filter Policies
< HCI Command: LE Read Supported States (0x08|0x001c) plen 0 [hci0] 10.868646

Quoted 1 line

HCI Event: Command Complete (0x0e) plen 12 [hci0] 10.868787

LE Read Supported States (0x08|0x001c) ncmd 1
Status: Success (0x00)
States: 0x000000001fffffff
Non-connectable Advertising State
Scannable Advertising State
Connectable Advertising State
High Duty Cycle Directed Advertising State
Passive Scanning State
Active Scanning State
Initiating State
and Connection State (Master Role)
Connection State (Slave Role)
Non-connectable Advertising State
and Passive Scanning State
Scannable Advertising State
and Passive Scanning State
Connectable Advertising State
and Passive Scanning State
High Duty Cycle Directed Advertising State
and Passive Scanning State
Non-connectable Advertising State
and Active Scanning State
Scannable Advertising State
and Active Scanning State
Connectable Advertising State
and Active Scanning State
High Duty Cycle Directed Advertising State
and Active Scanning State
Non-connectable Advertising State
and Initiating State
Scannable Advertising State
and Initiating State
Non-connectable Advertising State
and Connection State (Master Role)
Scannable Advertising State
and Connection State (Master Role)
Non-connectable Advertising State
and Connection State (Slave Role)
Scannable Advertising State
and Connection State (Slave Role)
Passive Scanning State
and Initiating State
Active Scanning State
and Initiating State
Passive Scanning State
and Connection State (Master Role)
Active Scanning State
and Connection State (Master Role)
Passive Scanning State
and Connection State (Slave Role)
Active Scanning State
and Connection State (Slave Role)
Initiating State
and Connection State (Master Role)
and Master Role & Master Role
< HCI Command: Read Local Supported Co.. (0x04|0x0002) plen 0 [hci0] 10.868807

Quoted 1 line

HCI Event: Command Complete (0x0e) plen 68 [hci0] 10.868985

Read Local Supported Commands (0x04|0x0002) ncmd 1
Status: Success (0x00)
Commands: 176 entries
Inquiry (Octet 0 - Bit 0)
Inquiry Cancel (Octet 0 - Bit 1)
Periodic Inquiry Mode (Octet 0 - Bit 2)
Exit Periodic Inquiry Mode (Octet 0 - Bit 3)
Create Connection (Octet 0 - Bit 4)
Disconnect (Octet 0 - Bit 5)
Add SCO Connection (Octet 0 - Bit 6)
Create Connection Cancel (Octet 0 - Bit 7)
Accept Connection Request (Octet 1 - Bit 0)
Reject Connection Request (Octet 1 - Bit 1)
Link Key Request Reply (Octet 1 - Bit 2)
Link Key Request Negative Reply (Octet 1 - Bit 3)
PIN Code Request Reply (Octet 1 - Bit 4)
PIN Code Request Negative Reply (Octet 1 - Bit 5) Change Connection Packet Type (Octet 1 - Bit 6) Authentication Requested (Octet 1 - Bit 7)
Set Connection Encryption (Octet 2 - Bit 0)
Change Connection Link Key (Octet 2 - Bit 1)
Master Link Key (Octet 2 - Bit 2)
Remote Name Request (Octet 2 - Bit 3)
Remote Name Request Cancel (Octet 2 - Bit 4)
Read Remote Supported Features (Octet 2 - Bit 5)
Read Remote Extended Features (Octet 2 - Bit 6)
Read Remote Version Information (Octet 2 - Bit 7) Read Clock Offset (Octet 3 - Bit 0)
Read LMP Handle (Octet 3 - Bit 1)
Sniff Mode (Octet 4 - Bit 2)
Exit Sniff Mode (Octet 4 - Bit 3)
QoS Setup (Octet 4 - Bit 6)
Role Discovery (Octet 4 - Bit 7)
Switch Role (Octet 5 - Bit 0)
Read Link Policy Settings (Octet 5 - Bit 1)
Write Link Policy Settings (Octet 5 - Bit 2)
Read Default Link Policy Settings (Octet 5 - Bit 3) Write Default Link Policy Settings (Octet 5 - Bit 4) Flow Specification (Octet 5 - Bit 5)
Set Event Mask (Octet 5 - Bit 6)
Reset (Octet 5 - Bit 7)
Set Event Filter (Octet 6 - Bit 0)
Flush (Octet 6 - Bit 1)
Read PIN Type (Octet 6 - Bit 2)
Write PIN Type (Octet 6 - Bit 3)
Create New Unit Key (Octet 6 - Bit 4)
Read Stored Link Key (Octet 6 - Bit 5)
Write Stored Link Key (Octet 6 - Bit 6)
Delete Stored Link Key (Octet 6 - Bit 7)
Write Local Name (Octet 7 - Bit 0)
Read Local Name (Octet 7 - Bit 1)
Read Connection Accept Timeout (Octet 7 - Bit 2) Write Connection Accept Timeout (Octet 7 - Bit 3) Read Page Timeout (Octet 7 - Bit 4)
Write Page Timeout (Octet 7 - Bit 5)
Read Scan Enable (Octet 7 - Bit 6)
Write Scan Enable (Octet 7 - Bit 7)
Read Page Scan Activity (Octet 8 - Bit 0)
Write Page Scan Activity (Octet 8 - Bit 1)
Read Inquiry Scan Activity (Octet 8 - Bit 2)
Write Inquiry Scan Activity (Octet 8 - Bit 3)
Read Authentication Enable (Octet 8 - Bit 4)
Write Authentication Enable (Octet 8 - Bit 5)
Read Encryption Mode (Octet 8 - Bit 6)
Write Encryption Mode (Octet 8 - Bit 7)
Read Class of Device (Octet 9 - Bit 0)
Write Class of Device (Octet 9 - Bit 1)
Read Voice Setting (Octet 9 - Bit 2)
Write Voice Setting (Octet 9 - Bit 3)
Read Automatic Flush Timeout (Octet 9 - Bit 4)
Write Automatic Flush Timeout (Octet 9 - Bit 5)
Read Num Broadcast Retransmissions (Octet 9 - Bit 6) Write Num Broadcast Retransmissions (Octet 9 - Bit 7) Read Transmit Power Level (Octet 10 - Bit 2)
Read Sync Flow Control Enable (Octet 10 - Bit 3) Write Sync Flow Control Enable (Octet 10 - Bit 4)
Set Controller To Host Flow Control (Octet 10 - Bit 5) Host Buffer Size (Octet 10 - Bit 6)
Host Number of Completed Packets (Octet 10 - Bit 7) Read Link Supervision Timeout (Octet 11 - Bit 0) Write Link Supervision Timeout (Octet 11 - Bit 1) Read Number of Supported IAC (Octet 11 - Bit 2)
Read Current IAC LAP (Octet 11 - Bit 3)
Write Current IAC LAP (Octet 11 - Bit 4)
Read Page Scan Mode (Octet 11 - Bit 7)
Write Page Scan Mode (Octet 12 - Bit 0)
Set AFH Host Channel Classification (Octet 12 - Bit 1) Read Inquiry Scan Type (Octet 12 - Bit 4)
Write Inquiry Scan Type (Octet 12 - Bit 5)
Read Inquiry Mode (Octet 12 - Bit 6)
Write Inquiry Mode (Octet 12 - Bit 7)
Read Page Scan Type (Octet 13 - Bit 0)
Write Page Scan Type (Octet 13 - Bit 1)
Read AFH Channel Assessment Mode (Octet 13 - Bit 2) Write AFH Channel Assessment Mode (Octet 13 - Bit 3) Read Local Version Information (Octet 14 - Bit 3) Read Local Supported Features (Octet 14 - Bit 5)
Read Local Extended Features (Octet 14 - Bit 6)
Read Buffer Size (Octet 14 - Bit 7)
Read Country Code (Octet 15 - Bit 0)
Read BD ADDR (Octet 15 - Bit 1)
Read Failed Contact Counter (Octet 15 - Bit 2)
Reset Failed Contact Counter (Octet 15 - Bit 3)
Read Link Quality (Octet 15 - Bit 4)
Read RSSI (Octet 15 - Bit 5)
Read AFH Channel Map (Octet 15 - Bit 6)
Read Clock (Octet 15 - Bit 7)
Read Loopback Mode (Octet 16 - Bit 0)
Write Loopback Mode (Octet 16 - Bit 1)
Enable Device Under Test Mode (Octet 16 - Bit 2) Setup Synchronous Connection (Octet 16 - Bit 3) Accept Synchronous Connection Request (Octet 16 - Bit 4) Reject Synchronous Connection Request (Octet 16 - Bit 5) Read Extended Inquiry Response (Octet 17 - Bit 0) Write Extended Inquiry Response (Octet 17 - Bit 1) Refresh Encryption Key (Octet 17 - Bit 2)
Sniff Subrating (Octet 17 - Bit 4)
Read Simple Pairing Mode (Octet 17 - Bit 5)
Write Simple Pairing Mode (Octet 17 - Bit 6)
Read Local OOB Data (Octet 17 - Bit 7)
Read Inquiry Response TX Power Level (Octet 18 - Bit 0) Write Inquiry Transmit Power Level (Octet 18 - Bit 1) Read Default Erroneous Data Reporting (Octet 18 - Bit 2) Write Default Erroneous Data Reporting (Octet 18 - Bit 3) IO Capability Request Reply (Octet 18 - Bit 7)
User Confirmation Request Reply (Octet 19 - Bit 0) User Confirmation Request Neg Reply (Octet 19 - Bit 1) User Passkey Request Reply (Octet 19 - Bit 2)
User Passkey Request Negative Reply (Octet 19 - Bit 3) Remote OOB Data Request Reply (Octet 19 - Bit 4) Write Simple Pairing Debug Mode (Octet 19 - Bit 5) Enhanced Flush (Octet 19 - Bit 6)
Remote OOB Data Request Neg Reply (Octet 19 - Bit 7) Send Keypress Notification (Octet 20 - Bit 2)
IO Capability Request Negative Reply (Octet 20 - Bit 3) Read Encryption Key Size (Octet 20 - Bit 4)
Set Event Mask Page 2 (Octet 22 - Bit 2)
Read Enhanced Transmit Power Level (Octet 24 - Bit 0) Enhanced Setup Synchronous Connection (Octet 29 - Bit 3) Enhanced Accept Synchronous Connection Request (Octet 29 - Bit 4) Read Local Supported Codecs (Octet 29 - Bit 5)
Set Triggered Clock Capture (Octet 30 - Bit 5) Truncated Page (Octet 30 - Bit 6)
Truncated Page Cancel (Octet 30 - Bit 7)
Set Connectionless Slave Broadcast (Octet 31 - Bit 0) Start Synchronization Train (Octet 31 - Bit 2)
Set Reserved LT_ADDR (Octet 31 - Bit 4)
Delete Reserved LT_ADDR (Octet 31 - Bit 5)
Set Connectionless Slave Broadcast Data (Octet 31 - Bit 6) Read Synchronization Train Parameters (Octet 31 - Bit 7) Write Synchronization Train Parameters (Octet 32 - Bit 0) Remote OOB Extended Data Request Reply (Octet 32 - Bit 1) Read Authenticated Payload Timeout (Octet 32 - Bit 4) Write Authenticated Payload Timeout (Octet 32 - Bit 5) Read Local OOB Extended Data (Octet 32 - Bit 6)
Write Secure Connections Test Mode (Octet 32 - Bit 7) Read Extended Page Timeout (Octet 33 - Bit 0)
Write Extended Page Timeout (Octet 33 - Bit 1)
Read Extended Inquiry Length (Octet 33 - Bit 2)
Write Extended Inquiry Length (Octet 33 - Bit 3)
LE Set Data Length (Octet 33 - Bit 6)
LE Read Suggested Default Data Length (Octet 33 - Bit 7) LE Write Suggested Default Data Length (Octet 34 - Bit 0) LE Read Local P-256 Public Key (Octet 34 - Bit 1)
LE Generate DHKey (Octet 34 - Bit 2)
LE Add Device To Resolving List (Octet 34 - Bit 3)
LE Remove Device From Resolving List (Octet 34 - Bit 4) LE Clear Resolving List (Octet 34 - Bit 5)
LE Read Resolving List Size (Octet 34 - Bit 6)
LE Read Peer Resolvable Address (Octet 34 - Bit 7)
LE Read Local Resolvable Address (Octet 35 - Bit 0)

Quoted 8 lines

LE Set Address Resolution Enable (Octet 35 - Bit 1) LE Set Resolvable Private Address Timeout (Octet 35 - Bit 2) LE Read Maximum Data Length (Octet 35 - Bit 3) Octet 35 - Bit 4
Octet 35 - Bit 5
Octet 35 - Bit 6
Octet 35 - Bit 7
Octet 36 - Bit 0

Quoted 2 lines

So you support the PHY commands, but do not indicate support LE 2M or LE Coded? Also these are Bluetooth 5.0 commands.

To be honest. When I ported the device into Bluez core, a unexpected event for LE read local feature would cause a fail at Bluez core, so I made a hack on Bluez core

to allow that I can keeping bring up the device without be blocked by the issue most probably from firmware.

Below code snippet is the only thing I added to avoid a fail at Bluez core to bring up the device.

Review static void hci_cc_le_read_local_features(struct hci_dev *hdev, · line 932

Quoted 6 lines
(quoted diff) +2 -0
@@ -927,6 +927,8 @@ static void hci_cc_le_read_local_features(struct hci_dev *hdev,
               return;
 
       memcpy(hdev->le_features, rp->features, 8);
+       hdev->le_features[0] = 0;
+       hdev->le_features[1] = 0;
 }

Send me the trace where you didn?t clear the feature bits and I check what is going on. I doubt that we have a bug, but maybe some of the commands are optional and we should add an appropriate check. Or you guys need to fix your firmware. A new btmon should decode all bits properly.

Regards

Marcel

author maintainer
#13 lore raw

Re: [PATCH v2 4/7] Bluetooth: Add new quirk for non-persistent setup settings

Quoted 3 lines · Marcel Holtmann

Hi Sean,

Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line

[ ... ]

Quoted 11 lines
Quoted 11 lines
Quoted 11 lines
Quoted 10 lines

* Unknown packet (code 14 len 30) 0.641509

      01 00 00 00 02 00 01 0e 00 01 00 00 00 10 62 6c  ..............bl
      75 65 74 6f 6f 74 68 64 00 00 00 00 00 00        uetoothd......  
* Unknown packet (code 14 len 30)                                      0.641592
      02 00 00 00 02 00 01 0e 00 01 00 00 00 10 62 74  ..............bt
      6d 6f 6e 00 00 00 00 00 00 00 00 00 00 00        mon...........  
* Unknown packet (code 16 len 7)                                [hci0] 6.536771
      01 00 00 00 05 00 01                             .......         

= Open Index: 00:00:46:76:22:01 [hci0] 6.717019
= Index Info: 00:00:46:76:22:01 (MediaTek, Inc.) [hci0] 6.717030

Quoted 7 lines
Quoted 4 lines
Quoted 2 lines

can you try with the latest BlueZ 5.49 or git version. Seems it actually stumbles over the extra packet here. Fun fact is that I can not get a backtrace to pin-point the issue in btmon and why it crashes.

I had less experience updating user land BlueZ, but I can try it as possible and see whether Unknown packets still are present at newest version BlueZ. Hopefully I don't misunderstand your point here.

please use the latest btmon and check if it can read your trace.

sure, I'll have a try with the latest btmon.

Quoted 6 lines
Quoted 6 lines
Quoted 6 lines
Quoted 6 lines
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.741093

      02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.742088

      02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.743102

      02 01 01 00 00                                   .....           

[ ... ]

Quoted 10 lines
Quoted 10 lines
Quoted 9 lines
Quoted 6 lines
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.814708

      02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.815705

      02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.816378

      02 01 01 00 00                                   .....           

Why do I see only HCI events here? Is this event conveying any useful information. It is kinda complicated that this is 0xe4 event code which is actually reserved for future use by the Bluetooth SIG. Are there any accompanying HCI commands for this and they just not make it into btmon?

Quoted 8 lines
Quoted 5 lines

I have made all vendor HCI commands go through BlueZ core in v2 patch.

And for these HCI events, they are all corresponding to vendor ACL data, applied only to firmware setup packets, but they're not being sent via BlueZ core, so they are not being logged in btmon.

As for its event, where heading 0xe4 refers to a vendor event and is used on notification of that either vendor ACL data or vendor HCI command have been done.

I would prefer if everything goes via the Bluetooth core since then we have it all properly scheduled. Sending things down the ACL data path however if kinda funky. Does your hardware accept sending command both via ACL data and as HCI command? If so, then I would prefer sending them as HCI commands since the speed improvement you think you are getting is neglectable on Linux (I have been down that path). This seems to be a pure optimization when Windows is driving the device.

firmware people said the device can support firmware download as HCI commands. According to my test, this way indeed works so I will improve the part in the next version.

Quoted 2 lines

And the vendor event 0xe4 is really only received during firmware download? It is not ever received during normal operation?

0xe4 is only received during chip initialization.

I also thought 0xe4 is a poor definition for vendor event and already have notified firmware people should pick 0xff as its vendor event id in the future.

but for now, unfortunately, 0xe4 cannot be changed on the device, the only way is to add a workaround in RX path as below to allow btmon can recognize these bad events properly.

int mtk_btuart_hci_frame(struct hci_dev *hdev, struct sk_buff *skb)

{
        struct hci_event_hdr *hdr = (void *)skb->data;

        /* Fix up the vendor event id with HCI_VENDOR_PKT instead of
         * 0xe4 so that btmon can parse the kind of vendor event properly.
         */
        if (hdr->evt == 0xe4)
                hdr->evt = HCI_VENDOR_PKT;

        /* Each HCI event would go through the core. */
        return hci_recv_frame(hdev, skb);
}
Quoted 7 lines
Quoted 7 lines
Quoted 7 lines
Quoted 7 lines

< HCI Command: Vendor (0x3f|0x006f) plen 5 [hci0] 6.816413

      01 07 01 00 04                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.816536

      02 07 01 00 00                                   .....           

[ ... ]

Quoted 11 lines
Quoted 11 lines
Quoted 11 lines
Quoted 10 lines

Encapsulated PDU
Erroneous Data Reporting
Non-flushable Packet Boundary Flag
Link Supervision Timeout Changed Event
Inquiry TX Power Level
Enhanced Power Control
Extended features
< HCI Command: Read Local Version Info.. (0x04|0x0001) plen 0 [hci0] 10.865987

Quoted 1 line

HCI Event: Vendor (0xff) plen 9 [hci0] 10.866259

      29 19 09 17 20 48 07 11 00                       )... H?       
Quoted 9 lines
Quoted 6 lines
Quoted 2 lines

Is this meant to happen here?

If event received is not expected as the specification defines, I think it's probably incorrect.

But it requires more discussion with firmware people to make it clearer.

Please check and let them decode what this event means.

it's just debugging purpose information listing built-time something like that and will be removed in the firmware.

Quoted 9 lines
Quoted 9 lines
Quoted 9 lines
Quoted 9 lines
Quoted 2 lines

HCI Event: Command Complete (0x0e) plen 12 [hci0] 10.866372

    Read Local Version Information (0x04|0x0001) ncmd 1
      Status: Success (0x00)
      HCI version: Bluetooth 4.2 (0x08) - Revision 4359 (0x1107)
      LMP version: Bluetooth 4.2 (0x08) - Subversion 2329 (0x0919)
      Manufacturer: MediaTek, Inc. (70)

< HCI Command: Read BD ADDR (0x04|0x0009) plen 0 [hci0] 10.866391

Quoted 1 line

HCI Event: Command Complete (0x0e) plen 10 [hci0] 10.866539

[ ... ]

Quoted 27 lines
Quoted 27 lines
Quoted 15 lines
Quoted 6 lines

LE Add Device To Resolving List (Octet 34 - Bit 3) LE Remove Device From Resolving List (Octet 34 - Bit 4) LE Clear Resolving List (Octet 34 - Bit 5)
LE Read Resolving List Size (Octet 34 - Bit 6) LE Read Peer Resolvable Address (Octet 34 - Bit 7) LE Read Local Resolvable Address (Octet 35 - Bit 0)

Quoted 8 lines

LE Set Address Resolution Enable (Octet 35 - Bit 1) LE Set Resolvable Private Address Timeout (Octet 35 - Bit 2) LE Read Maximum Data Length (Octet 35 - Bit 3) Octet 35 - Bit 4
Octet 35 - Bit 5
Octet 35 - Bit 6
Octet 35 - Bit 7
Octet 36 - Bit 0

Quoted 2 lines

So you support the PHY commands, but do not indicate support LE 2M or LE Coded? Also these are Bluetooth 5.0 commands.

To be honest. When I ported the device into Bluez core, a unexpected event for LE read local feature would cause a fail at Bluez core, so I made a hack on Bluez core

to allow that I can keeping bring up the device without be blocked by the issue most probably from firmware.

Below code snippet is the only thing I added to avoid a fail at Bluez core to bring up the device.

(quoted diff) +0 -0
@@ -927,6 +927,8 @@ static void hci_cc_le_read_local_features(struct hci_dev *hdev,
               return;
 
Quoted 7 lines

Review static void hci_cc_le_read_local_features(struct hci_dev *hdev, · line 932

Quoted 4 lines
(quoted diff) +2 -0
       memcpy(hdev->le_features, rp->features, 8);
+       hdev->le_features[0] = 0;
+       hdev->le_features[1] = 0;
 }

Send me the trace where you didn?t clear the feature bits and I check what is going on. I doubt that we have a bug, but maybe some of the commands are optional and we should add an appropriate check. Or you guys need to fix your firmware. A new btmon should decode all bits properly.

okay, I'll have a follow-up.

Quoted 4 lines

Regards

Marcel

author maintainer
#14 lore raw

Re: [PATCH v2 4/7] Bluetooth: Add new quirk for non-persistent setup settings

Quoted 21 lines · Sean Wang
Quoted 3 lines · Marcel Holtmann

Hi Sean,

Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line

[ ... ]

Quoted 14 lines
Quoted 14 lines
Quoted 13 lines
Quoted 10 lines

* Unknown packet (code 14 len 30) 0.641509

      01 00 00 00 02 00 01 0e 00 01 00 00 00 10 62 6c  ..............bl
      75 65 74 6f 6f 74 68 64 00 00 00 00 00 00        uetoothd......  
* Unknown packet (code 14 len 30)                                      0.641592
      02 00 00 00 02 00 01 0e 00 01 00 00 00 10 62 74  ..............bt
      6d 6f 6e 00 00 00 00 00 00 00 00 00 00 00        mon...........  
* Unknown packet (code 16 len 7)                                [hci0] 6.536771
      01 00 00 00 05 00 01                             .......         

= Open Index: 00:00:46:76:22:01 [hci0] 6.717019
= Index Info: 00:00:46:76:22:01 (MediaTek, Inc.) [hci0] 6.717030

can you try with the latest BlueZ 5.49 or git version. Seems it actually stumbles over the extra packet here. Fun fact is that I can not get a backtrace to pin-point the issue in btmon and why it crashes.

Quoted 6 lines
Quoted 4 lines
Quoted 1 line

I had less experience updating user land BlueZ, but I can try it as possible and see whether Unknown packets still are present at newest version BlueZ. Hopefully I don't misunderstand your point here.

please use the latest btmon and check if it can read your trace.

sure, I'll have a try with the latest btmon.

I use the btmon version 5.50 and it can read the trace

Quoted 138 lines
Quoted 7 lines
Quoted 7 lines
Quoted 7 lines
Quoted 7 lines
Quoted 2 lines

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.741093

      02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.742088

      02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.743102

      02 01 01 00 00                                   .....           

[ ... ]

Quoted 10 lines
Quoted 10 lines
Quoted 9 lines
Quoted 6 lines
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.814708

      02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.815705

      02 01 01 00 00                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.816378

      02 01 01 00 00                                   .....           

Why do I see only HCI events here? Is this event conveying any useful information. It is kinda complicated that this is 0xe4 event code which is actually reserved for future use by the Bluetooth SIG. Are there any accompanying HCI commands for this and they just not make it into btmon?

Quoted 8 lines
Quoted 5 lines

I have made all vendor HCI commands go through BlueZ core in v2 patch.

And for these HCI events, they are all corresponding to vendor ACL data, applied only to firmware setup packets, but they're not being sent via BlueZ core, so they are not being logged in btmon.

As for its event, where heading 0xe4 refers to a vendor event and is used on notification of that either vendor ACL data or vendor HCI command have been done.

I would prefer if everything goes via the Bluetooth core since then we have it all properly scheduled. Sending things down the ACL data path however if kinda funky. Does your hardware accept sending command both via ACL data and as HCI command? If so, then I would prefer sending them as HCI commands since the speed improvement you think you are getting is neglectable on Linux (I have been down that path). This seems to be a pure optimization when Windows is driving the device.

firmware people said the device can support firmware download as HCI commands. According to my test, this way indeed works so I will improve the part in the next version.

Quoted 2 lines

And the vendor event 0xe4 is really only received during firmware download? It is not ever received during normal operation?

0xe4 is only received during chip initialization.

I also thought 0xe4 is a poor definition for vendor event and already have notified firmware people should pick 0xff as its vendor event id in the future.

but for now, unfortunately, 0xe4 cannot be changed on the device, the only way is to add a workaround in RX path as below to allow btmon can recognize these bad events properly.

int mtk_btuart_hci_frame(struct hci_dev *hdev, struct sk_buff *skb)

{
        struct hci_event_hdr *hdr = (void *)skb->data;

        /* Fix up the vendor event id with HCI_VENDOR_PKT instead of
         * 0xe4 so that btmon can parse the kind of vendor event properly.
         */
        if (hdr->evt == 0xe4)
                hdr->evt = HCI_VENDOR_PKT;

        /* Each HCI event would go through the core. */
        return hci_recv_frame(hdev, skb);
}
Quoted 7 lines
Quoted 7 lines
Quoted 7 lines
Quoted 7 lines

< HCI Command: Vendor (0x3f|0x006f) plen 5 [hci0] 6.816413

      01 07 01 00 04                                   .....           
Quoted 1 line

HCI Event: Unknown (0xe4) plen 5 [hci0] 6.816536

      02 07 01 00 00                                   .....           

[ ... ]

Quoted 11 lines
Quoted 11 lines
Quoted 11 lines
Quoted 10 lines

Encapsulated PDU
Erroneous Data Reporting
Non-flushable Packet Boundary Flag
Link Supervision Timeout Changed Event
Inquiry TX Power Level
Enhanced Power Control
Extended features
< HCI Command: Read Local Version Info.. (0x04|0x0001) plen 0 [hci0] 10.865987

Quoted 1 line

HCI Event: Vendor (0xff) plen 9 [hci0] 10.866259

      29 19 09 17 20 48 07 11 00                       )... H…       
Quoted 9 lines
Quoted 6 lines
Quoted 2 lines

Is this meant to happen here?

If event received is not expected as the specification defines, I think it's probably incorrect.

But it requires more discussion with firmware people to make it clearer.

Please check and let them decode what this event means.

it's just debugging purpose information listing built-time something like that and will be removed in the firmware.

Quoted 9 lines
Quoted 9 lines
Quoted 9 lines
Quoted 9 lines
Quoted 2 lines

HCI Event: Command Complete (0x0e) plen 12 [hci0] 10.866372

    Read Local Version Information (0x04|0x0001) ncmd 1
      Status: Success (0x00)
      HCI version: Bluetooth 4.2 (0x08) - Revision 4359 (0x1107)
      LMP version: Bluetooth 4.2 (0x08) - Subversion 2329 (0x0919)
      Manufacturer: MediaTek, Inc. (70)

< HCI Command: Read BD ADDR (0x04|0x0009) plen 0 [hci0] 10.866391

Quoted 1 line

HCI Event: Command Complete (0x0e) plen 10 [hci0] 10.866539

[ ... ]

Quoted 27 lines
Quoted 27 lines
Quoted 15 lines
Quoted 6 lines

LE Add Device To Resolving List (Octet 34 - Bit 3) LE Remove Device From Resolving List (Octet 34 - Bit 4) LE Clear Resolving List (Octet 34 - Bit 5)
LE Read Resolving List Size (Octet 34 - Bit 6) LE Read Peer Resolvable Address (Octet 34 - Bit 7) LE Read Local Resolvable Address (Octet 35 - Bit 0)

Quoted 8 lines

LE Set Address Resolution Enable (Octet 35 - Bit 1) LE Set Resolvable Private Address Timeout (Octet 35 - Bit 2) LE Read Maximum Data Length (Octet 35 - Bit 3) Octet 35 - Bit 4
Octet 35 - Bit 5
Octet 35 - Bit 6
Octet 35 - Bit 7
Octet 36 - Bit 0

Quoted 2 lines

So you support the PHY commands, but do not indicate support LE 2M or LE Coded? Also these are Bluetooth 5.0 commands.

To be honest. When I ported the device into Bluez core, a unexpected event for LE read local feature would cause a fail at Bluez core, so I made a hack on Bluez core

to allow that I can keeping bring up the device without be blocked by the issue most probably from firmware.

Below code snippet is the only thing I added to avoid a fail at Bluez core to bring upbtsnoop the device.

(quoted diff) +0 -0
@@ -927,6 +927,8 @@ static void hci_cc_le_read_local_features(struct hci_dev *hdev,
               return;
 
Quoted 7 lines

Review static void hci_cc_le_read_local_features(struct hci_dev *hdev, · line 932

Quoted 4 lines
(quoted diff) +2 -0
       memcpy(hdev->le_features, rp->features, 8);
+       hdev->le_features[0] = 0;
+       hdev->le_features[1] = 0;
 }

Send me the trace where you didn’t clear the feature bits and I check what is going on. I doubt that we have a bug, but maybe some of the commands are optional and we should add an appropriate check. Or you guys need to fix your firmware. A new btmon should decode all bits properly.

Quoted 1 line

okay, I'll have a follow-up.where

.
It's a fault from the device and can be simply fixed up in the firmware. The fault is the device reporting to host told it can support "LE Read Maximum Data Length", but actually it can't. so it's just a fail at the command.

The attached here is the fail log I captured with btmon 5.50 where I already turned the patch setup in HCI command from ACL data and turned event id 0xe4 to 0xff every vendor should use. And, finally, it can be seen that btmon already can record and parse all traffic between host and device well.

Quoted 6 lines
Quoted 5 lines

Regards

Marcel

btsnoop�$$�� �L5n��Linux version 4.16.0-rc1+ (aarch64)!!�� �L5n��Bluetooth subsystem version 2.22���L5n�btmon##�� �L5o� � bluetoothdBluetooth daemon 5.43���L5o�t/bluetoothd!!�� �L5o�{o bluetoothdStarting SDP server22�� �L5o��� bluetoothdFailed to open RFKILL control device���L5o��U ���L5o��D==�� �L5o��� bluetoothdBluetooth management interface 1.14 initialized���L5o��������L5o���A#
 !"#$%&'()*+,-./0123456789:;<=>?@ABC
 !"#$%���L5o��� ���L5o����L5pRZ�hci0�L5pU/o
�L5pU0�L5pUv�o�������?DC�4���|X����K�>� ���4�h*�����D�����X���$c{p���(�$�x;X���,p4PU�j�36�L5pUx���L5pUx�o���L� �� �� �� �
�n
�U
�
�n
|3
o
��
=
pw
�p
�
�
�� t2
Q
�
,
4
x\
L
lY
�
�]
�
$%
$}
�� @m
�
<k
��
�6
P
�L5pU{ ��L5pU{0o���> $F�X�`>-$���ɪ����ݞ> $�>-)t� ��A���ݞ<IF �(X �A�@0�@�����AF0 ��X1� �L��<-IF �b�a�����ݞ��F��� F��B��T����ݞ�:o�������I���;I����:o��ݞ:o�������P����8�*L�� I���8��I��������:o��ݞ����L5pU|���L5pU|�o���<-:�D�@!F0�BF�X1��0�B��DO��� �@1����è��ݞ�T� �"����l@0 D"L \�#��L @a��L
�L @Z���B��*���BL@��
�L@��V�\�D!@@�BL@X � �CL@X��AL@X�X0�BL@X@� �CL@X��AL@X@�D"�@�B�L5pU~��L5pU~1o���L@X � �CL@X ��AL@XX���ݞ�:o��.4�L��D���L0�#>d���I��~�<-)Հ ��"FTc@��� F�B��:o��ݞD@"T ���B� L"N\�#�DPL"���f��L"$DPD�}�����B�����XB�������B�����XB��� PA���P!�XR�����XB�������B�����FP��L5pU���L5pU�o���@B�������B�����FP�@B��� P!���FP��@B�������B�P!� ��XB �������B�P!���BBL��� P!���P�XB���AX!�A�B�H�"�P��AX!�A����P� � X�� �h�F X�@�ݞ�:o����P���T���T���� D $I���T ���)�H�gI��SP���F` �2�� �3�� �4�L5pU�3��L5pU�co����� �5�� �6�� �7�� �8�9�,:o��ݞ:o����<o6�<=)΀T������#<)π�!�G��(I���<)Ӏ�!<)Ҁ�!:o��ݞ:o��.$��@` ���L >��<6�L.$���&I���.��>d���I���:o��ݞ�����D2P@�T1�DA��@0�@ T1�T0�E@ T1�T0�*@ T1�@0� @1�@ T! �L5pU����L5pU�o����F ?�@�@ݞ�:o���b�AL�b�L@<.��L�8F X��X ��
�AX!�A�AX!�AI�"VF!X��A�B!H�A�AB!L�AI�%'FX��A�
X!�A�AX!�A�AX! �AI�"4�&F X� X� � � B� � � F!X� B� � � B� � .� �
F �AX��A�I�.J:o��ݞ�:o����.d���ؗh��L5pU�\��L5pU��o���������������D D F0�X1����I�K �H&<m;5�L@D�Lp��DI�|��D D F0�X1����I�J�H �L@D�Lp��>l���N��DI�|��D D F0�X1����I�J̄H����P����@�I�yE���DI�|t�D D F0�X1����I�J��H�D�Lp@ �L5pU���L5pU�6o�����"�A��4D�Lp� ��$�A��)D�Lp@ � �!�I� ��DLp� ��&�A��D�Lp@ ��#�A�� � ��A� I�m�<m(�����<����&��d��d���d@��������O�D���!�ܘ�����4���44�!��4Lp� ��D ��L5pU����L5pU��o����`I!C> ��I�x�N��Lp.4��.����!�ؙ � �ۘL�L3� ��I�������I��<:��@DI�yDI�x2�I�{MN��I�mX�D D F0�X1��I�I��:o��ݞ:o����<=޺����€����H��
�F �X!�D0�I�6����<@! �@!�"FH �@0 @���B!|�>C G��@B@�u@Bx@!��L5pU�'��L5pU�No���B!XF0@��4@�@!�B!d�3�B!h�2�B!l�1�B!p�6�B!t�0�B!xC
�w������@@�@B�@b�
�j�ZFG��@��c@!���>�����:���{��Xc�?�XcC��Xc���� F0�@��@��@� C� @��@d�BcdC� �BchC�$�BclC�%�BcpC��BctC�L5pU����L5pU��o�����BcxC��Bc|PU �F�q�C�X���@�$�X�C��X� C��X�@C��B�<C��B�TC��B�XC��B�\C��B�lC��B�pC��B�|Pl��3� Bx B| �BxC�!�B|F� �X�� �iG� �BA����|PE�BA�����÷���Bc| ��PE��F�sBcp ��X����C�@c�L5pU�?��L5pU�eo����Xc@C��BcLC��BcPC��BcTC��BcX��PE�����@�@P @R��P P5@R�@O`G� ��\F� �@R�����Ud�F� ��Fx �F8 �$ �
� F ��X�0�a����X(���DA��(LbI���N�����$:o��ݞ:o����F8 ��@` X1�����I��\�� �FD0�@�@�L5pU����L5pU��o�����&�:o��ݞ:o�������򁗈Eª�I�n��<���I�n��<������������ ��<�I�nq�I�nfF� ��<�I�nf�I�n[F@<���� :o��ݞ;�����I�ߒ�;���ݞ;�����P�I���� ;���ݞ:o���AL@a �L@!� F(@1F@� @ F�I���F@X��A@3@c���A@!��AI���� �L5pU�O��L5pU�mo���F@�F@c@c�F:o��ݞ;�����I���I���I���� �I���I�$Q� D "����� � I�#��;���ݞ�;�����A�D�P���I��^/�T��2F!X$� F\?�B�� T!� XR��@1h@�@�� D_���@A @1�@2 �P�����@!�AD_��@@��0F!X$�@�D��X!�@F\?��@XR��B!�L5pU����L5pU��o���|�@DO���@@!B!t�@P�@@!X!�@D/����X��@X��� ;���ݞ:o���􄟄>D��?�>D��?�?�?�?�?�Da�P��AD>�&�P��ADI�&��P��ADH�&� �O���P�>E$_���>$� >$�D->$_�A>%$N�i�g�fP��AD<�������&��P��AD�L5pU�{��L5pU��o���=�&�@P�DB�A�&O�LN�J�H/����T0B ��@a��JB @c�T� B1 TD@B��@cB Ts�@T�@r@c ��NB! B� @s�@c��@�@c@s�/��&�I��k��I��n>d��>t��� :o��ݞ:o��I��\I��hI���F�X��<)<)F�X��!<)���!F`XB�XI��-<�L5pU����L5pU�o���)���!F�X�D<)�F�X��<)pF�X��<)�F�X��<)I���:o��ݞ:o��@@ @c@D$� La@@@�P �>����>$_�_��!�� >$�EI�S�FL@< 6�T�� F(La@< 6�T@�0< )�� �,.$�).$_<-)tF @�X�F$La@< 6�T@�< )�� �.$�.$_<-)tF @�@�L5pU�~��L5pU��o����D.�":o��ݞF�X�L<Y�F�X�<YvF�X�@<YwF�X��<Y~F�X�<Y�F�X�P<Y�F�X��<Y�F�X��<Y}ݞ�:o����F% �� �X!� ��X! �F0 ��X!� ��X!�Fp`��X!� ��X!�F����X!� � �X! �F���
�X! � � �X!�L5pU����L5pU� o��� �F1!� �X!�� ��X!��G�qa �D ��^�F������
�@Fq�����ȶ@FDD� ����@��� �
�d�@X�D� � Y�X��Xs��@����t�@�AB�C�<:o��ݞ�@�A������������������ ݞ�>%��>=$>M$ ���ĴB�c��ڶA�a�L�Ɍ(L�<)�> '\P���a>M't�`0�@�����A�L5pU�c��L5pU��o������L�ݞ;�����F X�8> '\I�����;���ݞ;�����F X�8> %�I�����;���ݞ� >$dݞ:o�<D0��H��F@�XB���h@3 82 �I��@1��8 V�\:o�ݞ:o���������„�������@C@B�DP������Y ����"���!���bI�����:o��ݞ< I DL��(> ����(L�> �L5pU����L5pU��o������0�Bݞݞ��� �`���H���ئ�H�X� �� ݞ�;������!���>=��>M�I����;���ݞ;�����.�ʖD >=��>M�(I����;���ݞ:o�����@�N}^���*^����!���1��!��>=��>M�I���\�N�� �1��!��>=��>M�I����"�D >=��>M�I����P^���M� D >=��>M�(�Fp�Xs���'��L5pU�X��L5pU�uo���� D >=��>M��'^���4� D >=��>M�(��'�� D >=��>M��'��� ������ D >=��>M�(� ����� D >=��>M�(��'�� D >=��>M��':o��ݞ;�����D ��H>=��>M�(I��=� >kR�;���ݞ;������ �D >=��>M�I��)��;���ݞ:o�<�@ >]�\8b�T0@ �L�%>M%\8B@B �$�L5pU����L5pU��o�����@4 @a�8b�>-�.ukN8>-��8>-�(��8>-��>ukN8:o�ݞ< k��%�@�ݞ�:o��>m�$�׀��L�@<X���!�L@�qDp�ք!L��q��'��:o��ݞ���� T�V@\ݞFLB( ݞ�:o�����@��?^���^�ń�A@ @ >=�Ԁ�O>M�xI�����*^���'�L5pU�C��L5pU�bo����� D >=��>M�xI���^����� D >=��>M�xI��z��1�� ��&�D >=��>M�xI��k:o��ݞݞ�F�?GGݞ�A���@ ��f�!��B" s����@1 �!�*�ɮ� X� �7��L2@9 D@�@BV �f��B! $P7.4������Q�����D@����� �\� ���>M�(8" �! ��N@1�L5pU����L5pU��o��� �ɮ�SX�S�!> $i�%��L2@$������P.Ej�0� T�iB2�sX!0� T� T ��A��@ � ���@ݞ������B1�$�I�٘ۖ�JB s�ݞ��@1����B�sݞP3D %�F�ǘY@ �6�Fݞ�;�����<l�D D�Bs�I����;���ݞ�b�H���L� D@,DPL@2�@2�
DPD@p�L5pU����L5pU��o���@2@0��#@ �ٖݞ�:o��<�x�!L�� N��L�@&��!<x���&>}��z�"��@�IDqI��ĒPi@����!L���������<YMDQ�!D`<MY<=x�!�D 2�$�:o��ݞ��I�"�!�!���c@0�7�����&@ 7�H�����%��� �� � �#@ 7��D���ݞ�< I3ݞ�<I3ݞ��L5pU�W��L5pU�9o����OL@���L@> 'H���L �D2�>-'ZL�D@ݞ<�BT�< [�.k��< ���.���.�� <e_�"�.��\����ݞ:o��< �+L�<R��!� <`�:o��ݞ� >$nݞ�HT@�����"��L��!�X<l�P7D@DB�s���IL@�� �XT��"�����!�Y��� 7< l��L5pU����L5pU��o���DDBs�YJL@��ݞ�:o����<-Y.��D���"�� H�6�T�2�$L��!��sV�\�� �"L��!��sV�\��<=S�D*��������3�\� <=S�D#�D �*.������.�@��T����.�@!�P��� �h�I��mD�3<-SЀ(��"��y��<=Sπ�#�&��T���L5pU�>��L5pU�io���� �T#��P!��
P!�� �T#��P!��C�P!ԐC��#��#��A��"��:o��ݞ:o����P]� 0^��P�@@! �g��I��!<-SЀ'��"� :o��ݞD ���IL@ �D�L�"D L��D ��LD �LD ��L@�@D 5L@ �� V @�����ݞݞ�ݞ��*<`�ݞݞ�:o�<�B�ML�L5pU¿��L5pU��o���d�.�
��L�,�v�
L@v� �NL�;�A�A�m�b�D>%��D 2</m��A>%��D�<m��[�D�Ȍn>5JH�@��%��B���>MJH�T����C����>%���D��P���E�A>-��D0 �bD02�Ѧȧ�#���ç^�@2��ܶb�H�0�G@����%>���!>���> ���B��D 2</m��P �A��D <m�� ���>���!>���L5pU�<��L5pU�`o�����D:o�ݞ�:o����P�E�)�>�ۦ@�)�.5���a�>�ם���i�>�� �'�C� �p�
0�DDB#�s� A2�(� �F�$�>j���>j�< Yw� .��.j��J�H>j��:o��ݞ�����a�����A�@�����ž�����8�
ݞ> � .� +�C��!.ݞ�>(> ��D 1�` >M��0�L�ݞ�L5pUŹ��L5pU��o����> 'H�?>-'ZL�ݞ>'H����JL @��>-'ZL��ݞ��A�H�L@>-'H� ��D@����L2@>-'H8 ��I�iL�����L@>-'H� �М�L0@�_> 'H8  ��I�iL��ݞ��F ��P �`��<?I�J���D L@�<Iݞ�< )����.$Pݞ;������I����;���ݞ:o����F .-${�L u�L5pU�A��L5pU�ao���>${� >=�D>}脙K��>-_�>m_��ؙ
�h���МI�H�`L�mL� .$y>j�> j�.$z�+<-y� �� 1����R�>-焖�1)1*!8����I��L�������C���>j�!> j�@< Yw� .j�c.j�@ @!��>m�D��>}� a��ǧ>}_�>=_��C���Ǜ!�����h��L���:o��ݞ�>=%씃� ���L5pUȶ��L5pU��o���8� �R�Q�V�Wݞ>%��A�(L> &;L��ݞ�:o������ �I���I�����
���I��؝�� L`��>$t>$��:o��ݞ�>-%���"���L@��L��(PHL�� ���H� >-%�K�J�A�ή���I��L� ݞ>-%�H8 ݞ�>%씃����8 � ݞ�>%󖀄������@��LA��i�(L��ݞ�H>-%�K�L5pU�5��L5pU�Uo����J� ݞ��>%���ݞ�:o�<.%j�.j㔒��� F�B1� ��B1� �����L� �F� B� � �"�B1���c>5j��J� F��G�p�h�>=]�� ����t@t�8q����JF�Xc >�\�@�@��F�Xc
�>�]��@`(���� F��G�{�� �����@d8a�����JFP�XR� >m\�F��X���>��L5pU˨��L5pU��o���]@���@P(@`����>\Ф�%0� 0�F0�X1��F�X�����٧J��% %�I>-\�> ] ����ѯB��A�F�X� >-^LFP�XR�x��B��>�]�� ��@0(DU����L�:o�ݞ:o���H�N< ��J< e$�_L@
.$u�I���<e$�=> ��@C B0D�������B� 8�;�*�).$u�AD���L5pU�$��L5pU�Do���L@ ��!��I���0�����!<e$������< ��*L� �?<e$<=R̄� �@�#:o��ݞ:o����<ZVP?�!>-(8� �">k3� �78�(�w8!�>}'�8��_LI�ׂ�w8����\�Q�D(>k3>(8�78 ����8 ���">k3�:o��ݞ:o�����€�I��\�a� ��Lq�� <���1� ���2I��;�L5pUΝ��L5pU��o����2 �
��2I��3��"I����2:o��ݞ�;�����<k�D L�PL@�I��C< k��I����;���ݞ:o���Ā�7��I����C7<-l�DD���B"s<MW��I�-�?�@J�.� �$��<:o��ݞ;�����F(!��aB!8 L!�
F(1�X1�1�� 0>-b�1�J� �b�A��BL@>-b�b�A�#� �L5pU�=��L5pU�lo����� F �X!�D0A�I�(8�;���ݞ:o����.���.���< ;^�� .e�� �I���!L������H�.��.�����!H}I�+bP���u.�� .$����� ��Q@�I�����I������p�
� F �X!�D1�I�'�.��.�����T����s���I��F X!���Ѯ��r�1�N�@�@p�Ҧ4��L5pU����L5pU��o����r.���(�T�3.t����<}(��r��s���e�'�%�s�I�*q�� .��ħs�rN�
����eI�Z�� �����eI�Vq��� �����N�������:o��ݞ:o����Dw���'��L�@#>l���p�3����'� L@�p�3�I�K���'�L����s���������J��'L(����G��Y�,�F����< )���!L`��<�< )��L5pU�O��L5pU�wo���� ����V�@e��#L�����Lp�I�L��:o��ݞ:o����.ukn�!�Lp�%>l�tL��3�I�͙I�ͭ< Y � ��3��3�< Y � I��fI��I���I��t<-)�� �"���:o��ݞ;�����I��C��;���ݞ:o����DI��T���L� L@�I�����DJL � L �LDL@ DJI���� D`J��F�g�!I���L5pU����L5pU��o���:o��ݞ;�����.E$>Ejʄ > �tD OI�G�< Y�� �%L�.%$}> %L�.%$~> $� >=�t��@�`��8A�� �"���;���ݞ;�����F��7�d� F�X
��
��>MZ�������I���#��I�sl�;���ݞ;�����`P�D�A��I����� � FX�@X!�FX�@B! T��@� FX� X��FX�L5pU�F��L5pU�fo���� B� � �ADHP�I��`�T� FX� X��FX� B� � FX�@��>%j�@B! >%j� B� �� X� � .�ۖ���'> ��0#�H��'�A���C #� ;���ݞ:o����.��,T L�Q�Dq�DYP��A�ʮȮ��'�o��TcL@DXP��F�'� �<-Y�D,@�&�"�L5pU����L5pU��o���DEP��A�'�$o��TcL@DVP��F�'�<Y�D�!�T�M@�<-Y�D@�&�"� :o��ݞ�:o����.��,T L�r�?�?�DFP��AI����do��Tc ��L`@ D[P��FI����<Y�D9�!�T�T�@<-Y�D9@�&�"�����Ts�Lp@"DDP��GI��t���L5pU�9��L5pU�no���<Y�D8�!�T�T�@<-Y�D8@�'�"Xc<Y�D7�!D��@��@�<-Y�D7@�!�"� :o��ݞ;�������F?����� .j���h���P�I�kA�� ;���ݞ;�����I�G��F�X��<Y��;���ݞ:o��FhXc�&B� �&<YT����!�I�\��&�X��&�<Y�!�:o���L5pU����L5pU�o���ݞ:o���������I���� �>%�8���F(A F��fD �I��܄���:o��ݞ�:o��P(6� su����7�{��������������.���'< y�@.$x� � <��JL.���<y��,I����!L��w�"� ��D�I�I@�@p���'I����:o��ݞ:o�����I��� �>%�8 ��F��L5pU�T��L5pU�wo����@8 � ���8`� F@� >%�80�F�D �I��f:o��ݞ�;�����<k�D @L@ < k��,�I��ɒ�;���ݞ;�����<k��DL@
< k��,�I����;���ݞ:o��Fx>m%�0�!L����3�@�X�5�M�i�XF��D ����C� ��I����> &;L`� >$t:o��ݞ�;��������S>M%���!��F8B�L5pU����L5pU��o��� �D �I�����;���ݞ:o�����@��@�I��~��D�D SD0���I��߄ �FL`@�I��8T���I��W�!>$�Le
� �&I��p��&I���:o��ݞ�:o��>m�̠s���,I�ߜ��2�&L���2< k�T��<k��&�
T � ������9 J K�2� �0K0J<X��!��<k�D L@ L`� <-k��L5pU�G��L5pU�po���T!��<k�<ok�� <k�D >0�,�D��I��n<-X�< k��&�"�jL�)D�L�#FX�|�F?�X1��@ F0�X1�@ ��@0� F2@ �P ��Bx�FX�|�F?�X1��@ D7�@ ��@0� F1�@ �P ��Bx �<X��!:o��ݞ;�����I�ܓ��;���ݞ:o��@@ @�F0�L5pU����L5pU�!o���@�CL� �A� D!L��L�+� F#LF9L�"�>h�����I����I�� �T��>$w<Zr< y��>h�!��!��I��k:o��ݞ:o����.$��.4���������L�L@.�I�ޝ�@�(��'aI�� ��@�S�@�@��L@��bL���>5$s !@ @D L@�I����:o��ݞ;�����> �L5pU�w��L5pU�o����@I�2��@< `�F�X���b����I�3U�;���ݞ�:o��>m�sM�aPZI�2�ND�L���.�<Z-�=sN�G�g����I�3-Z�B(I��:�FI��ـ�� � D0�&I���&D#I��.< y�� ,I����B� �>焄@�� �=D � �(<����D ��<Z;@�!<-Y D!��":o���L5pU���L5pU�Io���ݞ:o����@�� I��>}��>m(E�1D���@�8I��
�@�0�I��� �8�L� L��À�����0��L�L���
�����>���Lp��� :o��ݞ:o��>]����T���ȗ!�(L@��)L��*L��D��>��<J��!�L�H�� ��"D �VD0�`D@+�I� ��.��@�T�D��>-J�3>�L5pU���L5pU��o���k� #�'�I���
� .��� \�����"��#>$x>m��=N�T��'I��Ł@<-Y D!��"<�l�DDB��s�IP�<Z-���b����I�2*<��ZX�<Z;���!�=�I������ �.$��>�$���I��ƀ��&D`I��Ҁ&DFI���I����> ����nH��^:o��ݞ:o����T�����(I��G�L5pU���L5pU�8o���.��.���H� L�L@�.��N�I��� N��(t�I��P����n2����@1�@1��L0@ɞj��BL@�+��@ @D@L@ >5����>��� �CL@

Quoted 2 lines

5(R��>U(H����fL!�> (� ��L#���� ���*@! ��@!L1@�@>M((L����> �0X�;�cL!�90Y"��L1@3����@! @! �%<=Z(�L5pU���L5pU��o����c�</Z(<=Z(�B�$>M�����<?Z(������@! @! ������@! @! ���@P���aL!��@ X> (���X�H��L@U����L �P�o��@�@��2<-I'�D�<I'<=I'>M(����<?I'���k�*@�@�.4���B��.$���m������@c@���@�@"�@"�C��� > (��AL� �@�.��.���I�K�H�L@�L5pU�-��L5pU�Zo�����(�I��I��I:o��ݞ:o��> �� CB�Q�H�%8�".e���L@I��ג��> ��l���<� T�
J�Dx>e$u�5.���5> �� CB�Q�H�AL@+8�'.$wL@$> ��l���<�T��c>5$u> J�D JD2 FD  E��`>5$u> J�D2D xF E�L5pU���L5pU��o���:o��ݞ;�����I�ٯ��;���ݞ;�����I����;���ݞ:o��.5��.%�΄ @��J�H�BP �XP<���.$r��>�$rBb�<Z��D D ���`��I��O<-)��&DQ�":o��ݞ:o��>}焀��:��!D �����I��7T� T� > l��%�@@��.�<=[?<-y�@�@�T!<[?�FXD� T��L5pU�w��L5pU�o���N�T��!�� >��< y�@T�N�< Zi� <MY�D D ���� < Zj� <MY�i�D D ���$< y�@T@�!T�@N�<MY�D D ����$�<-Zm� �<MY�D D ���i�$<-Zm� �!�">� �(T��T�N���(FAX�A�� � �_ �*�( �)<Z8�!<Zr��!D�@�L5pU����L5pU�4o�����!>k<oy�:o��ݞ:o��.e���!>�>e$r<��<Z;�!<-Rƀ&��"<mZ.I�?&I�x�&<Z/F�X��!�:o��ݞ;�����I�ݍ��;���ݞ:o��<Z���!F0�(>}$|F(�xT1�a�A�hL ��BL@A�$�!L�H�8�(��>�$L��2�P(�&��I����6��8< ��*��L�/<=R̄� �@�#�'��8�$��L5pU����L5pU�o���< `��OL<oI�>�$L�P@�&��I������8��� �� F �X!�D0��I���:o��ݞ:o����.E$|.5��T�����V@�����N2�FF0�DWy�@���݄�!D ��%@� T������!D �@4����%.$v�AL@?�$v<Z;<���!<]z�,����F�L`@D<ZZT���!.�D@@@�<MY@5$�D �L5pU� ��L5pU�.o����F�+�_>d LaX�<-ZZ��".��@@@���@5$�DD �E�$��h@R�@���@5$�DD �H�$Hb<Z_�>m��!"L@*.%��<`���<�Z_�I����(�@�"�(I����@T���S��i���DD �II��:����xs#I���#�����.$|�AL@ �-Lp�<-Zn�L5pU���L5pU�o���� �<-Zn�� �"�!>��<-Zn� ��"���� :o��ݞ:o����> �����B��Q�H񁃀�ȅ!>}��M�� ����@��I����9� T��5�.%k�"�/#�J���"��J��K� �"��I����� T��.%k�A�"�#�J�I���"��J�K�� ��K�!T����� ���%�!�>�L5pU���L5pU�^o���X<ZZ��!�ALa@ <��<Z;X�<��<Z;X���!�<��D �w<Z;c�>@�!��<ZZT��!�c�K�J� :o��ݞ;�����I��Q�.k:.k;���I�>�� @��;���ݞ:o��>-�1n��T���oF�X��@�f��F�B@ �T� �

F�D@�T�����I�>W�!I��L5pU����L5pU��o���@.��I�>U�����ŕ����@@@1�@�@1�@ @1���<MYT���@1�DD �n�$.���\����D�L@<MY�f�DD �o� DTs� <MZM� @��J�(�i�$:o��ݞ�:o������U��T��I�>�!I�?�.e�� �
��!<}k�I�?�@`$��‰���I�=�~I��O� @��:o��ݞ:o������HI���< m�L5pU�R��L5pU�ro���T�< [?�� .k�@c B<F@�@:o��ݞ:o��<-m��T!��<[?�L�<I��m�< Z|� �

Quoted 1 line

k����(@�@�� > k��(@���@�@��@< [?Fx��.k�@ �@�@<-Z%�&��"4@C���لDD �I��T< mT�< [?�� .k�@c B�F@�@:o��ݞ:o��>m�s)��L5pU����L5pU��o���*I��$D Y��*.s)I��:o��ݞ;������I��>�;���ݞ;������I��N�;���ݞ:o����T���U���

��I��� �
I��.��.���I�K�H�M�@N�� I�G�!L�z� I�AD Ls��*I��;��Nl Nh� L���� �I��D L@Bcx Bc| �#��M��P� I��"�"���L@���L5pU�K��L5pU�mo�����8����I����
��H7>�����˘�����������M�@T���GH�T@��FH�T ��@ �@"�H�M�@�J�A�� ��K@��@H�.jW�T����Bc N�G$��C�2�TN���<�TN��\��z�TN��\����TN��\����T@N�@@�?��OH�L5pU����L5pU��o����T@N�TN�T�cT�bT�Y�HHx.%���<y�� �,�FL �.%k:.k;�Q�H�����!L��Bcx�2�T�=�\��7�BP �8�\��T�B �4�\��p�Bh �0�\��)�Bl �,�\����Bx �(Ne*Bx �#Bl �Bh �B �BP � T���J��D��C�D $�D 8�D *��L5pU�:��L5pU�Zo���D ;� D .� D ?��I��K��NM�@.���@��@���@� N����T�X�F�X���F�X��8`�$� ����� D��@c�F� �
d���
�����:o��ݞ:o����.%��.��P`@.����A�����3.��.�΄���2��4�I��5�� T����L� �t�I�t���2�L5pU����L5pU��o����A��r���x��)��.��.%�Ϧ4�QL@ < y��.�!L���3s�.��.���.u$u�@Vs�@q���Xs��4�Xs���Xs�P�I����L���/s��Lp����-Lp��+Lp� �*Lp��,Lp��.Lp���C����!D ���I����I����� @�� :o��ݞ;������H���I��.�;���ݞ;����L5pV:��L5pV^o������I���;���ݞ;����Ą�?�I����<;���ݞ;�����0����L2
���L2@ �I����I�T7�I�@j�;���ݞ:o��T��� > H=D &I�9;>m�����>�$as>s<N�#,(3*B! B� B1� 3*�>uj�>��h#,(~�#�&P� �H�~�I�9<-Y%RB!L B!T �!</Y%>k|>uj��Y�L5pV���L5pV�o�����>uj�sD��� I�9.�:o��ݞ;�����I���D�y� I�9 �;���ݞ;�����I�镒�;���ݞ:o����D`T���Be$��> �t���4=�m�L�}�H<-n� I���<n���Hr�!6�
�L�@.�Z�e>��[��<Y:��!<Y5� �6.�Z.�Y�I�>�Z>�Y��<Y:��!T?�<Y5��7< w��D\�� �D ��H> �q�L5pV;��L5pV[o���I�(l���).�[�AL@>u�[��<Y9��!<Y5��!���#.%�Z.�Y���I>�Y>%�Z��<Y9��!.�Z�<Y5�!��.E�ZF�j�D v�I�������:o��ݞ�;�����I��!��;���ݞ;�����I���D��� I�8j�;���ݞ;�����< ��#L�.��� .%���</��"�I�8r�I��I�ꉒ�;���ݞ;������H���ؖI�� �L5pV���L5pV�o�����;���ݞ;�����I��K��;���ݞ;�����.�����!L�D��I�.�;���ݞ:o��>m���5�!L� I�����1��5:o��ݞ:o����>m���5�!L�<��Lp�I��Я��4�Lp@I��Ʉ�5�,�#Lp�*�Lp@ >-� 1!! ��%Lp����� ��> � ���U�צ�U��I����I�2�I����� >���:o��ݞ�L5pVE��L5pVpo���;�����I�����;���ݞ:o�������Ȗ���N����N���GN���L@> �P� �GI�7^.j�>koHr�"L�<Y�Hm�cLa�<Y.koHd�5���> �P������ٮ�� <MY .%ko�&Dp1�$>�P����>-�P���8��8�>=�P������> �P�@�>ko> j�� �A�>ko> j���B�>ko��DP�.$o��C��L5pV���L5pV�o���>ko> j���D�>ko> j����� �>ko���D ���DL �<Y�!.koDL�I�O>� �DLa
FX� B��FX� B� � .ko<fׄ���:o��ݞ�;������G�H��$L@�E�
�EL�FL�A��DI��2�;���ݞ;������I���;���ݞ;�����I����;���ݞ;������@D PL�L5pV
A��L5pV
fo���D��I��� D�_I�6��;���ݞ�:o�����.e�@�D���IU���L��� �D��L��D���� D ��L��IL����P�I��DTc�A��La@t��(I��L@nT�����I����#@�(�I<�S�> otT���K�H��@5$<?S�D ���� L�D �L�@ �Fo��Ȩ ����@���
�'�E�L5pV ���L5pV �o���I�5�Pd�������H�'I�5�P��G��Y� 4�> ot� � ����H��I�5ی藱� I�5�@�R#D��<���T���'�F@����I��1� :o��ݞ�:o��F�X�|�J> �pI�5��> �Ԅ D %I�5�> �x� D %I�5�> �D��DI�5�.��.4��D >%� D �</[ �_</[�ل>-'tD���8 � ����:o��ݞ:o����F�L5pV ;��L5pV [o����X �:Po�:� �D�D�I�5}D�4�?����A�?8�@��A�U�O�'QĀ�$�k�T>��T4����@�� 8�$@u T1�@s�@4�@��T1���P��L3�8�T����D0%L!� ��Tq@Q� ��ƜLL`��@��P��E> �I�5�:o��ݞ:o����.5kN��>]�\>M� �@T �#@#� 8b���@��N�8��L5pV���L5pV�o���@�@!$@dP���8b�T4�DOL��>5kN�$�J> %\I�4��:o��ݞ:o����Pp�@X`I����)I�6\�~I�5����
�:�> jr�> js��~��HI��>�F?�X�� �~�H�I��3�F��X�@c<X�P���!�T����Bc ��:o��ݞ:o����P`' F�X�T8p����'I��s�$I�6 �uI�5i��L5pV;��L5pV[o����@� �7�!L�> jr�> jt���u�I���� .jx��I>jx��.jw>jx��:o��ݞ:o������I�����#HI�ϗ����5DJH�B_�sL@ �I� ��&�HI�Vt��&�HI�^ل��I�ς� �GL� �DL@�KI��f��(I�_��D:o��ݞ�:o�����A��I� ��I�
���N��H��D�L5pV���L5pV�o���H��P�� I�� �D �D I���(D Hv�
I�ɦ0�q����I��T��N�!��/L��D#L��0�,L� �1�:L��6�6L��!�I����I� ,�#L��q�0����I� 3P�� D$@I� 0�L�@9��'I��� ��D I����G��"L�� �I���� I�
KN�I�
��2I�
f��&�L5pV4��L5pVQo���I�Z��D �D I��N��(D I�Vƀ �,�D@�0�q����B��$I��� ����I�E�����(I�Z���D �D I��"��(D I�V���:o��ݞ�:o�������� I� T���&H�*�I�hI�_����'I�b���!L���'I����"L���'I�b0��#L���'I�ap���:o��ݞ�:o������L5pV���L5pV�o������P�I�"��@D@DP4�f����I�#5��M Z��#L ��?I�nF�8aB � �����&�+�
NT �@���)D "I����� <-X�D"��"�T�@�NcD&L��I�h� �I�V��*D "I��p�baD"�I���:o��ݞ�;������ � ���bL!� �@T!�D:�I��X�;���ݞ:o���L5pV$��L5pVCo�����I��)�� �sDL@�D"I��):o��ݞ:o���������,L��� ���!L �P��#��DL7I�임!L�<�
�DLq�q�@p������:o��ݞ:o����I������r�KL@�!�r:o��ݞ;�����I�旒�;���ݞ:o��ﰀ�H���L@ �2���g��2P9I�!��� I���9P����
c�<=W뭎�L5pV���L5pV�o����@��#�TDL@�2P��#��!L�H�3�"L�DP9I�!��!�r�.��7�y�I���2�L@*�r�L@&��2P9I�!uP��7  cdI��s�y<=W�(�@��#�<-Y3�'��"���P:o��ݞ:o��������I��e���� ��L�@��&I��H��:o��ݞ�:o����L5pV��L5pV<o�����T�I��݀�N� �qT���2�AL@�I��+�]T�� � ��P���
P��� � ��P���#�P�Ԑ#�I��#��A��"��:o��ݞ:o���������ʧ �����CD0L���3� �DL@��"I����2�� I��v�L@ #�@ L4����D0��b�-�3D LA@���������#T�X�L5pV���L5pV�o���TC7< l�D DBs� ��@K< l�37�HB�sL�D(�I�砀� I��2�X�D(=��337��(D r�I��6���:o��ݞ:o������< l�#FDDBs�!�L��"L�%.�:T�<XZ��!� .5k:.k;�%�ؖ؄A@ @��L ���'��@I��o�s��:o��ݞ:o����.�:���L5pV(��L5pVOo���T��<XZ�!��� .%k:.k;�%�����@p�@p��'�@I��I�����s��:o��ݞ;������HI��T�;���ݞ:o����D ��L@.k:.k;���#�&�L@ � �(Lp�.k:.k;���f�T� �����%I��̈́LpW�(Lp�T.�k:.k;�D T��Lp4�ALp��Lp@?.�:��
��#���!I��L5pV���L5pV�o�����DLp�2N�0��!L��L� #���!I��{�DLp�N��I��%��I��!N���!L��#��I��`���'I���:o��ݞ;������H�I����;���ݞ;�����I��ɒ�;���ݞ;�����I�ϭ��;���ݞ:o������P���I�Q�b> ���AL@� �F�@���AaT��BNHT�%V�L5pV'��L5pVHo���T �a�B� X�%aT�%T�B X%aVa.������&�G��aT���N .�����e�D�@I��Z�CaL ��a�'�I�j�H�B �3�D�1��a�G��&I���iN��TN�#F>��80�FB1�80�
I��#��ED��D�L5pV ���L5pV �o���P4�f����I�Y��9T�Vaa�BNI�T��,i�)#F>��80�FB1�80�
I��aD�L�a#�� D��DP4�f����I�"�s �I����LD �L@��G�)I���aDO��@�D��@a�5T@�2i�#���L"@V@a��*�GI��o�Si������ �GD�L5pV"��L5pV"Vo�����DP4�f��I����� I�����'I�k��:o��ݞ�;�����I��-��;���ݞ:o������D0��L!���L!���G>}�� F�@��B s ���I����bL�!#�
��oB sP#�0b3�
�B�s���#�
B s�Gs��oF .jc�AL@i>ujc�I�!̀�b>}�� F�D�D�L5pV#���L5pV#�o���B$s����I�����
B�s�aT@�-F> ��8Bp �$Bt �!Bx �N#�� D��DP4�f����I�0��i�!�I�� aP�a%�#F< l��)Bs�@� �m�I��H���:o��ݞ:o������ L@�  P�I�"���'I��5�!PԖ@�7��F @ �L5pV%6��L5pV%do���@�@ �� ��'I���� FI�����'�@I��:o��ݞ�;�����I��M��;���ݞ:o����I��ƀ����I����%T@� X@%�I��z�:o��ݞ:o����I��Ւ�AP�L@�P#��P#�I��F< l�D�DB�sP��! <X�F�!��F< l��@B�s�f��m>�$n�F��L5pV&���L5pV&�o���X�􀂄�I�e.�5�$�@<X������f�I�W��@<X��P��f����I�H� ����:o��ݞ;�����I����;���ݞ;�����I��Ӓ�;���ݞ;�����I����;���ݞ:o�����1< XrBh �� �2>m�8�F�D_XL @�1�!�t�����<l��a�@����b�F�X������I����1�L5pV(J��L5pV(lo����!��� > �GI�@�?<j�:o��ݞ�:o����I����!L�#�D LA:H2< ��aL� .���.��N,� �cPo�<?��r�p�@��P�/Ģ�I�&�I�(Z�I���< XrBh �F@I�^������I�Ǧ�� @ ��^D0L� �pL�
�DI�iq��T��������< XrT� F @�T���Po��3I��L5pV)���L5pV)�o���0R<j%���!�I�u|����

Quoted 1 line

k,I����I�o���<=g�L0@ I�0.�4��I��I�R<���I�\.����I�V< m�B �I�����<-Y)� �".��V �!@d��

D@I��)<-Y)� � �"< m�T?�.�p�AL .��> �@��"�� �� > �@<Y5��!/Ģ�.���V A�p�!@�U���I��<� � �L5pV+<��L5pV+go���T��<-S�D�"��T������Lp@�@< ���F�X���b��I��>�@��!L��@< ���F�X���b��I��D�*.���.���<`��!I�Ț�>m�@����t�3��I����.�U�<Y5��!�>�U�.���I�����$:o��ݞ;������@�.�L���AL@
�I����
.�L���D�I�+��;���ݞ�L5pV,���L5pV- o����:o����� D �L�DL��S<-YN�(� �"DL�@D�,I�ʣ��I��P��T���@<I/�I�����@����@ ��a@7��@�wB0s�۞���6��R!��S�"�I������N�I@�<w䟱��`�
< w��3c�<-YO�(� �"�<YMD��!�:o��ݞ:o���� �����I����@.e�� F� I�. .e��L5pV.c��L5pV.�o����@�A���.E��$H�PA<R��$���
PA�\�)�D @����>�RhI���Pe�����D�B�$%>Rl���H�,L+n�'D L"�0I��.��<-�K�Q�M�!I��� �I��a��0I��.��<-�K�Q�M�!I��񃀄 P��Pc�Lp�I���� �I����BP� @@ �%�����'I��P�I���������@���h���L5pV0��L5pV0)o���F�X�@�I�v�.���1I��U
4F���!�D s�I����:o��ݞ;�����I����;���ݞ;�����< [����.kGT� I����
< XrD�@\����;���ݞ:o����.%k@�@�����?>}����@�����3#��L �&�"L �+���y@@�"� Bc$> �@���B#$$>=�@�H�
�SI���L5pV1���L5pV1�o����.���!L�I��� Bc$>=�@������ɀ�:o��ݞ:o���€ �� ���c�T�K�$�Q�B�OF,� X! @�HT��E�I��� ��D L �PL � �'L�7� �5�>��I�~�+.���+.k:.k;���.���!I��P�� �I����BL.k;�<f��< f��.k(.k)� �I��1��D�� :o��ݞ:o����L5pV2���L5pV3#o���I������ L�2� �A<=f�8!��ID0�L��� L@�I�ķ�D`� H�  _I�T���<-Y DP��"<-X.�!��"��� <-Y �DP�"�:o��ݞ�!<�ڄ���:o���I��U���<-Y DP��"<-X.�"��"���<-Y �DP�"�:o��ݞ;�����I��1��;���ݞ;�����I����;���ݞ:o������I�'�P� �L5pV4���L5pV4�o���I��DL���I��(.jiNbN.���.jfN� D L�I�q�N�<XrF @�N�#��I��_�FI�+�� �&^�A_L@@�k�(j����%.��T �Dp�s�D(Ts�(Lp@@� ��@\�'����
.uk:.k;�����Dp!�I����!L�i� �L5pV64��L5pV6co���.��� #��.����Dp!�!A�$�I��]>�Rh���P���2n�/DL�*I�Q.��<-�K�Q�M�!I���� �I���I�>��.��<���E��!I���� �I����MP��>jtP��L����E�jDI� ���AL@ D4�&I�S�.���.���I�H
�DI���@�(�@�f����F�X�L5pV7���L5pV7�o����@�I��.��<�[�@I���
3F���!�D s�I���Dp!��:o��ݞ;������I���ٗ!I�Խ��;���ݞ:o�����P���I���DL���I���jN� D +L�D L�#^3�L!�T�sN�
� _LD#Hj�F�!L �d�����N�<-XW�$��"�L5pV9G��L5pV9ho����JL@ D"�L�FI����D�'�I��Y���#���$I���#^�#_DI��FN��IN�*^N_���3�C��A�I��i�I��€�sN<-XW�$��"��'D I��aD �D$� :o��ݞ:o��Pj���I��ٗ!��FDP�D2�U #�N%D�N�F���J# ���F#T!�A�L5pV:���L5pV:�o���#N�>D ��S@@p�s��� ����D�+��F�I�L@@�� N�@�'�I����D �<-XW�$��"��G�$I��SSH�S_I��H��� :o��ݞ;������I���;���ݞ:o��.%k:.k;�����!L�&�I��� � B���M��H3FL0<l�D D��B@s�!��L@ B�s�IL@��L5pV<A��L5pV<o�����I��-:o��ݞ:o��＀����~�.�ؖD��#L�T��L�!L�@�.��T���L .��T��%L��L@,.k;.Ek:��!� DD ��fI��y.�:T� .k:.k;���-���+D$�<XZ��!T���� D$�D �D.�F�I���D$L`������(����I��4��D:o��ݞ�cc���F�L5pV=���L5pV=�o���?�D0.?��?s�_�I��K��;�����0N�@�H�_^D*�
0�V1�0_I��g��;���ݞ:o�����FP`d> '@8$��!L�@��> &@� �P�̜;�� I���@�9I�ڃ�a���B�$��D�<� �JI�(��*I��i�D(�/#��\���� � ��@���#������G� @��B! $B!�L5pV?N��L5pV?ro���$���Bs�$��9��
�!I�����I��<��:o��ݞ�:o���P`\ ��DL�#;� LD#H�3��L0D$H���> '@8 �!L�@�>-&@��P��Pt I��PI�c@�PI�K� � �I�([�*I���e� B.$�"�DH�3;�A\L1@ �
< [T�L5pV@���L5pV@�o����D(H�3;�3��< [T��6��� B�$�I��{I��F��
�!I��K���5�'@W�I�՟�.j~�1� �� �I���r��2�.j~B$�u.j��0��3#�b�@ WBq�$B#�$�@ wB!$B!$���,����/�3;� ��L5pVBA��L5pVBco����!I�������A��
��

Quoted 1 line

��80

D0�?��?co�I��x���D:o��ݞ:o�����F��> '@8 �!L�@�>-&@��P�0Pyt I����'@W�I��]j�
�� mB�$�I��{I���U#jU/�,�!#���/�I���@  F�D /��?c_o�I���@:o���L5pVF:��L5pVF�o���ݞ�;�����@��ITB�����D�k��������c@ ���_@TB�Z@DP��@����D�QD@��@!@1���� �Ao p����!@o� @�L@�
@�LA@@�LA���� �0�@p0�@o�� p� T��PL�p� ���A� H_I��3��� ���;����L5pVG���L5pVH1o���ݞ;������0� ���@y�b� H _I����;���ݞ:o���0F>-��81B!� ��� I���QF@1��)d D3L�#�� d� D�F�X�@�f����I�^#F>��80�FB1�80�
I���$P�P#@3 ��� <MW�H�C � D���$F .jh� i���!I���>ujh�T:o�L5pVI���L5pVI�o�����ݞ;�����I��'��;���ݞ;�����I�ܽ��;���ݞ;�����I�ݡ��;���ݞ:o��P0��-��L�< �T�S�I���O��L�!�r�3�I�*L�F< `�T�@�=.$u�#L�9D�DB��$< l�� P���'I����.��.���I�K�A���'I����< l�� �F�<=R˄.PЀG�#�
�7�����L5pVK ��L5pVK<o�������:o��ݞ:o���< e$���?L�
�� I�%�<e$Hy���u��DL qP�k.u��Ls@�!�@���I�� �@I��X>��Ls@ 0�0���[�Q�J�0�0���[�Q�L@���� �E< `��*L�A�% JBsN�6��&I��y�.��.���I�K�A���&I��l�< l�DDBsg�N�.��.���L5pVL���L5pVL�o����I�K�A���'I��R�
�?<e$<=R̄� �@�#:o��ݞ�:o����< Y%TN�=�m.��P6���P\P.dP>:PN�������H��<T��l��B�!L@�!���YV�\��^�T��N�Z���� �� � ������1���ʀj�� ��"����a�'.�"����܀JBcP��<mS���&��BcP �ܿ�����L5pVNB��L5pVNjo�����G�&I���B�l ��� �(�I��������ȝ���@��(���I��R�������*�Lc���a��<-S��"���������P�dP!dP1�dPBdPd������Q�d���"N��u�$:o��ݞ:o��6I���ؗ ������>\�����h�����h������.d���������� ��k����a���������D���>?Rr�L5pVO���L5pVO�o���B� $� ��P�����
�����H���aL��W��LA�H��N�>�|�A�BN�e�BNa�N2^0�H<ml�DDBa�s�ɠq�aL�I�1t�D0q@� w�����z��@r@���.�����H�I���<]eh<MeiF�X�TR�TB8@�8P�.e�əl���NBE���HA����%.���N�1<-l�����0N ��T�L5pVQH��L5pVQqo���N3�N2�NBO��C�I��c3���H�<-m�
��DTN�"N�"L�����V\N��N2�2�$@����HI��:�DH�����?��dN2�T!�N" "N�B� N��N���N2�Y��PbL��g��PbZ����@�2�#@��I��k�5���ژ������HI����BH�L5pVR���L5pVS"o����<ml�� D�B`�s�0N���T�}3��z��xO��C�I���3���H��@�(� ��� ������@o��9���L2@-�@�@P(��r�
�$@U�� �k@1���@4��@r�@b@�@@2�@2��@A�w�V� @4(����Q����@���@�����\���"@Ox@R����J�$A�(����@Cw�1�j��� �L5pVT���L5pVT�o���@2�����"Q��"�@t��܄����� � ����
�����PBdPdP����P1�d�������� �N��o����D:o��ݞ��N��nH��r:o����T�������ٗ!�iN��L�@� P4P�6P`3�Pp�PVP�NPdX��PtL� Pd�P�\Pdf�L�;PtZ���,�A����D$�L ��
L @��$�$�L5pVV%��L5pVVKo��������D$�N�
�4L@�D �� � �L�@ �JL@�D 2�
�
���B��L�@��I�����4�.%��Z��C�������N� ���B!l �_�����5�L� �'L���@�_��򁃂�)d�FI����Bl �'<oI�L��$4�@A ��@A�w� �?��I���A��������.Uk:.5k;�k<2�.�h����.�L5pVW���L5pVW�o�����I���� pB�Vs���@"���!�����I��L� $�������<�`��I��A��@A��T��<�m�b��������N�
���\I�ξ�=�!L���GL�@8���\I�ΰ�@����@1�B!�sR����B��������@wB u����>������ �R��< Y%T��
$��R�����0�:o��ݞ�;�������L5pVY2��L5pVYXo���I����;���ݞ:o����.4�����!��.���������@� �T��I����#N�L�I��l���F� T��B �6�� �����"I��:����"I��;<Xh7�!�+N��I�� �%�@Ta�<=Xc�G�)�#�@!<�_��I��@�.����I��/� � T��<-Xd�'�"���:o��ݞ:o�����I��b��D�y��DD u��b�L5pVZ���L5pVZ�o���>m���(�4N���L�����DD u����(�
�4�!L�>�s><fՄ��N<f�H͡5�D u�D@4��(���
L P���4.5���<MY <`�Dp)�$�&�>����<f֜I<f���� �@�!>%������ ����L���.e���I����&�� ���_</e$�SH�6�
�t�*�<MY �jDp+�$>��t�<MY ���L5pV\F��L5pV\|o���Dp,��$<f֜I<f����4� >���X.���8�;�"�� <�<R�F�X��!.����KI�f���@c�F<}Rф,�tI����'�5<R̈́��!<R�T���!�28.�ӄ@@!���;<L@F����b��F�X��X���I� ���DD u����(��� ���DD u���I������:o��ݞ�;�����I��G�L5pV]���L5pV]�o�����;���ݞ;�����I�����;���ݞ:o����� .��I��€��[��8�!L���@���D��H��G��Y���"I������I�������'�I������<\����bL��D��H��(�JI�׸����.4��������!�!L��.��I���� �I���\�����@���Dp��I����.��'�HI�א�:o��ݞ:o����9�A�L5pV_Q��L5pV_{o���P4��L@T�� I�d�� �k�5�����5�@��u�Lp�'Lp��KLq�Lp �&Lp��JLq�Lp@ �5���!L��0�BL@I�� Lp�/Lp��5���AL@��"L�8P�I�j���<���LLq@ �5�P�I�n���!L�#�������5�P�I�d��.%��#��*.%��<=R�P��#<R�P��!��:o��ݞ<MY �L5pV���L5pV�o���󦵦�Dp4�$��;�����I�����;���ݞ:o�����!��E�,��L ���M��G��jL!�xHЄ�L"��DN�p�RN�mH�E�
L@01N�DB$>=��>�K����� �����B!$����@! ���>=����*�8�*Hn�+�8�+HgP����g�L@
.5��<`������> ��L� 00�G���� �L5pVbO��L5pVbwo���0��K�A��O�<=f�>M����<?f�DB!$3>���P����" �J�L��CB!�$��������>=���!�*��!�*�!�+��!�+��t�BL@�.��N�.��aL��<"�x<�y.5Jʚ�@!�@�H΄B$>M������>=���DB!$�*�����*H�DB!$����+���+H�.�ӄAL@�.���L5pVc���L5pVc�o���N�8N��'.���8�.���.�,�L� .�D��<}R�I��O�'N�5H}
Hy.��� .���<R��!Ho�oL!�
.%��<`����D@> ��L"@ 0�G���� 0��K�A��O�<-fҘ�</f��GF1L@ �s���2
�$I�������I�����M
L�oL�@��5�
L@@ �L5pVeL��L5pVeso����4�� �
�\ �QDP@<-l�31DDB!�s�1-\�'� ��>-��8A�L8
�P6I� ��#6�� P6I� ��
<RȀb����I�
)66sI� ���g�DD u�I��2�E�:o��ݞ��2ȊH���:o����.%k:.k;�����C.��I��5��HI�|�y��\���5I����2,��I�n���H��I�h�{�L5pVf���L5pVf�o����H@(I����.��,.$����� ��Q@�I����7I��̒�y�L���������:o��ݞ:o����>}���H���� �I�0��H�<I����1�(I��Q�e�1�<I��L�`#B�G�A�D@DB4�s��aL� .4��S��ٖ��HL��A�aL��bL�P�3���B�s������"L�.4����ٖ�� �L5pVh=��L5pVhoo�������L3�P���B�s�Y�� <�M����(�1I��˒�1<X`H�!�

Quoted 1 line

=$���!�!�\� ��� :o��ݞ;�������I�ª�;���ݞ:o�������

T���Lp@->m���I��(C1D� D u���hI��/1�(I��N��I�h� � �41�5N�����N�v.���xHqP��>m������+�4D�D u�I���/Lp�L5pVi���L5pVi�o����8�>� � Lp@8�=�8�<@8.���>J�<�< ����F�?�4�DD u�I���DB�$> ���H�O��� <MY �'Dp%�b�$�+T!��� �%��<�<�0;�@��0;�����>� >��DL� �E�D�,�E<=R̄� �@�#>m��=;� �I�`�=<Z1��!��:o��ݞ�;����L5pVk;��L5pVk\o�����I��Ò�;���ݞ:o������.��,.$����� ��Q@� I���p���@����I��L���Pg]�B�)�L��� �ͦ���������Bs�$�I������I���@@`�@�Bs�$���@��
�F�X���\�d�� ��
�*@7F�X��8��:o��ݞ:o��F <}Z��������L5pVl���L5pVl�o����3�4<Z��H�6��N��I����N� �>�� �I��w���L�@�r�:��L@ �2�?L��z�_LI��t��<Lp@� ����ӄ!�<L��������;L� �������<oZ���D�3�t�D����:o��ݞ:o����<�m.5����@��T����Po� �I�ݧ� ��?����BI����I�ݬ�
���I�ݧ���������L5pVn%��L5pVnMo����:o��ݞ:o���I<mZ����fL0��La� ����� �r���I��m�I��\:o��ݞ�:o����.����<}l��F�P���I��Ё@DD�BsI��΀��Lp@.$��.����< y򜓘���,���I��O� < k�DL�< `���#D (@!$v@�L�$�!�@�@ ����H� �#F< l�DDBsI����)@����:o�L5pVo���L5pVo�o�����ݞ�:o����P`@FT���I�j� �6�)I��)�@�2�s��s��E�^��)�<���
����!@��@����#�"��<#�N�� �"L � <MY �vDp�h���$���� .k3��������P}�I��Q�`�
< f�P���I��H�@�D��G�A��!I��⃀<-l���N� �*> ����I��w��DD�B�s@.$�L5pVqB��L5pVqlo������D�<I��.�����A��>%k1>����DI���#���#��<e%<-ZnP}���"�@N�c���II����#���)�I���T���N��)P}�I�����N�.�6>�'@8��aL�&�>&@�8��I�����v> &@�M�HD P~���I�Ѧ6��8���H�P}�I��%<Xh�6�!N���?�L5pVr���L5pVr�o���I���6����(��!I�ش��:o��ݞN"�:��H��B:o����Pp?�V�H<�l�� < [���� >-%�8T8.���.kS� �?I���> %�8ND0"�??��?s� �I�p�>%�8�D/��@8��DDBs2� > %�8T�8>%�8 ��B! 8 ��@:o��ݞ:o���� HPp?V!�H�L5pVt8��L5pVt\o���<�l�#� /�< [���� >-%�8B 8. j����jT� �?I�i�> %�8T@��?�?D0!?�I�p�>%�8�X@8�DD�Bs2.��� � > %�8B� 8>%�8 ��T!8 ��@:o��ݞ�;�����I�����;���ݞ;�����I�̏��;���ݞ:o������,<b�B�4�(.u������-Tc��L5pVu���L5pVu�o���<�CF�X�L�G�g����I��>�����D�F�X�L�F�f����I��>��� I�����> ���D��I�2��:o��ݞ�:o������>}��D �D&F�X�X������I� �� <?['<[(�a>5��>ekJ�A��>ek�>ek�<I1<I2�I����:o��ݞ�:o��I�Š�"< XrBl �> ���A�I�ZF�I��I�����F�I��@<B�C�L5pVw+��L5pVwNo������!D u@I����> ���"I�?:o��ݞ:o������'L��-L��I����I�Ž:o��ݞ�:o����I����I���:o��ݞ�;�����I��=��;���ݞ;�����I��o��;���ݞ:o���@>%k,�I�3���KpLt@H 3�.���<Rӄ�!��.��I�� �I����I����0<RЄ�!�+02��P�@L2@ .k-3� �@�I�9��L5pVx���L5pVx�o����.k-I�Q.�I���� I�V1<��D ��<Z;@�!<-Y DP��":o��ݞ�;������HI��Z�;���ݞ;������I��`�;���ݞ:o����I�3~�����>E$kP��(�FI��<}XrF@s��8E�[�P@�<���P� I���<}XrE��Ts�� I������!�<�I��Y���!�<� �3�!L���2�(�<�� ��<-Y DP��L5pVz#��L5pVzOo����"�AL����J3�!L���2�(I�AN|�
I���<��D ��<Z;@�!3� �3<-RDŽ ��"�� I�U�<mXrF@c�<�ڄ!L�
��+P/��`I�9��< XrBX � �@<*�ڄAF>%$kI����I�UH� �3��(I��� ��
.�,��<-RDŽ ��"� �!I�UW� �2�!L� ��+P/��fI�8�< XrBX � �@<*�L5pV{���L5pV{�o����ڄAF>%$kI������:o��ݞ������:o����\Pp@�I�� ���F�D L�B�0L�? �'L�=��<l�CFD DBs��F<l�3FB�s��G�J��!L�
�T@��> ��I�P�I��X�� �I�P��I����:o��ݞ:o����BV� Y_��I����I�Fy:o��ݞ�L5pV}��L5pV}9o���:o����DL�D`�.k:.k;���.�������I��Ԁ�.$k�!L� �� I�=��>$k�:o��ݞ�;�����I�ɑ��;���ݞ;�����I�� ��;���ݞ:o���������_����D�^T�N��?�BL@<S��!�@<��
#�� L �I����)�@��'�I�����.���G<��D�L�B6�L5pV~���L5pV~�o����>I��$��AL@8<l�37D D�B�sI����
�*��ID�B�"�E�^��<S��!�@<�� #��L�Q����*��@���?�<��P��� :o��ݞ:o���H�b���B.��7��\� ��F>�(8 � �I��E<I0.k|��I�I����4#3.k|���QI���5�4�"I���&��X������&�L5pV���L5pV�Eo���<I/T ��O<-I0@��AL@I��4�E�����B�A�API��0#��&�T ���B� �&/���@<��'#3��S3��Y�4��#�I����5�4�II����&X�XB� �4�&37�4��(D rI��^�4:o��ݞ:o�����!N��D!@��I����!I�����E�&�I> �I�N>��L5pV����L5pV��o���F����H�I����N� <MY FDp2�I�i�$.��L@(L@
�D I��N��Hn�T�>�I��ր �I��@����&����I@6]�"� #lm�"��"�H�I�F>-'@8A��� �I�M.Ej��L>=&@�K�ɘ�.j�3��B $�I��� .�j�D��I��H�FB$���I���I��?� .%��<`���L5pV���L5pV�9o����E��II���@��@���(I��=@t�!�I����E�&�I� I��F�)P$��`I�N�:o��ݞ:o������,�+� �#L�'�(�Ȓ�\�|�� @s���D<Lp@ �I�0H�(��II���DLp@ ��II��<.��s����(I��J:o��ݞ�:o����#<-l�@FD0D�"B s��BF RL��.e$�@B @B@B�L5pV����L5pV��o���>E$�FB s�I�O�:o��ݞ:o������pF�DL� <�ڄAL@!��P�I��U< XrB\ � P�@�� I�6���"�@�#��JP@I�MZ��L@��P�I��1�I�h�J�I�6%�SY�!L�#<�[N�K<XrB� � P�@�(� I�6���I�h�"� �bL�8J3 �P#@I�5_�-��N�*< Xr�L5pV� ��L5pV�.o���B\ � P�@�(� I�6_� �H�"���.�h�P@�A�P@D�@I�L�FI��:FI��6�I��K�I��<��!L� DI��'�I�$�I��!<X���!�I��-F> ��80FH��.%��XB�@1�80
�$D�I��<-XrF8��X1��@! </XrDI���< `���L@ .�.����I���< Y�� p�"L��A�L5pV����L5pV��o���>%�̔ I���j�DI���< l�DDB�s<Xm�!<-Rǀ'� �"� �I��ɀI���<-Y Da��"�:o��ݞ:o����<��CL@c��<�/Ģ���D��I����
�`D L1�JI��͝����������.��.���Po� @���E���+I�����$�T� �I���<-["Lq@��'D0X3�=�N��<� I��� ��<<-�L5pV����L5pV�o���S��D�"�T�������.����I���I��wI����:o��ݞ�:o�����I����#dD .LI�.[�I�L�<l�DDBsF �.5$� �L�!@� @�@�>$�:o��ݞ:o�����F>m��D�DB� $�H�(�� @�%LA@f0�L>}$��A�x@5 @1��Z�@D@!�>��I���� �#I����FI�LK�L5pV�r��L5pV��o����K�">=���I�L�D �� �%D<#���HQ>-�2�L@5 @1���I�j���$> kG�(�@�%���$�@!LX�@� @�(@� ���> kG�@X��@� :o��ݞ:o��T���I���P`<N���!P��L������C��s�sI���< l�D D<=XlBs�s�G�#
�'I�Ԥ��L5pV����L5pV�o����� I��C�@3�Fs#��=�C�����ۄ@�F�X�DP3~Ā���I���=��<-R�
�
�"<Z/�3�!sC�/��� ���L� �%

Quoted 1 line

-&@��*�D I� &#������s� �gI��

��> '@8���sP~Ą@I��g:o��ݞ:o������L�@)I�,���3�<MY ��L5pV�l��L5pV��o����F�#3.5k(�&D���$.���� .%$m�aL!� #2�bL!�>$mP���'�I�b2:o��ݞ�:o����.���
.����!�.$g@.���A��< l�L@���FH��H�?�< y��,��.k2��L@���� ��T�����!����������H.%��� ��
<-y�!,@!$\q���� I��ƀ�N� �N#ٴ@T1 �L5pV����L5pV�o���N3�Ns�T!N#�@FNC�<-XY�?�"�FT!�N"�"CNG.%k3��#"CNG.%k3��#D DBt�$<-l����!�f!g��@A��@!��)��I����<-l���!!F�.$��.4������������)I���������I��6�?�`L�>-'�8!&L �
��#I�~���A�����N�c�I���<-l�����!!P�L5pV�\��L5pV��o����"#N'�"#N'
�I��V\����@��A�C=�l��?A��>�k2�!P�%#�� ��! L"#}T!� �I���#}�X!#}�<-XX��"�A@��A��������A��I�{Ⱥ $�b>5k3����!T���@4���A@� L��N���N�$�
I����@�.��<ml�DDB`�s�"# �A>k3H�L5pV����L5pV�o���i��f�_�.%$g�a<-Xi���"�[,I������9.%$g�#<-y�^,!,�" N&&<-I �.%$f��L"@ <-Zc��"@  #��<-Zc�"�����!P�<-Zc��"����#�H#��������_�.%$g�<-Xi���".%����L"@ <-z� \!@����f�3,@e(��!D t���I��h���$:o��ݞ:o�L5pV�d��L5pV��o�������I��Q�I�\�:o��ݞ�:o������� ��U���L�-� �*L`����N���N�� �/N���2N�H Dp�DD u��|��Bs$I��>=����&P/���I�T�@�I�S���� <�
.���<�.��8���L@ .�,���A@����'���
�#DWy���DD u��j��� ��%���9��DD u��%��!�L5pV����L5pV�o���L��@</m�N��N��$���bLa�*��6.�,��<��<��@� � ��x� B�$�$.�D�� <��<�����8��<2�<��� �L`@�� <2���<�B�$@6�9�G��&I���Nc�O��< f�<f���A�L@���>��τAL1@�N�I�J��N��N��
N��>m��3
�
PP#�#N��L5pV�p��L5pV��o���$T�
X$=�=�>�!�P#I��XHs�I���I���<?e$��!I� ҄@�񀜄DD u�����DD u��I��$� �P.���!I� �t@�DD u������h�t@L0@<;L
.�,�L�.�D�� .�P��F�X��I�S��<}�Ts��<Z���!.$|V�@��/L��D��L5pV���L5pV�'o����� ���DD u�@4�I��Ӏ �:o��ݞ:o��������I�+1��F��>-%�8a��:o��ݞ;�����I��-��;���ݞ:o�����!��FP���>-%�81t���9�@�"�
�P��q�P$�I��kY�!L�<-XrF0@! �V�������y�2D=I�ܻ��P�I����� I�4{�A��!L��DL�hL�[�L�L5pV����L5pV��o���T� L@�)��@I�)��*#���aL��������{�H��D3�&I�5�[�,T L����
����y�H��@I�*���I�:��AL �dL��(L�����[X[��:o��ݞ:o����.5�������< y�,L��I�����<I �.$f�AL@<Zc��!��<Zc�!��&I��� �B�I��ׁ�=�L5pV����L5pV�o�����:�I��U>'�8�
�2�5��� �+D La(� L%�MLa"D&LD 7La�L`��LaF.5jy<ml�>-(8�81Bc�s�I��!��� �:o��ݞ;�����I����;���ݞ:o�����Ȁ����Lp
�CLq�Lp��G.k:.k;������ .�:���!�<XZ��!�@��'#��I�ˍ�L�s��L5pV�q��L5pV��o����'�I��]3��L���JL@CH�C_F�??�D0.O�?�I�cl���@:o��ݞ:o����Po� ��@I��7��E��:.ej�> ��Bcp$��������N��s�r�>j�I��0�q�A�@ ��N���(���
�'��I���P� I���pDL@� �p�q�r�s�r.j��
B�$> ��H� I�z�ȼ��L5pV����L5pV�o���I���:o��ݞ:o����D�b �'L�3Ps@�I�x`�D�T�[i��K.��T��R.����N�T�I���E�T��� P/�I�ٺ�9d�6� �*#�� < Z�DP4�f����I�����DI��KH�
a`�I�t���aH�I�u �D#DI��1���t:o��ݞ�@ �L5pV�k��L5pV��o��������:o���� %��T!�<-XF�"���I������I�֧�#F� B!$>=(�P��I��$���:o��ݞ:o���� %��T��� X!� � %<-X=�'�"�?�I���D�_P�I����I��q�> �t�P�P��P��� �h�P#@��I��C�H�PI���I��V� F� B�$>-(��J�II���D+b�G��+��L5pV����L5pV�+o���I�{�$:o��ݞ:o������ I��� N���Nb� I��ɀ�� I��� �� �$��I���D�Ho<-Y/�&�"� �D ���aI���W� �D ���aI����0���^d��\�|�@c ��� �'L�:��9L�6\��\�L�> KX8���pD I�c�#��(�GI�\�\�|�> KX8 �(��"���L5pV����L5pV��o����^�p�_�H�I�b�� �(��GI�\E���$��� I��,�����:o��ݞ;�����I�����;���ݞ;������I����;���ݞ:o������< x�I�!>m��3�"L����!L�I�O�#L��$L�B�=I��~�I���B��6�2Lp�>F#�R19�#�R1��a���R1q�#��I�:@I���
R!��"��I�:6I���L5pV���L5pV�.o���<mYI�:,�`�!�D 2�&I�D�$�
��3� <YMDP�!�!<x< x�!L�
I�:�)L�I�}��:o��ݞ;�����.U��@,P �I�0�� "�ʮ�! � ����;���ݞ;�����I�����;���ݞ;������I����;���ݞ;�����I�����;���ݞ;������I����;���ݞ;�����I�ݒ<Y��!��L5pV����L5pV��o���;���ݞ;�����I�����;���ݞ;�����I��E��;���ݞ;�����I�� ��;���ݞ:o�������T���t�s7�I�I������DQI���Hi��DRI��
�]�#� �I�&I�ܧ�� L@D���L@D�4�� L@D��� L@D��� �L@D�h�D��9� �D ��I��P7�I��SP9I��A�L$�L5pV���L5pV�!o���� L!�L��L�L�L`��D�� F �X!��h��I���9�D���:o��ݞ�:o������ �KI��.�����0� �1D)�2F�X��3I�� FR�7X�XI���� I���:o��ݞ�;�����I����;���ݞ:o������/T� .u$i�Lp@��>E$i�� �GI����� ���� D*�
� /I��L5pV�v��L5pV��o����΀� I��ʀI�̩�I�˺7I����I��Ò�:o��ݞ:o��T����"��N�'�(�AI�����3���(D r��I��^�Lp@ <MY 7�HDp�h�$���� �II�v��5H�P��H�"���H��H�iPI�����@�A�I��I��c��3�D r��(��I��%�_Lq@�B0 �H��5�'I�vL�6�!B I�vF�4�)I�v��L5pV����L5pV�5o�����i�P�BI������
�5�I�v9�5@�N����5�'I�v$�6�T�3������6�'I�v�&�7X���:/�L�@8�?�.@<�#���S��5��#�I�u��&�5B� ��5�'I�u�6B �!I�u�3���J�4����B0 ���37�5��(D rI���<-YL���"��:o�L5pV����L5pV��o�����ݞ�;�����< m�>ߠ�FPHI� I����;���ݞ;������H�I��o��;���ݞ:o����<}l�7DDBps#�<�[">��HqI��9���!�L� �BL �BL �.$j�'7�D �aI��!��<-S�(��"�'�I����.��.���I�K�A�#�7��aI�����I�\� D ��� �� �L5pV�1��L5pV�\o����(D!��  � �C� L@�(�E�HL@�� 6�AL@
� L@��� �>7�I����.��.���I�K�A�7�I�����I��G�� ��!< Y%��7P���� I� �
I�uL� @����L�A�sL@�X�37N����D ��!D sBI���7�I��$�.��.���I�K�L5pV����L5pV��o����A�7�I����I�����!�2�,L��T@���A:o��ݞ:o����<-S�����"�D s��LpF�$Lp�D s�A6�6�I��!�!L�1D s�"�f�"<S���!�>$j<S��!>u$jC�37��"D s�37��"��I��0�� 37��"��I��'�:o��ݞ<o["s6����D s��f��;�����I��}��;��L5pV�Q��L5pV�zo�����ݞ:o����I��q� L�/L�.$��!L�F .$t�I�H>$t\��`�I���:o��ݞ;������I����;���ݞ;������I����;���ݞ;������I����;���ݞ;������I�� �;���ݞ:o�����D��Po�G��Y���&�@�I����T��L���<�T���� N� �I���D$L��9I������D %T��Lq�� �L5pV����L5pV�#o���:o��ݞ;������I����;���ݞ:o���@�`8q,\�%�L�K.�HI�K.������ �.$���Q@��DL���L���>-'t8A�c��BR s��@2��81 �EL���L���L�@�> 't8^�����!��� �K>=��>M�xI����@�&�I��g�I���:o��ݞ�:o��<m[$���F�Bx ���%I��L5pV�x��L5pV��o������I���@</[$�I��Ē�<YMD�!:o��ݞ;�����I����;���ݞ:o����<[ > kII��< Y%T�> ��I��I���I��t�N.D��<-Xr<=X��B!h > �>%\�#���Eů�>���DpD�+�<�(��%� D.��@���T���?� F<l�BsD ���L@ F8B� �I��)����0����F .�L5pV����L5pV�o���kG�"�J>kG� :o��ݞ;������I��&�;���ݞ;�����I��9��;���ݞ:o����.���< w�>=��Po��@PQ�Ԁ&T�/��_@q�@r�I��,<-S��pT!�
< S�T�D1�I�~�0�!L� ��BL �fL��� >��� >����#>�܅��">�܅P��> ��I���>m�؞N��4� �v�!��&�6L�5�΀&�L5pV�s��L5pV��o����F�I�j��r�q�:�9@R�@�@B@@ �𦸘i� �K�L@�s�;L@�5�����|@ @����!@��@��\���� T���/���O�I����.j��AL@> ��DI���� ��>��B� �J>��.���aL�
��L&�CL@?�I��̀ �����aL�5��AL@-L�@-�).��L�&�&I��������aL�.e�܄L`�L5pV����L5pV�%o���@.�T��!L��� <w��
�
�?I����<ow�������.���AL@M.��LILa@G���bL�2>������ � �I� �P��JP�I��>m����6L�����@���F�X�8�b����I��4<MY?���!D O�� .���L@ ?�<MYD O��$H�!L���Ld@�.��L@�<���A@�<���N��F�L5pV����L5pV��o�����O@���7I�3�� �N�
< wτ �<w�Hn.����*Hh.����3.%�T�T� >}��<=w�T��B P�0�I���aL�>}����6� <=w�T��P���6�@�I���@ �6�
< w��< w��'�FI�io>}ߴ?� �;�F3��>��I�ib�:D I��-�D �<<k�I��%< S�T� < S�T��)D1�I��L5pV���L5pV�o���|l�!�A<*���I���<Z ��!< S��bT<?w�� < S�T�D1��&I�|OO��L@< w�I��\< w�/�.j�. j��H�!�  > �خG<w��!<=w�<-S���<?w�T!<w��
< S�T�D1�I�|�:o��ݞ�:o��F(P`��� L< k܄&L�F B� �H�B�� N�<-k�뜑</k�E�70K�L5pV����L5pV��o���B�sNH TDD0�@1����D L�6��L��3� L�0D&L��,D 7L�(�NL��%�L�A�� �7��I�.$n�!L�.$dL��7m� K�%Bs� PH�F��H�@��=Ne< [��� �7�EPKB� B�sO�w�E �K�B(sBT� O�]�\< [���X���V���T<kB�� �I<k\���7KB�s��L5pV�2��L5pV�Wo���N��I����w�m�)s��&��N�#<=X��(P�F�#��D�7Lp� KB�s�N�KB�s�!N<-X�P�(�"��<S�T�N[< S�TNU�(D!H�F B@ ��Bs�P�H�<S�T�N:< S�TN4�(D#I�{H-B� T���� @���RDP�@B��$�L�Bs�P�H���7�L5pV����L5pV��o�����I�<kTE��I<k<]X��$P�@T4��%<S�T�� < S�T��(D I�z�< [�#L� @���>L������7KN� IN#݄EB�s�!NH�<=[��L2@ ��� �Bs��NH�0�G�T���N� ��L
�Bs��0�NH�<=X��(P�D�#�����7� K�%Bs� PH�F<S�@�N��L5pV�A��L5pV�zo���< S�TN��(D$�+K�OV�O�7�% KTE�Bs�!N<]X�P�'�@T4��%<S�T��m< S�T�h�(DI�zC�b��AK@��eB" s���NL@�wB$� �lL � <kg��L<kg�FB� ��<k��I<k�7��I��5�7B�� \���l�)�7K�%@��=���� .k;�
<-[�c�L5pV����L5pV� o���L!�N�����7�% KB�� BsPH�GL�� � �F����Dp�:o��ݞ�;������I��.�;���ݞ:�<:o����Po�,P��@: ����: :�$�:��I�����:o���ݞ:o���@!>-��P` P��D�P1ԗ$�(@q@q�I�̠P���2P��F�
I��s<S�$T�� < S�T�D1Ȅ I�y�QπD�L5pV�b��L5pVěo����N��P�I��g.���,I�����N�#P��
I��pT�7�B� �"T�����Qπ�E�<I��y�kN�ˀ
�<�FI��+�e��`�6��
P�I��J�7�T�� B�� �"T���P����EP���#��J� @�@@! @R�@ C��ȈH�(���L A�#�� L A�� C���3�@ @ �K��I�LA}�L5pV����L5pV�o����6�P���E�(I��� �0�L�@ �
�(�FI���Hz�0L�eHuN�a.$��< m� ��`�IT1�� 3�@RL2@0�C�LA�JPd�"��HY�6�lI��+�!L�Qπ0: �_PO�: $P�:���I���@�7�1��
�FP�"I��DŽ @����FQπ"�
�<I�����7T@�P/� ��y�T�A�@@��L5pV�s��L5pVǖo���@R�@ �8�҈>�(�L�L@�{�L@��}����@�@ �K��I�L@�1�L�9�
�<I���N��1P� �������@�@@1�@�@@! �x��j�H�ݘ�L1@�����L1@����G�Ƨ<@! @�������L @��1�J�L@��N��F�O@��I�/��N� <wќI<w�H��1��Q�7T�MT�/I��p�aL�L5pV����L5pV�o����+P� �����D�C@�@@! @R�@��8�ˆJ�i���KL �/���EL �+�}�����@�@ �K��I�L@�6��D��L@I��U��3�Ts�ϯ�T�P�@�I���@�7���'�FI�����FP��I�d��DI��YF �B!t F ��� ��D2�.��<S�T�<?k�� < S�T��(�L5pV�d��L5pVʊo���D1�I�w�<-S��T!�< S�T�D1�I�ww�� �H���P�D���LDH����L:o��ݞ;�����I����;���ݞ:o������<MY�!�D 0�f�$D~L(D�L$D�L D�L�L�L��<][<mk��F�X��F �X!�D0V ��I�� ��:o��ݞ:o��Qπ�����J`�Pp(La@+��H�b��L5pV����L5pV�o���T��L��DI��<w�<=S��I��<w��
< S�T�D0iI�v�ˠ}��H<w��I<w�H�@ �H�A�F����=B� L>%$iP��F�I������ �|$���I� D0jI�w-<MS�< S��$T��F8T�X1�$N��焤�Lb��B NѠ=���*�G>�P�T�A����I��I���F���I�L5pV�d��L5pV͋o���I��c��*P$�8I��!>�N���P�6�1��2D#�3�.Di�4�pF�>�D�\�5�(F�P �(F�P �(F�P�(F�P�(F�P�(F�P�(F�P!�(F�P%�(F�P)�(F�P-�(>�P1�#�(DV5�6�7�� ��^��L5pV����L5pV� o���@B 82��K@!@@"@! @�@�D�(@��@(P8�0�I��� I��zP��DI��<-S��|���
< S�T�D0kI�u����̠}P����f�>�!L�%�DLa�fLa�.j���=A�B�P��DI��p<S��L�H< S�T�C�&D0p�3FO< S���@<���� < S�T�D0r�&I�u�I�,w�L5pV�b��L5pVЇo������P��DI��B<=w�<-S��ٖ�<?w��< S�T��&D0qI�u{�
.���DI���I���>�a>m��L� �3�t��K�t�3�
P��I�����Q��:o��ݞ:o����< [$�< Z� <m[$<�k��<YMD��!,I�����@8�?��BD �< [P7� N��!@� T�N�TN�TN�>j�F�L5pV����L5pV�o�����B�� N��*��$<S�T�� < S�T�D0��)I�t�T�N���$���'I����I��΀I��� �T��BH�� <[$I�����L�@�"L��F�q�Cp�L�L@�I��/�Tc�I�ʰ���.��!L�Hx�+�"�,< k���L@ �I�� .��!L�HfI��M�ELaF`�L5pV�y��L5pVӨo����TcD< k�L�� �BL@� <k�� DL�DI�� �.��AL@�>I���F�T��2D�<[�2�I���.I���<-wȜ�<[</w�D�L@
F �X! �<-S����< S�T�D1jI�tI� <YMD��!I��< YP� <YT��!�:o��ݞ;�����I����;���ݞ;������HI����;���ݞ:o���L5pV���L5pV�$o������I�����N���7��7<�["�(7I���37��!D s@��I�tF.�k��L�@I���L��(DG�HI��� >k�.k}T�� DP�AI�� DLp� �X�D=��
Lp@�s� L@�X��&T��#�.����@�X��&D>=�&T��<-S�=��"< `��#L�9.���5.�.����.I��\�+�L5pV�~��L5pV֣o���DLp@T����'I��n<S��!�I������<}l�7�DDBp�s<�Xn�)�I��+@���@�)��(�<-S��&��"��?I���<-ZQD �
�":o��ݞ;�����F�T��I�*3I���F�B� �� >�I�>��;���ݞ;������HI����;���ݞ:o������.�!L�F��p �<Y�!F�L5pV����L5pV�*o����DB� �D�%F��FX1�@��0�DI��@1�0��<Y�!sDq��Lp��FF � p > ��0
D DB�s������.L@�I��m� F���@F���A<Y��!F@
3.�%@B@@C���!D �I�s
�:o��ݞ;������I����;���ݞ;������I����;���ݞ:o����I��YI��}�L5pVق��L5pV٦o����!L�I���HUFFX���@</[�@�>}c4>mNA� @$T�.D �$�I�r��'� �!I�%�<[F@@XB@�<[�G�*��"Bh X�<[N TN�D H�T��0D �(�I�rl�'D�!I�+p<[F0(X1�@�<[�G�*D�"Bl X��<[N� TN�D H�L5pV����L5pV�)o����T@�1D D�I�r9�'D�!I�-<[F@$B� @�<[�G�*D�"Bp X�@<[N� TN�D HnT0�+�D � I�r�'D�!I�,]<[�GB�<[�*D�"Bd X�<[Nn TNhD �@T �AD �!��I�qٴ'D�!I�-{< [D�A.�L@ �% �L5pV܀��L5pVܧo���KBsPH��<[�GB�<[�*D�"B` X� <[N. TN(D I�q�H"D@�@�6D D �I�q��'D�!I�y�I�%�I���
�GBP�
D0��*DB��*@� �"Bt <[N� TN�D I�qPH�T�N�I�$��
�
F0�@ �
�$@��@��UĀ��M�@-D �<�I��L5pV����L5pV�!o���qI�'��!<ZN��!I�%�I�-ʴ'��!Bh X�<[N� TN�DI�q�<H�T��$D �(�I�q�'�
�!I�%>�'� �!Bl X�<[Nz T�tDI�p�HoT��DF@4��3FF��� (�  T���ID��I�q-�D � I�p״'��!<ZN��!I�&�'�L5pV�z��L5pVߝo�����!B X�<[�4 T�/DI�p��*T��N�6D �"�I�p��'��!I�$�'��!Bd X�<[� T� DI�p|��$��(��!��"�
FO�XB�@�@@��*< l��(L�I�x�< l��HL@� �F�@ �@$N��< X�� I���� :o��ݞ;�����I�����;���ݞ:o�������L5pV����L5pV�o����I���.$h�!L��I���>e$h�:o��ݞ�;�����I�����;���ݞ;�����I�����;���ݞ:o������N�.��N~< y�,,L@v.���r< k��!L��CL�/L� I����<}k�D Lq@<Mk�D�D S��I�p!,I��� �LI����
<Mk�D�D S���&> �� '�!L �#<Mk�DL@�<l�.U�L5pV�r��L5pV�o�����D0DB�s���C1�-�-L0� !�DD S��I�o���q�BL@�A>%$g���&��AL@ .��#,L ���D@�� < k��BL@�L@<-X��"� � ��D�D S��I�o����B</k�F </I�>$h�.$h�!L�I��� >$h� >$g� ��:o��ݞ:o��>��=Nb��(�I��v��TN��L5pV� ��L5pV�8o���< k�,,L@> �� CB�Q�H�8���!I���< I �.$f�!L�l> �̡�Ls@�@�$L ��L��FL@<MI �,�D �D0�I�oGH�>}$,���!LD��L@@L�@��D S�aI�o3.��I�c�<I
�<Zc��!��"��.�C��aD SI�oF< I�����<�I �@>%$f�'@�3��L5pV���L5pV�o���!�gD SC�a�F��I�n��> $,�!� < y�@.$x� �<-`��*L �.���<y��,I�����A</I ��HE,�I����.��.���I�K�A�,�I����s< I �BLo.�!L�CF< I���� �7>|���x�;�I�K�A�,�I����!L�(P�" �C L,�I������{�������L5pV�"��L5pV�Ho�����,�@�I���@@(D�D S���C��$F<I,�I��.$��.����������,� �I��q@@$D�D 9��I�nQ���,�I��`.$��.����������,� �I��R@@$D�D S��I�n2��<my�!.L�7�j"tNw< k��D%L@�������Nw .$l�< k�DL��<I I<M�L5pV���L5pV��o���k��D�D 9���,�DD S�ˀ�I�m���t�7>�$(�DI�b��
�-�
I�b��D<my�I�b���>U$e<Mk��
�l�D 9��I�m��.$e�����>e$e<Mk�<_I �DD 9��<my����>}���8�(< y�@.$x� �!���L @.$v�.�$u�!L����4N��I�}
P <=ZW�<�(�#<R�>�$v�
�!��:o��ݞ;����L5pV�"��L5pV�Ko�����I�յ��!L�< k�� �"L�V\����;���ݞ:o��T��I�5X���@>e$�>}��I�_:c�&P� I��V���.k:.k;��N�<j?��!H�.k:.k;���I��%�� <XՄ�!�� .��>���.��< j=� � .k:.k;����L�@< j7� ��� �(I�6Հ��H���I����%�!L��#.�HL@<}l���L5pV���L5pV��o���< I� ���<j<��!���I��Ԁ�� <MYF333X1�3��"D t�$<-X�)��"��N�>}��.��� L ��I��A@���?�F��X���<=k��i�.%��<l�DDBs��@�.�@B@@BDD TI�l�<-X� ��"�XI��"I��`���RI�^��L�@F�@4��>���Dp �?�DŽ%<-Xڀ)P �"���3�L5pV���L5pV�Co����1.�#I����L�@<-X�'��"L@.$���&<=XـIP �#��<MYD�D R�f�$�I�3J�
.$��<X� �!����ǀ:o��ݞ�:o����>}�̄�T��c�&I�^:>-�$օL@���� ׄ!L�}�Dp�;.k:.k;���l<j?��!Hg< j7� � ,>%kb�;>�ke��!D A�A@V�c�$@d@�L5pV���L5pV�o���<MY��&��"�f�$�CI����3.�H�!L�< l���*<j<��!�%I���� <MYF1X1���"D t�$��A>%��<-X�)�"��<MY�"�D B�f�$��!>���< k�D%L���I��:I��x����:o��ݞ.k:.k;����H����:o����>e$�>}��T����@I�]�c�&P� I�.Ȁ��.k:.k;��N<j?��!H�L5pV���L5pV�5o���.k:.k;���I��m��<XՄ�!�.$�� < k��< k��&L�N�.��>���.��< j=� � .k:.k;����L�@< j7� ��� � I�5���H���I��3�%�!L��#.�HL@<}l��< I� ���<j<��!���I����� <MYF2""X1�"��"D t�$<-X�)��"��N�>}��.��� L ��I��|@�L5pV���L5pV�o������?�F��X���<=k��i�.%��<l�DDBs��@�.�@B@@BDD TI�j�<-X� ��"�XD L�UD`L��QI�4ǁ< I� �I��NI�������DD ��a�9>}��<=Xٴ'P� �I�#���I�1��I�-Ʉ!L����<-X�c�%�)P� �"��<MYD�D U�f�$N��.$��<X� �!��D�D ��L5pV���L5pV�,o����b��I�j��:o��ݞ;������HI��B�;���ݞ;�����I��/��;���ݞ;������I������< k�� ,I��V��VB ���;���ݞ:o����>}�T�>Po� � �I� �I�_+C#3@B @��a�J@A��L�K�&�K����!�H�L�$@� �e��T!� @"@0 @@� ��/>kf#C3P���L5pV���L5pV��o������I��L�"L�&�7T�!I�B���?�L@@�I�^����I����<j*���!����!>kf<Y���!�� <j)���P��!�4:o��ݞ�:o����>�T<-k���!,1�,T��L1���
D @</k���� >kf>m�T�6��P<MYD�D _r�E�$���D�v��.D@�6@E�6�4B�u��a.j��L5pV����L5pV�!o����>5j�DI��D� I�^V�1� I�^P�2� I���3�I�^F�<-Xנv��"��7<Y���!� >kf�w�L:�%��bL�m���g� �L�fL�a�MI�C��YN�I�C��S���I���>m�T�7�!L�O�I�]�F ���7�>kf�B.kf�aL���6��4���I���>m�T�7�!L��I�]�F ���7�L5pV�v��L5pV��o����>kf�
.kf�aL�����7.k���I�B!�w���I�]��!�E@1@0���7��!<k�< k܄��I�B���:o��ݞ:o����I�%фL`@.k��� F@4��< Y�� I��yH��GLa@.k�FT�
�kT�h�"L�f< Y�� �a�JLa@&.��N�< y�<[CL�{0�EF <?I .%$fg�L5pV����L5pV�o���L k>$f���< I <I ��L@ > lL� �Y<[�HL@U�,�'�L@'F F�@L�F.���B< y�<IL�=<I D �T�@�L�2F> $0� �*�GLa@ I��> $8<[C���L@I����%L��KLa@.$��!L�F .$t�I�H>$t\���I��
�:o��ݞ;������I����;���ݞ:o��>}��T��L5pV�l��L5pV��o������� �8���@��I��靱.kN\�<�DOL`�:o��ݞ:o���F��X�
8: P�<��FP�XR�P�� : $F@�XB
P��:�f�H:�$F`�Xct��:�: $:��j��:�$��: :�$:�e:�$D#���&D�&D�&D�&< [T�
T�T@t�@t���8���I��s.kN\�<�D�Le��X:o�L5pV�"��L5pV�Io�����ݞ;������I����;���ݞ:o���F�X
�: F`�Xc
tP�8P_�(:� F@�XB
dQπF��X�
T: P�����:� ��: F@�XB|: : :� P�88p� P��(8���A����q� P��85����82��`��I�N��>���@0(� ���+<-[�!@� @�<[�#�������$����8�'���!<-[@� @��L5pV����L5pV��o���@�<[����L��I�����L:o��ݞ�'��<[�@ @����:o����F�X
���:�����P��: $:�@0� �4���I���.kQ\�<�Ld���:o��ݞ�;�����I��S��;���ݞ;�����I�����;���ݞ;�����I�����;���ݞ;������I����;���ݞ;������I��j�;���ݞ:o����<=x�> �L5pV�!��L5pV�Go����l�@�N2�Pl</x��À 0��H�܀CB"�s��Tq��@1 �����C �>}��L��ৡ��s���ALT@?Ͳ���P�@Q���|���ܯ�����@��?Ͳ�@��P�@���!@q�@��%��Q��|@$�������p�>���!L�Ʉ�>-���2�\�,��I��� �1�I��D0NLa������I���\�(��I����L5pW���L5pW�o�������\�O��I�������Po�π��&I��d��&I��V����I��r��DOLp���'Po�����&I��7��D%Lp��I���.kO� >�\> ���JI��.kN>kQ.kP�> �p>�\�JI��� :o��ݞ:o����������MI��M������G��D��Po�D��tEƉЄ@��&�I�� ��&I�����D���<�%T�"T���N�� �(��L5pW��L5pWEo���T ��L�
P����(D NL��9�(�T �DML��:�(�!��D OT���Lq��.4���� �_���I���I��x.kQ\�3>kT� :o��ݞ:o����.u��.���>mkO��0�I��������0.u�>mkP��0�I��K�����0>���JP�I����I�t�<x��<[ <[ �_L�A�L�$.���\���I����> %\>� �JI��L5pW���L5pW�o�����.kO�I��O.kP�I��f�P?�>-���B�H8!��L �������.%kQF \�3�>-��1��>EkS�DDBD$� � 1�١Y�Q'Q�2P�DL���@>%kSI����:o��ݞ;������I����;���ݞ;�����I�~ ��;���ݞ:o�����)�T���"�pp��I�����\�O�EI�ص�D��(�@I��.�;I��L5pW8��L5pW}o������ �L`���
�L����L@(�#� L`�
L �L@��*�I�h�I��4��I��D��I���� ��%I����'�II�����I����I����:o��ݞ:o����< l��!L���H�.%��<l�DDBs<-X�D�".k��I�s�<['�_L�A�L�$\��
�B>%k��@>%k�<['��>k�I��v��I��w��.��L� �L`
�L5pW���L5pW�o����I�袛��������uI���r>�l ������۠
��� <-Y� P�L�"�A>%$��]�I�X�>-k��P�ʖ�<I1�d��I�P�N�L�L@�'>k��D<mx����@.��� �#<j}<=)�� DI�A�#.kh�>m�l��PcLC3��!�D �I�c�>��L���F@؄!�D �D0�\I�c�F@ل!�D �D0�I�c˄�����L5pWO��L5pW�o����"<l�>}�l�G�L @<X؄�!<jID0�@ @!���Ps�L�����!�:o��ݞ;�����I����;���ݞ:o��>m���5I�X9�I��X.���DI�XM� .$a�D��I�XA�5I���<I <X�< k��!<Y���!< k�$I�U��<Y���!:o��ݞ:o����>m��3 T���I.���1.$c��L@(>5$cDI��P.�L5pW ���L5pW

o�����D<I �DI�X� .$a�D��I�W��5<��I�W�<k��
< I I��,�DI��'�I�W�3<-X���"<Y���!� <k�<-k��,!,L �< k��C�"��,L��$<k��#<k�< k����<Y���!N�Dp�< k�pE<MY3 �DD b�$3 �7.���c ��Lb@D��L5pW r��L5pW �o����I���I���<k��DI���>m���I�W}�5� I�Ww�6�I�Ws�3<-X���"<Y���!� >m�� �&L���'��CL%�$��LAYH[�dL�%��LAQHc�IL��*� �L��hL�DHȄ�L�� LA<�-�3I�W�H�I���H+N� I��̄  H,�ZLp��#F��I��ĄH</k��L5pW ���L5pW o����1I�W�% �4H��Lq� �H�1</k�I�W�4� ��3I�V��<Y؄�!��� .kN��!H��4I�V���3I�V�N�Hb<X��!<Y��
�!�(I�T4HUN�<X��!�(I�T&�H���D@Lr@�2I�V��B</k��7I�@:> ��I�q.�H����H���� Lp@�2I�V��B�7</k�I�@$> ��I�q<X��L5pWd��L5pW�o����!I�R�� H��4I�Vj� �3I�VfN.j�I���H��V� H��7I�VV�ܠ3I�VR���3
�# ���YN�<X��!I�Rq�
H��1������E0�JB�s�N��+ �"�A�I�(<k��E������% JBspN�<Y؄�!�+ �"�A�I����'�7I�U���3I��L5pW���L5pW)o���U��H���C
�# � �A��LI�?ńH��ۄ H���D I���<mk��L`@#<X؀�!I�� �"L� <Y���!�I��x<mk�I��T�L<j%�D���kLa�!<X؄�!.%��< l�DDBs�"�AF< k�@� <j$�����!�"<k��:o��ݞ�;�����I�~��;���ݞ:o����<l����L5pW��L5pW�o���D�DB s.t���� P�I���< l��!��X�@B �s���'�����L�>����D0L!��A�A��A��.%���(Bs� �A�I����I�R4� > (88�?> '�8
� :o��ݞ;������&L�
F �
�B�� �
I���;���ݞ:o����F(� P`@,���c�T��L�X���FX
`�FX��<-j>�@��"�L5pW��L5pWIo����I�}>\�C�F�X���@ D L@@��
F�X�88�L��\�#�
�F�X�\8�L�#�w�E�KBs� P�H��V1��Ϡw0�KB�s�@P�H��H�.��.����A�CT����B< [�cL����0��(L��P�!I��H}�FLz�gL�����F��I�bI�XHh�(L�I�5��
F�L5pW���L5pW�o����)I�6_HY�$�X.��.����L�@S�I�|�F(A�>-(��b@1�@��Є������������1���P�,L0�+��"L�/�!�@ @P��L@%�$I��>�@��w�e@�K� B sP�H�VB��w@�KB s �NH>=((L!��H��N�<.��.����L�@�7�������<�
�II�x���.��.����L��L5pW&��L5pWEo���@<S�@��?� < S�T�D-�'I�_@44�}���g� ��
�\3���7m�@4��<-X��P��"<X€i�I<X€���`��_��� @4�� �wBT 0�e�w�F�)�w�E�KBsP�H��V1��Ϡw0�KB�sP �H� �V<-S���N"�< S�TNzD"I�^�Ht�r@�4�N�<-X��P��"P��L5pW���L5pW�o���I���.���I�#���3� L���7��7�
��(L�F��� F��h��L!���<X�H�!��7HI��4�
�7HI��6�� ��������(�II��8���(�II��.��.����L�@.����
�<I�w��
�<I�{Р7�E�� �E��
�<I�{Ƅ� :o��ݞ�;������HI���;���ݞ:o���I�mׁ�� I��L5pW��L5pW9o���un�v�� I�ui�Hp.���(< m�"L��#L�< ;\� @��<r�O��� < ;\� �@��@d ���
< m�$L�I�b��K��< XrF�X�@�I��X�"L�7I���3< k��!L�/< XV� �*< m��'< XrBh �"< j�?L�.�~��< m�I�b��> �ڄ&I�ϣ�> ��D�I�Ϝ� D�I��y�> ��D@I�ϐ�L5pW���L5pW�o���:o��ݞ�:o������� I�t�N�� I�t�N�< mN�.����$L�I�b�N�.�fN�< X{� N�.��N�.k:.k;��N�I�}��N�P�I���N�< XV� N�<Xh.���!I�ж�I�m��?��GI��L�������<Rр�!��?���I��X�?�GI��8�<=Xz�?��G�#.���.��
.��I��;�L5pW��L5pWCo����?�GI��#���\���w.���< m�"L��#L�< ;\� �8��<��O�� � < ;\� ������@c� @d�����I�a���P�!I�a�� >}k7�8��F��0��&�@����!D t@�fI�](< k���&�,�I����/�I�aȘ��).���&>}k7��N�D tA��!�h��I�]��HD�t�b����I��ٮ8� �!��aD tA��I�\��L5pW���L5pW�o����&I�Γ� :o��ݞ�;�����I����;���ݞ:o����>m����Lpx��� �!Lp��bLq��Hk�Lp|�CLp�yD0Lq��Hn.���N�O�I�l"���3�<I�Q?�@�<X؀�!�Hq��@����I�aM��<X؀�!�FH]< k�D�5L�<-X׀)�
�"<Y���!F D9��@!  F �
�B�� �L5pW8��L5pWao����
�I�k�<l�� < k�DL�/<-X׀)�
�"�(�$<l�I���2� �tI�b�I�����I��{D�I�a�FX�<X؄�!� <l�I�;<l��<-Y ��"�:o��ݞ;������I����;���ݞ;�����I��U��;���ݞ;�����I����;���ݞ:o���>}�8I�[cT`�>�v�I�PƁ�I�P����(I�P��< Xr�L5pW ���L5pW �o���Bh �P�I��'�P��@<?j<=W�ADO�#���F��qI�͂I��€��F I��@<Mj���"D uI�]Ò�P:o��ݞ;�����I��M��;���ݞ;�����I���I�r��� <=)��AD=�#�;���ݞ;�����D =L@I����I��@�;���ݞ:o�������T��Lp@ ��"I��ۤ6I�xz��V�HLq@G�FI��I����K�I��L5pW"L��L5pW"mo���xj F< l�DDBsm�;�I����7�� �FI�t����4� �D�/�D�Ȯ�����# ��# �����H���A>%$dF�X�̨A�� I�x����Lp@ �I�x*F�@>'@8 ���&�HI���:o��ݞ�:o��������PP/�p��@��D ������ԯUL��C@� �D@��
��I�x� ���L5pW#���L5pW#�o�������ԯU��@I�xAP����D ����ĀL���\� �D@L�AH��JL���L�@��;�
�B� �'$�t�HrP����p@ ����.%k:.k;�Q�H�T� �
I���!L�D�� �p@ ��P�� I��H~������]�!L� �L$�� �<I����H�.��T�DpH����q�r�L5pW%;��L5pW%_o����3���5Nr�@��i�IDP��L��@! ����L"��@1��Ö�L2���I��!��N�P��'I���H���1��3������w�x@� @���D� @�@���I�D@��@��@a��������N%@� �@�@N@� � DDI��ф��P���� �D"�L��FI���=��*�I�f��I������8D�&�.�L5pW&���L5pW&�o���D@9L@�DP(�%DL�"D@L@ �����D \L��u�I������D I���� �4�(I��.���������Dp��|:o��ݞ�:o�� P�Pt���@ ����o�I�z�D �L�0\� � D L��AL����/L�[�LL`���Y�8��
�"�<-Y)�"���D`�8�Nb���P/����� I����L5pW(6��L5pW(]o���H�<}m�F@s��)��'�LI�r�N{�@�.�P�*�@�ǮQ�!�@�RD ��'��������@�մ@�ִ@�״�I�����'I�v��ZI�����V�� �@I��5�OI�n��F�%��D`��z�{�!��p<S��!���D 2I����/T�+�!L�'��&I��h�!<m�D@��>j����|E��@! @����L5pW)���L5pW)�o����KL ��!>j��&� I���������p:o��ݞ:o������D ��o�L4\� �D L�X�J��La��L@Q�;��æB�@@B @1�P/�l�ٙ%�Ѷ�V �"\I��(<=f�<f���<I-D 5<?I.L`:�1<I-<=I.L�I�X<I-<-I.T���</f�<f��;����I��D�4��%>��<-)Y�� �"I�RK���L5pW+8��L5pW+Yo�����&I�����LD _L����� I����x:o��ݞ;������II����;���ݞ;������II����;���ݞ:o���P���E�Q��P�d�E���@���u�#�B@�����$��@������/Ģ�\�����Q��A�$W�O�� ��I�yc�� I�uA���T�\��F���H�DPL�� \��DL���\����L�A�H��L5pW,���L5pW,�o���D0L���ZL��|��+L�n\���AL��r�ND (L�D0CL��iHbNrk�I��Hd�Hc�u�"N�a�iL� �Z�I�����(�@I�^5HC�dP і��B� DP3� ��L��L��S� D#DI��mD`#H8�I�eh��N2DHyNr(�[�!�L��(�I��S�P���@I���H �I���\Nr�[T�L5pW.,��L5pW.do����&��AL�@"�(�I��73���?���=��P#���F�<=W�>-%�8�?�>�FD#�#H�u��AI��(��N�D�)P � �H@ P�L�P�d�'I��2C 3 # @��L�9�����}�cc�I��ڀ�N��(I���H��u\�N��P ���C� DP��ELD0)L���<-S��"�� I��]��N�D�L5pW/���L5pW/�o�����#  @! P�LC 3
��P_�d�������@�I�
�� ��I��Rռ�4@ ���F>�XI��������D3L���!�@I��F����!�I��>m�XI��9�� I�s�@3P �T�P�l�I����F\��XR��@� B���*L��D �L@� >���'<��@< W�D�Ԁb���L5pW17��L5pW1no�����I��r����I��QH��S��(I��w������D��t:o��ݞ;�����I��/��;���ݞ:o����D ���I��L=�A�D�_Lw��D � L@��3� L#�ZL@|�#D ��L�A�D��L@q�YD ��L^D �YL@hHb�I��u�3I���Hc�2I��H^�2I���HY�I����T��s #  @!@@s�����@`���L5pW2���L5pW2�o����I�ՙDLp@<�2��\���5�!�I�e�<Y���!�I��> ��I�s(���$FI����I�sS��3I��_��3I����C>%���_>%���I����
<-X�"��I�?����:o��ݞ:o����.��F �X!�> KX -T�F �X! | .�F�X���D%p#F�X�<XZF�X��<X�F�X�<X�F�X@<R�L5pW4D��L5pW4io���F�X�<RF�X<R>mKXI��qF �X!�</X�F �X! �</X�F �X!�</YhF �X! �</X-F�X�pF�X�\�t> kII�ƞ�@< [ ���b��F�X��I��8>}K>kIF�X��<S�a�����F�X��D'���%�`����F �X!��F�X���%F�X�܄
I��[F�X�<XfF�X � F�X ��3�L5pW5���L5pW5�o���I��,F �X!�</ZIF �X!`</ZJF �X!�</X�F �X!D</X�F �X!</X�P� I���F�X�I�Ox�I��F�X�,<X/F�X��<S�F�X��<XXF�X��<X�F�X�<S8F�X �<S9F�X �2I���F�X��<Z6I��XDF�X�xI���D@JJ<J��FP�XR��<_XgFP�XR��<_YM��>UjzF@��L5pW7D��L5pW7{o���XBd<OS'F@�XB,�>D@>EK F0�X1�(<?S&> %�� �HI��<F@�XB �<O)�F@�XB �<OY > '��?�GI��"�G> (8� I���F�X��I�֕F0�X1�h<?XYF0�X1��<?W�F0�X1��<?Y`F0�X1��<?W�F0�X1��<?YbF0�X1��<?YcF0�X1�x<?XF0�X1��<?YN�F�X��I��8F�X��<ZkF�X��<ZlF��L5pW8���L5pW8�o���X��<ZWF�X�=F�X��<ZnF�X��<Z;F�X��<W�I��?F �X!�</Z,F �X!�</ZrF �X!
�</ZiF�X�pF �X!�3</X_F �X!�</X^.$aF �X!�</X]F�X�<R� D!<�D<�FB�XBFPRXR�X<OW�<_W�F@�XB�<ORD@<OI-�!<OI.��>E�}�e>5��F0�X1� �@<?�L5pW:W��L5pW:xo���R�>�$��h>5�Y>�kO>�kP��>�k�>E��>�$��j>5�|��>E���a����>5��>E�X>e�i>e�hF�X�|�J> %\I��I���F �X!�</YT>ej�F �X!d</X�F �X!
�</X�F �X! $</X�F �X!�</XiF �X!�</YaF�X�4<R�F�X� <R�F�X�<R�F�X��<R�> M�I�TH��>=J�������#P�D 8I���>e�L5pW;���L5pW;�o�����F �X! �</XcF �X!</X�F �X! </X� I��ZF0�X1��<?Z-F0�X1��<?YUF0�X1��>N�<?S�F �X!�AF �X!\��F �X!
���F �X!0��F�X��<S�>�$j> ��I���@�b����F�X��D@I�ĴF@�XB�<OX�F@�XBT<OX�F@�XB 8<OZ7F0�X1�|<?S�F@�XB�<OX�F@�XBT<OS;F@�XB�L5pW=N��L5pW=qo��� 0<O)���>Ej�F@�XB�<O)�F@�XB�<OY^��>E$m>}KXF0�X1�h��3� <o[*>ejR>]��>�$��}2��F0�X1�������|>��3��&> ��D $I��%�&�I> %�I��F@�XB D<OXyF@�XB �<OYYF@�XB |<OXDD?��<:�eF@�XB�<OX�F@�XB|<OYVF@�XB<OZ*F@�XB�<OZ+F@�XB �<OX:F0�X1��3�F@�L5pW>���L5pW>�o����XB�<OX�F@�XB <OX�F@�XB x<OYF@�XBh<OY;F@�XBD<OXjD0�<:�b� F�X�I��I��.I��<D0��<?XNF0�X1��<?X�F0�X1��<?XnF0�X1�P<?XlDF�X�xI��F@�XB�<OI��>�$d>E${F@�XB`<OZ!F0�X1��<?R�Po�>�$nD^�&�BI����0��\����1D�L� � T 0�D�>%�L5pW@B��L5pW@go���$y>$z>H$@�P�Fp�Xs�<ZQ���mTB?Fp�Xs��<Z/P�@��aF�XcD> OD<oXW>5I�F�Xc8F�X�p<oX�FP�XR��F�X��<_S�FP�XR�|F�X�lP F�Xc F�X��<oY-<S�F�X��>5�8F�Xc(F�X��<oYi�AF B!D <=X�<-X�F@@1�@!�L5pWA���L5pWA�o���FP�XR��<_R�FP�XR��<_X�DP��<_XKFP�XR��<_S/<?X�</X�F�X��FP�XR��<_X�<Y7FP�XR��<_YS< W�� �:o��ݞ�:o��F��X�
,<�YF��X��<�YF��X��> ��<�YF��X� ��<�Y  |�!�ʄ���>5j�>jpP@`P@0�D��L @ .���I�O�<
�V:o��ݞ;��L5pWC6��L5pWCXo����|:�<:?�<:��<;���dd�d":�<Tp\��N�P��d�d >%0��>%,P��> $�K�:�dd�d";���:��:?�:�;��@d;��|:�<:?�<:��<;���dd�d":�<Tp\��N�P��d�d >%0��>%,P��> $�K�:�dd�d";���:���L5pWD���L5pWD�o���:?�:�;��@d;��|:�<:?�<:��<;���dd�d":�<Tp\��N�P��d�d >%0��>%,P��> $�K�:�dd�d";���:��:?�:�;��@d;��|:�<:?�<:��<;���dd�d":�<Tp\��N�P��d�d >%0��>%,P��> $�K�:�d�L5pWF3��L5pWFVo���d�d";���:��:?�:�;��@d;��|:�<:?�<:��<;���dd�d":�<Tp\��N�P��d�d >%0��>%,P��> $�K�:�dd�d";���:��:?�:�;��@d;��|:�<:?�<:��<;���dd�d":�<Tp\��N�P��d�d >%0��>%,P���L5pWG���L5pWG�o���> $�K�:�dd�d";���:��:?�:�;��@d;��|:�<:?�<:��<;���dd�d":�<Tp\��N�P��d�d >%0��>%,P��> $�K�:�dd�d";���:��:?�:�;��@d:o��>}%,�>l�x�B�FF�X ��"��F�CF�X ��"��F�DF�X ��"��L5pWIJ��L5pWIko����F�EF�X �"��F�FF�X �"��F�GF�X 4�"��FF�X H�"��F F�X \�"��F
F�X p�"��F F�X ��"��F F�X ��"��F F�X ��"��FF�X ��"��FF�X ��"��FF�X ��"��FF�X ��"��F�AF�X �"��F� F�L5pWJ���L5pWJ�o����X $�"�pP����'�f��F�X 8�#Lt�:o��ݞ:o����>}%,�>l�x�@�fF�X \� �#��f���!F�X t�#��f���"F�X ��#��f���#F�X ��#��f���$F�X ��#��f���%F�X ��#��f���&F�X ��#��f���'F�X�#��f �(F�X�#��f �)F�X4�#��f
�L5pWLI��L5pWLlo����*F�XL�#��f �+F�Xd�#��f �,F�X|�#��f �-F�X��#��f �.F�X��#��f �/F�X��#��f DF�X��#�:o��ݞF lXd<-IM� @!|B� @�� <-INF7@!p� @! F8��X1��@�@� ݞ�>(����,����D���
0�\�CD��L5pWM���L5pWM�o���@ @�ݞ�<-IK>)������ �@�������d�8L��ݞ�:o����>l�x�&��F�X�>�(��!π�FPt��Ʌ�8��q��������i�(F�X$�<������L��π��<� :o��ݞ:o������<oIM< I7� <IO< I9� I���<IO�&��#� �BL@��gL���B�.$�L@�@� N
<oIN��C��D</�L5pWOU��L5pWOxo���IN.%L�<IN�cL�� >%L< IK<IM�� B� � �<IN�<I?��!�?>$�< IL� �fL�
F lX�I����:o��ݞ;��������
<)F�XT�!��D0B0 $>-(�ڀC�Q�P��a��̮���;���ݞ;��������
<)F�X|�!��DB$> (�H�0� ��� ��;���ݞ;�������L5pWP���L5pWQo�����
<)F�X|�!��DB$> (�H�0� ��� ��;���ݞ;��������
<)F�XT�!��D@�cB0 $B$>M(��٪D�ۄ!�ܮF�E�D����;���ݞ�;��������
<)F�X|�!��D B$>=(옃��I�Q��;���ݞ;�����< IM�
<)F�X��!�� <IK�L���`BB, ��<?IM�L5pWRj��L5pWR�o�����;���ݞ;�����< IM�
<)F�X��!�� <IK�`�L���XB��<?IM�;���ݞ:o����< I:� �< IQ� < IM�!L��< I;� �:o��ݞ;�����< IM�
<)F�X��!��I�����;���ݞ�H�@@�����L@�X���L@B1� �X���L@�b�ڴ#�"ݞ����@@�����L"@�H�X���L"@B1� �L5pWS���L5pWTo����I�X���L"@�b�ڶ#ݞ:o���`<?IP�� �€A�#��:o��ݞ��D</INF �X!h</I5F �X!x</I4F �X! l</I6F �X!d</I7F �X!�</I8F �X!�</I9F �X! �</I:F �X!�</I;F �X! �</I<F �X! �</I=F �X! </I>F �X!p</I?F �X! `</I@F �X! �</IAF �X!</IDF �X! �</IE�L5pWUg��L5pWU�o���F �X!,</IFF �X!�</IBF �X!t</ICF �X!�</IGF �X!�</IHF �X!�</IIF �X!0�</IJ<IMd�ݞ�Fd��ݞ�@�� DL ��
dd��<=IK�8�
ݞ�;�����D 9L[\��:�!�HLI\��2���L:\��+���L@a�/��L3��L@Z�1��L8�"�2��L@Q�4�ILD\��C���L�L5pWV���L5pWV�o���8\��=���L,��L@>�*��L@:�,��L0��L@3�.d�5d�2d�/d �,d �)d$�&d(�#d,� d@�dD�dH�dL�d�dd�dh� dl�<-)F�X��"�;���ݞ�:o��>})D)�8��9��&�I��p��D-��L�:o��ݞ:o����>�(�P�Q�D)��F��X����'�L5pWXX��L5pWX�o�����$�P�*P�*�P�*���������� �!L����V�'@p���&�*��D-�8�Q�L`Є�:o��ݞ���HD >LB\�?���L3\�<��\L@���L,��L@�*��L\�E���L@ � ��L��L�B�$dd�d ��@�d$��d(��d,��d��d��d��d �L5pWY���L5pWY�o�����<=IK�@81��a�ݞ�:o��< IM�!L� <)F�X�!��I���<-I<>$�d��".=$��&^1��@@ @�:o��ݞddTݞ�;�����D �@B�$>=(�0�
<-)F�X(�"��� I�5Ғ��;���ݞ:o��ITDL�INDL�< IN��� < IK�A>%%L�� X�� �< I8� �$<INI��h��L5pW[N��L5pW[�o���<IL:o��ݞݞ�FH l�D�"�a����ݞ�;�����F�X��<IQDո<)�I��ߒ�;���ݞ< Iݞ�:o��<)��F�X@�!��f� D �I���:o��ݞ:o����F l<IN݄�D��.5$�L�\� �7��L�\��D0L��\�� �L���L@pHÜ�L���#N�לL@eH��L5pW\���L5pW]
o�����LQ\�� ��L�m�L@WH��Lt\�N���f�L \����L\� � ��L�z�L@;H˞�L�\�N���L�/H�DL,\��DL�L5D L@H�D0L�#�L�D L� F lFX���I�����H(F lF..X���I���H> $T�> $д� ��HF l�L5pW^_��L5pW^�o���>$�H�F l>$�H�F l� �<-I<��"�

Quoted 1 line

%��> %��< ID� ��< I8� H�Fx l<=IH��!P/��#���3�H�Fx lXs�l<=IH��"H�Fx l<=IH��$@/��#����H�F l� <=II��A�F l� <=II��B� F l� �<=II�D�#H���Fx l<-IC�P�L5pW_���L5pW`o�����"���#�H�> %H��rF lF l<=I@���A�F lF l<=I@���F� F l� �<=I@��B�#�^F l� �<-IA��"H��)F l� <-IB��"H��4<I6P��!���F l0�9F l>$��!��!H��Fx lF lXs�l�<=IJ�P/��#�����F lI��C���L5pWag��L5pWa�o���F l>)L8�

F l��@�؜8@�

Quoted 1 line

$�< IDL�� >$�F l� F lXd� D/���@���@c���@� ��T!�$�L@� � :o��ݞ���J@�A���ݞ���Z����ݞ�dpatch/sys_patch_bin_t.cdebug uart enabled in patch...

patch/btsys_patch_bin_t.c0�L5pWb���L5pWb�o�����r��u��| ��{��n��i��`��g8��J?��M6��D1��C$��V#��Q*��X-��_p�w�~� y� l��k��b�e�H٫:Oެ=Fץ4AТ3Tŷ&S°!Z˹(]̾/�q��v�� ��x
��m��j��c��d��I;��N<��G5��@2��U'��R ��[)��\.��s�t�}�z�o��h��a��f��9Kگ>Lݦ7Eԡ0BӴ%WƳ"P��+�L5pWdP��L5pWd{o���YȽ,^�d2!

\�p
23456789:;10/.-,<./01-,+*)('& %NMLKJIHG/01.F-2,3(AK7A-FN2<NMLKJIHG/01.F-2,3�@ ,�1�6 \]H`Cc�glk�u�y�  �L5pWe���L5pWe�o���  
 
 $%&%''&&%&
$%&%''&&0 ; �L5pWgO��L5pWgwo���[FDB] R.S R28 0x%x
[FDB] R.S R29 0x%x
[FDB] R.S R30 0x%x
[FDB] R.S R15 0x%x
[FDB] R.S R3 0x%x
[FDB] R.S R4 0x%x
[FDB] R.S R5 0x%x
[FDB] R.S R6 0x%x
[FDB] R.S R7 0x%x
[FDB] R.S R8 0x%x
[FDB] R.S R9 0x%x
[FDB] R.S R10 0x%x
[FDB] R.�L5pWh���L5pWh�o���S R0 0x%x
[FDB] R.S R1 0x%x
[FDB] R.S R2 0x%x
[FDB] R.S R31 0x%x
[FDB] R.S PSW 0x%x
[FDB] R.S PC 0x%x
[FDB] D.S D:0x%x %%LE %%LONG 0x%x
[FDB] PC(0x%x) = 0x%x
[FDB] PSW(0x%x) = 0x%x
[FDB] R28(0x%x) = 0x%x
[FDB] R29(0x%x) = 0x%x
[FDB] �L5pWjP��L5pWjwo���R30(0x%x) = 0x%x
[FDB] R15(0x%x) = 0x%x
[FDB] R3(0x%x) = 0x%x
[FDB] R4(0x%x) = 0x%x
[FDB] R5(0x%x) = 0x%x
[FDB] R6(0x%x) = 0x%x
[FDB] R7(0x%x) = 0x%x
[FDB] R8(0x%x) = 0x%x
[FDB] R9(0x%x) = 0x%x
[FDB] R10(0x%x) = 0x%x
[FDB] R0(0x%x) =�L5pWk���L5pWk�o��� 0x%x
[FDB] R1(0x%x) = 0x%x
[FDB] R2(0x%x) = 0x%x
[FDB] Num Type Enb Address range
[FDB] %d %d %d 0x%x 0x%x
[FDB] Too many hardware break point
[FDB] out of hardware break point range
[FDB] target i�L5pWmL��L5pWmyo���s runing
[FDB] target is not in debug state
[FDB] no such srname: 0x%x
[FDB] target is already in debug state
[FDB] No BP number %d
[DI] send_wmt_cmd
�O��p�n
д
�n
&N� �� �L5pWn��HH�L5pWoo�EAP�
-����L5pWo���L5pWpo��L5pWp�� �L5pWp�o��L5pY|��L5pY� �L5pY � �L5pY ��L5pY!l �>����{��L5pY!��L5pY"� !F�L5pY"�  �L5pY#<
 "vF�L5pY#� �L5pY$ ���L5pY$ # �L5pY$�# �L5pY$� ���L5pY%�� MTK MT7622 #1�L5pY&% �L5pY&�% `�L5pY&�8 �L5pY'G8 �L5pY'_9

�L5pY'�9 3���L5pY( �L5pY(� �L5pY(� }�L5pY)� �L5pY)� �L5pY*7 ��L5pY*J �L5pY*�  ��L5pY*� �L5pY+�  ����L5pY+�FF�L5pY,`D��������������?���8���������L5pY,tR ��L5pY-�R �L5pY-�E �L5pY.�E �L5pY.�X �L5pY/HX ��L5pY/]�L5pY/� �L5pY0$ ������=�L5pY0�

�L5pY0� 

�L5pY1z �L5pY1��L5pY24�L5pY2I

�L5pY2� �L5pY3F �L5pY3�F �L5pY3� � �L5pY4i �L5pY4�/ �L5pY59/ �L5pYN�

author maintainer
#15 lore raw

PATCH v2 5/7 Bluetooth: Extend btuart driver for join more vendor devices

In reply to [email protected]

From: Sean Wang <[email protected]>

Adding an independent btuart.h header allows these essential definitions can be reused in vendor driver. Also, struct btuart_vnd is extended with additional callbacks such as .init initializing vendor data, .shtudown, .recv and .send supporting SoC specific framing for that btuart can simply adapt to various Bluetooth uart-based devices.

---
 drivers/bluetooth/btuart.c | 73 ++++++++++++++++++++++++----------------------
 drivers/bluetooth/btuart.h | 30 +++++++++++++++++++
 2 files changed, 68 insertions(+), 35 deletions(-)
 create mode 100644 drivers/bluetooth/btuart.h
drivers/bluetooth/btuart.c +38 -35
index 03e980f..ab7f836 100644
@@ -33,35 +33,11 @@
 #include <net/bluetooth/hci_core.h>
 
 #include "h4_recv.h"
+#include "btuart.h"
 #include "btbcm.h"
 
 #define VERSION "1.0"
 
-struct btuart_vnd {
-	const struct h4_recv_pkt *recv_pkts;
-	int recv_pkts_cnt;
-	unsigned int manufacturer;
-	int (*open)(struct hci_dev *hdev);
-	int (*close)(struct hci_dev *hdev);
-	int (*setup)(struct hci_dev *hdev);
-};
-
-struct btuart_dev {
-	struct hci_dev *hdev;
-	struct serdev_device *serdev;
-
-	struct work_struct tx_work;
-	unsigned long tx_state;
-	struct sk_buff_head txq;
-
-	struct sk_buff *rx_skb;
-
-	const struct btuart_vnd *vnd;
-};
-
-#define BTUART_TX_STATE_ACTIVE	1
-#define BTUART_TX_STATE_WAKEUP	2
-
 static void btuart_tx_work(struct work_struct *work)
 {
 	struct btuart_dev *bdev = container_of(work, struct btuart_dev,
@@ -187,13 +163,27 @@ static int btuart_setup(struct hci_dev *hdev)
 	return 0;
 }
 
+static int btuart_shutdown(struct hci_dev *hdev)
+{
+	struct btuart_dev *bdev = hci_get_drvdata(hdev);
+
+	if (bdev->vnd->shutdown)
+		return bdev->vnd->shutdown(hdev);
+
+	return 0;
+}
+
 static int btuart_send_frame(struct hci_dev *hdev, struct sk_buff *skb)
 {
 	struct btuart_dev *bdev = hci_get_drvdata(hdev);
 
-	/* Prepend skb with frame type */
-	memcpy(skb_push(skb, 1), &hci_skb_pkt_type(skb), 1);
-	skb_queue_tail(&bdev->txq, skb);
+	if (bdev->vnd->send) {
+		bdev->vnd->send(hdev, skb);
+	} else {
+		/* Prepend skb with frame type */
+		memcpy(skb_push(skb, 1), &hci_skb_pkt_type(skb), 1);
+		skb_queue_tail(&bdev->txq, skb);
+	}
 
 	btuart_tx_wakeup(bdev);
 	return 0;
@@ -204,14 +194,23 @@ static int btuart_receive_buf(struct serdev_device *serdev, const u8 *data,
 {
 	struct btuart_dev *bdev = serdev_device_get_drvdata(serdev);
 	const struct btuart_vnd *vnd = bdev->vnd;
+	int err;
 
-	bdev->rx_skb = h4_recv_buf(bdev->hdev, bdev->rx_skb, data, count,
-				   vnd->recv_pkts, vnd->recv_pkts_cnt);
-	if (IS_ERR(bdev->rx_skb)) {
-		int err = PTR_ERR(bdev->rx_skb);
-		bt_dev_err(bdev->hdev, "Frame reassembly failed (%d)", err);
-		bdev->rx_skb = NULL;
-		return err;
+	if (bdev->vnd->recv) {
+		err = bdev->vnd->recv(bdev->hdev, data, count);
+		if (err < 0)
+			return err;
+	} else {
+		bdev->rx_skb = h4_recv_buf(bdev->hdev, bdev->rx_skb,
+					   data, count, vnd->recv_pkts,
+					   vnd->recv_pkts_cnt);
+		if (IS_ERR(bdev->rx_skb)) {
+			err = PTR_ERR(bdev->rx_skb);
+			bt_dev_err(bdev->hdev,
+				   "Frame reassembly failed (%d)", err);
+			bdev->rx_skb = NULL;
+			return err;
+		}
 	}
 
 	bdev->hdev->stat.byte_rx += count;
@@ -429,6 +428,9 @@ static int btuart_probe(struct serdev_device *serdev)
 	if (!bdev->vnd)
 		bdev->vnd = &default_vnd;
 
+	if (bdev->vnd->init)
+		bdev->data = bdev->vnd->init(&serdev->dev);
+
 	bdev->serdev = serdev;
 	serdev_device_set_drvdata(serdev, bdev);
 
@@ -460,6 +462,7 @@ static int btuart_probe(struct serdev_device *serdev)
 	hdev->close = btuart_close;
 	hdev->flush = btuart_flush;
 	hdev->setup = btuart_setup;
+	hdev->shutdown = btuart_shutdown;
 	hdev->send  = btuart_send_frame;
 	SET_HCIDEV_DEV(hdev, &serdev->dev);
 
drivers/bluetooth/btuart.h new file +30 -0
new file mode 100644
index 0000000..6c1fe31
@@ -0,0 +1,30 @@
+struct btuart_vnd {
+	const struct h4_recv_pkt *recv_pkts;
+	int recv_pkts_cnt;
+	unsigned int manufacturer;
+	void *(*init)(struct device *dev);
+
+	int (*open)(struct hci_dev *hdev);
+	int (*close)(struct hci_dev *hdev);
+	int (*setup)(struct hci_dev *hdev);
+	int (*shutdown)(struct hci_dev *hdev);
+	int (*send)(struct hci_dev *hdev, struct sk_buff *skb);
+	int (*recv)(struct hci_dev *hdev, const u8 *data, size_t count);
+};
+
+struct btuart_dev {
+	struct hci_dev *hdev;
+	struct serdev_device *serdev;
+
+	struct work_struct tx_work;
+	unsigned long tx_state;
+	struct sk_buff_head txq;
+
+	struct sk_buff *rx_skb;
+
+	const struct btuart_vnd *vnd;
+	void *data;
+};
+
+#define BTUART_TX_STATE_ACTIVE	1
+#define BTUART_TX_STATE_WAKEUP	2
Signature · 1 line
2.7.4
author maintainer
#16 lore raw

PATCH v2 6/7 Bluetooth: mediatek: Add protocol support for MediaTek serial devices

In reply to [email protected]

From: Sean Wang <[email protected]>

This adds a driver to run on the top of btuart driver for the MediaTek serial protocol based on running H:4, which can enable the built-in Bluetooth device inside MT7622 SoC.

---
 drivers/bluetooth/Kconfig     |  12 ++
 drivers/bluetooth/Makefile    |   2 +
 drivers/bluetooth/btmtkuart.c | 383 ++++++++++++++++++++++++++++++++++++++++++
 drivers/bluetooth/btmtkuart.h | 119 +++++++++++++
 drivers/bluetooth/btuart.c    |  18 ++
 5 files changed, 534 insertions(+)
 create mode 100644 drivers/bluetooth/btmtkuart.c
 create mode 100644 drivers/bluetooth/btmtkuart.h
drivers/bluetooth/Kconfig +12 -0
index 6d69ac2..13aff1ed 100644
@@ -85,6 +85,18 @@ config BT_HCIBTUART
 	  Say Y here to compile support for Bluetooth UART devices into the
 	  kernel or say M to compile it as module (btuart).
 
+config BT_HCIBTUART_MTK
+	tristate "MediaTek HCI UART driver"
+	depends on BT_HCIBTUART
+	default y
+	help
+	  MediaTek Bluetooth HCI UART driver.
+	  This driver is required if you want to use MediaTek Bluetooth
+	  with serial interface.
+
+	  Say Y here to compile support for MediaTek Bluetooth UART devices
+	  into the kernel or say M to compile it as module (btmtkuart).
+
 config BT_HCIUART
 	tristate "HCI UART driver"
 	depends on SERIAL_DEV_BUS || !SERIAL_DEV_BUS
drivers/bluetooth/Makefile +2 -0
index 60a19cb..c9a8926 100644
@@ -26,6 +26,8 @@ obj-$(CONFIG_BT_BCM)		+= btbcm.o
 obj-$(CONFIG_BT_RTL)		+= btrtl.o
 obj-$(CONFIG_BT_QCA)		+= btqca.o
 
+obj-$(CONFIG_BT_HCIBTUART_MTK)	+= btmtkuart.o
+
 obj-$(CONFIG_BT_HCIUART_NOKIA)	+= hci_nokia.o
 
 obj-$(CONFIG_BT_HCIRSI)		+= btrsi.o
drivers/bluetooth/btmtkuart.c new file +383 -0

383 lines not on this page · raw message

drivers/bluetooth/btmtkuart.h new file +119 -0

119 lines not on this page · raw message

drivers/bluetooth/btuart.c +18 -0
index ab7f836..169bf1a 100644
@@ -35,6 +35,7 @@
 #include "h4_recv.h"
 #include "btuart.h"
 #include "btbcm.h"
+#include "btmtkuart.h"
 
 #define VERSION "1.0"
 
@@ -396,6 +397,12 @@ static const struct h4_recv_pkt bcm_recv_pkts[] = {
 	{ BCM_RECV_NULL,    .recv = hci_recv_diag  },
 };
 
+static const struct h4_recv_pkt mtk_recv_pkts[] = {
+	{ H4_RECV_ACL,      .recv = hci_recv_frame },
+	{ H4_RECV_SCO,      .recv = hci_recv_frame },
+	{ H4_RECV_EVENT,    .recv = mtk_btuart_hci_frame },
+};
+
 static const struct btuart_vnd bcm_vnd = {
 	.recv_pkts	= bcm_recv_pkts,
 	.recv_pkts_cnt	= ARRAY_SIZE(bcm_recv_pkts),
@@ -403,6 +410,16 @@ static const struct btuart_vnd bcm_vnd = {
 	.setup		= bcm_setup,
 };
 
+static const struct btuart_vnd mtk_vnd = {
+	.recv_pkts	= mtk_recv_pkts,
+	.recv_pkts_cnt	= ARRAY_SIZE(mtk_recv_pkts),
+	.init		= mtk_btuart_init,
+	.setup		= mtk_btuart_setup,
+	.shutdown	= mtk_btuart_shutdown,
+	.send		= mtk_btuart_send,
+	.recv		= mtk_btuart_recv,
+};
+
 static const struct h4_recv_pkt default_recv_pkts[] = {
 	{ H4_RECV_ACL,      .recv = hci_recv_frame },
 	{ H4_RECV_SCO,      .recv = hci_recv_frame },
@@ -487,6 +504,7 @@ static void btuart_remove(struct serdev_device *serdev)
 #ifdef CONFIG_OF
 static const struct of_device_id btuart_of_match_table[] = {
 	{ .compatible = "brcm,bcm43438-bt", .data = &bcm_vnd },
+	{ .compatible = "mediatek,mt7622-bluetooth", .data = &mtk_vnd },
 	{ }
 };
 MODULE_DEVICE_TABLE(of, btuart_of_match_table);
Signature · 1 line
2.7.4
author maintainer
#17 lore raw

PATCH v2 7/7 MAINTAINERS: add an entry for MediaTek Bluetooth driver

In reply to [email protected]

From: Sean Wang <[email protected]>

Add an entry for the MediaTek Bluetooth driver.

---
 MAINTAINERS | 8 ++++++++
 1 file changed, 8 insertions(+)
MAINTAINERS +8 -0
index 0a1410d..3e9fa7c2 100644
@@ -8874,6 +8874,14 @@ F:	include/uapi/linux/meye.h
 F:	include/uapi/linux/ivtv*
 F:	include/uapi/linux/uvcvideo.h
 
+MEDIATEK BLUETOOTH DRIVER
+M:	Sean Wang <[email protected]>
+L:	linux-bluetooth at vger.kernel.org
+L:	linux-mediatek at lists.infradead.org (moderated for non-subscribers)
+S:	Maintained
+F:	Documentation/devicetree/bindings/net/mediatek-bluetooth.txt
+F:	drivers/bluetooth/btmtkuart.c
+
 MEDIATEK CIR DRIVER
 M:	Sean Wang <[email protected]>
 S:	Maintained
Signature · 1 line
2.7.4