I had the hardest time trying to understand what was going on:
I had created a player controller BP manually, using the default Player Controller class.
I set my game mode settings in the editor -> project defaults, there are two player controller options listed in the gamemode->player controller roll out. One teal, one white.
I ended up selected the wrong one and of course, none of my player controller casts/interfacing would work because it kept returning none. Finally on a complete guess I switched the player controller to the teal option. Now everything works fine.
So I would suggest that when naming new instances of the basic classes, like pawn/hud etc that duplicating the default names should be disallowed. It’s just insanely confusing. The extra mile would be to rename the default classes with the prefix DEFAULT_ so it’s really obvious when browsing the roll outs which class is which.