1

I received a device that comes with an SDK for python and software. This year my research group won't be renewing the software subscription because it is extremely expensive (>10k$/year). Understandable.

However, the python SDK requires a connection to the license, which we don't have anymore. I contacted the company to send me a user manual or a USB command list of their device, so I can code my own SDK, but to my surprise ((not really)), they refused.

So, we are stuck with a 60k$ device, which I'd really want to use.

Is there a way to "command scan" the device so I can try to develop my own SDK. Do I have to brute-force everything by asking the port every combination of letters, symbols, and characters? This would not be very efficient. Couldn't find much on the web.

PyThagoras
  • 195
  • 2
  • 18
  • 1
    If the device is conforming to the USB specification, it should giveaway a device descriptor and a configuration descriptor that could be used to gather more info on the device. If the device is a device which is specified in the USB with a specific class code then it could have generic driver/generic commands. – user123 Apr 21 '21 at 00:51
  • What is the type of device? – user123 Apr 21 '21 at 00:52
  • See here https://microchipdeveloper.com/usb:device-classes. If the device doesn't have a class code which is "vendor specific", it could have a generic driver which conforms to a specification. – user123 Apr 21 '21 at 01:02
  • It is a camera. I'll verify the device descriptor and vendor class code and add this information to the quesiton. – PyThagoras Apr 21 '21 at 02:06
  • If it is a camera you may have a full specification on how to drive it on the USB official website. – user123 Apr 21 '21 at 02:17
  • Try ```lsusb -t``` on Linux. – user123 Apr 21 '21 at 02:21
  • Also, I guess a camera can be driven already by Windows/Linux? If it isn't the case, then that's a good hint that it won't work with the USB specification. – user123 Apr 21 '21 at 02:31
  • Is it some kind of high end webcam for high speed image recording? If it is the case, then maybe this code will work to drive it: https://stackoverflow.com/questions/66140642/capturing-and-displaying-live-camera-content-on-windows. This code uses GDI+ which requires to invert the RGB data for some reason. Maybe GDI is a better option in this case. If you ask me if this camera can be driven on Windows without writing a full USB driver then try this code and if it doesn't work out of the box then the answer is probably no. – user123 Apr 21 '21 at 03:01
  • The camera doesn't send back device descriptor and vendorID. So I guess it doesn't match the USB specification. It is a high end, low noize, high sensitivity camera indeed. Does GDI requires USB specification ? If it doesn't, maybe an alternative way (I think) would be to get the trial version of the software then sniff the communication and read the commands the software sends and receive... ? – PyThagoras Apr 22 '21 at 04:29
  • GDI is just a rendering API. It takes an image in RGB or other formats and renders it on the screen. Media Foundation is the capturing API of microsoft. If you manage to capture images from the camera with Media Foundation, then you could write a whole C++ driver for it easily. – user123 Apr 22 '21 at 16:45
  • Have you tried the code on the link I provided. I suggest you download Visual Studio and try it out in this environment. – user123 Apr 22 '21 at 16:46
  • If the device isn't recognised by Linux with a specific vendor ID and stuff then it probably is a (very bad) proprietary device for which they wanted you to pay the software. They thus obfuscated the whole thing very badly and wrote a bad python software for it. – user123 Apr 22 '21 at 16:50

0 Answers0