AndroidThings + Raspberry PiでHDMIディスプレイが映らない時にやること


Android Thingsを始めた頃にせっかくAndroidと同じように、layout xmlで画面を作れるのだからと、
HDMIディスプレイを買ったのですが、DP5.1までは全くうまく表示できませんでした。

先日DP6.0になって、そのIssueが治ったとのことで試したのですが、デフォルトのままではうまく表示できませんでした。
今回は色々やって表示できるようになったのでその覚書記事です。

なお私が買ったディスプレイは以下です。

[Kuman 5インチ Raspberry Pi用ディスプレイ 800*480 解像度 TFTモニタ タッチスクリーン タッチパネル Raspberry Pi 3 2 Model B B+ A A+ 用ディスプレイ ラズベリーパイ　SC5A](https://www.amazon.co.jp/gp/product/B01GCLTD6M/ref=oh_aui_detailpage_o09_s00?ie=UTF8&psc=1)

多分XPT2046タッチコントローラーが乗ってます。

## まとめ

以下でやります。

* diskutilでディスクを確認
* 一回diskをホストPCにマウントする(msdosで)
* config.txtをいじる
* 起動

## 手順

### diskutilでディスクを確認

まずAndroidThingsが入っているマイクロSDカードをMacに接続します。
diskutilで接続したマイクロSDカードを確認します。

```bash
$ sudo diskutil list
/dev/disk0 (internal):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                         500.3 GB   disk0
   1:                        EFI EFI                     314.6 MB   disk0s1
   2:          Apple_CoreStorage Macintosh HD            499.3 GB   disk0s2
   3:                 Apple_Boot Recovery HD             650.0 MB   disk0s3

/dev/disk1 (internal, virtual):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:                  Apple_HFS Macintosh HD           +499.0 GB   disk1
                                 Logical Volume on disk0s2
                                 7961425C-D4A5-4ADA-90FF-2250B5DA14B6
                                 Unencrypted

/dev/disk3 (external, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *15.9 GB    disk3
   1: 314F99D5-B2BF-4883-8D03-E2F2CE507D6A               67.1 MB    disk3s1
   2: 314F99D5-B2BF-4883-8D03-E2F2CE507D6A               1.0 MB     disk3s2
   3: 314F99D5-B2BF-4883-8D03-E2F2CE507D6A               1.0 MB     disk3s3
   4: BB499290-B57E-49F6-BF41-190386693794               33.6 MB    disk3s4
   5: BB499290-B57E-49F6-BF41-190386693794               33.6 MB    disk3s5
   6: 0F2778C4-5CC1-4300-8670-6C88B7E57ED6               536.9 MB   disk3s6
   7: 0F2778C4-5CC1-4300-8670-6C88B7E57ED6               536.9 MB   disk3s7
   8: B598858A-5FE3-418E-B8C4-824B41F4ADFC               65.5 KB    disk3s8
   9: B598858A-5FE3-418E-B8C4-824B41F4ADFC               65.5 KB    disk3s9
  10: 6B2378B0-0FBC-4AA9-A4F6-4D6E17281C47               1.0 MB     disk3s10
  11: 314F99D5-B2BF-4883-8D03-E2F2CE507D6A               67.1 MB    disk3s11
  12: 314F99D5-B2BF-4883-8D03-E2F2CE507D6A               67.1 MB    disk3s12
  13: AA3434B2-DDC3-4065-8B1A-18E99EA15CB7               268.4 MB   disk3s13
  14: AA3434B2-DDC3-4065-8B1A-18E99EA15CB7               268.4 MB   disk3s14
  15: AA3434B2-DDC3-4065-8B1A-18E99EA15CB7               4.2 MB     disk3s15
  16: AA3434B2-DDC3-4065-8B1A-18E99EA15CB7               4.2 MB     disk3s16
  17: AA3434B2-DDC3-4065-8B1A-18E99EA15CB7               33.6 MB    disk3s17
  18: AA3434B2-DDC3-4065-8B1A-18E99EA15CB7               16.8 MB    disk3s18
  19: 0BB7E6ED-4424-49C0-9372-7FBAB465AB4C               2.6 GB     disk3s19


```

↑だと`/dev/disk3 (external, physical)`と書いてあるdisk3が対象のディスクです。


### マウント

マウントします。マウントする時にmsdosモード(?)でマウントします。
マウントする時は`/dev/disk3s1`とかにします。

```bash
$ mkdir /mnt/disk
$ sudo mount -t msdos /dev/disk3s1 /mnt/disk
```

### config.txtを編集

マウントしたディレクトリの直下にある、`config.txt`を編集します。
実際に編集する値はディスプレイによって異なるはずなので、ディスプレイのマニュアルを確認します。

```bash
$ cd /mnt/disk
$ vi ./config.txt

# 以下を追記
dtparam=audio=on
max_usb_current=1
hdmi_group=2
hdmi_mode=1
hdmi_mode=87
hdmi_drive=1
hdmi_cvt 800 480 60 6 0 0 0
dtoverlay=ads7846,cs=1,penirq=25,penirq_pull=2,speed=50000,keep_vref_on=0,swapxy=0,pmax=255,xohms=150,xmin=200,xmax=3900,ymin=200,ymax=3900
```

### umountして、起動

最後にumountしてSDカードを抜いて、Raspberry Piにさせば完了です。
config.txtの設定やumountをミスると、たまにSDカードが壊れたり、イメージが壊れてAndroidThingsが起動しなくなる事があるのでご注意ください。