Monday, February 3, 2020

VMware Fusion 10 on macOS Catalina

Boy van Amstel:

Catalina requires apps to request permission for various tasks. Recording the screen is one of them. Apparently Fusion uses this feature, but neglects to ask for permission. Thus the screen stays black.

Some people found a way to get around this by granting permission manually. Here’s how that works.

macOS doesn’t let you add Screen Recording permission in System Preferences if the app hasn’t asked for it. VMware 11 asks; version 10 doesn’t, but it otherwise works fine on Catalina. The solution is to boot into Recovery (to get past System Integrity Protection) and then use SQLite to edit the TCC.db file to grant VMware the access.

There’s a similar problem where sometimes macOS fails to prompt for Automation access (or remember said access). The prompting is supposed to happen automatically—there’s no API that apps need to call. If it doesn’t work, there’s likely something wrong with the TCC.db file and you should probably reset it. Sometimes tccutil reset AppleEvents does the job. But sometimes the database is so messed up that you have to boot into Recovery and delete the file manually. There really should be a way to do that with tccutil.

0x00400000:

I managed to trigger the permission modal for VMware Fusion 10 on Catalina using library injection. After restarting VMWare Fusion 10 it seems to have done the trick.

I created a git repo with a script to trigger the modal.

Previously:

Update (2020-02-03): It’s not clear to me whether VMware is supposed to be calling a certain API to ask for permission or if macOS is supposed to (as with Automation) be noticing that it’s doing something that requires permission. But Catalina shouldn’t be breaking an app that was compiled with an older SDK.

Update (2020-02-06): John Cleary:

I’m still on v8 and just use the built in VNC and screen share to localhost as the VM just shows a black screen.

6 Comments RSS · Twitter

Keyboard Maestro users get hit with the Screen Recording permission issue as well. Screen Recording permission is required for getting an image of a window, but the system apparently only asks for permissions if you screen capture the whole screen. So until you do the latter, the former fails without any prompt (and as with most Apple permissions, there is no way for an app to explicitly request it, or find out if it is allowed).

It is about as much fun as the accessibility permission error that has been around since Mojave (and continues in Catalina), where the permission checkboxes are on, and the API (which actually exists) says the permission is granted, but in fact requests are denied. Sigh.

@Peter Thanks for explaining!

You can just

sudo sqlite3 /Library/Application\ Support/com.apple.TCC/TCC.db "INSERT INTO access VALUES ('kTCCServiceScreenCapture','', 0, 1, 1, NULL, NULL, NULL, 'UNUSED', NULL, 0, 1550269728);"

The second column should be the bundle identifier.

@Just That’s what the script does, but “sudo” isn’t enough if System Integrity Protection is on.

Solved my black screen when attempting to install a Fedora ISO image running Vmware 10.x on a macOS Catalina system.

Thanks!

Sean

Leave a Comment