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

Are “swipe” and “fling” the same in iOS
Null pointer Exception Android Googlemaps
Start Activity from Service and bind them
Can I make my content in 3P app webview readable?
Different layout on different screen orientation without onCreate
Can we use LocalDateTime of Java 8 in Android in Eclipse?
Android: locationManager GPS_provider VS Network_provider
ImageView to zoom out and scale the image animation in android
can i define SubmitColor method to display three colors which would look good with this without using intent? [closed]
Why won't Visual Studio 2017 run Android emulator? (Gives error ANDROID_SDK_ROOT missing)
How can i use Multipie view in RecycerView on Android
How to get the content of dynamic layouts in android
App installation is cancelled on MI devices every time when instant run enabled
Can't access HTTPS from my Android Emulator
Use shell in android to send a picture via telegram or signal
Android expand/collapse view scroll issue

Categories

HOME
fuelux
ns-3
interface
serialization
fftw
sitecore
owl-carousel
nsbundle
alsa
gembox-spreadsheet
odoo-8
distribution
alamofire
tput
stellar.js
speech-synthesis
code-generation
scrolltop
alpacajs
dimensional-modeling
google-data-studio
windows-xp
poedit
kendo-mobile
rubymotion
libigl
imageresizer
interpreter
direct3d11
comparator
mount
froala
windows-server-2003
underscore.js
angular-translate
calculation
testbed
spring-security4
sammy.js
vue-chartjs
batching
getlasterror
reactivekit
timing
chef-solo
parser-generator
angular-http
procfile
gitlist
netbeans6.8
podscms
payara-micro
aquamacs
pdf-conversion
rackspace-cloud
django-1.10
branch-prediction
pocketsphinx-android
simplepie
angular2-testing
atlas
tinkerpop3
signalr.client
installshield-2010
jtwig
angular-ui-typeahead
bizagi
blitline
atan2
terracotta
r-package
xenomai
doctype
avahi
mass-assignment
android-cookiemanager
pseudo-class
with-statement
mobility
reflector
cancellation
authlogic
koala
multiautocompletetextview
composite-component
device-width
robotlegs
redis-py
josql
lambdaj
wiimote
agility.js
pinch
procedures
appledoc
nhprof
burndowncharts
glui
cldc
asynchronous-wcf-call
xpsdocument

Resources

Encrypt Message



code
soft
python
ios
c
html
jquery
cloud
mobile