From 07af8c122cc411e7c04b5091c090489215c222a4 Mon Sep 17 00:00:00 2001 From: Gabriel Luchina Date: Sun, 27 Sep 2026 20:06:37 -0300 Subject: [PATCH] Fix macOS Tahoe - Cursor Freeze --- README.md | 15 +++++++++++++++ setup | 16 +++++++++++++--- 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 0160c6b..5d84590 100644 --- a/README.md +++ b/README.md @@ -137,6 +137,21 @@ If you encounter this error, you need to switch from **HTTPS** to **HTTP** in th [Reference & More Details](https://mrmacintosh.com/how-to-fix-the-recovery-server-could-not-be-contacted-error-high-sierra-recovery-is-still-online-but-broken/) +### ❌ macOS Tahoe - Cursor Freeze + +On **macOS 26**, the cursor may randomly freeze when using a USB tablet. VMs created by the setup for Tahoe already use `virtio-tablet-pci` (with **Use tablet for pointer** disabled in the VM's **Options** tab). + +For Tahoe VMs created with an older version of the setup, disable **Use tablet for pointer** in the VM's **Options** tab, then run this in the Proxmox shell: + +```bash +clear; read -p "Enter your macOS VM ID number: " VMID; \ +ARGS="$(qm config $VMID | grep ^args: | cut -d' ' -f2-)"; \ +ARGS="${ARGS/ -device usb-tablet/}"; \ +qm set $VMID -args "$ARGS -device virtio-tablet-pci" +``` + +> **Note:** With `virtio-tablet-pci`, middle-click acts as right-click in the VM. + ### ❌ Problem for GPU Passthrough If you see an Apple logo and the bar doesn’t move on your external display, you need to disable “above 4g decoding” in the motherboard’s BIOS. diff --git a/setup b/setup index 41e595f..fad1757 100755 --- a/setup +++ b/setup @@ -37,7 +37,7 @@ SCRIPT_DIR="/root/OSX-PROXMOX" LOGDIR="${SCRIPT_DIR}/logs" MAIN_LOG="${LOGDIR}/main.log" TMPDIR="${SCRIPT_DIR}/tmp" -HACKPXVERSION="2026.09.08" +HACKPXVERSION="2026.09.27" OCVERSION="1.0.8" DEFAULT_VM_PREFIX="HACK-" BASE_RAM_SIZE=4096 @@ -426,7 +426,10 @@ create_vm() { [[ ! -d "/sys/class/net/$bridge" ]] && log_and_exit "Bridge $bridge does not exist" "$logfile" local cpu_args device_args='-device isa-applesmc,osk="ourhardworkbythesewordsguardedpleasedontsteal(c)AppleComputerInc" -smbios type=2' - if [[ "$version_name" =~ ^(Sonoma|Sequoia|Tahoe)$ ]]; then + if [[ "$version_name" == "Tahoe" ]]; then + # macOS 26: USB tablet causes random cursor freezes; use virtio-tablet-pci instead + device_args="$device_args -device qemu-xhci -device usb-kbd -device virtio-tablet-pci -global nec-usb-xhci.msi=off" + elif [[ "$version_name" =~ ^(Sonoma|Sequoia)$ ]]; then device_args="$device_args -device qemu-xhci -device usb-kbd -device usb-tablet -global nec-usb-xhci.msi=off" else device_args="$device_args -device usb-kbd,bus=ehci.0,port=2 -device usb-mouse,bus=ehci.0,port=3" @@ -467,13 +470,17 @@ create_vm() { cdrom_boot="sata0"; cdrom_recovery="sata2" fi + # Tahoe uses virtio-tablet-pci (in args), so Proxmox's "Use tablet for pointer" must stay off + local tablet=1 + [[ "$version_name" == "Tahoe" ]] && tablet=0 + qm create "$vm_id" \ --agent 1 --args "$device_args $cpu_args" --autostart 0 \ --balloon 0 --bios ovmf --boot "order=${cdrom_boot};$disk_type" \ --cores "$core_count" --description "Hackintosh VM - $version_name" \ --efidisk0 "${storage}:4" --machine q35 --memory "$ram_size" \ --name "$vm_name" --net0 "vmxnet3,bridge=$bridge" --numa 0 \ - --onboot 0 --ostype other --sockets 1 --start 0 --tablet 1 \ + --onboot 0 --ostype other --sockets 1 --start 0 --tablet "$tablet" \ --vga vmware --vmgenid 1 --scsihw virtio-scsi-pci \ --"$disk_type" "${storage}:${disk_size},cache=none,discard=on" \ --"$cdrom_boot" "${storage_iso}:iso/${iso_file},media=cdrom,cache=unsafe,size=96M" \ @@ -487,6 +494,9 @@ create_vm() { display_and_log "Goto https://github.com/luchina-gabriel/OSX-PROXMOX#-high-sierra--below---recovery-server-could-not-be-contacted" "$logfile" display_and_log "and do the Fix." "$logfile" fi + if [[ "$version_name" == "Tahoe" ]]; then + display_and_log "NOTE: Tahoe uses virtio-tablet-pci as pointer (cursor freeze fix); middle-click acts as right-click." "$logfile" + fi display_and_log "Access Proxmox Web Panel: https://$bridge_ip:8006" "$logfile" }