I am having a lot of trouble setting up the looking-glass client to be able to view my host session running windows 11. I have it to where it shows it as connected, but the output is just the purple screen and the logo and never changes. There is no errors in the logs on the client side, but on the host side I am getting an issue with the IVSHMEM failing to connect to a device. My host log looks like this:
[I] 6860930 time.c:85 | windowsSetTimerResolution | System timer resolution: 976.5 μs
[I] 6861491 app.c:768 | app_main | Looking Glass Host (B6-rc1)
[I] 6861858 cpuinfo.c:37 | lgDebugCPU | CPU Model: AMD Ryzen 5 5600X 6-Core Processor
[I] 6862239 cpuinfo.c:38 | lgDebugCPU | CPU: 2 sockets, 2 cores, 2 threads
[I] 6863326 ivshmem.c:132 | ivshmemInit | IVSHMEM 0* on bus 0xa, device 0x1, function 0x0
[I] 6866017 app.c:785 | app_main | IVSHMEM Size : 32 MiB
[I] 6866381 app.c:786 | app_main | IVSHMEM Address : 0x2A20000
[I] 6866761 app.c:787 | app_main | Max Pointer Size : 1024 KiB
[I] 6867074 app.c:788 | app_main | KVMFR Version : 19
[I] 6867373 app.c:806 | app_main | Trying : DXGI
[I] 6870088 dxgi.c:390 | dxgi_init | Device Name : \\.\DISPLAY1
[I] 6870443 dxgi.c:391 | dxgi_init | Device Description: NVIDIA GeForce GTX 1080 Ti
[I] 6870905 dxgi.c:392 | dxgi_init | Device Vendor ID : 0x10de
[I] 6871225 dxgi.c:393 | dxgi_init | Device Device ID : 0x1b06
[I] 6871545 dxgi.c:394 | dxgi_init | Device Video Mem : 11121 MiB
[I] 6871886 dxgi.c:395 | dxgi_init | Device Sys Mem : 0 MiB
[I] 6872205 dxgi.c:396 | dxgi_init | Shared Sys Mem : 4086 MiB
[I] 6948709 dxgi.c:503 | dxgi_init | Feature Level : 0xc100
[I] 6949102 dxgi.c:504 | dxgi_init | Capture Size : 1024 x 768
[I] 6949510 dxgi.c:505 | dxgi_init | AcquireLock : enabled
[I] 6949888 dxgi.c:506 | dxgi_init | Debug mode : disabled
[I] 6951074 dxgi.c:598 | dxgi_init | Source Format : DXGI_FORMAT_B8G8R8A8_UNORM
[I] 6951523 dxgi.c:640 | dxgi_init | Request Size : 1024 x 768
[I] 6952405 dxgi.c:658 | dxgi_init | Output Size : 1024 x 768
[I] 6952743 dxgi.c:666 | dxgi_init | Copy backend : Direct3D 11
[I] 6953125 dxgi.c:667 | dxgi_init | Damage-aware copy : enabled
[I] 6953500 app.c:831 | app_main | Using : DXGI Direct3D 11
[I] 6953843 app.c:832 | app_main | Capture Method : Asynchronous
[I] 6955421 app.c:687 | lgmpSetup | Max Frame Size : 14 MiB
[I] 6955810 app.c:385 | captureStop | ==== [ Capture Stop ] ====
[I] 25679867 time.c:85 | windowsSetTimerResolution | System timer resolution: 500.0 μs
[I] 25680277 app.c:768 | app_main | Looking Glass Host (B6-rc1)
[I] 25680794 cpuinfo.c:37 | lgDebugCPU | CPU Model: AMD Ryzen 5 5600X 6-Core Processor
[I] 25681267 cpuinfo.c:38 | lgDebugCPU | CPU: 2 sockets, 2 cores, 2 threads
[I] 25682593 ivshmem.c:132 | ivshmemInit | IVSHMEM 0* on bus 0xa, device 0x1, function 0x0
25683842 [E] ivshmem.c:214 | ivshmemOpen | DeviceIoControl Failed: 0x00000224 (An attempt was made to attach to a device that was already attached to another device.)
[E] 25684494 app.c:780 | app_main | Failed to open the IVSHMEM device
where it looks like it tries to connect to the same device twice? But even when I run it from the client side, everything looks like it connected fine, its just that Im getting no output. Here is the logs on the host for when the client connects to it:
[I] 279555923 dxgi.c:390 | dxgi_init | Device Name : \\.\DISPLAY1
[I] 279556431 dxgi.c:391 | dxgi_init | Device Description: NVIDIA GeForce GTX 1080 Ti
[I] 279556897 dxgi.c:392 | dxgi_init | Device Vendor ID : 0x10de
[I] 279557255 dxgi.c:393 | dxgi_init | Device Device ID : 0x1b06
[I] 279557594 dxgi.c:394 | dxgi_init | Device Video Mem : 11121 MiB
[I] 279558070 dxgi.c:395 | dxgi_init | Device Sys Mem : 0 MiB
[I] 279558401 dxgi.c:396 | dxgi_init | Shared Sys Mem : 4086 MiB
[I] 279676851 dxgi.c:503 | dxgi_init | Feature Level : 0xc100
[I] 279677260 dxgi.c:504 | dxgi_init | Capture Size : 1024 x 768
[I] 279677675 dxgi.c:505 | dxgi_init | AcquireLock : enabled
[I] 279678067 dxgi.c:506 | dxgi_init | Debug mode : disabled
[I] 279679099 dxgi.c:598 | dxgi_init | Source Format : DXGI_FORMAT_B8G8R8A8_UNORM
[I] 279679507 dxgi.c:640 | dxgi_init | Request Size : 1024 x 768
[I] 279680281 dxgi.c:658 | dxgi_init | Output Size : 1024 x 768
[I] 279680742 dxgi.c:666 | dxgi_init | Copy backend : Direct3D 11
[I] 279681276 dxgi.c:667 | dxgi_init | Damage-aware copy : enabled
[I] 279681817 app.c:379 | captureStart | ==== [ Capture Start ] ====
[I] 279682325 app.c:312 | frameThread | Frame thread started
I was able to get it to load into the login screen only one time in looking-glass from the client and I haven’t been able to recreate it even though I didn’t change anything. This is my first time trying to set this up so maybe I am missing something simple? Also the only time I was able to get it past the purple screen into the login was with the “-s” flag to disable spice, in which I had no mouse or keyboard to actually log in, but the display was there.
here is the client log for reference:
[I] 27897067596 main.c:1786 | main | Looking Glass (B6-rc1)
[I] 27897067608 main.c:1787 | main | Locking Method: Atomic
[I] 27897067787 cpuinfo.c:37 | lgDebugCPU | CPU Model: AMD Ryzen 5 5600X 6-Core Processor
[I] 27897067790 cpuinfo.c:38 | lgDebugCPU | CPU: 1 sockets, 6 cores, 12 threads
[I] 27897079151 main.c:1162 | lg_run | Using font: /usr/share/fonts/TTF/DejaVuSansMono.ttf
[I] 27897079371 ivshmem.c:128 | ivshmemOpenDev | KVMFR Device : /dev/shm/looking-glass
[I] 27897081423 audio.c:159 | audio_init | Using AudioDev: PipeWire
[I] 27897081428 ps.c:245 | purespice_connect | Connecting to socket 127.0.0.1:5900
[I] 27897087422 rsa.c:178 | rsa_encryptPassword | Using Nettle
[I] 27897087989 ps.c:268 | purespice_connect | Connected
[I] 27897088068 channel_main.c:167 | onMessage_mainName | Guest name: win11
[I] 27897088082 channel_main.c:183 | onMessage_mainUUID | Guest UUID: d212f227-60e1-4c5d-910b-d9dfb20a249f
[I] 27897094689 ps.c:644 | ps_connectChannel | INPUTS channel connected
[I] 27897094718 channel.c:312 | onMessage_notify | [notify] keyboard channel is insecure
[I] 27897094781 egl.c:267 | egl_initialize | Double buffering is off
[I] 27897094785 main.c:1116 | tryRenderer | Using Renderer: EGL
[I] 27897103907 gl.c:58 | waylandGetEGLDisplay | Using eglGetPlatformDisplay
[I] 27897128603 egl.c:828 | egl_renderStartup | Single buffer mode
[I] 27897129648 egl.c:855 | egl_renderStartup | EGL : 1.5
[I] 27897129652 egl.c:856 | egl_renderStartup | Vendor : AMD
[I] 27897129654 egl.c:857 | egl_renderStartup | Renderer: AMD Radeon RX 6650 XT (radeonsi, navi23, LLVM 16.0.6, DRM 3.54, 6.6.8-arch1-1)
[I] 27897129658 egl.c:858 | egl_renderStartup | Version : OpenGL ES 3.2 Mesa 23.3.2-arch1.2
[I] 27897129662 egl.c:859 | egl_renderStartup | EGL APIs: OpenGL OpenGL_ES
[I] 27897129669 egl.c:930 | egl_renderStartup | Debug messages disabled, enable with egl:debug=true
[I] 27897162266 eglutil.c:35 | swapWithDamageInit | Using EGL_KHR_swap_buffers_with_damage
[I] 27897166275 main.c:1567 | lg_run | Guest Information:
[I] 27897166280 main.c:1568 | lg_run | Version : B6-rc1
[I] 27897166282 main.c:1589 | lg_run | UUID : d212f227-60e1-4c5d-910b-d9dfb20a249f
[I] 27897166288 main.c:1598 | lg_run | CPU Model: AMD Ryzen 5 5600X 6-Core Processor
[I] 27897166293 main.c:1599 | lg_run | CPU : 2 sockets, 2 cores, 2 threads
[I] 27897166296 main.c:1601 | lg_run | Using : DXGI Direct3D 11
[I] 27897166298 main.c:1637 | lg_run | OS : Windows
[I] 27897166301 main.c:1639 | lg_run | OS Name : Windows 10 Pro (Build: 22631)
[I] 27897166305 main.c:1661 | lg_run | Starting session
Let me know if I would be needed to provide any more information than this, the IVSHMEM driver also shows up correctly in the device manager, and the client and the host are both version B6-rc1. I am also making the connection to the vm through RDP with video set to ‘none’ if that makes any difference as well. Also here is my xml:
<domain type="kvm">
<name>win11</name>
<uuid>d212f227-60e1-4c5d-910b-d9dfb20a249f</uuid>
<metadata>
<libosinfo:libosinfo xmlns:libosinfo="http://libosinfo.org/xmlns/libvirt/domain/1.0">
<libosinfo:os id="http://microsoft.com/win/11"/>
</libosinfo:libosinfo>
</metadata>
<memory unit="KiB">8388608</memory>
<currentMemory unit="KiB">8388608</currentMemory>
<memoryBacking>
<source type="memfd"/>
<access mode="shared"/>
</memoryBacking>
<vcpu placement="static">10</vcpu>
<os firmware="efi">
<type arch="x86_64" machine="pc-q35-8.2">hvm</type>
<firmware>
<feature enabled="no" name="enrolled-keys"/>
<feature enabled="yes" name="secure-boot"/>
</firmware>
<loader readonly="yes" secure="yes" type="pflash">/usr/share/edk2/x64/OVMF_CODE.secboot.4m.fd</loader>
<nvram template="/usr/share/edk2/x64/OVMF_VARS.4m.fd">/var/lib/libvirt/qemu/nvram/win11_VARS.fd</nvram>
<bootmenu enable="yes"/>
</os>
<features>
<acpi/>
<apic/>
<hyperv mode="custom">
<relaxed state="on"/>
<vapic state="on"/>
<spinlocks state="on" retries="8191"/>
<vendor_id state="on" value="1234567890ab"/>
</hyperv>
<kvm>
<hidden state="on"/>
</kvm>
<smm state="on"/>
</features>
<cpu mode="host-passthrough" check="none" migratable="on"/>
<clock offset="localtime">
<timer name="rtc" tickpolicy="catchup"/>
<timer name="pit" tickpolicy="delay"/>
<timer name="hpet" present="no"/>
<timer name="hypervclock" present="yes"/>
</clock>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>destroy</on_crash>
<pm>
<suspend-to-mem enabled="no"/>
<suspend-to-disk enabled="no"/>
</pm>
<devices>
<emulator>/usr/bin/qemu-system-x86_64</emulator>
<disk type="file" device="disk">
<driver name="qemu" type="qcow2"/>
<source file="/home/nick/vm/win11.qcow2"/>
<target dev="vda" bus="virtio"/>
<boot order="2"/>
<address type="pci" domain="0x0000" bus="0x03" slot="0x00" function="0x0"/>
</disk>
<disk type="file" device="cdrom">
<driver name="qemu" type="raw"/>
<source file="/home/nick/Downloads/Win11_23H2_English_x64v2.iso"/>
<target dev="sdb" bus="sata"/>
<readonly/>
<boot order="1"/>
<address type="drive" controller="0" bus="0" target="0" unit="1"/>
</disk>
<disk type="file" device="cdrom">
<driver name="qemu" type="raw"/>
<source file="/home/nick/Downloads/virtio-win-0.1.240.iso"/>
<target dev="sdc" bus="sata"/>
<readonly/>
<boot order="3"/>
<address type="drive" controller="0" bus="0" target="0" unit="2"/>
</disk>
<controller type="usb" index="0" model="qemu-xhci" ports="15">
<address type="pci" domain="0x0000" bus="0x02" slot="0x00" function="0x0"/>
</controller>
<controller type="pci" index="0" model="pcie-root"/>
<controller type="pci" index="1" model="pcie-root-port">
<model name="pcie-root-port"/>
<target chassis="1" port="0x10"/>
<address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x0" multifunction="on"/>
</controller>
<controller type="pci" index="2" model="pcie-root-port">
<model name="pcie-root-port"/>
<target chassis="2" port="0x11"/>
<address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x1"/>
</controller>
<controller type="pci" index="3" model="pcie-root-port">
<model name="pcie-root-port"/>
<target chassis="3" port="0x12"/>
<address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x2"/>
</controller>
<controller type="pci" index="4" model="pcie-root-port">
<model name="pcie-root-port"/>
<target chassis="4" port="0x13"/>
<address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x3"/>
</controller>
<controller type="pci" index="5" model="pcie-root-port">
<model name="pcie-root-port"/>
<target chassis="5" port="0x14"/>
<address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x4"/>
</controller>
<controller type="pci" index="6" model="pcie-root-port">
<model name="pcie-root-port"/>
<target chassis="6" port="0x15"/>
<address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x5"/>
</controller>
<controller type="pci" index="7" model="pcie-root-port">
<model name="pcie-root-port"/>
<target chassis="7" port="0x16"/>
<address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x6"/>
</controller>
<controller type="pci" index="8" model="pcie-root-port">
<model name="pcie-root-port"/>
<target chassis="8" port="0x17"/>
<address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x7"/>
</controller>
<controller type="pci" index="9" model="pcie-root-port">
<model name="pcie-root-port"/>
<target chassis="9" port="0x18"/>
<address type="pci" domain="0x0000" bus="0x00" slot="0x03" function="0x0" multifunction="on"/>
</controller>
<controller type="pci" index="10" model="pcie-root-port">
<model name="pcie-root-port"/>
<target chassis="10" port="0x19"/>
<address type="pci" domain="0x0000" bus="0x00" slot="0x03" function="0x1"/>
</controller>
<controller type="pci" index="11" model="pcie-root-port">
<model name="pcie-root-port"/>
<target chassis="11" port="0x1a"/>
<address type="pci" domain="0x0000" bus="0x00" slot="0x03" function="0x2"/>
</controller>
<controller type="pci" index="12" model="pcie-root-port">
<model name="pcie-root-port"/>
<target chassis="12" port="0x1b"/>
<address type="pci" domain="0x0000" bus="0x00" slot="0x03" function="0x3"/>
</controller>
<controller type="pci" index="13" model="pcie-root-port">
<model name="pcie-root-port"/>
<target chassis="13" port="0x1c"/>
<address type="pci" domain="0x0000" bus="0x00" slot="0x03" function="0x4"/>
</controller>
<controller type="pci" index="14" model="pcie-root-port">
<model name="pcie-root-port"/>
<target chassis="14" port="0x1d"/>
<address type="pci" domain="0x0000" bus="0x00" slot="0x03" function="0x5"/>
</controller>
<controller type="pci" index="15" model="pcie-root-port">
<model name="pcie-root-port"/>
<target chassis="15" port="0x8"/>
<address type="pci" domain="0x0000" bus="0x00" slot="0x01" function="0x0"/>
</controller>
<controller type="pci" index="16" model="pcie-to-pci-bridge">
<model name="pcie-pci-bridge"/>
<address type="pci" domain="0x0000" bus="0x08" slot="0x00" function="0x0"/>
</controller>
<controller type="sata" index="0">
<address type="pci" domain="0x0000" bus="0x00" slot="0x1f" function="0x2"/>
</controller>
<controller type="virtio-serial" index="0">
<address type="pci" domain="0x0000" bus="0x0b" slot="0x00" function="0x0"/>
</controller>
<filesystem type="mount" accessmode="passthrough">
<driver type="virtiofs"/>
<source dir="/home/data"/>
<target dir="/home/data"/>
<address type="pci" domain="0x0000" bus="0x05" slot="0x00" function="0x0"/>
</filesystem>
<interface type="network">
<mac address="52:54:00:98:29:22"/>
<source network="default"/>
<model type="e1000e"/>
<address type="pci" domain="0x0000" bus="0x01" slot="0x00" function="0x0"/>
</interface>
<input type="mouse" bus="ps2"/>
<input type="keyboard" bus="ps2"/>
<input type="keyboard" bus="virtio">
<address type="pci" domain="0x0000" bus="0x09" slot="0x00" function="0x0"/>
</input>
<tpm model="tpm-crb">
<backend type="emulator" version="2.0"/>
</tpm>
<graphics type="spice" autoport="yes">
<listen type="address"/>
</graphics>
<audio id="1" type="none"/>
<video>
<model type="none"/>
</video>
<hostdev mode="subsystem" type="pci" managed="yes">
<source>
<address domain="0x0000" bus="0x09" slot="0x00" function="0x0"/>
</source>
<rom file="/usr/share/vgabios/gtx1080ti.rom"/>
<address type="pci" domain="0x0000" bus="0x06" slot="0x00" function="0x0"/>
</hostdev>
<hostdev mode="subsystem" type="pci" managed="yes">
<source>
<address domain="0x0000" bus="0x09" slot="0x00" function="0x1"/>
</source>
<rom file="/usr/share/vgabios/gtx1080ti.rom"/>
<address type="pci" domain="0x0000" bus="0x07" slot="0x00" function="0x0"/>
</hostdev>
<watchdog model="itco" action="reset"/>
<memballoon model="virtio">
<address type="pci" domain="0x0000" bus="0x04" slot="0x00" function="0x0"/>
</memballoon>
<shmem name="looking-glass">
<model type="ivshmem-plain"/>
<size unit="M">32</size>
<address type="pci" domain="0x0000" bus="0x10" slot="0x01" function="0x0"/>
</shmem>
</devices>
</domain>