I think perhaps the AVAudioSession needs to be set to active when calls are made to channelData.reconfigure(…) … otherwise, it appears the input channels are not correctly identified and made available on all iOS devices.
I changed this in the iOSAudioIODevice::Pimpl constructor and open methods, and it seems to now work.
// We need to activate the audio session here to obtain the available sample rates and buffer sizes,
// but if we don't set a category first then background audio will always be stopped. This category
// may be changed later.
setAudioSessionCategory (AVAudioSessionCategoryPlayAndRecord);
setAudioSessionActive (true);
updateHardwareInfo();
//setAudioSessionActive (false); //jvm
channelData.reconfigure ({}, {});
setAudioSessionActive (false); //jvm
sessionHolder->activeDevices.add (this);
}