Important: Driver integration process for Windows RT

Discussion in 'Windows 8' started by arseny92, Sep 8, 2013.

  1. arseny92

    arseny92 MDL Secret Weapon

    Sep 22, 2009
    570
    1,272
    30
    #1 arseny92, Sep 8, 2013
    Last edited by a moderator: Apr 20, 2017
    As you may know. Windows RT 8.1 RTM has been leaked. But.


    Stop right here. Before you brick your tablet!

    My driver pack that I prepared just in case (originating from Windows RT 8.1 Preview) is 30 MB in size. This WZor pack maybe has some of the drivers on RTM version, but they are not all the drivers for sure.

    Also note that:
    To get the drivers from the running system:
    Code:
    dism /Online /Get-Drivers /Format:table
    To get driver location information on each of the driver:
    Code:
    dism /Online /Get-DriverInfo /Driver:published_name.inf // (e.g. oem50.inf)
    Go to the location specified for that driver. Copy all of the driver files to a folder. You can do a similar hierarchy as in Post #3 to know what is what.
    Repeat the steps FOR EACH OF THE DRIVERS FROM THE TABLE you just got with /Get-Drivers (All those drivers whose Inbox coloumn say No).

    Ensure that at the end (in the case of Surface RT) you have a driver pack as following (Note that if you running Windows RT 8.0, or running a different RT tablet model, you need to build your own driverlist. The listing below and in Post #3 applies to drivers from RT 8.1 Preview running on Surface RT):


    HID Class Trackpad Settings (bootcritical)
    Marvell AVASTAR Bluetooth Radio (bootcritical)
    Marvell AVASTAR Wireless-N Network Controller (SDIO) (nonbootcritical but needed for wifi)
    Mobile EHCI Host Controller(bootcritical)
    NVIDIA AvStream Driver (nonbootcritical but required for cameras)
    NVIDIA Power Management Controller (bootcritical)
    NVIDIA Secure Channel (bootcritical)
    NVIDIA Secure Engine Controller (bootcritical)
    NVIDIA Tegra Audio Topology Filter (nonbootcritical but required for sound)
    NVIDIA Tegra Display (nonbootcritical but required as display [otherwise you stucking with VGA driver])
    NVIDIA Tegra DMA Hal Extension (bootcritical)
    NVIDIA Tegra Memory Controller (bootcritical)
    NVIDIA Tegra Timers Hal Extension (bootcritical)
    NVIDIA Tegra Wave Device (nonbootcritical but required for sound)
    Printer XPS (nonbootcritical, but needed for the XPS Viewer)
    Serial 16550 UART Driver (bootcritical)
    Surface Accessory Device (bootcritical)
    Surface Home Button Driver (bootcritical)
    SurfaceRT SAM Firmware (bootcritical)
    SurfaceRT Touch Configuration Settings (bootcritical)
    SurfaceRT Touch Firmware (bootcritical)
    SurfaceRT UEFI (bootcritical)
    SurfaceRT UEFI2 (bootcritical)
    Surface Touch Cover (bootcritical)
    Surface Touch Cover Audio Device (bootcritical)
    Surface Touch Cover Firmware (bootcritical)
    Surface Type Cover (bootcritical)
    Surface Type Cover Firmware (bootcritical)
    Tegra GPIO Client Driver (bootcritical)
    Tegra I2C Controller Driver (bootcritical)
    Tegra PMU Driver (bootcritical)
    Tegra Thermal Driver (bootcritical)

    Mount:
    Code:
    dism /Mount-Wim /WimFile:path\to\install or boot.wim /Index:1 /MountDir:c:\path\to\mountpoint
    WIM has to be copied to HDD first to allow writing. For boot.wim you need to add drivers to both indexes so that you will be able to boot to WinRE if something goes wrong (Index 1 is WinRE and 2 is Windows Setup).

    Predeploy using
    Code:
    dism /image:c:\path\to\moutpoint /Add-Driver /Driver:path\to\needed\driver\drivername.inf
    Do this for each of the drivers. To avoid problems DO NOT add recursively using /Recurse parameter.

    Commit:
    Code:
    dism /Unmount-Wim /MountDir:c:\path\to\mountpoint /Commit
     
  2. arseny92

    arseny92 MDL Secret Weapon

    Sep 22, 2009
    570
    1,272
    30
    #3 arseny92, Sep 9, 2013
    Last edited by a moderator: Apr 20, 2017
    (OP)
    When extracting drivers, one should make a hierarchy instead of putting all in bulk, so that you will know what is what when you integrate them one by one.

    Like this:

    Code:
    PS E:\drivers> tree.com /f /a
    Folder PATH listing
    Volume serial number is 000000** ****:****
    E:.
    +---HIDClassTrackpadSettings(bootcritical)
    |       TrackpadSettingsDriver.cat
    |       trackpadsettingsdriver.inf
    |       trackpadsettingsdriver.PNF
    |       TrackpadSettingsDriver.sys
    |
    +---MarvellAVASTARBluetoothRadio(bootcritical)
    |       mbtu97w8arm.cat
    |       mbtu97w8arm.inf
    |       mbtu97w8arm.PNF
    |       mbtu97w8arm.sys
    |       mvbtrcarm.dll
    |
    +---MarvellAVASTARWireless-NNetworkController(SDIO)(nonbootcritical but needed for wifi)
    |       mwls97w8arm.cat
    |       mwls97w8arm.inf
    |       mwls97w8arm.PNF
    |       mwls97w8arm.sys
    |
    +---MobileEHCIHostController(bootcritical)
    |       usbpowerfilter.cat
    |       usbpowerfilter.inf
    |       usbpowerfilter.PNF
    |       UsbPowerFilter.sys
    |
    +---NVIDIAAvStreamDriver(noncritical but required for cameras)
    |       nvavstrm.cat
    |       nvavstrm.inf
    |       nvavstrm.PNF
    |       nvavstrm.sys
    |       nvCameraISP.dll
    |       nvCameraISPb.dll
    |       nvCameraMFT.dll
    |
    +---NVIDIAPowerManagementController(bootcritical)
    |       nvpep.cat
    |       nvpep.inf
    |       nvpep.PNF
    |       nvpep.sys
    |
    +---NVIDIASecureChannel(bootcritical)
    |       nvsc.cat
    |       nvsc.inf
    |       nvsc.PNF
    |       nvsc.sys
    |
    +---NVIDIASecureEngineController(bootcritical)
    |       nvse.cat
    |       nvse.inf
    |       nvse.PNF
    |       nvse.sys
    |
    +---NVIDIATegraAudioTopologyFilter(noncritical but required for sound)
    |       nvatopo.cat
    |       nvatopo.inf
    |       nvatopo.PNF
    |       nvatopo.sys
    |
    +---NVIDIATegraDisplay(noncritical but required  as display [otherwise you stucking with VGA driver])
    |       nvd3dum.dll
    |       nvDecMFTMjpeg.dll
    |       nvDecMFTMpeg4.dll
    |       nvEncMFTH264.dll
    |       nvEncMFTVC1.dll
    |       nvEncodeAPI.dll
    |       nvinfo.pb
    |       nvlddmkm.sys
    |       nv_disp.cat
    |       nv_disp.inf
    |       nv_disp.PNF
    |
    +---NVIDIATegraDMAHalExtension(bootcritical)
    |       NvHalExtDma.cat
    |       NvHalExtDma.dll
    |       nvhalextdma.inf
    |       nvhalextdma.PNF
    |
    +---NVIDIATegraMemoryController(bootcritical)
    |       nvmem.cat
    |       nvmem.inf
    |       nvmem.PNF
    |       nvmem.sys
    |
    +---NVIDIATegraTimersHalExtension(bootcritical)
    |       HalExtTegra2.cat
    |       HalExtTegra2.dll
    |       halexttegra2.inf
    |       halexttegra2.PNF
    |
    +---NVIDIATegraWaveDevice(noncritical but required for sound)
    |       nvawave.cat
    |       nvawave.inf
    |       nvawave.PNF
    |       nvawave.sys
    |
    +---PrinterXPS(noncritical)
    |       MXDW-manifest.ini
    |       MXDW-pipelineconfig.xml
    |       MXDW.gpd
    |       mxdwdui.dll
    |       prnms001.cat
    |       prnms001.Inf
    |       prnms001.PNF
    |
    +---Serial16550UARTDriver(bootcritical)
    |       Uart16550tegra.cat
    |       uart16550tegra.inf
    |       uart16550tegra.PNF
    |       Uart16550tegra.sys
    |
    +---SurfaceAccessoryDevice(bootcritical)
    |       SurfaceAccessoryDevice.cat
    |       surfaceaccessorydevice.inf
    |       surfaceaccessorydevice.PNF
    |       SurfaceAccessoryDevice.sys
    |
    +---SurfaceHomeButtonDriver(bootcritical)
    |       SurfaceHomeButton.cat
    |       surfacehomebutton.inf
    |       surfacehomebutton.PNF
    |       SurfaceHomeButton.sys
    |
    +---SurfaceRTSAMFirmware(bootcritical)
    |       SurfaceRTSAMFirmware.bin
    |       SurfaceRTSAMFirmware.cat
    |       surfacertsamfirmware.inf
    |       surfacertsamfirmware.PNF
    |
    +---SurfaceRTTouchConfigurationSettings(bootcritical)
    |       SurfaceRTTouchConfiguration.bin
    |       SurfaceRTTouchConfiguration.cat
    |       surfacerttouchconfiguration.inf
    |       surfacerttouchconfiguration.PNF
    |
    +---SurfaceRTTouchFirmware(bootcritical)
    |       SurfaceRTTouchFirmware.bin
    |       SurfaceRTTouchFirmware.cat
    |       surfacerttouchfirmware.inf
    |       surfacerttouchfirmware.PNF
    |
    +---SurfaceRTUEFI(bootcritical)
    |       SurfaceRTUEFI.bin
    |       SurfaceRTUEFI.cat
    |       SurfaceRTUEFI.inf
    |       SurfaceRTUEFI.PNF
    |
    +---SurfaceRTUEFI2(bootcritical)
    |       SurfaceRTUEFI.bin
    |       SurfaceRTUEFI.cat
    |       surfacertuefi.inf
    |       surfacertuefi.PNF
    |
    +---SurfaceTouchCover(bootcritical)
    |       SurfaceTouchCover.cat
    |       surfacetouchcover.inf
    |       surfacetouchcover.PNF
    |       SurfaceTouchCover.sys
    |
    +---SurfaceTouchCoverAudioDevice(bootcritical)
    |       SurfaceTouchCoverAudio.cat
    |       SurfaceTouchCoverAudio.dll
    |       surfacetouchcoveraudio.inf
    |       surfacetouchcoveraudio.PNF
    |
    +---SurfaceTouchCoverFirmware(bootcritical)
    |       SurfaceTouchCoverFirmware.bin
    |       SurfaceTouchCoverFirmware.cat
    |       surfacetouchcoverfirmware.inf
    |       surfacetouchcoverfirmware.PNF
    |
    +---SurfaceTypeCover(bootcritical)
    |       SurfaceTypeCover.cat
    |       surfacetypecover.inf
    |       surfacetypecover.PNF
    |
    +---SurfaceTypeCoverFirmware(bootcritical)
    |       SurfaceTypeCoverFirmware.bin
    |       SurfaceTypeCoverFirmware.cat
    |       SurfaceTypeCoverFirmware.inf
    |       surfacetypecoverfirmware.PNF
    |
    +---TegraGPIOClientDriver(bootcritical)
    |       tegra2gpio.cat
    |       tegra2gpio.inf
    |       tegra2gpio.PNF
    |       tegra2gpio.sys
    |
    +---TegraI2CControllerDriver(bootcritical)
    |       tegrai2c.cat
    |       tegrai2c.inf
    |       tegrai2c.PNF
    |       tegrai2c.sys
    |
    +---TegraPMUDriver(bootcritical)
    |       pmu.cat
    |       pmu.inf
    |       pmu.PNF
    |       pmu.sys
    |
    \---TegraThermalDriver(bootcritical)
            nvthml.cat
            nvthml.inf
            nvthml.PNF
            nvthml.sys
    
    PS E:\drivers>
    
     
  3. arseny92

    arseny92 MDL Secret Weapon

    Sep 22, 2009
    570
    1,272
    30
    #4 arseny92, Sep 9, 2013
    Last edited by a moderator: Apr 20, 2017
    (OP)
  4. derausgewanderte

    derausgewanderte MDL Senior Member

    Jul 21, 2009
    330
    86
    10
    So arseny92, guess we are all waiting for your expertise to tell us whether this will work with the drivers given and a 101 on how to exactly add the drivers.
     
    Stop hovering to collapse... Click to collapse... Hover to expand... Click to expand...
  5. ricktendo64

    ricktendo64 MDL Expert

    Apr 20, 2008
    1,397
    2,024
    60
    Doesn't Windows RT have a C:\Windows\System32\DriverStore\FileRepository folder?

    If so you can go in here (sort folders by date) and find/back up your drivers
     
  6. arseny92

    arseny92 MDL Secret Weapon

    Sep 22, 2009
    570
    1,272
    30
    It is not. It is the temporary path where you do put your extracted drivers (see Post #4) for to deploy into the WIMs. In the case of the listing, the path is E:\drivers\<driverfolder>\<drivername>.inf .

    I was storing it on E: because it is the removable drive I used to transfer the drivers, but it is also the drive I will install Windows RT from. Path\to\driver should be interpreted as the path to the "scratchdir" (working directory) you injecting the drivers FROM.
     
  7. derausgewanderte

    derausgewanderte MDL Senior Member

    Jul 21, 2009
    330
    86
    10
    thanks, I figured out the stupid second sentence of my post right after I posted it.
     
    Stop hovering to collapse... Click to collapse... Hover to expand... Click to expand...
  8. arseny92

    arseny92 MDL Secret Weapon

    Sep 22, 2009
    570
    1,272
    30
    ricktendo64, correct, it is also where the .../Get-DriverInfo /Driver:<publishedname>.inf links to, but it is the folder where ALL the driver store is stored, including Inbox (builtin) drivers. We don't need to include all the inbox drivers from 8.1 Preview and/or 8.0 because 8.1 RTM has them all on RTM version. This mess is needed to know only the needed folders with the drivers that are stored there, but aren't being Inbox (i.e. are OEM or other). Also one must check the drivers /Get-DriverInfo because it is also the place were it is noted the said driver is boot critical or not, you can't afford to miss such a driver from including it in the WIMs. Also note that the above listing applies from Windows RT 8.1 Preview running on Surface RT. Those of you who are still on Windows RT 8.0 and/or are using a different RT tablet model need to build their own driverlist.

    Just sorting by date will not help you with this, because all of the drivers stated in the above listing are having different dates, some are even from last year. They are not consistent.
     
  9. LightningXCE

    LightningXCE MDL Novice

    Sep 29, 2012
    9
    3
    0
    I don't suppose you would be able to upload said folder of drivers to help anyone else that is attempting thing?
     
  10. Camazza

    Camazza MDL Member

    Oct 8, 2007
    111
    35
    10
    arseny92, your doubts about driver integration are more than reasonable. However, now that I've successfully installed Windows 8.1 on my Surface, it's safe to say that WZOR's drivers are complete and working fine. As he said, they even are straight from 8.1 RTM, not preview. Plus, there are no problems with WU updates either, as I got a firmware update right after finishing installing Windows 8.1 RTM on my Surface.

    For the record, I integrated them in every wim (install.wim index 1 and boot.wim index 1 and 2) and pointed to the whole WZOR driver folder (there are no subdirectories, so no /recurse option needed). Then I checked the installed drivers with /get-drivers for each WIM and all I got was the 25 drivers i just injected.
     
  11. arseny92

    arseny92 MDL Secret Weapon

    Sep 22, 2009
    570
    1,272
    30
    Because my pack is only for Surface and originating from preview. I'm not posting uploads of drivers because for to prevent the situation where some user will just go leech it and instead of reading precautions and manuals will try to integrate it to an image which he wants to install on a non-Surface tablet (thinking if there is no such device in his system the driver wouldn't be installed. This is quite wrong, because system category drivers can just conflict with the other OEM's drivers, making so that neither of the drivers is going to work correctly). My motto: read, think, and only then do. Not the other way round in that saying.
    Now what if you try to use those functions of the tablet whose drivers wasn't installed? Judging about completeness can only be done after ensuring all the functions are working. As there are only 25 drivers, my list counts 32 (including UEFI images). Since there is no SurfaceRTUEFI.bin's in Wzor pack, that might explain why you got the firmware update, simply because it wasn't integrated. And what would happen if that UEFI image would be critical number 1? Also, can you describe your installation procedure? On the drive partitioning page you selected just to delete and install on the system partition, or you did delete all partitions (including system reserved and the EFI partition) and install on unallocated space? In case you did keep the EFI partition, that would explain why the UEFI image wasn't needed in your install ;)
     
  12. LightningXCE

    LightningXCE MDL Novice

    Sep 29, 2012
    9
    3
    0
    Understandable. Better idea to do that then to deal with people complaining that YOU clearly messed up their tablet.
     
  13. derausgewanderte

    derausgewanderte MDL Senior Member

    Jul 21, 2009
    330
    86
    10
    Starting the installation of RT 8.1 from within Windows RT and choosing "keep nothing" did not bring up an option to repartition the drive or delete partitions for me. I remember that being the case when booting from the 8.0 recovery USB drive. I therefore assume that it will not repartition the drive. Just a wild guess though. The fact is that it is not bricked and if you made a 8.0 recovery USB drive before you started it should be possible to go back to 8.0 if that was necessary. playing around with it to test all my peripherals and accessories with it next.

    I can confirm that it gets a firmware update right after installation and installs 2 updates total.

    thank you for the instructions and help arseny92 and Camazza
     
    Stop hovering to collapse... Click to collapse... Hover to expand... Click to expand...
  14. derausgewanderte

    derausgewanderte MDL Senior Member

    Jul 21, 2009
    330
    86
    10
    Stop hovering to collapse... Click to collapse... Hover to expand... Click to expand...
  15. LightningXCE

    LightningXCE MDL Novice

    Sep 29, 2012
    9
    3
    0
    All finished and everything seems to be working just fine, however there IS one "Unknown Device" (ACPI related) in the device manager. After a reboot and a run of updates, if it's not gone, will report back with info on it. Had to install with the generic key, and then activate with original that was recovered from the device using the registry method, but it worked flawlessly at that part.

    EDIT Windows update solved it through a "firmware update", everything is working 100%. In terms of partitions, it created 4 total, Recovery, System, Reserved, and Primary.
     
  16. derausgewanderte

    derausgewanderte MDL Senior Member

    Jul 21, 2009
    330
    86
    10
    that is likely the firmware update. After update nothing "unknown" on mine.
     
    Stop hovering to collapse... Click to collapse... Hover to expand... Click to expand...
  17. LightningXCE

    LightningXCE MDL Novice

    Sep 29, 2012
    9
    3
    0
    It was exactly that.