title: Bluetooth Gatt issue onClientConnectionState() - status=8 clientIf=29
body: <p>I am making android BLE app. As per the Documents, I make application. My Problem is that sometime the app will work good , but sometime it throw the errors .There is 2 logs, one for success and 2nd for the errors. Every time bluetooth disconnect, i am send close method. I don't know where I am stuck.</p>
  
  <h2>1st success log</h2>
  
  <pre><code>7-11 11:44:54.371 17649-17649/com.clavax.ultrapen I/BluetoothGatt 1: try to connecte
  07-11 11:44:54.371 17649-17649/com.clavax.ultrapen D/BluetoothGatt: connect() - device: 00:13:43:07:98:D4, auto: false
  07-11 11:44:54.371 17649-17649/com.clavax.ultrapen D/BluetoothGatt: registerApp()
  07-11 11:44:54.371 17649-17649/com.clavax.ultrapen D/BluetoothGatt: registerApp() - UUID=240e1b71-f4c5-43f2-9535-cd337b501374
  07-11 11:44:54.421 17649-17660/com.clavax.ultrapen D/BluetoothGatt: onClientRegistered() - status=0 clientIf=10
  07-11 11:44:54.611 17649-13359/com.clavax.ultrapen D/BluetoothGatt: onClientConnectionState() - status=0 clientIf=10 device=00:13:43:07:98:D4
  07-11 11:44:54.611 17649-13359/com.clavax.ultrapen I/BluetoothGatt 1: BRSP connection created 2 0
  07-11 11:44:54.621 17649-17649/com.clavax.ultrapen D/BluetoothGatt: discoverServices() - device: 00:13:43:07:98:D4
  07-11 11:44:54.621 17649-17649/com.clavax.ultrapen D/BluetoothGatt 1: Discover Services started: true
  07-11 11:44:54.621 17649-17649/com.clavax.ultrapen I/BluetoothGatt 1:  connection created
  07-11 11:44:54.811 17649-13359/com.clavax.ultrapen D/BluetoothGatt: onClientConnParamsChanged() - Device=00:13:43:07:98:D4 interval=6 status=0
  07-11 11:44:55.231 17649-17661/com.clavax.ultrapen D/BluetoothGatt: onSearchComplete() = Device=00:13:43:07:98:D4 Status=0
  07-11 11:44:55.231 17649-17661/com.clavax.ultrapen I/BluetoothGatt 1: BRSP service discovered
  07-11 11:44:55.231 17649-17661/com.clavax.ultrapen D/BluetoothGatt: setCharacteristicNotification() - uuid: fdd6b4d3-046d-4330-bdec-1fd0c90cb43b enable: true
  07-11 11:44:55.231 17649-17661/com.clavax.ultrapen I/BluetoothGatt 1: BRSP service discovered 2
  07-11 11:44:55.261 17649-13359/com.clavax.ultrapen I/BluetoothGatt 1: BRSP description write
  07-11 11:44:55.261 17649-13359/com.clavax.ultrapen I/BluetoothGatt 1: BRSP initstate1
  07-11 11:44:55.261 17649-13359/com.clavax.ultrapen D/BluetoothGatt: setCharacteristicNotification() - uuid: 18cda784-4bd3-4370-85bb-bfed91ec86af enable: true
  07-11 11:44:55.261 17649-13359/com.clavax.ultrapen I/BluetoothGatt 1: BRSP initstate notification1true
  07-11 11:44:55.261 17649-13359/com.clavax.ultrapen D/BluetoothGatt: onClientConnParamsChanged() - Device=00:13:43:07:98:D4 interval=39 status=0
  07-11 11:44:55.761 17649-17649/com.clavax.ultrapen I/BluetoothGatt 1: BRSP initstate write1true
  07-11 11:44:55.841 17649-13359/com.clavax.ultrapen I/BluetoothGatt 1: BRSP description write
  07-11 11:44:55.841 17649-13359/com.clavax.ultrapen I/BluetoothGatt 1: BRSP initstate2
  07-11 11:44:55.841 17649-17649/com.clavax.ultrapen I/BluetoothGatt 1: BRSP initstate read2true
  07-11 11:44:55.931 17649-13359/com.clavax.ultrapen I/BluetoothGatt 1: BRSP characteristic read 1
  07-11 11:44:55.931 17649-13359/com.clavax.ultrapen I/BluetoothGatt 1: BRSP initstate3
  07-11 11:44:55.941 17649-13359/com.clavax.ultrapen I/BluetoothGatt 1: BRSP brsp m0detrue
  07-11 12:07:21.461 17649-21210/com.clavax.ultrapen I/BluetoothGatt 1: BRSP characteristic read 2
  07-11 12:07:21.561 17649-21210/com.clavax.ultrapen I/BluetoothGatt 1: BRSP characteristic write 1
  07-11 12:07:21.561 17649-21210/com.clavax.ultrapen I/BluetoothGatt 1: BRSP characteristic write 3
  07-11 12:07:21.581 17649-17649/com.clavax.ultrapen I/BluetoothGatt 1: BRSP write byte0
  07-11 12:07:21.581 17649-17649/com.clavax.ultrapen I/BluetoothGatt 1: BRSP send packets
  07-11 12:07:21.581 17649-17649/com.clavax.ultrapen I/BluetoothGatt 1: BRSP sending
  07-11 12:07:21.581 17649-17649/com.clavax.ultrapen I/BluetoothGatt 1: BRSP sendingtrue
  07-11 12:07:21.601 17649-17649/com.clavax.ultrapen I/BluetoothGatt 1: BRSP send packets
  07-11 12:07:21.601 17649-17649/com.clavax.ultrapen I/BluetoothGatt 1: BRSP return
  07-11 12:07:21.661 17649-21210/com.clavax.ultrapen I/BluetoothGatt 1: BRSP characteristic write 1
  07-11 12:07:21.661 17649-21210/com.clavax.ultrapen I/BluetoothGatt 1: BRSP characteristic write 2
  07-11 12:07:21.661 17649-21210/com.clavax.ultrapen I/BluetoothGatt 1: BRSP send packets
  07-11 12:07:21.661 17649-21210/com.clavax.ultrapen I/BluetoothGatt 1: BRSP sending
  07-11 12:07:21.661 17649-21210/com.clavax.ultrapen I/BluetoothGatt 1: BRSP sendingtrue
  07-11 12:07:21.801 17649-17660/com.clavax.ultrapen I/BluetoothGatt 1: BRSP characteristic write 1
  07-11 12:07:21.801 17649-17660/com.clavax.ultrapen I/BluetoothGatt 1: BRSP characteristic write 2
  07-11 12:07:21.801 17649-17660/com.clavax.ultrapen I/BluetoothGatt 1: BRSP send packets
  07-11 12:07:21.801 17649-17660/com.clavax.ultrapen I/BluetoothGatt 1: BRSP bytes null
  07-11 12:07:21.901 17649-17660/com.clavax.ultrapen I/BluetoothGatt 1: BRSP characteristic change 1
  07-11 12:07:21.901 17649-17660/com.clavax.ultrapen I/BluetoothGatt 1: BRSP characteristic change 2
  07-11 12:07:21.901 17649-17660/com.clavax.ultrapen I/BluetoothGatt 1: BRSP write byte�eqInfo|PTType&gt;ORP|P
  continue.........................................
  </code></pre>
  
  <h2>2nd log</h2>
  
  <pre><code>07-11 11:42:25.451 17649-17649/com.clavax.ultrapen D/BluetoothGatt: connect() - device: 00:13:43:07:98:D4, auto: false
  07-11 11:42:25.451 17649-17649/com.clavax.ultrapen D/BluetoothGatt: registerApp()
  07-11 11:42:25.451 17649-17649/com.clavax.ultrapen D/BluetoothGatt: registerApp() - UUID=8bcbf61d-323c-46c8-b509-3f29dbcc5002
  07-11 11:42:25.491 17649-13359/com.clavax.ultrapen D/BluetoothGatt: onClientRegistered() - status=0 clientIf=8
  07-11 11:42:25.881 17649-17660/com.clavax.ultrapen D/BluetoothGatt: onClientConnectionState() - status=0 clientIf=8 device=00:13:43:07:98:D4
  07-11 11:42:25.881 17649-17660/com.clavax.ultrapen I/BluetoothGatt 1: BRSP connection created 2 0
  07-11 11:42:25.891 17649-17649/com.clavax.ultrapen D/BluetoothGatt: discoverServices() - device: 00:13:43:07:98:D4
  07-11 11:42:25.891 17649-17649/com.clavax.ultrapen D/BluetoothGatt 1: Discover Services started: true
  07-11 11:42:25.891 17649-17649/com.clavax.ultrapen I/BluetoothGatt 1:  connection created
  07-11 11:42:26.081 17649-17660/com.clavax.ultrapen D/BluetoothGatt: onClientConnParamsChanged() - Device=00:13:43:07:98:D4 interval=6 status=0
  07-11 11:42:26.541 17649-17661/com.clavax.ultrapen D/BluetoothGatt: onSearchComplete() = Device=00:13:43:07:98:D4 Status=0
  07-11 11:42:26.541 17649-17661/com.clavax.ultrapen I/BluetoothGatt 1: BRSP service discovered
  07-11 11:42:26.541 17649-17661/com.clavax.ultrapen D/BluetoothGatt: setCharacteristicNotification() - uuid: fdd6b4d3-046d-4330-bdec-1fd0c90cb43b enable: true
  07-11 11:42:26.541 17649-17661/com.clavax.ultrapen I/BluetoothGatt 1: BRSP service discovered 2
  07-11 11:42:26.551 17649-17660/com.clavax.ultrapen I/BluetoothGatt 1: BRSP description write
  07-11 11:42:26.551 17649-17660/com.clavax.ultrapen I/BluetoothGatt 1: BRSP initstate1
  07-11 11:42:26.551 17649-17660/com.clavax.ultrapen D/BluetoothGatt: setCharacteristicNotification() - uuid: 18cda784-4bd3-4370-85bb-bfed91ec86af enable: true
  07-11 11:42:26.551 17649-17660/com.clavax.ultrapen I/BluetoothGatt 1: BRSP initstate notification1true
  07-11 11:42:26.561 17649-17661/com.clavax.ultrapen D/BluetoothGatt: onClientConnParamsChanged() - Device=00:13:43:07:98:D4 interval=39 status=0
  07-11 11:42:27.051 17649-17649/com.clavax.ultrapen I/BluetoothGatt 1: l;e scanningtrue
  07-11 11:42:27.131 17649-17649/com.clavax.ultrapen I/BluetoothGatt 1: BRSP initstate write1true
  07-11 11:42:46.571 17649-17661/com.clavax.ultrapen I/BluetoothGatt 1: BRSP description write
  07-11 11:42:46.571 17649-17661/com.clavax.ultrapen I/BluetoothGatt 1: BRSP initstate2
  07-11 11:42:46.581 17649-13359/com.clavax.ultrapen D/BluetoothGatt: onClientConnectionState() - status=8 clientIf=8 device=00:13:43:07:98:D4
  07-11 11:42:46.581 17649-13359/com.clavax.ultrapen I/BluetoothGatt 1: BRSP disconnection created 0 8     ******//here is the error throw****** 
  </code></pre>
  
  <p>As in above Logs , the 1st display the data but in 2nd i got the issue of <strong>status 8</strong> , it will happen after 3 or 4 successful connection .My thought is that, If there is issue in the code then it is not given me single success connection.</p>
  
  <h2>//Bluetooth Gatt callback in BluetoothServiceClass</h2>
  
  <pre><code>@Override
      public void onConnectionStateChange(BluetoothGatt gatt, int status, int newState) {
          String intentAction;
          if (newState == BluetoothProfile.STATE_CONNECTED) {
              int inputBufferSize = 1000;
              int outputBufferSize = 1000;
              _lastRTS = 0;
              inputBufferSize = (inputBufferSize &lt; 1) ? DEFAULT_BUFFER_SIZE : inputBufferSize;
              inputBufferSize = (inputBufferSize &lt; 1) ? DEFAULT_BUFFER_SIZE : inputBufferSize;
  
              setBuffers(inputBufferSize, outputBufferSize);
  
  
              Log.i("BluetoothGatt 1", "BRSP connection created " + newState + " " + status);
              intentAction = ACTION_GATT_CONNECTED;
              mConnectionState = STATE_CONNECTED;
              broadcastUpdate(intentAction);
              // Attempts to discover services after successful connection.
  
              Log.d(TAG, "Device connected");
              new Handler(Looper.getMainLooper()).post(new Runnable() {
                  @Override
                  public void run() {
                      boolean ans = mBluetoothGatt.discoverServices();
                      Log.d("BluetoothGatt 1", "Discover Services started: " + ans);
                  }
              });
  
  
          } else if (newState == BluetoothProfile.STATE_DISCONNECTED) {
              intentAction = ACTION_GATT_DISCONNECTED;
              mConnectionState = STATE_DISCONNECTED;
              Log.i("BluetoothGatt 1", "BRSP disconnection created " + newState + " " + status);
  
              //    refreshDeviceCache(gatt);
              mBluetoothGatt.close();
  
              _initState = 0;
              _lastRTS = 0;
              _lastRTS = 0;
              setBuffers(_inputBuffer.size() + _inputBuffer.remainingCapacity(), _outputBuffer.size() + _outputBuffer.remainingCapacity());
              if (status != 8 &amp;&amp; status != 22)
                  broadcastUpdate(intentAction);
              else
                  connect(mBluetoothDeviceAddress);
              //  mBluetoothGatt.close();
          }
      }
  @Override
  public void onServicesDiscovered(BluetoothGatt gatt, int status) {
  
      Log.i("BluetoothGatt 1", "BRSP service discovered");
      BluetoothGattService brspService1 = gatt.getService(BRSP_SERVICE_UUID1);
      BluetoothGattService brspService = gatt.getService(BRSP_SERVICE_UUID);
      List&lt;BluetoothGattService&gt; brspservices = getSupportedGattServices();
  
      if (brspService != null) {
          // Call the first write descriptor for initializing the BRSP
          // serrvice.
          mBluetoothGatt.setCharacteristicNotification(brspService.getCharacteristic(BRSP_RTS_UUID), true);
          BluetoothGattDescriptor RTS_CCCD = brspService.getCharacteristic(BRSP_RTS_UUID).getDescriptor(
                  UUID.fromString("00002902-0000-1000-8000-00805f9b34fb"));
          RTS_CCCD.setValue(BluetoothGattDescriptor.ENABLE_INDICATION_VALUE);
          mBluetoothGatt.writeDescriptor(RTS_CCCD);
  
          Log.i("BluetoothGatt 1", "BRSP service discovered 2");
      }
  }
  
  @Override
  public void onCharacteristicRead(BluetoothGatt gatt,
                                   BluetoothGattCharacteristic characteristic,
                                   int status) {
      Log.i("BluetoothGatt 1", "BRSP characteristic read 1");
      if (_initState &lt; _initStepCount) {
          doNextInitStep();
      }
      if (characteristic.getUuid().equals(BRSP_INFO_UUID)) {
          characteristic.getIntValue(BluetoothGattCharacteristic.FORMAT_UINT8, 1);
          Log.i("BluetoothGatt 1", "BRSP characteristic read 2");
      }
  }
  
      @Override
      public void onCharacteristicWrite(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic, int status) {
          super.onCharacteristicWrite(gatt, characteristic, status);
  
          Log.i("BluetoothGatt 1", "BRSP characteristic write 1");
          if (_initState &lt; _initStepCount) {
              doNextInitStep();
          }
          if (characteristic.getUuid().equals(BRSP_RX_UUID)) {
              if (status == BluetoothGatt.GATT_SUCCESS) {
            /*      _lastBytes = null;
                  if (_outputBuffer.isEmpty())
                      _brspCallback.onSendingStateChanged(Brsp.this);*/
                  Log.i("BluetoothGatt 1", "BRSP characteristic write 2");
              }
              _sending = false;
              sendPacket();
              // debugLog("RX characteristic wrote");
          } else if (characteristic.getUuid().equals(BRSP_MODE_UUID)) {
              characteristic.getIntValue(BluetoothGattCharacteristic.FORMAT_UINT8, 0);
              Log.i("BluetoothGatt 1", "BRSP characteristic write 3");
              _outputBuffer.clear();
              String intentAction = ACTION_Eco_Send;
              broadcastUpdate(intentAction);
          }
          if (status != 0) {
              if (status == 15) {
                  // Can't figure out a fix to the pairing issues as of yet
                  // _gatt.getDevice().createBond();
                  // TODO: Resend last write once bonded?
              }
          }
      }
  
      @Override
      public void onDescriptorRead(BluetoothGatt gatt, BluetoothGattDescriptor descriptor, int status) {
          Log.i("BluetoothGatt 1", "BRSP description read");
          if (_initState &lt; _initStepCount) {
              doNextInitStep();
          }
          super.onDescriptorRead(gatt, descriptor, status);
      }
  
      @Override
      public void onDescriptorWrite(BluetoothGatt gatt, BluetoothGattDescriptor descriptor, int status) {
          Log.i("BluetoothGatt 1", "BRSP description write");
          if (_initState &lt; _initStepCount) {
              doNextInitStep();
          }
          super.onDescriptorWrite(gatt, descriptor, status);
      }
  
      @Override
      public void onCharacteristicChanged(BluetoothGatt gatt,
                                          BluetoothGattCharacteristic characteristic) {
  
          Log.i("BluetoothGatt 1", "BRSP characteristic change 1");
  
          if (_initState &lt; _initStepCount) {
              doNextInitStep();
          } else {
              if (characteristic.getUuid().equals(BRSP_TX_UUID)) {
                  Log.i("BluetoothGatt 1", "BRSP characteristic change 2");
  
                  broadcastUpdate(ACTION_DATA_AVAILABLE, characteristic);
              } else if (characteristic.getUuid().equals(BRSP_RTS_UUID)) {
                  Log.i("BluetoothGatt 1", "BRSP characteristic change ");
                  _lastRTS = characteristic.getIntValue(BluetoothGattCharacteristic.FORMAT_SINT8, 0);
              }
          }
      }
  };
  
  
  
    private void doNextInitStep() {
          _initState++;
          // debugLog("initState:" + _initState);
          Log.i("BluetoothGatt 1", "BRSP initstate" + _initState);
          BluetoothGattService brspService = mBluetoothGatt.getService(BRSP_SERVICE_UUID);
          if (brspService == null)
              Log.i("BluetoothGatt 1", "BRSP brsp service null");
  
          switch (_initState) {
              case 1:
                  boolean initstateNotification = mBluetoothGatt.setCharacteristicNotification(brspService.getCharacteristic(BRSP_TX_UUID), true);
                  Log.i("BluetoothGatt 1", "BRSP initstate notification" + _initState + initstateNotification);
                  final BluetoothGattDescriptor TX_CCCD = brspService.getCharacteristic(BRSP_TX_UUID).getDescriptor(
                          UUID.fromString("00002902-0000-1000-8000-00805f9b34fb"));
                  TX_CCCD.setValue(BluetoothGattDescriptor.ENABLE_INDICATION_VALUE);
                  Log.d(TAG, "Device connected");
                  new Handler(Looper.getMainLooper()).postDelayed(new Runnable() {
                      @Override
                      public void run() {
                          boolean initstatewrite = mBluetoothGatt.writeDescriptor(TX_CCCD);
                          Log.i("BluetoothGatt 1", "BRSP initstate write" + _initState + initstatewrite);
                      }
                  }, 500);
                  break;
              case 2:
                  final BluetoothGattCharacteristic brspInfo = brspService.getCharacteristic(BRSP_INFO_UUID);
                  new Handler(Looper.getMainLooper()).post(new Runnable() {
                      @Override
                      public void run() {
                          boolean initstateread = mBluetoothGatt.readCharacteristic(brspInfo);
                          Log.i("BluetoothGatt 1", "BRSP initstate read" + _initState + initstateread);
                      }
                  });
  
                  break;
              case 3:
                  setBrspMode(BRSP_MODE_DATA); // Important: Make sure this is the
                  // last init step
                  break;
              default:
                  break;
          }
          if (_initState == _initStepCount) {
              // _brspState = BRSP_STATE_READY;
              // _brspCallback.onBrspStateChanged(this);
          }
      }
  </code></pre>