Trouble with Bluetooth pairing

I’ve created an application with a Bluetooth LinkLossService (that’s currently they only thing it advertises). I can pair with my device from Linux, and it stays connected (until I disconnect it). It I pair from Windows 10, it pairs, but then disconnects after a second or two (no reason given; just “User Disconnection”). On IOS, the device does not even show up as something I can pair with.

So, clearly I have an “insufficient algorithm” error. But (being new to BT, and to Mbed OS), I don’t even know where to look or what to Google for. Here’s my environment:

Mbed OS 6.15.1
Mbed Studio 1.4.3 (I’m running on Windows 10)
Sparkfun Artemis Nano (which uses an Ambiq Apollo 3 Blue processor)
The LinkLossService from the experimental BLE services repo (main branch)

I can capture trace info from Mbed OS, but nothing obvious jumps out to my untrained eye. What I want is a device that I can pair with a phone, and the device can tell when the link is lost (like, when the phone goes out of range), and the device and phone will automatically reconnect when the phone moves back in range. I don’t need to exchange any data. Can anyone point me in the right direction? At least with figuring out why the three different Central devices (Linux, Windows, and IOS) behave so differently with the same peripheral device?