Zoom App asks for Admin credentials when trying to share computer audio

bmgsupport
New Contributor II

As you might know, zoom works perfectly when doing media sharing while you have a web conference.
Her now my issue:

When I try screen sharing and select "Share computer sound" (on the picture, lower left corner), it will ask the very first when doing this for admin credentials. Do you know how can grant the app the respective permissions in order to have working right away without asking for admin rights?

Thanks for your support.
Thomas

50de6a5ac5d04bac8682436157a2610f

35 REPLIES 35

bmgsupport
New Contributor II

I was able to track down the problem to an audio device which needs to get installed. So my question changes now to:

a) how do I get this audio device installed via Jamf?
or
b) how can make it happen that the Zoom app does not need admin rights in order to install the audio device?

Thanks
Thomasd3b956efe0cc486db64232b5d52a16c7

Travid
New Contributor II

Are you installing the Zoom Client for IT Admins? IT installs with Admin rights.
Mass Deployment With Preconfigured Settings For Mac

Dave

devlinford
New Contributor III

Hey @bmgsupport ,

Did Zoom for IT deployment help? I don't see any flags in this .plist about allowing audio?

Thanks,

Dev

petestanley
New Contributor III

Did anyone figure out how to set/install this audio device via Jamf? Seems to be an issue when deploying the Zoom IT package via patch management.

https://support.zoom.us/hc/en-us/articles/115001799006-Mass-Deployment-with-Preconfigured-Settings-for-Mac

petestanley
New Contributor III

So I figured this out.
The audio driver lives in /Library/Audio/Plug-Ins/HAL/ once installed. They distribute it with the application in /Applications/zoom.us.app/Contents/PlugIns/ZoomAudioDevice.driver.

When you supply your admin password, it looks to be simply copying the driver from the /Applications directory in to the HAL directory. You can push out the driver via MDM with

sudo cp -R /Applications/zoom.us.app/Contents/PlugIns/ZoomAudioDevice.driver /Library/Audio/Plug-Ins/HAL/

Doing this will allow audio to share correctly and users won't be prompted for admin credentials. No idea why Zoom doesn't put this in their documentation. 593c9db64051420eb4b8202beb0209d3

Kyle_vdk
New Contributor II

Currently working on this issue as well with a deployment to my users. We are using RingCentral Meetings which is run on the Zoom platform so replace Zoom with anywhere you see RingCentral.

The RingCentral Drivers are located in /Applications/RingCentral Meetings.app/Contents/PlugIns/ZoomAudioDevice.driver which needs to be copied to the /Library/Audio/Plug-Ins/HAL/ directory.

Same cp command as above
sudo cp -r /Applications/RingCentral Meetings.app/Contents/PlugIns/ZoomAudioDevice.driver /Library/Audio/Plug-Ins/HAL/

The only problem with this is you have to reboot to get it working. You can solve that by killing coreaudiod process, but then also you have to restart RingCentral Meetings/Zoom so I added a command to kill RingCentral Meetings.

If you would like to avoid rebooting use the commands:
sudo kill $(ps -eaf | grep "RingC" | grep -v grep | awk '{print $2}')
sudo killall coreaudiod

Then open RingCentral Meetings again and you should be good to go.

petestanley
New Contributor III

Nice share Kyle_vdk . I just set the policy to run once at login as I don't want to inadvertently kill the app in case a user is in a meeting. Alternatively, could limit to outside of known business hours.

supersizeal
Contributor

I ran the command and it did copy the HAL folder over but it still asks me for the admin credentials even after a reboot.

Am I missing a step?

supersizeal
Contributor

It looks like the permission did not take so I changed it to RnW for everyone and now it is working.

supson
New Contributor III

@supersizeal - Was all you needed to change, is the -RnW in the command? or do you need "everyone" in there somewhere?

Also, @Kyle_vdk - Can I simply change "RingC" to "zoom" or should it be "zoom.us"?

supersizeal
Contributor

I set Everyone RnW permissions and then I used composer to build the pkg.

bmn
New Contributor

I'm testing an zoom.us on MacOS 10.15.5 and have the some isue with the prompt for Admin credentials when sharing with computer audio.
For me it seems to work with a script based on the suggestion from 'Kyle_vdk' sudo cp -r /Applications/RingCentral Meetings.app/Contents/PlugIns/ZoomAudioDevice.driver /Library/Audio/Plug-Ins/HAL/
But the kill & kill all comands didn't work for me - as long as I did a reboot. So I figured that I can avoid the reboot reloadinf the kernalextensions using the following commands:
sudo kextunload /System/Library/Extensions/AppleHDA.kext
sudo kextload /System/Library/Extensions/AppleHDA.kext
It may be a good option to use both in an if-clouse prrofing that there is no ZoomAudioDevice.driver like
if [[ ! -e /Library/Audio/Plug-Ins/HAL/ZoomAudioDevice.driver ]]; then sudo kextunload /System/Library/Extensions/AppleHDA.kextsodo kextload /System/Library/Extensions/AppleHDA.kext sudo kextunload /System/Library/Extensions/AppleHDA.kext sudo kextload /System/Library/Extensions/AppleHDA.kext
fi

ChrisTech
Contributor

This seemed to work for me:

#!/bin/sh
cp -R /Applications/zoom.us.app/Contents/PlugIns/ZoomAudioDevice.driver /Library/Audio/Plug-Ins/HAL/
sudo killall coreaudiod

newvisions
New Contributor II

@ChrisTech This worked for me

McLeanSchool
New Contributor III

I'm still having issues with this problem. I put the script from @ChrisTech in Self Service that users have to manually kick off to fix the issue, which does work.

My problem is that previously, I was using the following script to automatically push out Zoom updates: https://gist.github.com/talkingmoose/5336e69480d87014a4c2ea1d6ec0ea4e
That script worked perfectly, even if the user was actively running a Zoom session, Zoom would just prompt the user to restart Zoom to finish the update, but they had the option to cancel the Zoom restart in case they were in the middle of teaching class. Now, that update removes the ZoomAudioDevice.driver from /Library/Audio/Plug-Ins/HAL/, putting us back at square one and the user then has to manually go to Self Service and run the @ChrisTech script again.

I've tried adding the script lines

#!/bin/sh
cp -R /Applications/zoom.us.app/Contents/PlugIns/ZoomAudioDevice.driver /Library/Audio/Plug-Ins/HAL/
sudo killall coreaudiod

to the Zoom update script (https://gist.github.com/talkingmoose/5336e69480d87014a4c2ea1d6ec0ea4e) but it still prompts for admin credentials when you try to share audio. It seems like the problem with the audio driver getting deleted still exists in the latest Zoom version 5.4.9.

Basically, I'm left with not being able to automatically push out Zoom updates, instead my users will have to manually install the update from Zoom in Self Service, then open the Zoom app, and finally manually run the audio driver fix script from Self Service.

Any ideas? This is the combined script:

#!/bin/zsh

:<<'ABOUT_THIS_SCRIPT'

Written by:William Smith Professional Services Engineer Jamf bill@talkingmoose.net https://gist.github.com/talkingmoose/5336e69480d87014a4c2ea1d6ec0ea4e Originally posted: March 21, 2020 Purpose: Downloads and installs the latest available Zoome Client for Mac directly on the client. This avoids having to manually download and store an up-to-date installer on a distribution server every month. Instructions: Optionally update the sha256Checksum value with a known SHA 256 string. Run the script with elevated privileges. If using Jamf Pro, consider replacing the sha256Checksum value with "$4", entering the checksum as script parameter in a policy. Except where otherwise noted, this work is licensed under http://creativecommons.org/licenses/by/4.0/ "Do not obey in advance."

ABOUT_THIS_SCRIPT # temporary file name for downloaded package pkgFile="Zoom.us.pkg" plistfile="us.zoom.config.plist" # this is the full download URL to the latest version of the product # https://support.zoom.us/hc/en-us/articles/115001799006-Mass-Deployment-with-Preconfigured-Settings-for-Mac url="https://zoom.us/client/latest/ZoomInstallerIT.pkg" # create temporary working directory echo "Creating working directory '$tempDirectory'" workDirectory=$( /usr/bin/basename $0 ) tempDirectory=$( /usr/bin/mktemp -d "/private/tmp/$workDirectory.XXXXXX" ) # change directory to temporary working directory echo "Changing directory to working directory '$tempDirectory'" cd "$tempDirectory" # create plist file echo "<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>ZAutoUpdate</key> <false/> </dict> </plist>" >> us.zoom.config.plist # download the installer package echo "Downloading package $pkgFile" /usr/bin/curl "$url" --location --silent --output "$pkgFile" # run the installer package /usr/sbin/installer -pkg "$pkgFile" -target / # remove the temporary working directory when done /bin/rm -Rf "$tempDirectory" echo "Deleting working directory '$tempDirectory' and its contents" # fix audio driver bug introduced by 5.4.7+ cp -r /Applications/zoom.us.app/Contents/Plugins/ZoomAudioDevice.driver /Library/Audio/Plug-Ins/HAL/ killall coreaudiod exit $exitCode

indeskize
New Contributor II

@McLeanSchool i have the same issue and i am not good at scripting so i just made the update policy run 2 scripts. I have the updater run then the audio install in the same policy.

McLeanSchool
New Contributor III

@indeskize I didn't even think about putting both scripts in a single policy, good idea! I'll give that a try and see if it works.

russeller
Contributor III

Hey @McLeanSchool

I monitored what was modified when we enter admin creds for the zoom audio driver. It looks like it copies that directory (as you know) and it also modifies this plist:

/Library/Preferences/Audio/com.apple.audio.SystemSettings.plist

You can see it creates a new aggregate audio device that you can see in the /Applications/Utilities/Audio MIDI Setup.app utility (in screenshot). Could it be that zooms installer used to add this audio device during the package install process while it had admin rights and now it doesn't? I'm not going to try and edit that com.apple.audio.SystemSettings.plist preference file.

9ba2c89b970944efb5d02d8fafff5d14

atomczynski
Valued Contributor

I was working with

#!/bin/sh
cp -R /Applications/zoom.us.app/Contents/PlugIns/ZoomAudioDevice.driver /Library/Audio/Plug-Ins/HAL/
sudo killall coreaudiod

last night and on one machine needed to restart the computer to gain the share audio functionality.

atomczynski
Valued Contributor

I'm seeing some machines where the script completes (copies the files) however the ZoomAudioDevice does not show up in the list of Audio Devices.

a restart does not fix, however if I run the script the second time then the audio device is shown.

Thoughts?

supersizeal
Contributor

Anyone know how to enable the Optimize for Video Clip option without asking for Admin credentials?

jonw
Contributor

@atomczynski I found that simply 'killall coreaudio' was hit or miss as you've noticed. I replaced 'killall coreaudio' with this function (slightly tweaked concept I pulled from a Zoom installer post-install script). Take it with a grain of salt, but so far it's been working well for me.

### Add function to your script
function kill_coreaudiod()
{
#   Set variable to all PIDs of /usr/sbin/coreaudiod
#   --invert-match to remove PID for the grep command itself
    coreaudiod_pid=$( ps -ax -o pid -o command | grep "/usr/sbin/coreaudiod" | grep --invert-match grep | awk '{print $1}' )

    for each_pid in $coreaudiod_pid
    do
        if [[ $each_pid -gt 0 ]] 
        then
            kill -9 $each_pid
        fi
    done
}
### replace 'killall coreaudio' with call to function
    kill_coreaudiod

jonw
Contributor

fwiw, here's my full script... obviously test & use at your own risk!

#!/bin/bash

### Zoom audio device driver repair
### 2021.01.15 JW

### There is a packaging or broken script issue in recent Zoom installer(s?)
### where /Library/Audio/Plug-Ins/HAL/ZoomAudioDevice.driver is either broken or failing to install. 
### Either way, users are being prompted for admin pass to install the audio driver when attempting to share desktop or videos 'with sound'
### This should hopefully resolve, though resetting coreaudio sometimes seems hit or miss, take with a grain of salt.

### more details found here (see dates 2021.01.11)
### https://www.jamf.com/jamf-nation/discussions/27069/zoom-app-asks-for-admin-credentials-when-trying-to-share-computer-audio


### if this is part of a re-install, let's give installer a few extra seconds to finish up
sleep 10


### concept below pulled from factory ZoomInstallerIT.pgk post-install script:
### However an issue I see is coreaudiod was not reliably being reset, 
###  I reworked Zoom's method for grabbing PID and it seems to work much better now! -JW
### Note an easy clue as to whether this is working or not is to have open /Applications/Utilities/Audio MIDI Setup...
### ...if the ZoomAudioDevice loads we're golden... otherwise back to the drawing board.

function kill_coreaudiod()
{
#   Set variable to all PIDs of /usr/sbin/coreaudiod
#   --invert-match to remove PID for the grep command itself
    coreaudiod_pid=$( ps -ax -o pid -o command | grep "/usr/sbin/coreaudiod" | grep --invert-match grep | awk '{print $1}' )

    for each_pid in $coreaudiod_pid
    do
        if [[ $each_pid -gt 0 ]] 
        then
            kill -9 $each_pid
        fi
    done
}
AudioPluginPath=/Library/Audio/Plug-Ins/HAL
audioPluginfile=/Applications/zoom.us.app/Contents/Plugins/ZoomAudioDevice.driver

st=$(kextstat -b zoom.us.ZoomAudioDevice | grep zoom.us.ZoomAudioDevice 2>&1)

if [[ $st = *zoom.us.ZoomAudioDevice* ]] ; then
    echo "audio device is loaded, skipping"
    exit 1
else
    #(re)install audio driver
    if [[ -d "$AudioPluginPath/ZoomAudioDevice.driver" ]]; then
        rm -rf "$AudioPluginPath/ZoomAudioDevice.driver"
    fi

    cp -rf "$audioPluginfile" "$AudioPluginPath"

    ### reset coreaudiod ...see function & notes on Audio MIDI setup
    kill_coreaudiod
    sleep 5
fi

JasonAtCSUMB
Contributor

Your suggestions were really helpful. I cleaned up the function and corrected syntax.

function kill_coreaudiod()
{
#   Set variable to all PIDs of /usr/sbin/coreaudiod
#   --invert-match to remove PID for the grep command itself
    coreaudiod_pid=$( ps -ax -o pid -o command | grep "/usr/sbin/coreaudiod" | grep --invert-match grep | awk '{print $1}' )

    for each_pid in $coreaudiod_pid
    do
        if [[ $each_pid -gt 0 ]] 
        then
            kill -9 $each_pid
        fi
    done
}

When comparing int values, use -gt -lt -eq. The > character is for string values. It may work here, but I wouldn't chance it. Correct way to use for X in Y is to to call out the $coreaudiod_pid variable. Iterate through $each_pid, not coreaudiod_pid

jonw
Contributor

@jfilice_at_csumb Much cleaner, thanks! I've updated my script above for anyone reading along. I see the latest Zoom installer is once again correctly updating the ZoomAudioDevice.driver, so hopefully this script is no longer necessary (but just in case...). Thanks again!

petestanley
New Contributor III

@jonw thanks for the update. Off the back of your comment, I have also tested the enterprise installation package and now seeing it's no-longer prompting for admin credentials when sharing audio for the first time after install/update.

Great to see the installer does the work for us!

JM
New Contributor II

@petestanley I took over apple / jamf duties very recently. Yesterday I started getting tickets for this same issue.  Can you walk me thru how this was resolved? It's happing in Big Sur, Catalina. Zoom.us 5.9.3 (4239) is the version installed.

Thank you!

The short answer is you need to install the ZoomAudioDevice.driver  (zoom.us.app/Contents/Plugins/ZoomAudioDevice.driver) into /Library/Audio/Plug-Ins/HAL/. Then restart /usr/sbin/coreaudiod. 

I accomplished this by building a custom PKG: Extracted the ZoomAudioDevice.driver from ZoomInstallerIT.pkg  and post install script based on jonw to kill/restart coreaudiod. 

 

If you haven't tried it, I highly recommend Suspicious Package for inspecting packages and extracting components.

 @JasonAtCSUMB @JM 
What Jason said.  Suspicious Package is the best!  Thought to be honest, I've not bundled my own script lately as Zoom eventually fixed the issue and I've had no complaints... either that or my previously deployed copies of /Library/Audio/Plug-Ins/HAL/ZoomAudioDevice.driver are simply holding down the fort?  I'd have to do some blank slate testing to find out if they broke their post-install script again.  One other minor tidbit is I always deploy the ZoomInstallerIT.pkg (not the one from the big DOWNLOAD button on their site).  Good luck!  

JM
New Contributor II

Good morning gentleman, 

I'm still unable to install 

zoom.us.app/Contents/Plugins/ZoomAudioDevice.driver) into /Library/Audio/Plug-Ins/HAL/. 

 

Any thoughts? Am I missing something? 

 

Thank you!

 

jonw
Contributor

@JM What did you try?  As Jason mentioned above, all it boils down to is that the driver gets into /Library/Audio/Plug-Ins/HAL by whatever means necessary & that coreaudiod is restarted in order to load the driver.  

I just tested a hand install of the latest ZoomInstallerIT.pkg 5.9.3 (4239) and it does indeed install the driver, so no workarounds should be necessary.  I tested my script as well (again I'm no longer using it) and it's still functioning in Big Sur.  Are you positive you're downloading the 'ZoomInstallerIT.pkg' not 'Zoom.pkg' ?

JM
New Contributor II

@jonw Yes I have pushed out the driver from Jamf following normal process 1st. I then pushed out the script. Nothing happened. I then after 45 min or so I pushed out the ZoomInstalledIT.pkg thinking done deal it should work. Still nothing. I'm thinking the device should be removed from the "scope" or flushed out of a cache, something similar to how you would remove a device from SCCM in order to get an install to work after a failed attempt. 

jonw
Contributor

@JM I'm sorry I can't help with your Jamf config & deployment issues, but what I can definitively say is the current ZoomInstallerIT.pkg 5.9.3 (4239) is working as intended at the moment.  No script and no extracted driver workaround or any other monkey business required.  Hang in there, you'll work it out I'm sure!  Just use this installer (see pic) found here: https://zoom.us/download

ZoomInstallerIT.jpg

bcrockett
Contributor III

Greetings,

I am using the script below with the standard zoom installers.

On zoom Version 5.6.4 (765) standard and M1

and it is working for my fleet. Staff sign into the app with their company Google account.

#!/bin/bash

### Zoom audio device driver repair
### 2021.01.15 JW - update Buck Crockett 05/15/2021 added cleaned up the function from jfilice_at_csumb

### There is a packaging or broken script issue in recent Zoom installer(s?)
### where /Library/Audio/Plug-Ins/HAL/ZoomAudioDevice.driver is either broken or failing to install. 
### Either way, users are being prompted for admin pass to install the audio driver when attempting to share desktop or videos 'with sound'
### This should hopefully resolve, though resetting coreaudio sometimes seems hit or miss, take with a grain of salt.

### more details found here (see dates 2021.01.11)
### https://www.jamf.com/jamf-nation/discussions/27069/zoom-app-asks-for-admin-credentials-when-trying-to-share-computer-audio


### if this is part of a re-install, let's give installer a few extra seconds to finish up
sleep 10


### concept below pulled from factory ZoomInstallerIT.pgk post-install script:
### However an issue I see is coreaudiod was not reliably being reset, 
###  I reworked Zoom's method for grabbing PID and it seems to work much better now! -JW
### Note an easy clue as to whether this is working or not is to have open /Applications/Utilities/Audio MIDI Setup...
### ...if the ZoomAudioDevice loads we're golden... otherwise back to the drawing board.

function kill_coreaudiod()
{
#   Set variable to all PIDs of /usr/sbin/coreaudiod
#   --invert-match to remove PID for the grep command itself
    coreaudiod_pid=$( ps -ax -o pid -o command | grep "/usr/sbin/coreaudiod" | grep --invert-match grep | awk '{print $1}' )

    for each_pid in $coreaudiod_pid
    do
        if [[ $each_pid -gt 0 ]] 
        then
            kill -9 $each_pid
        fi
    done
}
AudioPluginPath=/Library/Audio/Plug-Ins/HAL
audioPluginfile=/Applications/zoom.us.app/Contents/Plugins/ZoomAudioDevice.driver

st=$(kextstat -b zoom.us.ZoomAudioDevice | grep zoom.us.ZoomAudioDevice 2>&1)

if [[ $st = *zoom.us.ZoomAudioDevice* ]] ; then
    echo "audio device is loaded, skipping"
    exit 1
else
    #(re)install audio driver
    if [[ -d "$AudioPluginPath/ZoomAudioDevice.driver" ]]; then
        rm -rf "$AudioPluginPath/ZoomAudioDevice.driver"
    fi

    cp -rf "$audioPluginfile" "$AudioPluginPath"

    ### reset coreaudiod ...see function & notes on Audio MIDI setup
    kill_coreaudiod
    sleep 5
fi