<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://devzone.nordicsemi.com/cfs-file/__key/system/syndication/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Removing the Generic Attribute (0x1801) primary service if the Service Changed characteristic is not present</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/15076/removing-the-generic-attribute-0x1801-primary-service-if-the-service-changed-characteristic-is-not-present</link><description>Setting the gatts_enable_params.service_changed to 0 when enabling softdevice removes (or rather doesn&amp;#39;t add) the Service Changed characteristic. That&amp;#39;s what I want. However it still leaves behind (adds) the Generic Attribute service which is now empty</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Mon, 16 Jan 2017 13:56:11 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/15076/removing-the-generic-attribute-0x1801-primary-service-if-the-service-changed-characteristic-is-not-present" /><item><title>RE: Removing the Generic Attribute (0x1801) primary service if the Service Changed characteristic is not present</title><link>https://devzone.nordicsemi.com/thread/57569?ContentTypeID=1</link><pubDate>Mon, 16 Jan 2017 13:56:11 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:1e40533c-ac50-4937-843d-a38b7aa26095</guid><dc:creator>tesc</dc:creator><description>&lt;p&gt;Unfortunately I have no new information, but I recommend to assume the GATT service is mandatory.&lt;/p&gt;
&lt;p&gt;It makes sense and it is safe to assume it is mandatory. Having one instance of the service is always safe, no matter how one chooses to interpret &amp;quot;Only one instance of the GATT service shall be exposed on a GATT server.&amp;quot; (Either &amp;quot;At most one...&amp;quot; or &amp;quot;Exactly one...&amp;quot;)&lt;/p&gt;
&lt;p&gt;Our SoftDevices and the book mentioned previously both assumes that the GATT Service is mandatory, and treating it as such (on the GATT server side) is guaranteed to comply with the specification.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Removing the Generic Attribute (0x1801) primary service if the Service Changed characteristic is not present</title><link>https://devzone.nordicsemi.com/thread/57565?ContentTypeID=1</link><pubDate>Wed, 13 Jul 2016 11:40:43 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:5fdf9213-e6a2-4ddd-b1ed-ee2d66348acb</guid><dc:creator>tesc</dc:creator><description>&lt;p&gt;I have updated the answer to reflect the uncertainty regarding the requirement status of the GATT Service. I have also sent a request to the Bluetooth SIG for clarification, and will update my answer again when I receive the canonical interpretation.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Removing the Generic Attribute (0x1801) primary service if the Service Changed characteristic is not present</title><link>https://devzone.nordicsemi.com/thread/57564?ContentTypeID=1</link><pubDate>Wed, 13 Jul 2016 11:21:38 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:a4338f7a-2ca5-4526-a24e-fd188d2e862f</guid><dc:creator>tesc</dc:creator><description>&lt;p&gt;I think I agree. The word &amp;quot;only&amp;quot; at the start of the sentence leads me to think your interpretation is plausible. Remove that word and there is no question the service is mandatory. But the word is there.&lt;/p&gt;
&lt;p&gt;Anyway, I have no clear definite answer at this point in time, unfortunately. All I know for certain is that the SoftDevice will allways include the service even if it is empty. As stated earlier I will follow up the case, and add a request for enabling removal of the service if applicable.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Removing the Generic Attribute (0x1801) primary service if the Service Changed characteristic is not present</title><link>https://devzone.nordicsemi.com/thread/57563?ContentTypeID=1</link><pubDate>Wed, 13 Jul 2016 10:28:49 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:60e92662-4601-4edc-aba8-d10d20c2fb20</guid><dc:creator>atune</dc:creator><description>&lt;p&gt;I parsed that sentence myself when making my initial question, however my take of that was &amp;quot;Only one ... shall&amp;quot; meaning that there &lt;em&gt;shall not&lt;/em&gt; be &lt;em&gt;multiple&lt;/em&gt; instances of the service. In my opinion &lt;em&gt;BLUETOOTH SPECIFICATION Version 4.2 [Vol 3, Part C]&lt;/em&gt; page 390 supports my interpretation, stating:
&amp;quot;The GATT server shall contain the GAP service ...&amp;quot; &lt;strong&gt;and&lt;/strong&gt; (!) &amp;quot;A device shall have only one
instance of the GAP service&amp;quot;. The latter part is also in the chapter you quoted (with different ordering), but the first part is not. Comparing [Vol 3, Part C] p390 and [Vol 3, Part G] p577, in addition to the SIG-specified profiles I referenced not having the GATT service, still leads me to stay strong in my belief that the empty service is not mandatory.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Removing the Generic Attribute (0x1801) primary service if the Service Changed characteristic is not present</title><link>https://devzone.nordicsemi.com/thread/57557?ContentTypeID=1</link><pubDate>Wed, 13 Jul 2016 09:35:51 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:8469884f-c7db-4674-a935-24705f7f494e</guid><dc:creator>tesc</dc:creator><description>&lt;p&gt;At the moment it seems to boil down to the following line in the Bluetooth Specification Version 4.2, Vol 3, Part G, 7 DEFINED GENERIC ATTRIBUTE PROFILE SERVICE: &amp;quot;Only one instance of the GATT service &lt;strong&gt;shall&lt;/strong&gt; be exposed on a GATT server.&amp;quot; (Our emphasis.) The use of the word &amp;quot;shall&amp;quot;, if interpreted as in &lt;a href="https://www.ietf.org/rfc/rfc2119.txt"&gt;rfc2119&lt;/a&gt;, makes a strong case for one instance of the GATT service being mandatory. (Although the sentence is no doubt somewhat ambiguous.)&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Removing the Generic Attribute (0x1801) primary service if the Service Changed characteristic is not present</title><link>https://devzone.nordicsemi.com/thread/57562?ContentTypeID=1</link><pubDate>Wed, 13 Jul 2016 08:55:35 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:6e181fcc-789a-4789-9866-ca5d9eff15f2</guid><dc:creator>atune</dc:creator><description>&lt;p&gt;Alright that&amp;#39;s good to hear, thanks Terje. :) Sorry for the trouble.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Removing the Generic Attribute (0x1801) primary service if the Service Changed characteristic is not present</title><link>https://devzone.nordicsemi.com/thread/57561?ContentTypeID=1</link><pubDate>Wed, 13 Jul 2016 08:49:08 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:8fff653b-612a-4082-b40d-ae1fc6162a6a</guid><dc:creator>tesc</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;Unfortunately all of the Nordic engineers that may have an answer to this seem to be on vacation at the moment (July is summer vacation season in Norway). I will follow up this one, but worst case we will have to wait until someone that knows returns from vacation.&lt;/p&gt;
&lt;p&gt;Regards, Terje&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Removing the Generic Attribute (0x1801) primary service if the Service Changed characteristic is not present</title><link>https://devzone.nordicsemi.com/thread/57560?ContentTypeID=1</link><pubDate>Wed, 13 Jul 2016 08:42:40 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:26a61524-77da-42f5-93ae-71d2ca2010f0</guid><dc:creator>atune</dc:creator><description>&lt;p&gt;For the specification part, maybe. However why I&amp;#39;m here is more about why the SoftDevice adds the service and the BT SIG does not have control over that.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Removing the Generic Attribute (0x1801) primary service if the Service Changed characteristic is not present</title><link>https://devzone.nordicsemi.com/thread/57559?ContentTypeID=1</link><pubDate>Wed, 13 Jul 2016 08:28:17 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:d309aeaa-0796-434a-8f0d-c31352830bee</guid><dc:creator>RK</dc:creator><description>&lt;p&gt;I think at this point if you want a definitive answer you&amp;#39;ll have to ask the Bluetooth SIG for one.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Removing the Generic Attribute (0x1801) primary service if the Service Changed characteristic is not present</title><link>https://devzone.nordicsemi.com/thread/57567?ContentTypeID=1</link><pubDate>Wed, 13 Jul 2016 08:18:09 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:fd774b18-0aad-4a81-8931-708cefa15b6a</guid><dc:creator>atune</dc:creator><description>&lt;p&gt;Initially I was happy about the answer and marked it as accepted but now I changed my mind, sorry. :(&lt;/p&gt;
&lt;p&gt;Looking at the &lt;a href="https://developer.bluetooth.org/TechnologyOverview/Pages/Profiles.aspx"&gt;SIG Profile Specs&lt;/a&gt;, they don&amp;#39;t contain the Generic Attribute Service. The same profile specs included in their own Bluetooth Developer Studio (.\XmlFiles\Profiles) tell the same tale - the service is not included. If 0x1801 were required by the specification, they would be breaking their own standard in the profile specs. Having not found any clear reference in the specification, the only mention being the quote from the book, I don&amp;#39;t believe it is mandatory and as such the SoftDevice should not enforce the service in the profile unless the Service Changed characteristic is needed.&lt;/p&gt;
&lt;p&gt;Could I get a definitive answer as to why the service is always present in the profile and if it could be removed?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Removing the Generic Attribute (0x1801) primary service if the Service Changed characteristic is not present</title><link>https://devzone.nordicsemi.com/thread/57566?ContentTypeID=1</link><pubDate>Wed, 13 Jul 2016 07:38:23 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:0f262cb8-c079-49c5-a0f1-97b811117ffa</guid><dc:creator>tesc</dc:creator><description>&lt;p&gt;If you are happy with the answer then please accept it by clicking the grey circle with a white checkmark (up there by the top of the answer). This would make the answer easier to find for others with similar questions.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Removing the Generic Attribute (0x1801) primary service if the Service Changed characteristic is not present</title><link>https://devzone.nordicsemi.com/thread/57558?ContentTypeID=1</link><pubDate>Tue, 12 Jul 2016 12:48:16 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:745ceb7f-fef0-42e0-b7ac-d7745298f077</guid><dc:creator>tesc</dc:creator><description>&lt;p&gt;I would not use such a strong word for breaking something that seems to not even be written in the specification, but I also have limited knowledge regarding what is actually being enforced. From a technical point of view the answer is simple, but there are legal stuff out there which may prevent you from using BLE technology without proper qualification.&lt;/p&gt;
&lt;p&gt;I guess the best option would be to post your question as a new question. Questions in comments are generally not read, so I would not expect too many answers here.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Removing the Generic Attribute (0x1801) primary service if the Service Changed characteristic is not present</title><link>https://devzone.nordicsemi.com/thread/57556?ContentTypeID=1</link><pubDate>Tue, 12 Jul 2016 12:35:14 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:8a15cf4f-bb2b-49df-8717-ea61a19e9682</guid><dc:creator>atune</dc:creator><description>&lt;p&gt;Just as a side question, would it be abhorrent to let the user break the specification if, uh, &amp;quot;needed&amp;quot;? Personally I have no need to ensure interoperability with anything but my own devices, however the &amp;quot;overhead&amp;quot; here is something I should probably not care about either way.&lt;/p&gt;
&lt;p&gt;This stems purely from the previous chip used which allowed to fully control the profile so I&amp;#39;m not saying I should be allowed to do whatever I want... :)&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Removing the Generic Attribute (0x1801) primary service if the Service Changed characteristic is not present</title><link>https://devzone.nordicsemi.com/thread/57553?ContentTypeID=1</link><pubDate>Tue, 12 Jul 2016 12:28:56 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:8949c772-ae02-4417-a7fa-35614b160f2e</guid><dc:creator>atune</dc:creator><description>&lt;p&gt;Ok, thank you.&lt;/p&gt;
&lt;p&gt;I&amp;#39;m still miffed that on [Vol 3, Part C] page 390 it specifically says that the GAP Service [which would be 0x1800] is mandatory, but in the already mentioned [Vol 3, Part G] page 577 there is only mention of the characteristic and the service itself is left hanging imo.&lt;/p&gt;
&lt;p&gt;AFAIK there is no other place with a clear indication that the service itself is mandatory in the specification. &lt;a href="http://newdotcomintfe1.cloudapp.net/specifications/assigned-numbers/generic-attribute-profile"&gt;newdotcomintfe1.cloudapp.net/.../generic-attribute-profile&lt;/a&gt; also just references the two pages mentioned in the above paragraph. Even the test specifications I glanced over only mentioned testing for the characteristic (with mention of not being mandatory), not the service itself.&lt;/p&gt;
&lt;p&gt;If someone knows of explicit mention of the service being mandatory in the official spec, I&amp;#39;d still love to see it. :)&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Removing the Generic Attribute (0x1801) primary service if the Service Changed characteristic is not present</title><link>https://devzone.nordicsemi.com/thread/57555?ContentTypeID=1</link><pubDate>Tue, 12 Jul 2016 08:26:06 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:514724b7-1c4f-4644-a30d-3411ddb42432</guid><dc:creator>tesc</dc:creator><description>&lt;p&gt;Thanks. But where is it stated that the GATT Server must contain the Generic Attribute Service? It makes totally sense, but is it explicitly stated anywhere?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Removing the Generic Attribute (0x1801) primary service if the Service Changed characteristic is not present</title><link>https://devzone.nordicsemi.com/thread/57554?ContentTypeID=1</link><pubDate>Tue, 12 Jul 2016 08:13:32 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:3746c896-4fd1-47dc-8ee6-1400976dd77e</guid><dc:creator>RK</dc:creator><description>&lt;p&gt;BTLE spec 4.2, volume 0, Part B, Section 4.4 says GATT is mandatory when ATT is supported, ATT is mandatory when either GAP role is supported and to be LE compliant at least one GAP role must be supported. So I think that makes GATT mandatory.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Removing the Generic Attribute (0x1801) primary service if the Service Changed characteristic is not present</title><link>https://devzone.nordicsemi.com/thread/57552?ContentTypeID=1</link><pubDate>Tue, 12 Jul 2016 08:02:10 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:3697a600-5ae8-4522-9a7c-2982ebf94d24</guid><dc:creator>tesc</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The Service Changed characteristic is optional&lt;/li&gt;
&lt;li&gt;The SoftDevice handles the Generic Attribute Service as if mandatory&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Regarding the second question you linked to, what was planned for removal was the Service Changed characteristic.&lt;/p&gt;
&lt;p&gt;Unfortunately I am unable to find where in the specification or related documents the Generic Attribute Service is described as being mandatory, so my only source is &lt;em&gt;Getting Started with Bluetooth Low Energy&lt;/em&gt; by Townsend, Cufí, Akiba and Davidson, chapter 4 &lt;em&gt;GATT (Services and Characteristics)&lt;/em&gt;, section &lt;em&gt;GATT Service&lt;/em&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Just as GAP has its own SIG-specified
service that is mandatory for all
devices (described extensively in &amp;quot;GAP
Service&amp;quot; on page 50), GATT also has
its own service (containing up to one
characteristic) that must be included
in all GATT servers.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Regards, Terje&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>