You need to implement the following properties in each device:
kAudioDevicePropertyDeviceCanBeDefaultDevice = 'dflt',
// a UInt32 where 0 means that the device cannot be selected as the default
// device and 1 menas that it can. The isInput argument selects which kind
// of default device is being queried.
kAudioDevicePropertyDeviceCanBeDefaultSystemDevice = 'sflt',
// a UInt32 where 0 means that the device cannot be selected as the default
// system device and 1 menas that it can. The isInput argument selects which
// kind of default system device is being queried. Note that this property can
// only be queried for output.
In addition, the HAL shell adds other restrictions including (but not limited to) disallowing non-mixable devices as well as non-linear PCM devices.
I implement both properties, my device is mixable and linear PCM.