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

undefined reference error in ndk android project using static library
How to get Suggestion for a gesture in android?
Cannot refer to other View ID in Android data binding
How to Finish Activity?
How to load a gridview using volley request and glide/picasso?
Android imageview.setBackground
KeyBoardview draw line on swipe
Showing an item from every submenu and not just a single item as selected on Navigation Drawer
Align center to imagebutton on same line android
How can I specify which android build tools version in Maven
Mosby, Conductor and Rx not playing well
My background logo is not right - usage of drawable folders
Using ACTION_DIAL and backstack
Audio post processing on Android video playback
Recent Google keyboard update broke plugged HID devices
How to hide toolbar when scroll in fragment?

Categories

HOME
xml
apache-flink
amp-html
jelastic
javacc
google-apps
polling
data-visualization
banner
frontend
boto3
character
augeas
endeca
github-enterprise
jxl
esoteric-languages
feathersjs
fileserver
git-extensions
xmonad
mapstruct
shortest-path
replication
postscript
string-concatenation
roslyn
event-store
qliksense
syntax-highlighting
jackson-modules
oculus
android-maps
apktool
gp
tizen-tv
carrierwave
xbox
cognos-bi
hard-drive
keras-layer
openwhisk
mnist
sql-server-ce
css-position
datacachefactory
oracle-service-bus
apollostack
jide
dynamic-linq
jboss-4.2.x
jquery-ui-draggable
insight
zenhub
singleinstance
page-replacement
carrot2
wpas
backbone-collections
filehandle
lsyncd
javafx-css
latin
centrifuge
spring-cloud-feign
neon
swizzling
jtwig
http-status-code-401
cassia
fuzzywuzzy
nio2
opl
tfs-workitem
visual-sourcesafe-2005
batik
haskell-warp
wso2greg
airbrake
botan
packet-sniffers
buffering
gd-graph
windows-phone-8-sdk
ice-cube
mongohq
server-administration
device-width
subgraph
correlated-subquery
subproject
failing-tests
screen-size
google-ajax-api
http-daemon
interprocess
application-planning
netbeans6.1

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