Oculus Rift SをUbuntu 20.04で使用する

# 今回の作業装置
MSI のゲーミングノート
core i7
nvidia 2060
memory 16G

# インストールメディア作成
https://itlogs.net/ubuntu-bootable-usb/
Universal USB Installerを使用してメディアを作成
Ubuntu 20.04をPCにインストール

# OSインストール後の作業

```
sudo apt update && sudo apt upgrade -y && sudo apt install curl git ssh
```
## nvideaのドライバーインストール

```
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt update
sudo apt install nvidia-driver-450
```

ドライバーインストール時に設定するパスワードは
インストール後の再起動時ににセキュリティブートで解除するパスワードで
起動時に解除作業を行わないとnvideaのドライバーを有効にすることができません。

再起動後設定画面を開くと、グラフィックがNVIDIAに変更されています。

![Screenshot from 2020-09-21 20-39-07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425374/85c246b4-2bbb-246c-33c9-12572bc3e3b8.png)

ビルドしたりするのに必要なライブラリをインストール

``` bash
sudo apt install git curl
sudo apt-get install build-essential cmake libhidapi-dev 
```

#認識作業
##OpenHMDをインストール
以下ページを参考
[OpenHMD](https://github.com/OpenHMD/OpenHMD)
実際に実行するコマンドは以下の通り

``` bash
cd ~/
git clone --recursive https://github.com/OpenHMD/OpenHMD.git
cd OpenHMD
mkdir build
cd build
cmake ..
make
sudo make install
```

## ハードウェア認識設定
以下のサイト参考
[XR Hardware Rules](https://gitlab.freedesktop.org/monado/utilities/xr-hardware)

``` bash
sudo apt install python3-pip
pip3 install attr
cd ~/
git clone --recursive https://gitlab.freedesktop.org/monado/utilities/xr-hardware.git
cd xr-hardware
sudo make install
```

以下コマンドで設定をする

```
sudo vi /etc/udev/rules.d/83-hmd.rules
```

設定内容は以下の通り

``` bash:83-hmd.rules
#Oculus DK1 DK2 CV1
SUBSYSTEM=="usb", ATTR{idVendor}=="2833", MODE="0666", GROUP="plugdev"
#Vive
SUBSYSTEM=="usb", ATTR{idVendor}=="0bb4", MODE="0666", GROUP="plugdev"
#Deepoon
SUBSYSTEM=="usb", ATTR{idVendor}=="0483", MODE="0666", GROUP="plugdev"
#Sony PSVR
SUBSYSTEM=="usb", ATTR{idVendor}=="054c", MODE="0666", GROUP="plugdev"
#OSVR
SUBSYSTEM=="usb", ATTR{idVendor}=="1532", MODE="0666", GROUP="plugdev"
#Pimax 4K
SUBSYSTEM=="usb", ATTR{idVendor}=="2833", MODE="0666", GROUP="plugdev"
#NOLO CV1
SUBSYSTEM=="usb", ATTR{idVendor}=="0483", MODE="0666", GROUP="plugdev"
#Samsung GearVR
SUBSYSTEM=="usb", ATTR{idVendor}=="04E8", MODE="0666", GROUP="plugdev"
#HP Mixed Reality
SUBSYSTEM=="usb", ATTR{idVendor}=="03F0", MODE="0666", GROUP="plugdev"
#Lenovo Mixed Reality
SUBSYSTEM=="usb", ATTR{idVendor}=="045e", MODE="0666", GROUP="plugdev"
#DreamWorld DreamGlass AR
SUBSYSTEM=="usb", ATTR{idVendor}=="0483", MODE="0666", GROUP="plugdev"
```

##steamのインストール
[公式サイト](https://store.steampowered.com/)からインストールパッケージをダウンロードして
インストール後、再起動します。
再起動後、steamを起動させて、steamVRをダウンロードして一回起動させてください
立ち上げ後、steamVRを閉じてください。

##seamvrプラグイン導入
OpenHMDドライバーを使用したSteamVRのプラグインを導入します。
以下のサイトを参考します。
[SteamVR Plugin for OpenHMD Drivers](https://github.com/ChristophHaag/SteamVR-OpenHMD)

```bash
cd ~/
git clone --recursive  https://github.com/ChristophHaag/SteamVR-OpenHMD.git
cd SteamVR-OpenHMD
cd subprojects/openhmd
git pull origin master
cd ../../
mkdir build
cd build
cmake ..
make
cd ../
./unregister.sh
```

導入後必要なライブラリをインストールします

```bash
sudo apt-get install git curl libsdl2-mixer-2.0-0 libsdl2-image-2.0-0 libsdl2-2.0-0
wget https://github.com/ValveSoftware/openvr/raw/master/lib/linux64/libopenvr_api.so
sudo cp libopenvr_api.so /usr/lib/
rm libopenvr_api.so
```

あと、ヘッドマウントディスプレイを本体認識させるため、```/usr/share/X11/xorg.conf.d/10-nvidia.conf```の
文章に以下の一文を追加します。

```
Option "AllowHMD" "yes"
```
設定後終わったら再起動を行います。

#VRの起動
##SteamVRの起動
起動させる前に以下のコマンドを実行します。

```bash
~/.local/share/Steam/steamapps/common/SteamVR/bin/linux64/vrpathreg adddriver ~/SteamVR-OpenHMD/build
cp ~/SteamVR-OpenHMD/steamvr.vrsettings ~/.local/share/Steam/config/steamvr.vrsettings
```
入力後、USBを接続しゴーグルのLEDが赤点灯に変わったら、DisplayPortを接続します。
そのあとで、SteamVRを立ち上げると、ゴーグルのLEDが赤から白に代わります。

その状態で、画面設定を見ると2番目に縦向きに認識されるため回転させればゴーグル内に画面が映ることを確認できます。(以下の画面を参照)
あと、向きは、縦方向(左向き)に設定するときれいに表示されます。

![Screenshot from 2020-09-21 20-39-59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425374/234a48bf-d9da-5faa-96b5-4f0bba4ea382.png)