How to determine the screen on which eyetracker calibration is performed

Dear,

I am using a EyeLink 1000 to conduct a study on reading.
The experimental routine always starts with a calibration.
However, the calibration procedure is always displayed on the experimenter’s monitor but not the participants monitor. The experiment itself is displayed on the correct monitor for the participant (screen=1).

Here I include the relevant code:

win = psychopy.visual.Window(monitor='maxDimB', fullscr=False, allowGUI=True, allowStencil=False,
             screen=1, color=[0,0,0], colorSpace='rgb', units='pix')
...

#
eyetracker_config = dict(name='tracker')
eyetracker_config['model_name'] = 'EYELINK 1000 DESKTOP'
eyetracker_config['simulation_mode'] = False
eyetracker_config['runtime_settings'] = dict(sampling_rate=1000, track_eyes='RIGHT')
tracker_config = {'eyetracker.hw.sr_research.eyelink.EyeTracker':eyetracker_config}

# Since no experiment or session code is given, no iohub hdf5 file
# will be saved, but device events are still available at runtime.
io = launchHubServer(**tracker_config)

...

##############
### ROUTINE ##
##############

# run eyetracker calibration #
tracker.runSetupProcedure()

instruction.draw()
win.flip()
proceed()

How can I display the calibration on the correct monitor too?

thanks,
Koen

Did anyone find a solution to this one?

I had the same issue with similar code. I tried to also insert window=win as an argument into the launchHubServer function but it still displays the calibration on screen 0.

I even checked the functions that are called and within …/psychopy/iohub/devices/eyetracker/hw/sr_research/eyelink/calibration.py it seems to create a window (around lines 363-370) and there it also tells me that screen=1. But what it does, is creating a window on screen 0. :sweat:

If anyone could help with that it would be great!

I’ve had success in the past putting a screen definition in the iohub_config.yaml file that specifies a “device number”.

- Display:
        name: display
        reporting_unit_type: pix
        device_number: 1
        physical_dimensions:
            width: 725
            height: 561
            unit_type: mm
        default_eye_distance:
            surface_center: 550
            unit_type: mm
        psychopy_monitor_name: Name

The “psychopy monitor name” connects it to a Monitor I created in the “Monitor Center”, which has some info about resolution. I’ve never had a problem when I’ve used the ‘device_number’ argument, but I also haven’t tried doing it any other way.