Fixing Simatic IPC547G .NET 3.5 Install Errors on Windows 10 IoT and Server 2012
The SIMATIC IPC547G rack-mounted industrial PC is shipped with Windows 10 IoT Enterprise 2016/2019 LTSB or Windows Server 2012 R2 images, and Siemens documentation states that the bundle is "ready-to-run" for TIA Portal, WinCC, STEP 7 (V5.x), and WinCC flexible. In practice, the .NET Framework 3.5 feature is disabled in the offline image to reduce the attack surface, and a substantial percentage of field engineers cannot install it on first boot. This article consolidates the field-proven remediation paths: the supplied USB recovery drive, the offline DISM install with an SxS source, the language-pack removal procedure for Server 2012, and the .NET 4.6 uninstall/reinstall workaround. Each method is documented with exact commands, expected error codes, and post-install verification steps.
1. Problem Description
Engineers receive a brand-new IPC547G, power it up, insert the recovery USB or use the pre-installed image, and then attempt to install TIA Portal or WinCC. The installer returns:
Component .NET Framework 3.5 (incl. .NET 2.0 and .NET 3.0) could not be installed. Error: 0x800F0906, 0x800F081F, 0x800F0907- WinCC setup stops with ".NET cannot be found"
- STEP 7 V5.6 setup returns
Error 1642("The installer does not have sufficient privileges to install this package") orError 1935 - After enabling the Windows feature manually, the .NET 3.5 option stays grayed out or fails to download from Windows Update
On air-gapped sites (no internet for the IPC), the standard Add/Remove Windows Features wizard times out because the source files are not in the local WinSxS folder, and Windows Update is unreachable.
2. Root Cause Analysis
The base image shipped on the SIMATIC IPC547G (article number 6AG4010-1... variants, see the Siemens Support Entry 109745988) is a stripped Windows 10 IoT Enterprise LTSB image. By default:
- The
NetFx3feature is disabled and the source payload (\sources\sxs\microsoft-windows-netfx3-ondemand-package.cab) is removed from the local image. - Windows Update is configured to a custom Siemens WSUS stub that does not host the .NET 3.5 payload on air-gapped plants.
- On Server 2012 R2, the .NET 3.5 source is provided by the
\sources\sxsfolder on the original Microsoft media, which is rarely present on the customer site.
Siemens ships a recovery/installation USB drive in the box that contains an OptionalWindowsFeatures folder with the on-demand cab and a wrapper install.bat that calls DISM against an offline source copied from the bundled media. When the wizard fails, most engineers do not realize the USB is the canonical source.
3. Affected Hardware, OS, and Software Matrix
| IPC Model | OS Image | Build | Default .NET 3.5 State | Recovery USB Path |
|---|---|---|---|---|
| SIMATIC IPC547G (Core i5/i7, 6AG4010-1AA/1AB/1AC) | Windows 10 IoT Enterprise 2016 LTSB | 10.0.14393 | Disabled, payload removed | DocuAndDrivers/Software/OptionalWindowsFeatures/DotNet35 |
| SIMATIC IPC547G (6AG4010-1BA/1BB) | Windows 10 IoT Enterprise 2019 LTSC | 10.0.17763 | Disabled, payload removed | DocuAndDrivers/Software/OptionalWindowsFeatures/DotNet35 |
| SIMATIC IPC547G (6AG4010-1CA) | Windows Server 2012 R2 Standard | 6.3.9600 | Disabled, SxS removed | DocuAndDrivers/Software/OptionalWindowsFeatures/DotNet35 |
| SIMATIC IPC547G (6AG4010-1DA) | Windows Server 2019 Standard | 10.0.17763 | Disabled, SxS removed | DocuAndDrivers/Software/OptionalWindowsFeatures/DotNet351 |
| SIMATIC IPC477E (panel, 6AV7241-...) | Windows 10 IoT Enterprise 2016/2019 | 10.0.14393/17763 | Disabled, payload on USB | DocuAndDrivers/Software/OptionalWindowsFeatures/DotNet351 |
DotNet35 (no service pack); later releases label it DotNet351 (3.5 + 3.5 SP1). Both are functionally equivalent for TIA Portal V13–V17.
4. Prerequisites
- Local administrator account on the IPC547G (default
Administratorwith the password printed on the delivery note). - The original SIMATIC Recovery USB Drive shipped with the unit. Verify the file
DocuAndDrivers\Software\OptionalWindowsFeatures\DotNet35\install.batexists. If missing, request the latest recovery media from Siemens Industry Online Support (SIOS) referencing the MLFB / article number. - Microsoft Windows 10 / Server 2012 installation media (ISO or USB) as an alternate
\sources\sxssource if the Siemens USB is unavailable. - 5 GB free disk space on
C:\for staged SxS files. - For Server 2012 R2 only: a working knowledge of
lpksetup.exeto remove extraneous language packs before re-install.
5. Solution 1 — Use the Supplied Siemens USB Drive (Recommended)
This is the method Siemens documents and the only one guaranteed to be supported. It does not require internet access.
5.1 Procedure
- Insert the SIMATIC recovery USB into a free USB 2.0/3.0 port on the IPC547G.
- Open File Explorer and navigate to the USB root.
- Browse to
\DocuAndDrivers\Software\OptionalWindowsFeatures\DotNet35(orDotNet351on later firmware). - Right-click
install.bat→ Run as administrator. - The script invokes the equivalent of:
DISM /Online /Enable-Feature /FeatureName:NetFx3 /All /Source:%~dp0sxs /LimitAccess
- Wait for the command to finish. Expected return:
The operation completed successfully. RestartWindows: true. - Reboot the IPC547G.
- After reboot, verify the registry key
HKLM\SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5exists and hasInstall = 1.
5.2 Expected Log Location
Detailed DISM log: C:\Windows\Logs\DISM\dism.log. Filter for NetFx3 to confirm the feature was sourced from the local SxS rather than Windows Update.
DISM.exe. Add C:\Windows\System32\dism.exe and C:\Windows\System32\dismhost.exe to the AV exclusion list before launching the bat file.
6. Solution 2 — Offline DISM Install Using Microsoft Media
Use when the Siemens USB is missing or unreadable. Mount the Microsoft Windows ISO of the matching build and point DISM at its \sources\sxs directory.
6.1 Mount the ISO
From an elevated PowerShell prompt:
$ISO = "C:\Install\Win10_1809_LTSC_64bit.iso"
$Drive = Mount-DiskImage -ImagePath $ISO | Get-Volume | Select -ExpandProperty DriveLetter
Write-Host "Mounted at $Drive"
6.2 Run DISM with /Source
DISM /Online /Enable-Feature /FeatureName:NetFx3 /All \
/LimitAccess /Source:E:\sources\sxs
Parameter reference:
| Switch | Purpose |
|---|---|
/Online |
Target the running OS, not an offline image. |
/Enable-Feature:NetFx3 |
Enable the parent .NET 3.5 feature including 2.0/3.0 children. |
/All |
Enable all parent features of NetFx3. |
/LimitAccess |
Do not contact WSUS/Windows Update. |
/Source: |
Path to the SxS folder containing microsoft-windows-netfx3-ondemand-package.cab. |
6.3 Error Code Reference
| Error Code | Meaning | Fix |
|---|---|---|
| 0x800F081F | Source files not found in /Source
|
Verify SxS path; ensure matching build number. |
| 0x800F0906 | Source could not be downloaded (no internet) and /Source missing | Add /Source; ensure WSUS is bypassed. |
| 0x800F0907 | Policy blocks the feature | Check gpedit.msc → Computer Config → Admin Templates → System → "Specify settings for optional component installation". |
| 0x800F0922 | CSI payload missing | Rebuild component store with DISM /Online /Cleanup-Image /RestoreHealth. |
7. Solution 3 — Language-Pack Removal on Windows Server 2012 R2
Server 2012 R2 images delivered with the IPC547G are frequently pre-loaded with 8–12 MUI language packs. .NET 3.5 install fails on these images because the framework binaries try to bind to locale-specific resources that are not consistent. The fix is to strip the language packs down to en-US only, then run the standard install.
7.1 Procedure
- Open an elevated Command Prompt.
- List installed packs:
lpksetup.exe→ Uninstall display languages. - Select all languages except English (United States) and confirm. Wait for the uninstaller to complete (5–15 minutes).
- Reboot.
- Re-insert the Siemens USB or mount the Microsoft ISO.
- Run
install.batfrom the USB or invoke the DISM command from Section 6.2. - Reboot again.
7.2 PowerShell Equivalent
Get-WindowsCapability -Online | Where-Object {$_.Name -like "Language.*" -and $_.Name -notlike "*en-US*"} | Remove-WindowsCapability -Online
8. Solution 4 — .NET 4.6 Uninstall/Reinstall Sequence
On Windows 10 IoT Enterprise 2019 LTSC, the image ships with .NET Framework 4.7 pre-installed. Microsoft has documented that the .NET 3.5 install can fail when 4.6+ is already present and the servicing stack is broken. The verified sequence is:
- Open Control Panel → Programs and Features.
- Uninstall Microsoft .NET Framework 4.7/4.8 Multi-Targeting Pack and any Microsoft .NET Framework 4.x Extended entries.
- Reboot.
- Run
install.batfrom the Siemens USB (Section 5). - Reboot.
- Reinstall .NET 4.7/4.8 via Windows Update or by downloading the offline installer from the Microsoft Catalog.
- Reboot.
9. Verification
After any of the four solutions above, run the following checks before installing TIA Portal, STEP 7, or WinCC:
9.1 Registry Check
reg query "HKLM\SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5" /v Install
Expected output: Install REG_DWORD 0x1
9.2 File System Check
dir %WINDIR%\Microsoft.NET\Framework64\v3.5\clr.dll
dir %WINDIR%\Microsoft.NET\Framework64\v2.0.50727\mscorwks.dll
9.3 PowerShell Verification
Get-ChildItem 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP' -Recurse |
Get-ItemProperty -Name Version, Install -ErrorAction SilentlyContinue |
Where-Object { $_.Install -eq '1' } |
Select-Object PSChildName, Version
Expected entries: v2.0.50727, v3.0, v3.5 all with Install = 1.
9.4 Application Smoke Test
Run a small .NET 3.5 console app:
set COMPLUS_VERSION=v3.5
dotnet --list-runtimes
The TIA Portal V13 installer can then be launched; the "component .NET 3.5 missing" dialog should no longer appear.
10. Troubleshooting Matrix
| Symptom | Likely Cause | Remediation |
|---|---|---|
| Wizard reports 0x800F081F with Microsoft media | Wrong SxS source build (e.g., 19045 SxS on a 17763 OS) | Match the SxS build to winver build number. |
| DISM returns 0x800F0907 | Group policy blocks optional component install |
gpedit.msc → enable "Specify settings for optional component installation" → "Contact Windows Update directly" or point to source. |
| install.bat flashes and disappears | No admin rights or blocked by AV | Right-click → Run as administrator; whitelist DISM in AV. |
| .NET 3.5 enables but TIA still says missing | 32-bit vs 64-bit binding; TIA is 32-bit and needs Framework 3.5 in Framework (not Framework64) |
Confirm both %WINDIR%\Microsoft.NET\Framework\v3.5 and Framework64\v3.5 exist. |
| Server 2012 still fails after language pack removal | Pending reboot from previous Windows updates | Run shutdown /r /t 0, then retry. |
| Recovery USB folder missing on USB | Wrong USB (e.g., customer IT image instead of Siemens recovery) | Order the latest recovery USB via Siemens spare parts; cite the IPC MLFB. |
| OS is Windows 11 IoT Enterprise on newer IPC647/847 | Different image; .NET 3.5 requires LTSC and special SxS | Use the matching Siemens USB and confirm build parity with winver. |
11. Post-Install Recommendations
- Take a fresh Symantec Ghost or Acronis True Image snapshot of the system once .NET 3.5 is confirmed, so subsequent IPCs can be cloned with the feature already enabled.
- Disable Windows Update auto-restart on the IPC to avoid mid-installation reboots during TIA Portal deployment.
- Document the build number, USB revision, and the date of the .NET 3.5 install in the plant CMMS record for the IPC547G asset.
- If the plant policy blocks local admin accounts, grant the Power Users group SeLockMemoryPrivilege and DISM rights via
secpol.mscbefore commissioning.
12. Field Notes for Other SIMATIC IPCs
The exact same procedure applies to the SIMATIC IPC427G, IPC627, IPC647, IPC847, IPC1047, IPC2x7, and IPC477E panel PCs. Each ships a recovery USB under \DocuAndDrivers\Software\OptionalWindowsFeatures\. The naming of the folder varies: DotNet35, DotNet351, or WinFeatures. Open the install.bat with Notepad to confirm the DISM call before running.
For IPCs in the 547/647/847 family that ship with Windows Server 2019, the language-pack removal path from Section 7 is also the most common unlock when the customer site has more than four language packs preinstalled.
\sources\sxs is sufficient to enable .NET 3.5 offline.
For a complete commissioning checklist covering TIA Portal V18 on SIMATIC IPCs, refer to the Siemens SIMATIC IPC TIA Portal Installation Guide and the TIA Portal V18 Readme on the Siemens Industry Online Support portal.
FAQ
Why does the SIMATIC IPC547G ship with .NET 3.5 disabled?
The Windows 10 IoT Enterprise LTSB / LTSC image is hardened for industrial use, and the .NET 3.5 feature is left in the disabled with payload removed state to minimize the attack surface and reduce image size. Microsoft also removes the \sources\sxs folder on these trimmed images, which is why Add/Remove Windows Features cannot find the source files.
Where is the .NET 3.5 installer on the SIMATIC recovery USB?
Browse to \DocuAndDrivers\Software\OptionalWindowsFeatures\DotNet35 (or DotNet351 on later firmware) and run install.bat as administrator. The script calls DISM against a staged SxS folder bundled on the same USB, enabling the feature without internet access.
Can I install .NET 3.5 with DISM if I only have the Microsoft Windows ISO?
Yes. Mount the ISO, then run DISM /Online /Enable-Feature /FeatureName:NetFx3 /All /LimitAccess /Source:<DriveLetter>:\sources\sxs. The build number in the ISO must match the running OS (e.g., 17763 for Windows 10 IoT 2019 LTSC). Restart the IPC after the command reports "The operation completed successfully".
How do I fix error 0x800F081F when installing .NET 3.5 on the IPC547G?
Error 0x800F081F means the source files were not found. Either the /Source path is wrong, the SxS folder is empty, or the build number of the source does not match the installed OS. Re-mount the matching Windows ISO or use the Siemens recovery USB, then retry with the exact DISM command from Section 6.2.
Does TIA Portal V17/V18 still need .NET 3.5 on a SIMATIC IPC547G?
No. TIA Portal V17 and V18 run on .NET Framework 4.8 only. However, if the same machine is also expected to host STEP 7 V5.6, WinCC V7.4/V7.5, or WinCC flexible 2008 SP5, .NET 3.5 must be enabled regardless of the TIA Portal version, because the legacy installers check for it.
What is the fastest way to verify .NET 3.5 is installed correctly?
Open an elevated PowerShell and run Get-ChildItem 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP' -Recurse | Get-ItemProperty -Name Version, Install | Where-Object {$_.Install -eq '1'}. Confirm that v2.0.50727, v3.0, and v3.5 all report Install = 1 with a non-empty Version string.