Controllers get disconnected because they fail an authentication check that Microsoft broke at some point in time. Some people are unable to obtain newer recoveries because they simply do not have contacts or access to a GDN account, and are stuck on one of these broken recoveries
Patch RgcSecAuthenticateDeviceAsyncStateMachine + 0x704 (should be a bge
instruction, where if cr6
-- the result of r11 >= r10
-- then the authentication succeeds) so that this always branches to the "successful" block of code leaving the auth fail code as simply dead, unreachable code.