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 get international dialing code based on SIM provider?
NFC Android: Decode an Mifare tag written with NXP NFC Writer
Adding and image beside a spinner in an android layout
How do i make a history calculator in android?
Map Draw Path and Calculate Distance
KSOAP2 implement crech
how do properly design a content provider?
Aligning text in Textview for Android (using Html.fromhtml())
Refresh a ListView implemented using Lazy Load and JSON
Launch AVD for large screens
How can I 'blink' the whole surface view
Android - drawing a path
How to Convert mupdfActivity into fragment
built in android camera
Sqlite database crash
how to store video files in database in android applications

Categories

HOME
batch-file
windows
cygwin
httparty
jelastic
tivoli
nsbundle
telegram-bot
joomla3.0
performancepoint
pattern-matching
appcelerator-studio
siddhi
windows-ce
angular-dart
radgridview
android-intent
mongodb-csharp
bitnami
altera
gmm
object-storage
spotipy
livelink
sql-server-2000
hibernate-validator
simplecv
gnat-gps
activexobject
sharding
installscript
numpy-broadcasting
reason
parse-tree
docfx
timing
odroid
railstutorial.org
demo
cin
news
levenshtein-distance
preloader
oracle-service-bus
android-checkbox
plan-9
fwrite
ntvs
opennms
launchctl
datamaps
singleinstance
magic-draw
appdomain
spring-data-couchbase
css-transforms
pybrain
pocketsphinx-android
chromium-os
ziparchive
hclust
udpclient
pre-build-event
shopping
kango-framework
tracker-enabled-dbcontext
fuzzywuzzy
nio2
design-principles
asyncdisplaykit
jnlua
dynamics-nav-2016
ons-api
visual-sourcesafe-2005
canalyzer
mod-proxy
eoferror
branch-and-bound
airbrake
linked-tables
apache-spark-1.3
webmatrix-3
easyrtc
entry-point
gii
with-statement
rcaller
reflector
ecslidingviewcontroller
hibernate-entitymanager
printdialog
inappsettingskit
composite-component
mantle
booksleeve
mkv
azman
isa-swizzling
cross-database
urlrewriter
jqote
dataform
msr
mtu
presentation-layer
undefined-index
facebook-iframe
hbm2java
scrollbars
murmurhash
skype4java
tui
windows-identity
wysiwym
idatareader

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