What's a reliable way to check for collision normals of surfaces(with a character controller) within Update() cycles?

I am trying to build movement with my character controller and i obviously need to check for surface normals to do that but OnControllerColliderHit method calls in sync with the Physics cycles and not the normal Update() frame cycles as i want them, Since that’s how i plan to implement everything from groundchecks to all the physics, is there a way to reliably check for collisions and collision normals with a character controller in the Update() cycles?

How about ComputePenetration? Ideal if you are making custom physics. Unity - Scripting API: Physics.ComputePenetration