Blog.

How to add network driver to Windows 10 PE

Marco Franssen

Marco Franssen /

6 min read1058 words

Cover Image for How to add network driver to Windows 10 PE

Very recently I have been trying to reinstall my Laptop using my WinPE approach as it didn't have a optical drive anymore. However my problem was that the WinPE image I created was lacking the network driver for my laptop. So then I recreated a WinPE USB drive using the Windows 10 ADK, hoping it would include the required driver. However unlucky me I still had no network when I booted by new laptop using my new Windows 10 PE USB drive. Therefore I had to add the network driver for my laptop to the WinPE image in order to be able to connect to the network and start my Windows 10 installation from my shared network folder.

Figuring out the required driver

Before starting the reinstall I first figure out what drivers are installed. On Windows you can find information about your drivers and your devices using msinfo32.

So simply fire up msinfo32 by hitting the Windows key on your keyboard and type msinfo32.

Browse to Components -> Network -> Adapter. Here you will find a list of all network adapters. Scroll down to your Ethernet adapter and note down the driver name and the device name in order to download the appropriate Windows 10 driver. In my case the network device looked like this.

(NIC)Name [00000007] Intel(R) 82579LM Gigabit Network Connection
PNP Device ID PCI\VEN_8086&DEV_1502&SUBSYS_21CE17AA&REV_04\3&E89B380&0&C8
Driver c:\windows\system32\drivers\e1d65x64.sys

With this information you can now look at Intel's or your laptop vendor webpage for the correct drivers for Windows 10. Download these so we can add them to our WinPE image later on.

In my case I got a package with a few subfolders (containing drivers for Win 7 Win 8 Win 8.1 and Win 10).

  • NDIS62 --> Windows 7
  • NDIS63 --> Windows 8
  • NDIS64 --> Windows 8.1
  • NDIS65 --> Windows 10

We are about to install the driver with the name e1d65x64.inf from the NDIS65 folder to our WinPE image. In the folder I downloaded there where multiple versions, so I went for the one with the same name as it was installed previously on my Windows 10.

TL;DR

Download the Windows 10 ADK and install it on your computer. Now open as admin your Deployment and Imaging tools environment (Just hit the windows key on your keyboard and start typing on Windows 10 to find it…).

Deployment_and_Imaging_tools_environment
copype amd64 C:\winpe_amd64_win10
Dism /Mount-Image /ImageFile:"C:\winpe_amd64_win10\media\sources\boot.wim" /index:1 /MountDir:"C:\winpe_amd64_win10\mount"
Dism /Add-Driver /Image:"C:\winpe_amd64_win10\mount" /Driver:"C:\DRIVERS\WIN\ETHERNET\PRO1000\Winx64\NDIS65\e1d65x64.inf"
Dism /Unmount-Image /MountDir:"C:\winpe_amd64_win10\mount" /commit
MakeWinPEMedia /UFD E:\winpe_amd64_win10 F:

Install Windows 10

Now I could finally start my installation using the Windows install files on my shared network location. So in Windows PE you will have a command prompt available. In the command prompt I checked if I had a network connection with the network driver build into the Windows PE image.

commandprompt
ipconfig
ping 192.168.0.2

Now I am sure I have a network connection and I can also reach the computer hosting my share I can simply use net use in order to connect to the network share. Then swich to this newly attached network drive and run the Windows 10 setup.

commandprompt
net use z: \\192.168.0.2\Win10
z:
setup.exe

Voila, now your Windows 10 installation will start. Make sure you stay connected with the network cable until first reboot, from that point on you can switch to Wifi. The Windows 10 installation will take care of setting up your Wifi network adapter properly. Give it a couple of minutes to get you fully up and running.

Bonus

First thing I usually do is getting Chocolatey setup. Chocolatey is a package manager for Windows. It allows you to easily install and update your software from the commandline. Similar to Homebrew for MacOS or e.g. apt for Ubuntu. To install Chocolatey, run the installation command from their webpage.

commandprompt
@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"

With chocolatey installed you can now open Powershell in Administrator mode (Right click -> Run as Administrator). Me woudn't be me if I didn't prepare a powershell script with all my desired software listed out so I could easily install it.

To get an easy overview of which software is available you can browse the packages on Chocolatey packages.

Below I took an extract of my personal script to give you an idea on how I get my Windows freshly installed within 45 minutes without to many manual steps.

Powershell
cinst -y git git-lfs vscode GoogleChrome slack docker-for-windows 7zip winscp docker-machine golang nodejs gradle intellijidea-community dotnetcore-sdk vlc Firefox gpg4win graphviz gradle jdk8 openjdk python python2 keepass mysql.workbench postman

And the list goes on and on in my case. To get all my favorite developer tooling in place.

By Intention I first install Git and vscode, so I can already start cloning my repos and run my bash scripts (in git Bash) like the one below that installs my vscode extensions.

install-vscode-extensions.sh
EXTENSIONS=(
  ms-vscode.go
  ms-vscode.csharp
  ms-vscode.powershell
  ms-python.python
  vscoss.vscode-ansible
  editorconfig.editorconfig
  eamodio.gitlens
  esbenp.prettier-vscode
  vsmobile.vscode-react-native
  dsznajder.es7-react-js-snippets
  peterjausovec.vscode-docker
  ms-kubernetes-tools.vscode-kubernetes-tools
  technosophos.vscode-make
  secanis.jenkinsfile-support
  eg2.vscode-npm-script
  christian-kohler.npm-intellisense
  sonarsource.sonarlint-vscode
  djabraham.vscode-yaml-validation
  redhat.vscode-yaml
)

for ext in ${EXTENSIONS[@]} ; do
  code --install-extension $ext
done

Now you have installed your desired software using Chocolatey you can keep your software updated using the following commands in Powershell.

Powershell
choco outdated
Powershell
cup all -y
Powershell
cup docker slack -y

In case you ever want to uninstall a piece of software you can allows get a list of installed software and run the uninstall command.

Powershell
clist --lo
Powershell
choco uninstall -y virtualbox

References

Unfortunatily I didn't went over the hassle of trying to get Wifi working on my Win PE image. I figured that would involve a bit more work which I didn't want to spent effort on as I have access to cable anyhow. Looking forward to your tips and tricks in the comments.

You have disabled cookies. To leave me a comment please allow cookies at functionality level.

More Stories

Cover Image for The use of defer in Go

The use of defer in Go

Marco Franssen

Marco Franssen /

In my previous blog post I have covered how to setup your development environment for Golang including a simple hello world. In case this is your first Go project please have a look on this blog post first and then come back to learn about the use of defer in Go. Defer will always be triggered at the end of a function. So even if the code panics in some location of the executing code it will guarantee the deferred code will be executed. A panic in Go is an unhandled error and causes the progr…

Cover Image for Start on your first Golang project

Start on your first Golang project

Marco Franssen

Marco Franssen /

A couple of months ago I started to do some coding in Go a.k.a Golang. Not only because they have an awesome logo ;-). My main reason was because I wanted to have something running as bare metal as possible on my Raspberry Pi and I wanted to have it available for different platforms to be easy to install. Some other reasons are the ease of creating async code by using Go in front of your methods and the unique approach of channels to sync between go routines (threads). I have been reading a lo…

Cover Image for Merge multiple gradle projects including git history

Merge multiple gradle projects including git history

Marco Franssen

Marco Franssen /

As we started 2 years ago with a micro-service architecture we faced some issues in the productivity of the teams a while ago. This made me think what we could do about that from an architecture and development point of view. As we used different Git repos for the various components of our micro services in the long run it became harder and harder for developers to work with those components. At that point in time I decided to simplify the development workflow to merge the different Git repos…

Cover Image for Responsive Adaptive Progressive impressive webpages

Responsive Adaptive Progressive impressive webpages

Marco Franssen

Marco Franssen /

In the last couple of years web applications technologies and frameworks went through a fast paced transformation and evolution. For all these evolutions there was coined a marketing term which (by coincidence) all end on …ive. So lets coin another one. In this article I'm going to explain you the basic concepts of all these principles which combined allow you to build an impressive web application. Responsive Web Design It started all back in (from top of my head) late 2010, with the idea o…