Click here to Skip to main content
13,198,322 members (54,187 online)
Click here to Skip to main content
Add your own
alternative version

Stats

10.2K views
17 bookmarked
Posted 29 Jan 2016

Setting up Windows 10 IoT Core on Raspberry Pi 2 B

, 29 Jan 2016
Rate this:
Please Sign up or sign in to vote.
This tip describes configuration options on Windows 10 IoT Core on Raspberry Pi 2 B

Introduction

In this tip, I will describe what configuration options are provided by Windows 10 IoT Core.

Background

This post is one of a series of posts which I wrote about development applications for Windows 10 IoT Core. To see all my posts, please visit my introduction article: Introduction to Windows 10 IoT.

Config.txt Settings

To read more about config.txt values, you can read the official documentation.

First thing that you can set up is config.txt on SD card of your device. Initial config looks like this:

gpu_mem=32                  # set ARM to 480Mb DRAM, VC to 32Mb DRAM
framebuffer_ignore_alpha=1  # Ignore the alpha channel for Windows.
framebuffer_swap=1          # Set the frame buffer to be Windows BGR compatible.
disable_overscan=1          # Disable overscan
init_uart_clock=16000000    # Set UART clock to 16Mhz
hdmi_group=2                # Use VESA Display Mode Timing over CEA
arm_freq=900
arm_freq_min=900
force_turbo=1

This config will result in output video in format 1360 x 768 @60Hz.

block starting with "arm_freq" is simply disabling ARM power management and dynamic frequency changes on Raspberry pi, and setting default frequency to 900Mhz. (Without this, your raspberry will run on 600Mhz because dynamic frequency changes are not implemented in Windows yet.)

Setting Up Screen Resolution

I needed full HD resolution on my display, so I use this additional setting in config (you just add these lines to config and restart device)

hdmi_drive=2
hdmi_mode=82

by hdmi_drive=2 I set it to DMT (Display Monitor Timings; the standard typically used by monitors)

by hdmi_mode=82 I set resolution to 1920x1080 @60Hz (1080p)

If you want to read more about supported resolution, you can find a very useful article here.

I have tested more of different settings and I ended up for now with this setting, since I do not need sound it is OK for me.

You can of course play with these settings and find out which resolution best fits your requirements.

To set correct display resolution, you need to change these three settings:

hdmi_groupresult
0Auto-detect from EDID
1CEA
2DMT

Based on hdmi group, you can choose hdmi_mode (different modes are available for group 1 and group 2, you cannot choose hdmi_mode when hdmi_group is 0).

hdmi modes available for group 1

hdmi_moderesolutionfrequencynotes
1VGA (640x480)  
2480p60Hz 
3480p60Hz16:9 aspect ratio
4720p60Hz 
51080i60Hz 
6480i60Hz 
7480i60Hz16:9 aspect ratio
8240p60Hz 
9240p60Hz16:9 aspect ratio
10480i60Hzpixel quadrupling
11480i60Hzpixel quadrupling, 16:9 aspect ratio
12240p60Hzpixel quadrupling
13240p60Hzpixel quadrupling, 16:9 aspect ratio
14480p60Hzpixel doubling
15480p60Hzpixel doubling, 16:9 aspect ratio
161080p60Hz 
17576p50Hz 
18576p50Hz16:9 aspect ratio
19720p50Hz 
201080i50Hz 
21576i50Hz 
22576i50Hz16:9 aspect ratio
23288p50Hz 
24288p50Hz16:9 aspect ratio
25576i50Hzpixel quadrupling
26576i50Hzpixel quadrupling, 16:9 aspect ratio
27288p50Hzpixel quadrupling
28288p50Hzpixel quadrupling, 16:9 aspect ratio
29576p50Hzpixel doubling
30576p50Hzpixel doubling, 16:9 aspect ratio
311080p50Hz 
321080p24Hz 
331080p25Hz 
341080p30Hz 
35480p60Hzpixel quadrupling
36480p60Hzpixel quadrupling, 16:9 aspect ratio
37576p50Hzpixel quadrupling
38576p50Hzpixel quadrupling, 16:9 aspect ratio
391080i50Hzreduced blanking
401080i100Hz 
41720p100Hz 
42576p100Hz 
43576p100Hz16:9 aspect ratio
44576i100Hz 
45576i100Hz16:9 aspect ratio
461080i120Hz 
47720p120Hz 
48480p120Hz 
49480p120Hz16:9 aspect ratio
50480i120Hz 
51480i120Hz16:9 aspect ratio
52576p200Hz 
53576p200Hz16:9 aspect ratio
54576i200Hz 
55576i200Hz16:9 aspect ratio
56480p240Hz 
57480p240Hz16:9 aspect ratio
58480i240Hz 
59480i240Hz16:9 aspect ratio

hdmi modes available for group 2

hdmi_moderesolutionfrequencynotes
1640x35085Hz 
2640x40085Hz 
3720x40085Hz 
4640x48060Hz 
5640x48072Hz 
6640x48075Hz 
7640x48085Hz 
8800x60056Hz 
9800x60060Hz 
10800x60072Hz 
11800x60075Hz 
12800x60085Hz 
13800x600120Hz 
14848x48060Hz 
151024x76843Hzincompatible with the Raspberry Pi
161024x76860Hz 
171024x76870Hz 
181024x76875Hz 
191024x76885Hz 
201024x768120Hz 
211152x86475Hz 
221280x768 reduced blanking
231280x76860Hz 
241280x76875Hz 
251280x76885Hz 
261280x768120Hzreduced blanking
271280x800 reduced blanking
281280x80060Hz 
291280x80075Hz 
301280x80085Hz 
311280x800120Hzreduced blanking
321280x96060Hz 
331280x96085Hz 
341280x960120Hzreduced blanking
351280x102460Hz 
361280x102475Hz 
371280x102485Hz 
381280x1024120Hzreduced blanking
391360x76860Hz 
401360x768120Hzreduced blanking
411400x1050 reduced blanking
421400x105060Hz 
431400x105075Hz 
441400x105085Hz 
451400x1050120Hzreduced blanking
461440x900 reduced blanking
471440x90060Hz 
481440x90075Hz 
491440x90085Hz 
501440x900120Hzreduced blanking
511600x120060Hz 
521600x120065Hz 
531600x120070Hz 
541600x120075Hz 
551600x120085Hz 
561600x1200120Hzreduced blanking
571680x1050 reduced blanking
581680x105060Hz 
591680x105075Hz 
601680x105085Hz 
611680x1050120Hzreduced blanking
621792x134460Hz 
631792x134475Hz 
641792x1344120Hzreduced blanking
651856x139260Hz 
661856x139275Hz 
671856x1392120Hzreduced blanking
681920x1200 reduced blanking
691920x120060Hz 
701920x120075Hz 
711920x120085Hz 
721920x1200120Hzreduced blanking
731920x144060Hz 
741920x144075Hz 
751920x1440120Hzreduced blanking
762560x1600 reduced blanking
772560x160060Hz 
782560x160075Hz 
792560x160085Hz 
802560x1600120Hzreduced blanking
811366x76860Hz 
821920x108060Hz1080p
831600x900 reduced blanking
842048x1152 reduced blanking
851280x72060Hz720p
861366x768 reduced blanking

and last parameter, hdmi_drive:

hdmi_driveresult
1Normal DVI mode (No sound)
2Normal HDMI mode (Sound will be sent if supported and enabled)

Don't worry about testing these values - the worst thing that could happen is that you will not output from your raspberry correctly, device will still boot up and it will be working correctly, you can just change the config and reboot the device.

Setting Up Screen Rotation

Sometimes, you want to rotate raspberry screen by 90, 180, or 270 degrees. You can do this using config too.

To do this, you will use display_rotate. Here are available values:

display_rotateresult
0No rotation
1Rotate 90 degrees clockwise
2Rotate 180 degrees clockwise
3Rotate 270 degrees clockwise
0x10000Horizontal flip
0x20000Vertical flip

With this setting, you should be careful and test after every change, When I was using Windows on Raspberry pi, it did not boot up after I changed the rotation until I increased gpu_mem to some higher value like:

gpu_mem=128

Based on this and also based on my testing, it is best not to change display rotation of device because I think it consumes huge amount of processing power just to rotate the HDMI output. I have also experienced far worse performance when I was testing my app running in 90 degrees rotation.

Low Voltage Warning

I usually take power for my Raspberry pi from some TV which have USB ports, and usually I get low current warning directly from Raspberry pi. So far, I did not notice some performance or reliability problem associated with this, it is just annoying. See it in the picture.

To disable it, just add this into config:

avoid_warnings=2

I know, this probably is not the best practice and this warning has a meaning there, but since it does not have any influence on my applications, I don't want to see it there. I would not like to add another power supply just to avoid this warning if it can be turned off simply and nothing will happen. In my case, I use TV USB port as power source. When I was testing it, I figured out that cause of this problem is usually a cable that you are using. So to fix it, I recommend to test several USB cables.

Connecting to filesystem on Raspberry Pi 2 B

There are several methods in which you can connect to filesystem on your Windows 10 IOT.

Accessing SD Card On Your Computer

This is the simplest method, but you have very limited set of settings that you can change. Basically, you can only modify config.txt.

I recommend first to shutdown Raspberry pi and then you can detach SD card and insert it into your computer. Then, you should see something like this:

What you see on Windows is only the first partition of SD card. When SD card was created, Windows split it into 4 partitions. On Windows systems, it is for user visible only first partition with normal settings.

Connecting to Device filesystem Directly

To see all partitions and modify almost everything on filesystem, you need to put SD card back to Raspberry pi, and turn it on. Then, you can use IOT Dashboard to find its IP address. (To read more about IOT dashboard, you can read my previous article: Installing Windows 10 IoT core on Raspberry Pi 2).

After you know the IP address, just open Windows explorer and navigate to Raspberry pi. In my case, I typed this:

\\192.168.0.233\c$ 

Please note c$ at the end of address, it must be there, otherwise this will not work.

After you enter address of device, you will be prompted for your credentials to device, These are default credentials:

Username : Administrator
Password : p@ssw0rd

Of course, if you changed your password, enter new password instead.

When you login successfully, you should see filesystem on device:

Here, you can see how filesystem is split on device, as root you see C:\ and also you can see links to Data, Crash dump and EFISP (this is partition you see when you insert SD card to your PC).

C:\ is installed main operating system, all Windows binaries are stored here, in Windows folder. You will not find here almost no user data, these are on Data partition.

Data\ you find working directories of apps that you have installed in \Data\Users\DefaultAccount.

CrashDump\ is probably used by system to store crashdumps, I have never seen anything interesting there.

EFISP\ is main boot partition, where config.txt is stored, you can modify it directly on device, but to see effects, you need to restart device.

Accessing Device Remotely

The third option is most powerful, you can access device's command line remotely from your computer. To do this, you can use Powershell or putty (putty is faster but has fewer options than Powershell). It does not matter from which operating system you connect to Raspberry pi.

Accessing Device Using powershell

1. Start powershell as Administrator on your PC.

After you start powershell, you should run the following commands:

net start WinRM

The next step is to add machine key into trusted hosts list, you will do it by this command:

Set-Item WSMan:\localhost\Client\TrustedHosts -Value 192.168.0.233

Then, you confirm by "Y".

After this, you can connect to your device:

Enter-PSSession -ComputerName 192.168.0.233 -Credential 192.168.0.233\Administrator

After this command, you will be prompted to input your password. Default is p@ssw0rd

Please be patient, because this process takes a while (can be 2-3 minutes) When the process is finished, you should see console on device.

The output will look like this:

It is very helpful to know console commands that you can use, I recommend you this site http://ss64.com/nt/.

Powershell is a very good option to connect to Raspberry pi, but in my opinion, it is a bit slow and some C++ console applications can run in an incorrect way in this. When you will have some problems with powershell, you still have at least one more option.

Accessing Device using Putty

Yes, you can connect to windows 10 IoT using putty or any other SSH client. And it is very simple, just download putty from: http://the.earth.li/~sgtatham/putty/latest/x86/putty.exe.

When you have it downloaded, just enter IP address of your device, as can be seen here.

You will be prompted to enter username, which is Administrator and then password. (p@ssw0rd) you will be on the same console as when connected using Powershell, just, putty is much faster.

This is it. I hope you will be able to set everything up. If you will have some questions, just write in the comments below and I will respond.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

Share

About the Author

Martin Gmuca
Software Developer ...
Slovakia Slovakia
After study on University of Zilina, I started to work as software developer in this town in Slovakia, I have worked with various technologies, a bit of mobile apps, for android and iOS In latest time I specialize in ASP .NET and .NET C# applications. I like to learn and explore new technologies. Also I like photography and traveling.
I hope with my articles here I could help another developers solve similar problems that I was facing.

You may also be interested in...

Comments and Discussions

 
-- There are no messages in this forum --
Permalink | Advertise | Privacy | Terms of Use | Mobile
Web03 | 2.8.171020.1 | Last Updated 29 Jan 2016
Article Copyright 2016 by Martin Gmuca
Everything else Copyright © CodeProject, 1999-2017
Layout: fixed | fluid