Hardkernel Odroid Go SuperにDebianのデスクトップ環境をセットアップ

### 目的 ###
Odroid Go Advance/SuperでLinuxのデスクトップ環境を構築し、自作ソフトシンセを動かしたい。基本的には[フォーラム](https://forum.odroid.com/viewtopic.php?t=37399)に書いてある通り。

### 用意するもの ###
* [Odroid Go Advance BE](https://www.hardkernel.com/shop/odroid-go-advance-black-edition-clear-white/)もしくは[Odroid Go Super](https://www.hardkernel.com/shop/odroid-go-super-clear-white/)
* USBキーボードとマウス
* USB-MIDI入力機器
* USBハブ
* USBのWiFiドングル (Odroid Go Superの場合必要)

### 準備 ###
Odroid Go SuperにはUSBハブを接続し、USBキーボード、マウスを接続。Odroid Go Superの場合はWiFiドングルも接続。

### OSイメージをmicroSDに焼く ###
[フォーラムサイト](https://forum.odroid.com/viewtopic.php?t=37399)からイメージをダウンロード。現時点での直リンクは[ここ](https://oph.mdrjr.net/meveric/images/Buster/Debian-Buster64-1.2-20201230-GO2.img.xz)。Raspbery Pi Imagerなどを使ってmicroSDカードに焼く。

### 起動、ログイン ###
Odroid Go Advance/SuperにmicroSDを挿して起動。root/odroidでログインする。

### WiFiの設定 ###
```
# nano /etc/network/interfaces
```

で、下記を追記する。別のLinux環境があるならこの手順はあらかじめやっておいても良い。

```/etc/network/interfaces.
allow-hotplug wlan0
iface wlan0 inet dhcp
    wpa-essid <NAME-OF-YOUR-WLAN>
    wpa-psk <WLAN-PASSWORD>
```

一旦リブート。WiFiが使えるか確認する。

```
# ip a
```
WiFiが繋がったら、ここから先はsshでログインして行った方が楽。

### アップデート、アップグレード ###
```
# apt update && apt upgrade && apt dist-upgrade
```
結構時間がかかる。

### Localeのインストール ###
```
# apt-get install -y locales
# dpkg-reconfigure locales
```
en-US UTF-8とja-JP UTB-8を選び、デフォルトをen-US UTF-8にする。ja-JPを入れておかないとキーボードの設定が????だらけになって読めない。

### キーボードの設定 ###
```
# apt-get install console-setup keyboard-configuration -y
# dpkg-reconfigure keyboard-configuration
```
文字化けしてて読めない部分があるが、日本語キーボードの場合はPC-98を選んだら動いた。キーボードは何かの質問はPC-98で、文字コードは何かの選択はUTF-8を選択。USキーボードの場合はそれなりに。

### タイムゾーンの設定 ###
```
# dpkg-reconfigure tzdata
```
Asia、Tokyoの順で選択。

### デスクトップ環境をインストール ###
```
# setup-odroid
```
4 Install Desktopを選択、その後MATE、LXDE、KDEから選べる。メモリが1GBしかないので、無難にLXDEを選択。ここはかなり時間がかかる。途中、ユーザーを作成するか聞かれるので、作成し、自動ログインにするか聞かれるので、Yesとする。

### sudoでパスワード聞かれないようにする ###
```
$ sudo visudo
```
ファイルの「一番下に」下記を追加（デフォルトのユーザー名"odroid"でユーザーを作ったと仮定）。

```
odroid ALL=NOPASSWD: ALL
```

### curlをインストール ###
JUCEでビルドしたシンセの起動に何故か必要だった。

```
$ sudo apt-get install curl -y
```


### CPUをパフォーマンスモードにする ###
https://freefielder.jp/blog/2020/02/ubuntu-cpufrequtils.html

```
$ sudo apt install cpufrequtils -y
$ sudo nano /etc/default/cpufrequtils
```
下記を記述。

```
ENABLE="true"
GOVERNOR="performance"
MAX_SPEED=1.30GHz
MIN_SPEED=1.01GHz
```

```
$ sudo service cpufrequtils restart
```

### ジョイスティックをマウスとして使う ###
```
$ sudo apt-get install xserver-xorg-input-joystick -y
```
一旦リブートしてジョイスティックで操作できるか確認。

止めるには下記を見れば良さそう。

https://imate.hatenadiary.org/entry/20111120/1321771026


### オーディオスレッドのプライオリティ設定 ###
```
$ sudo nano /etc/security/limits.conf
```
下記を追記。

```/etc/security/limits.conf
@audio           -       rtprio          95
@audio           -       memlock         unlimited
@audio           -       nice            -10

@realtime        -       rtprio          95
@realtime        -       memlock         unlimited
@realtime        -       nice            -10
```
ユーザーodroidは既にaudioグループに入っていたのでadduserは必要なかった。念のためにやっても良いが。

```
$ sudo adduser odroid audio
```

### ヘッドホン端子 ###
ここに書いてあった。

https://forum.odroid.com/viewtopic.php?f=193&t=37399&start=150&fbclid=IwAR2WByGdLgUT91cKqinggIpsFmn8sSljs9aiIomPqOKmRgHHOG_qrG5lnTw

```
amixer -c 0 sset 'Playback Path' 'HP'
amixer -c 0 sset 'Playback Path' 'SPK'
amixer -c 0 sset 'Playback Path' 'SPK_HP'
amixer -c 0 sset 'Playback Path' 'OFF'
```
alsamixerで手動でやってもよし。設定は保存されるっぽい。公開されている回路図によると、ヘッドフォンジャックの端子がCPUの専用の(?)ピンに入っているのだがどうやって検出するのかわからない。エミュレータ用のOSでは対応してるので、調べたらわかるのかもしれない。しかしこれはこれで使えるのでとりあえずヨシ。

### マウスカーソル表示 ###
.xsessionを使った全画面表示時にもマウスカーソルを表示する。

```
$ sudo apt-get install unclutter -y
```

### 自動ログイン ###
できてない場合は下記で。

```
$ sudo nano /etc/lightdm/lightdm.conf 
```

```
autologin-user=odroid
autologin-user-timeout=0
```

### VNC Server ###
```
sudo apt-get install tightvncserver xfonts-75dpi xfonts-100dpi -y
tightvncserver
```
これが好きなんで。vnc://IPADDRESS:5901で接続する。

### スタートメニューの編集 ###
```
$ sudo apt-get install alacarte -y
```
デスクトップでalacarteを起動して編集する。シンセのアプリを追加したり、スピーカーOn/Offのスクリプトを足したり（スクリプトの場合はターミナルで起動にチェック）。

### スクリーンキーボード ###
```
$ sudo apt-get install xvkbd -y
```

### JACKのインストール ###
こちらに別途書きました。

https://qiita.com/ring2/items/d67e1ba945aa88f7534b?fbclid=IwAR0XYOhcvG5eVLnH4nwj7oHrksthfuFrOPpUpUiY_fqPRb23uYEE4AEFlJY