2024年10月01日

WSL + QT = could not connect to displayでドハマリした。


GOLE 2 Pro (Celeron N5095) / Windows 11 で GRC (GNU Radio Companion) を動かそうとして、VcXsrvを使った手順を踏んだところ、GRCは起動しましたが、フローを実行すると

qt.qpa.xcb: could not connect to display 10.255.255.254:0.0
qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found.
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.

Available platform plugins are: eglfs, linuxfb, minimal, minimalegl, offscreen, vnc, xcb..

というエラーで止まってしまうという状態になりました。
export QT_QPA_PLATFORM=offscreen
でGUIを無効にすれば実行は可能ですが、状態もわからないし、パラメータを動的に変更することもできないですし、不便ですよね。

で、ドハマリして3日ほど悪戦苦闘していたのですが、 結論から言えば、Display Driverの更新で動作するようになりました。WSLgが有効な環境では VcXsrv も
export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0.0
も不要です。

=======================================================


以下、解決までのメモ…

すでにWSLをインストールしていて、
wsl --status で
Linux 用 Windows サブシステムの最終更新日: 2022/03/29
カーネル バージョン: 5.10.102.1

となる場合は、VcXsrv を使用した手順です。

問題となるのは、wsl --version で以下のようにWSLgが含まれる場合です。

WSL バージョン: 2.2.4.0
カーネル バージョン: 5.15.153.1-2
WSLg バージョン: 1.0.61
MSRDC バージョン: 1.2.5326
Direct3D バージョン: 1.611.1-81528511
DXCore バージョン: 10.0.26091.1-240325-1447.ge-release
Windows バージョン: 10.0.22631.4169

2024年4月以降に wsl --udpdate をした環境はこちらのはずです。

Ubuntu 導入〜 WSLg の動作まで

wsl --update
wsl --install Ubuntu-2x.04

$ sudo apt update
$ sudo apt grade
$ sudo apt install x11-apps
$ xeyes


この時点で
can't open display:0
で xeyes が立ち上がらない環境は、この先いくら頑張っても望み薄ですので、ディスプレイドライバーの更新を行いましょう!

なお、MS公式の Linux 用 Windows サブシステム で Linux GUI アプリを実行する からリンクされているIntel GPU ドライバーでダウンロードできる、gfx_win_101.3790_101.2114.exe は古いらしくダメでした。

intel uhd.png

正解は、N5095 as Intel 7th-10th Gen Processor Graphicsの場合、gfx_win_101.2130.exe でした。

intel uhd update.png

Ubuntu側の環境で
export DISPLAY=:0.0
export DISPLAY=172.26.192.1:0
などの export DISPLAY をいろいろ試したり、Qtの環境をいろいろ試したり、.wslgconfig に
LIBGL_ALWAYS_SOFTWARE=1
やら .wslconfig に
guiApplications=false
やら書いてもダメでした。

コンピューターの世界は日進月歩で進化しており、その過程を体感できることは喜ばしいことです。しかし、以前の手法が通用しない時が発生しがちなのは困ったものです。
posted by MON at 00:00| Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする
【今是昨非】http://nomulabo.com/