headless installation -- mne coreg GUI black screen

Hi all, after trying a few combos to bring up the coreg GUI on our lab’s headless server via VNC, I’m still seeing no head rendered, just a black screen. Is there something that I missed, or some other hacks I could try? Any help would be appreciated.


No head rendered inside the coreg GUI. Just a black screen.

My setup:

MNE version: 1.6.1
Operating System: Red Hat Enterprise Linux Server release 7.8 (Maipo)
Kernel: 3.10.0-1127.13.1.el7.x86_64

Steps I took:

  1. I followed Headless Install Issue - #5 by jstout211 and created a new installation on the server
  2. I followed Advanced setup — MNE 1.6.1 documentation and defined the following environment variables:
  1. I then defined SUBJECTS_DIR and invoked the coreg GUI by mne coreg -s ${my_subj_id} (actual subject ID string defined elsewhere)
  2. I also tried bring up the GUI in a jupyter notebook. Per MNE Coreg issue with display - black screen on visualization - #2 by mscheltienne, I made sure that antialiasing would be disabled by mne.viz.set_3d_options(antialias=False).

Steps 2 - 4 were done over a VNC session. Same black screen observed after steps 3 and 4.

I also tried to run the GUI over X11 forwarding. Attempts were made on a Ubuntu 22.04 distro and on VcxSrv (Windows). Same black screen observed in both cases.

Output of mne sys_info:

Platform             Linux-3.10.0-1127.13.1.el7.x86_64-x86_64-with-glibc2.17
Python               3.9.18 | packaged by conda-forge | (main, Aug 30 2023, 03:49:32)  [GCC 12.3.0]
Executable           /xxx/miniforge3/envs/mne2/bin/python3.9
CPU                  x86_64 (8 cores)
Memory               22.8 GB

\u251c\u2611 mne               1.6.1 (latest release)
\u251c\u2611 numpy             1.26.4 (OpenBLAS 0.3.26 with 8 threads)
\u251c\u2611 scipy             1.12.0
\u251c\u2611 matplotlib        3.8.3 (backend=QtAgg)
\u251c\u2611 pooch             1.8.1
\u2514\u2611 jinja2            3.1.3

Numerical (optional)
\u251c\u2611 sklearn           1.4.1.post1
\u251c\u2611 numba             0.59.1
\u251c\u2611 nibabel           5.2.1
\u251c\u2611 nilearn           0.10.3
\u251c\u2611 dipy              1.9.0
\u251c\u2611 openmeeg          2.5.6
\u251c\u2611 pandas            2.2.1
\u2514\u2610 unavailable       cupy

Visualization (optional)
\u251c\u2611 pyvista           0.43.4 (OpenGL 3.3 (Core Profile) Mesa 21.2.5 via softpipe)
\u251c\u2611 pyvistaqt         0.11.0
\u251c\u2611 vtk               9.2.6
\u251c\u2611 qtpy              2.4.1 (PyQt5=5.15.8)
\u251c\u2611 pyqtgraph         0.13.4
\u251c\u2611 mne-qt-browser    0.6.2
\u251c\u2611 ipywidgets        8.1.2
\u251c\u2611 trame_client      2.16.5
\u251c\u2611 trame_server      2.17.2
\u251c\u2611 trame_vtk         2.8.5
\u251c\u2611 trame_vuetify     2.4.3
\u2514\u2610 unavailable       ipympl

Output of glxinfo -B

name of display: :1
display: :1  screen: 0
direct rendering: Yes
Extended renderer info (GLX_MESA_query_renderer):
    Vendor: VMware, Inc. (0xffffffff)
    Device: llvmpipe (LLVM 7.0, 128 bits) (0xffffffff)
    Version: 18.3.4
    Accelerated: no
    Video memory: 23379MB
    Unified memory: no
    Preferred profile: compat (0x2)
    Max core profile version: 0.0
    Max compat profile version: 2.1
    Max GLES1 profile version: 1.1
    Max GLES[23] profile version: 2.0
OpenGL vendor string: VMware, Inc.
OpenGL renderer string: llvmpipe (LLVM 7.0, 128 bits)
OpenGL version string: 2.1 Mesa 18.3.4
OpenGL shading language version string: 1.20

OpenGL ES profile version string: OpenGL ES 2.0 Mesa 18.3.4
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 1.0.16

Hello, I cannot help you exactly with that specific problem, but I do have MNE working via VNC in a Docker container (including 3D viz). Would you be interested in trying this out?

Thanks, @richard ! Absolutely. Would you mind sharing a Dockerfile or some link/recipe that I can follow?

Hello, I’m swamped this week but I can certainly send you something on Friday or this weekend. I was working on a Dev container setup this isn’t final yet and is slightly outdated now since I haven’t touched it for a couple of months; I’ll get back to this and let you know. If we find this works for you, we can probably turn this into a “proper” Docker setup for stable MNE :slight_smile:



Update: I haven’t forgotten about this, I’m just incredibly busy still. Should be able to get to it this weekend!