9 Replies Latest reply on Oct 31, 2016 10:53 AM by Intel Corporation

    Windows 7 and 10: RNDIS adapter just doesn't work

    skoehler

      Hi,

       

      I have IntelEdisonDriverSetup1.2.1.exe installed on Windows 7 and 10. These are new machines. Nothing Intel Edison related has ever been installed.

      The Intel Edison is running the Yocto Linux contained in iot-devkit-prof-dev-image-edison-20160606.zip and has been flashed via ./flashall.sh.

       

      Yet, the Intel Edison USB RNDIS Device in Windows' device manager is marked with a yellow triangle. The error message is that the device cannot be started.

       

      This has been discussed in this forum before, but the only suggestion that I can find is flashing the Edison again. That doesn't change anything for me.

       

      Something is clearly messed up here: either the drivers are broken or something is badly configured on the Edison.

      On Linux, everything is working properly.

        • 1. Re: Windows 7 and 10: RNDIS adapter just doesn't work
          skoehler

          Update: According to sysfs, the g_multi gadget on the Intel Edison is in CDC mode, not in RNDIS mode. So it cannot work as Windows only supports RNDIS.

          If RNDIS support was compiled in, then adding ethernet_config=rndis to /etc/modprobe.d/g_multi.conf should work.

           

          However, adding ethernet_config=rndis to /etc/modprobe.d/g_multi.conf has no effect. Maybe the g_multi USB gadget has been compiled without RNDIS support? I can't find the kernel config, so it's hard to say.

          Anyhow, the current version of Yocto for the Edison is broken and must be fixed. RNDIS support must be enabled, as CDC ethernet won't work with Windows.

           

          Update 2: Here's the g_multi related lines from dmesg:

          [    4.997439] g_multi gadget: using random host ethernet address

          [    5.021142] g_multi gadget: Mass Storage Function, version: 2009/09/11

          [    5.021168] g_multi gadget: Number of LUNs=1

          [    5.021421] g_multi gadget: Multifunction Composite Gadget

          [    5.021441] g_multi gadget: g_multi ready

          [    6.243753] g_multi gadget: high-speed config #2: Multifunction with CDC ECM

           

          As you can see, no word about RNDIS. The evidence strongly suggests, that g_multi has been compiled without RNDIS support.

          • 2. Re: Windows 7 and 10: RNDIS adapter just doesn't work
            skoehler

            So, do you have any pointers? Where can I view the config of the kernel that is contained in Yokto Linux 20160606? Can I report a bug somehow so this is fixed eventually?

            • 3. Re: Windows 7 and 10: RNDIS adapter just doesn't work
              Intel Corporation
              This message was posted on behalf of Intel Corporation

              Hi skoehler,

              Thank you very much for reaching and for providing that useful update of your issue.
              I’m sorry to hear you’re having issues when using the Edison board in your Windows systems. I find it interesting as I too have a Windows 7 computer and I’m able to run the Edison without issues, with the latest image and with previous versions too. As you mentioned, it should be something related to the drivers or with the Edison.
              To have access to the kernel config file I would suggest you to check the instructions from the BSP. Section 5, Customizing the Linux Kernel, is what you’re looking for. http://www.intel.com/content/dam/support/us/en/documents/edison/sb/edisonbsp_ug_331188007.pdf.
              We will also pass this information to the relevant team so they can check on this issue. Please let us know if you have any other questions.

              Regards,
              -Pablo

              • 4. Re: Windows 7 and 10: RNDIS adapter just doesn't work
                skoehler

                Dear Pablo,

                 

                can you post the contents of the file /sys/module/g_multi/parameters/ethernet_config on your Edison? It tells you whether the Edison is mimicking an USB network device following the CDC or the RNDIS standard. The Windows drivers that Intel is providing definitely use Microsoft's RNDIS driver. There is no doubt about that. However, in my case, the mentioned sysfs attribute clearly indicates that the Edison is mimicking a device following the CDC ECM standard, which Windows does not support unless Intel provides corresponding drivers (the current drivers basically consist of an INF file loading Microsoft's RNDIS driver).

                 

                In case the above sysfs attribute contains the value "rndis", can you post your output of the "uname -a" command?

                In case the above sysfs attribute contains the value "cdc", can you post which driver your are using for the USB network interface?

                 

                Regards,

                  Sven

                • 5. Re: Windows 7 and 10: RNDIS adapter just doesn't work
                  Intel Corporation
                  This message was posted on behalf of Intel Corporation

                  Hi Sven,

                   

                  Thank you very much for your explanation. Please take a look at the images you requested below.

                  Here’s the output after entering cat on the ethernet_config:

                  And for the uname –a command, this is what I get:


                  Regards,

                  -Pablo

                  • 6. Re: Windows 7 and 10: RNDIS adapter just doesn't work
                    skoehler

                    Today, I finally used Intel's Windows Installer instead of flashing the firmware manually. And suddenly, the Edison received a different firmware, also dated June 6th, where the ethernet_config sysfs attribute actually indeed has the value "rndis". So essentially, the whole mess I'm in (we handed the Edison to the students pre-flashed) is only because the manual flash procedure using flashall.sh leaves you with an Edison, where the network card is set to CDC mode, not RNDIS mode. So essentially, Intel seems to distribute two firmwares right now, both dated June 6th. And I could not find a single word about this - or anything about how to switch between the two versions of the g_multi module.

                    • 7. Re: Windows 7 and 10: RNDIS adapter just doesn't work
                      skoehler

                      Here's the configuration of an Edison flashed with Intel's Windows installer:

                       

                      root@edison:~# uname -a
                      Linux edison 3.10.98-poky-edison+ #1 SMP PREEMPT Mon Jun 6 14:32:08 PDT 2016 i686 GNU/Linux
                      root@edison:~# cat /sys/module/g_multi/parameters/ethernet_config
                      rndis
                      root@edison:~# md5sum /lib/modules/3.10.98-poky-edison+/kernel/drivers/usb/gadget/g_multi.ko
                      c265735345655be4ab7da605b6ac02a2  /lib/modules/3.10.98-poky-edison+/kernel/drivers/usb/gadget/g_multi.ko
                      root@edison:~# dmesg|grep g_multi
                      [    0.000000] Kernel command line: rootwait root=PARTUUID=012b3303-34ac-284d-99b4-34e03a2335f4 rootfstype=ext4 console=ttyMFD2 earlyprintk=ttyMFD2,keep loglevel=4 g_multi.ethernet_config=rndis systemd.unit=multi-user.target hardware_id=00 g_multi.iSerialNumber=d0bac83ca2d32207dd79bb81edcbe25a g_multi.dev_addr=02:00:86:cb:e2:5a platform_mrfld_audio.audio_codec=dummy
                      [    5.131059] g_multi gadget: using random host ethernet address
                      [    5.144935] g_multi gadget: Mass Storage Function, version: 2009/09/11
                      [    5.144962] g_multi gadget: Number of LUNs=1
                      [    5.145211] g_multi gadget: Multifunction Composite Gadget
                      [    5.145231] g_multi gadget: g_multi ready
                      [    6.337976] g_multi gadget: high-speed config #1: Multifunction with RNDIS

                       

                      And here's the configuration of an Edison that has been flashed using flashall.sh on Linux:

                       

                      root@edison:~# uname -a
                      Linux edison 3.10.98-poky-edison+ #1 SMP PREEMPT Mon Jun 6 14:32:08 PDT 2016 i686 GNU/Linux
                      root@edison:~# cat /sys/module/g_multi/parameters/ethernet_config
                      cdc
                      root@edison:~# md5sum /lib/modules/3.10.98-poky-edison+/kernel/drivers/usb/gadget/g_multi.ko
                      c265735345655be4ab7da605b6ac02a2  /lib/modules/3.10.98-poky-edison+/kernel/drivers/usb/gadget/g_multi.ko
                      root@edison:~# dmesg|grep g_multi
                      [    0.000000] Kernel command line: rootwait root=PARTUUID=012b3303-34ac-284d-99b4-34e03a2335f4 rootfstype=ext4 console=ttyMFD2 earlyprintk=ttyMFD2,keep loglevel=4 g_multi.ethernet_config=cdc systemd.unit=multi-user.target hardware_id=00 g_multi.iSerialNumber=50802f940927e9ec13118476e44b7661 g_multi.dev_addr=02:00:86:4b:76:61 platform_mrfld_audio.audio_codec=dummy
                      [    4.946988] g_multi gadget: using random host ethernet address
                      [    4.971630] g_multi gadget: Mass Storage Function, version: 2009/09/11
                      [    4.971658] g_multi gadget: Number of LUNs=1
                      [    4.971892] g_multi gadget: Multifunction Composite Gadget
                      [    4.971911] g_multi gadget: g_multi ready
                      [    6.339251] g_multi gadget: high-speed config #2: Multifunction with CDC ECM

                       

                      Clearly, the configuration differs and one can see that whether the Edison is mimicking an RNDIS or CDC ECM network card depends on how it was flashed.

                      • 8. Re: Windows 7 and 10: RNDIS adapter just doesn't work
                        skoehler

                        The setting whether the Edison mimics an RNDIS or CDC network card is determined during flashing. The tricky part is that the parameter is part of the kernel command line. That means the parameter is passed to the kernel by uboot and it overrides whatever options are set in /etc/modprobe.d/g_multi.conf. That's why the obvious way to change the setting via /etc/modprobe.d/g_multi.conf failed.

                         

                        The command fw_setenv can be used to change the parameters that uboot passes to the kernel. This allows for choosing between RNDIS and CDC mode. First, check the current mode via "fw_printenv bootargs_ethconfig". Then change the mode to RNDIS using the command "fw_setenv bootargs_ethconfig rndis". Then reboot the Edison. The mode can be changed back to CDC ECM using the command "fw_setenv bootargs_ethconfig cdc" and rebooting again.

                         

                        It would be most desirable to have a configure_edison option to change the network device mode. Also, when flashing, the user is not asked which mode is wanted. The script flashall.sh detects the OS (cygwin=Windows or otherwise) and sets the Edison to CDC mode unless cygwin is detected. The script flashall.bat will always choose RNDIS mode. Flashing an Edison for Windows users on Linux or OS X (or the other way round) is not possible without altering the scripts.

                         

                        CDC mode works with Linux and OSX out of the box and won't work with Windows. RNDIS mode works with Windows and Linux out of the box but for OSX, the HoRNDIS driver is required.

                        • 9. Re: Windows 7 and 10: RNDIS adapter just doesn't work
                          Intel Corporation
                          This message was posted on behalf of Intel Corporation

                          Hi Sven,

                          Thank you very much for your extensive response and investigation on this matter. To be completely honest with you, I didn’t know about this, but it’s great to know how this is handled by each operating system now. There should be more documentation about this, so be confident that we will pass this information to the respective team so they can work on expand the available material.

                          Regards,
                          -Pablo