Using WiFi on your Windows 10 IoT Core device

WiFi is supported on Windows 10 IoT Core devices through the use of a USB WiFi adapter. Using WiFi provides all the functionality of a wired connection, including SSH, PowerShell, Windows Device Portal, and application debugging and deployment.

Note

Plugging in a wired Ethernet cable will override WiFi as the default network interface.

Supported Adapters

A list of WiFi adapters that have been tested on Windows 10 IoT Core can be found on our Supported Hardware page.

Configuring WiFi

To use WiFi, you'll need to provide Windows 10 IoT core with the WiFi network credentials. In addition to documentation on how to build companion app and WPS custom solutions, there are a few different options for doing so listed below.

Custom Companion App & WPS Wi-Fi Onboarding Samples

Currently, we offer a number of ways for developers to build a custom wifi onboarding solution for their device.

Samples Description Benefits Drawbacks
Companion App Create a simple Xamarin app that can configure your device's Wi-Fi. Simple to use; Headed or headless for IoT Core; Clients work cross-platform Developer is creating his or her own protocol; requires developer to implement security
IoT Onboarding with Bluetooth RFCOMM Create solution to configure your headless IoT device to connect with your Wi-Fi using Bluetooth RFCOMM. Relevant in headed or headless devices; Uses familiar technologies and concepts; Does not require IoT device to start a SoftAP; Does not need to adjust firewall settings Requires Bluetooth support for client and server devices; Sample only provides client app for Windows 10; Server app pre-defines/hard-codes the names of the client device.
IoT Onboarding with AllJoyn Remotely join your headless IoT device with your home Wi-Fi network. Works with AllJoyn Some support for AllJoyn is deprecated
Wi-Fi Protected Setup (WPS) APIs for devices Perform WPS discovery to query the WPS methods supported by the network. Simply leverage the WiFiAdapter.GetWpsConfigurationAsync(WiFiAvailableNetwork and WiFiAdapter.ConnectAsync methods to connect wi-fi devices to specific networks. You will need to become familiar with these APIs to leverage them.; only compatible with WPS-enabled routers

Headed Options

Option 1: Startup Configuration

Prerequisite: The Windows 10 IoT core device needs a mouse, keyboard, display, and USB WiFi Adapter plugged in

The first time you boot Windows 10 IoT Core with a supported USB WiFi adapter, you will be presented with a configuration screen. On the configuration screen, select the WiFi network you would like to connect to and supply the password. Click connect to initiate the connection.

Startup WiFi Configuration Screen

Option 2: Default App Configuration

Prerequisite: The Windows 10 IoT core device needs a mouse, keyboard, display, and USB WiFi Adapter plugged in

An alternative way to configure WiFi is to use the default app. You can use this to configure or modify WiFi settings after the device has booted.

  1. Click on the gear-shaped settings icon on the homepage
  2. Select Network & Wi-Fi in the left pane
  3. Click on the WiFi network you want to connect to. Supply the password if prompted, and click Connect

Default App WiFi Configuration

Headless Options

Option 1: Web-Based Configuration

Prerequisite: Your device will already need to be connected to your local network through Ethernet and should have a USB WiFi Adapter plugged in

If you have a device with no UI, display, or input devices, you can still configure it through the Windows Device Portal. In Windows 10 IoT Core Dashboard, Click on the Open in Device Portal icon for your device.

  1. Enter Administrator for the username, and supply your password (p@ssw0rd by default)
  2. Click on Network in the left-hand pane
  3. Under Available networks, select network you would like to connect to and supply the connection credentials. Click Connect to initiate the connection

Web Based WiFi Configuration

Option 2: Connect using WiFi Profiles

Prerequisite: Your device will already need to be connected to your local network through Ethernet and should have a USB WiFi Adapter plugged in. You also need a Windows PC with WiFi capability.

Setting up WiFi using wireless profiles is supported in Windows 10 IoT Core. See MSDN for details and examples.

  1. Connect your Windows PC to the desired wireless network and create WiFi profile XML file with these commands:

    • netsh wlan show profiles -> find the name of the profile you just added

    • netsh wlan export profile name=<your profilename>. This will export the profile to an XML file

  2. Open up a File Explorer window, and in the address bar type \\<TARGET_DEVICE>\C$\ and then hit enter. In this particular case, <TARGET_DEVICE> is either the name or the IP address of your Windows 10 IoT Core device:

    SMB with File Explorer

    If you are prompted for a user name and password, use the following credentials:

    User Name: <TARGET_DEVICE>\Administrator
    Password:  p@ssw0rd
    

    SMB with File Explorer 1

    Note

    It is highly recommended that you update the default password for the Administrator account. Please follow the instructions found here.

  3. Copy the exported WiFi profile XML file from the Windows PC to your Windows 10 IoT Core device

  4. Connect to your device using PowerShell and add the new WiFi profile to your device by executing the following commands

    netsh wlan add profile filename=<copied XML path>
    netsh wlan show profiles
    
  5. Connect the Windows 10 IoT Core device to wireless network via netsh

    netsh wlan connect name=<profile name>
    
  6. Verify that your device is connected to the wireless network and can reach the internet

    netsh wlan show interfaces
    ipconfig /all
    ping /S <your WiFi adapter ip address> bing.com
    

Connecting to WPA2-PSK Personal networks

If you need to connect to a WPA2-PSK Personal WiFi network, follow the instructions above first, but make the following changes to the XML file. The only difference is that when your Windows PC exports the XML it encrypts the password.

Warning

This will make your connection insecure.

Profile XML exported from Windows PC:

    <sharedKey>
        <keyType>passPhrase</keyType>
        <protected>true</protected>
        <keyMaterial><Your Encrypted password></keyMaterial>
    </sharedKey>

Changes needed to work on Windows 10 IoT Core:

    <sharedKey>
        <keyType>passPhrase</keyType>
        <protected>false</protected>
        <keyMaterial><Your Unencrypted password></keyMaterial>
    </sharedKey>