Guide PS2 SMB: Use raspberry pi to load ps1 and ps2 games over SMB(+ Portability optimizations)

Joined
Nov 28, 2016
Messages
95
Likes
177
Location
United Arab Emirates
Portables
2
Hello everyone, This is my first guide for this community.
A small introduction into game loading methods of the ps2.
There are 3 loading methods for the ps2:

  1. USB method.
  2. HDD method.
  3. SMB method.
Usually, people opt to the USB method because of its simplicity, all you need to do is connect a USB slot from the PS2 motherboard and connect your USB drive to it. However there's a big downside to this method. You see, the PS2 is an old console, and it utilizes USB 1.1, and the reading speeds you could get from using the USB method is way slower than the PS2 reading from a disk, in fact, according to this thread, the USB slot speeds go up to 1.5MB/s, while the CD/DVD can go from 3.6MB/s to 5.28MB/s.

So what usually happens when you use the USB method?

  • Longer loading times.
  • Laggy in-game cutscenes in some games.
  • Not everygame is compatible.(Check the compatibility list here)
I personally have had long loading times with GTA SA.

However, USB is still an option if you dont mind those.
I wont get into HDD since it's not relevant to portablizing community.

The SMB method is the only method here that can give you the best results for portability game loading.
Reasons to use it:

  • max loading speeds.
  • Big compatibility list.(and still growing as the devs are doing a great job on that)
  • No stuttery cutscenes.
  • It supports a lot of USB drives that are hit or miss on the PS2 directly.
  • You can use your USB 3.0 drives!
  • Some games are larger than 4GB that wouldnt be compatible on a FAT32 usb drives except if you use some programs, This is eliminated by the usage of NTFS since the pi can read it, hence, letting the ps2 read it!
The main reason why i made this guide is because i wanted full compatibility with PS2 AND PS1 games.
I've had a lot of trouble with PS1 games being stubborn over SMB loading but i got it to work in the end.
So in this guide, ill teach you how to use the SMB method for your PS2 portable and optimize it for power efficiency and portability.

(NOTE: in this guide, i used the raspberry pi 4 since i had no other available, but it should work with the 2 and 3b+ as well! not sure of the others)



1. Installing the OS.

For the OS, i used the Offline and network NOOBS package provided by raspberrypi itself, it can be found here.
there are a lot of guides explaining how to get your OS started but here's a summary:

  1. Download the ZIP file.
  2. Extract it to your FAT32 SD card.
  3. put it in the pi, boot it up, and wait.
  4. After it finishes with it's necessities, Using the keyboard or a mouse, navigate to the WIFI tab and connect to your router(THIS IS NEEDED FOR THE GUIDE).
  5. After connecting to your WiFi, a couple of New OS options will appear, install the raspbian without Desktop, because we dont need it.
  6. after it finishes installing, you'll be thrown to the terminal where you need to be.
  7. You should see your IP address in the terminal somewhere along the lines, keep note of that.
  8. it will ask you for the login, type pi, and for the password type: raspberry.
That's all for the OS part, you can start the guide now.

2. Enable SSH:

SSH or Secure Shell, gives you the ability to control your Pi's terminal over your PC, well that's basically what you need to know.
First, we're going to enable SSH from the Pi, so this is the only part where we will be needing the keyboard on the pi.


  1. Enter "sudo raspi-config" in the terminal window
  2. Select "Interfacing Options"
  3. Navigate to and select "SSH"
  4. Choose "Yes"
  5. Select "Ok"
  6. Choose "Finish"

Now SSH is enabled!


3. PUTTY:

we're going to need a program that would help us control the pi over the network, and that program is called PUTTY, and can be downloaded here.

Now you can follow these steps:

  1. Enter your IP Address(If you dont know yours, type "sudo ifconfig" to show your IP in the pi) in the "Host Name" then press Enter.
  2. Select Yes to the security prompt that will appear.
  3. Login as: "pi"
  4. password: "raspberry" caps sensitive(when you type the password, no characters would appear and that's totally fine, Just press enter after finishing the password).
  5. Now you can control the pi from the PC without using a keyboard for the Pi!

4. Updating:

Before starting anything, we're going to make sure our pi is up to date:

  1. Type "sudo apt-get update && sudo apt-get upgrade" and press enter, then wait for the pi to finish updating the packages(The pi will ask you that some additional disk space will be used, you have to type "y" then press enter).
  2. Now Type "sudo reboot" to reboot the device then login again with PUTTY.

5. Setting a static IP Address:

1. First we want to enable DHCPCD just incase, Type this in the teminal:

-"sudo service dhcpcd" start, Then Enter.
-"sudo systemctl enable dhcpcd" Then Enter.

2. Now we're going to configure the dhcpcd.conf file to set our static IP address.

-Type "sudo nano /etc/dhcpcd.conf" then enter.

-Using the arrow key, go down until you find the "#interface eth0" line.

-remove the # before "interface eth0", "static ip_address=", "static routers=", and "static domain_name_servers=".

-In the static ip_address, we're going to put the desired static IP, in my case, the IP address that was given to my raspberry was 192.168.1.19, to avoid any problems with my router, im going to keep it the same, So im going to type this:
"ip_address=192.168.1.19/24".

-for the "static routers" line, it's the IP address of my current router, since my IP is 192.168.1.19, i need to keep the number following the 2nd dot the same(ex:192.168.->1<-.19), So im going to type this(NOTE: IT COULD BE DIFFERENT FOR YOU):
"static routers=192.168.1.1"

-As for the "static domain_name_servers=" line, Keep it the same as the "static routers" line, so im going to type:
"static domain_name_servers=192.168.1.1"

-Now press CTRL+X, Type "y", then Enter, That should save the file.

-Now Type "sudo reboot" to reboot the device.

-After the restart, if it was successful, you will see the static IP that you assigned on the Pi!(If your pi isnt connected to a display, power your pi and wait for 30 seconds, then try to login to the pi using PUTTY, by typing your static ip address that you assigned!).

6. Auto mounting USB drives:

Before mounting the USB, We're going to make sure that there's support for NTFS USBs:
Type "sudo apt-get install ntfs-3g" and then press enter to install it.

-First, format your desired USB to NTFS and change it's Lable to PS2 for convinience(I'm using 64GB USB drive).

-Make a folder called PS2SMB in root of the drive, this is where everything will go.

-Now connect your newly formatted USB drive to any USB slot on the raspberry pi.


-Now we want to list all the attached drives on our raspberry pi, Enter this command:
"sudo fdisk -l" then press enter, scroll to the bottom and find your drive, i found my drive:
Device Boot Start End Sectors Size Id Type
/dev/sda1 32 122508543 122508512 58.4G 7 HPFS/NTFS/exFAT
make sure you find yours!

-Next we’re going to create a directory within our /media/ folder to mount our drive into, and also a sub-directory within it so that the ps2 can connect to it.

-Type "sudo mkdir /media/USBD" then press enter.


-Type "sudo mkdir /media/USBD/PS2SMB" then press enter.


-After that, we want to ensure that we have the full access to the directory:


-Type "sudo chmod -R 777 /media/USBD/PS2SMB"


-Next, we want to mount our external drive into that new directory

-Type "sudo mount -t auto /dev/sda1 /media/USBD" then press enter.

-At this point, the USB has been properly mounted and it should be detected by the ps2 after some configuration(later on the guide), but we want our USB to be automatically mounted everytime we reboot or reinsert the USB:
-Type "sudo nano /etc/fstab" then press enter.



-Add the following line to the bottom of the config file:
"/dev/sda1 /media/USBD auto nofail,noatime 0 0 "

#UPDATE:
-Type: "cd opt/ && sudo mkdir automount && cd automount/ && sudo nano automount.py".

-Now paste this script:

Python:
#!/bin/python3
import subprocess
import time

MOUNT_PATH = '/media/USBD/'

def mount_check():
    resault = subprocess.check_output('lsblk -o mountpoint -lpn', shell = True).decode()
    return True if 'USBD' in resault else False

def usb_name():
    out = subprocess.run( 'ls /dev/sd*', shell = True,
        stdout=subprocess.PIPE,
        stderr=subprocess.PIPE, encoding='utf-8')
    out = out.stdout[-5:-1] if out.returncode != 2 else 'usb_out'
    print(out)
    return out

def usbflash_check_and_mount():
    while True:
        if mount_check() == False:
            usb = usb_name()
            if 'sd' in usb and '/' not in usb:
                print(f"mount {usb}")
                _ = subprocess.Popen(f'sudo mount /dev/{usb} {MOUNT_PATH}', shell = True)
        time.sleep(1)

if __name__=='__main__': usbflash_check_and_mount()
(make sure of the indentation).

-Now press CTRL+X, then press "y", then enter to save the file.

-We have successfully created a script, however, we would like the script to auto run at boot so that ANY drive gets mounted to our directory.

-Type: "sudo crontab -e", Then paste this in: " @reboot python3 /opt/automount/automount.py " at the end of the file

-Now press CTRL+X, then press "y", then enter to save the file.

Now any usb plugged at boot will get properly mounted for the PS2!

(NOTE: swapping out USBs will not get it mounted anywhere, only swap when the system is off.)

7. Installing SAMBA:

-Login to the pi using PUTTY as before for terminal convinience.


-Now we're going to install SAMBA:

-Type "sudo apt-get install samba samba-common-bin" then press enter(type "y" when it asks for additional space and then press enter.
-You're going to be prompted with a blue screen about samba server and utilities, select No then press enter.


-Before we edit Samba, Lets create a backup copy:
-Type "sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.old" Then press enter.


-Now, we need to configure Samba to share the PS2SMB file we made so that it can be read by the PS2 via OPL. Enter the following command:
-"sudo nano /etc/samba/smb.conf" then press enter.


-Navigate to the bottom by using the arrow down key so we can create our own configuration.


-Create another section just below the last line that looks like this(press enter to create a new line):
[PS2SMB]
comment = PS2SMB
path = "/media/USBD/PS2SMB"
writeable = yes
guest ok = yes
create mask = 0777
directory mask = 0777
force user = pi

-Now press CTRL+X, then press "y", then enter to save the file.


-And finally, you’ll want to restart your Samba.
-Type "sudo systemctl restart smbd" then press enter.

Now we're done with the raspberry pi part, so hook it up with an ethernet cable to the PS2 normally.


8. Setting up OPL:

Assuming you have FMCB and OPL:
  1. Navigate to OPL's menu by pressing Start.
  2. Select Network Config.
  3. Under PS2, Change the IP Address type from DHCP to Static so that we always have the same IP.
  4. My settings are as follows:
-IP Address: 192.168.1.10 (KEEP THE NUMBER AFTER THE SECONDS DOT CONSISTANT, in my case it's 1).
-for the Mask, Leave it as 255.255.255.0
-Gateway i kept it as 192.168.1.1
-DNS server is the same 192.168.1.1(Notice the 1, it can be 0 in your case)

5. Now for the settings under the SMB server:

-Change the Address Type to IP
-Change the Address to your raspberry pi's address, in my case it's 192.168.1.19
-Leave the port.
-In the Share, change it to PS2SMB(The directory where our games will be).
-In the User, change it to guest.
-The password is Not set


Press OK and don't forget to save the changes!

With these settings, you'll be able to play PS2 games over SMB, congratulations!

However, you still wont be able to play PS1 games over SMB, so lets get that sorted out.


9. Setting up POPStarter over SMB:

-Firstly, we need to get the right files, go to this website and get the latest POPStarter.

-For ps1 games to run using SMB, it needs special files, They're the Network modules and can be downloaded from here.

-Now we need to edit the modules and tell it to connect to the right address, extract the file called POPSTARTER from the network modules's Zip folder, and lets start editing(Note: i'll be using NotePad+ + to edit the files, and i highly recommend it for you):

- Right click on the file called SMBCONFIG.DAT and edit with Notepad++.
- Here's the format:
[SERVER IP ADDRESS] space [SHARE NAME]
So in my case:
192.168.1.19 PS2SMB
-Save the changes and close the file, time to edit the other file called IPCONFIG.DAT:
-Here's the format:
[PS2 IP ADDRESS] space [MASK] space [GATEWAY]
So in my case:
192.168.1.10 255.255.255.0 192.168.1.1


-Well that's all you had to edit!

-Now we need to copy the POPSTARTER folder to the FMCB memory card, so we'll be using a USB to transfer POPSTARTER to it!

-Copy POPSTARTER to a USB compatible with the PS2, and plug it to the PS2(Make sure the USB is FAT32 formatted so it gets recognized)

-open uLaunchelf, The press Circle to access the filebrowser.

-Navigate to mass and access it, it's your USB, you'll find the POPSTARTER folder, Press R1 and copy it.

-Navigate back and access MC0:/ (or MC1:/ if your FMCB memory card is in the second slot), now that you're in the root of the FMCB, paste it there. That's it for the POPSTARTER folder, you can remove the USB.

-Now we need to get a file called POPS_IOX.PAK, i cannot link it for, reasons... Just search it up on google and download it.

-Returning to the USB that will be used for the SMB, plug it in your PC, and navigate to the PS2SMB folder we made earlier and make a new folder called POPS(Near the CD, and DVD folders).

-Here, you'll put POPSTARTER.ELF(we downloaded earlier), and POPS_IOX.PAK which you downloaded.

-You'll also be storing your VCD PS1 games here.(there are a lot of guides that help you convert ps1 games for OPL to use.)

Now when you go to OPL, you'll see your PS1 games normally, start a game to check if your process was successful!

That's all there's to it for gaming over SMB for PS1 and PS2 games!


10. Portability optimizations:

For portability optimisations, i will mainly be focusing on energy efficiency and how to reduce power consumption slightly.

With my raspberry pi 3b+ i used in my ps2 portable, after the optimisations, the pi ran at 350ma at 5v.

-Now we will disable HDMI since it doesnt serve us in the portable:
-Type "sudo /opt/vc/bin/tvservice -o" and press enter.

-Now for disabling Bluetooth, as it serves us no purpose:

-Type "sudo nano /boot/config.txt" and press enter to edit the file.

-Navigate to the bottom using the down arrow key and add the following lines:
dtoverlay=pi3-disable-bt

-(Optional) If you want to disable Wifi, in which i did, add this line as well after the bluetooth line:
dtoverlay=pi3-disable-wifi

(NOTE: I do not recommend disabling the WiFi initially, only do it after you finished your portable and sure that you don’t need to use the terminal anymore, trust me on this one. )

Now you have a portable ready pi for the most compatibile ps2 portable you'll make!

Here's my ps2 portable that i made using this method!

https://bitbuilt.net/forums/index.php?threads/the-playstation-shield.3346/

11. Bonus:

If you want to use OPL manager for your games naming, Art,etc.. :

-When you launch OPL manager and it asks you for the directory of the USB, we can actually use SMB here as well, so press on Yes to manually type a path.

-In the path, type in this format:
-\\IPADDRESS\PS2SMB
-So in my case:
-\\192.168.1.19\PS2SMB

And your OPL should recognize it, However, if you disabled your Wifi from the optimizations section, you can just remove the USB from the pi and connect it to the PC as usual.



Enjoy portablizing your ps2!

------------------------------
#UPDATE:

-Fixed the mounting issue that made the pi only ever mounts one drive.
 
Last edited:
Top