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

Is it possible to have two different instances of same Eclipse version?
FFMPEG android compile error
Android Device Chooser: Cannot Detect Device
Cannot dismiss dialog after download completes
Is there any way of clearing the launcher activity from App's Activity history programmatically by setting some intent flag?
How to show a dialog box three days once in an android application
how to make background colored button touchable or appear to clickable in android
Anyone knows how change package name of Telegram app?
Adreno-GSL and AdMob Crashes
Including row at the bottom of Navigation drawer
I can't read .txt files from the raw folder
File last access time on Android
Custom ActionBar and RoboGuice injection
Surface view z-index changing after OnResume/OnPause Android
How to insert current date in sqlitedatabase
Skip error urls android

Categories

HOME
algorithm
grok
turing-machines
jpa
deep-learning
eslint
telegram
webdriver
formal-languages
twig
3d
sitecore
package
socket.io
simulink
dojo
gembox-spreadsheet
mapbox
crystal-lang
arangodb
scrolltop
coin3d
entitymanager
firefox-addon
html5-appcache
jmp
asp.net-core-webapi
backpack-for-laravel
angular-routing
easeljs
flask-sqlalchemy
displaytag
jquery-callback
genexus-sd
mql
userdefaults
mobx
postback
jbutton
r-grid
gnat-gps
mnist
batching
roblox
openerp-7
parse-tree
playframework-2.1
jvmti
magento-1.9.3
lampp
openrasta
subnet
opengl-4
oozie-coordinator
polyline
pure-css
simplepie
angular2-testing
xcode-server
jquery-jscrollpane
simevents
query-by-example
beanstalk
false-sharing
qbxml
libvlc
vhosts
character-replacement
dynamics-nav-2016
custom-errors
dllimport
fuelcms
slash
viola-jones
uncompress
amiga
teamcity-9.1
shopizer
adehabitathr
sip-server
imagefilter
xml-namespaces
create.js
ora-00904
grails-plugin-rabbitmq
extjs2
decoupling
dsym
multiautocompletetextview
kendo-dataviz
scringo
neos-server
flex++
process-explorer
actiondispatch
preload
web-farm
window-decoration
kqueue
hibernateexception
android-holo-everywhere
winmain
exponentiation
tournament
multiplatform
umra
inline-formset
easyb
feasibility
sifr3
fault-tolerance
xslcompiledtransform
appliance

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