How to find VID&PID of USB device inside ARM binary? - Page 1
Forum section: electronics / general

author: Bicurico
author_rank: Super Contributor
timestamp: February 12, 2021, 09:10:07 am
content: Hello,As a lock-down induced sanity measure, I am learning to feature-hack my many test equipment devices.This has allowed me to learn a great deal in terms of how FW is packaged, how to decompile code, etc. And it is a fun activity with the reward of extra functions.I don't intent to make any of this public, as I don't want to harm the manufacturers (I will speak in PM about this).Right now I am struggling with a field meter (I don't want to name manufacturer or model). I managed to activate all options through editing configuration files and/or directly patching the binary. However, there is a GPS option that is giving me a hard time. I have the option activated, but the field meter fails to recognize the USB GPS receiver. I purchased the exact same model as depicted in the brochures and manual of said GPS option.I don't think that buyers of this option will have to install a GPS driver. I am pretty sure it comes already installed in the device.After studying how these GPS receivers are built, I understand they are mainly composed of a GPS module (with or without antenna) made by Ublox or SIRF. These have a serial RX/TX output which is connected to a serial to USB converter, which may be a PL-2303, CH340 or FTDI. The driver of these USB GPS receivers is always composed by just the RS232 to USB driver of the corresponding chip manufacturer. It is basically plug&play and if your OS does'nt already have this generic driver installed, you can just install the generic one matching the vendor (Prolific, CH340 or FTDI).I tested the test software provided by Ublox and SIRF and each version works with any GPS module, as long as it is configured in NMEA mode.I tested all possible RS232 to USB converters I own on the field meter and all just produced the pop up message of "unsupported device"... This was done by using on the PC a serial terminal software sending recorded NMEA data to simulate the GPS receiver. This way I was really testing the different possible drivers. None worked.Yesterday I found out (late at night), that the PL-2303 (which I am sure is used by my field meter) can have its OTROM or an external EEPROM programmed with a non-standard VID and PID (Vendor ID and Product ID). So now I am thinking, that the manufacturer of the field meter changes VID & PID of the common USB GPS receiver (which could be bought by anyone much cheaper elsewhere), so that only "his" are compatible with the field meters.Programming the GPS receiver VID & PID is not something I can do (it requires an USB adapter to provide 6.5V) and I wouldn't know the correct VID & PID. Also, doing so would make existing Windows drivers fail to work.So I am now in the process of figuring out where in the FW this VID & PID is checked, but I have not found anything useful - mainly because (if I am right with this in the first place), I wouldn't know which VID & PID to search for. Also, these may be stored outside the main binary, which would be a non-starter.So, finally - and thank you for reading this far - the question is: any ideas how to search&find inside an ARM binary what VID and PID are used to check USB hardware that is attached?Thanks,Vitor