I'm posting a new thread because this involved a difference target processor, but I'm running into largely the same problem that was posted here: https://community.nxp.com/t5/Kinetis-Microcontrollers/vnic-example-for-FRDM-K64F-not-enumerating-on-...
Essentially, with the stock configuration, the USB device connector on the EVK enumerates as a COM port in Win10 device manager.
I have tried changing the device PID, so that previous enumeration as a COM port would not be confused for the same device attempting to enumerate in a different way. I have been able to get a Microchip ATSAME54 to enumerate as RNDIS on this PC in the past, so I don't think this is likely to be a driver issue.
I have checked advice from the linked thread above, such as
Also, beware that automatic VCOM installation in Win 10 doesn't seem to work with VNIC - it thinks it is a VCOM and installs it as such, even if it should be VNIC (based on VCOM). Therefore make sure that in the returned configuration descriptor the "device class communication and control" fields are set to 2:0:0 (meaning install manually) and not 2:2:0 (which tells Win 10 to install VCOM automatically).
So I checked and usb_device_descriptor.h has:
/* Class code. */
#define USB_DEVICE_CLASS (0x02)
#define USB_DEVICE_SUBCLASS (0x00)
#define USB_DEVICE_PROTOCOL (0x00)
Which I presume is what @mjbcswitzerland meant and is correct.
Then I looked at:
For anyone else new to USB and working with the USB VNIC example for MCUXpresso IDE using FreeRTOS - I simply changed #define USB_CDC_VNIC_CIC_SUBCLASS (USB_CDC_ABSTRACT_CONTROL_MODEL) to #define USB_CDC_VNIC_CIC_SUBCLASS (USB_DEVICE_SUBCLASS) in usb_device_descriptor.h. That got the example working for me on Windows 10.
So I changed that but came across the issue that the list of #defines which sit in the list alongside USB_CDC_ABSTRACT_CONTROL_MODEL do not include the value 0x00, which is what USB_DEVICE_SUBCLASS is defined as, so USB_CDC_VNIC_CIC_SUBCLASS (USB_DEVICE_SUBCLASS) fails to enumerate at all for me.
I also tried, in vain USB_CDC_VNIC_CIC_SUBCLASS (USB_CDC_ETHERNET_NETWORKING_CONTROL_MODEL) and also tried with #define USB_CDC_VNIC_CIC_PROTOCOL (USB_CDC_VENDOR_SPECIFIC) as hinted at in a TI forums post about RNDIS.
Please could someone offer guidance here? If @jesseb ever got it working on Win10, I'd love to know if there were any more changes needed from the default configuration. My gut feel is that all this can be solved inside the USB device descriptor but I can't work out what needs changing and there are too many parameters to brute-force it (which also wouldn't fill me with confidence that the first working solution would be a robust/protocol-correct one).
I would also be very grateful if someone could confirm the example enumerates as RNDIS using default configuration on their MIMXRT1060 EVK.
Hello
I hope you are well.
There is one SDK example evkbmimxrt1060_lwip_dhcp_usb_bm in the i.MX RT1060 EVK SDK. It connects the USB to the Internet. You might check this application as it contains some key considerations for USB: Connect i.MX RT1060 to USB 4G Module (RNDIS Mode) (nxp.com)
Best regards,
Omar
Hi @Omar_Anguiano thanks for replying. The example you reference is different in two key ways: firstly, it is host mode, so there is no obvious clue about RNDIS device descriptors and secondly, the main discussion of the document is how to bind AT command interfaces, so as to interact with a 4G modem - I cannot see how that is related to the device enumeration issue I reported with the dev_vnic_bm example.
Please can you test the dev_vnic_bm example on your RT1060 EVK on a Windows 10 machine and let me know if you have the same result as the symptoms I reported?
Hello
| was able to replicate this, only changed this descriptor macro to this value:
#define USB_CDC_VNIC_CIC_SUBCLASS (USB_DEVICE_SUBCLASS)
It does not enumerate completely as I need to update the driver with the files on the example but security features of my PC do not allow me to update this.
Best regards,
Omar
@Omar_Anguiano thanks for reproducing the issue.
I need to update the driver with the files on the example
You imply that if a driver is installed on the host PC, it will enumerate. Where does one find this driver? I cannot see any folder in the project tree which seems to contain a relevant Windows operating system driver file:
The driver is located at the SDK project location ...\boards\evkmimxrt1170\usb_examples\usb_device_cdc_vnic\inf
Best regards,
Omar