Steam Deck に Windows を入れたい方の参考になれば...!

この記事は [3-shake Advent Calendar 2022](https://qiita.com/advent-calendar/2022/3-shake) の24日目の記事です。

# はじめに

年末、しかもクリスマスということで散財させていただきました。

初めまして、戸澤といいます。日常では「たらこさん」「サーモンさん」と呼ばれています。日々の業務としては、3-shake Sreake事業部にて、SREエンジニアとして様々なお客様に技術支援させていただいています。以下に私のプロフィールを載せさせていただきます🙇‍♂️

- [twitter: tozastation](https://twitter.com/tozastation)
- [wantedly: tozastation](https://www.wantedly.com/id/tozastation)

# 今日話すこと

本日お話しするテーマは [Steam Deck](https://www.steamdeck.com/en/) についてです。
(技術技術していなくてすみません...)

> Steam Deck（スチーム デック）は、Valve Corporationより販売されている携帯ゲーム機型ゲーミングPC。Advanced Micro Devices (AMD) 社と共同開発し、2022年2月25日に発売された。Nintendo Switchのように、携帯用としてもモニターにつないでも使用できるように設計されている。日本では2022年8月4日に予約受付が始まった。
引用元: Steam Deck, ウィキペディア, https://ja.wikipedia.org/wiki/Steam_Deck

ということで Steam Deck は Arch Linux ベースの SteamOS を搭載した携帯ゲーム機になります (わくわく)
昨年からいつ出るのかと待ち続けてやっとのこと 12/17(土)より発送が開始しました。
本日はそんな 「Steam DeckでWindows 11 を使えるようにしてみる」話になります。

# なぜ、SteamOS から Windows に切り替えるのか

理由は以下です。

- **小さなゲーム機に Windows を入れてなんでもできるようにすることにロマンを感じる**
    - 刺激を与えてくださったコンテンツの皆さん
        - [Steam Deck Windows drivers are now available](https://store.steampowered.com/news/app/1675200/view/3131696199122435099)
        - [Steam Deck unboxing | 2TB SSD Upgrade | Windows dual boot | genshin | accessories](https://www.youtube.com/watch?v=dvXBv7oZJG4)
        - [Steam Deck | How to Add Your Favorite Streaming Apps](https://www.youtube.com/watch?v=RCVy2BzxzN8)
- **SteamOSでは現時点で遊べないゲームがある**
    - Steam Deck では、[Proton](https://emulation.gametechwiki.com/index.php/Proton) という Windows Steam ゲームを Linux でプレイするための互換性レイヤーが利用できる
    - [ProtonDB](https://www.protondb.com/)にて、Proton の Steam ゲームの対応状況が公開されている
    - Steam で提供されていないゲームに関しては、プレイが難しい、出来てもゲームの規約に違反してしまう等の可能性がある
- **[Wallpaper Engine](https://store.steampowered.com/app/431960/Wallpaper_Engine/?l=japanese) を入れて、動く壁紙にしたい**
    - 当時衝撃を与えられた記事
        - [壁紙が動く『Wallpaper Engine』の使い方。うちにも初音ミクさんが遊びに来てくれました！](https://xn--w8jxbvbn6g2byc.com/wallpaper-engine/)

Proton にて出てきた互換性レイヤーとは一体という方向けの補足を以下に

> 互換性レイヤー
それ自体は厳密にはエミュレーションではありませんが ( Wineが「Wine Is Not an Emulator」の略である理由)、互換性レイヤーにより、あるオペレーティング システム用に作成されたソフトウェアを別の OS で実行できます。ホスト オペレーティング システムでの同等の呼び出し。理論的には、プロセッサのエミュレーションが行われないため、これによりネイティブに近いパフォーマンスが可能になりますが、実際には、正しい動作を複製した結果として発生する他のボトルネックにより、ゲームなどの一部のソフトウェアの実行が少し遅くなる傾向があります。Microsoft 以外のプラットフォームではサポートされていない Direct3D などのグラフィックス API の説明など。さらに、互換性レイヤーは、異なるアーキテクチャ用に構築されたソフトウェアを実行するためにエミュレーションを使用する場合もあります。
引用: 互換性レイヤー, EMUGEN, https://emulation.gametechwiki.com/index.php/Compatibility_layers

# さっそく、環境構築へ

ここからトラブルシュートが続くので、結論から言いますと私の環境 (64GBモデル・MicroSDも利用) ですと、12月末現在Windows10 の方が快適に使えています。

## 仕様

Steam Deck の技術仕様は[こちら](https://www.steamdeck.com/en/tech)

Steam Deckはプロセッサーは変わらず、ストレージのサイズが3種類 (64GB,256GB,512GB) あります。私が購入したモデルはストレージが64GB (eMMC) のモデルです。この選択が少々面倒な選択を迫られることになります...

ゲームをインストールするため、もちろんこのままだと容量は足りません。MicroSDが1スロット用意されているため、[SanDisk の 256GB](https://www.google.com/aclk?sa=l&ai=DChcSEwiwxrGOxoT8AhVWQ2AKHSpiDIUYABALGgJ0bQ&ase=2&sig=AOD64_12mzXRWZ6tqciLTgG9g6IVMPDbeQ&ctype=5&q=&ved=2ahUKEwiGiKuOxoT8AhVMrlYBHekBCwEQ9aACKAB6BAgCECI&adurl=) も購入しました。

Windows のインストーラーを作るために [SanDisk USB Flash Drive 32GB](https://www.amazon.co.jp/-/en/SDCZ430-128G-J57-SanDisk-USB-Flash-Drive/dp/B07B6G8VJC/ref=sr_1_27?adgrpid=53683090739&gclid=CjwKCAiAkfucBhBBEiwAFjbkr2vYFMYH5PIZntMUZunJa6f_1L97Mm-k1csMnfBUO8G3Oja31ObpCBoCv9wQAvD_BwE&hvadid=611408448188&hvdev=c&hvlocphy=1009310&hvnetw=g&hvqmt=e&hvrand=4472865124414302425&hvtargid=kwd-22193581&hydadcr=27485_14587142&jp-ad-ap=0&keywords=usb%E3%83%A1%E3%83%A2%E3%83%AA&qid=1671414122&sr=8-27&th=1)も購入しました。

## Windows インストール前の準備

以下の製品を準備しておきましょう！

- **TypeCのUSBハブ**
    - Steam Deck の端子は少なく USB端子は一つしかありません
        - 3.5mm ヘッドセットジャック × 1
        - Type-C PD3.0 × 1
        - microSD × 1
- **LANケーブル/LANアダプタ**
    - ドライバを入れるまでは WiFi が利用できません
- **有線のマウス/キーボード**
    - ドライバを入れるまでは Bluetooth が利用できません

## Windows 10 のクリーンインストール

※ 当初は、Windows 10 Home のライセンスを発掘したため、そこからアップグレードする戦略でいます
64GB の民にとっては、ディスクのパーティションを切り、デュアルブートするという選択肢は無いのでクリーンインストールでいきます。
(写真)

### 11へのアップグレード

Windows更新プログラムを確認し続け、Windows11へのアップグレードが表示されるのを待ちます。
OYA... 一向に出てこない...
[Windows 11 インストール アシスタント](https://www.microsoft.com/ja-jp/software-download/windows11)を入れてみる。
OYA...

### 悲劇のシステムディスクの容量不足

[PC Health Check app](https://www.microsoft.com/en-us/windows/windows-11#pchealthcheck) をインストールすると、Windows11へのアップグレードが可能かどうかを教えてくれます。
結論としては足りませんでした。事前調査が甘かったなり。

> 64 GB 以上の記憶装置 注: 詳細については、以下の「Windows 11 を最新の状態に保つための記憶域の詳細情報」を参照してください。
引用: Find Windows 11 specs, features, and computer requirements, Microsoft, https://www.microsoft.com/en-us/windows/windows-11-specifications?ocid=smc_marvel_ups_support_movetowin11&r=1

## 蘇るクリーンインストール

せっかく色々と構築したのですが諦めて、クリーンインストールしました(涙)

## ドライバのインストール

ありがたいことに、Steam Deck 用の Windows ドライバを公式が提供してくださっています。
インストールの際は以下をご注意ください。

> Windowsリソース
Steam DeckはPCですので、他のアプリケーションやOSのインストールが可能です。 Windowsのインストールを検討されている場合、最適な体験を得るためには追加のドライバーが必要です。 これらのドライバーへのリンク、およびSteam DeckにWindowsをインストールする際の注意事項は、以下を参照してください。
これらのリソースは現状のままの提供となり、残念ながら「Deck上のWindows」のサポートを提供することはできません。 問題が発生し、デフォルトのSteam Deck OSに戻す方法が必要な場合は、こちらのリカバリー手順に従ってください。
引用: Steam Deck－Windowsリソース, STEAM, https://help.steampowered.com/ja/faqs/view/6121-eccd-d643-baa8

Windows ドライバー一覧: 
- APU
    - [APU](https://ja.wikipedia.org/wiki/AMD_Accelerated_Processing_Unit): AMD Accelerated Processing Unit
- Wi-Fi
- Bluetooth
- SDカードリーダー
- オーディオ

ダウンロードリンクはこちらになります。
[Steam Deck－Windowsリソース](https://help.steampowered.com/ja/faqs/view/6121-eccd-d643-baa8)

インストールは、ダウンロードリンクを参考に上から順に実施していただければすんなりいくと思います。

## MicroSDを仮想ハードディスクへ

256GBのMicroSDさんを、ゲーム保存用の領域として使っていきます。

選べる仮想ハードディスクの種類は二つ。新しい方のVHDXを選んでいきます。
- <INS>[VHD(VHD: Virtual Hard Disk)](https://learn.microsoft.com/en-us/previous-versions/windows/desktop/legacy/dd323654(v=vs.85))</INS>
- <INS>[VHDX(VHDX: Virtual Hard Disk v2)](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-vhdx/83e061f8-f6e2-4de1-91bd-5d518a43d477)</INS>

↓ 仮想ディスクの作り方はこちらのサイトがおすすめです。↓
- <INS>[VHD VS VHDX：その基本知識と違い](https://www.partitionwizard.jp/disk-recovery/vhd-vs-vhdx.html)</INS>

↓ コンテンツの保存先のデフォルトを変更したい場合はこちらのサイトがおすすめです。↓
- <INS>[新しいコンテンツの保存先を変更する (アプリのインストール先変更方法を例に)](http://faq3.dospara.co.jp/faq/show/4557?site_domain=default)</INS>
- <INS>[Steamやゲームのインストール場所を変更する](https://help.steampowered.com/ja/faqs/view/4bd4-4528-6b2e-8327#:~:text=Steam%E3%82%AF%E3%83%A9%E3%82%A4%E3%82%A2%E3%83%B3%E3%83%88%E3%81%AB%E3%83%AD%E3%82%B0%E3%82%A4%E3%83%B3%E3%81%97,%E3%81%99%E3%82%8B%E3%81%93%E3%81%A8%E3%82%82%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%99%E3%80%82)</INS>

### 仮想ハードディスクへのマウントを 「タスクスケジューラ」と「powershell」で自動化する

仮想ハードディスクは Windows を再起動するとアンマウントされてしまいます。その度にマウントし直すのは面倒なので自動化していきましょう。
PowerShell では、仮想ハードディスクをマウントするためのコマンド `Mount-VHD` があります。(※ v2の場合は、`Mount-DiskImage`)
特権モードでPowerShellを起動し、以下のコマンドを実行します。

```powershell
Mount-DiskImage -ImagePath ${仮想ハードディスクのパス}
```

このコマンドを起動時に実行できるようにしたい...
[タスクスケジューラ](https://learn.microsoft.com/ja-jp/windows/win32/taskschd/task-scheduler-start-page)の出番です ✨
イベントをトリガーにアクションを発火させることができる Windows の機能です。

実際の設定は、こちらのサイトが参考になります！
- 	<INS>[タスクスケジューラでPowerShell スクリプトを実行する](https://win2012r2.com/2021/08/02/powershell-taskschd/)</INS>
- <INS>[Windows10の起動時にプログラムを自動実行させる方法](https://4thsight.xyz/33454)</INS>

※ セキュリティオプションで**最上位の特権で実行する**をお忘れずに🙇‍♂️

## 最後に Steam Deck コントローラーのドライバをインストール

Steam上では、Steam Deck のコントローラーが認識されていますが、他のプラットフォームではコントローラーが認識されません。

**↓ そんな時に救世主が現れました。↓**
- WIP: Windows Usermode Controller Driver for non steam games
    - https://www.reddit.com/r/SteamDeck/comments/uy45ja/wip_windows_usermode_controller_driver_for_non/
- mKenfenheuer/steam-deck-windows-usermode-driver
    - https://github.com/mKenfenheuer/steam-deck-windows-usermode-driver

これは、Steamが無くても、Steam Deck コントローラーを 仮想 XBox 360 Controller として扱ってくれるドライバーです。
ありがたやです🙇‍♂️

reddit のコメントにもありましたが、利用する際の注意点があります。開発者の方のコメント抜粋 (7ヶ月前) です。
Steam が起動している時に、このドライバと干渉が起きますかという質問に対しての回答です。

> 残念ながら、今はそうです。同時に実行している場合、Steam とドライバーはコントローラー入力をエミュレートしています。ゲームが実行されているかどうかを検出し、入力をエミュレートすることは、現在取り組んでいる機能です。しかし、はい、それはまさに私の目標です。おそらくサービスインストーラーも同様であるため、ドライバーを手動で起動する必要はありません。
引用: WIP: Windows Usermode Controller Driver for non steam games, reddit, https://www.reddit.com/r/SteamDeck/comments/uy45ja/wip_windows_usermode_controller_driver_for_non/

私も試しましたが、現状はドライバを起動したまま Steam を操作すると入力が二重になっています。なので、ドライバを使う時は Steam を切るというのを忘れずにです！

## 数日後... MicroSDの読み込みが不調に... (無事終わったと思っていました)

以下の現象が頻繁に発生するように

- **スリープ復帰後、MicroSDカードの読み込みが出来なくなる**
    - デバイスマネージャーを確認すると MicroSDコントローラーが消えている
    - 再起動すると MicroSD が読み込める時とそうで無い時がある


- 関連していそうな記事 (日本での発送が遅れていたので先代のトラブルシュートに感謝🙇‍♂️)
    - On windows 11, if I put the deck to sleep and leave it for a day, the SD seems to have shut down in the background and when I press the power button, it boots up SteamOS
        - https://www.reddit.com/r/SteamDeck/comments/uz51j3/on_windows_11_if_i_put_the_deck_to_sleep_and/
    - Can't see micro sd card in windows 11
        - https://steamcommunity.com/app/1675200/discussions/0/3448087385669619693/


**↓ 同様の現象で、Windows 10 に落としたところ事象が解決されたとのこと ↓**

> I had same issue would dissappear on random boots, then eventually would not show up at all, I checked it with 2 different sd card that have been checked on my desktop and they are fine, I solved it by putting windows 10 on rather than 11 and it seems to have solved the issue, it may be something to do with the windows 11 updates but I did not have time to keep rolling them back.
引用: Can't see micro sd card in windows 11, Steam, https://steamcommunity.com/app/1675200/discussions/0/3448087385669619693/

ドライバがまだ不安定と判断し、Windows 10 を再インストール
今度こそ解決しました🎉

年末年始はゲーム生活に浸ろうと思います。
それでは良いお年を〜