Can I control to two Eyelinks Simultaneously with Mworks?

Hello Chris,

I am Michael Yoo, a postdoc working with Mehrdad Jazayeri. I am trying to control two eye-tracker (specifically, Eyelink 1000) with one Mworks. However, I could only control one, and Mworks showed an error saying it could not connect to the other one. It may not be the problem with IP addresses since I followed the SR-research technical staff’s guidance for IP addresses configuration. Furthermore, I could control each eye-tracker when I turned one of them off.

If you could help me with what to do for first-round troubleshooting, that would be a great start.

Thank you so much.

Best,
Michael

Hi Michael,

The EyeLink Developers Kit, which MWorks uses, does not support connecting to multiple EyeLink systems from a single application. If you have multiple instances of MWServer running on a single Mac, each one should be able to connect to a different EyeLink (though I have never tried this), but connecting to multiple systems from a single MWServer instance isn’t possible.

Cheers,
Chris

Hello Chris,

Thank you so much for your answer. According to your answer, if I want to track the eyes of two subjects simultaneously, it would be nice to consider tracking eyes via multiple MWServer and synchronize them. An initial trial would be through NIDAQ or Arduino, but do you have any suggestions?

Best,
Michael

Hi Michael,

According to your answer, if I want to track the eyes of two subjects simultaneously, it would be nice to consider tracking eyes via multiple MWServer and synchronize them. An initial trial would be through NIDAQ or Arduino, but do you have any suggestions?

I wasn’t really recommending that approach. I was just saying that it’s probably possible.

MWorks isn’t really designed for running multiple MWServer instances on one machine, and I think you’d run in to issues if you tried. For one thing, the two instances would share settings, so you couldn’t specify a different stimulus display for each instance. On the other hand, if the second instance were just talking to an EyeLink and sending events to the first, it might work. But there could be other problems.

Being limited to one EyeLink connection per process seems entirely arbitrary. The EyeLink API communicates with the eye tracker via a TCP socket, so there’s no obvious reason why you shouldn’t be able to connect to more than one system simultaneously. My guess is that the SR Research folks designed the API that way just to keep things simple for the common case.

A potential solution would be for MWServer to spawn a separate child process for communicating with each connected EyeLink. This is what happens for NIDAQ devices (although for different reasons). However, this would entail a major reworking of MWorks’ EyeLink interface, so I couldn’t get it to you quickly. (Given my current workload, it’d likely be several months before I could even start on it.)

Sorry – I wish I had a better answer for you, but I don’t at the moment.

Cheers,
Chris