Support - Azure/iotedge-eflow Wiki

Table of Contents

  1. What kind of support does Microsoft provide for Azure IoT Edge for Linux on Windows (EFLOW)?
  2. How can I apply updates to EFLOW?
  3. How often will I need to take EFLOW updates?
  4. Can I use IoT Hub Device Update with EFLOW?
  5. Can updates be downloaded and installed manually?
  6. What state will the EFLOW VM be in when I restart the host machine?
  7. Can I report bugs?
  8. How can I debug issues with EFLOW?
  9. How can I check the EFLOW version?
  10. How can I install a Linux package?
  11. Issue: Update failed to install
  12. Issue: Reboot the EFLOW VM from inside VM will stop the VM but won't start again
  13. Issue: Unreachable EFLOW VM after feature update
  14. Issue: Double EFLOW Installation
  15. Issue: EFLOW VM is running out of space
  16. Issue: Systemd-Journald high memory usage
  17. Issue: Reboot after feature update won't start the WSSDAgent
  18. Issue: DNS name resolution failed
  19. Issue: DNS name resolution with MCR

What kind of support does Microsoft provide for Azure IoT Edge for Linux on Windows (EFLOW)?

Review our support in the EFLOW Support section.

How can I apply updates to EFLOW?

ELFOW updates are released and installed automatically using Microsoft Update. To receive EFLOW updates, the Windows host should be configured to receive updates for other Microsoft products. To turn on this option, use these steps:

  1. Open Settings on Windows 10
  2. Select Updates & Security
  3. Select Windows Update
  4. Select Advanced options
  5. Turn on the Receive updates for other Microsoft products when you update Windows.

How often will I need to take EFLOW updates?

EFLOW has a monthly cadence for the LTS version. All the updates should be applied in order to get the next update. For example, if you are in version 1.1.2106.0, and want to get to version 1.1.2109.0, you’ll have to install 1.1.2107.0 and 1.1.2108.0 before getting to the latest one. All this is handled by Microsoft Update, and there's no user interaction needed.

Can I use IoT Hub Device Update with EFLOW?

No, EFLOW uses Microsoft Update for the Windows host and A/B Update for Linux VM. The Windows update also triggers the A/B update, so no extra steps are needed for installing this update.

Can updates be downloaded and installed manually?

Yes, updates can be downloaded using Microsoft Update Catalog.

What state will the EFLOW VM be in when I restart the host machine?

The lifecycle of the EFLOW VM is managed by our EFLOW installation. On every reboot of the Windows host OS, we will make sure the EFLOW VM is in the same state as it was before the reboot.

Can I report bugs?

Yes, you can report bugs using our EFLOW GitHub Issues page. Ensure to follow our guidelines of Microsoft Open Source Code of Conduct. and use our EFLOW Issue Templates.

How can I debug issues with EFLOW?

Start by checking that all the minimum requirements are being met. Also, review our EFLOW Installation & Configuration guide. If you want advanced debugging and troubleshooting, it's possible to establish an SSH connection to the EFLOW VM and access the VM logs.

How can I check the EFLOW version?

  1. Open Settings on Windows 10
  2. Select Add or Remove Programs
  3. Select Azure IoT Edge app
  4. Check the version number

How can I install a Linux package?

CBL-Mariner does not support Apt-Get but rather TDNF as its package manager. That said, we have purposefully removed the package manager as we do not support modifications to the EFLOW VM image composition. We do our servicing through Microsoft Update and swap the previous image with the new image using A – B updates. Doing so would wipe out any composition changes that you would make if you could.

Issue: Update failed to install

Start by checking the reason for the update failure by following these steps:

  1. Open Settings on Windows 10
  2. Select Updates & Security
  3. Select Windows Update
  4. Check for "Status" of Azure IoT Edge for Linux on Windows Update

If the update failed because of a "Download error", ensure you have sufficient free space on your disk (~300 Mb), and you aren't experiencing connectivity problems.

If the update failed because of an "Installation error", ensure you have access to the EFLOW VM (check the VM has IP assigned, and you can establish an SSH connection) and retry.

Issue: Reboot the EFLOW VM from inside VM will stop the VM but won't start again

If the user runs sudo reboot or sudo shutdown -r now from inside the VM, the VM will shut down but won't start again. If this happens, the user will have to start the EFLOW VM manually using the Start-EflowVm. In order to reboot the EFLOW VM, the suggested way is to always use Stop-EflowVm and then Start-EflowVm.

Issue: Unreachable EFLOW VM after feature update

If the user runs the Set-EFlowVmFeature to turn on/off a feature of the EFLOW VM, the VM will become unreachable. If this happens, the user will have to start the wssdagent manually or reboot the Windows host.

Issue: Double EFLOW Installation

EFLOW 1.1.2108.0 introduced a bug that results in having two instances of EFLOW. This is not a supported scenario and will prevent EFLOW from working correctly. To fix this issue, use the following instructions:

  1. Download Microsoft Program Install and Uninstall
  2. Run the downloaded tool
  3. Select Next and wait for the problem detection to end
  4. Select Uninstalling
  5. Wait for problem detection ends (can take some minutes)
  6. Select Azure IoT Edge LTS from the list
  7. Select Yes, try uninstall and wait for the uninstallation to finish
  8. Repeat previous steps with the second installed instance of EFLOW

Issue: EFLOW VM is running out of space

EFLOW installation will use 16GB VHDX by default. You can change the Disk Size during deployment time, using the -vmDiskSizeand assigning the size in GB.

Furthermore, we've found that Docker logs size can be an issue. To limit Docker logs size, check Docker - Configure logging drivers.

Issue: Systemd-Journald high memory usage

Journald is architected so that the memory usage is bound to the possible maximum of the active log file (the one currently written to). This value can be correlated to the setting of "SystemMaxFileSize" under journald configuration. The lower the value is, the less of the working memory the journald will use.

By default, the value of "SystemMaxFileSize" is 1/8 of the maximum total logs size (1GB in CBL-Mariner by default), so journald at most will map 250MB (125MB for active system journal + 125MB for active user journal) into the working memory. This value can be changed to meet the user requirements.

To modify the value, follow these steps:

  1. Modify /etc/systemd/journald.conf to add "SystemMaxFileSize" to indirectly cap the journald memory usage
  2. sudo systemctl daemon-reload
  3. sudo systemctl restart systemd-journald
  4. sudo journalctl --rotate

Issue: Reboot after feature update won't start the WSSDAgent

When the host reboots after a feature update, it's possible that the wssdagent service won't start. If that's the case, the user won't be able to connect to the EFLOW VM or Start/Stop the VM. To fix it, there are two alternatives:

  1. Manually start the Service (Open Services -> Look for WSSD Agent Service -> Restart the service)
  2. Reboot the Windows host.

Issue: DNS name resolution failed

If the user EFLOW VM DNS resolution is not working, it may be a DNS misconfiguration issue. To set a specific DNS Server IP address use the following command:

Invoke-EflowVmCommand "echo DNS=<dns-server-ip> | sudo tee /etc/systemd/resolved.conf -a && sudo systemctl restart systemd-resolved && sudo systemctl restart docker"

Issue: DNS name resolution with MCR

If the user is suspecting they are hitting this issue, assume they have a suspecting domain name. (E.g., "westus2.api.cognitive.microsoft.com"), first they can run the following to make sure the DNS queries not going through:

Invoke-EflowVmCommand "sudo docker network create my_network && sudo docker run --network my_network --rm tutum/dnsutils nslookup westus2.api.cognitive.microsoft.com"

Server: 127.0.0.11 Address: 127.0.0.11#53

Non-authoritative answer: *** Can't find westus2.api.cognitive.microsoft.com: No answer

(There are Docker logs which can be more accurately identifying the issue, but it comes with more steps to set up.)

If they see this "No answer" in the response, then they can try to apply their reachable DNS server by the following two methods:

Invoke-EflowVmCommand "echo DNS=8.8.8.8 | sudo tee /etc/systemd/resolved.conf -a && sudo systemctl restart systemd-resolved && sudo systemctl restart docker"