やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

Raspberry Pi 4B rev 1.2版(2019-11-26)におけるHDMI罠まとめ

 HDMIの変更が広範囲に影響してしまっていることが徐々に見えてきた……。不便。

ハードウェア

 正しいHDMIケーブルの選別と購入がむずかしい。

 私の環境は以下。

バイス HDMI type
Pi4B D (micro)
Display C (mini)
  • Raspberry Pi 4BのHDMIは type D (micro) である
  • 13.3inchなど小型ディスプレイのHDMIは type C (mini) であることが多いはず
  • 変換ケーブルは A-D, A-C ならよくあるが、C-D はほとんどないか2700円とボッタクリ価格

妥協

 以下2通りいずれかの組合せでC-Dにできる。

ケーブル 変換キャップ
A-D A-C
A-C A-D

 もしディスプレイ側がtype AならA-Dケーブルだけでいい。

 私の場合、A-Dケーブル1000円、A-C変換キャップ400円でC-Dにした。

ソフトウェア

複雑化

 ふつうディスプレイを1つだけ使うと思う。このときHDMI 0ポートを使う必要がある。1ポートにケーブルを差してもダメ。さらに、/boot/config.txtにおいて[pi4],[HDMI:0]のように適切な条件フィルタをつけて設定せねばならない。

 ソフト的にポート番号を一致させ、ハード的に差込口も一致させねばならない。どれかひとつでも違えたらディスプレイが映らない……。ひどい。

HDMIポート番号の混乱

 デバイスには0,1とあるが、VNCでは1,2となる。

番号パターン 対象
0,1 基盤, /boot/config.txt[HDMI:0]
1,2 VNCのURL(<IP>:<HDMI番号>

/boot/config.txt

 私の環境では以下の設定でうまく映っている。

/boot/config.txt

# For more options and information see
# http://rpf.io/configtxt
# Some settings may impact device functionality. See link above for details

# uncomment if you get no picture on HDMI for a default "safe" mode
#hdmi_safe=1

# uncomment this if your display has a black border of unused pixels visible
# and your display can output without overscan
#disable_overscan=1

# uncomment the following to adjust overscan. Use positive numbers if console
# goes off screen, and negative if there is too much border
#overscan_left=16
#overscan_right=16
#overscan_top=16
#overscan_bottom=16

# uncomment to force a console size. By default it will be display's size minus
# overscan.
#framebuffer_width=1280
#framebuffer_height=720

# uncomment if hdmi display is not detected and composite is being output
#hdmi_force_hotplug=1

# uncomment to force a specific HDMI mode (this will force VGA)
#hdmi_group=1
#hdmi_mode=1

# uncomment to force a HDMI mode rather than DVI. This can make audio work in
# DMT (computer monitor) modes
#hdmi_drive=2

# uncomment to increase signal to HDMI, if you have interference, blanking, or
# no display
#config_hdmi_boost=4

# uncomment for composite PAL
#sdtv_mode=2

#uncomment to overclock the arm. 700 MHz is the default.
#arm_freq=800

# Uncomment some or all of these to enable the optional hardware interfaces
#dtparam=i2c_arm=on
#dtparam=i2s=on
#dtparam=spi=on

# Uncomment this to enable infrared communication.
#dtoverlay=gpio-ir,gpio_pin=17
#dtoverlay=gpio-ir-tx,gpio_pin=18

# Additional overlays and parameters are documented /boot/overlays/README

# Enable audio (loads snd_bcm2835)
dtparam=audio=on

# 2019-11-29
program_usb_boot_mode=1
program_usb_boot_timeout=1

[pi3]
# 2018-09-22 cocopar 13.3inch 16:9 Display
max_usb_current=1
hdmi_group=2
hdmi_mode=82
hdmi_cvt 1920 1080 60 6 0 0 0
gpu_mem=256
# 2018-09-21 Elecrow Display start
# 古いディスプレイ(1024x768まで対応)だとブートしなくなる。(ディスプレイが暗い状態でチカチカするのを無限ループする)その場合はコメントアウトする。
#max_usb_current=1
#hdmi_group=2
#hdmi_mode=1
#hdmi_mode=82
#hdmi_cvt 1920 1080 60 6 0 0 0
#hdmi_drive=2

[pi3+]
# 2018-09-22 cocopar 13.3inch 16:9 Display
max_usb_current=1
hdmi_group=2
hdmi_mode=82
hdmi_cvt 1920 1080 60 6 0 0 0
gpu_mem=256
# 2018-09-21 Elecrow Display start
# 古いディスプレイ(1024x768まで対応)だとブートしなくなる。(ディスプレイが暗い状態でチカチカするのを無限ループする)その場合はコメントアウトする。
#max_usb_current=1
#hdmi_group=2
#hdmi_mode=1
#hdmi_mode=82
#hdmi_cvt 1920 1080 60 6 0 0 0
#hdmi_drive=2

[pi4]
hdmi_force_hotplug=1
hdmi_ignore_edid=0xa5000080
disable_overscan=1

# Enable DRM VC4 V3D driver on top of the dispmanx display stack
dtoverlay=vc4-fkms-v3d
max_framebuffers=2

# 2019-11-29
[HDMI:0]
# 2018-09-22 cocopar 13.3inch 16:9 Display
  max_usb_current=1
  hdmi_group=2
  hdmi_mode=82
  hdmi_cvt 1920 1080 60 6 0 0 0
  gpu_mem=256
  program_usb_boot_mode=1
  program_usb_boot_timeout=1

# 2019-11-29
[HDMI:1]
# 2018-09-21 Elecrow Display start
# 古いディスプレイ(1024x768まで対応)だとブートしなくなる。(ディスプレイが暗い状態でチカチカするのを無限ループする)その場合はコメントアウトする。
  max_usb_current=1
  hdmi_group=2
  hdmi_mode=1
  hdmi_mode=82
  hdmi_cvt 1920 1080 60 6 0 0 0
  hdmi_drive=2
  program_usb_boot_mode=1
  program_usb_boot_timeout=1

[all]
#dtoverlay=vc4-fkms-v3d

所感

HDMI仕様変更のせいで複雑化

 Pi3B+より罠がかなり増えた。HDMIがtype Aで1ポートしかなかったので、まだ簡単だった。それでも設定には苦労させられた。

 Pi4Bは type D 2ポート になり、一気に複雑化した。ケーブルの組合せは合わなくなり、合うケーブルの商品はかなり少ない。あってもボッタクリ価格。さらに設定は複雑化。表示設定はおろか、VNCログイン時のURLにまでHDMI番号が必要になる始末。

HDMI仕様変更の必要性に疑問

 はたしてPi4Bのような低スペックマシンに、デュアルディスプレイなど必要あるだろうか。互換性を失わせてまでデュアルディスプレイにする必要はあるのか。学習に必要だろうか。安価に済むだろうか。

 Raspberry Piの趣旨である「学習目的の安価なコンピュータ」という趣旨から外れてきたように感じる。売れるようになったから利益を産むべくインタフェース変更してケーブル類を売って儲けようという意図だろうと邪推できる。

 たいてい売れて大企業化したり有名になったら腐敗する。Raspberry Piもこれから劣化するかもしれない。そうならないことを祈る。

対象環境

$ uname -a
Linux raspberrypi 4.19.42-v7+ #1218 SMP Tue May 14 00:48:17 BST 2019 armv7l GNU/Linux

前回まで

 ハード。

 ソフト。

 設定。

 企業。