psychopy.org | Reference | Downloads | Github

Trying to use v3.2 with Cedrus button box. Error: "Unable to find D2XX DLL. Please make sure ftd2xx.dll or ftd2xx64.dll is in the path."

OS: Win10 update 1909
PsychoPy version : 3.2.4
Standard Standalone? (y/n) y
What are you trying to achieve?:
Trying to trigger my task from a Cedrus (Lumina LSC-400B) button box connected by serial (DB9) port, that receives the trigger signal from our GE 450w 3T MRI scanner.
When I include the Cedrus response box code (from Builder) it fails with this error:
“Unable to find D2XX DLL. Please make sure ftd2xx.dll or ftd2xx64.dll is in the path.”
This error doesn’t occur without the Cedrus code.
I traced that this is coming from the pyxid library (part of the standalone) when it doesn’t find the ftd dll’s.

What did you try to make it work?:
This task worked fine on Win Vista before upgrading to this OS and this version of PsychoPy.
I tried to install the FTDI drivers from the FTDI site.
This seemed to succeed without errors, however, PsychoPy reported the same ‘missing ftd2xx.dll’ error.
I found a directory on my Win10 system which has the drivers but so far I’ve not been able to register them successfully (using generic advice for registering dll’s with Windows.)
I’m beginning to wonder if the solution is to ‘disable driver signature enforcement’ which is apparently an issue on Win10.
Thoughts before I take this (for me) unusual step?

I’ve found a work-around which is to replace the new pyxid module with the one from my old v.1.90.0 psychopy2 (and delete the pyxid2 module) in the site-packages of psychopy3. This works because the old pyxid did not depend on the ftd2xx module or its dll’s. I guess ftd2xx is used to improve the serial communication performance but that’s not critical for my application.

I’m still not clear on whether the ftd module is expected to work with my Cedrus (which is fairly old and doesn’t have a USB-to-serial converter) but I have confirmed that Xidon 2 (that Cedrus claims can be used for testing their new hardware) doesn’t detect my Cedrus box.

Oh dear. Yes, Cedrus pyxid2 now uses ftd lib but I didn’t know it was potentially troublesome. I think it wouldn’t be too hard to package both pyxid2 and include pyxid as well as a fallback in case the former lib fails. We should try an dget someond from cedrus on here to help I guess.

I posted an issue to the pyxid github and linked to this discussion. Let’s see if they can shed any light on this.

Yes, our pyxid2 library now uses the D2xx library instead of the VCP one. This allows the software to provide a fixed 2ms delay that is jitter free (vs. a jitter of 5-6ms). We think it’s worth it, especially when it comes to sending out event markers via USB.

If you are using a third party USB-to-serial port converter, the only one I would recommend is this one from Saelig. It uses an FTDI chip.

1 Like

Habboud, thanks for joining the discussion. It sounds like you would recommend that I use a USB-to-serial port converter to get the timing benefits of the D2xx library (instead of continuing to try to use a straight serial connection to my PC’s serial port). Then I should be able to use the current pyxid2 library, and consequently the current PsychoPy3. Correct?

Yes, that is correct.

Interestingly, it looks like the device that @habboud points to also supports OSX. Good to know that this exists. Thanks