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

Getting access to the currently shown fragment in fragmentpageradapter
Search using android search view widget not showing correct position after searching
My Bluetooth app is not scanning the nearby devices in Nexus 5X
Android how to add an expandable listView for navigation drawer item?
Get Last Updated Time Of Contacts In Android programmatically
Upload Image on Server Without converting into BITMAP
How to toggle a view from normal screen and full screen and vise versa in android
how to make app launch from any screen in android?
Fragment calls the same network call again
Make a layout that arrange its child in circular fashion Android
How can I put a marker on the top when using mapbox on android
Required XML attribute 'adSize' was missing [duplicate]
TableLayout resizes when TableRow is full
How to Bind an Activity to Bound Services Defined in Other Assemblies?
Android: IntentService and OS versions
ViewPager retain check state of inflated elements

Categories

HOME
uml
httparty
fuelux
string
jmeter
3d
soa
scripting
web-hosting
bookmarks
mvc5
frontend
crystal-lang
vert.x
barcode
octave
startup
libusb
azure-powershell
keytool
xmonad
itunes
pic32
android-maps
vex
mobx
recurring-events
dst
memory-address
code-snippets
keras-layer
sendbird
reactivekit
recurrent-neural-network
metaprogramming
google-data-api
chef-solo
setup.py
comparison-operators
odoo-website
bindingnavigator
android-checkbox
berkeley-db-je
apache-spark-dataset
rserve
context-switch
stdmap
context-sensitive-grammar
headless
css-transforms
libjpeg
monkey
cudd
builtins
redbeard-ios
turbo-prolog
phpwebsocket
yajsw
libav
vhosts
toran-proxy
decimalformat
computer-architecture
finalbuilder
baasbox
pyobjc
nutiteq
zxspectrum
grouping-sets
dbaccess
execve
sip-server
metatrader5
lambda-architecture
mintty
square-bracket
ie8-compatibility-mode
mvc-editor-templates
fb.ui
web-notifications
window-decoration
kqueue
procedures
entity-attribute-value
cdonts
load-time
message-passing
sifr
burndowncharts
tui
commercial-application

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