cancel
Showing results for 
Search instead for 
Did you mean: 

PTC v60 - 1-2 second input lag with Bluetooth LE devices.

PyryVuorelaHiab
Protege

Hi,

I updated two of my Meta Quest 2 devices to PTC v60 version today and noticed that connected Bluetooth devices (BLE) have huge input delay lag. Earlier today the Bluetooth connection worked fine on these devices on V59. The input lag is between 1-2 seconds when Bluetooth controller is connected. I have tried to factory reset the headsets but the issue still persist. I have also third Meta Quest 2 device which still has V59 on it and the Bluetooth controllers work correctly on that one. 

This is a huge issue since it makes Bluetooth controllers not usable at all which is key functionality in our application. Please try to fix this before releasing V60.

Version: 60.0.0.107.366.536455832
Runtime version: 60.0.0.107.366.536455903

I tried to figure out what exactly is the issue and created an application that connects to the Bluetooth device. When tried to read data from the BLE device it took 1000-3000ms to receive the data in Meta Quest 2 V60. I tested this on Meta Quest 2 V59 and there the response was instant. Below is the code that I used to connect and read the Bluetooth device data and the logs from V60 Meta Quest 2 device from when the read operation started to when it finished.

---Code---

public void ConnectToDevice(String deviceAddress)
{
if(_isConnected) {
return;
}

BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();

BluetoothDevice device = adapter.getRemoteDevice(deviceAddress);

device.connectGatt(this, false, mGattCallback);
}

public void ReadData() {
if(_isConnected == false) {
return;
}

_bluetoothGatt.readCharacteristic(_characteristic);
}

private final BluetoothGattCallback mGattCallback = new BluetoothGattCallback() {
@Override
public void onConnectionStateChange(BluetoothGatt gatt, int status, int newState) {

if (newState == BluetoothProfile.STATE_CONNECTING) {
_isConnecting = true;
}
else if(newState == BluetoothProfile.STATE_CONNECTED){
_isConnecting = false;
_bluetoothGatt = gatt;
gatt.discoverServices();
OnConnected(gatt.getDevice().getAddress());
}
else if(newState == BluetoothProfile.STATE_DISCONNECTING){
_isConnecting = false;
}
else if(newState == BluetoothProfile.STATE_DISCONNECTED){
_isConnecting = false;
_bluetoothGatt = null;
OnDisconnected(gatt.getDevice().getAddress());
gatt.close();
}
}

@Override
public void onCharacteristicRead(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic, int status) {
String value = Arrays.toString(characteristic.getValue());
UnityPlayer.UnitySendMessage("BluetoothLEController","Info", value);
}
};

 

0 REPLIES 0