After upgrading to Sonoma or Sequoia, Bluetooth functionality is completely unavailable in VMs. But don’t worry—there’s a fix.
According to this thread:
https://forum.proxmox.com/threads/anyone-can-make-bluetooth-work-on-sonoma.153301/post-697832
It’s possible to use OpenCore to make macOS think, “I’m not running in a VM.”
With OCC GUI:
Go to Kernel -> Patch and add two new items as follows:
Identifier | Base | Count | Find | Limit | Mask | Replace | Skip | Arch |
kernel | 1 | 68696265726E61746568696472656164790068696265726E617465636F756E7400 | 0 | 68696265726E61746568696472656164790068765F766D6D5F70726573656E7400 | 0 | x86_64 | ||
kernel | 1 | 626F6F742073657373696F6E20555549440068765F766D6D5F70726573656E7400 | 0 | 626F6F742073657373696F6E20555549440068696265726E617465636F756E7400 | 0 | x86_64 |
Save the modification and then just reboot to see if it works. Technically no NVRAM reset should be needed.
If your hibernatecount is not always 0, you may want to find another flag. I used this command to find all kern flags with 14 characters:
Bash:
sysctl kern | grep -E '^kern\.[^.]{14}:'
My output is (before patching) :
Code:
kern.sugid_coredump: 0
kern.hibernatecount: 0
kern.hv_vmm_present: 1
kern.wq_max_threads: 512
kern.drivercorefile: /private/var/dextcores/%N.core
kern.direct_handoff: 1
kern.consoleoptions: 0
kern.pmcallouttimer: 2000
kern.sleep_abs_time: 0
After patching:
Code:
kern.sugid_coredump: 0
kern.hibernatecount: 1
kern.hv_vmm_present: 0
kern.wq_max_threads: 512
kern.drivercorefile: /private/var/dextcores/%N.core
kern.direct_handoff: 1
kern.consoleoptions: 0
kern.pmcallouttimer: 2000
kern.sleep_abs_time: 0
Unfortunately, this would very possibly break qemu-guest-agent, which is necessary for the host getting VM status or taking hot snapshot while the VM is running. This is because qemu-guest-agent also checks the hv_vmm_present flag, but only works if it is true (=1).
Thanks to fty1777 on forum.Proxmox.com
Additionally, there’s another solution available at https://github.com/Carnations-Botanica/VMHide, but I haven’t tested it yet.