Skip to content

Commit 652eaf2

Browse files
author
Pat Altimore
committed
Freshness review
1 parent ebeea88 commit 652eaf2

File tree

1 file changed

+37
-34
lines changed

1 file changed

+37
-34
lines changed

articles/iot-edge/troubleshoot-iot-edge-for-linux-on-windows.md

Lines changed: 37 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ title: Troubleshoot your IoT Edge for Linux on Windows device
33
description: Learn standard diagnostic skills for troubleshooting Azure IoT Edge for Linux on Windows (EFLOW) like retrieving component status and logs.
44
author: PatAltimore
55
ms.author: patricka
6-
ms.date: 06/10/2024
6+
ms.date: 07/22/2025
77
ms.topic: troubleshooting-general
88
ms.service: azure-iot-edge
99
ms.custom: linux-related-content
@@ -14,41 +14,41 @@ services: iot-edge
1414

1515
[!INCLUDE [iot-edge-version-all-supported](includes/iot-edge-version-all-supported.md)]
1616

17-
If you experience issues running Azure IoT Edge for Linux on Windows (EFLOW) in your environment, use this article as a guide for troubleshooting and diagnostics.
17+
If you run into issues with Azure IoT Edge for Linux on Windows (EFLOW), use this article to troubleshoot and diagnose the problem.
1818

1919
You can also check [IoT Edge for Linux on Windows GitHub issues](https://github.com/Azure/iotedge-eflow/issues?q=is%3Aissue) for a similar reported issue.
2020

2121
## Isolate the issue
2222

23-
Your first step when troubleshooting IoT Edge for Linux on Windows should be to understand which component is causing the issue. There are three main components an EFLOW solution:
24-
- Windows components: PowerShell module, WSSDAgent & EFLOWProxy
25-
- CBL Mariner Linux virtual machine
23+
Start troubleshooting IoT Edge for Linux on Windows by identifying which component causes the issue. An EFLOW solution has three main components:
24+
- Windows components: PowerShell module, WSSDAgent, and EFLOWProxy
25+
- Azure Linux virtual machine
2626
- Azure IoT Edge
2727

2828
For more information about EFLOW architecture, see [What is Azure IoT Edge for Linux on Windows](iot-edge-for-linux-on-windows.md).
2929

30-
If your issue is installing or deploying the EFLOW virtual machine, make sure that all the prerequisites are met, and verify your networking and VM configurations. If your installation and deployment was successful and you're facing issues with the post VM management, the problems are generally related to VM lifecycle, networking, or Azure IoT Edge. Finally, if the issue is related to modules or IoT Edge features, check [Troubleshoot your IoT Edge device](troubleshoot.md).
30+
If you have trouble installing or deploying the EFLOW virtual machine, check that all prerequisites are met, and verify your networking and VM configurations. If installation and deployment succeed but you run into issues with post-VM management, problems are usually related to VM lifecycle, networking, or Azure IoT Edge. If the issue involves modules or IoT Edge features, see [Troubleshoot your IoT Edge device](troubleshoot.md).
3131

3232
For more information about common errors related to *installation and deployment*, *provisioning*, *interaction with the VM*, and *networking*, see [Common issues and resolutions for Azure IoT Edge for Linux on Windows](troubleshoot-iot-edge-for-linux-on-windows-common-errors.md).
3333

3434
## Gather debug information
3535

36-
When you need to gather logs from an IoT Edge for Linux on Windows device, the most convenient way is to use the `Get-EflowLogs` PowerShell cmdlet. By default, this command collects the following logs:
37-
- **eflowlogs-summary.txt**: contains the status of all log collection steps.
38-
- **EFLOW VM configuration**: includes the VM, networking, and passthrough configurations and additional information.
39-
- **EFLOW Events** : Windows events related to the VM lifecycle and *EFLOWProxy* service.
36+
To gather logs from an IoT Edge for Linux on Windows device, use the `Get-EflowLogs` PowerShell cmdlet. By default, this command collects these logs:
37+
- **eflowlogs-summary.txt**: shows the status of all log collection steps.
38+
- **EFLOW VM configuration**: has the VM, networking, passthrough configurations, and other information.
39+
- **EFLOW Events**: Windows events related to the VM lifecycle and *EFLOWProxy* service.
4040
- **IoT Edge logs**: includes the output of `iotedge check` the IoT Edge runtime support bundle.
41-
- **WSSDAgent logs**: includes all the logs related to the *WSSDAgent* service.
41+
- **WSSDAgent logs**: includes all logs related to the *WSSDAgent* service.
4242

43-
After the cmdlet gathers all the required logs, the files are compressed into a single file named *eflowlogs.zip* under the EFLOW installation path (For example, *C:\Program Files\Azure IoT Edge*).
43+
After the cmdlet gathers all required logs, it compresses the files into a single file named *eflowlogs.zip* in the EFLOW installation path (for example, *C:\Program Files\Azure IoT Edge*).
4444

4545
## Check your IoT Edge version
4646

47-
If you're running an older version of IoT Edge for Linux on Windows, then upgrading may resolve your issue. To check the EFLOW version installed on your device, use the following steps:
47+
If you're running an older version of IoT Edge for Linux on Windows, upgrading can resolve your issue. To check the EFLOW version installed on your device, follow these steps:
4848

4949
1. Open **Settings** on Windows.
5050
1. Select **Add or Remove Programs**.
51-
1. Depending on the EFLOW release train being used (Continuous Release or LTS), choose **Azure IoT Edge LTS** or **Azure IoT Edge**.
51+
1. Depending on the EFLOW release train you use (Continuous Release or LTS), select **Azure IoT Edge LTS** or **Azure IoT Edge**.
5252
1. Check the version under the EFLOW app name.
5353

5454
For more information about specific versions release notes, check [Azure IoT Edge for Linux on Windows release notes](https://aka.ms/AzEFLOW-Releases).
@@ -59,9 +59,9 @@ For instructions on how to update your device, see [Update IoT Edge for Linux on
5959

6060
You can verify the EFLOW VM status and information by using the `Get-EflowVm` PowerShell cmdlet. If the EFLOW VM is running, the **VmPowerState** output should be *Running*. Whereas if the VM is stopped, the **VmPowerState** output is *Off*. To start or stop the EFLOW VM, use the `Start-EflowVm` and `Stop-EflowVm` cmdlet.
6161

62-
If the VM is *Running* but you can't interact or access the VM, there's probably a networking issue between the VM and the Windows host OS. Also, make sure that the EFLOW VM has enough memory and storage available to continue with normal execution. Run the `Get-EflowVm` cmdlet to see the memory(*TotalMemMb*, *UsedMemMb*, *AvailableMemMb*) and storage(*TotalStorageMb*, *UsedStorageMb*, *AvailableStorageMb*) information.
62+
If the VM is *Running* but you can't interact with or use the VM, there might be a networking issue between the VM and the Windows host OS. Also, check that the EFLOW VM has enough memory and storage available to continue normal execution. Run the `Get-EflowVm` cmdlet to see the memory (*TotalMemMb*, *UsedMemMb*, *AvailableMemMb*) and storage (*TotalStorageMb*, *UsedStorageMb*, *AvailableStorageMb*) information.
6363

64-
Finally, if the VM is *Off* and you can't start it using the `Start-EflowVm` cmdlet, there may be several reasons why the VM can't be started.
64+
If the VM is *Off* and you can't start it using the `Start-EflowVm` cmdlet, there can be several reasons why the VM can't start.
6565

6666
First, the issue could be related to the VM lifecycle management service (*WSSDAgent*) not running. Ensure that the *WSSDAgent* service is running using the following steps:
6767

@@ -83,12 +83,15 @@ Second, the issue could be related to lack of resources. You can set the *EflowV
8383
```powershell
8484
Get-CIMInstance Win32_OperatingSystem | Select FreePhysicalMemory
8585
```
86-
1. Check the available CPU cores. Ensure that *NumberOfLogicalProcessors* is greater than *EflowVmAssignedCPUcores*.
86+
1. Check the available CPU cores. Make sure that *NumberOfLogicalProcessors* is greater than *EflowVmAssignedCPUcores*.
87+
```powershell
88+
wmic cpu get NumberOfLogicalProcessors
89+
```ssignedCPUcores*.
8790
```powershell
8891
wmic cpu get NumberOfLogicalProcessors
8992
```
9093
91-
Finally, the issue could be related to networking. For more information about EFLOW VM networking issues, see [How to troubleshoot Azure IoT Edge for Linux on Windows networking](./troubleshoot-common-errors.md).
94+
Finally, the issue might be related to networking. For more information about EFLOW VM networking issues, see [How to troubleshoot Azure IoT Edge for Linux on Windows networking](./troubleshoot-common-errors.md).
9295
9396
## Check the status of the IoT Edge runtime
9497
@@ -119,38 +122,38 @@ If you're using TPM provisioning by following the guide [Create and provision an
119122
```powershell
120123
Start-Service -Name EFLOWProxy
121124
```
122-
If the service won't start, check the *EFLOWProxy* logs. Go to **Apps** > **Event Viewer** > **Applications and Services Logs** > **Microsoft** > **EFLOW** > **EFLOWProxy** and check the logs.
125+
If the service doesn't start, check the *EFLOWProxy* logs. Go to **Apps** > **Event Viewer** > **Applications and Services Logs** > **Microsoft** > **EFLOW** > **EFLOWProxy** and review the logs.
123126
124-
1. If the service is **Running** then check the EFLOW VM proxy services. Start by connecting to the EFLOW VM.
127+
1. If the service is **Running**, check the EFLOW VM proxy services. Start by connecting to the EFLOW VM.
125128
```powershell
126129
Connect-EflowVm
127130
```
128-
1. From inside the EFLOW VM, check the TPM services are up and running.
131+
1. From inside the EFLOW VM, check that the TPM services are running.
129132
```bash
130133
sudo systemctl status tpm*
131134
```
132-
You should see the status and logs of four different services. The four services should be up and running.
135+
You see the status and logs of four different services. All four services need to be running.
133136
1. **tpm2-netns.service** - TPM2 Network Namespace
134137
1. **[email protected]** - TPM2 Sandbox Service on Port 2322
135138
1. **[email protected]** - TPM2 Sandbox Service on Port 2321
136139
1. **tpm2-abrmd.service** - TPM2 Access Broker and Resource Management Daemon
137140

138-
If any of these services is **stopped** or **failed**, restart all services using the following command:
141+
If any of these services is **stopped** or **failed**, restart all services with the following command:
139142

140143
```bash
141144
sudo systemctl restart tpm*
142145
```
143146

144-
1. Check the communication between the EFLOW VM and the *EFLOWProxy* service. If communication is working, you should see the *RegistrationId* and the TPM *Endorsement Key* as output from the following command:
147+
1. Check the communication between the EFLOW VM and the *EFLOWProxy* service. If communication works, you see the *RegistrationId* and the TPM *Endorsement Key* as output from the following command:
145148
```bash
146149
sudo /usr/bin/tpm_device_provision
147150
```
148151

149152
## Check GPU Assignment
150153

151-
If you're using GPU passthrough, ensure to follow all the prerequisites and configurations outlined in [GPU acceleration for Azure IoT Edge for Linux on Windows](./gpu-acceleration.md). If you experience issues using GPU passthrough feature, check the following steps:
154+
If you're using GPU passthrough, make sure you follow all the prerequisites and configurations in [GPU acceleration for Azure IoT Edge for Linux on Windows](./gpu-acceleration.md). If you have issues with the GPU passthrough feature, follow these steps:
152155

153-
First, start by checking your device is available on the Windows host OS.
156+
First, check that your device is available on the Windows host OS.
154157

155158
1. Open **Apps** > **Device Manager**.
156159
1. Go to **Display Adapters** and check that your GPU is in the list.
@@ -163,25 +166,25 @@ Second, if the GPU is correctly assigned, but still not being able to use it ins
163166
```powershell
164167
Connect-EflowVm
165168
```
166-
1. If you're using a **NVIDIA GPU**, check the passthrough status using the following command:
169+
1. If you're using a **NVIDIA GPU**, check the passthrough status with this command:
167170
```bash
168171
sudo nvidia-smi
169172
```
170-
You should be able to see the GPU card information, driver version, CUDA version, and the GPU system and processes information.
173+
You see the GPU card information, driver version, CUDA version, and GPU system and process information.
171174
172-
1. If you're using an **Intel iGPU** passthrough, check the passthrough status using the following command:
175+
1. If you're using an **Intel iGPU** passthrough, check the passthrough status with this command:
173176
```bash
174177
sudo ls -al /dev/dxg
175178
```
176-
The expected output should be similar to:
179+
The expected output looks like:
177180
```Output
178181
crw-rw-rw- 1 root 10, 60 Sep 8 06:20 /dev/dxg
179182
```
180-
For more Intel iGPU performance and debugging information, see [Witness the power of Intel® iGPU with Azure IoT Edge for Linux on Windows(EFLOW) & OpenVINO™ Toolkit](https://community.intel.com/t5/Blogs/Tech-Innovation/Artificial-Intelligence-AI/Witness-the-power-of-Intel-iGPU-with-Azure-IoT-Edge-for-Linux-on/post/1382405).
183+
For more about Intel iGPU performance and debugging, see [Witness the power of Intel® iGPU with Azure IoT Edge for Linux on Windows(EFLOW) & OpenVINO™ Toolkit](https://community.intel.com/t5/Blogs/Tech-Innovation/Artificial-Intelligence-AI/Witness-the-power-of-Intel-iGPU-with-Azure-IoT-Edge-for-Linux-on/post/1382405).
181184
182185
## Check WSSDAgent logs for issues
183186
184-
The first step before checking *WSSDAgent* logs is to check if the VM was created and is running.
187+
Before you check the *WSSDAgent* logs, make sure the VM is created and running.
185188
186189
1. Start an elevated *PowerShell* session using **Run as Administrator**.
187190
1. On Windows Client SKUs, check the [HCS](https://techcommunity.microsoft.com/t5/containers/introducing-the-host-compute-service-hcs/ba-p/382332) virtual machines.
@@ -209,7 +212,7 @@ The first step before checking *WSSDAgent* logs is to check if the VM was create
209212
NUC-EFLOW Running 0 1024 00:01:34.1280000 Operating normally 9.0
210213
```
211214
212-
If for some reason the VM isn't listed, that means that VM isn't running or the *WSSDAgent* wasn't able to create it. Use the following steps to check the *WSSDAgent* logs:
215+
If the VM isn't listed, it isn't running or the *WSSDAgent* can't create it. Follow these steps to check the *WSSDAgent* logs:
213216
214217
1. Open **File Explorer**.
215218
1. Go to `C:\ProgramData\wssdagent\log`
@@ -218,7 +221,7 @@ If for some reason the VM isn't listed, that means that VM isn't running or the
218221
219222
## Reinstall EFLOW
220223
221-
Sometimes, a system might require significant special modification to work with existing networking or operating system constraints. For example, a system could require complex networking configurations (firewall, Windows policies, proxy settings) and custom Windows OS configurations. If you tried all previous troubleshooting steps and still have EFLOW issues, it's possible that there's some misconfiguration that is causing the issue. In this case, the final option is to uninstall and reinstall EFLOW.
224+
Sometimes, a system needs special changes to work with existing networking or operating system constraints. For example, a system might need complex networking settings, like firewall, Windows policies, proxy settings, or custom Windows OS settings. If you've tried all previous troubleshooting steps and still have EFLOW issues, a misconfiguration might be causing the problem. In this case, the last option is to uninstall and reinstall EFLOW.
222225
223226
## Next steps
224227

0 commit comments

Comments
 (0)