Actually, we have problems with controllers too and it’s not related to Apple at all. We made our own driver since Occipital’s only runs on iOS which makes it impossible to test your stuff as you build it in Unity. The problem is in the BLE implementation as far as I know. We can discover the device, connect to it, discover its services and subscribe to characteristics (battery and 0xF001 for device updates). As soon as we do it, the device usually disconnects, it almost seems like it’s not ready yet to serve data. Then we need to rediscover it all over again and this usually repeats up to 4 times before we can successfully read updates.
There are a few strange things in the BLE implementation that suggest it hasn’t been done/understood very well. First of all, you advertise service names 0xF001 but then provide one named 0xF00. This is a plausible confusion of characteristic and service IDs. Not a big deal, not causing the disconnects, just strange.