top of page
johnathanloendorf4

Windows10 €? Kind Of A Hello World With A SurfaceDial In A Windows Store App



Windows 10 will mean the end of grand, sweeping changes, with a marked increase in the sort of minute, quality-of-life tweaks we've grown accustomed to on our smartphones and tablets. Cortana will learn new tricks, and the interface will become flexible enough to support entirely new kinds of devices, like Microsoft's HoloLens . Should Windows Phone survive, we'll eventually see the world Microsoft envisioned back at the launch of Windows 8, when every device was supposed to feel right at home.


While there is plenty of great DJ gear to perform with in the world, the fact is that most big clubs, festival stages, and other venues use Pioneer DJ gear such as the CDJ-3000 or CDJ-2000NXS media player decks. So if you want to show up to DJ with just USB sticks that plug into those CDJs, you have to prep your music files with Rekordbox software. The free version of Rekordbox lets anyone prepare music files to be used with Pioneer DJ hardware. But to actually DJ with Rekordbox on a computer with Pioneer DJ controllers, whether to practice at home or to perform, you need to purchase one of the three tiers of a yearly or monthly subscription. The higher-priced Creative and Professional subscriptions let you store your music on an Android or Apple smartphone and access it either with manual syncing or Dropbox auto-syncing. The Professional sub includes unlimited Dropbox music storage.




Windows10 – Kind of a Hello World with a SurfaceDial in a Windows Store App



  • Late in 2016 Microsoft made a bold announcement with Qualcomm introducing new devices for ARM64 that would support existing legacy x86 Win32 applications via emulation: -and-qualcomm-bring-windows-10-to-snapdragon-processors. This was a very "WOW!" moment for, like "wow, they're doing to this!" and "wow, this will be fun to experiment with!". This was the kind of announcement I had expected from nVidia a year earlier - an "emulation everywhere" device. To run existing x86 Win32 desktop apps, it means that this device would load arbitrary x86 code, not a closed Store-only device like a Surface RT, an iPad, or a typical Android tablet. This therefore implied that my existing Atari and Mac emulators would just work unmodified, allowing Atari 800 games, Atari ST apps, Apple Macintosh binaries, as well as x86 Windows applications to all run on an ARM64 device.From an engineering point of view alone this was fascinating and a long overdue return of x86 emulation to Windows. Recall that at one time in the mid-1990's Windows NT has been ported and was running on not just on x86 processors but also on MIPS, Alpha, PowerPC, and later Itanium. The NT kernel (unlike the MS-DOS based Windows kernel) was designed to be portable to any 32-bit or 64-bit processor and with technology like FX!32 and IA32-EL you could get some amount of x86 backward compatibility. So this concept did exist, but for various reasons (size, cost, speed) the market thinned and AMD and Intel's x86 chips became the sole survivors on desktop PCs by Windows 7 days.PowerPC (which I've used since the early early days of PowerPC 601 based Macintosh computers) continued to exist on other platforms. Back in 2010 in my Part 32 post on PowerPC, I wrote about what a great architecture PowerPC was and how sad that Sony was removing the PowerPC Linux support from the Playstation 3, then Fedora dropped PowerPC as a first-class distro. Later of course we know both Playstation and Xbox both went to x86 for their next generations, and Apple had already dropped PowerPC from Macs a few years earlier, so PowerPC for various reasons also fell out of favor.In the very previous Part 31 post I pondered that maybe ARM might be alternative to PowerPC, that ARM devices could be the "emulation everywhere" platform. To quote a few things I said 8 years ago:"Apple iPad makes such a scenario even more compelling... a small thin device with mostly always-on Internet connectivity such as the iPad... to provide access to cloud instances while still having the juice and horsepower to run applications locally if so desired... QEMU could hold the key to providing a non-VT alternative to virtualization on mainstream PCs."Back at the 2002 Consumer Electronics Show, Bill Gates showed the prototype "Mira", a wireless ARM-based tablet device that acted as a remote desktop tethered to a larger PC). The hardware industry made other attempts at such devices in various form factors afterwards. Some of you may recall my old posts in 2004 about the Sony VAIO U750P pocket Windows XP tablet that I brought back from a trip to Japan once. The U750P features a Pentium M x86 processor running full Windows XP desktop release in a handheld touch screen device. Then by 2008 there was the wave of "netbooks" such as Acer Aspire and the ASUS EEE PC pictured here which was a traditional keyboard-based clamshell, but just very small, great for maps and email but slow compared to a desktop: In 2010 the iPad was really the device that hit the right form factor, inspiring an endless series of similar Android tablets and the Surface RT. I remember writing about buying the Thinkpad Android tablet 7 years ago and seeing the potential of what such a device could bring. But unfortunately the iPad, the Surface RT, the endless Android tablets even today still cannot run arbitrary code such as a Linux distro or an unlocked desktop version of Windows. You had to use their built-in apps or purchase store apps. And many of these earlier devices lacked 3G or 4G connectivity, so you had to tether to a Wifi hotspot.But key to me: none of those devices could cannot act as their own development environment, as they are not standalone PCs. My existing software will not just work on them. The Surface RT for example did not run Visual Studio, so you had to develop the ARM apps on another PC then copy them over - the cell phone development model basically. And from what I understand certain stores do not even permit emulators to be submitted, so trying to even develop an Atari ST or Macintosh emulator on an iPad is pretty much a non-starter.Certainly there have been some really cool standalone unlocked devices which I show in the demo video below. Devices such as the Intel NUC and the nVidia Jetson TX1. These devices are still not portable though nor are they battery powered, they are merely tiny desktop machines which still require an AC charger.So you can understand now why the Microsoft/Qualcomm announcement really got me excited. It ticks off a number of checkboxes that are appealing to a developer:4G LTE wireless connectivity is standard, which avoids the need for Wifi tethering, great for when stuck in Seattle rush hour gridlock.

  • Windows Hello camera with facial recognition based login is standard, as is TPM based Bitlocker drive encryption.

  • the ARM64 processor is much more efficient than mobile x86 processors, resulting in longer battery life over mobile Intel processors.

  • it runs the regular unlocked desktop Windows 10 Pro, it runs Visual Studio, meaning that I can use it as a standalone development environment.

  • it includes built-in x86 user mode application emulation, meaning that my existing Atari and Macintosh emulators "just work".

  • they are light and portable just like any laptop which means it is the only device I need to carry around, I don't need to carry a separate development machine.

  • By the 2018 Consumer Electronics Show early this year it was announced that devices from HP, Lenovo, and ASUS would be available: -windows-10-qualcomm-arm-laptops-launchHP shipped here in the U.S. first, so I ordered an HP Envy X2 device directly from hp.com website and that is the device I feature in the unboxing video below. I recently also just placed orders for the ASUS NovaGo and Lenovo Miix devices and hope to have those in my hands for a future post this summer.To stress test the Envy X2 I have been carrying it with me everywhere for the past two months and love it. This weekend for example I took it to the Boston Red Sox game at Safeco Field. Getting a 4G signal and doing pull commits from GitHub was no problem, no Wifi connection required.Of the typical programs, tools, and apps that I use on my other PCs every day (meaning of course that they are x86 binaries) I can confirm that all of these run on the HP Envy X2 ARM64 device:versions 8.x and 9.0 versions of my Gemulator, SoftMac, and Xformer emulators for Windows XP and Windows 7 all work as-is, I did not have to recompile or modify them at all despite quite hairy x86 assembly code that I use in those,

  • the Office 2016 apps I use every day: Outlook, Word, Excel, and PowerPoint,

  • the latest browsers as of June 17 2018: Chrome 67.0.3396.87 and Firefox 61.0b14,

  • the one and only text editor I have used for the past 30 years: vi.exe

  • Visual Studio 2015 and Visual Studio 2017 - command line compiler and linker tools (cl.exe link.exe) as well as the graphical VS IDE (devenv.exe)

  • Valve client app and games such as Super Meat Boy, Bejeweled 2, and Zuma Deluxe

  • music and video streaming apps such as Netflix, Sonos desktop controller, and Spotify

  • One thing not to miss when watching Microsoft's BUILD video (which is embedded further down on this page) and which is also confirmed here is that these ARM64 devices also now support the Windows Subsystem for Linux as have their AMD/Intel counterparts since last year. This means that you can install the latest ARM64 version of Ubuntu 18.04 and run unmodified Ubuntu binaries such as bash, ssh, apt, and the gcc compiler toolset side-by-side with your Windows applications. I have just begun to explore this feature and will follow up at a later time.I have confirmed the claim about "all day" battery life, the ability to carry this device around all day without needing to recharge or carry a USB-C charger around. I have verified this day after day for the past few months as I pull it off the USB-C charger in the morning and carry the device around for about 12 hours per day before putting it back on the charger. Most days the charge does not drop before 50-60%. The other way I tested this was to stress the device by maxing out the CPU all day long. I loaded up Xformer 10 and ran it in tiled mode which ran multiple Atari 800 games at once, I loaded YouTube up in a browser and just let it loop through videos, loaded Outlook the pull emails in the background, launched Task Manager to confirm the CPU was pegged at 100%, let 4G and Wifi both enabled, turned off all battery saving and sleep modes, and set the brightness of the screen to a decent level. I then disconnected the charger and left the Envy X2 running all day starting at 8am. I checked on it a few times during the day to make sure all the videos and games were still playing, and by 9pm the battery had finally dropped down to below 10% charge. So figure it would have run out of juice around 10pm, that's about 14 hours of no-idle full-tilt 100% CPU usage without a charge. It really does live up to the claim.Another feature I am able to verify is the 4K HDMI video output via one of many USB-C dongles that can plugged in to the device. As picture here, I was able to trivially connect the HP Envy X2 to my Sony 4K television output a second screen at 3840x2160 resolution. I was also able to trivially pair a Surface Keyboard and a Surface Dial, giving me external keyboard and scroll wheel functionality. Setting up the HP Envy X2 in Windows 10 Pro mode with Visual Studio 2017You hopefully understand now why I am so excited about these ARM64 devices. So with no further delay here is my exciting very over-caffeinated video of me unboxing the HP Envy X2. :-) To summarize the video, I show a variety of earlier generation low-power devices such as the Surface RT, the nVidia Jetson TX1, the Sony VAIO U750P, the Samsung Chromebook, and several generations of Surface Pro devices as well as the Surfacebook. After unboxing the Envy X2 device I talk briefly about different 4G LTE SIM card options, such as the Sprint card that comes bundled with some devices, and the Google Project Fi card which is a T-Mobile SIM card. (personally, the Project Fi is my data plan of choice).Should you the reader acquire one of the HP, ASUS, or Lenovo ARM64 devices, after you unbox your device follow these steps to set up it up as a Windows desktop PC and software development machine:Step 1: Apply Windows UpdateAfter charging the device and powering it up for the first time, you will be prompted through the Windows 10 OOBE (Out of Box Experience) which creates a local administrator on the machine. The first thing you will want to do of course is go to Windows Update and apply any Windows updates that came out while your device was in transit. As of this writing, you device should upgrade itself to Windows 10 1803, the "Spring Creators Update", also known as build 17134. To check for updates, click on the Start button, click "Settings" (the little round gear icon), click "Update & Security", and then "Check for updates". My device recently received the 1803 update, which looked like this, involving both a Windows 10 update as well as a Qualcomm firmware update:Step 2: Switch to Windows 10 Pro modeNext, ARM64 devices come configured in Windows 10 S mode (think "S" for "Store" or "Secure") which limits the device to only running pre-installed applications and Windows Store apps. S mode is a locked down mode of operation, not unlike Windows RT or a Chromebook, which blocks untrusted legacy code from running. This is useful in some situations such as a shared PC used by multiple family members for example.However, if you are developer or an experienced user needing to install legacy applications what you will want to do is switch over to Windows 10 Pro mode, the full desktop mode of Windows 10 allowing command prompts to be opened, PowerShell to run, x86 command line applications and legacy x86 Win32 applications to run. To do this go to the Windows Store (click on the Start button then click the Store tile in the menu) and search for Windows 10 Pro, the follow the instructions to perform the free switch to Windows 10 Pro mode:Step 3: Install Visual Studio 2017 with ARM64 supportThe next step for a developer is to install Visual Studio 2017, Windows development environment and tools which now includes compiler tools for ARM and ARM64. Simply go to and download the free Community Edition to run the installer.At the time of this writing in mid-June the latest preview release containing ARM64 support is Visual Studio 2017 15.8 Preview 2.0, but I have found that ever since about the 15.6 releases a few months ago the ARM64 compiler was included but just not installed by default. I suggest clicking on the "Individual components" list and manually verifying that the ARM64 compiler tools and SDK libraries options are checked. I also recommend selecting the "Git for Windows" option to install Git source control command line tools. Your ARM64 Windows 10 device is now ready to run x86 desktop applications and run the Visual Studio development tools.Microsoft's BUILD 2018 PresentationFor us software developer types there is additional information about these devices revealed at Microsoft's Windows on ARM talk at BUILD 2018 held recently in May 2018 here in Seattle. It gives a technical overview of not only the device hardware but how Microsoft implemented the x86 emulation capabilities and how the x86 and ARM64 parts all fit together: Among the key points to take away from this talk:Windows 10 on ARM64 is not a full-system emulation such as Bochs or QEMU or VirtualPC for Mac where everything including the Windows kernel is emulated x86. These systems use a combination of emulated x86, native ARM, and native ARM64 code.

  • The Windows kernel, Windows services, and Windows device drivers are true native ARM64 code. This is the code that you can think of as the "Ring 0" code on an AMD or Intel machine.

  • Many apps from the Windows Store as well as built-in apps such as Maps and Edge run as native ARM code, while some third-party Store apps run as emulated x86 code if they had not been submitted yet as supporting ARM.

  • Each individual x86 application (legacy or Store app) is emulated at the user mode level (what in x86 terminology is "Ring 3"), and system calls are then marshaled to the ARM64 kernel using WOW64 much as happens with 32-bit code on 64-bit AMD and Intel machines.

  • The ARM64 CPU consists of 4 "big cores" which run foreground applications at full speed and 4 "little cores" which run background services at a low clock speed to conserve power.

So unlike the traditional approach of just emulating a full Windows VM on top of QEMU or VirtualPC, the Windows 10 on ARM64 is a hybrid mix of a lot of native ARM/ARM64 code with a bit of emulate x86 legacy code. This results in much faster performance than having to emulate kernel mode and emulate hardware, as was the case with VirtualPC for Mac and QEMU when I discussed that scenario many years ago. 2ff7e9595c


1 view0 comments

Recent Posts

See All

Comentários


bottom of page