Тот факт, что время ожидания истекает через 30 секунд и отключается с ошибкой 22 (локальное устройство разорвало соединение) указывает на то, что периферийное устройство не ответило в течение 30 секунд, как того требует стандарт GATT. Вы должны отладить периферийное устройство, чтобы найти причину.
Причина, по которой он работает в nRF Connect, может заключаться в том, что предыдущий отправленный / полученный GATT перевел периферийное устройство в другое состояние.
Вы можете проверить журнал HCI в Android, чтобы увидеть все необработанные пакеты, чтобы, возможно, выяснить, что происходит.