Sony Playstation Portable (PSP) & Linux Ubuntu
Présentation de la PSP
La PSP est une console portable conçu par Sony et visant un public au premier abord hard-gamer. Néanmoins, cette page dédiée à la console va permettre de mettre à la portée de tous ce petit bijou et de l'exploiter à 100% !
Caractéristiques des modèles
Ces informations serviront quelque peu pour les néophytes qui veulent savoir ce que cache le ventre de leur console, mais surtout aux développeurs qui s'intéresseront au hardware de la machine pour en faire bon usage.
PSP 1000 (Fat)
- Couleurs : noire, blanche, grise, bleue, rose, rouge, argentée, etc…
- Dimensions : 170mm (longueur) x 74mm (largeur) x 23mm (épaisseur).
- Dimensions de l'écran : 95mm (longueur) x 54mm (hauteur).
- Poids : 280g environ, batterie incluse.
- Son : haut-parleurs stéréo internes.
- Batterie : 3,6 V, 1800 mAh.
—-
- Processeur central (CPU Core) : MIPS RS4000 sur 32 bits (architecture MIPS), cadencé à 333 MHz (pour les micrologiciels officiels inférieurs à 3.5, la vitesse disponible n'est que de 222 MHz) sur un bus mémoire 128 bits. Deux unités de calcul intégrées : FPU et VFPU (unité de traitement en parallèle). Puissance de traitement de 2,6 GFLOPS.
- Mémoire principale : 32 MiB RAM et 4 MiB eDRAM (embedded DRAM) à 2,6 Gio/s.
- Processeur multimédia (Media Engine) : second processeur RS4000 avec 2 Mio de mémoire eDRAM dédiée.
- Deux processeurs graphiques : 3D Curved Surface + 3D Polygon (Core 1) et moteur de rendu 3D et de traitement des surfaces (Core 2), cadencé à 166 MHz sur un bus 256 bits, 2 Mio mémoire vidéo eDRAM à 5,3 Gio/s pour une puissance de traitement maximale de 664 M pixels/s, 34 M polygones/s (T&L).
- Processeur audio (Sound Core Virtual Mobile Engine) : DSP 128 bits reconfigurable, 5 GFLOPS.
- Décodeur matériel MPEG-4 AVC (H.264) Main Profile Level3.
PSP 2000 (Slim & light)
- Dimensions : 170mm (longueur) x 7mm (largeur) x 18mm (épaisseur).
- Dimensions de l'écran : 95mm (longueur) x 54mm (hauteur).
- Poids : de 50g 180g environ, batterie incluse.
- Son : haut-parleurs stéréo internes.
- Batterie : 3,6 V, 1200 mAh.
—-
- Processeur central (CPU Core) : MIPS RS4000 sur 32 bits (architecture MIPS), cadencé à 333 MHz (pour les micrologiciels officiels inférieurs à 3.5, la vitesse disponible n'est que de 222 MHz) sur un bus mémoire 128 bits. Deux unités de calcul intégrées : FPU et VFPU (unité de traitement en parallèle). Puissance de traitement de 2,6 GFLOPS.
- Mémoire principale : 32 MiB RAM et 4 MiB eDRAM (embedded DRAM) à 2,6 Gio/s.
- Processeur multimédia (Media Engine) : second processeur RS4000 avec 2 Mio de mémoire eDRAM dédiée.
- Deux processeurs graphiques : 3D Curved Surface + 3D Polygon (Core 1) et moteur de rendu 3D et de traitement des surfaces (Core 2), cadencé à 166 MHz sur un bus 256 bits, 2 Mio mémoire vidéo eDRAM à 5,3 Gio/s pour une puissance de traitement maximale de 664 M pixels/s, 34 M polygones/s (T&L).
- Processeur audio (Sound Core Virtual Mobile Engine) : DSP 128 bits reconfigurable, 5 GFLOPS.
- Décodeur matériel MPEG-4 AVC (H.264) Main Profile Level3.
PSP 3000 (Brite)
- Dimensions : 170mm (longueur) x 7mm (largeur) x 18mm (épaisseur).
- Dimensions de l'écran : 95mm (longueur) x 54mm (hauteur).
- Poids : de 50g 180g environ, batterie incluse.
- Son : haut-parleurs stéréo internes.
- Batterie : 3,6 V, 1200 mAh.
- Processeur central (CPU Core) : MIPS RS4000 sur 32 bits (architecture MIPS), cadencé à 333 MHz (pour les micrologiciels officiels inférieurs à 3.5, la vitesse disponible n'est que de 222 MHz) sur un bus mémoire 128 bits. Deux unités de calcul intégrées : FPU et VFPU (unité de traitement en parallèle). Puissance de traitement de 2,6 GFLOPS.
- Mémoire principale : 32 MiB RAM et 4 MiB eDRAM (embedded DRAM) à 2,6 Gio/s.
- Processeur multimédia (Media Engine) : second processeur RS4000 avec 2 Mio de mémoire eDRAM dédiée.
- Deux processeurs graphiques : 3D Curved Surface + 3D Polygon (Core 1) et moteur de rendu 3D et de traitement des surfaces (Core 2), cadencé à 166 MHz sur un bus 256 bits, 2 Mio mémoire vidéo eDRAM à 5,3 Gio/s pour une puissance de traitement maximale de 664 M pixels/s, 34 M polygones/s (T&L).
- Processeur audio (Sound Core Virtual Mobile Engine) : DSP 128 bits reconfigurable, 5 GFLOPS.
- Décodeur matériel MPEG-4 AVC (H.264) Main Profile Level3.
- Micro intégré
PSP N1000 (Go)
Connexion à l'ordinateur
Détection
[Ubuntu Dapper] : la PSP est reconnue directement comme un lecteur de musique ordinaire et montée automatiquement. Cependant, vous pouvez aussi la définir dans le fstab et la gérer comme un disque amovible. Elle est considérée comme un disque sd ?
Une fois branchée, faites un dmesg ou fdisk pour récupérer sous quelle adresse disque elle est placée:
$ dmesg [4296824.734000] usb 4-1: new high speed USB device using ehci_hcd and address 4 [4296824.849000] scsi1 : SCSI emulation for USB Mass Storage devices [4296824.849000] usb-storage: device found at 4 [4296824.849000] usb-storage: waiting for device to settle before scanning [4296829.850000] Vendor: Sony Model: PSP Rev: 1.00 [4296829.850000] Type: Direct-Access ANSI SCSI revision: 00 [4296829.854000] SCSI device sdb: 985088 512-byte hdwr sectors (504 MB) [4296829.855000] sdb: Write Protect is off [4296829.855000] sdb: Mode Sense: 00 6a 20 00 [4296829.855000] sdb: assuming drive cache: write through [4296829.861000] SCSI device sdb: 985088 512-byte hdwr sectors (504 MB) [4296829.862000] sdb: Write Protect is off [4296829.862000] sdb: Mode Sense: 00 6a 20 00 [4296829.862000] sdb: assuming drive cache: write through [4296829.862000] sdb: sdb1 [4296829.865000] sd 1:0:0:0: Attached scsi removable disk sdb [4296829.865000] sd 1:0:0:0: Attached scsi generic sg1 type 0 [4296829.873000] usb-storage: device scan complete [4296830.927000] FAT: utf8 is not a recommended IO charset for FAT filesystems, filesystem will be case sensitive! $ fdisk -l Disk /dev/sda: 164.6 GB, 164696556032 bytes 255 heads, 63 sectors/track, 20023 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sda1 * 1 20023 160834716 b W95 FAT32 Disk /dev/sdb: 504 MB, 504365056 bytes 32 heads, 32 sectors/track, 962 cylinders Units = cylinders of 1024 * 512 = 524288 bytes Device Boot Start End Blocks Id System /dev/sdb1 * 1 961 491789+ 6 FAT16 $ mount -l ... ... ... /dev/sdb1 on /media/psp type vfat (rw,nosuid,nodev,quiet,shortname=mixed,uid=100 0,gid=1000,umask=077,iocharset=utf8)
Voilà, ça devrait être bon !
mount -l
est celui de l'auto-détection de la PSP, avant de toucher au fstab. Normalement le montage automatique fonctionne et vous pouvez manipuler les fichiers sur la PSP.
Encoder les vidéos
La PSP est capable de lire un certain nombre de formats vidéo, comme documenté sur le site US de Sony:
- MemoryStick™ Video Format
- MPEG-4 Simple Profile (AAC)
- H.264/MPEG-4 AVC Main Profile (CABC)(AAC) and Baseline Profile (AAC)
- MP4
- MPEG-4 Simple Profile (AAC)
- H.264/MPEG-4 AVC Main Profile (CABC)(AAC) and Baseline Profile (AAC)
- AVI
- Motion JPEG (Linear PCM)
- Motion JPEG (u-Law)
D'autre part, la résolution native de la PSP est 480x272. Mais ces informations sont loin d'être suffisantes pour pouvoir encoder des vidéos lisibles par une PSP.
Dans les faits, après recherches sur le web et nombreux tests, cela se traduit par les caractéristiques plus précises suivantes:
Conteneur et codecs
- Conteneur vidéo: MP4
- Codec Audio: AAC
- Codecs Video:
Résolutions Supportées
Attention, cette section ne parle que les PSPs avec firmware officiels. Les firmwares modifiés ont des caractéristiques différentes – meilleures la plupart du temps:
- Résolutions avec un "768k pixel count" (tous firmwares):
- 368x208 (16:9)
- 320x240 (4:3)
- 384x160
- 416x176
- 400x192
- 480x160
- Firmwares récents seulement ( Vérifié sur une PSP Slim en 3.71 "officiel". )
- 480x272
- 720x480
Les logiciels de transcodage
"Transcodage" signifiant en vidéo tout simplement "conversion de format".
Handbrake
Pour transcoder des DVDs vers la PSP, le plus simple est sans doute d'utiliser Handbrake, un soft Open Source qui possède une version en ligne de commande pour Linux.
Typiquement, une simple commande comme:
./HandBrakeCLI -i /media/cdrom0/VIDEO_TS -L -N -f mp4 -w 720 -l 480 -m -e x264 -x level=30:trellis=1:cabac=1 -S 700 -2 -E faac -B 128 -a 3 -R 48 -o "VIDEO.mp4"
… permet de créer un fichier lisible sur la PSP de 700MB max (qualité UMD Vidéo), au format NTSC (720x480), qui sera d'ailleurs lu en pleine résolution sur une télé si on utilise une PSP Slim & Lite.
Afin d'éviter de stresser inutilement les lecteurs de DVD, il vaut mieux faire une copie locale avec vobcopy (vobcopy -m
).
Il existe une interface graphique en paquet deb pour amd64 et i386 ici :
AVIDEMUX
Pour transcoder des fichiers AVI, un des meilleurs softs disponibles pour la PSP en ce moment (juin 2009) est sans doute avidemux, un outil assez impressionnant de conversion et travail sur les fichiers AVI.
Pour la PSP, en particulier pour les formats en résolution élevée, il faut utiliser la version SVN de la 2.4. sous Ubuntu (ou disponible directement dans les dépôt sous Jaunty), voir les miroirs proposés sur le site de avidemux, cela ça marche très bien.
Méthode de conversion pour obtenir du 480x272 sur un firmware officiel récent - tutoriel très rapide - :
- Ouvrir le ficher AVI à convertir
- Aller dans le menu 'Auto':
- choisir le format PSP (H.264) pour les grandes résolutions, Ensuite, dans 'Target Type', choisir PSP Full Res ou PSP 480x272
- Sinon choisir 'PSP' pour le codec classique (MP4 ASP)
- Pour modifier la résolution, il faut aller dans les filtres et modifier à la main
- Cliquer sur 'Sauver', attendre…
Le fichier résultant doit être stocké, non pas dans "/MP_ROOT" mais dans "/VIDEO". Il n'y a pas de convention de nommage particulière.
Attention: cette méthode fonctionne bien pour les grandes résolutions, mais il faut faire quelques manipulations supplémentaires pour les plus petites résolutions: il faut en effet éditer à la main les filtres vidéo qui convertissent l'image vers la résolution cible.
PSPVC
Une nouvelle version de ce soft est disponible depuis le 13 mars 2007 dans sa version 0.3.
Voici les nouveautés ajoutées depuis la version 2.0 :
- 0.2.1 → 0.3
- nouvelles versions de X264 et FFMPEG (fif1973)
- entrée dans le menu (freedesktop) Applications/Multimedia (fif1973)
- Simplification des paramètres de conversion (fif1973)
- Affiche un message d'erreur quand le fichier source est dans un format non supporté (fif1973)
- Traduction Slovène ajoutée (lenooh)
- Traduction Allemande ajoutée (Christian Stake)
- Option "–threads X" pour une utilisation multi-cpu/multi-coeur (fif1973)
- 0.2 → 0.2.1
- L'ordre des options a changé (fif1973)
- Fenêtre 'Au sujet de' (fif1973)
- Titre des fenêtres de conversion est le titre de la vidéo convertie (fif1973)
- Limite haute du choix de la vignette ajusté à la durée de la video (fif1973)
- Traduction polonaise ajoutée (Thomasz Dominikowski)
Plus d'informations sur Le site officiel de pspvc
C'est un soft graphique (basé sur ffmpeg) qui permet d'encoder des vidéos sous format de la PSP : MPEG4/SP (all firmware), H264/AVC (firmware 2.0+) ou H264/AVC 480x272 (firmware 3.03-OE-B+). Très simple d'utilisation et d'installation une fois les dépendances installées.
- Dépendances
- nasm
- libfaac
- libxvidcore
- liba52
- gtk+2.0
- yasm
Les bibliothèques indiquées pour les dépendances doivent être installées avant, et en version de développement (dev). Pour les installer (sous feisty), installez les paquets nasm yasm libfaac-dev libxvidcore4-dev liba52-0.7.4-dev libgtk2.0-dev
Installation
Télécharger l'archive du programme sur le site. Décompresser le fichier dans votre répertoire personnel, déplacez-vous dans le dossier créé et ensuite :
sudo ./install.sh
pour exécuter le programme, dans un terminal :
pspvc
Installation alternative
Note: le script install.sh lance la compilation/installation de ffmpeg qui est empaqueté avec. Ce n'est pas forcément une bonne idée. Vous pouvez juste aller chercher dans le repetoire archives les sources de pspcv, et compiler à partir de là.
tar xfvz pspvc-0.3.tar.gz cd pspvc-0.3 ./configure make sudo make install
Si ./configure se termine par un message expliquant qu'il manque une dépendance, alors que vous êtes sûr de bien l'avoir déjà, c'est sûrement qu'il manque la version de développement du paquet (les "headers"). Il vous manquera donc certainement le paquet "libgtk2.0-dev", même si vous êtes sous Gnome et que vous avez déjà tous les paquets gtk 2.0 dont "libgtk2.0".
Utilisation
Les vidéos mpeg4 vont dans MP_ROOT/100MNV01
et celles encodées en H264 dans MP_ROOT/100ANV01
WinFF
WinFF permet de convertir à peu près n'importe quoi dans un format lisible par la PSP.
Consultez la page WinFF pour plus d'informations.
Gérer la PSP
qPSP Manager
qPSP Manager est un outil créé par Bernat Ràfales Mulet pour gérer sa PSP, il permet entre autres gérer les PBP, compresser/décompresser les ISO/CSO, gérer les sauvegardes de jeux… Il est aussi capable de transférer le tout sur votre PSP à partir d'Ubuntu.
Les menus
- "PBP File" vous permet de customiser vos homebrew (Devhook, IRShell, ….)
- "ISO Files" vous permet de manipuler un ISO, compresser un ISO en CSO ou décompresser un CSO en ISO et de transférer le tout sur votre PSP.
- "Savegames" quand à lui vous permet de transférer tout ou une partie de vos sauvegardes de l'ordinateur vers votre PSP et inversement.
- "Options", demande de confirmation pour effacement ou écrasement d'une sauvegarde, cacher vos "données endommagées", choisir "l'emplacement" de votre PSP et la possibilité de sauvegarder vos choix d'options Save Preferences
Installation
Il y a deux méthodes pour l'instant. Pour la première, vous devrez compiler le programme avant de pouvoir l'utiliser, pour la seconde, vous n'aurez qu'a installer le paquet.
Première méthode
- Installez les paquets build-essential libqt4-dev zlib1g zlib1g-dev qt4-dev-tools
- si vous avez les paquets suivants d'installer: qt3-dev-tools libqt3-mt-dev, Utilisez la commande qmake-qt4 a la place de qmake ce qui evitera de compiler avec la mauvaise version de qt et donc de generer des erreurs.
- Téléchargez le fichier source qpspmanager-X.X.X.tar.gz depuis le site officiel
- Décompressez le quelque part (votre dossier personnel /home/nomdutilisateur vera l'affaire).
- Ouvrez une console et tapez :
cd qpspmanager-X.X.X
- Ensuite on va commencer à compiler, tapez :
qmake
- Ensuite :
make
src/isocompressor.h:38: error: 'uint32_t' does not name a type
Dans ce cas, éditez le fichier /src/isocompressor.h en vérifiant que les 2 lignes ci dessous soient présente : (Ajouter la/les lignes manquantes )
# include <cstdint> la ligne # include <iostream>
.
Puis lancez la commande qmake. Enfin éditez le fichier Makefile fraichement créé en remplaçant
CXXFLAGS = -pipe -O2 -Wall -W -D_REENTRANT $(DEFINES) par CXXFLAGS = -pipe -O2 -Wall -W -D_REENTRANT $(DEFINES) -std=c++0x
- Enfin, installez le tout en tapant :
sudo make install
sudo cp /home/nomdutilisateur/qpspmanager-X.X.X/bin/QPSPManager /usr/bin/qpspmanager
Ce bug sera résolu dans la future version
- Voilà l'installation est finie, pour lancer le programme, tapez :
qpspmanager
Seconde méthode
- Téléchargez le paquet
si le lien est cassé, ce paquet est aussi disponible sur sourceforge :
télécharger le ici
- Double-cliquez sur l'archive.deb pour l'installer. Suivez simplement les instructions.
- Ensuite attendez jusqu'à la fin de l'opération et lancez QPSPManager en tapant :
qpspmanager
Les images .iso et .cso en ligne de commandes
L'outil qui permet la compression/décompression des fichiers ISO est ciso disponible dans le dépôt universe pour feisty (peut-être autre part aussi mais en tout cas il est là)
Installation
Pour l'installer tapez dans un terminal
sudo apt-get install ciso
Utilisation
ciso niveau fichierentree fichiersortie
ISO > CSO
Le niveau de compression doit être compris entre 1 et 9
Exemple
ciso 5 fichier.iso fichier.cso
CSO > ISO
Le niveau de compression doit être 0.
Exemple
ciso 0 fichier.cso fichier.iso
Une interface graphique pour ciso
Si vous êtes allergique a la ligne de commande il existe une interface graphique : Cso-Dax compressor . C'est un logiciel pour windows mais il existe une version linux qui utilise ciso.
Installation
Il faut télécharger l'archive a cette adresse http://psp.ducseb.net/download/cso-dax/cso-dax_compressor_0.34_linux.zip
Ensuite décompressez là dans votre répertoire personnel.
Maintenant il faut copier 3 fichiers dans : /usr/bin
Pour ça ouvrez un terminal et tapez
sudo cp "/home/VOTRE NOM/CSO DAX COMPRESSOR 0.34 Linux/FR/bin/ciso" "/usr/bin" (ceci copie le fichier ciso)
Puis
sudo cp "/home/VOTRE NOM/CSO DAX COMPRESSOR 0.34 Linux/FR/bin/csoCompiler" "/usr/bin" (ceci copie le fichier csoCompiler)
et enfin
sudo cp "/home/VOTRE NOM/CSO DAX COMPRESSOR 0.34 Linux/FR/bin/daxcr" "/usr/bin" (ceci copie le fichier daxcr)
Plus simple : taper dans un terminal
sudo nautilus (sous Ubuntu) ou sudo konqueror (sous Kubuntu) ou sudo thunar (sous Xubuntu)
et puis faites glisser simplement les fichiers: ciso,csoCompiler et daxcr.
Pour lancer l'interface il suffit de taper en respectant la casse
csoCompiler
Développement et programmation
Pour cela, je vous invite à installer le custom firmware 6.20 PRO-B7, 6.35 PRO-B7 ou 6.39 PRO-B7 (dernière version stable en date en ce 18 Juillet 2011) : tutoriel d'installation. Cette version a le mérite d'être compatible toutes PSPs (PSP1000/2000/3000/Go). Il suffira simplement de mettre à jour votre console en firmware 6.20, 6.35 ou 6.35 selon votre choix et d'installer le custom firmware qui correspond.
Précisons également que flasher sa PSP pour installer un custom firmware est une manipulation légale !
Passons aux choses sérieuses. Pour programmer sur votre console PSP, sachez que le code sera fait sur votre ordinateur, mais celui-ci n'est pas nativement capable de compiler pour une PSP. Il va donc falloir procéder à l'installation d'un environnement de développement pour pouvoir compiler vos programmes à lancer sur votre PSP (on appelle cela de la cross-compilation).
Installation des outils
Tout d'abord, il faut savoir que ces quelques outils vous permettront de programmer sous 3 langages différents sur la PSP:
- Langage C : un standard, et celui que je vous conseillerai pour débuter.
- Langage C++ : un langage orienté objet (mettant en œuvre les notions de classe, héritage, surcharge d'opérateurs…). Bien plus complexe, une bonne base en C est recommandée si vous voulez mieux assimiler ce langage.
- Langage Assembleur MIPS R(S)4000 : le langage d'assembleur de la PSP, seulement pour les expérimentés, et n'est nécessaire que pour ceux voulant faire du hack sur la console ou créer un custom firmware, faire du reverse engineering.
Installation du PSPSDK
via psp.jim.sh
Installez les paquets suivants :
build-essential autoconf automake bison flex libncurses5-dev libreadline-dev libusb-dev texinfo libgmp3-dev libmpfr-dev subversion
Modifiez le fichier .bashrc et mettez-y ceci à la fin :
export PSPDEV="/home/tuto/pspsdk" export PSPSDK="$PSPDEV/psp/sdk" export PATH="$PATH:$PSPDEV/bin:$PSPSDK/bin"
Récupérez les sources :
svn co http://psp.jim.sh/svn/psp/trunk/psptoolchain
Remplacez toutes les occurences de svn://svn.ps2dev.org par http://psp.jim.sh/svn dans le dossiers scripts
.
Puis installez le tout :
. ~/.bashrc sudo ./toolchain-sudo.sh
via un dépôt
Ajoutez le dépôt suivant à vos sources de mises à jour en tapant la commande suivante dans un terminal (Applications → Accessoire → Terminal):
echo "deb http://terbaddo.free.fr/debian default main" | sudo tee -a /etc/apt/sources.list
Rechargez la liste des paquets :
sudo apt-get update
Enfin, installez le paquet psptoolchain
sudo apt-get install psptoolchain
Contributeurs : Terbaddo, Naoki (Administrateur EvoluNoob), Tioneb, Krevan et MrZeroo00, chdorb ,Sarom ,ignace72