AFAIK, a device / port / connection only provides a vendor ID and thus a vendor **string** requires a database lookup. I like that you leave the option to read the vendor ID as well, and don't mix those properties up (e.g. when a vendor string can be resolved, return the string, otherwise the ID)!