This blog is intended to document our learning's about Miracast technology and explain things to consider when implementing a solution using Miracast. It is primarily about Windows 8.1 tablets and Windows Phone 8.1 as the authors work for Microsoft in the Worldwide Modern Devices Centre of Excellence (CoE). We work on a program called First Wave which assists market leading customers in using and deploying the latest Windows technologies. For video case studies around our projects go to http://www.microsoft.com/en-us/windows/enterprise/customer-stories/default.aspx .
The authors, Lutz Seidemann (Infra) and Paul Tallett (App Dev), are Solution Architects with Microsoft Consulting Services – Worldwide Modern Device Center of Excellence.
We worked on many global projects but the relevant one is the Mandarin Oriental Hotel Group , which is detailed in our second blog.
Why do I want Miracast?
Miracast technology allows you to wirelessly project your computer/tablet or phone screen onto an HDMI connected device such as a TV or projector. You can play movies for all the family to enjoy or simply enjoy a shared web browsing experience without the need for messy cables. It is similar in concept to Apple’s AirPlay
What is Miracast?
Windows and Windows Phone 8.1 added support for Miracast projection from most devices and can either use a “dongle” that plugs into your TV or nowadays some TVs come with Miracast built in. Often the dongle is USB powered so can plug into a spare USB port on your TV. Most of the dongles are about the size of a pack of cards but some low cost USB-stick-sized devices are starting to emerge.
Technically it was designed as a “wireless HDMI cable” so you can think of it that way.
What is the user experience like?
Plug your dongle into the TV and select the correct AV port on the TV and you will see a “Device ready for pairing” type message on the TV. On Windows 8.1 select Devices/Project from the Charms Bar and click on “Add a wireless display”. The computer will scan for devices in range and allow you to select one and go through the pairing process which may involve typing a PIN that is displayed on the TV screen. This is all rather similar to pairing a Bluetooth mouse or headset (but doesn’t actually involve Bluetooth).On the phone, go to Settings/”Project My Screen” and a similar scanning/pairing process will be initiated.
Once you have paired the device, it is persistent and you will not need to re-pair the device unless you pair the dongle with another device – you will simply be able to connect and display. You can pair with as many devices as you like and can unpair the device from Control Panel or Settings.
Note that once you log off or reboot your device, the mirrored connection is broken and cannot be re-established automatically. There are currently no public APIs to control Miracast projection.
What is performance like?
Performance varies with many factors – dongle manufacturer, computer CPU power, Wi-Fi traffic, Wi-Fi waveband etc (more details later) but you should be able to stream an HD movie from the Internet and project it to your TV with minimal stuttering. Note Miracast also transmits your sound channel as well as the picture.
What components are used in Miracast?
Miracast support is embedded into the display drivers, Wi-Fi drivers and device firmware (including dongle firmware) and it is quite sensitive to driver versions and revisions. The Miracast standard is constantly being tweaked and although backwards compatibility is promised, it is not always transparent. Each large Windows or phone update has required an update to the various components which may be on different delivery schedules. For example, getting a firmware update to the Miracast support in a TV is often a lengthy process and for this reason we recommend using a dongle rather than relying on the TV support. ActionTec have proved very responsive to requests and are tightly integrated into the Windows Operating System team (OSG) so they are the partner of choice for our team.
If you are experiencing problems, make sure you have all the latest drivers and hardware/dongle firmware installed.
What technology does Miracast use?
Miracast is an evolution of Intel’s proprietary Wireless Display (WiDi) technology and uses the Wi-Fi Direct protocol and therefore communicates directly between device and dongle without going through a Wireless Access Point or router. However, the first stage of establishing a Miracast connection senses if the computer Wi-Fi adaptor is already using a Wi-Fi connection with a router and uses the assigned channel for the Miracast communication to prevent thrashing in the Wi-Fi adaptor.
We have not seen dongles that allow the Wi-Fi channel to be manually configured so if the computer is moved and switches channel for signal strength reasons, the Miracast session may become choppy or even disconnect as it tries to switch Wi-Fi channel. Since the bandwidth requirement for transmitting HD video is very high, having more than 3 or 4 dongles sharing the same channel will probably see saturation. Also remember that if you are streaming video wirelessly from the internet, that the stream will be transmitted twice over the Wi-Fi network, one to the computer and once to the dongle. Google’s Chromecast differs in this respect as it can stream directly from the internet but only for certain applications.
What methods are available for pairing a device?
We have seen several methods of pairing the device:
- Random Pin. Dongle displays a random PIN during the pairing process which must be manually typed into the computer to pair. This prevents pairing with a device that you cannot see, for example a TV in an adjacent hotel room.
- Automatic pairing. Introduced on Windows in 8.1 Update 1 as the default, a device can automatically pair when you select it. Disabling this feature is sometimes desirable (eg hotel) but has to be done in the dongle firmware if it supports it but not from Windows.
- Fixed secret PIN. Some dongles support manually setting a secret PIN in the dongle firmware. This prevents the device from being ad-hoc paired to other devices (eg a hotel guest using his phone) and affords greater control. When pairing you will need to know what PIN has been set or you will be unable to use the device.
- NFC or QR code. Some devices are starting to emerge that use more convenient methods to pair than having to type a PIN. For example Nokia’s solution uses NFC http://www.wpcentral.com/hands-on-microsoft-screen-sharing-lumia-phones
How do I manage the dongle?
Different vendors implement various methods of performing management tasks for the dongle such as upgrading the firmware or changing settings such as device name or timeouts. Some use a local USB port where you load the firmware then press a button on the device to flash it, other use mini web servers on the device (like a router) and present an HTML interface so that they can be managed remotely. Some flavors of the ActionTec firmware use a custom SSID that you connect to in order to manage the device which is a problem if you have a lot of devices as they pollute the experience when trying to connect a laptop to a Wi-Fi network for example, as all the dongle admin SSIDs are visible. You may be able to set the admin SSID to hidden.
Do all Windows 8.1 and Windows Phone 8.1 devices support Miracast?
No. This requires both hardware (Wi-Fi adaptor) and device firmware support.
We have tested the following list of devices successfully: Surface Pro 1, Surface Pro 2, Surface Pro 3, Dell Venue 8 Pro, HP ElitePad, Nokia 630, 1020, 1520. Note these may require a firmware upgrade to add this support depending on the age of the device.
The following devices do not support Miracast: original Surface RT.
Android 4.2 (JellyBean) or better (eg KitKat) is needed for Miracast support. Apple devices do not support Miracast as they use AirPlay which is a competing proprietary solution (implemented on Apple TV).
Do all TVs and projectors support Miracast?
You almost always require an HDMI input on the TV, so devices that do not have HDMI can be eliminated. Most Miracast solutions use 1080p for their screen resolution, but many HD TVs only support 1080i or 720p. 720p is not really sufficient for Windows 8 as it is below the minimum resolution for Modern Apps so you can’t start a Modern app when running at that resolution. Some of the dongles (eg ActionTec) however, do support 1080i and the results can be very good. (P=Progressive, I=Interlaced, Progressive shows every line, Interlaced draws every other line then goes back and fills in the alternate lines). Picture quality is generally better on 1080p. Resolutions higher than 1080p (1920x1080) are not currently supported by Miracast so 4K for example is not supported.
We tested various dongles (Netgear, ActionTec, Belkin) and TVs with embedded Miracast support (Samsung, Philips, Sony) and arrived at the conclusion that the ActionTec dongle was the most flexible in terms of environment/features and gave the best performance. Also the engineering team were very responsive and turned around custom firmware versions in a few days. For this reason our team would recommend the ActionTec dongle.
Can I add a button to the Windows 8.1 Start Screen to project the screen to aid discovery?
There are no public APIs to control Miracast projection but attached is sample code that you can pin to the start screen that sends keystrokes to invoke the screen selection menu. The same menu is used for connection or disconnection so the app does not need any knowledge of whether the device is currently projecting or not.
The projection stutters or drops. How can I improve performance?
In a single device setting, make sure you have all the latest drivers and firmware releases including dongle firmware. If these still cause issues, you can experiment with older versions of the drivers as sometimes this helps
If you can set up a 5GHz Wi-Fi network rather than 2.4GHz (the default) and get your computers to use that by default, this will generally give better results. 5GHz has higher bandwidth but shorter range so your mileage may vary.
In a multi-device setting (e.g. hotel) network traffic may be an issue if multiple devices are using the same channel or if the network has a lot of traffic. Most Wi-Fi Access Points (AP) can be configured to prefer a certain channel, spacing these out across your environment in a matrix arrangement can considerably improve overall Wi-Fi performance. Using a signal strength meter to obtain hard data on signal strength is very important here. There are some signal strength apps available on smart phones if you don’t have a specialized device. Again using 5GHz can be advantageous although 2.4GHz networks can still provide good results if properly configured. Remember that although the Miracast communication uses Wi-Fi Direct and does not go via your router, the channel it uses is determined by the Wi-Fi channel being used by the computer and your connection may not automatically upgrade and switch if a better channel is available.
Note you may need to update your Access Point firmware in order to set up a 5GHz network or control channel separation.