On my computer using tinyos 2.1 on cygwin, motelist.exe cannot list connected
TelosB motes.
Originally motelist.exe finds the FTDI devices (motes) from the registry at:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\FTDIBUS\VID_0403+PID_6001+TB00141SA
Then check if the motes are connected by finding the correconding entries at:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB\Vid_0403&Pid_6001\TB00141SA
But unfortunately the entry is as follows on my computer, and also for the newer version of FTDI drivers. Found that the USB device instance ID in Windows registry is generated by the OS rather than using the FTDI's ID.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB\Vid_0403&Pid_6001\6&4c9e32f&0&3
Therefore motelist.exe cannot correctly handle the case.
The solution is to find out the active COM ports from the following registry location:
HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM
The changes help motelist.exe to work with new versions of FTDI drivers and to fix the said situation.
The modified source code of motelist.exe is attached.