Received: by 2002:a25:8b91:0:0:0:0:0 with SMTP id j17csp815104ybl; Wed, 29 Jan 2020 10:08:09 -0800 (PST) X-Google-Smtp-Source: APXvYqyDr91TLJwg3ByTtVeD5NUOfbL3/Yjw1cWv/xPJ43kr/fnJ3ObEEXZw2PwLv4qF1gbsrob0 X-Received: by 2002:a9d:6f82:: with SMTP id h2mr391958otq.69.1580321289304; Wed, 29 Jan 2020 10:08:09 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1580321289; cv=none; d=google.com; s=arc-20160816; b=uvSWLOaTF8wIebsVWaWNMq9V6t4QZsAL0OO23m7aykdqX91BAWmWfUKQVUVdlMoKLP /tqMzZ/CLsloWWJzoO2xX39s8bgn1A9VLrbD8RQYWAhpCqMmGS6F6CEp3KwgEWKnHIuw lnlODejubNzDmyKt4okjvFPw55hR1DDL47QDftOxqvyss4xSizIMgsZAEQsh131eBpPw ZbFlA7jfS0L8CvhqTR0wIidkrKUbl3svX1chIqmrpJB9Hqm/Q6RqvJ+rbT54yuNs6CCj 6kCMcXgWK4VrKntfHVRbFDq/NqDutIHTXywgRi0fyZeJj2rIMprkt8nkaZWHf5ADHHTW QnKg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:to:references:message-id :content-transfer-encoding:cc:date:in-reply-to:from:subject :mime-version; bh=c96baMj+1c399+l2TLSnhMVTFIRuwgtVlEz6WqnOnDU=; b=QSA89Wc7x4cWnMqGIa6QwXBFU//2uPWHc/haGZ8yEwc+X1uuJ3s+uE3ZmaIbVl1JuX oxVRru9JTN1PTs74pwaxLynwzTahR2FMXzsfQtWsHrAGziC55ztd4sFi8useDsG/A658 Qq0c8fNSibB5+ZkHJjcRv8TmkAKGAx7loz0nObmOKzr4DZtqZC4/dUR1Qme+azgDT19W /HxkZ3Fw2WdEjLGaUiFuoXIDjrBy7gXUC3tlyYPzY/f4vllJp08VSwdjrLDLwtRHLoyF WhieDHplKu5E4JdzVppmuFOxtmHdDDPg4T2iB026tOaZuh6vZJOYQslx7GzpiPttWuOJ 0fpg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-bluetooth-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-bluetooth-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id z206si480531oia.142.2020.01.29.10.07.44; Wed, 29 Jan 2020 10:08:09 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-bluetooth-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-bluetooth-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-bluetooth-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726733AbgA2SGm convert rfc822-to-8bit (ORCPT + 99 others); Wed, 29 Jan 2020 13:06:42 -0500 Received: from coyote.holtmann.net ([212.227.132.17]:56231 "EHLO mail.holtmann.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726328AbgA2SGl (ORCPT ); Wed, 29 Jan 2020 13:06:41 -0500 Received: from marcel-macpro.fritz.box (p4FEFC5A7.dip0.t-ipconnect.de [79.239.197.167]) by mail.holtmann.org (Postfix) with ESMTPSA id 97E38CECC8; Wed, 29 Jan 2020 19:16:00 +0100 (CET) Content-Type: text/plain; charset=us-ascii Mime-Version: 1.0 (Mac OS X Mail 13.0 \(3608.40.2.2.4\)) Subject: Re: [BlueZ PATCH v3 1/5] mgmt: Add docs for Set Wake Capable From: Marcel Holtmann In-Reply-To: Date: Wed, 29 Jan 2020 19:06:39 +0100 Cc: Luiz Augusto von Dentz , Alain Michaud , Bluez mailing list , chromeos-bluetooth-upstreaming@chromium.org Content-Transfer-Encoding: 8BIT Message-Id: <00B97550-7BB3-4F86-8463-A4053C84978A@holtmann.org> References: <20200128020505.239349-1-abhishekpandit@chromium.org> <20200127180433.BlueZ.v3.1.I999b93b65e613324dbbd16a1cf493be72fa06ad1@changeid> <137EB79B-88E6-43E0-894F-A0C8D5F9B710@holtmann.org> To: Abhishek Pandit-Subedi X-Mailer: Apple Mail (2.3608.40.2.2.4) Sender: linux-bluetooth-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-bluetooth@vger.kernel.org Hi Abhishek, >>> Add docs for new management operation to mark a device as wake capable. >>> >>> --- >>> >>> Changes in v3: None >>> Changes in v2: >>> * Separated docs/mgmt-api.txt into its own patch >>> >>> doc/mgmt-api.txt | 19 +++++++++++++++++++ >>> 1 file changed, 19 insertions(+) >>> >>> diff --git a/doc/mgmt-api.txt b/doc/mgmt-api.txt >>> index 1e59acc54..8a73a9bb9 100644 >>> --- a/doc/mgmt-api.txt >>> +++ b/doc/mgmt-api.txt >>> @@ -3047,6 +3047,25 @@ Load Blocked Keys Command >>> Possible errors: Invalid Parameters >>> Invalid Index >>> >>> +Set Wake Capable Command >>> +=========================== >>> + >>> + Command Code: 0x0047 >>> + Controller Index: >>> + Command Parameters: Address (6 Octets) >>> + Address_Type (1 Octet) >>> + Wake Capable (1 Octet) >>> + Return Parameters: Address (6 Octets) >>> + Address_Type (1 Octet) >>> + Wake Capable (1 Octet) >>> + >>> + This command sets whether a bluetooth device is capable of waking the >>> + system from suspend. This property is used to set the event filter and >>> + LE whitelist when the system enters suspend. >>> + >>> + Possible errors: Failed >>> + Invalid Parameters >>> + Invalid Index >>> >> >> my current thinking goes into this API addition: >> >> --- a/doc/mgmt-api.txt >> +++ b/doc/mgmt-api.txt >> @@ -2003,6 +2003,7 @@ Add Device Command >> 0 Background scan for device >> 1 Allow incoming connection >> 2 Auto-connect remote device >> + 3 Allow incoming connection to wake up the system >> >> With the Action 0, when the device is found, a new Device Found >> event will be sent indicating this device is available. This >> @@ -2018,6 +2019,9 @@ Add Device Command >> and if successful a Device Connected event will be sent. This >> action is only valid for LE Public and LE Random address types. >> >> + With the Action 3, the device is allowed to connect the same way >> + as with Action 1, but allows to wake up the system from suspend. >> + >> When a device is blocked using Block Device command, then it is >> valid to add the device here, but all actions will be ignored >> until the device is unblocked. >> >> Since we are really talking about incoming connections, then the Add Device command is the one that handles this. Giving a device the option to wake us up that is not set up for incoming connections makes no sense. We can discuss if certain LE advertising packets should wake us up, but that is a total different API in my book. > > I originally tried implementing this with the Add Device api as you > suggested in the RFC email back in November (when we first talked > about this). I had trouble figuring out when/where in bluez to > actually send the Add Device command. > > Whether a device supports wake-up is a profile level setting (i.e. HID > only so far). As far as I can tell, Add Device is called before the > profile connection is established. Bluez has two apis that call > MGMT_OP_ADD_DEVICE: > * adapter_auto_connect_add (this seems to be LE) > * adapter_whitelist_add (this seems to be BR/EDR) > > Both seem to be called BEFORE the registered profiles have a chance to > accept the connection. this is something for Luiz or Johan to comment on. Maybe our code is not as good as I was thinking in this regard. Or maybe this is actually legacy code that I am trying to rid of by requiring a mgmt API revision that has Add Device support. In general once we bonded with a device, we should be able to assign certain properties to it that are kept persistently. Regards Marcel