Return to Level1Techs.com

Looking Glass Purple screen of no input

Hello, was wondering if I’m doing something stupid. Followed the quick setup guide and could never get video to render. I believe it might be an issue with looking-glass-host.exe but I might be wrong. I have it scheduled to launch at startup but is it supposed to have an taskbar item or a presence in the task manager? I don’t see it ever running. This is a vanilla win10 1909 install that’s unregistered. I didn’t want to use my key until I’ve proven it’s running.

It’s been patched up, running the radeon drivers and vs2019c++ runtime and that’s about it other than the looking-glass-host.exe added to the task scheduler. I have virtio-win 0.1.171 guest additions installed, but I don’t see a ishmev device in windows. I’m pretty sure I saw it in the suggested when I tried with the 0.1.161 as in the config. I upgraded when I was having this same issue with the earlier release. I’m running the official release for looking-glass-host.exe and compiled b1 release from the git repo for the client. Rig is a v1 threadripper with two vega 64s running fedora 31 if that helps. I do have a dummy plug, but currently the video is set up to another input on my monitor - doesn’t work. Have it set to spice currently so I can see the desktop. I also have the win10 guest autologin so and looking-glass-host.exe run with a 30 second delay so that shouldn’t be an issue… Let me know if I need to post any more info. Followed the beginning of Wendell’s guide for fedora up to the enhancements - like page file optimizations - due to not getting this working. Shout out for Wendell and the rest of the comments on that post (Thank you!)

Looking at some other posts here I’ve fallen back to X11, don’t know if that’s manitory or not, tried both. It will just wait forever.

$ ./looking-glass-client 
[I]               main.c:996  | run                            | Looking Glass (B1-rc6-5-g8ad2d5f949+1)
[I]               main.c:997  | run                            | Locking Method: Atomic
[I]                egl.c:187  | egl_initialize                 | Double buffering is on
[I]                egl.c:201  | egl_initialize                 | Multsampling enabled, max samples: 4
[I]               main.c:902  | try_renderer                   | Using Renderer: EGL
[I]               main.c:1183 | run                            | Using Clipboard: X11
[I]              spice.c:197  | spice_connect                  | Remote: 127.0.0.1:5900
[I]               main.c:1259 | run                            | Waiting for host to signal it's ready...
[I]              spice.c:409  | spice_on_common_read           | notify message: keyboard channel is insecure
[I]                egl.c:447  | egl_render_startup             | Vendor  : X.Org
[I]                egl.c:448  | egl_render_startup             | Renderer: Radeon RX Vega (VEGA10, DRM 3.33.0, 5.3.16-300.fc31.x86_64, LLVM 9.0.0)
[I]                egl.c:449  | egl_render_startup             | Version : OpenGL ES 3.2 Mesa 19.2.7

<domain type='kvm' id='2'>
  <name>win10</name>
  <uuid>redacted</uuid>
  <metadata>
    <libosinfo:libosinfo xmlns:libosinfo="http://libosinfo.org/xmlns/libvirt/domain/1.0">
      <libosinfo:os id="http://microsoft.com/win/10"/>
    </libosinfo:libosinfo>
  </metadata>
  <memory unit='KiB'>8388608</memory>
  <currentMemory unit='KiB'>8388608</currentMemory>
  <vcpu placement='static'>8</vcpu>
  <resource>
    <partition>/machine</partition>
  </resource>
  <os>
    <type arch='x86_64' machine='pc-q35-4.1'>hvm</type>
    <loader readonly='yes' type='pflash'>/usr/share/edk2/ovmf/OVMF_CODE.fd</loader>
    <nvram>/var/lib/libvirt/qemu/nvram/win10_VARS.fd</nvram>
  </os>
  <features>
    <acpi/>
    <apic/>
    <hyperv>
      <relaxed state='on'/>
      <vapic state='on'/>
      <spinlocks state='on' retries='8191'/>
    </hyperv>
    <vmport state='off'/>
  </features>
  <cpu mode='custom' match='exact' check='full'>
    <model fallback='forbid'>EPYC-IBPB</model>
    <vendor>AMD</vendor>
    <feature policy='require' name='x2apic'/>
    <feature policy='require' name='tsc-deadline'/>
    <feature policy='require' name='hypervisor'/>
    <feature policy='require' name='tsc_adjust'/>
    <feature policy='require' name='arch-capabilities'/>
    <feature policy='require' name='cmp_legacy'/>
    <feature policy='require' name='perfctr_core'/>
    <feature policy='require' name='virt-ssbd'/>
    <feature policy='require' name='skip-l1dfl-vmentry'/>
    <feature policy='disable' name='monitor'/>
    <feature policy='disable' name='svm'/>
    <feature policy='require' name='topoext'/>
  </cpu>
  <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='cdrom'>
      <driver name='qemu' type='raw'/>
      <source file='/home/redacted/Downloads/Win10_1909_English_x64.iso'/>
      <backingStore/>
      <target dev='sda' bus='sata'/>
      <readonly/>
      <alias name='sata0-0-0'/>
      <address type='drive' controller='0' bus='0' target='0' unit='0'/>
    </disk>
    <disk type='file' device='cdrom'>
      <driver name='qemu' type='raw'/>
      <source file='/home/redacted/Downloads/virtio-win-0.1.171.iso'/>
      <backingStore/>
      <target dev='sdb' bus='sata'/>
      <readonly/>
      <alias name='sata0-0-1'/>
      <address type='drive' controller='0' bus='0' target='0' unit='1'/>
    </disk>
    <disk type='block' device='disk'>
      <driver name='qemu' type='raw'/>
      <source dev='/dev/disk/by-id/nvme-eui.redacted'/>
      <backingStore/>
      <target dev='sdc' bus='sata'/>
      <boot order='1'/>
      <alias name='sata0-0-2'/>
      <address type='drive' controller='0' bus='0' target='0' unit='2'/>
    </disk>
    <controller type='usb' index='0' model='qemu-xhci' ports='15'>
      <alias name='usb'/>
      <address type='pci' domain='0x0000' bus='0x02' slot='0x00' function='0x0'/>
    </controller>
    <controller type='sata' index='0'>
      <alias name='ide'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x1f' function='0x2'/>
    </controller>
    <controller type='pci' index='0' model='pcie-root'>
      <alias name='pcie.0'/>
    </controller>
    <controller type='pci' index='1' model='pcie-root-port'>
      <model name='pcie-root-port'/>
      <target chassis='1' port='0x10'/>
      <alias name='pci.1'/>
      <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'/>
      <alias name='pci.2'/>
      <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'/>
      <alias name='pci.3'/>
      <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'/>
      <alias name='pci.4'/>
      <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'/>
      <alias name='pci.5'/>
      <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'/>
      <alias name='pci.6'/>
      <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'/>
      <alias name='pci.7'/>
      <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'/>
      <alias name='pci.8'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x7'/>
    </controller>
    <controller type='pci' index='9' model='pcie-to-pci-bridge'>
      <model name='pcie-pci-bridge'/>
      <alias name='pci.9'/>
      <address type='pci' domain='0x0000' bus='0x06' slot='0x00' function='0x0'/>
    </controller>
    <controller type='virtio-serial' index='0'>
      <alias name='virtio-serial0'/>
      <address type='pci' domain='0x0000' bus='0x03' slot='0x00' function='0x0'/>
    </controller>
    <interface type='network'>
      <mac address='redacted'/>
      <source network='default' portid='redacted' bridge='virbr0'/>
      <target dev='vnet0'/>
      <model type='e1000e'/>
      <alias name='net0'/>
      <address type='pci' domain='0x0000' bus='0x01' slot='0x00' function='0x0'/>
    </interface>
    <serial type='pty'>
      <source path='/dev/pts/1'/>
      <target type='isa-serial' port='0'>
        <model name='isa-serial'/>
      </target>
      <alias name='serial0'/>
    </serial>
    <console type='pty' tty='/dev/pts/1'>
      <source path='/dev/pts/1'/>
      <target type='serial' port='0'/>
      <alias name='serial0'/>
    </console>
    <channel type='spiceport'>
      <source channel=''/>
      <target type='virtio' name='com.redhat.spice.0' state='connected'/>
      <alias name='channel0'/>
      <address type='virtio-serial' controller='0' bus='0' port='1'/>
    </channel>
    <input type='tablet' bus='usb'>
      <alias name='input0'/>
      <address type='usb' bus='0' port='1'/>
    </input>
    <input type='mouse' bus='ps2'>
      <alias name='input1'/>
    </input>
    <input type='keyboard' bus='ps2'>
      <alias name='input2'/>
    </input>
    <graphics type='spice' port='5900' autoport='yes' listen='127.0.0.1'>
      <listen type='address' address='127.0.0.1'/>
      <image compression='off'/>
      <gl enable='no' rendernode='/dev/dri/by-path/pci-0000:45:00.0-render'/>
    </graphics>
    <sound model='ich9'>
      <alias name='sound0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x1b' function='0x0'/>
    </sound>
    <video>
      <model type='qxl' ram='65536' vram='65536' vgamem='16384' heads='1' primary='yes'/>
      <alias name='video0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x0'/>
    </video>
    <hostdev mode='subsystem' type='pci' managed='yes'>
      <driver name='vfio'/>
      <source>
        <address domain='0x0000' bus='0x0b' slot='0x00' function='0x0'/>
      </source>
      <alias name='hostdev0'/>
      <address type='pci' domain='0x0000' bus='0x04' slot='0x00' function='0x0'/>
    </hostdev>
    <hostdev mode='subsystem' type='pci' managed='yes'>
      <driver name='vfio'/>
      <source>
        <address domain='0x0000' bus='0x0b' slot='0x00' function='0x1'/>
      </source>
      <alias name='hostdev1'/>
      <address type='pci' domain='0x0000' bus='0x05' slot='0x00' function='0x0'/>
    </hostdev>
    <hostdev mode='subsystem' type='pci' managed='yes'>
      <driver name='vfio'/>
      <source>
        <address domain='0x0000' bus='0x46' slot='0x00' function='0x3'/>
      </source>
      <alias name='hostdev2'/>
      <address type='pci' domain='0x0000' bus='0x08' slot='0x00' function='0x0'/>
    </hostdev>
    <redirdev bus='usb' type='spicevmc'>
      <alias name='redir0'/>
      <address type='usb' bus='0' port='2'/>
    </redirdev>
    <redirdev bus='usb' type='spicevmc'>
      <alias name='redir1'/>
      <address type='usb' bus='0' port='3'/>
    </redirdev>
    <memballoon model='virtio'>
      <alias name='balloon0'/>
      <address type='pci' domain='0x0000' bus='0x07' slot='0x00' function='0x0'/>
    </memballoon>
    <shmem name='looking-glass'>
      <model type='ivshmem-plain'/>
      <size unit='M'>128</size>
      <alias name='shmem0'/>
      <address type='pci' domain='0x0000' bus='0x09' slot='0x01' function='0x0'/>
    </shmem>
  </devices>
  <seclabel type='dynamic' model='selinux' relabel='yes'>
    <label>system_u:system_r:svirt_t:s0:c416,c555</label>
    <imagelabel>system_u:object_r:svirt_image_t:s0:c416,c555</imagelabel>
  </seclabel>
  <seclabel type='dynamic' model='dac' relabel='yes'>
    <label>+107:+107</label>
    <imagelabel>+107:+107</imagelabel>
  </seclabel>
</domain>

Here’s the xml from virt-manager. Hoping to get up and going during the extra time over the break. Happy Holidays!

Remove this device, or disable it in windows, it will prevent the host from launching.

Greetings Geoffrey!

virt-manager wouldn’t let me delete it so I handled it via virsh. virt-manager added the following:

<video>
  <model type="cirrus" vram="16384" heads="1" primary="yes"/>
  <alias name="video0"/>
  <address type="pci" domain="0x0000" bus="0x00" slot="0x01" function="0x0"/>
</video>

It got a little further however:

$ ./looking-glass-client -s
[I]               main.c:996  | run                            | Looking Glass (B1-rc6-5-g8ad2d5f949+1)
[I]               main.c:997  | run                            | Locking Method: Atomic
[I]                egl.c:187  | egl_initialize                 | Double buffering is on
[I]                egl.c:201  | egl_initialize                 | Multsampling enabled, max samples: 4
[I]               main.c:902  | try_renderer                   | Using Renderer: EGL
[I]               main.c:1183 | run                            | Using Clipboard: X11
[I]               main.c:1259 | run                            | Waiting for host to signal it's ready...
[I]                egl.c:447  | egl_render_startup             | Vendor  : X.Org
[I]                egl.c:448  | egl_render_startup             | Renderer: Radeon RX Vega (VEGA10, DRM 3.33.0, 5.3.16-300.fc31.x86_64, LLVM 9.0.0)
[I]                egl.c:449  | egl_render_startup             | Version : OpenGL ES 3.2 Mesa 19.2.7
[[email protected] build]$ ./looking-glass-client 
[I]               main.c:996  | run                            | Looking Glass (B1-rc6-5-g8ad2d5f949+1)
[I]               main.c:997  | run                            | Locking Method: Atomic
[I]                egl.c:187  | egl_initialize                 | Double buffering is on
[I]                egl.c:201  | egl_initialize                 | Multsampling enabled, max samples: 4
[I]               main.c:902  | try_renderer                   | Using Renderer: EGL
[I]               main.c:1183 | run                            | Using Clipboard: X11
[I]              spice.c:197  | spice_connect                  | Remote: 127.0.0.1:5900
[I]                egl.c:447  | egl_render_startup             | Vendor  : X.Org
[I]                egl.c:448  | egl_render_startup             | Renderer: Radeon RX Vega (VEGA10, DRM 3.33.0, 5.3.16-300.fc31.x86_64, LLVM 9.0.0)
[I]                egl.c:449  | egl_render_startup             | Version : OpenGL ES 3.2 Mesa 19.2.7
[I]               main.c:1259 | run                            | Waiting for host to signal it's ready...
[I]              spice.c:409  | spice_on_common_read           | notify message: keyboard channel is insecure

oh, or not. It just displayed the waiting for host further down the dialog this time around than before.

I disabled the generic microsoft device now too, but I can’t get any video feed currently from spice, looking glass, or the other monitor input.

Please note:
https://forum.level1techs.com/t/unavailable-fires-in-my-area

That said, you need to get the log from the host and see why it’s terminating. It will be at %TEMP%\looking-glass-host.txt.

Wow. Yes stay safe. Top priority!

For when you’re back. Learning of that log is huge. I was checking event logging and wasn’t aware of it’s existence. That really helped me piece it together from the other posts. Documenting it here in case others have the issue.

The main problem was the ivshmem device didn’t have a driver associated with it. If you install a higher version of the driver ivshmem does not show up as a missing device anymore. This driver is only in the upstream version of the driver and not the more current normal line of the virtio-win package. That was what was unknown to me. At least currently to my version you can plop the upstream0.1.161 zip and add the isvshmem device alongside 0.1.171 everything else and it works fine. The other part of the magic sauce was trashing the video interface like you gave in your first suggestion. I can now get an output from the vm though looking-glass! I don’t see output from the physical cable on my monitor but that wasn’t really part of the scope of this and is probably a different configuration needed in the xml, and I’m fine with that. Now is to tweak the looking-glass setting the way I like with barrier or synergy or hopefully not another physical keyboard/mouse. As well as other optimizations.

If anyone finds this helpful leave a Tip for gnif. I know I will!

And again stay safe.

none is a supported model type. It’s what I use.

<video>
    <model type='none'/>
</video>

https://libvirt.org/formatdomain.html#elementsVideo

You may also type it into virt-manager if you don’t want to edit the xml.

image