Buster で kodi18.x を動かす

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254888/be022160-ea2e-6b31-375c-3ae6c6842000.png" width=75%>


## 【前文】
前回 [Buster で kodi を動かす](https://qiita.com/god19/items/306538b44fafc503100e "Buster で kodi を動かす") の続き。

中々 Pi4 B が国内発売されないね。
それより個人的に気になるのが kodi 最新パッケージのリリース。何時になったら 18.x 系は出るんだ。と首を長くして待っているんだけど……。
公式フォーラムに以下が。
[
[Guide] Kodi on Raspbian Buster](https://www.raspberrypi.org/forums/viewtopic.php?t=251645 "
[Guide] Kodi on Raspbian Buster") 

> Latest stable version available on Raspbian:
Kodi 18.4 Leia

げげげ、いつの間に。乗り遅れたよ。早速アップグレードする。
環境は前回と同様に以下。

- Pi は 3B+
- Raspbian は Buster with desktop (September 2019)

## 【アップグレード】
まずは何も考えずに `sudo apt-get dist-upgrade -y`。

```
pi@raspberrypi3-2:~ $ sudo apt-get dist-upgrade -y
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
アップグレードパッケージを検出しています... 完了
以下のパッケージが自動でインストールされましたが、もう必要とされていません:
  fonts-noto-core fonts-noto-hinted fonts-noto-ui-core fonts-roboto-hinted
  fonts-roboto-unhinted kodi-data kodi-repository-kodi
  kodi-visualization-spectrum libcrossguid0 libjs-iscroll libyajl2
これを削除するには 'sudo apt autoremove' を利用してください。
以下のパッケージが新たにインストールされます:
  libao-common libao4 libfstrcmp0 libiso9660-11 libpulse-mainloop-glib0
  libshairplay0 python-bluez
以下のパッケージはアップグレードされます:
  kodi kodi-bin
アップグレード: 2 個、新規インストール: 7 個、削除: 0 個、保留: 0 個。
40.5 MB 中 0 B のアーカイブを取得する必要があります。
この操作後に追加で 50.5 MB のディスク容量が消費されます。
apt-listchanges: changelog を読み込んでいます...
以前に未選択のパッケージ libfstrcmp0 を選択しています。
(データベースを読み込んでいます ... 現在 102662 個のファイルとディレクトリがインストールされています。)
.../0-libfstrcmp0_0.7.D001-1.1_armhf.deb を展開する準備をしています ...
libfstrcmp0 (0.7.D001-1.1) を展開しています...
以前に未選択のパッケージ libiso9660-11:armhf を選択しています。
.../1-libiso9660-11_2.0.0-2_armhf.deb を展開する準備をしています ...
libiso9660-11:armhf (2.0.0-2) を展開しています...
以前に未選択のパッケージ libpulse-mainloop-glib0:armhf を選択しています。
.../2-libpulse-mainloop-glib0_12.2-4+deb10u1_armhf.deb を展開する準備をしています ...
libpulse-mainloop-glib0:armhf (12.2-4+deb10u1) を展開しています...
.../3-kodi_2%3a18.4-6~buster_all.deb を展開する準備をしています ...
kodi (2:18.4-6~buster) で (2:17.6+dfsg1-4+b1 に) 上書き展開しています ...
dpkg: アーカイブ /tmp/apt-dpkg-install-ePsdzD/3-kodi_2%3a18.4-6~buster_all.deb の処理中にエラーが発生しました (--unpack):
 '/usr/share/icons/hicolor/128x128/apps/kodi.png' を上書きしようとしています。これはパッケージ kodi-data 2:17.6+dfsg1-4 にも存在します
dpkg-deb: エラー: ペースト subprocess was killed by signal (Broken pipe)
.../4-kodi-bin_2%3a18.4-6~buster_armhf.deb を展開する準備をしています ...
kodi-bin (2:18.4-6~buster) で (2:17.6+dfsg1-4+b1 に) 上書き展開しています ...
dpkg: アーカイブ /tmp/apt-dpkg-install-ePsdzD/4-kodi-bin_2%3a18.4-6~buster_armhf.deb の処理中にエラーが発生しました (--unpack):
 '/usr/bin/kodi' を上書きしようとしています。これはパッケージ kodi 2:17.6+dfsg1-4+b1 にも存在します
dpkg-deb: エラー: ペースト subprocess was killed by signal (Broken pipe)
以前に未選択のパッケージ python-bluez を選択しています。
.../5-python-bluez_0.22+really0.22-1_armhf.deb を展開する準備をしています ...
python-bluez (0.22+really0.22-1) を展開しています...
以前に未選択のパッケージ libao-common を選択しています。
.../6-libao-common_1.2.2+20180113-1_all.deb を展開する準備をしています ...
libao-common (1.2.2+20180113-1) を展開しています...
以前に未選択のパッケージ libao4:armhf を選択しています。
.../7-libao4_1.2.2+20180113-1_armhf.deb を展開する準備をしています ...
libao4:armhf (1.2.2+20180113-1) を展開しています...
以前に未選択のパッケージ libshairplay0:armhf を選択しています。
.../8-libshairplay0_0.9.0+git20180824.096b61a-1~buster_armhf.deb を展開する準備をしています ...
libshairplay0:armhf (0.9.0+git20180824.096b61a-1~buster) を展開しています...
処理中にエラーが発生しました:
 /tmp/apt-dpkg-install-ePsdzD/3-kodi_2%3a18.4-6~buster_all.deb
 /tmp/apt-dpkg-install-ePsdzD/4-kodi-bin_2%3a18.4-6~buster_armhf.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)
```
うーん、エラーが発生するがな。

[5.4. dpkg を用いたパッケージの操作](http://l.github.io/debian-handbook/html/ja-JP/sect.manipulating-packages-with-dpkg.html "
5.4. dpkg を用いたパッケージの操作") 
> 最もよく目にするエラーはファイルの衝突で、遅かれ早かれこのエラーに遭遇するのは避けられません。

うーん、自分は初めて見たんだけど。（経験値が低すぎる？）
強制アップデートを試すも上手くいかない。

## 【再インストール】
よく分からないので再インストールすることに。
まず kodi アンインストール。`--purge`スイッチは指定していないので、設定ファイルは残る想定。

```
pi@raspberrypi3-2:~ $ sudo apt-get remove kodi
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
以下のパッケージが自動でインストールされましたが、もう必要とされていません:
  fonts-noto-core fonts-noto-hinted fonts-noto-ui-core fonts-roboto-hinted
  fonts-roboto-unhinted kodi-bin kodi-data kodi-repository-kodi
  kodi-visualization-spectrum libao-common libao4 libcrossguid0 libfstrcmp0
  libiso9660-11 libjs-iscroll liblzo2-2 libmariadb3 libmicrohttpd12
  libpcrecpp0v5 libpulse-mainloop-glib0 libshairplay0 libyajl2 mariadb-common
  mysql-common python-bluez
これを削除するには 'sudo apt autoremove' を利用してください。
以下のパッケージは「削除」されます:
  kodi
アップグレード: 0 個、新規インストール: 0 個、削除: 1 個、保留: 1 個。
7 個のパッケージが完全にインストールまたは削除されていません。
この操作後に 140 kB のディスク容量が解放されます。
続行しますか? [Y/n] y
(データベースを読み込んでいます ... 現在 102745 個のファイルとディレクトリがインストールされています。)
kodi (2:17.6+dfsg1-4+b1) を削除しています ...
libiso9660-11:armhf (2.0.0-2) を設定しています ...
libao-common (1.2.2+20180113-1) を設定しています ...
libpulse-mainloop-glib0:armhf (12.2-4+deb10u1) を設定しています ...
libao4:armhf (1.2.2+20180113-1) を設定しています ...
python-bluez (0.22+really0.22-1) を設定しています ...
libshairplay0:armhf (0.9.0+git20180824.096b61a-1~buster) を設定しています ...
libfstrcmp0 (0.7.D001-1.1) を設定しています ...
mime-support (3.62) のトリガを処理しています ...
hicolor-icon-theme (0.17-2) のトリガを処理しています ...
gnome-menus (3.31.4-3) のトリガを処理しています ...
libc-bin (2.28-10+rpi1) のトリガを処理しています ...
man-db (2.8.5-2) のトリガを処理しています ...
desktop-file-utils (0.23-4) のトリガを処理しています ...
pi@raspberrypi3-2:~ $ 
```

`sudo apt autoremove` の文言が見受けられるのでこちらも素直に実行。

```
pi@raspberrypi3-2:~ $ sudo apt-get autoremove -y
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
以下のパッケージは「削除」されます:
  fonts-noto-core fonts-noto-hinted fonts-noto-ui-core fonts-roboto-hinted
  fonts-roboto-unhinted kodi-bin kodi-data kodi-repository-kodi
  kodi-visualization-spectrum libao-common libao4 libcrossguid0 libfstrcmp0
  libiso9660-11 libjs-iscroll liblzo2-2 libmariadb3 libmicrohttpd12
  libpcrecpp0v5 libpulse-mainloop-glib0 libshairplay0 libyajl2 mariadb-common
  mysql-common python-bluez
アップグレード: 0 個、新規インストール: 0 個、削除: 25 個、保留: 0 個。
この操作後に 97.0 MB のディスク容量が解放されます。
(データベースを読み込んでいます ... 現在 102733 個のファイルとディレクトリがインストールされています。)
fonts-noto-hinted (20181227-1) を削除しています ...
fonts-noto-core (20181227-1) を削除しています ...
fonts-noto-ui-core (20181227-1) を削除しています ...
fonts-roboto-hinted (2:0~20170802-3) を削除しています ...
dpkg: 警告: fonts-roboto-hinted の削除中、ディレクトリ '/usr/share/fonts/truetype/roboto/hinted' が空でないため削除できませんでした
fonts-roboto-unhinted (2:0~20170802-3) を削除しています ...
dpkg: 警告: fonts-roboto-unhinted の削除中、ディレクトリ '/usr/share/fonts/truetype/roboto/unhinted/RobotoTTF' が空でないため削除できませんでした
kodi-bin:armhf (2:17.6+dfsg1-4+b1) を削除しています ...
kodi-data (2:17.6+dfsg1-4) を削除しています ...
kodi-repository-kodi (2:17.6+dfsg1-4) を削除しています ...
kodi-visualization-spectrum (2.0.4-1~buster) を削除しています ...
libshairplay0:armhf (0.9.0+git20180824.096b61a-1~buster) を削除しています ...
libao4:armhf (1.2.2+20180113-1) を削除しています ...
libao-common (1.2.2+20180113-1) を削除しています ...
libcrossguid0:armhf (0.0+git200150803-4) を削除しています ...
libfstrcmp0 (0.7.D001-1.1) を削除しています ...
libiso9660-11:armhf (2.0.0-2) を削除しています ...
libjs-iscroll (5.2.0+dfsg1-1) を削除しています ...
liblzo2-2:armhf (2.10-0.1) を削除しています ...
libmariadb3:armhf (1:10.3.17-0+deb10u1) を削除しています ...
libmicrohttpd12 (0.9.62-1) を削除しています ...
libpcrecpp0v5:armhf (2:8.39-12) を削除しています ...
libpulse-mainloop-glib0:armhf (12.2-4+deb10u1) を削除しています ...
libyajl2:armhf (2.1.0-3) を削除しています ...
mariadb-common (1:10.3.17-0+deb10u1) を削除しています ...
update-alternatives: /etc/mysql/my.cnf (my.cnf) を提供するために自動モードで /etc/mysql/my.cnf.fallback を使います
mysql-common (5.8+1.0.5) を削除しています ...
python-bluez (0.22+really0.22-1) を削除しています ...
hicolor-icon-theme (0.17-2) のトリガを処理しています ...
libc-bin (2.28-10+rpi1) のトリガを処理しています ...
man-db (2.8.5-2) のトリガを処理しています ...
fontconfig (2.13.1-2) のトリガを処理しています ...
pi@raspberrypi3-2:~ $ 
```

kodi インストール。

```
pi@raspberrypi3-2:~ $ sudo apt-get install kodi
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
以下の追加パッケージがインストールされます:
  kodi-bin libao-common libao4 libfstrcmp0 libiso9660-11 liblzo2-2 libmariadb3
  libmicrohttpd12 libpcrecpp0v5 libpulse-mainloop-glib0 libshairplay0
  mariadb-common mysql-common python-bluez
提案パッケージ:
  kodi-pvr-mythtv kodi-pvr-vuplus kodi-pvr-vdr-vnsi kodi-pvr-njoy
  kodi-pvr-nextpvr kodi-pvr-mediaportal-tvserver kodi-pvr-tvheadend-hts
  kodi-pvr-dvbviewer kodi-pvr-argustv kodi-pvr-iptvsimple
  kodi-audioencoder-vorbis kodi-audioencoder-flac kodi-audioencoder-lame
  libsndio6.1
推奨パッケージ:
  libva-intel-vaapi-driver libva1
以下のパッケージが新たにインストールされます:
  kodi kodi-bin libao-common libao4 libfstrcmp0 libiso9660-11 liblzo2-2
  libmariadb3 libmicrohttpd12 libpcrecpp0v5 libpulse-mainloop-glib0
  libshairplay0 mariadb-common mysql-common python-bluez
アップグレード: 0 個、新規インストール: 15 個、削除: 0 個、保留: 0 個。
40.9 MB 中 292 kB のアーカイブを取得する必要があります。
この操作後に追加で 69.2 MB のディスク容量が消費されます。
続行しますか? [Y/n] y
取得:1 http://ftp.jaist.ac.jp/pub/Linux/raspbian-archive/raspbian buster/main armhf liblzo2-2 armhf 2.10-0.1 [48.4 kB]
取得:2 http://ftp.jaist.ac.jp/pub/Linux/raspbian-archive/raspbian buster/main armhf mysql-common all 5.8+1.0.5 [7,324 B]
取得:3 http://ftp.jaist.ac.jp/pub/Linux/raspbian-archive/raspbian buster/main armhf libmicrohttpd12 armhf 0.9.62-1 [86.6 kB]
取得:4 http://ftp.jaist.ac.jp/pub/Linux/raspbian-archive/raspbian buster/main armhf libpcrecpp0v5 armhf 2:8.39-12 [150 kB]
292 kB を 3秒 で取得しました (97.7 kB/s)
以前に未選択のパッケージ libfstrcmp0 を選択しています。
(データベースを読み込んでいます ... 現在 99186 個のファイルとディレクトリがインストールされています。)
.../00-libfstrcmp0_0.7.D001-1.1_armhf.deb を展開する準備をしています ...
libfstrcmp0 (0.7.D001-1.1) を展開しています...
以前に未選択のパッケージ libiso9660-11:armhf を選択しています。
.../01-libiso9660-11_2.0.0-2_armhf.deb を展開する準備をしています ...
libiso9660-11:armhf (2.0.0-2) を展開しています...
以前に未選択のパッケージ liblzo2-2:armhf を選択しています。
.../02-liblzo2-2_2.10-0.1_armhf.deb を展開する準備をしています ...
liblzo2-2:armhf (2.10-0.1) を展開しています...
以前に未選択のパッケージ mysql-common を選択しています。
.../03-mysql-common_5.8+1.0.5_all.deb を展開する準備をしています ...
mysql-common (5.8+1.0.5) を展開しています...
以前に未選択のパッケージ mariadb-common を選択しています。
.../04-mariadb-common_1%3a10.3.17-0+deb10u1_all.deb を展開する準備をしています ...
mariadb-common (1:10.3.17-0+deb10u1) を展開しています...
以前に未選択のパッケージ libmariadb3:armhf を選択しています。
.../05-libmariadb3_1%3a10.3.17-0+deb10u1_armhf.deb を展開する準備をしています ...
libmariadb3:armhf (1:10.3.17-0+deb10u1) を展開しています...
以前に未選択のパッケージ libmicrohttpd12 を選択しています。
.../06-libmicrohttpd12_0.9.62-1_armhf.deb を展開する準備をしています ...
libmicrohttpd12 (0.9.62-1) を展開しています...
以前に未選択のパッケージ libpcrecpp0v5:armhf を選択しています。
.../07-libpcrecpp0v5_2%3a8.39-12_armhf.deb を展開する準備をしています ...
libpcrecpp0v5:armhf (2:8.39-12) を展開しています...
以前に未選択のパッケージ libpulse-mainloop-glib0:armhf を選択しています。
.../08-libpulse-mainloop-glib0_12.2-4+deb10u1_armhf.deb を展開する準備をしています ...
libpulse-mainloop-glib0:armhf (12.2-4+deb10u1) を展開しています...
以前に未選択のパッケージ kodi-bin を選択しています。
.../09-kodi-bin_2%3a18.4-6~buster_armhf.deb を展開する準備をしています ...
kodi-bin (2:18.4-6~buster) を展開しています...
以前に未選択のパッケージ python-bluez を選択しています。
.../10-python-bluez_0.22+really0.22-1_armhf.deb を展開する準備をしています ...
python-bluez (0.22+really0.22-1) を展開しています...
以前に未選択のパッケージ libao-common を選択しています。
.../11-libao-common_1.2.2+20180113-1_all.deb を展開する準備をしています ...
libao-common (1.2.2+20180113-1) を展開しています...
以前に未選択のパッケージ libao4:armhf を選択しています。
.../12-libao4_1.2.2+20180113-1_armhf.deb を展開する準備をしています ...
libao4:armhf (1.2.2+20180113-1) を展開しています...
以前に未選択のパッケージ libshairplay0:armhf を選択しています。
.../13-libshairplay0_0.9.0+git20180824.096b61a-1~buster_armhf.deb を展開する準備をしています ...
libshairplay0:armhf (0.9.0+git20180824.096b61a-1~buster) を展開しています...
以前に未選択のパッケージ kodi を選択しています。
.../14-kodi_2%3a18.4-6~buster_all.deb を展開する準備をしています ...
kodi (2:18.4-6~buster) を展開しています...
libpcrecpp0v5:armhf (2:8.39-12) を設定しています ...
mysql-common (5.8+1.0.5) を設定しています ...
update-alternatives: /etc/mysql/my.cnf (my.cnf) を提供するために自動モードで /etc/mysql/my.cnf.fallback を使います
libiso9660-11:armhf (2.0.0-2) を設定しています ...
liblzo2-2:armhf (2.10-0.1) を設定しています ...
libmicrohttpd12 (0.9.62-1) を設定しています ...
libao-common (1.2.2+20180113-1) を設定しています ...
mariadb-common (1:10.3.17-0+deb10u1) を設定しています ...
update-alternatives: /etc/mysql/my.cnf (my.cnf) を提供するために自動モードで /etc/mysql/mariadb.cnf を使います
libpulse-mainloop-glib0:armhf (12.2-4+deb10u1) を設定しています ...
libmariadb3:armhf (1:10.3.17-0+deb10u1) を設定しています ...
libao4:armhf (1.2.2+20180113-1) を設定しています ...
python-bluez (0.22+really0.22-1) を設定しています ...
libshairplay0:armhf (0.9.0+git20180824.096b61a-1~buster) を設定しています ...
libfstrcmp0 (0.7.D001-1.1) を設定しています ...
kodi-bin (2:18.4-6~buster) を設定しています ...
kodi (2:18.4-6~buster) を設定しています ...
mime-support (3.62) のトリガを処理しています ...
hicolor-icon-theme (0.17-2) のトリガを処理しています ...
gnome-menus (3.31.4-3) のトリガを処理しています ...
libc-bin (2.28-10+rpi1) のトリガを処理しています ...
man-db (2.8.5-2) のトリガを処理しています ...
desktop-file-utils (0.23-4) のトリガを処理しています ...
pi@raspberrypi3-2:~ $ 
```

早速メニューから kodi を起動するも画面が固まる。
今思えば単に起動が重かっただけかもしれないけど、取り合えず母艦（Windows10）からターミナルで入って Raspberry Pi を再起動。
それから再度 kodi を起動。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254888/be022160-ea2e-6b31-375c-3ae6c6842000.png" width=75%>
18.4だよ。やればできるじゃない。

## 【設定】
冒頭の公式フォーラムに Pi3 用の推奨設定が示されている。

> RASPBERRY PI 3 AND BELOW ONLY TWEAKS:
> 
> This is very important!
> 
> -Kodi on the Raspberry Pi 0/1/2/3 will only function if you are using the Broadcom drivers! This is the "Original non-GL desktop driver" on raspi-config, which is currently the default on the Raspbian images for the RPi 0/1/2/3. If you select the open-source OpenGL driver, it won't work!
> 
> -Kodi on Raspbian requires a minimum of 160 MB of RAM dedicated to the GPU to function properly! This can be done by running "raspi-config" -> "Advanced Options" -> "Memory Split" -> 160.
> -If you have a RPi 2/3, the recommended is 256 MB of RAM for the GPU.

それに合わせて設定。

まず OpenGL driver を外す。（デフォルトの設定「G1 Legacy」に戻す）
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254888/13d9f678-04da-3408-3874-5b9baaf0a5a0.png" width=75%>
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254888/9a23bef4-f341-51c4-32fa-09a2c78db733.png" width=75%>

以前は「G2 GL (Fake KMS) ～」でかろうじて動いた、って箇所だね。今回のバージョンでも一応動くけど、メニューがちらついたりして地味にダメっぽい。
「G3 GL (Full KMS) ～」は勿論ダメ。

設定後、再起動を促されるので従う。

次は GPUメモリ設定。256MB 推奨。自分の環境では設定済みだった。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254888/4a98cf8d-52be-f482-10cf-c371ecfe0022.png" width=75%>

kodi の画面解像度を最大(1920×1080)に変更。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254888/bbac50b3-5eee-b956-e6ef-459b5faff4f4.png" width=75%>
以前はを最小(640×480)でかろうじて動くレベルだったけど、今回は最大に上げても問題なくなった。

kodi のバージョンを確認。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254888/41d85259-c528-bb3f-2dba-94b71c09a602.png" width=75%>
ビルドが `20191024` ってことは先月末にはリリースされていたのか。
気付くの遅すぎ。

まだ一晩動かしてみただけではあるけど、クラッシュ、フリーズすることもないし、問題なさそう。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254888/3cb7e424-495d-525a-54e9-100c37a62f95.png" width=75%>

皆さんも良い kodi ライフを。