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 there a way to have the nav drawer list fill the height of the drawer without adding padding to the list items
Android-the method loadUrl() in webView sends POST or GET request?
app opens a crash dialog on device startup
Add item to Android ListView with BaseAdapter
How to get the time zone of a place in android?
Dynamic Grid Layout
basic android app that connects with Instagram and will allow [closed]
Android program crash with signal 11 and fault address
Memory leak in asynctask called repeatedly
How to fix the issue if app is crashed in android?
Make background span across multiple GridLayout children
What return on fail googleCloudMessaging.register() method
adb is not recognized as an internal or exteral command error in Android studio
Can sinch call emergency numbers like 911?
Android store and retrieve items from xml
Can we include User ID and Password with the intent to launch second application from first application?

Categories

HOME
windows
turing-machines
jpa
hyperlink
checkstyle
spark-streaming
fuelux
string
flex
edge
pyqt4
pearson-correlation
gluon-mobile
pkcs#11
arangodb
syntaxnet
spring-social
enterprise-architect
magnetic-cards
capistrano3
event-sourcing
firefox-addon
asp.net-mvc-viewmodel
wolframalpha
mapstruct
charles
r-mice
mongoid6
monit
android-sharedpreferences
datastax-enterprise-graph
dotspatial
turfjs
installshield-le
processwire
swagger-php
p4merge
azure-arm
stringtokenizer
movilizer
httr
optimizely
datamaps
podscms
wpas
pocketsphinx-android
testrail
ziparchive
php-socket
concurrentmodification
boomerang
sciruby
gocql
computer-architecture
eoferror
jsvc
airbrake
graphics2d
fail2ban
cross-join
ghcjs
sql-scripts
appserver
personalization
mintty
tinyxml
dct
android-framework
multiautocompletetextview
spring-3
scriptaculous
mt4j
oocss
process-explorer
traceability
onload-event
fb.ui
bjyauthorize
web-notifications
monotouch.dialog
appjs
virtualpathprovider
denied
automationelement
w3c-geolocation
rowlex
opml
django-piston
lxr
silverlight-oob
wysiwym
java1.4
leader
blind

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