SESSION: P16g Phase 11 Validation Run
Summary
Post-reboot validation of the ThinkPad P16g deployment. Audio confirmed working (pw-play through CS35L56 speakers). Full Phase 11 verification executed: boot, encryption, security, desktop, development, secrets, network. 5 issues identified, doc corrections applied.
Trigger: Reboot to load sof-firmware for onboard speakers (installed in prior session).
Audio Verification (Post-Reboot)
PipeWire Status
wpctl status
PipeWire 'pipewire-0' [1.6.2, evanusmodestus@modestus-p16g, cookie:862856192]
└─ Clients:
32. xdg-desktop-portal-hyprland [1.6.2]
33. WirePlumber [1.6.2]
41. WirePlumber [export] [1.6.2]
42. pipewire [1.6.2]
44. waybar [1.6.2]
Audio
├─ Devices:
│ 45. GB203 High Definition Audio Controller [alsa]
│ 46. 800 Series ACE (Audio Context Engine) [alsa]
│
├─ Sinks:
│ 61. 800 Series ACE HDMI / DisplayPort 3 Output [vol: 1.00]
│ 62. 800 Series ACE HDMI / DisplayPort 2 Output [vol: 1.00]
│ 63. 800 Series ACE HDMI / DisplayPort 1 Output [vol: 1.00]
│ 64. 800 Series ACE Headphones [vol: 1.00]
│ * 65. 800 Series ACE Speaker [vol: 0.40]
│
├─ Sources:
│ 66. 800 Series ACE Headset Microphone [vol: 1.00]
│ * 67. 800 Series ACE Digital Microphone [vol: 1.00]
ALSA Sound Cards
cat /proc/asound/cards
0 [NVidia ]: HDA-Intel - HDA NVidia
HDA NVidia at 0x84000000 irq 17
1 [sofsoundwire ]: sof-soundwire - sof-soundwire
LENOVO-21V50016US-ThinkPadT16gGen3
Audio Sinks (All)
pactl list sinks short
61 alsa_output.pci-0000_80_1f.3-platform-sof_sdw.HiFi__HDMI3__sink PipeWire s32le 2ch 48000Hz SUSPENDED 62 alsa_output.pci-0000_80_1f.3-platform-sof_sdw.HiFi__HDMI2__sink PipeWire s32le 2ch 48000Hz SUSPENDED 63 alsa_output.pci-0000_80_1f.3-platform-sof_sdw.HiFi__HDMI1__sink PipeWire s32le 2ch 48000Hz SUSPENDED 64 alsa_output.pci-0000_80_1f.3-platform-sof_sdw.HiFi__Headphones__sink PipeWire s32le 2ch 48000Hz SUSPENDED 65 alsa_output.pci-0000_80_1f.3-platform-sof_sdw.HiFi__Speaker__sink PipeWire s32le 2ch 48000Hz SUSPENDED
Audio Sources (All)
pactl list sources short
61 alsa_output...HDMI3__sink.monitor PipeWire s32le 2ch 48000Hz SUSPENDED 62 alsa_output...HDMI2__sink.monitor PipeWire s32le 2ch 48000Hz SUSPENDED 63 alsa_output...HDMI1__sink.monitor PipeWire s32le 2ch 48000Hz SUSPENDED 64 alsa_output...Headphones__sink.monitor PipeWire s32le 2ch 48000Hz SUSPENDED 65 alsa_output...Speaker__sink.monitor PipeWire s32le 2ch 48000Hz SUSPENDED 66 alsa_input...HiFi__Headset__source PipeWire s32le 2ch 48000Hz SUSPENDED 67 alsa_input...HiFi__Mic__source PipeWire s32le 2ch 48000Hz SUSPENDED
Kernel Audio Messages (This Boot)
journalctl -b --grep='sof|sdw|sound|audio|codec' --no-pager | tail -30
sof-audio-pci-intel-mtl 0000:80:1f.3: loading topology: intel/sof-ipc4-tplg/sof-arl-cs42l43-l0-cs35l56-l2-2ch.tplg sof-audio-pci-intel-mtl 0000:80:1f.3: Topology: ABI 3:29:1 Kernel ABI 3:23:1 cs35l56 sdw:0:2:01fa:3556:01:0: supply VDD_B not found, using dummy regulator cs35l56 sdw:0:2:01fa:3556:01:0: supply VDD_AMP not found, using dummy regulator cs35l56 sdw:0:2:01fa:3556:01:1: supply VDD_B not found, using dummy regulator cs35l56 sdw:0:2:01fa:3556:01:1: supply VDD_AMP not found, using dummy regulator cs35l56 sdw:0:2:01fa:3556:01:1: DSP1: cirrus/cs35l56-b0-dsp1-misc-17aa2347.wmfw: format 3 cs35l56 sdw:0:2:01fa:3556:01:1: DSP1: Tue 01 Jul 2025 18:54:52 Central Daylight Time cs35l56 sdw:0:2:01fa:3556:01:0: DSP1: cirrus/cs35l56-b0-dsp1-misc-17aa2347.wmfw: format 3 cs35l56 sdw:0:2:01fa:3556:01:0: DSP1: Tue 01 Jul 2025 18:54:52 Central Daylight Time cs35l56 sdw:0:2:01fa:3556:01:0: DSP1: Firmware: 1a10d6 vendor: 0x2 v3.13.3, 41 algorithms cs35l56 sdw:0:2:01fa:3556:01:1: DSP1: Firmware: 1a10d6 vendor: 0x2 v3.13.3, 41 algorithms cs35l56 sdw:0:2:01fa:3556:01:0: DSP1: cirrus/cs35l56-b0-dsp1-misc-17aa2347-amp1.bin: v3.13.3 cs35l56 sdw:0:2:01fa:3556:01:1: DSP1: cirrus/cs35l56-b0-dsp1-misc-17aa2347-amp2.bin: v3.13.3 cs35l56 sdw:0:2:01fa:3556:01:0: Calibration applied cs35l56 sdw:0:2:01fa:3556:01:0: Tuning PID: 0x15, SID: 0x7, TID: 0x4 cs35l56 sdw:0:2:01fa:3556:01:1: Calibration applied cs35l56 sdw:0:2:01fa:3556:01:1: Tuning PID: 0x25, SID: 0x7, TID: 0x4 input: sof-soundwire Jack as /devices/pci0000:80/0000:80:1f.3/sof_sdw/sound/card1/input29 input: sof-soundwire HDMI/DP,pcm=5 as .../input30 input: sof-soundwire HDMI/DP,pcm=6 as .../input31 input: sof-soundwire HDMI/DP,pcm=7 as .../input32
dummy regulator warnings for VDD_B/VDD_AMP are standard on this platform — no real supply regulators exposed via ACPI. Harmless.
|
Audio Test
# speaker-test not available (alsa-utils not installed)
speaker-test -D pipewire -c 2 -t wav -l 1
# zsh: command not found: speaker-test
# pw-play is native PipeWire — works without alsa-utils
pw-play --target 65 /usr/share/sounds/freedesktop/stereo/bell.oga
Result: ✅ Sound played through onboard speakers (sink 65, CS35L56 x2).
Phase 11: Full System Validation
System Health
systemctl --failed
UNIT LOAD ACTIVE SUB DESCRIPTION 0 loaded units listed.
Result: ✅ Zero failed services.
systemd-analyze
Startup finished in 17.583s (firmware) + 3.850s (loader) + 1min 15.868s (kernel) + 17.168s (userspace) = 1min 54.471s graphical.target reached after 16.911s in userspace.
| 1m16s kernel time is dominated by LUKS passphrase entry + decrypt. Userspace is fast (17s to graphical). |
Boot & Encryption
uname -r
6.19.10-arch1-1lsblk -f | grep -E 'crypto_LUKS|crypt'
├─nvme0n1p3 crypto_LUKS 2 a33cc5e6-... │ └─cryptroot btrfs archroot 4de1f373-... 187.9G 24% /var/log └─nvme0n1p4 crypto_LUKS 2 4cba46dd-... └─crypthome btrfs archhome 4fcc4995-... 1.6T 1% /home
Result: ✅ Dual LUKS volumes open — cryptroot (btrfs, 24% used) + crypthome (btrfs, 1% used).
zramctl
NAME ALGORITHM DISKSIZE DATA COMPR TOTAL STREAMS MOUNTPOINT /dev/zram0 zstd 31.1G 4K 64B 20K [SWAP]
Result: ✅ 31.1G zram with zstd compression active.
bootctl list
Arch Linux (arch.conf) (default) (selected) — ESP, vmlinuz-linux Arch Linux LTS (arch-lts.conf) — ESP, vmlinuz-linux-lts Arch Linux (fallback) (arch-fallback.conf) — ESP, initramfs-linux-fallback.img (No such file or directory)
Result: ⚠️ Fallback entry references missing initramfs-linux-fallback.img on ESP. Pacman hook only copies main initramfs.
diff <(md5sum /boot/vmlinuz-linux | awk '{print $1}') \
<(md5sum /boot/efi/vmlinuz-linux | awk '{print $1}') && echo "ESP KERNEL MATCH"
ESP KERNEL MATCHResult: ✅ ESP kernel synced with /boot.
grep apparmor /proc/cmdline
initrd=\intel-ucode.img initrd=\initramfs-linux.img cryptdevice=UUID=a33cc5e6-...:cryptroot root=/dev/mapper/cryptroot rootflags=subvol=@ rw nvidia_drm.modeset=1 mem_sleep_default=s2idle acpi_mask_gpe=0x6E lsm=landlock,lockdown,yama,integrity,apparmor,bpf apparmor=1 security=apparmor
Result: ✅ AppArmor in cmdline with full LSM stack.
Security
cat /sys/kernel/security/lsm
capability,landlock,lockdown,yama,apparmor,bpfResult: ✅ Full LSM stack active.
sudo aa-status requires terminal password prompt — not available in non-interactive session. AppArmor confirmed active via LSM stack + kernel cmdline.
|
ss -tlnp | awk 'NR>1{print $4, $6}' | sort
0.0.0.0:22 127.0.0.1:11434 127.0.0.1:34695 [::]:22
Result: ✅ Clean port audit — SSH (22), Ollama localhost (11434), one ephemeral. No unexpected listeners.
Desktop Environment
echo $XDG_SESSION_TYPE
waylandnvidia-smi --query-gpu=name,driver_version,memory.total --format=csv,noheader
NVIDIA GeForce RTX 5090 Laptop GPU, 595.58.03, 24463 MiBResult: ✅ RTX 5090, driver 595.58.03, 24GB GDDR7.
systemctl is-active nvidia-persistenced.service
inactiveResult: ❌ NVIDIA persistence daemon not running. Phase 6 documents enabling it but was never executed.
bluetoothctl show | grep -E 'Name|Powered|Address'
Name: modestus-p16g Powered: yes
Result: ✅ Bluetooth controller powered.
for proc in waybar mako pipewire wireplumber; do
pgrep -x $proc > /dev/null && echo "✓ $proc" || echo "✗ $proc MISSING"
done
✓ waybar ✓ mako ✓ pipewire ✓ wireplumber
Result: ✅ All desktop processes running.
wpctl status | grep -A5 'Sinks:'
├─ Sinks: │ 61. 800 Series ACE HDMI / DisplayPort 3 Output [vol: 1.00] │ 62. 800 Series ACE HDMI / DisplayPort 2 Output [vol: 1.00] │ 63. 800 Series ACE HDMI / DisplayPort 1 Output [vol: 1.00] │ 64. 800 Series ACE Headphones [vol: 1.00] │ * 65. 800 Series ACE Speaker [vol: 0.40]
Result: ✅ Real audio devices — no Dummy Output. Speaker is default sink.
hyprctl monitors failed with HYPRLAND_INSTANCE_SIGNATURE not set — expected in SSH session (env var only set in Hyprland’s TTY).
|
Development Tools
python3 --version && node --version && rustc --version && go version
Python 3.14.3 v25.8.2 rustc 1.94.1 (e408947bf 2026-03-25) (Arch Linux rust 1:1.94.1-1) go version go1.26.1-X:nodwarf5 linux/amd64
uv --version && npm --version && cargo --version
uv 0.11.3 (x86_64-unknown-linux-gnu) 11.12.1 cargo 1.94.1 (29ea6fb6a 2026-03-24) (Arch Linux rust 1:1.94.1-1)
nvim --version | head -1
ls ~/.config/nvim/init.lua
NVIM v0.11.7 — config OK.claude --version
2.1.92 (Claude Code)ssh -T git@github.com
ssh_askpass: exec(/usr/lib/ssh/ssh-askpass): No such file or directoryResult: ⚠️ SSH to GitHub failed in non-interactive context — ssh-askpass not installed. Works fine in terminal with agent.
gpg --list-secret-keys --keyid-format long | grep -c sec
1Result: ✅ One GPG secret key present.
ls ~/.ssh/id_ed25519_* | wc -l
27Result: ✅ 27 SSH key files present.
gopass ls | head -5
gopass ├── v2 (/home/evanusmodestus/.local/share/gopass/stores/v2) │ ├── ARCANA/ │ │ ├── api/ │ │ │ └── domus/
Result: ✅ gopass v2 store accessible.
Secrets & Credentials
ls ~/.credentials/
Result: ❌ gocryptfs vault not mounted. Needs gcvault mount credentials.
openssl x509 -in /etc/ssl/certs/modestus-p16g-eaptls.pem -noout -enddate
notAfter=Apr 3 21:32:06 2027 GMTResult: ✅ EAP-TLS cert valid until April 2027.
Network & Connectivity
nmcli connection show --active | grep -i domus
Domus-WiFi-EAP-TLS 8a212f0f-101e-4f39-ba0d-76811ef708b9 wifi wlan0Result: ✅ WiFi EAP-TLS active on wlan0.
dig +short vault-01.inside.domusdigitalis.dev
command not found: digResult: ⚠️ bind-tools not installed. DNS works (EAP-TLS connected, Ollama running) but dig unavailable for diagnostics.
Validation Summary
| Check | Status | Notes |
|---|---|---|
No failed systemd services |
✅ |
0 failed |
Kernel booted |
✅ |
6.19.10-arch1-1 |
LUKS volumes open |
✅ |
cryptroot + crypthome |
zram swap active |
✅ |
31.1G zstd |
ESP kernel synced |
✅ |
md5sum match |
Boot entries valid |
⚠️ |
Fallback initramfs missing on ESP |
AppArmor in kernel cmdline |
✅ |
Full LSM stack |
LSM stack correct |
✅ |
capability,landlock,lockdown,yama,apparmor,bpf |
Open ports clean |
✅ |
SSH + Ollama localhost only |
NVIDIA GPU detected |
✅ |
RTX 5090, 595.58.03, 24GB |
NVIDIA persistenced |
❌ |
Not enabled |
Wayland session |
✅ |
wayland |
Audio (not Dummy Output) |
✅ |
CS35L56 speakers, CS42L43 headphones |
Audio playback tested |
✅ |
|
Bluetooth controller |
✅ |
Powered, named modestus-p16g |
Desktop processes |
✅ |
waybar, mako, pipewire, wireplumber |
Python 3.14.3 |
✅ |
|
Node 25.8.2 |
✅ |
|
Rust 1.94.1 |
✅ |
|
Go 1.26.1 |
✅ |
|
uv / npm / cargo |
✅ |
|
Neovim 0.11.7 + config |
✅ |
|
Claude Code 2.1.92 |
✅ |
|
Git SSH (GitHub) |
⚠️ |
ssh-askpass missing for non-interactive |
GPG key present |
✅ |
1 secret key |
SSH keys |
✅ |
27 files |
gopass accessible |
✅ |
|
gocryptfs vault |
❌ |
Not mounted |
WiFi EAP-TLS active |
✅ |
|
EAP-TLS cert valid |
✅ |
Expires Apr 2027 |
DNS diagnostics |
⚠️ |
|
Ollama running |
✅ |
Score: 25/31 pass, 4 warnings, 2 failures.
Issues Found
Issue 1: nvidia-persistenced inactive
Phase 6 documents sudo systemctl enable --now nvidia-persistenced.service but it was never executed.
sudo systemctl enable --now nvidia-persistenced.service
systemctl is-active nvidia-persistenced.service
Issue 2: Fallback initramfs missing on ESP
The pacman hook (99-esp-kernel-sync.hook) copies initramfs-linux.img and initramfs-linux-lts.img but not initramfs-linux-fallback.img. The fallback boot entry on ESP references it.
Options:
-
Update hook to also copy fallback images (increases ESP usage)
-
Remove fallback boot entry from ESP (fallback still works from XBOOTLDR
/boot)
# Option 1: copy fallback to ESP
sudo cp /boot/initramfs-linux-fallback.img /boot/efi/
# Then update hook to include fallback in future syncs
# Option 2: remove fallback entry from ESP
sudo rm /boot/efi/loader/entries/arch-fallback.conf
Issue 3: gocryptfs vault not mounted
gcvault mount credentials
ls ~/.credentials/
Issue 4: bind-tools not installed
sudo pacman -S bind
# Provides: dig, nslookup, host
Issue 5: ssh-askpass not installed
Non-interactive SSH contexts (tools, scripts) fail when key requires passphrase prompt.
sudo pacman -S x11-ssh-askpass
# Or for Wayland-native: yay -S ssh-askpass-fullscreen
Doc Corrections Applied
Updated phase-6-desktop.adoc — replaced all 3 speaker-test references with pw-play:
-
Line 158:
speaker-test -c 2 -t wav→pw-play /usr/share/sounds/freedesktop/stereo/bell.oga+ added--targetvariant -
Line 272: Bluetooth audio test →
pw-play -
Line 469: Phase 6 checklist label →
pw-play
Rationale: speaker-test requires alsa-utils which is not in the Phase 5/6 package list. pw-play is native to PipeWire (already installed) and is the correct tool for this stack.