SMI eyetracker, iViewXtoolbox

Hi everyone,

Me again; I'm on a bit of a steep learning curve at the moment with various different techniques! This time, can anyone help me with an SMI eyetracker and iViewX?

I have, of course, been looking at Frans Cornelissen's iViewXToolbox. I've also got some code, RemoteDemo.m, from SMI (but they are not willing to support it), and I've also found ET_tools from Johan Carlin at Cambridge ( So lots of source code out there, but I can't get any of it to work. I'm not sure if this is because I am just feeding the wrong values in for my local settings (host, port, etc). Have tried a lot of trial and error, but no joy - hence asking for help here.

Details - I have a (borrowed) SMI RED4 50Hz eyetracker, connected via Firewire to a dedicated laptop supplied by SMI and running iViewX. That laptop is connected via a LAN to a stimulus PC, which controls two monitors: one for the experimenter and one to display stimuli.
The IP address of the SMI laptop is and that of the stimulus PC as, both with Subnet mask = I can successfully ping each machine from the other one.
IViewX is up and running on the SMI laptop, and it has a nice image of a doll's eyes (actually it has locked onto one eye and part of her hair, but whatever; doesn't matter here!!).
Within IviewX Setup->Hardware->Comms, "Remote Interface 1" is set to "Ethernet", "Accept remote commands" and "stream data" (Remote Interface 2 and TTL are both "none"), and in Remote Interface 1 Configure it says "Listening Interface Port 4444; Send UDP packets to Interface Port 5555".

I have tried running all three of the demo packages mentioned above, with various choices for host, port etc, but they all hang. As far as I can tell, this is because they are waiting for a response back from the RED, which they are not getting. I am able to send commands TO the eyetracker, just not read back FROM it. For example,
>> ''; % (the other defaults seem correct for my setup as far as I can tell)
>> [result, ivx]=iViewXCalibrate(ivx);
results in, calibration diamond appearing on the IViewX; little bubble comes up inviting me to press space bar to accept point; I do; calibration diamond then moves round the 9 positions on the iViewX; but then Matlab sits there saying "Busy" until I ctrl-c out, when it breaks at iViewXComm line 47, where it is waiting to receive data from the eyetracker.

I have found that I cannot send commands unless I have'' and ivx.port=4444, but the values of the socket and localport fields don't seem to make any difference (!). I'd be really grateful if anyone experienced with SMI eyetrackers (or possibly just with updsockets?) could spare the time to have a look and give me any pointers.

All the best,


PS Another code fragment in case it helps. Here, all the "success" variables return as 1 but all the "data" returns as -1. Would one expect some of these to contain values?

clear all '';
ivx.port= 4444;
ivx.connection= 1;
ivx.socket= 1111;
ivx.localport= 5555;

ivx.connection=1; % 0=no, 1=ethernet, 2=serial
ivx.udpreadtimeout=0.1; % time out for reading
ivx.udpmaxread=1000; % maximum number of elements to read in

% open connection for receiving data
[success, ivx]=iViewX('openconnection', ivx);
[data, ivx]=iViewX('receivedata', ivx);data
[success, ivx]=iViewX('startrecording', ivx);
[data, ivx]=iViewX('receivedata', ivx);data
[success, ivx]=iViewX('setcalibration', ivx, ivx.nCalPoints);
[data, ivx]=iViewX('receivedata', ivx);data

for j=1:10
[data, ivx]=iViewX('receivedata', ivx);
if data~=-1

[success, ivx]=iViewX('cancelcalibration', ivx, ivx.nCalPoints);
[success, ivx]=iViewX('stoprecording', ivx);
[success, ivx]=iViewX('closeconnection', ivx);

Jenny C. A. Read
Royal Society University Research Fellow Mobile 0756 151 6988
Institute of Neuroscience Office +44 191 222 7559
Newcastle University, NE2 4HH