Macintoshを小さいサイズにしてラズパイでエミュレートするYouTubeの映像を観て面白かったので,どこまで出来そうか調査してみることにした(記事で作製紹介している人はこちら)
まず小さいデスクトップを用意する必要があるため,SPI接続のラズパイ用3.5inchLCD(SPI 125MHz対応版)を購入


Aliexpressで購入したわりには,かなりしっかりした包装と箱入りで中身もちゃんとしていた


説明書もありラズパイZERO2にてセットアップしてみたのだが・・・

現時点での最新RPiOSは対応されていないようなので1つ前の「Bookworm」の32Bit版で試行したところ,イメージ表示されるだけで,デスクトップ環境(X11)はエラーとなって動作しない
当初これを「ILI9431」だと思って(こちらなど)ネット情報を参考にして手動設定していたところ上手くいかず途中で「ILI9486」であることに気付く
そしてこの商品と同等であるようなので情報検索したところ現状では「bullseye-armhf」でないと正常動作しないとのこと
ようやく「3.5inch RPi Display」に辿り着きX11を起動できた

使用イメージ)MPI3501-3.5inch-2025-05-06-raspios-bullseye-armhf(Legacy)(Pi0-Pi3-Pi4).img
画面は上下変更(デフォが90度回転で270度回転している)ただしタッチ系が変更できず座標が逆になっている
※)後で「MHS-3.5inch RPi Display」を見つけた(イメージは同じだと思うがDLサイズ制限になったため確認できず)
しかし「2023-05-03-raspios-bullseye-armhf.img」でセットアップしたが動作不良
これはマニア向けの厳しい製品である
記録
waveshare製ということで試したサイト
https://www.waveshare.com/wiki/3.5inch_RPi_LCD_(A)
https://www.waveshare.com/wiki/3.5inch_RPi_LCD_(A)_Manual_Configuration
A,B,Cと3タイプあるそうだ
https://raspida.com/waveshare-install-lcd35/
タイプBでは無いのでA,Cを試したがConsoleのテキストしか表示されない(画面としてのドライバは良いがX11は不可ということ)
追加
「2023-05-03-raspios-bullseye-armhf.img」では,xinitが正常に起動していなかったので.bash_profileを修正して動作を確認
$ git clone https://github.com/goodtft/LCD-show.git
$ chmod -R 755 LCD-show
$ cd LCD-show/
$ sudo ./MHS35-show
$ sudo raspi-config nonint do_boot_behaviour B2
(.bash_profileの修正)
Bookworm,TrixieはSPI経由のイメージは出せるがWindowSystemとしては動作させられていない
タッチペンのキャブレーションも未決
主な設定ファイル
・/boot/config.txt
hdmi_force_hotplug=1
dtparam=i2c_arm=on
dtparam=spi=on
enable_uart=1
dtoverlay=mhs35:rotate=270
hdmi_group=2
hdmi_mode=1
hdmi_mode=87
hdmi_cvt 480 320 60 6 0 0 0
hdmi_drive=2
tft35a,waveshare35a,waveshare35cでも動作する
・/usr/share/X11/xorg.conf.d/99-fbturbo.conf
Section "Device"
Identifier "Allwinner A10/A13/A20 FBDEV"
Driver "fbturbo"
Option "fbdev" "/dev/fb0"
Option "SwapbuffersWait" "true"
EndSection
・auto-login設定
$ sudo raspi-config nonint do_boot_behaviour B2
$ sudo raspi-config nonint do_wayland W1
・~/.bash_profile
if [ "`tty`" = '/dev/tty1' ]
then
export FRAMEBUFFER=/dev/fb1
startx 2> /tmp/xorg_errors
fi
・/etc/X11/xorg.conf.d/40-libinput.conf
$ sudo ./rotate.sh 180
設定ファイルで角度が異なるため自動設定を利用するのが良い
0でラズパイの電源コネクタが下になる
MHS35-showでも指定可能
・キャリブレーション
$ cd LCD-show
$ sudo dpkg -i -B xinput-calibrator_0.7.5-1_armhf.deb
(画面上で操作)
$ sudo vi /etc/X11/xorg.conf.d/99-calibration.conf
自動で実行されないので手動となる


現状は出力されたキャリブレーションデータでは正常にならない
・fbcp
$ cd LCD-show
$ sudo mkdir rpi-fbcp/build
$ cd rpi-fbcp/build/
$ sudo cmake ..
$ sudo make -j4
$ sudo install fbcp /usr/local/bin/fbcp
SPI_BUS_CLOCK_DIVISOR=8 (250MHz/8=31.25MHz)
$ sudo cmake -DSPI_BUS_CLOCK_DIVISOR=8 .. #31.25MHz
$ sudo cmake -DSPI_BUS_CLOCK_DIVISOR=4 .. #62.5MHz
$ sudo cmake -DSPI_BUS_CLOCK_DIVISOR=2 .. #125MHz
32bit版bullseyeでのみ可能
125MHzだと表示が早いのが判る
追加2:retropie
retropieを動作させたが大変だった

bullseyeへLCDをセットアップした後,retropieをセットアップしようとするとビルドが完了しないので動作しない
retropieを「Raspberry Pi Imager」で作るとバージョンがBusterなのでLCDのセットアップができない
更にBusterだと既にレポジトリから日本語FONTが不可
そこで「Raspberry Pi Imager」で出来たretropieをbullseyeにアップしてretropieを再構築したら動作した
(日本語FONT)
$ sudo apt install fonts-droid-fallback
(ビルドに必要なライブラリ)
$ sudo apt insatall libcurl4-openssl-dev libvlc-dev libvlccore-dev rapidjson-dev libfreeimage-dev
omxplayerのライブラリは「omxplayer_20190723+gitf543a0d-1+bullseye_armhf.deb」をDLしてインストールする
追加3:Bookworm
こちらを参考にBookworm(64bit版)でLCDをセットアップしようとした記録(結果は不可)
問題となるのがファームウェアのビルドで「ili9341.txt」の数値の意味が理解できなかったが,ILI9486のデータシートでLCDへの初期化コードであることが判る
そしてデータシートには3種あるので全て試してみたが結果は不可
/boot/firmware/cmdline.txtにwayland=onを追加(Pi4以前では必要)
/boot/firmware/config.txtに以下を追加
dtoverlay=mipi-dbi-spi,spi0-0,speed=70000000
dtparam=width=480,height=320
dtparam=reset-gpio=25,dc-gpio=24
panel.binを作成するテキスト(3種)
# CPT 3.5 Inch Panel
command 0x01
delay 120
command 0xf2 0x18 0xa3 0x12 0x02 0xb2 0x12 0xff 0x10 0x00
command 0xf8 0x21 0x04
command 0xf9 0x00 0x08
command 0x36 0x28
command 0xb4 0x00
command 0xc1 0x41
command 0xc5 0x00 0x53
command 0xe0 0x0f 0x1b 0x18 0x0b 0x0e 0x09 0x47 0x94 0x35 0x0a 0x13 0x05 0x08 0x03 0x00
command 0xe1 0x0f 0x3a 0x37 0x0b 0x0c 0x05 0x4a 0x24 0x39 0x07 0x10 0x04 0x27 0x25 0x00
command 0x20
command 0x11
delay 120
command 0x29
# HSD 3.5 Inch Initial code
command 0x01
delay 120
command 0xf2 0x18 0xa3 0x12 0x02 0xb2 0x12 0xff 0x10 0x00
command 0xf8 0x21 0x04
command 0xf9 0x00 0x08
command 0x36 0x08
command 0xb4 0x00
command 0xb6 0x02 0x22
command 0xc1 0x41
command 0xc5 0x00 0x18
command 0xe0 0x0f 0x1f 0x1c 0x0c 0x0f 0x08 0x48 0x98 0x37 0x0a 0x13 0x04 0x11 0x0d 0x00
command 0xe1 0x0f 0x32 0x2e 0x0b 0x0d 0x05 0x47 0x75 0x37 0x06 0x10 0x03 0x24 0x20 0x00
command 0x20
command 0x11
delay 120
command 0x29
# WTK 3.5 Inch Initial code
command 0x01
delay 120
command 0xf2 0x18 0xa3 0x12 0x02 0xb2 0x12 0xff 0x10 0x00
command 0xf8 0x21 0x04
command 0xf9 0x00 0x08
command 0x21
command 0x36 0x08
command 0xb4 0x00
command 0xb6 0x02 0x22
command 0xc1 0x41
command 0xc5 0x00 0x53
command 0xe0 0x0f 0x10 0x08 0x05 0x09 0x05 0x37 0x98 0x26 0x07 0x0f 0x02 0x09 0x07 0x00
command 0xe1 0x0f 0x38 0x36 0x0d 0x10 0x08 0x59 0x76 0x48 0x0a 0x16 0x0a 0x37 0x2f 0x00
command 0x20
command 0x11
delay 120
command 0x29
ILI9486はmipi-dbi-spiで共通化できてないのかも