MINISFORUM UM690 の Windows 11 がダウンするようになった

これまで 8か月ほど調子良く動作していた MINISFORUM UM690 ミニ PC ですが、2023-9-13 くらいから Windows 11 使用中に真っ黒画面や画面の乱れの完全フリーズが数時間に一度発生するようになったのでメモ。

原因は不明でログとして。いろいろアップデートして様子見中(電圧降下等の外的要因の可能性もあり)

UPDATE – DDR5 SODIMM メモリーのハンダクラックが原因だったと思われます。

事象

発生時の画面: ちなみに白四角がライフゲームのように動いて焦りました。w

イベントログ: 同時刻に AUEPMaster.exe (おそらく RADEON の収集エージェント)のエラーが計上されている。

障害が発生しているアプリケーション名: AUEPMaster.exe、バージョン: 2310.31.1.824、タイム スタンプ: 0x64e76fbc
障害が発生しているモジュール名: ucrtbase.dll、バージョン: 10.0.22621.608、タイム スタンプ: 0xf5fc15a3
例外コード: 0xc0000409
障害オフセット: 0x000000000007f61e
障害が発生しているプロセス ID: 0x0x1D28
障害が発生しているアプリケーションの開始時刻: 0x0x1D9E791F01EAF58
障害が発生しているアプリケーション パス: C:\Program Files\AMD\Performance Profile Client\AUEPMaster.exe
障害が発生しているモジュール パス: C:\WINDOWS\System32\ucrtbase.dll
レポート ID: 36c9e805-9918-43b6-8267-82034cf2edbe
障害が発生しているパッケージの完全な名前: 
障害が発生しているパッケージに関連するアプリケーション ID: 

Windows Update 状況: (ちょうど 2023-09-13 にアップデートが当たっているが関連が思い浮かばず)

❯ Get-HotFix | sort -Descending InstalledOn

Source        Description      HotFixID      InstalledBy          InstalledOn
------        -----------      --------      -----------          -----------
MINIS-UM690   Security Update  KB5030219     NT AUTHORITY\SYSTEM  2023/09/13 0:00:00
MINIS-UM690   Update           KB5029921     NT AUTHORITY\SYSTEM  2023/09/13 0:00:00
MINIS-UM690   Update           KB5028756     NT AUTHORITY\SYSTEM  2023/08/11 0:00:00
MINIS-UM690   Security Update  KB5012170     NT AUTHORITY\SYSTEM  2023/01/16 0:00:00

BIOS: 1.11 12/15/2022 11:41:44

なお、VRAM 割り当てメモリーは 2G 設定。

いろいろアップデートしてみる

RADEON ドライバ更新: 23.8.2 -> 23.9.1

卵が先な感じもしますが AUEPMaster.exe をいったん disable に。AMD ユーザーエクスペリエンスプログラムを「辞退」に。(UPDATE – おそらく卵が先。後述の通りメモリーがエラーを起こしてエージェントがダウンを検知した気がします)

RADEON チップセットドライバ更新:

UM690 BIOS 更新: 6月に新しいのがでていたようだ。なお、Windows から BIOS 更新するため、更新中に事象が起きてダウンすると詰むかもなので注意(?)…(どきどきしました

更新後 – 1.17 x64 05/31/2023

ダウンロードリンク

RADEON & チップセットドライバー

https://www.amd.com/en/support

Auto-Detect and Install Driver Updates for AMD Radeon™ Series Graphics and Ryzen™ Chipsets

MINISFORUM UM690 BIOS

https://www.minisforum.jp/support/55

UM690 ダウンロード先 BIOS F7BFC_1.17

対応結果

RADEON & チップセット & BIOS のアップデートを行い様子見中。果たして…

2023-09-15 追記(1)

アップデート後、ダウンしないものの描画がおかしくなっているのを発見(メモリー壊れてる?)

Windows 標準のメモリー診断を実行。GPU 共有メモリーが診断に含まれるか分からなかったのでいったん VRAM 512MB の最小構成で実行。問題なしで申告された。

2023-09-16 追記

Windows 起動中に GPU にメモリーを使わせるなどしていたら、画面がちらついた後 BSOD 発生。(ほぼほぼ確定で飛ぶっぽい)

BSOD せずに RADEON ドライバーが例外をキャッチするケースもあり。

同じ矩形の大きさで画面が崩れてクラッシュするケース。

memtest86 実行。美しい感じでフェイル。DDR5 メモリーが壊れたのが原因とあたりをつける。(16G * 2枚刺しなので 1枚ごとに後日やってみる)

ちなみにメモリーチェックフェイル申告後にリブートしてしまう。(フェイル画面を見るのが大変でした)

2023-09-16 追記 (2)

UM690 は開けやすくて good。なお本機は蓋についてる SATA 2.5 inch アタッチメントに SATA SSD を自分で追加して使っています。放熱やエアフローに影響しているかもしれません。

メモリーを片側、スロットを交互に計 4回で memtest86 を実行。スロット関わらず片方の SODIMM メモリーでのみメモリーチェックのフェイルが発生。ソケットやバスは問題なしと判断。

というわけで、UM690 のクラッシュの原因はメモリー故障と判断して良さそうです。このモジュールを交換すれば直ることでしょう(解決

memtest86 の温度設定

memtest86 実行中で Temp の最大温度が低くとられるケースがあったので <F6> Temperature disble を設定。(通常は 83度で取れるが 65度とかになることがあった)

おまけ

以下は特別な訓練によりメインボード等を壊す覚悟ができているひろましゃが自己責任を前提に行っています。

不良と判断した DDR5 SODIMM モジュールに対してヒートガンによるリフローを実施。フラックス塗布後、左右で 1分程度炙りました。このことにより、メモリーチェックがパスするように。また、記事中に記載した全ての不具合が再現しなくなりました。

memtest86 によると、メモリー高負荷時に温度が 80度前後まで上がるようなので、SODIMM にヒートシンクなどを付けたほうがいいのかもしれません。

Ubuntu コンテナの日本語フォントをデスクトップ版と合わせる

コンテナー版の Ubuntu は日本語フォントのデフォルトが通常の日本語設定されたデスクトップ版の Ubuntu と異なっており、特にシステム日本語フォントを使って処理をする帳票などで出力が異なる動作となる場合があります。

今回は、UML 画像の出力を行う Java の PlantUML ライブラリにて、デスクトップ版とコンテナ版の Ubuntu 22.04 でレンダリングに差異がでるという事象として確認しました。

具体的には、デスクトップ版 ja_JP.UTF-8 設定の Ubuntu 22.04 では正しく PDF レンダリングができる Asciidoc/PlantUML 文書を、GitHub Actions 上の Ubuntu コンテナでビルドさせると「日本語フォント幅が短くなって崩れる」対応になります。(この事象は、WSL2 上で動作する Ubuntu 22.04 のデフォルト状態でも発生すると思います)

PlantUML の出力する SVG の日本語フォント部分の幅計算がおかしくなるの図:

調べてみると PlantUML はデフォルトで sans-serif などのデフォルトフォント名をもとにフォント幅を計算するようでした。(追記)PlantUML のデフォルトフォントは Dialog のようです。

コンテナとデスクトップ版で fc-match を比較。

# デスクトップ版 Ubuntu
$ fc-match sans-serif
NotoSansCJK-Regular.ttc: "Noto Sans CJK JP" "Regular"
$ fc-match Dialog
NotoSansCJK-Regular.ttc: "Noto Sans CJK JP" "Regular"
# コンテナ版 Ubuntu
$ fc-match sans-serif
DejaVuSans.ttf: "DejaVu Sans" "Book"
$ fc-match Dialog
DejaVuSans.ttf: "DejaVu Sans" "Book"

というわけで、PlantUML にレンダリングシステムフォント名を指定するか、sans-serif などの標準的なフォント名を Noto Sans CJK JP で引けるようにするかで解決しそうです。今回は後者の方法を選択しました。

コンテナ版 Ubuntu で次のようにするとデスクトップ版と同じように sans-serifNoto Sans CJK JP になります。

apt-get -y update
apt-get -y upgrade
apt-get -y install language-pack-ja fonts-noto* fontconfig language-selector-common
update-locale LANG=ja_JP.UTF8
fc-cache -f # 念の為

LANGja_JP.UTF-8 の場合に Noto Sans CJK JP が選択されるように language-selector が組まれています。

$ export LANG=ja_JP.UTF-8
$ fc-match sans-serif
NotoSansCJK-Regular.ttc: "Noto Sans CJK JP" "Regular"
$ fc-match Dialog
NotoSansCJK-Regular.ttc: "Noto Sans CJK JP" "Regular"
$ export LANG=C
$ fc-match sans-serif
DejaVuSans.ttf: "DejaVu Sans" "Book"
$ fc-match Dialog
DejaVuSans.ttf: "DejaVu Sans" "Book"

なお、コンテナ全体の LANG 設定は大きな変更となりますので、既に動作しているコンテナの場合は、起動するアプリケーションごとに範囲を絞って設定したほうが良いかもしれません。

GitHub Actions の該当部分:

    - name: Setup Environment (Ubuntu)
      if: startsWith(matrix.os, 'ubuntu')
      run: |
        sudo apt update
        sudo apt upgrade
        sudo apt install language-pack-ja-base language-pack-ja
        sudo update-locale LANG=ja_JP.UTF8
        sudo apt install fonts-noto* language-selector-common
        export LANG=ja_JP.UTF-8
        fc-cache -f
        fc-match Dialog | grep "Noto Sans CJK JP"

また、クラウド IDE である Gitpod のコンテナでは初期化を次のようにすると内部ターミナルの再起動を行って場合でも LANG が設定されるようにできます。

image: gitpod/workspace-full
tasks:
  - name: Setup
    before: |
      sudo apt-get -y update
      sudo apt-get -y upgrade
      sudo apt-get -y install language-pack-ja graphviz fonts-noto* language-selector-common
      sudo update-locale LANG=ja_JP.UTF8
      echo 'export LANG=ja_JP.UTF-8' >> ~/.bashrc
      export LANG=ja_JP.UTF-8
      fc-cache -f
      fc-match Dialog | grep "Noto Sans CJK JP"

そんなこんなで、GitHub Actions 上で Ubuntu, Windows, macOS の 3環境 x Java 11, 17 の 2環境、合計 6 環境で Asciidoc/PlantUML 文書のビルド・テストができるようになりました。良い。:D

今回の例だと本来的には、SVG を PDF にレンダリングするフォントと、

  • 各 OS の Dialog フォント設定を一致させるか、
  • PlantUML 自体に Dialog ではなく、PDF レンダリングフォントを使うように指示して フォント幅計算をさせる

のが正しい処理と思いますが、各環境のビルド結果の PDF 文書を目視したところ、確認できるような差異がでていないのでいったんヨシとしています。

関連

WezTerm ターミナルエミュレータを導入

Ubuntu ではターミナルエミュレータとして長らく Alacritty を使わせていただいていたのですが、WezTerm も良さそうな感じがしましたので使ってみることにしました。

カスタマイズできる項目が非常に多く、こだわりのターミナル環境がつくれそうです。

WezTerm

WezTerm is a powerful cross-platform terminal emulator and multiplexer written by @wez and implemented in Rust

実行環境ですが、Ubuntu 22.04 LTS の X11 セッションにて、ターミナルワークスペースの Zellij と組み合わせで使っています。ちなみに自分の環境だと Flatpack 版で Ibus の接続が「時折」うまくいかなくなる事象がでていたので deb 版を使っています。 IME がうまく切り替わらない問題は deb 版でも発生するようです。原因調査中。

X11 環境下でも IME 変換窓がずれない

Alacritty/X11 だと変換窓がウインドウの下にずれてしまうのですが、WezTerm/X11 は正しい位置に表示されていい感じです。

自分は、OBS Studio の対応などの関係で Wayland に移行できておらず X11 なのでタスカルラスカル。

壁紙が設定できる

画像のオフセット指定や、複数枚指定などこだわりの壁紙設定が可能です。良い。

(壁紙は Atelier Ryza 3: Alchemist of the End & the Secret Key | #WelcomebackRyzaEU Campaign Overview より)

ショートカットキーでフォントの大きさを操作できる

実はこの機能が欲しくて WezTerm にたどり着いたのですが、ショートカットキー CTRL + SHIFT + – などで表示フォントの大きさが素早く変更できます。

自分はよくあるのですが、他の方への説明で、見やすいように一時的にフォントを大きくしたいケースで便利です。

その他にも、ショートカットキーにはさまざまな機能をバインドできるようです。

高いカスタマイズ性

コンフィグレーションは .lue 言語を使ってできるので、プログラマルにいろいろなことができそうです。

以下は単純な設定ですが、参考までに自分の現在のところの .wezterm.lua を添付します。

local wezterm = require 'wezterm'
local config = {}

-- ime
config.use_ime = true
config.xim_im_name = 'ibus'

-- font
config.font = wezterm.font 'HackGen Console NF'
config.font_size = 12.0
-- CTRL + - などでのフォント変更時にウインドウサイズを変更しない
config.adjust_window_size_when_changing_font_size = false

-- window
config.initial_cols = 150
config.initial_rows = 52
config.window_padding = {
  left = 0,
  right = 0,
  top = 0,
  bottom = 0,
}
-- タブバーをタブがひとつの時は表示しない
config.hide_tab_bar_if_only_one_tab = true

-- color
config.colors = {
  foreground = "#c5c8c6",
  background = "#181818",
  visual_bell = '#202020',
}
-- デフォルトカラースキームから選択
config.color_scheme = 'Darcula (base16)'

-- backgound
config.background = {
  {
    source = {
      File = '/home/hiromasa/Documents/images/ryza/Ryza3Wallpaper3_iPhone2.jpg'
    },
    hsb =  { brightness = 0.02 },
    opacity = 1.0,
    attachment = { Parallax = 0.5 },
    horizontal_offset = 0,
    vertical_offset = -800,
  }
}

-- disable bell
config.audible_bell = "Disabled"
config.visual_bell = {
  fade_in_duration_ms = 75,
  fade_out_duration_ms = 75,
  target = 'CursorColor',
}

return config

その他の自分の気になり機能としては、シリアルポートサポートがあったり、

wezterm serial /dev/ttyUSB0

Sixel や iTerm 形式の画像表示に対応していたり、

wezterm imgcat /path/to/image.png

等々、非常に多機能です。素晴らしい…! 継続して使っていきたいと思います。

関連