As probably more people have done, the recent promotion of Peak products aroused my curiosity and I bought a Peak Atlas DCA75 Pro.
Nice device, better than the chinese component testers, and the main advantage is its possibility to test at multiple Voltages/Currents (up to 12V,12mA).
But the main problem I have with it, is that the latter is only possible through the PC application. And that is compatible with Windows only. And I, as many others, prefer to avoid that OS at all costs.
My goal is to connect the device to MacOS or Linux, and control the device via SCPI. I don't care that much about the windows app.
After having spent a day trying to get the device to communicate with MacOS or Linux, and not having succeeded properly, I decided to give up (for now). But since I'm not alone in this quest, I decided to leave my findings here (in random order). Maybe it'll help someone or avoid wasting of time.
* Peak does not seem to be interested in supporting anything else than Windows. Many people have tried pushing them on this and gotten no positive result.
* Running the software under wine: Will not work, the USB layers of wine are close to non-existent.
* Running the software in a Windows VM: This can be made to work. See below. I have the impression that by default, there are some timing issues on the device that make it fail the installation. The handover from the host to the VM takes some time, and maybe it is too long.
* The Windows software is based on .Net Framework 4.0. Please, people from Peak: THIS IS BAD. Any use of .Net Framework is bad, no matter the version. They should move to one of the latest LTS versions of .Net (without the suffix "Framework" or "Core". Meaning: 10, at the time of writing). There is not a single valid reason for wanting to maintain compatibility with Windows XP.
* The device uses a PIC18F47J53, directly attached to the USB bus. It advertises as "USB\VID_04D8&PID_F8CA\xxxxxxx" where xxxxxxx = the serial number of the device.
* The windows software wants to attach to a USB device via a GUID ({9B05F9EC-D9B6-43DC-A734-72D7CEA14190}). That specific GUID is only available once the device driver is correctly initialised for the device, which fails on a VM right now. Manual intervention is needed now. See below. Peak, please know that there are other methods for connecting to a USB device, that make it less susceptible to installation woes, and some are even platform neutral.
* Decompiling the windows app, as well as sniffing the USB communication, is not hard to do, so reverse engineering of the communication protocol is doable. (Some people have decompiled the device's code, I have not looked)
* PC software upgrades go linked with firmware upgrades: the communication protocol is not adaptive to mismatching versions.
* The communication with the device is all binary. The code shows loads of bit and byte arrays, and 'magic numbers'.
EDIT:
How to make it work on a VM:
Note: you may need to redo all this when you update the firmware, especially since the software update mentioned by gyro below (PC software upgrade to 1.1.25.147 and the firmware upgrade to 0029).
(my situation: MacOS Intel, VMWare Fusion, Win11 VM, using a standard 3.1 USB. Forcing USB 2.0 compatibility may in some cases be helpful, but was not needed in my case.)
* You may want to add the following to the .vmx file:
* usb.generic.allowHID = "TRUE"
* usb.autoConnect.device0 = "vid:04d8 pid:f8ca" (and maybe also "vid:04d8 pid:003c", as that will help during firmware upgrades)
This is not mandatory, and may be a lengthy process if you use encrypted vmx files (as you should). If you do not do it, you will just have to reconnect the USB device every time.
* when you have installed the software and then plugged in the device (as stated in the doc), the software does not detect the device.
* open Device Manager
* Not strictly needed, but may help: if you see the device as "unknown device", then uninstall it and plug it back in. It should come up as "Peak Atlas DCA Pro". I found it reliably 50% OK, 50% not OK.
* if you do NOT see it under "Universal Serial Bus devices", manually update the driver: "Browse for...", then "Let me pick...", then "Universal Serial Bus devices", then "WinUsb Device/WinUsb Device"
* it should now show up under "Universal Serial Bus devices"
* open Regedit
* go to "Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB\VID_04D8&PID_F8CA\xxxxx\Device Parameters" (xxxxx = your serial number) (ignore ...PID_003C, that is for firmware upgrades, no change needed there)
* New String value, with as key/name: "DeviceInterfaceGUID"
* Modify that string: set the value as "{9B05F9EC-D9B6-43DC-A734-72D7CEA14190}"
* shut down the PC software if that was not done yet
* reconnect the device
* check is the device shows up as it should in Device Manager (it should)
* start the PC software. It should now see the device.
Conclusions:
* It should be possible to make the device attachment method working in VMs, automatically, with minor code changes.
* Making a working, reverse engineered, communication stack is possible, but extremely time consuming in both build and maintenance (the communication is binary and seems to change with the firmware versions). Collaboration with Peak would be advised. I have proposed collaboration, heard nothing back.
Just in case Peak sees this, and for what it's worth, here is my wishlist (we are in the right season for that, so here I go), in growing complexity/effort:
* Allow setting the test current/voltage from the device, without needing the PC software.
* Make cross platform python library that allows control over the device
* Make it easier to install on Windows VMs. (VMWare Fusion/Workstation, VirtualBox,...)
* Make the software compatible with MacOS or Linux.
* There is no need for a full fledged equivalent of the PC software, a Python or .Net interface would be enough for me.
* Make the device expose a serial interface, as that will make it a lot easier to both installation and becoming multi-platform compatible.
* raise the limits to 50V/100mA, instead of 12V/12mA. That will require significant hardware changes, and will require a rechargeable battery or external power if you want to keep the same form factor.