ExistentialAudio / BlackHole

BlackHole is a modern macOS audio loopback driver that allows applications to pass audio to other applications with zero additional latency.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Can't update

mbierman opened this issue · comments

Please Confirm

  • I have read the FAQ and Wiki where most common issues can be resolved
  • I have searched Discussions to see if the same question has already been asked
  • This is a bug and not a question about audio routing or configuration, which should be posted in Discussions

macOS Version

macOS 13 Ventura

BlackHole Build(s) Affected

  • 2 channel
  • 16 channel
  • 64 channel
  • other/custom build

Describe the bug

macOS 14.4.1 (23E224)
Updating with homebrew is failing

Reproduction Steps

brew update
brew outdated
brew upgrade --greedy
brew cleanup

Expected Behavior

Update using homebrew should work

Screenshots

==> Upgrading blackhole-2ch
==> Downloading https://raw.githubusercontent.com/Homebrew/homebrew-cask/ef939c438c5519c1dc533f8384691106bc2262d9/Casks/b/blackhole-2ch.rb
Already downloaded: /Users/michael/Library/Caches/Homebrew/downloads/abaf20d208584f623d2627beaa5ae3045b883ebc804c27d35b9bc886a3c6dedd--blackhole-2ch.rb
==> Downloading https://existential.audio/downloads/BlackHole2ch-0.6.0.pkg
Already downloaded: /Users/michael/Library/Caches/Homebrew/downloads/094ac75837aa76e51e9defa1f6623144c5a3b223a1b426cf5ddb42c224e70c4a--BlackHole2ch-0.6.0.pkg
==> Uninstalling packages with sudo; the password may be necessary:
Could not kickstart service "com.apple.audio.coreaudiod": 1: Operation not permitted
==> Purging files for version 0.6.0 of Cask blackhole-2ch
Error: blackhole-2ch: Failure while executing; `/usr/bin/sudo -E -- /bin/launchctl kickstart -kp system/com.apple.audio.coreaudiod` exited with 1. Here's the output:
Could not kickstart service "com.apple.audio.coreaudiod": 1: Operation not permitted

Uninstall is not working too.

Okey, I will try contact brew. Still you've got readme to update. There are still kickstart commands.

@devinroth @BetterB0y Sorry you lost me a bit. I don't see anything in the readme about updating. Do I have to uninstall and reinstall? it would be great if homebrew was fixed. I really prefer using that to handle this stuff when possible.

@mbierman Command is still in readme. It's not resolving anything about this issue.

I found a way to workaround this:

You go to the Caskroom for the cask, on Apple Silicon macs, it is here:

/opt/homebrew/Caskroom/blackhole-2ch/.metadata/0.5.0/

On Intel Macs, it is here:

/usr/local/Caskroom/blackhole-2ch/.metadata/0.5.0/

And you will see a folder with a date, cd into it, you will see the blackhole-2ch.rb

Edit it that file, change

system_command "/bin/launchctl",
                   args:         [
                     "kickstart",
                     "-kp",
                     "system/com.apple.audio.coreaudiod",
                   ],
                   sudo:         true,
                   must_succeed: true

to

system_command "/usr/bin/killall",
                   args:         ["coreaudiod"],
                   sudo:         true,
                   must_succeed: true

Then save the file, and then uninstall should success.

@gnattu it worked for blackhole-2ch. What about blackhole-16ch? Is it okey to just delete blackhole-16ch dir from Caskroom?

@gnattu it worked for blackhole-2ch. What about blackhole-16ch? Is it okey to just delete blackhole-16ch dir from Caskroom?

No, you do the same for the blackhole-16ch.rb to replace the system_command

There is .pkg file only there. No .rb file

The .metadata folder is a hidden and you cannot navigate into it using finder directly. You replace the path and cd into it directly.

Thanks. It worked. I used cd but something weird happened and i wasn't in .metadata dir.

Thanks @devinroth and @gnattu.
After brew remove (following your suggestion) I did a brew install and now everything works.

To be it clear, you can run "brew upgrade" after editing blackhole-2ch.rb to successfully upgrade to the latest version (which should then upgrade fine in the future).

A potentially easier solution, that makes it less likely to leave the cask file in an unreadable state is to remove the file from the Caskroom and then reinstall it.

This will cause Brew to use the most up-to-date uninstall stanza, instead of the one that was present when the installed version was installed.

Silicon Mac
rm -rfi /opt/homebrew/Caskroom/blackhole-2ch/

Intel Mac
rm -rfi /usr/local/Caskroom/blackhole-2ch/

Then reinstall
brew reinstall blackhole-2ch

A potentially easier solution, that makes it less likely to leave the cask file in an unreadable state is to remove the file from the Caskroom and then reinstall it.

This will cause Brew to use the most up-to-date uninstall stanza, instead of the one that was present when the installed version was installed.

Silicon Mac rm -rfi /opt/homebrew/Caskroom/blackhole-2ch/

Intel Mac rm -rfi /usr/local/Caskroom/blackhole-2ch/

Then reinstall brew reinstall blackhole-2ch

This oddly didn't work for me as it just downloaded 0.5.0 to run uninstall first which failed. The previous fix of patching the .rb file did work though.

That's the solution at list with 2ch:

Known Issues
To improve security and stability, using launchctl kickstart -k is no longer permitted for critical system processes. If a process must be forcefully terminated, it is recommended to use kill instead. (123028502)

https://developer.apple.com/documentation/macos-release-notes/macos-14_4-release-notes#Core-Audio

If remove the -k parameter works fine.

If remove the -k parameter works fine.

I don't think that's right. What we need is for coreaudiod to restart which we were doing with launchctl kickstart -k. Merely removing the -k will mean it won't restart coreaudiod.

I think the correct solution is here: #779 (comment) . Since coreaudiod is considered a core service, it will restart if killed.