Switching between FreeCamera and DeviceOrientationCamera

Quaternion will have precedence. If you set a value to Rotation while Quaternion is set, it will be added to it. But I highly recommend to only use one of them and set the other to null

The main issue here is that the deviceOrientationCamera needs to keep track of the initial rotation (the one in place when the system received the first device orientation event). Maybe you could try to dispose the camera and recreate a fresh new one?