Thinair Pour Linux


Fabrice_75015
 Share

Messages recommandés

Bonjour les amis,

je suis le développeur de ThinAir (THinair Is Not An Iso Ripper) un serveur servant à ripper et à streamer les images ISO pour Mac OS X.

La version v0.6.3b est maintenant sous licence GNU GPL, ce qui veut dire que le code source est disponible dans l'archive ici :

http://ooze.multimania.com/NGC/

Voici comment compiler le serveur de ThinAir pour Linux et comment s'en servir. Tout se fera sous le shell car l'interface graphique n'est pas portée pour Linux (avis aux amateurs).

Pour pouvoir compiler ThinAir il faut avoir installé le compilateur GCC pour votre distribution de Linux.

Voici la procédure :

1) Téléchargez l'archive de ThinAir sur ma page Web (c'est un fichier "tar.gz")

2) Décompressez l'archive :

gzip -d ThinAir.tar.gztar -xvf ThinAir.tar

3) Allez dans le répertoire "Source" de ThinAir

4) Editez avec "vi" ou autre le fichier "thinair.c"

5) Remplacez la ligne (au début du code) :

#include <sys/time.h>

par

#include <time.h>

(il faut juste enlever le "sys").

6) Sauvez le code source ainsi modifié

7) Compilez le serveur :

gcc thinair.c -o thinair

8) Un fichier exécutable "thinair" sera généré dans le répertoire courant.

Voilà, le gros du travail est fait !

Maintenant voici la procédure pour Ripper un mini-DVD à l'aide de ThinAir :

1) Lancer PSOLoad et envoyer le fichier "riptool.dol" dans la GameCube (ce fichier est présent dans le répertoire "data" de ThinAir)

2) Une fois que "riptool.dol" est envoyé à la GameCube, lancer ThinAir en mode "rip" :

./thinair -rip <nom du fichier.gcm>

(en remplaçant <nom du fichier.gcm> par le chemin et le nom du fichier que vous voulez créer)

A ce moment, ThinAir va créer un fichier ISO. Attention, il n'écrit rien à l'écran pendant toute la durée du process, donc il ne faut pas s'inquiéter et juste regarder le fichier ISO grossir au fur et à mesure.

Pour streamer un fichier ISO :

1) Lancer PSOLoad et envoyer le fichier "s3-acl.dol" ou "s3-l.dol" (présents dans le répertoire "data" de ThinAir) à la GameCube.

2) Une fois le loader envoyé à la GameCube, lancer ThinAir en mode stream (attention il faut vraiment le faire très vite après PSOLoad, voir en même temps) :

./thinair -load 1 <nom du fichier.gcm>

Le "1" correspond au délai en ms, il peut être modifié sans pb si vous voulez tester d'autres valeurs, et il faut remplacer <nom du fichier.gcm> par le chemin et le nom du fichier que vous voulez streamer.

Pendant que le serveur tourne, il écrit à l'écran des informations relatives aux requêtes, c'est normal.

Voilà !

Maintenant vous savez tout !!

Amusez vous bien et ceux qui veulent peuvent faire une belle GUI pour ThinAir sous Linux, ça pourrait déchirer !!

[MAJ]Méfiance, je suis capable d'avoir laissé dans le répertoire "data", le "riptool.dol" et "s3-acl.dol"/"s3-l.dol" en version patchée PAL 50Hz. Dans la version v0.7b il y aura le code source permettant de switcher tout ça en PAL 50Hz ou NTSC 60Hz.

Modifié par Fabrice_75015
Lien vers le commentaire
Partager sur d'autres sites

Hello !

Je me devoue pour te repondre car personne n'a l'air interessé ici !

Tout se passe pour le mieux avec ThinAir sous linux, par contre il y a interet de rediriger la sortie standard vers /dev/null, parce que le shell se remplit vite (oui certes ça reste du details)

Sinon ça tourne bien (mais ça c'est pas une surprise vu que c'est basé apparement sur glass)

Par contre si une bonne ame avait le courage de se pencher sur le probleme du save hack, je suis pret a lui offrir une boite de Kinder Suprise en dedomagement =)

Bon Amusement a Tous

--

TiX, tombé in love de la femme du devel de thinair =))

Lien vers le commentaire
Partager sur d'autres sites

Merci pour ton dévouement TiX !! :D

En effet ThinAir est basé en parti sur Glass, mais j'y ai apporté des corrections cruciales, car je reste étonné que Glass puisse fonctionner.

Par exemple la variable 'fileoffset' de Glass permettant de se positionner dans le fichier ISO est déclarée sur un 'int', ce qui veut dire qu'elle ne peut pas prendre de valeur supérieure à 32767, ce qui est génant quand on sait qu'une image ISO fait 1.5 Go ;-)

Glass ne peut donc pas streamer au delà des 32 767 premiers octets. Alors cela fonctionne peut être sous Linux mais avec des débordements mémoires. Sous OS X ça plante immédiatement.

La prochaine version de ThinAir devrait apporter la possibilité de bloquer les musiques streamées. Je suis en train d'implémenter cette fonctionnalité, ça peut être interessant !

Pour la sortie standard en effet il faut peut être mieux la diriger vers /dev/null ! :)

Je pensais en effet qu'il y aurait plus de personnes interessées par une version Linux de ce soft.

Modifié par Fabrice_75015
Lien vers le commentaire
Partager sur d'autres sites

Salut Fabrice (et les autres).

Au fait, le #include <time.h> ne marche pas sous OSX ? Au pire on pourrais l'encadrer par un #ifdef _LINUX_ avec le Makefile qui va bien.

A part ça, j'ai fait une essai pour faire une interface glade/python, reprenant un peu le style de ta GUI, et qui offre l'avantage de la portabilité. Voilà ce que ça donne... (juste une GUI, qq idées mais rien de fonctionnel encore...).

A+

PS : J'attends toujours mon adaptateur réseau...

post-42-1082456377.jpg

Lien vers le commentaire
Partager sur d'autres sites

Au fait, le #include <time.h> ne marche pas sous OSX ? Au pire on pourrais l'encadrer par un #ifdef _LINUX_ avec le Makefile qui va bien.

Ben en fait ça marche très bien sous OS X. Mais en vérité j'utilisais cet include pour ma fonction wait(). Or cette fonction ne sert plus à rien, donc dans ThinAir v0.7b il n'y aura plus cet include, ni cette fonction.

A part ça, j'ai fait une essai pour faire une interface glade/python, reprenant un peu le style de ta GUI, et qui offre l'avantage de la portabilité. Voilà ce que ça donne... (juste une GUI, qq idées mais rien de fonctionnel encore...).

Cool !! C'est génial ça !!!! Ca déchire !!!

Pour info, le serveur de ThinAir ne donne pas le taux de transfert lors du rip. Dans ma GUI sur OS X j'ai codé un thread qui se déclenche toutes les deux secondes et qui regarde la taille du fichier ISO en cours de création et qui en déduit la vitesse du taux de transfert et l'affiche dans la GUI.

J'espère que tu auras bientôt ton adaptateur réseau.

Modifié par Fabrice_75015
Lien vers le commentaire
Partager sur d'autres sites

Au fait, le #include <time.h> ne marche pas sous OSX ? Au pire on pourrais l'encadrer par un #ifdef _LINUX_ avec le Makefile qui va bien.

c'est ce que j'ai fait chez moi, ci joint le repertoire Source de thinair avec les modifs qui vont bien pour linux.

Pour la gui je me suis penché un peu sur la question, avec Boa on peut arriver a faire quelquechose de fonctionnel assez rapidement en Python, il ne me reste plus qu'a apprendre Python, mais ça n'a pas l'air trop compliqué !

Source.tar.gz

Lien vers le commentaire
Partager sur d'autres sites

c'est ce que j'ai fait chez moi, ci joint le repertoire Source de thinair avec les modifs qui vont bien pour linux.

Super !

Mais il y a encore plus simple :

supprime le #include <sys/time.h>

et supprime toute la fonction wait() qui est au tout début et là ça compile pour Linux & OS X sans pb !

De toute façon cette fonction n'est appelée nul part, c'était une fonction qui me servait pour débugger (elle a été avantageusement remplacée par la wait_ms juste aprés dans le code).

Modifié par Fabrice_75015
Lien vers le commentaire
Partager sur d'autres sites

Pour la gui je me suis penché un peu sur la question, avec Boa on peut arriver a faire quelquechose de fonctionnel assez rapidement en Python, il ne me reste plus qu'a apprendre Python, mais ça n'a pas l'air trop compliqué !

Python, c'est génial. Facile, puissant et maintenable (ceux qui ont goûté au perl comprendront :rolleyes:). L'essayer c'est l'adopter.

Justement, la GUI que je suis en train de faire est en python, mais plutot que d'utiliser Boa, j'ai utlisé glade-2, qui permet de faire une maquette rapide en GTK2. La partie GUI du ripper est quasi-finie, il ne me reste qu'à voir comment marchent les threads python pour y accrocher les appels au serveur thinair de Fabrice.

Si tu es curieux TiX, je peux te donner les sources de cette GUI en l'état pour que tu y jettes un oeil - ou que tu la complètes ! Je ne mets pas ça en lien direct dans le forum, il faut que ça soit un minimum fonctionnel avant que la meute se jette dessus :wacko:. En attendant voici un screenshot un peu plus abouti. Malheureusement, j'ai bien peur de ne pas pouvoir retoucher à la GUI avant la semaine prochaine...

Ciao.

post-42-1082478992.jpg

Lien vers le commentaire
Partager sur d'autres sites

La partie GUI du ripper est quasi-finie, il ne me reste qu'à voir comment marchent les threads python pour y accrocher les appels au serveur thinair de Fabrice.

Moi je ne me suis pas vraiment embeté :

un ptit import os et j'utilise os.system("thinair "+lesargumentsquivontbien)

Si tu es curieux TiX, je peux te donner les sources de cette GUI en l'état pour que tu y jettes un oeil - ou que tu la complètes !

Avec plaisir =)

je t'envoie un mp pour mon adresse

et puis comme ça je la commercialise, je deviens milliardaire et je t'offre un poste d'homme de menage dans ma multi nationale.. hum hum je m'egare =/

Lien vers le commentaire
Partager sur d'autres sites

Moi je ne me suis pas vraiment embeté :

un ptit import os et j'utilise os.system("thinair "+lesargumentsquivontbien)

Marchera pas. L'appel os.system empeche le raffraichissement de l'affichage, et on ne pourra pas mettre à jour la progressbar par exemple.

En glade1 j'avais fait, il y a qq années, un truc du style :

                while events_pending():                        mainiteration(FALSE)                os.system(command)                widget['progressbar'].update(pcent)

Pour pouvoir updater une progressbar apres l'execution de 'command'. Mais ça n'empêchait pas le raffraichissement de freezer pdt l'execution de l'os.system. Je crois que les threads sont la seule solution (à moins que glade2 gère mieux le raf...).

et puis comme ça je la commercialise, je deviens milliardaire et je t'offre un poste d'homme de menage dans ma multi nationale.. hum hum je m'egare =/

Arghh... Zut, trop tard, je l'ai envoyé... pauvre de moi, une nouvelle vie de millionnaire ratée. Euh... Les hommes de ménage de ta société ont-ils des stock-options :rolleyes: ?

Lien vers le commentaire
Partager sur d'autres sites

Pour la GUI sur Mac OS X, je n'ai pas utilisé de thread pour lancer la commande, mais j'ai utilisé la possibilité de lancer une commande shell en mode asychrone. Cela permet de rendre la main à la GUI et on peut récupérer dans le sdtout et sdterr le résultat en cours de la commande.

Par contre j'ai effectivement codé un thread qui scrute toutes les deux secondes le fichier ISO en cours de création et met à jour la progress bar, la taille du fichier et la vitesse de transfert.

Lien vers le commentaire
Partager sur d'autres sites

j'ai utilisé la possibilité de lancer une commande shell en mode asychrone. Cela permet de rendre la main à la GUI et on peut récupérer dans le sdtout et sdterr le résultat en cours de la commande.

ce que j'avais pressenti pour l'utilisation du module os en python marche bien, il suffit de rajouter un & a la fin de la commande et la gui reprend la main sans pbs,

ce qui fait que l'interface est deja fonctionnelle, mais sans les 'gadgets' tels que la barre de progression, les taux de transferts etc ...

Apres reste a savoir si elle interessera quelqu'un, moi apres tout la ligne de commande ça me plait bien et j'ai deja scripté tout ce qu'il me fallait pour n'avoir qu'une ligne de commande a taper !

Modifié par TiX
Lien vers le commentaire
Partager sur d'autres sites

Puisque ça ne coute rien, la voila =)

Travail fait a partir du projet glade de sully, sans fioritures, pour ceux qui ne sont pas amis avec bash =p

l'archive contient tout ce qu'il faut (thinair, *.dol et l'interface bien sur)

Il reste encore du boulot, mais c'est une petite preview

comme "Vous ne pouvez uploader ce type de fichier" je le laisse sur free :

ThinAir For Linux GUI

si il s'avere qu'elle est utile a quelques personnes, je pense qu'il y aura moyen de travailler un peu plus et de suivre le travail fait pour ThinAir pour mac

Modifié par TiX
Lien vers le commentaire
Partager sur d'autres sites

C'est génial ça !! Beau boulot !!!

Pour information, voici toutes les fonctionnalités proposées par ma GUI sous OS X, si tu veux t'en inspirer :

- Les droits de PSOLoad (car il doit être lancé en SUID root) sont gérés par la GUI

(c'est à dire que s'ils ne sont pas bons la GUI peut refaire les "chmod" qui vont bien)

Une fenêtre de préférences permet de :

- forcer l'utilisation du flag "-i" pour PSOLoad

- donner à PSOLoad la version de PSO (Eur, US ou JAP) ou le laisser en détection automatique

- Forcer l'utilisation des loaders et du ripper en mode PAL 50Hz (lorsque cette option est cochée, ThinAir lance automatiquement "switchtoPAL" qui patch tous les loaders et le ripper en mode PAL 50Hz, le code de "switchtoPAL" et de "switchtoNTSC" sera présent dans la prochaine version de ThinAir),

- et prochainement de changer les adresses IP dans les loaders et le ripper

Ces préférences sont sauvegardées dans un fichier "thinair.prefs" qui est rechargé à chaque lancement de ThinAir.

Pour le ripper :

- L'utilisateur choisi un nom de fichier ".gcm" et clique sur un bouton "Start"

- l'envoie du "riptool.dol" via PSOLoad se fait automatiquement par la GUI,

- puis le lancement de Thinair se fait automatiquement ensuite.

- Un timer se déclenche toutes les deux secondes pour mettre à jour la progress bar, le nombre d'octets reçus et la vitesse de transfert. (Il ne faut pas quele timer se déclenche trop vite pour ne pas plomber le taux de transfert, deux secondes c'est bien).

Pour le loader :

- L'utilisateur peut choisir le loader qu'il veut dans une liste (qui propose ACL, Loader ou MGS) OU aussi choisir d'envoyer un fichier ".dol" de son choix à la GC.

- L'utilisateur peut choisir de un fichier ".gcm" à streamer (dans ce cas le loader ou le ".dol" choisi est envoyé à la console via PSOLoad puis le serveur ThinAir se lance en mode "streaming").

- Une option permet de bypasser l'envoie du loader à la GameCube et de lancer directement ThinAir en mode "streaming". Cette option est pratique pour les jeux ayant deux disques.

- Une zone permet de saisir le délai en ms pour le serveur de stream,

- et prochainement une option permettra de choisir une liste de fichiers à bloquer lors du stream (pour bloquer les musiques par exemple).

Voilà en gros toutes les fonctionnalités de la GUI sous OS X. L'avantage est que l'utilisateur n'a rien à faire de particulier, la GUI gère toutes les possibilités.

J'hésite à rajouter une fenêtre permettant de faire le "psoload -s"....

post-42-1082653047.jpg

Modifié par Fabrice_75015
Lien vers le commentaire
Partager sur d'autres sites

Hello !

Le travail suit son cours, au menu du jour :

- Une option pour nettoyer les isos (gc-shrink)

- La possiblilite d'uploader un .DOL quelconque (avec stream d'iso ou non)

- il est possible de streamer un second iso sans relancer psoload

quelques screenshots ( pour ceux qui ont la flemme d'installer libglade et PyGtk) :

loader.png

ripper.png

Thin Air for Linux GUI v 0.0.1.4

Il reste pas mal d'optimisation a faire : comme recupere le pid des commandes lancées pour eviter de faire du killall a tout va et organiser tout ça en thread pour se permettre les gadgets comme la barre de progression

++

Modifié par TiX
Lien vers le commentaire
Partager sur d'autres sites

Génial ! Ca déchire grave !!

Sur mon Mac j'ai Python qui est nativement installé, mais par contre glade n'existe pas sur Mac...snif...

Sinon pour information ThinAir v0.7b est disponible ici :

http://ooze.multimania.com/NGC/

La seule nouveauté et qu'il est possible de demander au serveur de bloquer certains fichiers pendant le streaming. On peut du coup bloquer facilement certaines musiques dans les jeux.

Il faut bien lire le "Readme.txt" pour comprendre la procédure car ce n'est pas évident. Un exemple est donné avec Ikaruga.

J'ai viré le #include <sys/time.h> donc ça doit compiler comme une fleur sous Linux ;-)

J'ai rajouté le code source qui permet de basculer les loaders et le ripper en PAL 50Hz et en NTSC 60Hz.

Modifié par Fabrice_75015
Lien vers le commentaire
Partager sur d'autres sites

Invité TiX

Je fais suivre les modifs faites par Sully :

au menu du jour :

- Progressbar, Bytes received and speed while ripping are now

supported (threading).

- You can now save preferences.

- Enhanced "Clean ISO" handling.

- Error message when trying to rip and stream simultenaously.

Mise a dispo ici =)

Lien vers le commentaire
Partager sur d'autres sites

Bonjour les amis,

ThinAir v0.7.1b est maintenant disponible sur :

http://ooze.multimania.com/NGC/

ThinAir sait maintenant supprimer les données dites "garbage" comme gc-shrink (mais comme gc-shrink plante sous OS X, j'ai rajouté cette option dans ThinAir).

En principe ThinAir v0.7.1b doit se recompilier sous Linux sans problème.

Bon week-end !

Lien vers le commentaire
Partager sur d'autres sites

Au fait, est ce que quelqu'un pourrait m'envoyer la version compiler linux de thinair????

Merci d'avance  :P

Hello !

Tobicage : tu n'as qu'a prendre la version Linux indiquée par TiX ci-dessus (0.0.1.5), et tu lances "make" depuis l'endroit où tu as décompressé ton tar.bz2.

Si ça ne marche pas, indique-moi le message d'erreur que tu as.

A+

Sully.

Lien vers le commentaire
Partager sur d'autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
 Share