Temos o hardware do PS1 Pro
Configurando ele e vendo o que podemos fazer com o Raspberry Pi 5
Hoje eu quero fazer um post mais documental de coisas que eu fiz testando o Raspberry Pi 5, junto disso, mostrar parte das configurações que eu já fiz pra usar ele como parte do projeto do PS1 Pro. Coloquei em prática parte do plano que eu defini no post anterior dessa saga.
Sobre o Raspberry Pi 5

Bom… agora temos o hardware que vai rodar os emuladores do PS1 Pro!
Desde quando ele chegou eu fiquei testando algumas coisas, configurando sistemas, programas e testando alguns emuladores pra ver tudo que esse mini PC é capaz de fazer.
E realmente, dá pra fazer muita coisa com ele, ele é bem mais potente do que eu imaginava, mesmo com 4GB de RAM em nenhum momento eu vi essa RAM lotar. E mesmo com emuladores e servidores rodando ao mesmo tempo, ele parecia aguentar tudo isso bem tranquilamente.
Fui pesquisar e o Raspberry Pi 5 estaria com um desempenho próximo de um Galaxy S10(2019), realmente é um computador bem potente.
Falando em emuladores, ele consegue rodar bem tanto PPSSPP em 2x (isso no core libretro, no standalone deve ser bem melhor) e Dreamcast rodando perfeitamente em 720p no Flycast do Retroarch.
Sobre PPSSPP, o seu core libretro não é a melhor coisa do mundo, bem normal ele crashar o Retroarch quando vai mexer em alguma config ou algo do tipo, porém o GTA VCS rodou bem em 3x de resolução, já o God Of War Ghost Of Sparta teve que ser na resolução nativa pra rodar bem.
![]() | ![]() |
|---|
Eu ainda pretendo usar esse Raspberry para aprender mais sobre Linux e outros conteúdos além do uso da emulação, mas primeiro to bem interessado no momento e entender como esse MiniPC funciona, boot, drivers, arquitetura, afins…
Vou até deixar aqui a documentação da Raspberry pra ficar fácil de achar depois.
https://www.raspberrypi.com/documentation/
Partindo para o projeto do PS1 Pro
Focando agora no uso do Raspberry para o PS1 Pro, esse projeto que eu coloquei na cabeça, primeiro vamos focar em instalar o sistema e fazer dele um linux appliance do Retroarch.
Depois vamos vendo algumas configurações satélite, de coisas que decidimos que iriam rodar em segundo plano no nosso sistema. Bora.
Instalando o OS e o Retroarch
Eu já tava com o Raspberry Pi OS Lite em mente como sistema operacional desde antes de comprar o Pi, no fim acabou sendo ele mesmo.
Com o OS somente no seu modo CLI, já é mais do que suficiente para meu Linux Appliance utilizando o Retroarch. Agora só falta instalar o Retroarch.
Ah Douglas, mas por que você não usou RetroPie, Recalbox, Batocera…
Todos eles usam EmulationStation como frontend, ES é feio demais, sinceramente não gosto, no fim eu consigo rodar todos os mesmos cores usando as versões em libretro no Retroarch, que é um app que eu já domino há anos, só não escolhi o Lakka por ser um sistema bem fechado e não dá pra fazer outras modificações no sistema em segundo plano pelo que eu vi.
Além de que eu quero pensar em como posso implementar cada parte do meu projeto, cada módulo, app, config, quero fazer ele personalizado do meu jeito, orquestrando da forma como eu acredito ser interessante para um console caseiro.
Bom, vamos lá, é aí que veio os primeiros gaps. O ambiente libretro é mais limitado na arquitetura aarch64 do que eu imaginava que seria, não existe uma versão no site do retroarch pra baixar e executar nesse Linux como acontece no Windows ou em outros sistemas, só existem 3 formas de rodar o retroarch no Pi 5: apt, flatpak, ou compilando na mão.
Depois de alguns testes entre as versões e compilações, aparentemente a versão do apt já seria mais do que suficiente, além de não ter tanto trabalho assim pra fazer a instalação. É mais simples e resolve o que tem que resolver.
sudo apt install retroarch
E os cores?
Quando o assunto é os cores o buraco é mais embaixo, não existe builds oficiais da libretro para cores em aarch64 (que é a arquitetura do Pi 5), isso significa que não importa qual versão do Retroarch você tenha instalado, não vai aparecer cores pra baixar no core updater.
Você tem que instalar (e, na teoria, compilar eles) manualmente pra fazer tudo funcionar.
Por sorte existe esse repositório no Github com vários cores já compilados para aarch64:
Com isso boa parte dos cores já irão funcionar normalmente, mas nem tudo são flores.
Alguns cores mais pesados vão rodar mal, como no caso do SwanStation e o Bettle PSX HW, que não tem bom desempenho com alguns games (CTR e Crash Bash por exemplo), melhor solução de PS1 para Raspberry é o PCSX ReARMed (ou o Duckstation standalone, que funciona muito bem).
Pra outros cores como o Flycast e o PPSSPP eles nem são compatíveis com o Pi 5 por padrão por causa de uma configuração de paginação de memória própria do Raspberry Pi 5 (até o RPI 4 era usado 4KB, no 5 é 16KB), você devr adicionar uma linha no config.txt para baixar a paginação de volta para 4KB, relaxa que a perda de desempenho por isso é bem baixa, e pelo menos, os emuladores funcionam.
kernel=kernel8.img
Curiosidade legal: config.txt é quase um arquivo de configuração de bios do Pi, até overclock pode ser configurado por lá.
Configurando SMB Server para o OPL
O pendrive eu já usava no OPL do PS2, como eu já tinha ele focado nisso, nada mais justo que eu usar ele para salvar as isos e roms desse projeto. Então montei ele em mnt/usb-flash/ para deixar todos os games e somente o OS no cartão SD.
Uma das minhas ideias quando eu peguei o Pi é além de ele rodar games via emulação, usar ele como um server para jogos de PS2 via rede no OPL, substituindo a churrasqueira que é aqueles 3g/4g router chinês (esquenta tanto que já derreteu o cabo USB). Ele é muito usado para jogos via rede no PS2. Porém ele é bem limitado, seus dados são apenas read-only então configurações por jogo no OPL e memory cards virtuais eu não consigo fazer.
Mas no Raspberry eu consigo…
Pra isso eu tinha que configurar um servidor SMBv1 no Pi, o que não é muito complicado…
Só pra vocês terem noção, SMBv1 foi um grande propagador de vírus como WannaCry e o NotPetya. Hoje em dia é obsoleto e perigoso, desligado por padrão o seu suporte no Windows, só o PS2 usa isso hoje em dia, enquanto não substituem ele no OPL pelo UDPBD.
Beleza, vamos para as configurações, comecei instalando o Samba no linux.
sudo apt update
sudo apt install samba samba-common-bin
Depois disso eu quis manter a seguinte linha de raciocínio
Eu quero isolar a porta de rede do Pi para usar no PS2, enquanto eu uso o Wi-fi normalmente para se conectar na internet.
Minha ideia é que mesmo com o PS2 usando a porta de rede, eu ainda consiga usar o Wifi para conexão com internet, querendo ou não, não haveria outro uso para a porta de rede do Raspberry com ele tendo wifi, como eu aqui estou fazendo a conexão direta entre o PS2 e o Raspberry Pi, eu iria ter que configurar manualmente os IPs, o que iria derrubar a internet dessa porta de rede.
Então vamos pras configurações, comecei editando o /etc/samba/smb.conf pra fazer as configurações do meu servidor e forçar o uso do SMBv1.
[global]
workgroup = WORKGROUP
server string = Pi5 PS2 Server
security = user
map to guest = Bad User
# CRÍTICO: Forçar SMBv1 (NT1) para PS2/OPL
server min protocol = NT1
server max protocol = NT1
# Desabilitar encriptação (PS2 não suporta)
server signing = disabled
# Otimizações de performance
socket options = TCP_NODELAY IPTOS_LOWDELAY SO_RCVBUF=131072 SO_SNDBUF=131072
read raw = yes
write raw = yes
max xmit = 65535
dead time = 15
getwd cache = yes
Talvez haja configurações melhores pra se fazer do que mexer em configs globais do SMB, mas funciona hoje.
Mas agora vamos criar realmente o servidor para o PS2 nesse mesmo arquivo
[PS2SMB]
path = /mnt/usb-flash/PS2SMB
browseable = yes
read only = no
guest ok = yes
create mask = 0777
directory mask = 0777
force user = douglasdans
Aqui tem algumas configurações importantes, eu defini o path do meu pendrive com os games de PS2, na estrutura do OPL, permiti navegação, read/write, coisas que são importantes no OPL depois de configurado.
Configurando os IPs entre PS2 e RPI
Ok temos um server de games SMB, agora precisamos fazer com que o OPL ache ele.
Pra isso vamos configurar os IPs do Raspberry Pi, vou usar os seguintes endereços para conexão direta do Pi com o PS2:
- PS2:
192.168.0.20 - Raspberry Pi 5:
192.168.0.10 - Máscara:
255.255.255.0 - Gateway:
192.168.0.1 - DNS:
8.8.8.8(Nem faz diferença mas tudo bem)
No Pi OS usamos Network Manager com o comando sudo nmtui e editamos as configurações de Ethernet pra bater com o que definimos de IP acima.

O mesmo agora para o PS2. (ignora o reflexo kkkk)

A porta está 139 por que (pra surpresa de ninguém) não funcionou de primeira, tive alguns gaps como sempre, o clássico erro 300 do OPL (Não foi posível conexão com o servidor SMB) e por aí vai, mas a porta 443 também está compartilhando normalmente, o que deve funcionar normal.
Corrigindo os Gaps
SMB no OPL é pedir pra tomar nem que seja um gap. Dessa vez, por algum motivo quando funcionou, ele só funcionava uma vez, se eu reiniciasse o PS2, a rede deixava de funcionar e voltava ao erro 300 do OPL.
Fuçando, descobri que se eu reiniciasse o Raspberry ele voltava a funcionar, mas novamente… Reiniciava o PS2 pra entrar em outro game e era erro 300 na tela.
Depois de muito quebrar a cabeça, mudar prioridade entre eth e wifi, reiniciar configurações do samba, o que resolveu foi reiniciar o driver eth toda vez que uma nova conexão é feita via cabo
Toda vez que o PS2 conectar via cabo no Pi ele irá reiniciar o driver de rede, um processo bem rápido, mas que permite com que o OPL ache o SMB server normalmente.
Manualmente o que é feito é isso aqui
sudo ip link set eth0 down
sudo ip link set eth0 up
Agora de forma automática, eu criei um dispatcher no NetworkManager pra fazer exatamente isso, reiniciar o driver quando tiver uma conexão.
Configurações feitas em /etc/NetworkManager/dispatcher.d/99-eth0-reset-on-reconnect
#!/bin/bash
IFACE=$1
STATUS=$2
# Só age quando eth0 volta (após carrier-changed)
if [ "$IFACE" = "eth0" ] && [ "$STATUS" = "up" ]; then
# Aguarda 1 segundo pra garantir estabilidade do link
sleep 1
# Reset completo da interface (força driver a limpar estado)
ip link set eth0 down
sleep 1
ip link set eth0 up
# Aguarda NetworkManager reaplicar configuração
sleep 2
# Log
logger "eth0-reset: Interface reset após reconnect"
fi
Isso foi o suficiente pra resolver esse problema de conexão com o OPL, pode não ser a melhor solução, mas é o que funcionou pra mim.
Configurando SSHFS no Windows
Durante todo o processo de exploração, configuração e estruturação de tudo que eu tinha que configurar no Pi, eu usei duas coisas para fazer o acesso remoto:
- SSH para rodar comandos e editar arquivos rápidos como os de configurações via
nano. - VS Code Remote Server para entrar em pastas, enviar e editar arquivos maiores entre o Windows e o Raspberry
Só que o VS Code Server é bem pesado para o Pi, e também é bem overkill, não precisava ter tudo o que ele oferecia. A única coisa que eu precisava era de um sistema de arquivos remoto pra eu passar arquivos rapidamente, era algo funcional, mas temporário.
Minha ideia original era eu criar um outro server SMB para compartilhar os games e o root do Pi para o meu Windows, para eu ter um acesso rápido.
Foi nisso que eu descobri o SSHFS, um file-system onde eu posso criar drives de rede no Windows tudo via SSH, era exatamente o que eu precisava, só faltava configurar.
Bora lá, comecei baixando estes 2 arquivos aqui:
Esses programas são os responsáveis por dar ao Windows o suporte ao SSHFS.
Depois disso só configurar a letra e o local de rede, provavelmente é algo assim. Detalhe que a pasta raiz aqui era a home, como eu queria compartilhar o root, eu fiz um /../../ no caminho da pasta pra subir pro root.
\\sshfs\{username}@{ip-do-host}\

Depois disso, você pode nomear os volumes corretamente, aí vai aparecer até a quantidade de armazenamento, tudo certinho.

Com isso já está tudo funcionando corretamente, já podemos enviar e editar arquivos via rede. Tanto pro meu pendrive, quanto para o root, home ou qualquer outra pasta do Raspberry.
Conclusão
Ainda tem muitas coisas para mexer pela frente nesse projeto, desde acertar melhor as configurações dos cores e emuladores, talvez testar melhor os emuladores standalone, e é claro, preparar para colocar o Raspberry Pi dentro da carcaça do PS1 de verdade.
Tudo isso eu vou trazer melhor em futuros posts aqui do blog, mas se quiserem um spoiler… a carcaça chegou e eu já testei o posicionamento do Pi dentro dela.

Mais novidades do projeto em breve!

