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

Android : The application may be doing too much work on its main thread
Android imageView zooming out when image is at 100% size
Android: supporting multiple screens failed
Is there any setting in android for seeing ANR for an app if app UI becomes unresponsive for say 10sec
No resource found that matches the given name:attr 'colorAccent'
Create transparent toolbar over map fragment
Gridview setChoiceMode(GridView.CHOICE_MODE_SINGLE) does not work
ViewPager with Picasso not loading inside RecyclerView Row
Fatal Exception: java.lang.IllegalArgumentException width and height must be > 0
SVG/VectorDrawable issue in android
How to show all photos folder when user select gallery option
Cobertura throws ClassNotFoundException in Android-project
define manifest place holders in build.gradle
I use ToolBar in my app and I want to custom the width of menu but I do not how to do?
Android: One item on the list view is not showing text properly
using geofencing in android or ios

Categories

HOME
checkstyle
webdriver
amp-html
static
obfuscation
jelastic
jwplayer
devise
soa
limit
jax-ws
webix
spin
commonjs
openpyxl
plist
jsonpath
onedrive-api
plink
flatpak
package.json
intershop
dimensional-modeling
forgot-password
google-container-registry
identity-management
react-toolbox
expressionengine3
interbase
bulletphysics
corpus
jasmine-node
apktool
exchangewebservices
tizen-tv
google-cast
mobx
autolisp
wacom
android-sugarorm
hreflang
arduino-ide
jwplayer6
lubridate
python-pptx
raft
odroid
railstutorial.org
typesafe-config
numberpicker
sharp-snmp
apollostack
knime
file-sharing
photos
dapper-simplecrud
monkey-testing
puredata
netbeans6.8
tinymce-3
convex-optimization
reindex
boo
er-diagram
baidu
visual-studio-2008-sp1
lrs
ng-grid
hclust
project-organization
uiactionsheet
createprocess
aspen
piracy-prevention
design-principles
jdi
page.js
rdflib
aspectj-maven-plugin
node-serialport
theos
multiautocompletetextview
embedded-fonts
cocoalibspotify-2.0
observium
swfobject
tree-balancing
jquery-address
user-tracking
uipagecontrol
inline-formset
globals
request-headers
build-environment
web-application-project
cldc
localizable.strings
business-model
contentpresenter

Resources

Encrypt Message



code
soft
python
ios
c
html
jquery
cloud
mobile