android


BLE notification subscription gets 133


1 Android phone (N5X 6.0.1) is running a BLE server, another one (N5X O) is subscribing.
Notification for a characteristic can be enabled however, on the write descriptor part, I'm consistently getting a 133.
Server.java
bluetoothGattServer = bluetoothManager.openGattServer(this, serverCallback);
BluetoothGattService service = new BluetoothGattService(Constants.SERVICE,
BluetoothGattService.SERVICE_TYPE_PRIMARY);
characteristic =
new BluetoothGattCharacteristic(Constants.CHARACTERISTIC,
BluetoothGattCharacteristic.PROPERTY_NOTIFY,
BluetoothGattCharacteristic.PERMISSION_READ | BluetoothGattCharacteristic.PERMISSION_WRITE);
// public static UUID DESCRIPTOR = UUID.fromString("00002902-0000-1000-8000-00805f9b34fb");
characteristic.addDescriptor(new BluetoothGattDescriptor(Constants.DESCRIPTOR,
BluetoothGattCharacteristic.PERMISSION_READ | BluetoothGattDescriptor.PERMISSION_WRITE));
characteristic.setWriteType(BluetoothGattCharacteristic.WRITE_TYPE_DEFAULT);
service.addCharacteristic(characteristic);
bluetoothGattServer.addService(service);
All the other UUIDs have been created from here.
Client.java
device.establishConnection(false)
.flatMap(bleConnection -> bleConnection.setupNotification(Constants.CHARACTERISTIC))
.flatMap(onNotificationReceived -> onNotificationReceived)
.subscribe(data -> {
Log.d(TAG, "data: " + data);
}, throwable -> {
Log.d(TAG, "data error " + throwable);
});
logcat
05-15 15:26:50.097 D/BluetoothGatt: setCharacteristicNotification() - uuid: 8d7dda32-3759-11e7-a919-92ebcb67fe33 enable: true
05-15 15:26:50.105 D/RxBle#Radio: QUEUED RxBleRadioOperationDescriptorWrite(60042487)
05-15 15:26:50.110 D/RxBle#Radio: FINISHED RxBleRadioOperationServicesDiscover(231218312)
05-15 15:26:50.112 D/RxBle#Radio: STARTED RxBleRadioOperationDescriptorWrite(60042487)
05-15 15:27:20.119 D/RxBle#Radio: FINISHED RxBleRadioOperationDescriptorWrite(60042487)
05-15 15:27:20.121 D/BluetoothGatt: setCharacteristicNotification() - uuid: 8d7dda32-3759-11e7-a919-92ebcb67fe33 enable: false
05-15 15:27:20.126 D/RxBle#BluetoothGatt: onDescriptorWrite descriptor=00002902-0000-1000-8000-00805f9b34fb status=133
05-15 15:27:20.129 D/BLE: data error BleGattDescriptorException{macAddress=42:EE:5A:C6:C1:F0, status=133 (0x85 -> https://android.googlesource.com/platform/external/bluetooth/bluedroid/+/android-5.1.0_r1/stack/include/gatt_api.h), bleGattOperationType=BleGattOperation{description='DESCRIPTOR_WRITE'}}
Note: if I'm using the native Android API, I'm able to subscribe and receive notifications without having to write into the descriptor.
Bluetooth Core Specification says that if a characteristic supports notifications it should contain a Client Characteristic Config descriptor and start notifying only when CCC descriptor will be written with a proper value.
It seems that in your configuration there is a problem which manifests as status = 133. It seems that you may have made a mistake when setting properties on the characteristic. I assume that you want to have a characteristic that you can read, write and set notifications - in this situation it would look like:
characteristic =
new BluetoothGattCharacteristic(Constants.CHARACTERISTIC,
BluetoothGattCharacteristic.PROPERTY_READ, BluetoothGattCharacteristic.PROPERTY_WRITE, BluetoothGattCharacteristic.PROPERTY_NOTIFY,
BluetoothGattCharacteristic.PERMISSION_READ | BluetoothGattCharacteristic.PERMISSION_WRITE);
Potential workaround
Some chinese manufacturers are not conforming to the Bluetooth Core Specification and they do not have CCC descriptor. If you are able to get the notifications without setting CCC then you could use a compatibility mode RxBleConnection.setupNotifications(characteristic, NotificationSetupMode.COMPAT) although it is discouraged and a proper fix to the configuration should be aplied.

Related Links

why model class is needed if there is a cursor in android? [duplicate]
Top 6 or 7 item of groupview of expandable listview do not refresh
NoSuchMethodError in MapsInitializer.initialize() after upgrading to Google Play Services v4.2
Custom properties for objects not showing in native share dialog
ArrayList with Custom ArrayAdapter
I Can install apk of my project but cant see it, why?
How to override Contextual Action Bar when selecting text in a WebView in Android?
Deep Link Fallback
In which form the data of facebook graph api me/home should be stored?
SystemClock.uptimeMillis() not working
Google Maps not showing on android v2.2
GridView customizing, How to select individual item
Is It possible to make tabs without using fragments, view pager and ActionBar in android
How to prevent custom dialog from popping twice in asynctask onPostExecute?
android- any way to open chrome from the app without passing an intent? chrome scheme?
Android: NullPointerException in super Activity

Categories

HOME
url-redirection
go
beautifulsoup
c99
datastore
rsa
swt
error-handling
r-googlesheets
sendgrid-api-v3
android-securityexception
template-engine
soci
sigma.js
boost-icl
replication
googlebot
dynamically-generated
ckfinder
windows-server-2003
data.stackexchange.com
syntax-highlighting
fragment-backstack
boost-asio
eviews
send
complex-numbers
weather
git-squash
spring-security4
keras-layer
pdw-file-browser
reason
graphhopper
amazon-ses
z-notation
hackintosh
apollostack
importerror
httr
x++
plan-9
textsum
opennms
term
reportservice2010
dbcontext
compiler-design
subnet
edit
filehandle
universal-analytics
cd-burning
ampps
testrail
donations
rocks
pacemaker
x-tag
mapinfo
shopping
http-status-code-401
angular-ui-typeahead
exim4
highland.js
assertion
terracotta
microsoft-reporting
android-launcher
batik
ember-cli-rails
linked-tables
omnifaces
xmltype
procedural-programming
filesplitting
encryption-asymmetric
jqmodal
unix-socket
draw2d-js
mutual-authentication
windows-embedded-standard
gwt-openlayers
cmmi
composite-component
cardreader
swfobject
dopostback
wcf-configuration
pyunit
subgraph
fusefabric
multiplatform
openfaces
lxr
web-application-project
leader

Resources

Mobile Apps Dev
Database Users
javascript
java
csharp
php
android
MS Developer
developer works
python
ios
c
html
jquery
RDBMS discuss
Cloud Virtualization
Database Dev&Adm
javascript
java
csharp
php
python
android
jquery
ruby
ios
html
Mobile App
Mobile App
Mobile App