utmapp / utmapp/UTM

Black Screen Linux VM

Open
#7,833 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Swift
Stars
35.5k
Forks
1.8k
Avg merge
5d 5h
Merged PRs (30d)
7

Description

So, I was installing Fedora Desktop on my iPad (specs below) and I was getting a black screen after starting the VM (this is before anything has been installed, the iso was attached to the VM though). So, I started with virtio-gpu-gl-device and then tried virtio-gpu-gl-pci I also tried virtio-ramfb-gl i also tried virtio-ramfb. I also tried adding a serial device. I even tried the Fedora 38 prebuilt and still the same thing. I installed UTM using Altstore.

* UTM Version: 4.7.5
* OS Version: iPadOS 27 (beta 2)
* Device Model: iPad Air M4 11-inch
* Is it jailbroken (name jailbreak used)? NO
* How did you install UTM? Altstore

The log below is on virtio-gpu-gl-pci:

Launching: qemu-system-aarch64 -L /var/mobile/Containers/Data/Application/E99FF72C-AE9D-43D9-A486-E3A8A648575D/Library/Caches/qemu -S -spice unix=on,addr=16D508EA-8D51-4D8F-A4E8-2DBC7255D438.spice,disable-ticketing=on,image-compression=off,playback-compression=off,streaming-video=off,gl=on -chardev spiceport,name=org.qemu.monitor.qmp.0,id=org.qemu.monitor.qmp -mon chardev=org.qemu.monitor.qmp,mode=control -nodefaults -vga none -device virtio-net-pci,mac=6A:59:45:03:73:4C,netdev=net0 -netdev user,id=net0 -device virtio-gpu-gl-pci -cpu cortex-a72 -smp cpus=3,sockets=1,cores=3,threads=1 -machine virt,virtualization=on -accel tcg,tb-size=1024,split-wx=on -drive if=pflash,format=raw,unit=0,file.filename=/var/mobile/Containers/Data/Application/E99FF72C-AE9D-43D9-A486-E3A8A648575D/Library/Caches/qemu/edk2-aarch64-code.fd,file.locking=off,readonly=on -drive "if=pflash,unit=1,file.filename=/private/var/mobile/Containers/Shared/AppGroup/9E82B0BE-7C3D-4A55-8957-0154FBDA7DAC/File Provider Storage/Downloads/fedora-38-arm64-utm/Fedora 38.utm/Data/efi_vars.fd" -m 4096 -audiodev spice,id=audio0 -device intel-hda -device hda-duplex,audiodev=audio0 -device nec-usb-xhci,id=usb-bus -device usb-tablet,bus=usb-bus.0 -device usb-mouse,bus=usb-bus.0 -device usb-kbd,bus=usb-bus.0 -device qemu-xhci,id=usb-controller-0 -chardev spicevmc,name=usbredir,id=usbredirchardev0 -device usb-redir,chardev=usbredirchardev0,id=usbredirdev0,bus=usb-controller-0.0 -chardev spicevmc,name=usbredir,id=usbredirchardev1 -device usb-redir,chardev=usbredirchardev1,id=usbredirdev1,bus=usb-controller-0.0 -chardev spicevmc,name=usbredir,id=usbredirchardev2 -device usb-redir,chardev=usbredirchardev2,id=usbredirdev2,bus=usb-controller-0.0 -device usb-storage,drive=drive540359EB-9642-4E25-9F4D-2F9D596B65BC,removable=true,bootindex=0,bus=usb-bus.0 -drive if=none,media=cdrom,id=drive540359EB-9642-4E25-9F4D-2F9D596B65BC,readonly=on -device virtio-blk-pci,drive=driveB70AB2C7-74FC-4E97-B4F0-0430B3C8C5CD,serial=B70AB2C774FC4E97B4F0,bootindex=1 -drive "if=none,media=disk,id=driveB70AB2C7-74FC-4E97-B4F0-0430B3C8C5CD,file.filename=/private/var/mobile/Containers/Shared/AppGroup/9E82B0BE-7C3D-4A55-8957-0154FBDA7DAC/File Provider Storage/Downloads/fedora-38-arm64-utm/Fedora 38.utm/Data/B70AB2C7-74FC-4E97-B4F0-0430B3C8C5CD.qcow2,discard=unmap,detect-zeroes=unmap" -device virtio-serial -device virtserialport,chardev=org.qemu.guest_agent,name=org.qemu.guest_agent.0 -chardev spiceport,name=org.qemu.guest_agent.0,id=org.qemu.guest_agent -device virtserialport,chardev=vdagent,name=com.redhat.spice.0 -chardev spicevmc,id=vdagent,debug=0,name=vdagent -name "Fedora 38" -uuid 16D508EA-8D51-4D8F-A4E8-2DBC7255D438 -device virtio-rng-pci

Loading qemu-aarch64-softmmu.framework/qemu-aarch64-softmmu

UI Error: Could not connect: Connection refusedRetrying interface connection...2026-08-24 17:14:41.912 UTM[692:13165] [QEMULogging(0x107cb8b50)] Retrying interface connection...

2026-08-24 07:14:41,914 WARNING GSpice-main-1:0: could not set sockopt TCP_NODELAY: Operation not supported on socket

2026-08-24 17:14:41.914 UTM[692:13317] [QEMULogging(0x107cb8b50)] 2026-08-24 07:14:41,914 WARNING GSpice-main-1:0: could not set sockopt TCP_NODELAY: Operation not supported on socket

2026-08-24 07:14:42,016 MESSAGE (null)-main channel: opened

2026-08-24 17:14:42.016 UTM[692:13317] [QEMULogging(0x107cb8b50)] 2026-08-24 07:14:42,016 MESSAGE (null)-main channel: opened

2026-08-24 07:14:42,018 WARNING GSpice-display-2:0: could not set sockopt TCP_NODELAY: Operation not supported on socket

2026-08-24 17:14:42.018 UTM[692:13317] [QEMULogging(0x107cb8b50)] 2026-08-24 07:14:42,018 WARNING GSpice-display-2:0: could not set sockopt TCP_NODELAY: Operation not supported on socket

2026-08-24 07:14:42,018 WARNING GSpice-cursor-4:0: could not set sockopt TCP_NODELAY: Operation not supported on socket

2026-08-24 17:14:42.018 UTM[692:13317] [QEMULogging(0x107cb8b50)] 2026-08-24 07:14:42,018 WARNING GSpice-cursor-4:0: could not set sockopt TCP_NODELAY: Operation not supported on socket

2026-08-24 07:14:42,019 WARNING GSpice-usbredir-9:2: could not set sockopt TCP_NODELAY: Operation not supported on socket

2026-08-24 17:14:42.019 UTM[692:13317] [QEMULogging(0x107cb8b50)] 2026-08-24 07:14:42,019 WARNING GSpice-usbredir-9:2: could not set sockopt TCP_NODELAY: Operation not supported on socket

2026-08-24 07:14:42,019 WARNING GSpice-usbredir-9:1: could not set sockopt TCP_NODELAY: Operation not supported on socket

2026-08-24 17:14:42.019 UTM[692:13317] [QEMULogging(0x107cb8b50)] 2026-08-24 07:14:42,019 WARNING GSpice-usbredir-9:1: could not set sockopt TCP_NODELAY: Operation not supported on socket

2026-08-24 07:14:42,019 WARNING GSpice-usbredir-9:0: could not set sockopt TCP_NODELAY: Operation not supported on socket

2026-08-24 17:14:42.019 UTM[692:13317] [QEMULogging(0x107cb8b50)] 2026-08-24 07:14:42,019 WARNING GSpice-usbredir-9:0: could not set sockopt TCP_NODELAY: Operation not supported on socket

2026-08-24 07:14:42,019 WARNING GSpice-playback-5:0: could not set sockopt TCP_NODELAY: Operation not supported on socket

2026-08-24 17:14:42.019 UTM[692:13317] [QEMULogging(0x107cb8b50)] 2026-08-24 07:14:42,019 WARNING GSpice-playback-5:0: could not set sockopt TCP_NODELAY: Operation not supported on socket

2026-08-24 07:14:42,019 WARNING GSpice-record-6:0: could not set sockopt TCP_NODELAY: Operation not supported on socket

2026-08-24 17:14:42.019 UTM[692:13317] [QEMULogging(0x107cb8b50)] 2026-08-24 07:14:42,019 WARNING GSpice-record-6:0: could not set sockopt TCP_NODELAY: Operation not supported on socket

2026-08-24 07:14:42,020 WARNING GSpice-port-10:1: could not set sockopt TCP_NODELAY: Operation not supported on socket

2026-08-24 17:14:42.020 UTM[692:13317] [QEMULogging(0x107cb8b50)] 2026-08-24 07:14:42,020 WARNING GSpice-port-10:1: could not set sockopt TCP_NODELAY: Operation not supported on socket

2026-08-24 07:14:42,020 WARNING GSpice-port-10:0: could not set sockopt TCP_NODELAY: Operation not supported on socket

2026-08-24 17:14:42.020 UTM[692:13317] [QEMULogging(0x107cb8b50)] 2026-08-24 07:14:42,020 WARNING GSpice-port-10:0: could not set sockopt TCP_NODELAY: Operation not supported on socket

2026-08-24 07:14:42,020 WARNING GSpice-inputs-3:0: could not set sockopt TCP_NODELAY: Operation not supported on socket

2026-08-24 17:14:42.020 UTM[692:13317] [QEMULogging(0x107cb8b50)] 2026-08-24 07:14:42,020 WARNING GSpice-inputs-3:0: could not set sockopt TCP_NODELAY: Operation not supported on socket

2026-08-24 07:14:42,113 WARNING Spice-playback:0 (0x11d26cba0): setsockopt failed, Operation not supported on socket

2026-08-24 17:14:42.113 UTM[692:13326] [QEMULogging(0x107cb8b50)] 2026-08-24 07:14:42,113 WARNING Spice-playback:0 (0x11d26cba0): setsockopt failed, Operation not supported on socket

2026-08-24 07:14:42,114 WARNING Spice-record:0 (0x11d26cc40): setsockopt failed, Operation not supported on socket

2026-08-24 17:14:42.114 UTM[692:13326] [QEMULogging(0x107cb8b50)] 2026-08-24 07:14:42,114 WARNING Spice-record:0 (0x11d26cc40): setsockopt failed, Operation not supported on socket

Monitor port created2026-08-24 17:14:42.117 UTM[692:13146] [QEMULogging(0x107cb8b50)] Monitor port created

Debug JSON recieved <- {

QMP = {

capabilities = (

);

version = {

package = "";

qemu = {

major = 10;

micro = 2;

minor = 0;

};

};

};

}

2026-08-24 17:14:42.117 UTM[692:13297] [QEMULogging(0x107cb8b50)] Debug JSON recieved <- {

QMP = {

capabilities = (

);

version = {

package = "";

qemu = {

major = 10;

micro = 2;

minor = 0;

};

};

};

}

Got QMP handshake: {

capabilities = (

);

version = {

package = "";

qemu = {

major = 10;

micro = 2;

minor = 0;

};

};

}

qemuQmpDidConnectDebug JSON send -> {

execute = "qmp_capabilities";

}

2026-08-24 17:14:42.117 UTM[692:13297] [QEMULogging(0x107cb8b50)] Got QMP handshake: {

capabilities = (

);

version = {

package = "";

qemu = {

major = 10;

micro = 2;

minor = 0;

};

};

}

2026-08-24 17:14:42.117 UTM[692:13297] [QEMULogging(0x107cb8b50)] qemuQmpDidConnect

2026-08-24 17:14:42.117 UTM[692:13297] [QEMULogging(0x107cb8b50)] Debug JSON send -> {

execute = "qmp_capabilities";

}

Debug JSON recieved <- {

return = {

};

}

2026-08-24 17:14:42.120 UTM[692:13168] [QEMULogging(0x107cb8b50)] Debug JSON recieved <- {

return = {

};

}

Debug JSON send -> {

arguments = {

device = "drive540359EB-9642-4E25-9F4D-2F9D596B65BC";

force = 0;

};

execute = eject;

}

2026-08-24 17:14:42.120 UTM[692:13297] [QEMULogging(0x107cb8b50)] Debug JSON send -> {

arguments = {

device = "drive540359EB-9642-4E25-9F4D-2F9D596B65BC";

force = 0;

};

execute = eject;

}

Debug JSON recieved <- {

data = {

device = "drive540359EB-9642-4E25-9F4D-2F9D596B65BC";

id = "/machine/peripheral-anon/device[7]/scsi.0/legacy[0]";

"tray-open" = 1;

};

event = "DEVICE_TRAY_MOVED";

timestamp = {

microseconds = 120661;

seconds = 1787555682;

};

}

2026-08-24 17:14:42.120 UTM[692:13165] [QEMULogging(0x107cb8b50)] Debug JSON recieved <- {

data = {

device = "drive540359EB-9642-4E25-9F4D-2F9D596B65BC";

id = "/machine/peripheral-anon/device[7]/scsi.0/legacy[0]";

"tray-open" = 1;

};

event = "DEVICE_TRAY_MOVED";

timestamp = {

microseconds = 120661;

seconds = 1787555682;

};

}

Debug JSON recieved <- {

return = {

};

}

2026-08-24 17:14:42.120 UTM[692:13165] [QEMULogging(0x107cb8b50)] Debug JSON recieved <- {

return = {

};

}

Debug JSON send -> {

execute = cont;

}

2026-08-24 17:14:42.120 UTM[692:13297] [QEMULogging(0x107cb8b50)] Debug JSON send -> {

execute = cont;

}

Debug JSON recieved <- {

event = RESUME;

timestamp = {

microseconds = 121134;

seconds = 1787555682;

};

}

2026-08-24 17:14:42.121 UTM[692:13162] [QEMULogging(0x107cb8b50)] Debug JSON recieved <- {

event = RESUME;

timestamp = {

microseconds = 121134;

seconds = 1787555682;

};

}

Debug JSON recieved <- {

return = {

};

}

qemuHasResumed2026-08-24 17:14:42.121 UTM[692:13162] [QEMULogging(0x107cb8b50)] Debug JSON recieved <- {

return = {

};

}

2026-08-24 17:14:42.121 UTM[692:13168] [QEMULogging(0x107cb8b50)] qemuHasResumed

DISPLAY: vmDisplay.displaySize changed

2026-08-24 17:14:42.138 UTM[692:13146] [QEMULogging(0x107cb8b50)] DISPLAY: vmDisplay.displaySize changed

DISPLAY: request window resize to (0.000000, 0.000000)

2026-08-24 17:14:43.181 UTM[692:13146] [QEMULogging(0x107cb8b50)] DISPLAY: request window resize to (0.000000, 0.000000)

Debug JSON send -> {

arguments = {

"command-line" = "delvm suspend";

};

execute = "human-monitor-command";

}

2026-08-24 17:15:21.899 UTM[692:13297] [QEMULogging(0x107cb8b50)] Debug JSON send -> {

arguments = {

"command-line" = "delvm suspend";

};

execute = "human-monitor-command";

}

Debug JSON recieved <- {

return = "";

}

2026-08-24 17:15:21.899 UTM[692:13168] [QEMULogging(0x107cb8b50)] Debug JSON recieved <- {

return = "";

}

Debug JSON send -> {

execute = quit;

}

2026-08-24 17:15:21.900 UTM[692:13297] [QEMULogging(0x107cb8b50)] Debug JSON send -> {

execute = quit;

}

Debug JSON recieved <- {

data = {

guest = 0;

reason = "host-qmp-quit";

};

event = SHUTDOWN;

timestamp = {

microseconds = 900141;

seconds = 1787555721;

};

}

2026-08-24 17:15:21.900 UTM[692:13162] [QEMULogging(0x107cb8b50)] Debug JSON recieved <- {

data = {

guest = 0;

reason = "host-qmp-quit";

};

event = SHUTDOWN;

timestamp = {

microseconds = 900141;

seconds = 1787555721;

};

}

qemuWillQuit2026-08-24 17:15:21.900 UTM[692:13162] [QEMULogging(0x107cb8b50)] qemuWillQuit

2026-08-24T17:15:24+1000 info com.utmapp.UTM : Entering background

2026-08-24 17:15:24.427 UTM[692:13146] [QEMULogging(0x107cb8b50)] 2026-08-24T17:15:24+1000 info com.utmapp.UTM : Entering background

2026-08-24T17:15:24+1000 info com.utmapp.UTM : [UTM] Entering background

Contributor guide

Open the contributing guide

Research direction

Reproduce the Fedora 38 ARM VM on the listed iPad configuration with the reported virtio display devices, then inspect the launch log around the display resize request to (0, 0). Done means identifying and resolving the cause of the black screen so the guest display renders; no source file or test is named in the report.

Written by the indexing model from the issue text.

Assessment

Tech stack
ios, linux, swift
Domain
mobile-dev, operating-systems
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.