0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ThinkPad Ubuntu 22.04で音が出ない、Bluetoothなどドライバー修正まとめ

0
Last updated at Posted at 2026-02-14

ThinkPad P16 Gen 3 Ubuntu 22.04 + Liquorix カーネル 6.18 環境でのドライバー修正まとめ

環境

項目 詳細
PC Lenovo ThinkPad P16 Gen 3 (21RQCTO1WW)
OS Ubuntu 22.04.5 LTS (Jammy)
カーネル 6.18.6-1-liquorix-amd64
GPU (dGPU) NVIDIA RTX PRO 5000 Blackwell (10de:2c38)
GPU (iGPU) Intel Meteor Lake (8086:7d67)
オーディオ Intel Meteor Lake (8086:7f50) / SoundWire / CS42L43 + CS35L56
Bluetooth チップ Intel AX211

問題1: NVIDIA GPU が認識されない (nouveau 失敗)

症状

nouveau 0000:01:00.0: gsp: Failed to load required firmware for device.
nouveau 0000:01:00.0: gsp ctor failed: -2
nouveau 0000:01:00.0: probe with driver nouveau failed with error -2

原因

Blackwell 世代の GPU に nouveau ドライバーが対応しておらず、プロプライエタリドライバーも未インストールだった。

解決策

sudo apt update && sudo apt install -y nvidia-driver-590-open
sudo reboot

nvidia-smi で正常に認識されることを確認:

NVIDIA RTX PRO 5000 Blac...  | Driver Version: 590.48.01 | CUDA Version: 13.1

問題2: Intel i915 GSC ファームウェアが古い

症状

i915 0000:00:02.0: [drm] GT1: GSC firmware too old for ARL, got 102.0.0.1655 but need at least 102.0.10.1878
i915 0000:00:02.0: [drm] *ERROR* GT1: GSC firmware i915/mtl_gsc_1.bin: fetch failed -EINVAL

原因

Ubuntu 22.04 の linux-firmware パッケージ (2022年版) が Meteor Lake / Arrow Lake 用の GSC ファームウェアとして古いバージョンを含んでいた。

解決策

kernel.org の linux-firmware リポジトリ から最新の GSC ファームウェアをダウンロード:

sudo wget -O /lib/firmware/i915/mtl_gsc_1.bin \
  https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/plain/i915/mtl_gsc_1.bin
sudo update-initramfs -u
sudo reboot

問題3: オーディオが出ない (Dummy Output)

これが最も複雑な問題で、複数の原因が絡んでいた。

症状

  • GNOME 設定で出力が「Dummy Output」のみ表示
  • マイクも認識されない
  • pactl list sinks shortauto_null のみ表示

原因1: カーネルパラメータでレガシー HDA ドライバーが強制されていた

/proc/cmdlinesnd_intel_dspcfg.dsp_driver=1 が設定されていた。Meteor Lake のスピーカー (CS42L43 + CS35L56) とマイク (DMIC) は SoundWire 接続であり、SOF (Sound Open Firmware) ドライバー (dsp_driver=3) が必要。

# /etc/default/grub に SOF 強制パラメータを追加
# GRUB_CMDLINE_LINUX_DEFAULT に snd_intel_dspcfg.dsp_driver=3 を追加
sudo sed -i 's/GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"/GRUB_CMDLINE_LINUX_DEFAULT="quiet splash snd_intel_dspcfg.dsp_driver=3"/' /etc/default/grub
sudo update-grub

注意: EFI grub.cfg のルートパーティション

デュアルブート環境では、EFI パーティション上の /boot/efi/EFI/ubuntu/grub.cfgどのパーティションの grub.cfg を読み込むかを指定している。

# /boot/efi/EFI/ubuntu/grub.cfg の内容
search.fs_uuid <UUID> root
set prefix=($root)'/boot/grub'
configfile $prefix/grub.cfg

ここの UUID が別のパーティションを指していると、/etc/default/grub を修正して update-grub しても反映されない。UUID が現在のパーティションを指していることを確認:

# 現在の root パーティションの UUID を確認
findmnt -n -o UUID /

# EFI grub.cfg の UUID を現在のパーティションに修正
sudo sed -i "s/<古いUUID>/$(findmnt -n -o UUID /)/" /boot/efi/EFI/ubuntu/grub.cfg

原因2: SOF ファームウェアの不足

Ubuntu 22.04 の firmware-sof-signed パッケージにはファームウェアが含まれていたが、IPC4 用のディレクトリ構成が不足していた。

# sof-ipc4-tplg → sof-ace-tplg シンボリックリンク作成
sudo ln -s sof-ace-tplg /lib/firmware/intel/sof-ipc4-tplg

原因3: UCM Syntax 7 と libasound2 の非互換

SOF ドライバーが正常に動作しても、PipeWire/WirePlumber が**「stereo-fallback」プロファイル**にフォールバックし、スピーカー (hw:1,2) ではなく Jack Out (hw:1,0) に音声がルーティングされていた。

根本原因は UCM (Use Case Manager) 設定ファイルの Syntax バージョン不整合:

$ alsaucm -c sof-soundwire list _verbs
ALSA lib parser.c:2021:(parse_master_file) Incompatible syntax 7 in sof-soundwire.conf
パッケージ バージョン 対応 Syntax
alsa-ucm-conf 1.2.6.3-1ubuntu1.12 (更新済) Syntax 7 を含む
libasound2 1.2.6.1-1ubuntu1 Syntax 6 まで

Ubuntu 22.04 の alsa-ucm-conf パッケージが Syntax 7 の UCM ファイルに更新されているにもかかわらず、libasound2 は Syntax 7 をパースできない 1.2.6 のまま。libasound2 のアップグレードは glibc 2.38 を要求するため Ubuntu 22.04 では不可能。

最終的な解決策: WirePlumber + autostart スクリプト

UCM が使えない環境でのワークアラウンドとして、pro-audio プロファイルへの切替とデフォルトデバイスの設定を自動化する。

ALSA デバイスの対応表

$ aplay -l  (card 1: sofsoundwire のみ抜粋)
device 0: Jack Out      → ヘッドホン出力
device 2: Speaker       → 内蔵スピーカー
device 5-7: HDMI        → HDMI オーディオ出力

1. WirePlumber ルール (~/.config/wireplumber/main.lua.d/51-sof-soundwire.lua)

-- Fix for sof-soundwire on Ubuntu 22.04
-- UCM Syntax 7 is incompatible with libasound2 1.2.6
-- Use pro-audio profile and route to Speaker (device 2) directly

table.insert(alsa_monitor.rules, {
  matches = {
    {
      { "device.name", "equals", "alsa_card.pci-0000_80_1f.3-platform-sof_sdw" },
    },
  },
  apply_properties = {
    ["api.alsa.use-ucm"] = false,
    ["device.profile"] = "pro-audio",
  },
})

-- Set Speaker (pro-output-2, hw:1,2) as high priority default sink
table.insert(alsa_monitor.rules, {
  matches = {
    {
      { "node.name", "equals", "alsa_output.pci-0000_80_1f.3-platform-sof_sdw.pro-output-2" },
    },
  },
  apply_properties = {
    ["node.description"] = "Speaker",
    ["node.nick"] = "Speaker",
    ["priority.driver"] = 2000,
    ["priority.session"] = 2000,
  },
})

-- Set DMIC (pro-input-1) as high priority default source
table.insert(alsa_monitor.rules, {
  matches = {
    {
      { "node.name", "matches", "alsa_input.pci-0000_80_1f.3-platform-sof_sdw.pro-input-*" },
    },
  },
  apply_properties = {
    ["node.description"] = "Internal Microphone",
    ["node.nick"] = "Internal Microphone",
    ["priority.driver"] = 2000,
    ["priority.session"] = 2000,
  },
})

-- Set Headphone (pro-output-0, hw:1,0) with lower priority
table.insert(alsa_monitor.rules, {
  matches = {
    {
      { "node.name", "equals", "alsa_output.pci-0000_80_1f.3-platform-sof_sdw.pro-output-0" },
    },
  },
  apply_properties = {
    ["node.description"] = "Headphones",
    ["node.nick"] = "Headphones",
    ["priority.driver"] = 1500,
    ["priority.session"] = 1500,
  },
})

2. 自動起動スクリプト (~/.local/bin/fix-audio.sh)

#!/bin/bash
# Fix sof-soundwire audio on ThinkPad P16 Gen 3 (Ubuntu 22.04)

sleep 3

# Wait for PipeWire to be ready
for i in $(seq 1 30); do
    if pactl info > /dev/null 2>&1; then
        break
    fi
    sleep 1
done

# Get sof-soundwire card name
CARD="alsa_card.pci-0000_80_1f.3-platform-sof_sdw"

# Switch to pro-audio profile
pactl set-card-profile "$CARD" pro-audio 2>/dev/null

sleep 1

# Enable cs42l43 speaker digital switch
amixer -c 1 cset numid=39 on,on > /dev/null 2>&1

# Set speaker (pro-output-2) as default sink
SPEAKER_NODE=$(pactl list sinks short 2>/dev/null | grep "pro-output-2" | awk '{print $1}')
if [ -n "$SPEAKER_NODE" ]; then
    wpctl set-default "$SPEAKER_NODE" 2>/dev/null
fi

# Set DMIC as default source
MIC_NODE=$(pactl list sources short 2>/dev/null | grep "pro-input" | head -1 | awk '{print $1}')
if [ -n "$MIC_NODE" ]; then
    wpctl set-default "$MIC_NODE" 2>/dev/null
fi
chmod +x ~/.local/bin/fix-audio.sh

3. autostart エントリ (~/.config/autostart/fix-audio.desktop)

[Desktop Entry]
Type=Application
Name=Fix Audio Profile
Exec=/home/$USER/.local/bin/fix-audio.sh
X-GNOME-Autostart-enabled=true
X-GNOME-Autostart-Delay=5
Hidden=false
NoDisplay=true
Comment=Switch sof-soundwire to pro-audio profile for speaker output

問題4 Bluetooth が ON にならない

症状

  • GNOME の設定や通知バーから Bluetooth をオンにできない
  • bluetoothctl show を実行すると No default controller available と表示される
  • rfkill では soft/hard blocked いずれも no になっており、ブロックされていない
$ rfkill list all
1: tpacpi_bluetooth_sw: Bluetooth
    Soft blocked: no
    Hard blocked: no
3: hci0: Bluetooth
    Soft blocked: no
    Hard blocked: no

原因

カーネルログ(journalctl -k)を確認すると、以下のエラーが見つかる:

Bluetooth: hci0: Found device firmware: intel/ibt-0291-0291.sfi
Bluetooth: hci0: Firmware loaded in 1856513 usecs
Bluetooth: hci0: Device booted in 51745 usecs
Bluetooth: hci0: dsbr: enable: 0x01 value: 0x0f
Bluetooth: hci0: Failed to send dsbr command (-38)

-38 = ENOSYS(Function not implemented)

Ubuntu 22.04 の linux-firmware パッケージ(バージョン 20220329.git681281e4-0ubuntu3.41)に含まれる Intel Bluetooth ファームウェア ibt-0291-0291.sfi が古く、カーネルが要求する dsbr(Dynamic Secure Boot Reset)コマンド に対応していない。

dsbr コマンドが失敗すると、カーネルのドライバ(btusb)が初期化を中断してしまい、hci0 デバイスが DOWN のまま使えない状態になる。

解決策:Intel Bluetooth ファームウェアを最新版に更新する

Ubuntu 22.04 の公式リポジトリには新しいファームウェアが提供されていないため、Linux カーネルの upstream linux-firmware リポジトリから直接取得する。

手順

# 1. linux-firmware リポジトリをクローン(必要なファイルだけ取得)
git clone --depth 1 git://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git /tmp/linux-firmware

# 2. 既存のファームウェアをバックアップ
sudo cp /lib/firmware/intel/ibt-0291-0291.sfi /lib/firmware/intel/ibt-0291-0291.sfi.bak
sudo cp /lib/firmware/intel/ibt-0291-0291.ddc /lib/firmware/intel/ibt-0291-0291.ddc.bak

# 3. 新しいファームウェアを配置
sudo cp /tmp/linux-firmware/intel/ibt-0291-0291.sfi /lib/firmware/intel/
sudo cp /tmp/linux-firmware/intel/ibt-0291-0291.ddc /lib/firmware/intel/

# 4. btusb モジュールを再ロード
sudo modprobe -r btusb && sudo modprobe btusb

# 5. Bluetooth サービスを再起動
sudo systemctl restart bluetooth

# 6. 動作確認
sleep 5 && bluetoothctl show

bluetoothctl show でコントローラー情報が表示されれば成功。

補足

  • ibt-0291-0291 は Intel AX211 向けのファームウェアファイル名
  • この問題は Ubuntu 22.04 LTS + 新しめのカーネル の組み合わせで発生しやすい(linux-firmware が古い)
  • Ubuntu 24.04 LTS ではより新しい linux-firmware が標準提供されているため、この問題は起きにくい
  • Liquorix 以外の mainline 系カーネル(HWE カーネルなど)でも同様に発生する可能性がある

参考:診断コマンド

# rfkill でブロック状態を確認
rfkill list all

# Bluetooth サービスのログ確認
journalctl -u bluetooth --no-pager | tail -30

# カーネルの Bluetooth ログ確認
journalctl -k --no-pager | grep -i -E "bluetooth|hci0|btusb" | tail -40

# USB デバイスの確認
lsusb | grep -i intel

問題5: ハードウェアアクセラレーションが効かない

症状

  • デスクトップ全体がカクカクする / 重い
  • GNOME が「ハードウェアアクセラレーションなし」で動作
  • Chrome、Brave 等ブラウザも GPU 非使用

原因

Mesa 23.2.1 が Intel Meteor Lake (device ID: 0x7d67) を未サポート。

  • Intel Meteor Lake GPU は 2023年12月リリース
  • Mesa 23.2.1 は 2023年10月リリース → MTL のデバイス ID が間に合っていない
  • Ubuntu 22.04 公式リポジトリの Mesa は 23.2.1 で止まっており、更新 PPA も全滅

カーネル・NVIDIA ドライバ自体は正常。問題はユーザースペースの Mesa のみ。

Xorg ログ(~/.local/share/xorg/Xorg.1.log)に以下が出る:

MESA: warning: Driver does not support the 0x7d67 PCI ID.  ← 核心
(II) modeset(0): Refusing to try glamor on llvmpipe
(II) modeset(0): glamor initialization failed
(II) GLX: Initialized DRISWRAST GL provider for screen 0

journalctl でも全アプリ(Chrome、Brave 等)から同じ警告が出る:

gnome-session-check-accelerated: GL Helper exited with code 512
libEGL warning: DRI3: Screen seems not DRI3 capable

確認コマンド:

# Mesa が llvmpipe(ソフトウェア)で動いているか確認
DISPLAY=:1 DRI_PRIME=pci-0000_00_02_0 glxinfo -B 2>&1 | head -10
# → Device: llvmpipe / Accelerated: no なら問題あり

# Mesa 警告をまとめて確認
journalctl -b 0 --no-pager | grep -i "does not support\|llvmpipe\|glamor"

試みた解決策(失敗)

Ubuntu 22.04 (Jammy) 向け Mesa 更新 PPA は 2025〜2026 年時点で両方停止中:

PPA 状態
ppa:kisak/kisak-mesa Jammy 向けパッケージが空(0バイト)
ppa:oibaf/graphics-drivers 「2026 UPDATE: ppa is currently suspended」停止中

採用した解決策: NVIDIA モードへ切替

sudo prime-select nvidia
sudo reboot

Intel iGPU を描画から切り離し、NVIDIA RTX PRO 5000 が全レンダリングを担当。

確認コマンド(再起動後):

prime-select query    # → nvidia
glxinfo -B            # → OpenGL renderer: NVIDIA RTX PRO 5000...

デメリット: 消費電力増加(NVIDIA 常時 ON)

根本的な解決策(将来向け)

Mesa 24.x は Intel Meteor Lake (0x7d67) を正式サポート。Ubuntu 24.04 LTS には Mesa 24.x が同梱されているため、アップグレードで完全解決する。

アップグレード後の理想構成:

prime-select on-demand
→ Intel iGPU (iris ドライバ) がデスクトップ描画(省電力)
→ NVIDIA が重い処理のみ offload (DRI_PRIME=1 など)

まとめ

問題 原因 解決策
NVIDIA GPU 認識されない nouveau が Blackwell 世代非対応 nvidia-driver-590-open インストール
i915 GSC ファームウェアエラー linux-firmware が古い kernel.org から最新版をダウンロード
オーディオ Dummy Output dsp_driver=1 で SOF 無効 GRUB で dsp_driver=3 に変更
スピーカーから音が出ない UCM Syntax 7 / libasound2 非互換 pro-audio プロファイル + autostart スクリプト
ハードウェアアクセラレーション無効 Mesa 23.2.1 が MTL (0x7d67) 未サポート prime-select nvidia で NVIDIA モードに切替

今後の改善

Ubuntu 22.04 の libasound2 が 1.2.10 以上にアップデートされれば (または Ubuntu 24.04 以降にアップグレードすれば)、UCM Syntax 7 が正常にパースされ、autostart スクリプトなしで HiFi プロファイルが自動的に適用される。
Ubuntu 24.04 では、上記のような複雑な設定などをせずに、初回起動直後に、スピーカーから音が出たのを確認した。

また、Ubuntu 24.04 への移行で Mesa 24.x が導入されれば、Intel iGPU のハードウェアアクセラレーションも正常動作し、PRIME on-demand による省電力構成が実現できる。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?