@tony Android's Bluetooth team messed up the update to Android 9. The cached GATT db structure is erased for bonded devices after the update, so the API gives an empty list of GATT services, making it impossible to communicate with the GATT characteristics. The only way to make it work again seems to be to unbond the Bluetooth device from the system and then bond again.
@jhoward15 we migrated the latest app to the new permission system where the user explicitly needs to accept permissions at runtime. For old actions you need to simply re-save the action.