Batocera for PS4 v1: Turn your PS4 into an Emulation Station

A detailed tutorial to install Batocera on PS4, transfer BIOS, ROMs, etc., automatic WiFi, setup DualShock 4 and access terminal through SSH.

Since the beginning of this endeavour, I have had requests from many for a Batocera port for PS4. If you were one of them looking forward to it, today’s the day your dream comes true. After a lot of modifications, I have been able to bring Batocera to PS4. So, with this, you can easily convert your PS4 into a gaming arcade, letting you emulate NES, N64, PSX, PSP and more on your PS4.

That being said, please note that, this port can be considered a late beta release and might have some issues on some models, especially PS4 Pro. Rest assured, these will be fixed in the upcoming updates. But, that also depends on the feedback you guys give me. Moreover, building Batocera requires resources. I have been able to build this port thanks to the generous donations of some members. Special mention goes to Reo Au In, jvlj and nano. And, if you would like to support these projects, please consider donating on Ko-fi.

Anyways, in this article, I am going to teach you how you could install Batocera on PS4 and set up games, ROMs and even wireless controllers including the DualShock 4.

Before we move further, I would also like to thank Reo Au In for his donation that helped me procure the resources for this project on time.

UPDATE (27th July, 2024) – Batocera 40 for PS4 released.

What is Batocera?

Now many of you may be unaware of this awesome emulation OS. So, here is how the official page defines it:-

Batocera.linux is an open-source and completely free retro-gaming distribution that can be copied to a USB stick or an SD card with the aim of turning any computer/nano computer into a gaming console during a game or permanently.

In simpler terms, Batocera is a Linux based OS bundled with multiple emulators including RPCS3, PCSX2, Libretro, Dolphin, and many more allowing you to emulate almost any older generation game out there.It goes without saying that you need to own these games to be able to play them legally. Moreover, the law of the land has to be kept in mind. Anyways, adding to its positives, the OS also comes with a very neat interface and almost every part of it is easily customisable.

Now that you know what Batocera is, let us look into Batocera for PS4.

Screenshots: Batocera for PS4

Requirements

Linux Machine

I recommend an Ubuntu-based distro, like Lubuntu or even Pop OS. You can try this on Fedora or Arch based distros, but, Batocera might fail to boot if this process is done on an Arch or Fedora-based distro. Moreover, for the installation, you don’t have to install Linux on your PC permanently, even a LiveCD on a virtual machine will work.

USB drive

I recommend having atleast 100GB of storage. The OS in itself takes some space. On top of that, you will also have to factor in the space required for your games and ROMs. And, keeping the speed factor in mind, I recommend having an SSD (external or internal with an adaptor). You may check my equipment page for the best SSDs and equipment for running PS4 Linux.

Note: Please be warned that the installation process will wipe the USB drive. So, backup important information beforehand.

Files

  1. Batocera for PS4 v1 (Check Downloads section)
  2. bzImage – 5.3+ kernel is recommended (Download according to your model)
  3. initramfs.cpio.gz (Download here)
  4. Gparted
    • On Ubuntu and Ubuntu-based distros, open terminal and type sudo apt-get install gparted and press Enter.
    • On Fedora and Fedora-based distros, open terminal and type sudo dnf install gparted and press Enter.
    • On Arch and Arch-based distros, open terminal and type sudo pacman -S gparted and press Enter.

Those are the basic requirements on top of a jailbreakable PS4 and other accessories like a USB hub, keyboard, mouse, etc.

Once you have all of these setup, you are ready to install Batocera on your PS4. Just follow the below steps.

If you would like a video tutorial, here is a detailed step-by-step video tutorial of installation, setup, BIOS and ROMs tarnsfer, DS4 connection, SSH terminal access, etc.

Install Batocera on PS4: Detailed Video Tutorial

Install Batocera on PS4: Detailed Tutorial

Step 1. Basic preparation of USB drive

  1. Connect USB drive to your Linux PC or the virtual machine.
  2. Open terminal and type sudo gparted and press Enter.
  3. On gparted, choose your drive properly by going to the dropdown menu on top right. The storage capacity of the drive is given.
  4. Right click on each partition on the drive, for example, /dev/sda1 and /dev/sda2 and click Unmount.
  5. On the top pane, click on Device and click on Create Partition Table. Make sure that msdos is selected and then click on Apply.

This prepares you for the partitioning step.

Step 2. Partition USB drive

In this step, we will create 3 different partitions. One will store the kernel and initramfs. Second one will hold the Batocera system files. The third partition will hold all your games, ROMs, BIOS, etc.

  1. On Gparted, making sure you have properly selected the device, click on Unallocated and create a new partition by clicking on the new folder icon on top left.
  2. Change the File system to fat32 and the New size to 50. Click on Add.
  3. Click on Unallocated again and create a new partition by clicking on the new folder icon on top left. Change the File system to ext4, if not already that. The label to be typed in is dependent on the initramfs you used. For example, if it’s multi-boot initramfs, type ps4linux1. Check the instructions on figuring out label name from initramfs. As for the New size, type in 15,000. When done, click on Add.
  4. For the third partition, click on Unallocated again and create a new partition. Make sure the File system is set to ext4. But, this time, the label could be GAMES (or anything you desire). As for the New size, allocate whatever is left to this partition. When done, click on Add.
  5. Then, click on the green tick on the top pane and click on Apply.
  6. Close gparted.

Step 3. Copy kernel and initramfs image to USB drive

  1. Go to the File Manager and mount the first partition (FAT32). It should be named 52MB VOLUME or something similar.
  2. To this partition, copy the already downloaded bzImage and initramfs.cpio.gz files.

Step 4. Install Batocera for PS4 on the USB drive

  1. Go to the File Manager and mount the second partition, in my case, ps4linux1 by just clicking on it, if it isn’t already mounted.
  2. Open a terminal and type sudo tar -xvJpf /home/noob404/Desktop/batocera_v1_ps4linux.tar.xz -C /media/noob404/ps4linux1 and press Enter. You will have to change the location of the disto file and also the destination partition if you are using non-multi-boot initramfs.
  3. Close the terminal once the process is completed.

Step 5. Setup Games drive and automatic WiFi

This is a step which will make sure that our third partition meant to hold all our ROMs (games), BIOS, themes, etc. is recognised properly by Batocera. And, as an optional step, you can also set up automatic WiFi connection.

  1. Go to the File Manager and in the ps4linux1 partition (in my case), go to boot folder and open the file named batocera-boot.conf.
  2. Open a terminal and type sudo gparted and press Enter.
  3. On gparted, choose your drive properly by going to the dropdown menu on top right. The storage capacity of the drive is given.
  4. Right click on the third partition, which we named GAMES, and click on Information.
  5. Copy the UUID value, for example, 82cab41c-24a1-9450-6a7a-2ae95617f2a1 and paste it into the conf file after providing a space post DEV.
  6. Close gparted.
  7. Next comes the automatic WiFi setup, which is optional. But, if you are on a PS4 which only supports WiFi (no Ethernet), I suggest you set up automatic WiFi connection to avoid troubles later. To set up, after wifi-ssid=, provide your WiFi access point name, for example, HomeWiFi (case sensitive). And, after wifi.key=, provide your WiFi password. But, if you don’t plan on using WiFi, feel free to delete the 3 lines pertaining to WiFi.
  8. When done, save the conf file.

The batocera-boot.conf will look something like this:-

sharedevice=DEV 82cab41c-24a1-9450-6a7a-2ae95617f2a1
wifi.enabled=1
wifi.ssid=HomeWiFi
wifi.key=password

That’s it. Now, you are ready to boot into Batocera for PS4.

Step 6. Boot Batocera on PS4

  1. Connect the USB drive to the PS4 and load the Linux payload. I recommend using the 2GB VRAM payload to start with. You may experiment.
  2. This will boot Batocera on your PS4.

Now that completes the installation part of Batocera for PS4. Next, we will look into the setup part, including adding games, ROMs, connecting controllers, etc. We will go through them one by one.

Add games and ROMs to Batocera for PS4

Batocera for PS4 allows you to add ROMs using three different methods (atleast). I will discuss them here.

Wireless Method: Add games and ROMs to Batocera for PS4 using PC

To use this method, you will have to make sure that both Batocera for PS4 and your PC are connected to the same network. Once that is done, follow these steps:-

  1. On your PC (Windows preferable), open File Explorer.
  2. In the Address Bar, type \\BATOCERA and press Enter.
  3. This will display the folders on your Batocera drive. Add games and ROMs into their respective folders.

USB Drive Method: Add games and ROMs to Batocera for PS4 using inbuilt file manager

For convenience of the user, Batocera comes with PCMan FM (file manager) pre-installed. You may use it to move your games and ROMs to the Batocera drive. Follow these steps for the same.

  1. Copy games and ROMs to a USB drive and connect it to the PS4 through the USB hub (if on a PS4 Slim) or otherwise.
  2. On the keyboard connected to your PS4, press F1. This will open the File Manager.
  3. Copy your games and ROMs from the USB drive to the partition named GAMES (Accessible from the left pane on the file manager).

Linux Method: Add games and ROMs to Batocera for PS4 using a Linux PC or Virtual Machine

This will be easiest method for transfer if you have a huge chunk of games and ROMs to move. Before using this method, make sure that you have run Batocera for PS4 atleast once on your PS4. Only then will the necessary folders be populated.

  1. Connect the Batocera USB drive to your PC or virtual machine.
  2. Copy your games and ROMs from the USB drive to the partition named GAMES.
  3. Connect the drive to PS4, load Batocera and enjoy!

These were three different methods for games and ROMs transfer. As I said earlier, these are the easiest methods available while there could be several other methods too.

Connect Wireless Controllers to Batocera for PS4

Batocera, by default, will recognise and setup most controllers (both wireless and wired). The steps for many controllers are the same. Here, I will tell you how you can connect DualShock 4 in wireless mode to Batocera for PS4.

  1. On your DualShock 4, press the Options and Playstation button together till the white light starts blinking.
  2. On Batocera for PS4, open Menu by pressing on Spacebar.
  3. Go to CONTROLLER & BLUETOOTH SETTINGS and choose PAIR A BLUETOOTH DEVICE.
  4. The DualShock 4 will be connected automatically.

That’s it! Your DS4 has been connected to Batocera for PS4. You can then use it to navigate and for gameplay.

Access terminal on Batocera for PS4

While generally you won’t have to access the terminal on Batocera, it is still convenient to have terminal access, especially since this is a Beta port. So, debugging would be easier with a terminal. Unfortunately, the terminal in the current state can only be accessed from another device, not from the PS4 directly. So, you will require another PC or even a mobile phone with SSH capabilities (generally, any smartphone will work). In this tutorial though, we will stick to a Windows PC.

  1. Download PuTTY and run on Windows.
  2. Under the Host name, type [email protected] or root@batocera and click on Open.
  3. Click on Accept on the popup.
  4. Type the password – linux and press Enter.

This will open the terminal. For a list of basic SSH commands for Batocera, check this article.

FAQ & Troubleshooting

Please go through these before you post a query.

Many emulators don’t show on the homescreen

Batocera will only show those emulators for which you have provided ROMs. For example, PCSX2 will not show up on the homescreen until or unless the appropriate PS2 ROMs have been placed in the ROMs folder, as talked about in the above section.

Black Screen after Rescueshell

Try these one by one:-

  1. Press any key.
  2. If that doesn’t work, press Ctrl+Alt+F2. When the terminal appears, press Ctrl+Alt+F7.
  3. If that doesn’t work, press Ctrl+Alt+F2. When the terminal appears, press Ctrl+Alt+F1.
  4. If that too didn’t work, unplug the monitor. You may remove the cable from the monitor end rather than from the PS4. Reconnect the monitor. Repeat Step 2 or 3.

Black screen with an underscore (dash) on top left

This indicates an issue with the extraction of the distro. To fix this, use an Ubuntu based distro for the installation, if you haven’t.

Face any other issue? Just leave a comment on this forum post and I will get back to you ASAP.

Conclusion

With your support, I have been able to bring multiple distros to the PS4 including Nobara, Pop OS and WinesapOS, to name a few. Please keep supporting the endeavour as much as you can! As always, if you face any issue with the installation or any other part of the tutorial, don’t shy away from making a comment below or you could leave a reply on the forum post.

55 Comments

  1. Hey Just placing feed back and will help anyway I can because batocera for me is the ultimate use of ps4 linux. So I have a ps4 fat running 5.05 I installed batocera using 2.1 overclock 5.15 kernel and it boots the flash screen and then screen goes black and I can still hear the sound in the background.

  2. Thank you, to work on my ps4 i need to name your “ps4linux1” partition to “psxitarch”. Now i test all but i don’t see the switch folder. Do you know if yuzu are present in your port of the batocera distro

  3. It is a great distro! But can you improve performance on pro models in future updates?
    As far as i can tell, it is the only noticeable problem for now. One more thing. Is it possible to overclock ps4 in the distro itself or the only option is to find a specific kernel? Is it safe to do so?

  4. Hi Sir, I followed your all steps but it still can not boot in to batocera,
    I met a few problem:

    1. Both virtualbox and vmware, I installed Ubuntu 22.04.1 LTS, I used gparted to setup a fat32 and 2 ext4 partitions,
    after I unzip the batocera_v1_ps4linux.tar.xz to mobile SSD, I edited the batocera-boot.conf and added sharedevice=DEV UUID on it,
    it can not save this file on “/media/user/ps4linux1/boot folder, it can only save as to the desktop, I double checked the folder permission,
    it is only root access and change, until I use chmod 777 to change the boot folder permission become everyone, I can modify and save batocera-boot.conf.

    2. I used your mentioned version, Kernel Baikal 4.14.93 By psxita (5.6MB) and initramfs.cpio.gz Multi-boot (By noob404) (3.9MB)
    both PS4 and PS4 slim I tried, they boot up failure, also I tried several Kernel and initramfs.cpio.gz, also same failure.
    after payload linux 2GB, it turned to black screen with white words, but the message is not same as yours.
    it stopped there, please help & thanks!

  5. is there an option to have more scrapers available? like screenscraper? none of my games are getting scrapped and i just don’t know why 😭. help!

  6. I have a fat Belize PS4. I tried all 3 different kernels for the Belize. The furthest I got is Linux screen with unit success message but can’t get further than that. I’ve followed the process exactly and used multi boot initram. I named the batocera partition ps4linux1….

  7. I’ve set up the drive and connect to PS4 i sent Linux payload but nothing happened. it just stay at the browser payload page. I’ve redo the drive a lot if times but it’s the same. anyone knows what’s wrong?

  8. My PS4 pro is death stranding limited edition with firmware version 6.72. I cannot run the “what’s your southbridge”payload provided by recommended websites (because 6.72 does not support this?). So I do not know my ps4’s motherboard model is Aeolia, Belize or Baikal. I tried 5.3.18 kernels for all these 3 motherboard models but all got blackscreen when installing Batocera on my PS4. Which kernel version should I use and with which motherboard model?

  9. used Baikal 5.3.18 and hippie68, chose 1g linux payload, saw the rescueshell when booting Batocera on PS4. But after more than 30 minutes, the screen is still black. A few seconds after pushing the power button, the last line on the screen showed: ” umount: devtmpfs busy – remounted read-only” and then shutter down.

  10. Should be Baikal as I tried Aeolia and Belize and got blackscreen. Only using Baikal 5.3.18 made me see the resureshell and I even can hear the background sound for lasting about some 20-30 minutes. I also saw some lines at the very beginning (so it should not be the resolution problem) but when it was trying to play splash.mp4, the screen went black and never came back. I really do not know what goes wrong.

  11. I follow everystep very carefully.
    Everything is set up properly, I now started to install Batocera but I get stuck when it is checking a lot of things.
    Last line says “Run/init as init process”
    And under it there is a —> _ blinking.
    I cant use the keyboard, does not respond to anything.. what can I have done wrong?

  12. Is it 100% neccecary to provide that text in the end to the “Share device” Because I cant seem to get around that damned restriction! It says I´m not the owner.
    Everything works as intended now, except this step..
    When I go to the terminal I enter Sudo gparted, I enter Gparted, copy that code, try to enter it in the text file inside the “boot” folder, but Cant save it, because I´m not the owner.. I tried it on two different operationg systems now.. Getting kinda frustrated here now.
    I also cant boot up Bacetora on PS4 for some reason.. It freezes completly in the boot section before the “rescueshell” should appear.
    I tried different kernels, I tried different initramfs files. nothing seem to work.
    I watched the video that Modded Warfare put up, follow those steps and easily get it to work.
    So there is something with this I cant figure it out.
    I´m on a ps4 pro, 9.00 on Belize.
    Does someone have any idea? Thanks a lot. Would realy appretiate the help. Sorry for bad language.. =/

      • What I love about you, is that you have NO obligation to help others, but yet, you do!
        You are truly awsome my friend, When all this is over I´ll buy you some cups of coffe 😉
        Thanks for your help Noob404.. (I´m beginning to think that you are actually not a noob…) 😛

        • I have no shame in accepting I am a noob. Truth is when I solve problems, both my own and of others, I learn a thing or two. Also, thanks for the coffee offer. If you do donate given your Batocera issues are fixed, it will help me keep this endeavour going.

      • The problem is still there..
        I´ll try to be as detailed as possible in the whole process abouth what I´m doind, and maybe someone can find a misstake?
        The Featherpad kinda worked, I hade to manually add the file into the program and make the changes,
        But when I try to boot Linux on the ps4, still the same problem, It gets stuck with a blinking “underscore” –> _ <– and wont respond to any keayboard inputs.
        There is a lot of lines of codes, and the last line says "Run/init as init process".
        If I unplug hdmi, or change channel, the signal wont come back, I tried ctrl + alt and F1 – 12 but nothing brings back the signal.

        All this I try to boot from a 1 TB external SSD,

        I use the Cthuga to jailbreak and load the Goldhen,

        Then I go to Karo218 and try different Linuxloaders,.

        When I tried load with the 2gb linux loader from Nazky, the signal went dead and so does the keyboard. (there is led light in the ketboard, so when it has signal it is lit up)

        When I try 1 gb loader from Psxita, it bootsm but then gets stuck as described above.

        When I setup my SSD (it is a Seagate USB 3.0) I follow your tutorial video carefully,
        I used both laptop with some version of Ubuntu,
        Now I use Virtual Box with Ubunto 22.10, 64-bit and Gnome version 43.1.
        Windowing system Wayland
        Virtualization Oracle

        Dunno if that is any vital information.. But hey, I dont realy know codes and programming, I´m just a studying Network engineer..
        But still Thanks a LOT for any help. I realy appreciate it =)

        • Update
          I notice when I have extracted all files onto the partition ps4linux1 that several folder have a red cross over them, For example the Root folder syas “Contents unreadable”..
          I got a strong feeling this is the problem, but how to solve it?
          And a file called liuxrc says “link(broken)”..
          Try another OS?

  13. Heeeey hey!
    Ok so I got it up and running!!!!!! =D
    I hade to change name on partiotion from ps4linux1 to psxitarch and I used ps3ita initramf with kernel 5.3.
    And all of a sudden some music from out of this world started playing and it ignited into a full party in my basment! So my neighbours probably think I am a lunatic.. (wich is true.. ;D )

    Anyway, if anyone has similar problems in the future like me.
    I now used VirtualBox and installed Lubuntu, updated Lubuntu after install and added Gparted,
    As I said before, switched name from ps4linux1 to psxitarch and use ps3ita initramf with kernel 5.3,

    Again, I am on PS4 Pro 9.00 Belizal motherboard.
    Hope this can be of use for someone. Now I´m gonna explore this AWSOME OS!
    Special thanks to Noob404 for beeing awsome and actually creating this! Great job man,
    Gonna buy you a couple of coffeys, just because you are one of a kind bro!

      • Absolutley =) For this awsome OS I´ll gladly contribute.
        Can I make a request for a function?
        I have not yet found if there is such a feature,
        But for example.
        In retroarch, you can map you controller for a specific game and save those settings so they only apply for that certain game.
        Like.. Alien Triology on ps1, Those controller suck so hard, but if you remap them, the game is just so much more fun. But if I were to use them on a different game, that would to totaly unplayable.
        Thanks =)

  14. On Retroarch you just pause the game to get to the arch menu,
    Then there is a option under !quick menu” called Controls” in there you can remap controller for the game, and choose to “Save remap for game” or something like that.
    But I found that if you press “PS” button and square, inside Batecora while playing a game, You actually boot into retroarch and can access all these features =D
    you can add me on messenger or somethin glike that if you want, if you can see my email?

  15. Do you recomend using swapon on Batocera?
    It crashes a lot of the times when exiting a game to start anotherone. Especially larges games as N64 or gamecube games.
    Maybe using the terminal to create a swapon file will help?

  16. So, I’m having a ton of issues here, and it may be because I’m an idiot, but here goes:

    First, literally none of the bzimage files worked for me – I had to use one I found here:https://drive.google.com/file/d/1X_KgirqZQ1fjYc35t_R6HjKEop2cpzj4/view
    (I haven’t tried any of the initramfs files with this bzimage yet – the one I found was because I had to mount an .img of a different version of Batocera found here:https://www.youtube.com/watch?v=grU3D7RtRoQ&ab_channel=goldengames); didn’t like the GUI of this one. Also not trying to advertise anyone here – just posting for accuracy)

    Anyways, I formatted the USB drive as specified in this tut (along with the mentioned bzimage/initramfs) and essentially got Batocera loaded up.

    “Cool – let’s add some games”

    When I tried to drag nad drop some games into the GAMES partition, it flat-out wouldn’t let me. Then I remembered that Batocera had a built in file manager, so i ended up using two USB drives to copy the games onto the partition. When I refreshed the games list, they didin’t show up. I’d figured it was a directory issue, rewatched the tut video,and noticed there wasn’t a batocera folder, so I wentback into the file manager, creathed the folder, moved the games/bios into it, refreshed games list again – nothing.

    Then I re-REwatched the video again and saw that you copeid the files into subfilders that were displayed above the main partitions – so I tried that: I copied a NES game into that roms/nes subfolder, refreshed the list, and it showed up. When I tried copying the rest of the games, the fle manager was all “I can’t let you do that, Dave – not enough space”

    That’s when I got back on gparted and essentially switched the partition sizes, seeing as how the GAMES partition was seemingly useless to me. Since I already had the USB drives connected to my laptop, I decided to transfer the games to the roms directory mentioned earlier (ps4linux1/usr/share/batocera/datainit for reference), but it just wouldn’t let me – turned out I didn’t have permisssions to do that.

    After using some Google-Fu skillz, I gained permission to the directory and subfolders/files, copied the bios/games into the respective destinations, booted up Batocera, and…. black screen on splash. I figured it was a memory issue due to the large file sizes I copied, so I went and tried to create a swap file you mentioned in another topic, but it didn’t seem to work.

    That’s when I decided to shrink the GAMES partition and formatted the unallocated space via Disk… management? as a swap partition. Tried to load Batocera again, and got black screened after splash again.

    This is where I’m at now, and I’m at a standstill.

    • Thanks for the detailed information. While you are on the black screen, is there sound? And, just to be safe, redo all the steps as specified in my tutorial.

  17. Bonjour !
    Cemu ne marche pas avec mario kart 8 et le wifi ne se connecte plus du tout a part une fois ou deux au début de mes essais. Poutant le fichier de config est reglé et dans le dossier boot. Comment y arriver ?
    Aussi.. j’ai essayé d’ajouter la switch avec plusieurs pack et tuto comme pour batocera sur mon pc en v36 alors j’ai trouvé un pack switch et bios pour v34 mais plus rien ne marche depuis, obligé de remettre tout a zero. Depuis impossible de me connecter sur le wifi et donc de mettre cemu pack graphics à jour avec l’émulateur et continuer mes tests.
    Sinon pour finir je n’arrive pas a utiliser le dual boot sur mon disque ext usb pour mettre batocera et salient os le fichier initramfs que tu fournis ne donne rien sur ma ps4pro baikal 7116b

  18. Hi, I don’t have linux and can’t apply the instructions above, could this be done on windows system? if so, can you list the steps as you did above?
    thanks

  19. Had anyone been succesful installing batocera on firmware 11.0 ? I have been looking for a confirmation that it works and an install guide if not the same as above

Leave a Reply

Your email address will not be published.


*