Search code examples
tizentizen-emulatortizen-studiotizen-tvtizen-tv-emulator

Error launching Tizen TV Emulator on Win 11 "-enable-whpx: invalid option"


I’m running Tizen Studio 5.0 on a Windows 11 Pro PC. When I try to launch the TV emulator, I receive a popup error message “-enable-whpx: invalid option” and the emulator does not launch.

Error when attempting to launch emulator

I've been following instructions from these links:

Installing TV SDK | Samsung Developers

Quick-start Guide | Samsung Developers

I am able to connect to a physical Samsung TV and deploy my app there, but I simply cannot get the emulator to run.

So far, I've verified:

  • my CPU supports virtualization
  • hardware virtualization is enabled in BOIS
  • Windows Feature Hyper-V is enabled

I've tried running the emulator via the command line. I receive the same "-enable-whpx: invalid option" message box, and a bunch of console output. Here is the output:

C:\tizen-studio\tools\emulator\bin> .\em-cli.bat -v launch -n t-0214-1
[2023.2.14 17:59:47.86][WARNING][ProfileList.get] cannot find profile
[2023.2.14 17:59:47.89][WARNING][EMLogger.printStackTrace] java.lang.NoClassDefFoundError: org/tizen/emulator/manager/ui/item/CommonViewItemFactoryV3
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:757)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:468)
        at java.net.URLClassLoader.access$100(URLClassLoader.java:74)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:369)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:363)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:362)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:419)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:352)
        at org.tizen.emulator.manager.plugin.EMPlugin.prepareLegacyEndpoint(EMPlugin.java:327)
        at org.tizen.emulator.manager.plugin.EMPlugin.initEMPlugin(EMPlugin.java:171)
        at org.tizen.emulator.manager.platform.Preparer.initializePlugin(Preparer.java:172)
        at org.tizen.emulator.manager.platform.Preparer.initPlatformList(Preparer.java:139)
        at org.tizen.emulator.manager.platform.Preparer.execute(Preparer.java:66)
        at org.tizen.emulator.manager.EmulatorManager.initialize(EmulatorManager.java:61)
        at org.tizen.emulator.manager.console.Main.startConsoleProcessor(Main.java:21)
        at org.tizen.emulator.manager.console.Main.main(Main.java:65)
Caused by: java.lang.ClassNotFoundException: org.tizen.emulator.manager.ui.item.CommonViewItemFactoryV3
        at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:419)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:352)
        ... 19 more

[2023.2.14 17:59:47.215][INFO][VMWorkerCommon.<init>] called VMWorkerCommon.
[2023.2.14 17:59:47.215][INFO][VMWorkerCommon.initLauncher] called initLauncher of VMWorkerCommon.
[2023.2.14 17:59:47.220][INFO][HelperClass.runProcess] Try to run external process: [C:\tizen-studio\tools\emulator\bin\check-gl.exe]
[2023.2.14 17:59:47.220][INFO][HelperClass.runProcess]  -- Working dir : C:\tizen-studio\tools\emulator\bin
[2023.2.14 17:59:47.458][INFO][CheckGPU.work] Support GPU: true
[2023.2.14 17:59:47.458][INFO][CheckGPU.work] Gallium: false
[2023.2.14 17:59:47.458][INFO][HelperClass.runProcess] Try to run external process: [C:\tizen-studio\tools\emulator\bin\check-whpx.exe, hyper-v]
[2023.2.14 17:59:47.459][INFO][HelperClass.runProcess]  -- Working dir : C:\tizen-studio\tools\emulator\bin
[2023.2.14 17:59:47.489][INFO][HelperClass.runProcess] Try to run external process: [C:\tizen-studio\tools\emulator\bin\check-hax.exe]
[2023.2.14 17:59:47.489][INFO][HelperClass.runProcess]  -- Working dir : C:\tizen-studio\tools\emulator\bin
[2023.2.14 17:59:47.521][INFO][CheckVT.work] Support HW virtualization: true
[2023.2.14 17:59:47.521][INFO][CheckVT.work] non-UG: false
[2023.2.14 17:59:47.525][INFO][HelperClass.runProcess] Try to run external process: [C:\tizen-studio\tools\emulator\bin\check-whpx.exe, hyper-v]
[2023.2.14 17:59:47.525][INFO][HelperClass.runProcess]  -- Working dir : C:\tizen-studio\tools\emulator\bin
[2023.2.14 17:59:47.554][INFO][HelperClass.runProcess] Try to run external process: [C:\tizen-studio\tools\emulator\bin\check-net.exe, --proxy]
[2023.2.14 17:59:47.554][INFO][HelperClass.runProcess]  -- Working dir : C:\tizen-studio\tools\emulator\bin
[2023.2.14 17:59:47.584][INFO][NetworkProxy.getHostProxy] check-net result : MODE:None

[2023.2.14 17:59:47.584][WARNING][NetworkProxy.getHostProxy] Can't find host proxy setting.
Launch command : "C:\tizen-studio\platforms/tizen-7.0/tv-samsung/emulator\bin\emulator.cmd" --conf "C:\tizen-studio-data\emulator\vms\t-0214-1\vm_launch.conf" -j "C:\tizen-studio\jdk\bin\java"
[2023.2.14 17:59:47.584][INFO][VMLauncher.getCommand] Starting Emulator Command :
[2023.2.14 17:59:47.585][INFO][VMLauncher.getCommand] "C:\tizen-studio\platforms/tizen-7.0/tv-samsung/emulator\bin\emulator.cmd" --conf "C:\tizen-studio-data\emulator\vms\t-0214-1\vm_launch.conf" -j "C:\tizen-studio\jdk\bin\java"
[2023.2.14 17:59:47.585][INFO][VMLauncher.launchInternal] Command list for ProcessBuilder
[2023.2.14 17:59:47.585][INFO][VMLauncher.launchInternal] [C:\tizen-studio\platforms/tizen-7.0/tv-samsung/emulator\bin\emulator.cmd, --conf, C:\tizen-studio-data\emulator\vms\t-0214-1\vm_launch.conf, -j, C:\tizen-studio\jdk\bin\java]
[2023.2.14 17:59:47.770][WARNING][LaunchingMonitor.executeInternal] Emulator has been terminated in 8seconds.
The VM is launched
[2023.2.14 17:59:47.772][INFO][Main$EMShutdownHook.run] EMShutdownHook called

Any advice on what to try next?

==== UPDATE AFTER FOLLOWING ADVICE ====

After following advice from @Sangwook Lee, I no longer receive the "-enable-whpx: invalid option" error. However, my emulator still does not start. Trying to start it produces two log files, emulator.log and emulator.klog. The .klog file is empty, and here is the content of the .log file:

21:06:32.817|32784|I|    osutil| 396|Running with elevated integrity level. Try to respawn.
21:06:32.821|32784|I|    osutil| 427|Respawning success. Waiting for child process.
21:06:32.832|20244|I|      main| 345|Start emulator...
qemu args: =========================================
"C:\tizen-studio\platforms\tizen-7.0\tv-samsung\emulator\bin\\emulator-x86_64" "-drive" "file=C:\tizen-studio-data\emulator\vms\T-samsung-7.0-x86\emulimg-T-samsung-7.0-x86.x86,if=none,index=0,cache.no-flush=on,id=drive" "-device" "virtio-blk-pci,drive=drive" "-drive" "file=C:\tizen-studio-data\emulator\vms\T-samsung-7.0-x86\swap-T-samsung-7.0-x86.img,if=none,index=1,id=swap" "-device" "virtio-blk-pci,drive=swap" "-enable-hax" "-device" "vigs,backend=gl,wsi=vigs_wsi" "-device" "yagl,wsi=vigs_wsi" "-smp" "4" "-m" "1024" "-device" "maru-virtual-tuner,system=ATSC,country=USA,table=C:\tizen-studio-data\emulator\vms\T-samsung-7.0-x86\tuner_default.cfg,stillimg=C:\tizen-studio\platforms\tizen-7.0\tv-samsung\emulator-resources\images,wsi=vigs_wsi" "-net" "nic,model=virtio" "-net" "user" "-chardev" "file,path=C:\tizen-studio-data\emulator\vms\T-samsung-7.0-x86\logs\emulator.klog,id=con0" "-device" "isa-serial,chardev=con0" "-device" "virtio-serial" "-L" "C:\tizen-studio\platforms/tizen-7.0/tv-samsung/emulator\data\bios" "-kernel" "C:\tizen-studio\platforms/tizen-7.0/tv-samsung/emulator\data\kernel\bzImage.x86" "-append" "vm_name=T-samsung-7.0-x86 video=LVDS-1:1920x1080-32@60 dpi=72 clocksource=hpet consoleblank=0  host_ip=10.0.2.2 console=ttyS0 model=4ksero yagl=1 force_pat" "-device" "virtio-maru-touchscreen-pci,max_point=10" "-nodefaults" "-device" "virtio-maru-esm-pci" "-device" "virtio-maru-hwkey-pci" "-device" "virtio-maru-evdi-pci" "-device" "virtio-maru-motor-pci" "-device" "virtio-maru-keyboard-pci" "-rtc" "base=utc" "-M" "maru-x86-machine" "-soundhw" "all" "-usb" "-vga" "none" "-device" "maru-external-input-pci,stillimg=C:\tizen-studio\platforms\tizen-7.0\tv-samsung\emulator-resources\images,wsi=vigs_wsi" "-display" "maru_qt,rendering=onscreen,resolution=1920x1080,dpi=72" 
====================================================
21:06:32.835|20244|I|      main| 348|qemu main start...
21:06:32.835|20244|I|emul_state| 733|initial display resolution: 1920x1080
21:06:32.835|20244|I|qt5_consol| 171|display density: 72
21:06:33.009|20244|I|qt5_supple| 515|* Qt version (compile time): 5.6.0
21:06:33.009|20244|I|qt5_supple| 516|* Qt version (runtime): 5.6.0
21:06:33.009|20244|I|qt5_supple| 517|* working path: "C:/tizen-studio/platforms/tizen-7.0/tv-samsung/emulator/bin"
21:06:33.009|20244|I|qt5_supple| 518|* binary path: "C:/tizen-studio/platforms/tizen-7.0/tv-samsung/emulator/bin"
21:06:33.009|20244|I|qt5_supple| 519|* Qt plugin library path: ("C:/tizen-studio/platforms/tizen-7.0/tv-samsung/emulator/bin")
21:06:33.009|20244|I|qt5_consol| 153|Display Type: QT5 Onscreen
ram_size 0x40000000
device fd:000000000000068c
21:06:33.019|20244|I|      main| 157|* Board name : Maru
21:06:33.019|20244|I|      main| 158|* Package Version: 2.8.0.26
21:06:33.019|20244|I|      main| 159|* Package Maintainer: Jingjing geng <[email protected]>
21:06:33.019|20244|I|      main| 160|* Git Head : 
21:06:33.019|20244|I|      main| 161|* 
21:06:33.019|20244|I|      main| 162|* User name : paulf
21:06:33.019|20244|I|      main| 163|* Host name : TURING
21:06:33.019|20244|I|      main| 166|* Build date : 2022-12-09 10:28:33 IST
21:06:33.019|20244|I|      main| 175|* Current time : 2023-02-21 21:06:33
21:06:33.019|20244|I|      main| 179|* Host Qt version : 5.6.0
21:06:33.019|20244|I|      main| 192|* Host SDL version : 2.0.4
21:06:33.020|20244|I|    osutil| 165|* Windows
21:06:33.020|20244|I|    osutil| 166|* LibPNG Version : 1.6.21
21:06:33.020|20244|I|    osutil| 173|* MajorVersion : 6, MinorVersion : 2, BuildNumber : 9200, PlatformId : 2, CSDVersion : 
21:06:33.020|20244|I|    osutil| 193|* Total Ram : 66807272 kB, Free: 50237628 kB
21:06:33.020|20244|I|net_helper| 178|Emulator base port is 26100.
21:06:33.020|20244|I|net_helper| 715|start sdb noti server thread.
21:06:33.020|20244|I|net_helper| 740|success to bind port[127.0.0.1:26103/udp] for sdb noti server in host 
21:06:33.020|20244|I|      main| 239|kernel commandline : vm_name=T-samsung-7.0-x86 video=LVDS-1:1920x1080-32@60 dpi=72 clocksource=hpet consoleblank=0  host_ip=10.0.2.2 console=ttyS0 model=4ksero yagl=1 force_pat sdb_port=26100, vm_resolution=1920x1080
dsound: Registering endpoint notification callback succeeded.
dsound: (dsound_create_thread) Done
dsound: (dsound_initialization_thread) CoInitializeEx succeeded
dsound: (dsound_audio_in_init) success
dsound: (dsound_audio_init) finished
Failed to sync vcpu reg
Failed to sync vcpu reg
Failed to sync vcpu reg
Failed to sync vcpu reg
Failed to sync vcpu reg
Failed to sync HAX vcpu context
dsound: (dsound_audio_fini)
dsound: (dsound_initialization_thread)thread exiting ...
dsound: (dsound_audio_fini)end uninitialize to free
21:06:33.081|20244|I|net_helper| 704|shutdown sdb notification server.
21:06:33.081|20244|I|      main|  91|Exit emulator...

Solution

  • Thanks to Sangwook Lee and Jianhua Bi for their assistance. Here is what worked for me.

    Environment

    • Machine: HP Z2 G9 Workstation PC
    • OS: Windows 11 Pro 10.0.22621
    • CPU: Intel i7-12700k

    Steps

    1. Install Oracle JDK 8u361 x64
    2. Install Tizen Studio 5.0 with IDE installer
    3. Launch Tizen Package Manager, on the Extension SDK tab, install TV Extensions-7.0
    4. Uninstall any installed versions of Intel HAXM via Add or remove programs
    5. In "Turn Windows features on or off" uncheck Hyper-V, Virtual Machine Platform, Windows Hypervisor Platform and Windows Subsystem for Linux
    6. Reboot - enter BIOS
    7. In BIOS, under Security / BIOS SureStart, turn off Virtualization Based BIOS Protection, and under Advanced / System Options, ensure that VTx and VTd are both enabled.
    8. Disable Settings / Privacy & Security / Windows Security / Core Isolation / Memory Integrity; reboot
    9. Disable HP SureClick: right-click HP Wolf in system tray, and disable each of the three options; set Windows services HP Sure Click Endpoint Service and HP Sure Click Host Management Service to disabled; reboot
    10. Ensure all services that could conflict with HAXM are disabled. Run the following in an admin command prompt and then reboot
    dism /Online /Disable-Feature:Microsoft-Hyper-V-All
    
    bcdedit /set hypervisorlaunchtype Off
    
    sc config vmickvpexchange start= disabled
    sc config vmicguestinterface start= disabled
    sc config vmicshutdown start= disabled
    sc config vmicheartbeat start= disabled
    sc config vmicvmsession start= disabled
    sc config vmicrdv start= disabled
    sc config vmictimesync start= disabled
    sc config vmicvss start= disabled
    
    reg add HKLM\System\CurrentControlSet\Control\DeviceGuard\Scenarios\HypervisorEnforcedCodeIntegrity /v Enabled /t REG_DWORD /d 0 /f
    
    1. Install HAXM 7.8.0
    2. In Tizen Emulator Manager, launch the TV emulator