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

how to modify style of simple_list_item_multiple_choice
How to set button over a particular text
Glass GDK : onSensorChanged not called
How to save the selection on seekbar onSaveInstance state
zooming and panning with buttons in android emulator
Loss of GPS Signal simulation in Android Emulator
Call method from another class with broadcastreceiver
IllegalStateException orientation change while performing filter query serach
Android how to combine two parse queries using 'OR'
Passing values from an Activity into a ListView in another activity and saving these values
Change XMPP registered user password using asmack
Null pointer exception error sending a characteristic BLE android
Upload images via post and horizontal progress dialog
Save data and view even after closing application and when opening it again don't load data and view again
OnItemClickListener is not working relativelayout view in gridview
Android Developer How get versionCode or versionName from play market

Categories

HOME
shell
hyperlink
jmeter
github-for-windows
google-spreadsheet
hessian
edge
entity-framework-core
google-admin-sdk
barcode
accessibility
dkim
mel
resultset
mautic
filechannel
3nf
azure-powershell
dreamweaver
mapstruct
sencha-touch
breadth-first-search
googlebot
cgbitmapcontext
php-mysqlidb
exploit
short-url
direct3d11
comparator
data.stackexchange.com
shared
datastax-enterprise-graph
twiml
glib
android-gridview
android-maps-extensions
slacktextviewcontroller
cd
ideascript
flatmap
nohup
mcustomscrollbar
doc
watchface
android-softkeyboard
linqpad
smoothstate.js
placeholder
uiimage
puredata
sonarlint-eclipse
mongotemplate
trojan
reindex
check-mk
css-transforms
offline.js
swingworker
branch-prediction
microstation
latin
myspace
flex4.6
watch-os-2
jclouds
jtwig
sklearn-pandas
upx
cortex-m
cycle2
fiware-monitoring
rewrite
morton-number
poppler
phonertc
alloy-ui
nutiteq
phpldapadmin
execve
boost-program-options
addressing-mode
structuremap3
raygun
mdichild
jqmodal
matrix-inverse
memset
buffering
amslidemenu
visual-studio-express
notorm
http-patch
model-driven-development
mongohq
tlf
pagedown
intersect
dajaxice
boost-signals
oracle-enterprise-linux
azman
htdocs
umra
collectionviewsource
photolibrary
objective-j
instantiationexception
maven-1
cldc
fail-fast-fail-early
entitykey
java1.4
ifilter

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