You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: articles/iot-edge/troubleshoot-iot-edge-for-linux-on-windows.md
+37-34Lines changed: 37 additions & 34 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -3,7 +3,7 @@ title: Troubleshoot your IoT Edge for Linux on Windows device
3
3
description: Learn standard diagnostic skills for troubleshooting Azure IoT Edge for Linux on Windows (EFLOW) like retrieving component status and logs.
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.
18
18
19
19
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.
20
20
21
21
## Isolate the issue
22
22
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
26
26
- Azure IoT Edge
27
27
28
28
For more information about EFLOW architecture, see [What is Azure IoT Edge for Linux on Windows](iot-edge-for-linux-on-windows.md).
29
29
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 postVM 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).
31
31
32
32
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).
33
33
34
34
## Gather debug information
35
35
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.
40
40
-**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.
42
42
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*).
44
44
45
45
## Check your IoT Edge version
46
46
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:
48
48
49
49
1. Open **Settings** on Windows.
50
50
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**.
52
52
1. Check the version under the EFLOW app name.
53
53
54
54
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
59
59
60
60
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.
61
61
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.
63
63
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.
65
65
66
66
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:
67
67
@@ -83,12 +83,15 @@ Second, the issue could be related to lack of resources. You can set the *EflowV
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*.
87
90
```powershell
88
91
wmic cpu get NumberOfLogicalProcessors
89
92
```
90
93
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).
92
95
93
96
## Check the status of the IoT Edge runtime
94
97
@@ -119,38 +122,38 @@ If you're using TPM provisioning by following the guide [Create and provision an
119
122
```powershell
120
123
Start-Service -Name EFLOWProxy
121
124
```
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.
123
126
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.
125
128
```powershell
126
129
Connect-EflowVm
127
130
```
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.
129
132
```bash
130
133
sudo systemctl status tpm*
131
134
```
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.
1.**tpm2-abrmd.service** - TPM2 Access Broker and Resource Management Daemon
137
140
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:
139
142
140
143
```bash
141
144
sudo systemctl restart tpm*
142
145
```
143
146
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:
145
148
```bash
146
149
sudo /usr/bin/tpm_device_provision
147
150
```
148
151
149
152
## Check GPU Assignment
150
153
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:
152
155
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.
154
157
155
158
1. Open **Apps** > **Device Manager**.
156
159
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
163
166
```powershell
164
167
Connect-EflowVm
165
168
```
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:
167
170
```bash
168
171
sudo nvidia-smi
169
172
```
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.
171
174
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:
173
176
```bash
174
177
sudo ls -al /dev/dxg
175
178
```
176
-
The expected output should be similar to:
179
+
The expected output looks like:
177
180
```Output
178
181
crw-rw-rw- 1 root 10, 60 Sep 8 06:20 /dev/dxg
179
182
```
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).
181
184
182
185
## Check WSSDAgent logs for issues
183
186
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.
185
188
186
189
1. Start an elevated *PowerShell* session using **Run as Administrator**.
187
190
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
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:
213
216
214
217
1. Open **File Explorer**.
215
218
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
218
221
219
222
## Reinstall EFLOW
220
223
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.
0 commit comments