Start with an Armbian image 24.2.1 Jammy Gnome image available here:
https://www.armbian.com/orangepi-5/
sudo add-apt-repository ppa:liujianfeng1994/panfork-mesa
sudo add-apt-repository ppa:liujianfeng1994/rockchip-multimedia
sudo apt update
sudo apt dist-upgrade
sudo apt install mali-g610-firmware rockchip-multimedia-configsudo rebootsudo apt-get -y install mtools ncdu build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev wgetcurl https://raw.githubusercontent.com/UnconnectedBedna/shrink-backup/main/shrink-backup > shrink-backup
chmod +x shrink-backup
sudo mv shrink-backup /usr/local/binsudo apt-get -y install libsdl2-dev libsdl2-ttf-dev libsdl2-image-dev libsdl2-mixer-dev gstreamer1.0-plugins-base gstreamer1.0-plugins-base gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly libgstreamer1.0-dev libxine2-ffmpeg libsmpeg-dev libswscale-dev libavformat-dev libavcodec-dev libavdevice-dev libavfilter-dev libjpeg-dev libtiff5-dev libx11-dev libmtdev-dev libgl1-mesa-dev libgles2-mesa-dev pulseaudio lsb-releasesudo apt-get -y install python3 python3-pip python3-devsudo python3 -m pip install --upgrade pipsudo pip3 install mpf==0.57.0
sudo pip3 install mpf-mc==0.57.0(Adapted from https://docs.missionpinball.org/tutorial/2_creating_a_new_machine.html)
mkdir your_machine
cd your_machine
mkdir config
echo "#config_version=6" > config/config.yaml
mpf -b(Adapted from https://doc.qt.io/qt-6/linux-building.html and https://www.ics.com/blog/how-build-qt-640-source-ubuntu-linux)
sudo apt install -y cmake bison build-essential clang flex gperf libatspi2.0-dev libbluetooth-dev libclang-dev libcups2-dev libdrm-dev libegl1-mesa-dev libfontconfig1-dev libfreetype6-dev libgstreamer1.0-dev libhunspell-dev libnss3-dev libopengl-dev libpulse-dev libssl-dev libts-dev libx11-dev libx11-xcb-dev libxcb-glx0-dev libxcb-icccm4-dev libxcb-image0-dev libxcb-keysyms1-dev libxcb-randr0-dev libxcb-render-util0-dev libxcb-shape0-dev libxcb-shm0-dev libxcb-sync-dev libxcb-util-dev libxcb-xfixes0-dev libxcb-xinerama0-dev libxcb-xkb-dev libxcb1-dev libxcomposite-dev libxcursor-dev libxdamage-dev libxext-dev libxfixes-dev libxi-dev libxkbcommon-dev libxkbcommon-x11-dev libxkbfile-dev libxrandr-dev libxrender-dev libxshmfence-dev libxshmfence1 llvm llvm-dev ninja-build nodejs python-is-python3 python3
Takes about 2 hours
wget https://download.qt.io/archive/qt/6.4/6.4.2/single/qt-everywhere-src-6.4.2.tar.xz
tar xvf qt-everywhere-src-6.4.2.tar.xz
cd qt-everywhere-src-6.4.2
./configure -prefix /usr/local/Qt6
cmake --build . --parallel
sudo cmake --install .
cd ..
sudo rm -rf qt-everywhere-src-6.4.2
rm qt-everywhere-src-6.4.2.tar.xzThis takes about 1 hour
Required because PyQt6 is asking questions that can't be answered during pip3
sudo PATH=/usr/local/Qt6/bin:$PATH pip3 install PyQt6 PyQt6==6.4.2 --config-settings --confirm-license= --verbosesudo pip3 install "mpf-monitor==0.57.0"Mount a USB drive large enough to hold an image. The drive will be a directory in the /media folder
cd /media/mpf/8e1b6305-8346-49ca-8f51-7fe5a705fe37
sudo shrink-backup -a -l mpf_0-57-0_001.imgssh -l mpf <ipaddress>
sudo armbian-config System -> Desktop -> Stop and Disable this service
Desktop -> Do you want to enable autologin? (YES)
Make a new mpf.desktop and place it in /home/mpf/.config/autostart.
Replace <machine> with the folder containing your machine.
[Desktop Entry]
Name=MPF
Comment=Mission Pinball
Exec=/home/mpf/<machine>/run.sh
Path=/home/mpf/<machine>/
Terminal=false
Type=ApplicationCreate a run.sh in the folder containing your machine.
Replace <machine> with the folder containing your machine.
#!/bin/bash
gnome-terminal -- bash -c "cd /home/mpf/<machine> && mpf both"Make run.sh executable:
chmod +x run.shSettings -> Power ->
Power Saving Option:
Dim Screen: OFF
Screen Blank: Never
Automatic Suspend: OFF
Suspend & Power Button:
Power Button Behavior: Power Off
Install Chrome GNome Shell
sudo apt-get install chrome-gnome-shellInstall GNome Shell Integration extension in Chromium
Search for and enable Hide Top Bar
Since you are such a nice person. :)
If you still want to rely on this instead of the script, change bs to
4M, goes way faster (it is the size of each packet sent to the device). You can also addstatus=progressto make it verbose. :)Otherwise this looks like a great install procedure.