Studio Initialize returns FMOD_ERR_NEEDSHARDWARE on Huawei Android hardware

The call to initialize the studio::system layer on various Huawei tablets on Android such as the P20 are returning FMOD_ERR_NEEDSHARDWARE. We’re using API version 1.08.14. I think that we’re initializing FMOD in about the most generic way possible so I’m surprised what could be going wrong.

Here’s a bit of pseudocode to show you how FMOD is initialized in our app:

if(FMOD::Studio::System::create(&m_fmod_studio)) != FMOD_OK)
	return false;

if(m_fmod_studio->getLowLevelSystem(&m_fmod_system)) != FMOD_OK)
	return false;

FMOD_STUDIO_INITFLAGS studioFlags = FMOD_STUDIO_INIT_NORMAL;
if(m_fmod_studio->initialize(512, studioFlags, FMOD_INIT_NORMAL|FMOD_INIT_3D_RIGHTHANDED, 0)) != FMOD_OK)
	return false;

Are you able to provide the log output at all?
The logs should be able to provide more information about the hardware.

What kind of logs? Like, from the logging version of the FMOD dlls or something from our app itself?

Yes, the logging version of the FMOD dlls should provide all the information we need.

I bought one of these devices to test on. I should note that sound worked fine with Android 8 (oreo) and stopped working with the phone updated to Android 9.1 (Pie).

Here’s the log output at the call to Studio’s Initialize:

I/fmod: System::create : Header version = 1.08.14. Current version = 1.08.14.
I/fmod: FMOD::supportsLowLatency : Low latency = false, Pro Audio = false, Acceptable Block Size = true (960)
I/fmod: SystemI::init : FMOD Studio Version: 00010814 (80900)
I/fmod: SystemI::init : maxchannels = 512, flags = 00030004, extradriverdata = 0x0
I/fmod: SystemI::close :
I/fmod: SystemI::close : Stop all sounds
I/fmod: SystemI::close : done.
E/fmod: FMOD_OS_Init : Could not detect floating point hardware, cannot continue.
I/fmod: LiveUpdate::release :
I/fmod: LiveUpdate::reset : Reset connection (reason Disconnected)
E/FMOD: soun_fmod.cpp(106): FMOD error 41 - Tried to use a feature that requires hardware support.

I also found this thread which seems to be the same issue though I’m not sure what “flags and checks” you were referring to then. [Android] "Could not detect floating point hardware"

It looks like the fix for that issue went out in version 1.08.24.

Oh excellent! And that would be compatible with 1.08.14 right? I’m a bit embarrassed I didn’t check for updates. I had assumed you moved on to the newer API when I last updated.

The 1.08.24 API will work with banks built from 1.08.14, if that is what you mean?

Yes. Though I assume I should just get 1.08.30?

That would work too, the changes after 1.08.24 have all been SDK updates, as we try not to touch 1.08 any more unless absolutely necessary.