Raspberry Pi 4B に HDMIケーブル A-D + 変換キャップ type A-C でディスプレイ表示する
やっとできた。
ハードウェア
- Raspberry Pi 4B
ソフトウェア
ディスプレイに表示された! (写真は割愛)
ただし解像度がおかしかったため、以下のように修正した。(/boot/config.txt
で設定したはずなのに……)
解像度の修正
- システムメニュー
設定
Screen Configuration
(なぜかVNC越しでは表示されなかった)
ダイアログが出るので以下のように操作する。
- メニュー
Configure
Screens
HDMI-1
解像度
1920x1080
(ディスプレイに合わせたサイズにすること)
するとHDMI-1
の設定が現れるので、念の為クリックして最前面に表示する。
最後にこれを適用する。
- メニュー
Configure
適用
一瞬まっくらになった後、指定した解像度で表示された。成功!
/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_safe=1 hdmi_force_hotplug=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
念の為Pi3B, Pi3B+の設定も追記した。
Pi3B, Pi3B+のときと比べてPi4Bには以下も追記した。ないとディスプレイが「信号なし」となって映らなかった。もしかしたらhdmi_safe=1
だけでいいかも。
hdmi_safe=1 hdmi_force_hotplug=1
設定はデフォルト状態に対して以下を参考に追記したもの。
- https://www.raspberrypi.org/documentation/configuration/config-txt/video.md
- https://www.raspberrypi.org/documentation/configuration/config-txt/conditional.md
hdmi_mode
, hdmi_mode
, hdmi_cvt
, hdmi_drive
などは各ディスプレイ購入時メーカに問合せて教えてもらった値。わからないときはURL先をよく読むとよい。調べ方まで書いてある。
設定ファイルを見ての通り、以下のように1920
x1080
の解像度に指定していたはず。なのに初回起動時は設定されていなかった。原因不明。
[pi4] [HDMI:0] hdmi_cvt 1920 1080 60 6 0 0 0
問題
消える解像度の設定
なぜか再起動すると解像度の設定が消えていた……。
つまり再起動するたびに設定し直さねばならない……。これはひどい。原因不明。/boot/config.txt
も反映されていないし。もうHDMI関係はダメダメ。
不明なHDMIポート関係
HDMIポートの表示や関係性が謎。私の環境ではそれぞれのデバイスでHDMIポートが以下のように番号付けされていた。
Pi4B | ディスプレイ |
---|---|
HDMI 0 | HDMI 1 |
HDMI 1 | HDMI 2 |
これらの関係がわからない。多分これらの番号を一致させる必要はないと思う。
ちなみに今回ケーブル接続しているポートの組合せは以下。
Pi4B | ディスプレイ |
---|---|
HDMI 0 | HDMI 2 |
番号の違い
番号は0
から始めるか1
から始めるかの違いによって値が変わっている。それ自体が紛らわしくて統一して欲しいところだが、まだ我慢できる。
関係
じつはポート同士が特定の組合せでないとダメだったりする? 例えば以下みたいに。
是非 | Pi4B | ディスプレイ |
---|---|---|
○ | HDMI 0 | HDMI 1 |
○ | HDMI 1 | HDMI 2 |
☓ | HDMI 0 | HDMI 1 |
☓ | HDMI 1 | HDMI 2 |
多分そんな必要は無いと思っている。
ただし、Pi4BがHDMIディスプレイを1台だけアクティブにする場合、HDMI 0
を使う必要があるようだ。HDMI 1
だと問題あるらしい。以下参照。
なので、Pi4B側のHDMIポートは0
にケーブルを挿している。ディスプレイ側にそんな制限はないと思っているので、適当にHDMI 1 でなくHDMI 2 に挿している。
設定が指しているのはどっち?
/boot/config.txt
[pi4] [HDMI:0] hdmi_cvt 1920 1080 60 6 0 0 0 [HDMI:1] hdmi_cvt 1920 1080 60 6 0 0 0
0
, 1
の番号割当はPi4Bの基盤に書いてあるものと一致する。なので/boot/config.txt
では基盤の位置におけるHDMIポートに対する設定だと思っている。
Screen Configuration
解像度の修正にて修正したときの画面キャプチャをよく見ると、1
,2
という番号割当だった。これはPi4B基盤でなくディスプレイの番号割当と一致する。
え、もしかして、こっちはディスプレイのポート番号に対する設定なの?
そう思って、HDMI 2
の設定を見てみら以下。
ちょ、1920x1080
がないんですけど? HDMI 1
のときは以下のようにたくさん選択肢があったのに、なぜ?
そもそも、HDMI 1
の設定を1920x1080
にしたら実際にディスプレイの解像度があがった。なので、私はそれで設定できたと思っている。
一体どっちなの?
それぞれの根拠は以下。
Screen Configure
におけるHDMI 1
を設定すべきと言えるときの根拠- 実際にディスプレイの解像度があがった(デスクトップ画像が細かく小さく広く表示された)
Screen Configure
におけるHDMI 2
を設定すべきと言えるときの根拠- ディスプレイ上に表示されるポート番号と
Screen Configure
ダイアログに表示されるポート番号が一致している
- ディスプレイ上に表示されるポート番号と
実際の解像度が変わったことこそ正しさの証だと考える。ポート番号も、基盤は0
始りで、Screen Configure
は1
始りと考えれば、一致している。
よって「Pi4B基盤HDMI 0
使用のときはScreen Configure
におけるHDMI 1
を設定すべき」ということでいいはず。(ディスプレイ側のポート番号は無関係、のはず)
それなのに再起動後には設定が消えてしまう。たぶんそれとこれとは別件、だと思う。自信はない。私の設定ミスなのか、Raspbianのバグなのか。
つまり、私の予想では以下のような対応だと思っている。
Hard | Soft | ||
---|---|---|---|
Pi4B | Display | /boot/config.txt | Screen Configuration |
0 | 1 | 0 | 1 |
1 | 2 | 1 | 2 |
VNCログインURL
Pi4BへVNCログインするときのURLでもポート番号が必要になる。
Pi3B+からPi4BへSSHログインする。
ssh Pi4Bのユーザ名@Pi4BのIP
ssh pi@192.168.11.10
SSHログインした端末にてVNCサーバを起動する。
vncserver -randr=ディスプレイの解像度
vncserver -randr=1920x1080
このとき以下のようにIPアドレスの後ろにHDMIポート番号らしき番号:1
が表示される。VNC Viewerでログインするときはその番号まで含めないとログインできない。
... New desktop is raspberrypi:1 (192.168.11.10:1)
さらに、以下コマンドをもう一度やると、今度は:2
となる。
vncserver -randr=1920x1080
... New desktop is raspberrypi:1 (192.168.11.10:2)
なので、VNCではポート番号を1
から数える方式だと思っている。それが確かならHDMIポート番号の対応表は以下になる。
Hard | Soft | |||
---|---|---|---|---|
Pi4B | Display | /boot/config.txt | Screen Configuration | VNC |
0 | 1 | 0 | 1 | 1 |
1 | 2 | 1 | 2 | 2 |
謎のフリーズ
なんか作業中、勝手にフリーズした。タスクバーのアイコンなどが☓印になったり、デスクトップ画像が消えて白くなったりした。
仕方ないので再起動したら、以下のような状態だった。
- ブート時、画面左上にラズベリーパイ画像が4つ表示されるとき、解像度は超低い(たぶん640x480くらい?)
- ブート後、デスクトップは
1920x1080
っぽい
あれ、解像度の設定が生きている? うまくいったっぽい。
たぶんRaspbian Busterはまだバグだらけと思われる……。
/boot/config.txt
調整(黒枠の排除)
disable_overscan=1
以下を追記した。
hdmi_ignore_edid=0xa5000080 disable_overscan=1
設定 | 意味 |
---|---|
hdmi_ignore_edid=0xa5000080 |
ディスプレイから送信される設定を無視する |
disable_overscan=1 |
ディスプレイ外枠に黒いのが表示されるのを無視 |
以下の箇所に。
[pi4] hdmi_safe=1 hdmi_force_hotplug=1 hdmi_ignore_edid=0xa5000080 disable_overscan=1 ...
再起動。しかしデスクトップの外枠四方に黒枠が表示されてしまう。そのせいでディスプレイより一回り小さく表示されてしまう。でも、大体1920x1080の解像度になっていると思う。
hdmi_safe=1
の消去
黒枠が出る原因はhdmi_safe=1
かもしれない。video.mdによるとhdmi_safe=1
にすると以下のような設定をしたのと同じらしい。
hdmi_force_hotplug=1 hdmi_ignore_edid=0xa5000080 config_hdmi_boost=4 hdmi_group=2 hdmi_mode=4 disable_overscan=0 overscan_left=24 overscan_right=24 overscan_top=24 overscan_bottom=24
このうち以下の部分が無駄な黒枠と思われる。
disable_overscan=0 overscan_left=24 overscan_right=24 overscan_top=24 overscan_bottom=24
その後にdisable_overscan=1
としているわけだが、黒枠が出てしまっていた。一旦設定した後にdisable
にしてもダメなのだろうか?
なら、必要なものと不要なものを選別して以下のようにしてみる。
[pi4] hdmi_force_hotplug=1 hdmi_ignore_edid=0xa5000080 disable_overscan=1 ...
再起動。ブート時のラズパイ画像からして高解像度で表示された。デスクトップも黒枠がなくなった上、1920x1080
の解像度になった。
ついに成功!
所感
やっとPi4Bにおける最低限のハードウェア動作確認ができた!
あとはソフトウェア的な問題だけだと思う。システム更新を待つなり有志の仕事を待つなりしてゆっくりやろう(他力本願)。ハードウェアの致命的な初期不良はなさそうで、とりあえず一安心。
とはいってもGPIO、I2C、BlueTooth、PoEについては未確認だが。
いつかすべての手順をキレイにまとめたい。
前回まで
ハード。
- Raspberry Pi 4B (4GB) を2個予約した(KSY先行予約販売)
- Raspberry Pi 4B 届いた! 開封の儀
- Raspberry Pi 4B ヒートシンク取付
- Raspberry Pi 4B ケース装着
- HDMIまちがえて買ってた……(type A, C, D の罠)
ソフト。
- RPI4B Raspbian Buster USB boot 未対応……
- Raspbian Buster 2019-09-26 インストール
- Raspbian Buster 2019-09-26 ダウンロード
- Raspbian Buster 2019-09-26 HDMI設定について調べた
- Raspbian Buster 2019-09-26 インストール前の設定(Wi-Fi)
設定。
- Raspbian Buster ヘッドレス 初期設定 できないか調べた
- Raspberry Pi 4B でSSHログインできた
- Raspberry Pi 4B 初期設定(ヘッドレス)
- Raspberry Pi 4B SDブート+USBルート(≒USB boot)に成功
- VNCからRaspbian Busterへログインする方法を調べる
- VNCからRPI4B Raspbian Busterを初期セットアップする
- VNCからRPI4B Raspbian Busterをセットアップする
企業。