We've been using Fastboot from Windows 10 to do development of an Android device. Our normal update and development procedure is this.
- Start the device booting
- Stop u-boot from booting to Android
- Start Fastboot from u-boot
- Use UUU or Fastboot from Windows 10 to push the desired update to the Android device.
- Reboot the device (e.g. u-boot cli "reset", or the reset button, or power cycle)
One of our developers got his development host machine updated to the 20H2 version of Windows 10, and after that happened the developer was no longer able to get step 4 above to work. Windows wasn't loading the Google USB driver when u-boot enumerated the USB gadget associated with Fastboot anymore. The obvious symptom was that Windows never "discovered" the new device when it was connected to the system.
It seems like that problem traces to the USB VID and PID that the u-boot USB gadget reports. We hadn't changed the default defconfig settings for "CONFIG_USB_GADGET_VENDOR_NUM" and "CONFIG_USB_GADGET_PRODUCT_NUM" from what they were in the distribution, and that seems to trace to a commit dating back to 2015. That commit sets the u-boot gadget VID to 0x0f25 which seems to be registered to "Netchip Technology, Inc", and PID to 0xA4A5 which would be a "Pocketbook Pro903" device.
I guess in retrospect the process outlined above did require us to manually install/update the Google USB driver the first time the Android device attached to a host. That manual installation of the driver associates the VID/PID u-boot enumerates with the Google USB driver. The problem seems to be that the new version of Windows 10 seems to no longer allow that kind of "Make this driver work with this device" kind of behavior to manually add VID/PIDs to the list that a device driver is known to support.
Our fix was to change the VID/PID to be something that is recognized by the Google USB driver. The reasoning was that once Android gets going, that USB port enumerates as a Google ADB device that is identified by Windows. So we should be OK to change u-boot so that when fastboot enumerates a device on that USB port it is the "bootloader" version of the same Google device.
I guess I'm left wondering...
Should the default NXP distribution for u-boot use a USB VID other than what's assigned to NXP or Freescale?