• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: Forcing AppleUSBAudio to add PassThru mute and volume controls
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Forcing AppleUSBAudio to add PassThru mute and volume controls


  • Subject: Re: Forcing AppleUSBAudio to add PassThru mute and volume controls
  • From: Brett George <email@hidden>
  • Date: Wed, 31 Jul 2013 22:44:53 -0700

There is not currently a way to do this through AppleUSBAudio. I would encourage you to file a bugreport requesting this feature.
In the short-term, you could send vendor specific commands to the USB device in order to achieve the same functionality. However, this would only be accessible from your custom application.

Brett.


On Jul 20, 2013, at 8:11 PM, email@hidden wrote:

Hello,

I'm working with some USB audio chipsets that support hardware play-through (a.k.a. side-tone or direct-monitoring). The problem is that AppleUSBAudio.kext doesn't map these chipsets' playthrough mute or volume selectors to the expected "passthru" CoreAudio IOAudioControl objects, making those controls inaccessible from the HAL.

I'm assuming it's because these chipsets' published audio topologies differ from what AppleUSBAudio wants to see as detailed in tn2274: Control Publishing Rules. Unfortunately I have no control over this aspect of the chipset.

I do however know which feature unit on the device contains the playthrough mute and volume selectors (in the case of the attached USB Prober output file, that would be unit ID #2), and I can actually force playthrough to activate by performing a specially-crafted IOUSBDevRequest upon calling USBInterfaceOpen from userspace IOKit. This works, but seems to completely remove the device from CoreAudio, making it inaccessible by other applications for at least 5-10 seconds and often permanently.

Is there a way to make the playthrough feature unit more easily accessible by somehow tricking AppleUSBAudio driver into adding mute and volume controls for it — for example, by using a codeless kext as in the SampleUSBAudioOverrideDriver project? (In that case, which properties would be relevant?) Or could a HAL plugin like the SampleDriverPlugin project do this?

Or should I instead try to provide an alternate interface to the feature unit myself, performing that same USB request from kernel space? E.g., calling it from within an AppleUSBAudioPlugin kext (a la the SampleUSBAudioPlugin project)? In that case, is there a way to piggy back on the IOAudioEngineUserClient used by the HAL in order to get my playthrough on/off notifications from userspace apps into the kext?

Thanks very much in advance!

Best,

Zachary Schneirov
Do not post admin requests to the list. They will be ignored. Coreaudio-api mailing list (email@hidden) Help/Unsubscribe/Update your Subscription: This email sent to email@hidden
  • Prev by Date: Re: Truncating an audio file
  • Previous by thread: Re: Truncating an audio file
  • Index(es):
    • Date
    • Thread