#|===========================================================================| #| | #| MSXPi Interface | #| | #| Version : 1.1 | #| | #| Copyright (c) 2015-2023 Ronivon Candido Costa (ronivon@outlook.com) | #| | #| All rights reserved | #| | #| Redistribution and use in source and compiled forms, with or without | #| modification, are permitted under GPL license. | #| | #|===========================================================================| #| | #| This file is part of MSXPi Interface project. | #| | #| MSX PI Interface is free software: you can redistribute it and/or modify | #| it under the terms of the GNU General Public License as published by | #| the Free Software Foundation, either version 3 of the License, or | #| (at your option) any later version. | #| | #| MSX PI Interface is distributed in the hope that it will be useful, | #| but WITHOUT ANY WARRANTY; without even the implied warranty of | #| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | #| GNU General Public License for more details. | #| | #| You should have received a copy of the GNU General Public License | #| along with MSX PI Interface. If not, see . | #|===========================================================================| # # File history : # 0.1 : Initial version. #!/bin/sh MSXPIHOME=/home/pi/msxpi MYTMP=/tmp RMFILES=true ssid="notNeeded" SN="N" echo "To configure the WiFi interface using this tool, remove the comment to the next line and run it again" #echo "Do you want to configure Wifi now ? "; read SN if [ ${SN} = "Y" -o ${SN} = "Yes" -o ${SN} = "YES" -o ${SN} = "yes" -o ${SN} = "y" ]; then echo "Enter your WIFI Netowrk name:"; read ssid echo "Enter your WIFI Network password:"; read psk echo "Confirm this info?" echo "WIFI SSID:$ssid" echo "WIFF Password:$psk" echo "Yes or No ?" read confirm if [ "x$confirm" = "xYes" ];then echo "Starting setup..." # ---------------------------------------------------------- # Configure Wireless network with provided SSID and Password # ---------------------------------------------------------- sudo cat </etc/wpa_supplicant/wpa_supplicant.conf country=GB ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev update_config=1 network={ ssid="myssid" psk="mypsk" } EOF else echo "Interrupting setup" exit 1 fi fi # ------------------------------------------ # Install libraries required by msxpi-server # ------------------------------------------ sudo apt-get update sudo apt-get -y install python3-full python3 python3-pip alsa-utils music123 smbclient html2text libcurl4-nss-dev mplayer pigpio lhasa unar python3 -m pip install --upgrade pip --break-system-packages # ------------------------- # Enable remote ssh into Pi # ------------------------- sudo touch /boot/ssh # ------------------------------------------- # Create msxpi directory and link on home dir # ------------------------------------------- mkdir -p $MSXPIHOME/disks > /dev/null 2>&1 chown -R pi:pi $MSXPIHOME ln -s $MSXPIHOME /home/msxpi > /dev/null 2>&1 # ------------------------------------------ # Install msxpi-monitor service for systemd # ------------------------------------------ # remove deprecated msxpi-server startup config sudo systemctl disable msxpi-server > /dev/null 2>&1 rm /lib/systemd/system/msxpi-server > /dev/null 2>&1 # Install new controller / monitor cd $MSXPIHOME rm msxpi-monitor > /dev/null 2>&1 wget -q --show-progress --no-check-certificate https://raw.githubusercontent.com/costarc/MSXPi/master/software/Server/Shell/msxpi-monitor chmod 755 $MSXPIHOME/msxpi-monitor cat </tmp/msxpi-monitor.service [Unit] Description=Monitor MSXPi Server control Process [Service] User=pi WorkingDirectory=/home/pi/msxpi ExecStart=/home/pi/msxpi/msxpi-monitor [Install] WantedBy=multi-user.target EOF sudo mv /tmp/msxpi-monitor.service /lib/systemd/system/msxpi-monitor.service sudo chmod 755 /lib/systemd/system/msxpi-monitor.service > /dev/null 2>&1 sudo systemctl daemon-reload > /dev/null 2>&1 sudo systemctl enable msxpi-monitor > /dev/null 2>&1 # -------------------------------------------------- # Configure PWM (analog audio) on GPIO18 and GPIO13 # -------------------------------------------------- # Disabled - requires addon audio interface #echo "dtoverlay=pwm-2chan,pin=18,func=2,pin2=13,func2=4" >> /boot/config.txt # -------------------------------------------------- # Configure Audio over USB Card # A USB audio dongle must be connected to RPi # -------------------------------------------------- echo "Configuring Audio to second Audio Interface (for USB Cards)" cp /usr/share/alsa/alsa.conf $MSXPIHOME/alsa.conf.bak sudo sed -ri 's/defaults.ctl.card 0/defaults.ctl.card 1/' /usr/share/alsa/alsa.conf sudo sed -ri 's/defaults.pcm.card 0/defaults.pcm.card 1/' /usr/share/alsa/alsa.conf # this requires the usb sound card to be plugged or it will thrown an error. # In that case, this command need to be executed later when the sound card is plugged in. sudo amixer cset numid=3 1 # Download msxpi-server components cd $MSXPIHOME rm msxpi.ini.new > /dev/null 2>&1 rm msxpi-server.py > /dev/null 2>&1 rm $MSXPIHOME/pplay.sh > /dev/null 2>&1 rm $MSXPIHOME/kill.sh > /dev/null 2>&1 rm $MSXPIHOME/disks/msxpiboot.dsk > /dev/null 2>&1 rm $MSXPIHOME/disks/tools.dsk > /dev/null 2>&1 wget -q --show-progress --no-check-certificate https://raw.githubusercontent.com/costarc/MSXPi/master/software/Server/Python/msxpi-JumperLeft.ini wget -q --show-progress --no-check-certificate https://raw.githubusercontent.com/costarc/MSXPi/master/software/Server/Python/msxpi-JumperRight.ini wget -q --show-progress --no-check-certificate https://raw.githubusercontent.com/costarc/MSXPi/master/software/Server/Python/msxpi-JumperRight_PCBV1.1Rev.0 wget -q --show-progress --no-check-certificate https://raw.githubusercontent.com/costarc/MSXPi/master/software/Server/Python/src/msxpi-server.py wget -q --show-progress --no-check-certificate https://raw.githubusercontent.com/costarc/MSXPi/master/software/Server/Shell/kill.sh wget -q --show-progress --no-check-certificate https://raw.githubusercontent.com/costarc/MSXPi/master/software/Server/Shell/pplay.sh wget -q --show-progress --no-check-certificate https://github.com/costarc/MSXPi/raw/master/software/target/disks/msxpiboot.dsk wget -q --show-progress --no-check-certificate https://github.com/costarc/MSXPi/raw/master/software/target/disks/tools.dsk cp msxpi-JumperLeft.ini msxpi.ini mv msxpiboot.dsk $MSXPIHOME/disks/ mv tools.dsk $MSXPIHOME/disks/ chmod 755 $MSXPIHOME/msxpi-server.py chmod 755 $MSXPIHOME/pplay.sh chmod 755 $MSXPIHOME/kill.sh rm $MSXPIHOME/MSXPi-Setup > /dev/null 2>&1 # Install Additional Python libraries required by msxpi-server # Define virtual environment path in user's home directory sudo python3 -m pip install fs pyfatfs --break-system-packages # Apply dirty patch for it to work with MSX Disk images # Get the current Python major.minor version (e.g., 3.11) pyver=$(python3 -c 'import sys; print(f"{sys.version_info.major}.{sys.version_info.minor}")') pyFatPath="/usr/local/lib/python${pyver}/dist-packages/pyfatfs/PyFat.py" sudo sed -i "s/if signature != 0xaa55/#if signature != 0xaa55/" $pyFatPath sudo sed -i "s/raise PyFATException(f\"Invalid signature:/#raise PyFATException(f\"Invalid signature:/" $pyFatPath # changes to prevent sd corruption # disable swap sudo dphys-swapfile swapoff sudo dphys-swapfile uninstall sudo update-rc.d dphys-swapfile remove sudo apt autoremove sudo systemctl stop msxpi-monitor sudo systemctl start msxpi-monitor sudo reboot