Satya Nadella: Microsoft building the 'ultimate mobile device'


Microsoft CEO Satya Nadella has again reaffirmed the company's commitment to developing smartphones. Unfazed by its market share dropping beneath 1 percent, Nadella said Microsoft is planning a revolutionary "ultimate mobile device."

Nadella made the comments during an interview with the Australian Financial Review. He visited Sydney last week to address a local developers conference about Microsoft's cognitive computing systems and Azure cloud services.

Nadella outlined his plans for Microsoft's future involvement with smartphones. He suggested the company has stopped trying to rival the established leaders in the field. Instead, Microsoft is working on something for the future that it thinks will give it the upper-hand in the long term.


Nadella hinted at an "ultimate mobile device" that could give Microsoft a credible presence in the industry. The company seems keen to develop a product with unique capabilities that aren't replicated by its rivals. A key feature that already fits this description is the company's Continuum tech, Windows 10 Mobile's ability to transform itself into a desktop PC at a moment's notice.

"We will continue to be in the phone market not as defined by today's market leaders, but by what it is that we can uniquely do in what is the most ultimate mobile device," Nadella said. "Therefore [with Nokia assets], we stopped doing things that were me-too and started doing things, even if they are today very sub-scale, to be very focused on a specific set of customers who need a specific set of capabilities that are differentiated and that we can do a good job of."

How to deploy an Universal Windows Project on real device mobile?

I'm trying to debbuging my app on real device (lumia 830 with windows 10 mobile 10.0.10581.0) Developer Mode is ON on both devices (mobile and PC), but when I'm deploying my app on my device I've got an error (DEP6100 and DEP6200). Howevere i can easily emulate on emulators and my PC, couldn’t understand whats the problem.

I googled a bit and I discovered how to resolve the problem.


  • Create a Registry Key in: [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SirepClient] (Probably you will need to create it)
  • Create a dword with name "DisableProtocol3" and value 00000001
  • Restart Visual Studio and try deploying the solution back again.

It's a provisional solution meanwhile a patch is included in Windows 10 mobile. We will have to consider deleting this key after that.

If you want to inspect your device, connect your device via USB and open a browser and type

And you can watch your device in action!

Windows 10 Device – Home


Windows 10 Device – App Manager


Windows 10 Device – File Explorer


Windows 10 Device – Processes


Windows 10 Device – Performances (in real time!)


Microsoft's multipronged strategy for bringing speech to IoT devices



Microsoft has been stepping up its game around connecting its Azure cloud services to Internet of Things (IoT) devices. But few may realize the company also is simultaneously working to bring its various speech capabilities to IoT devices, too.

Microsoft provides IoT developers with various tools for integrating speech with their devices. There are built-in Windows 10 speech application programming interfaces (APIs) for tasks like dictating a simple message and Web search. There are natural-language services -- known as Language Understanding Intelligent Service (LUIS) -- that are part of Microsoft Research's Oxford API set, and are available for non-Windows platforms, too. There's Bing Translate. And there's Cortana, Microsoft's personal digital assistant.

Figuring out which of these tools is best for which kinds of tasks seemingly can be a bit tricky. Company officials provided a framework for guidance during WinHEC, listing some potential scenarios, like controlling a sous-vide machine by voice (using a combination of LUIS with Windows 10 or Oxford Speech APIs), and controlling a robot using voice (using Windows 10 local speech APIs).

In the home automation/device control example, Microsoft showed how a user could check whether her/his garage door is closed with voice queries without having to use a phone or tablet.


In my previsious post (How do I get a Unique Identifier for a Device within Windows 10 Universal?) I talked about how getting a unique Id for a device. I’ve found another way.

In the registry there is an unique ID generated during Windows installation and it won't change until you reinstall Windows. You can find such ID in HKLM/Software/Microsoft/Cryptography, it's a string named MachineGuid.

If you can identify a component you're pretty sure that won't change (motherboard for example) you may use a simple WMI query to get its serial number but you should always provide a fallback because many many MBs returns a fake S/N (and virtual machines may returns always the same one). What's the proper solution...well it depends on what you have to do with that ID. Identify the user? Check for license? Encrypt data? Each of these has a different "best practice" for ID.

Get an unique ID for the device
If you have to identify a particular device (regardless to the user) you have many options, what I'd prefer to do is to generate an ID using only stable data (S/N from motherboard and BIOS, for example). This won't help you if he/she completely renew its hardware but it should be stable enough (but you have to define what is enough in your case). You may even use the S/N of the primary disk (with portable devices it's pretty stable and you may even use it in combination with other serial numbers to build your own ID). You can get this informations through WMI or (if you're targeting WinRT) through specific bytes of the ASHWID structure.

Encrypt data
In this case you have to think when data may be unrecoverable. If with a small hardware change your users won't be able to read their previous files well, they'll be unhappy. In this case I would suggest to use the MachineGuid, unless they reinstall the OS they wouldn't have to worry (but do them a favor and provide a way to read back that GUID somewhere). If you're sure you're targeting a portable device like a phone or a tablet then disk serial number (or CPU ID, if available, or MB or BIOS) may be appropriate too (because it's pretty uncommon they'll change).

I would use a combination of many (stable) IDs. As for an unique identifier for the device you can't be sure nothing will change. In the past MAC address was vastly used for this but mobile devices changed these rules (because it's easy to turn off a NIC). You can still use them but you have to put extra care (and code) to manage that situation. Again a combination of multiple IDs (chosen carefully) can help you to minimize customers effort when they change their hw/sw setup. In this case a good compromise could be the OS serial number (not the MachineGuid). If they install a new OS then they have to update your license too (but I would use it combined with something else to be sure they won't use the same OS copy on multiple computers or virtual machines).

Note about virtual machines
If you have to target VMs too then things become more complicated. In theory an user can create multiple copies of the same VM with exactly the same hardare and software configuration. If this is an issue and if you can't address this properly (for example using a network check) I would suggest you don't support them at all (just quit if you detect a VM).

/// Here is a code example that filters form ASHWID the hardware modules
/// that are unlikely to be changed (CPU id, size of memory, serial number of the disk device and bios)
public string GetDeviceID()
    // get the hardware Profile id and convert it to byte Array
    var hardwareToken = Windows.System.Profile.HardwareIdentification.GetPackageSpecificToken(null);

    byte[] byteArray = null;
    Windows.Security.Cryptography.CryptographicBuffer.CopyToByteArray(hardwareToken.Id, out byteArray);

    var deviceSerial = "";
    var offset = 0;

    // we filter the hardware modules that are unlikely to be changed, and aggregate them to a string.
    while (offset < hardwareToken.Id.Length)
        // CPU ID of the processor || Size of the memory || Serial number of the disk device || BIOS
        if ((byteArray[offset] == 1 || byteArray[offset] == 2 || byteArray[offset] == 3 || byteArray[offset] == 9) && byteArray[offset + 1] == 0)
            for (var i = 0; i < 4; i++)
                deviceSerial += byteArray[offset + i].ToString();
        offset += 4;

    return deviceSerial;


Happy coding!

How do I get a Unique Identifier for a Device within Windows 10 Universal?

If you google a bit about this problem, you can’t find a right solution because all people are speaking about Hardware Token. Unfortunately this functionality doesn’t exists for Universal Windows Application.

There are at the moment only a way. You have to add the Extension reference "Windows Desktop Extensions for the UWP" or "Windows Mobile Extensions for the UWP", then you can use the following code:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Windows.Security.ExchangeActiveSyncProvisioning;
using Windows.System.Profile;

namespace PSC.Code
    public sealed class DeviceInfo
        private static DeviceInfo _Instance;
        public static DeviceInfo Instance
                if (_Instance == null)
                    _Instance = new DeviceInfo();
                return _Instance;


        public string Id { get; private set; }
        public string Model { get; private set; }
        public string Manufracturer { get; private set; }
        public string Name { get; private set; }
        public static string OSName { get; set; }

        private DeviceInfo()
            Id = GetId();
            var deviceInformation = new EasClientDeviceInformation();
            Model = deviceInformation.SystemProductName;
            Manufracturer = deviceInformation.SystemManufacturer;
            Name = deviceInformation.FriendlyName;
            OSName = deviceInformation.OperatingSystem;

        private static string GetId()
            if (Windows.Foundation.Metadata.ApiInformation.IsTypePresent("Windows.System.Profile.HardwareIdentification"))
                var token = HardwareIdentification.GetPackageSpecificToken(null);
                var hardwareId = token.Id;
                var dataReader = Windows.Storage.Streams.DataReader.FromBuffer(hardwareId);

                byte[] bytes = new byte[hardwareId.Length];

                return BitConverter.ToString(bytes).Replace("-", "");

            throw new Exception("NO API FOR DEVICE ID PRESENT!");


Someone speaks about to use EasClientDeviceInformation provides a unique Id but this is working only for Windows Store Apps.

var deviceInformation = new EasClientDeviceInformation();
string Id = deviceInformation.Id.ToString();


Happy coding!

Enable your device for development

Important  Currently you cannot enable devices installed with Windows 10 Insider Preview with the System Setting Developer Mode controls as outlined in this article. This feature is not currently supported, but will be enabled in a future release of Windows 10. So you don't need to follow the steps in the future approach in this article. But you must follow the links directly below to enable your specific Windows 10 device.

Enable developer mode

If you use Visual Studio on a Windows 10 desktop and you open a solution for a Windows 8.1 or Windows 10 app, you will be prompted to enable your device with this dialog. (You also need your device to be enabled to use the designers and debug your app.)

Enable developer mode dialog that is displayed in Visual Studio

When you see this dialog, click OK. Then follow the steps below to enable your desktop from Windows 10 Insider Preview.

For Windows 10 desktop

Use gpedit.msc to set the group policies to enable your device, unless you have Windows 10 Insider Preview Home Edition. If you do have Home Edition, you need to use regedit or PowerShell commands to set the registry keys directly to enable your device.

Dn706236.wedge(en-us,WIN.10).gifUse gpedit to enable your device

  1. Open a cmd prompt with administrator privileges.
  2. Run Gpedit.msc.
  3. Go to Local Computer Policy > Computer Configuration > Administrative Templates > Windows Components > App Package Deployment
  4. Edit the policies to enable the following:
    • Allow all trusted apps to install (Enables your device for sideloading apps)
    • Allows development of Windows Store apps and installing them from an integrated development environment (IDE) (Enables your device for development from Visual Studio)
  5. Reboot your machine.

Dn706236.wedge(en-us,WIN.10).gifUse regedit to enable your device

  1. Open a cmd prompt with administrator privileges.
  2. Run regedit.
  3. Set the value of this DWORD to 1: HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\AppModelUnlock\AllowAllTrustedApps
  4. Set the value of this DWORD to 1: HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\AppModelUnlock\AllowDevelopmentWithoutDevLicense

Dn706236.wedge(en-us,WIN.10).gifUse PowerShell to enable your device

  1. Run Windows PowerShell with administrator privileges.
  2. Run the following command: PS C:\WINDOWS\system32> reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\AppModelUnlock" /t REG_DWORD /f /v "AllowDevelopmentWithoutDevLicense" /d "1"
  3. Run this command too: PS C:\WINDOWS\system32> reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\AppModelUnlock" /t REG_DWORD /f /v "AllowAllTrustedApps" /d "1"

Future approach using System Setting Developer Mode controls

There is a different approach for development for Windows 10 devices. A developer license is no longer required for each device that you want to use to develop, install or test your app. You just enable a device once for these tasks from the settings for the device. That's it. No more renewing your developer licenses every 30 or 90 days!

If you are still using a Windows 8.1 device to develop or test your apps with Visual Studio 2013 or Visual Studio 2015, you still need to get a developer license or register your Windows Phone.

Develop your app with Visual Studio

If you use Visual Studio on a Windows 10 device and you open a solution for a Windows 8.1 or Windows 10 app, you will be prompted to enable your device with this dialog. (You also need your device to be enabled to use the designers and debug your app.)

Enable developer mode dialog that is displayed in Visual Studio

When you see this dialog, click OK. Then follow the steps below to enable your device from Windows 10 Insider Preview.

Enable your Windows 10 devices

For Windows 10 Insider Preview, you choose what tasks you want to enable on the device. This includes any devices: Windows 10 desktops, tablets and phones. You can enable a device for development, or just sideloading.

Sideloading is installing and then running or testing an app that has not been certified by the Windows store. For example, an app that is internal to your company only. (Does the Windows store allow sideloading?)

Note  If you sideload apps, you should still only install apps from trusted sources. When you install a sideloaded app that has not been certified by the Windows store, you are agreeing that you have obtained all rights necessary to sideload these apps and that you are solely responsible for any harm that results from installing and running these apps. See this privacy statement.

Dn706236.wedge(en-us,WIN.10).gifWindows 10 Desktops/tablets

  1. On your device that you want to enable, go to Settings. Choose Update & security. Then choose For developers.

    Go to Settings, choose Update and security and then choose For developers to view your options
  2. Choose the level that you need. Developer mode allows you to sideload apps too.

Dn706236.wedge(en-us,WIN.10).gifWindows 10 Phones

  1. On your device that you want to enable, go to Settings. Choose Update & security. Then choose For developers.

    From Settings on your phone, choose Update and security

  2. Choose the level that you need. Developer mode allows you to sideload apps too.



Planet Xamarin

Planet Xamarin