Skip to content

Instantly share code, notes, and snippets.

@indraAsLesmana
Last active October 26, 2025 08:57
Show Gist options
  • Save indraAsLesmana/69f0619402ee9ca1dd83df75220ae366 to your computer and use it in GitHub Desktop.
Save indraAsLesmana/69f0619402ee9ca1dd83df75220ae366 to your computer and use it in GitHub Desktop.
PS2 UDPBD Server on ARM XEB+
install:
pull project https://github.com/israpps/udpbd-server
cd udpbd-server/
make
install .NET 8.0 for arm:
sudo apt update
sudo apt install -y curl libssl-dev libicu-dev libkrb5-dev zlib1g
curl -sSL https://dot.net/v1/dotnet-install.sh | bash /dev/stdin --channel 8.0 --runtime dotnet
echo 'export DOTNET_ROOT=$HOME/.dotnet' >> ~/.bashrc
echo 'export PATH=$PATH:$HOME/.dotnet' >> ~/.bashrc
source ~/.bashrc
dotnet --info
create service deamon:
1. create script
nano ps2_server.sh
#!/usr/bin/env bash
# This script is non-interactive.
# It requires a disk name as an argument.
# Usage: ./start_ps2_daemon.sh sda
# --- Configuration ---
SERVER_BINARY="udpbd-server"
# ---------------------
# Find the directory this script is in
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
SERVER_PATH="$SCRIPT_DIR/$SERVER_BINARY"
# --- Main Logic ---
# 1. Check if an argument (disk name) was provided
DISK_NAME="$1"
if [ -z "$DISK_NAME" ]; then
echo "Error: No disk name provided."
echo "Usage: $0 <disk_name> (e.g., $0 sda)"
exit 1
fi
# 2. Check if the server executable exists
if [ ! -x "$SERVER_PATH" ]; then
echo "Error: Server executable not found at: $SERVER_PATH"
exit 1
fi
# 3. Construct the full disk path
SELECTED_DISK="/dev/$DISK_NAME"
# 4. Validate if the path is a real block device
if [ ! -b "$SELECTED_DISK" ]; then
echo "Error: '$SELECTED_DISK' is not a valid block device."
exit 1
fi
# 5. If all checks pass, start the server
echo "Starting PS2 server for disk: $SELECTED_DISK"
echo "Command: $SERVER_PATH $SELECTED_DISK"
# 'exec' replaces this script with the server process.
# This is the standard way to launch a daemon.
exec "$SERVER_PATH" "$SELECTED_DISK"
register as deamon:
chmod +x ps2_server.sh
sudo nano /etc/systemd/system/ps2server.service:
[Unit]
Description=PS2 udpbd Server
After=network.target
[Service]
Type=simple
# This is the path from your 'pwd' command
WorkingDirectory=/root/udpbd-server
# This is the full path to your script
#
# !!! IMPORTANT !!!
# Change 'sda' here if you want to use a different disk (e.g., sdb)
ExecStart=/root/udpbd-server/start_ps2_server_nointerac.sh sda
# The script is in the /root directory, so it must run as root
User=root
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl start ps2server.service
sudo systemctl status ps2server.service
scan game, see drive mount point via lsblk, than scan:
run uLauch on PS2 start ftp server PS2NET:
download: https://github.com/MegaBitmap/UDPBD-for-XEBP/releases/tag/2.9.4.2
copy to server, inside that project folder:
run on server:
dotnet UDPBD-for-XEB+-CLI.dll -path /media/devmon/PS2-UDPBD -ps2ip 192.168.2.13 -bin2iso
restart server.
sudo systemctl restart ps2server.service
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment