[PS4] Manjaro Linux PS4 V1 disponible

457 visiteurs sur le site | S'incrire

Accédez aux coordonnées de l’ensemble des techniciens professionnels recommandés par logic-sunrise 20 derniers dossiers et tutoriaux
Playstation 3 / 4
[PS4] Manjaro Linux PS4 V1 disponible

Mise à jour de l'article : apparemment EEPLY va travailler (quand il aura le temps) sur l'ajout du support des derniers patchs des drivers GPU par la team Fail0verflow au noyau Linux (BzImage), soyez patients donc, c'est une question de temps que les corrections côté GPU au moins, arrivent ! (Issu du forum gbatemp)
Un simple remplacement de fichier sur la partition FAT32 fera l'affaire. ;-)

 

 

1521486450.png

 

 

 

 

 

Bonjour à tous, comme vous avez dû suivre récemment, Eeply a apporté une contribution au noyau Linux avec le driver du pont Display Port => HDMI Panasonic MN864729, cette avancée nous permet enfin de profiter de la sortie vidéo des PS4 Slim et Pro sous Linux.
 
Dans ces conditions, je me suis m'y au travail, et malgré quelques déboires, j'ai pu en tirer de petite chose, c'est pourquoi je vous apporte une distribution prêt à l'emploi, basée sur ArchLinux, mais avec l'accessibilité d'une Ubuntu.
 
Voici une petite vidéo du boot de Manjaro Linux Gnome, sur une PS4 Pro avec Firmware 4.55 :
 

 
Pourquoi Manjaro ? Parce qu'est elle est à la fois simple à prendre en main, accessible, mais également très modulable, et avantage de taille, rolling release, ce qui signifie qu'elle est mise à jour en temps réel à mesure de la sortie de tous ses composants systèmes (pas de mise à jour à faire tous les X temps comme Ubuntu ou Fedora), mais aussi parce que, basée sur ArchLinux, elle apporte son lot d'outil dont le dépôt communautaire de scripts AUR.
 
Le système de dépôt Aur, communautaire, est très intéressant, il pourrait être le point d'entrée pour que n'importe qui apport sa contribution facilement pour Linux sur PS4 côté logiciel, via ce dépôt, quiconque peut proposer un script, qui va empaqueter automatiquement n'importe quel fichier/logiciel à partir de sources ou binaires pré-compilées. Il est ainsi possible de proposer des applications, des jeux, des fichiers de configuration, ou même... Un noyau Linux sur mesure, des pilotes customisés, etc.. Et le dépôt grouille déjà d'émulateurs, il est ainsi très simple de compiler automatiquement, les dernières révisions issues de github de nombreux émulateurs (RPCS3 y compris.).
Le processeur x86_64 d'AMD est également un très gros avantage de compatibilité avec l'univers PC, avec Linux sous PS4.
 
Vous pourrez apporter vos contributions au dépôt communautaire ici => https://aur.archlinux.org
 

Voici ce qu'apporte la distribution préconfigurée, de multiples solutions d'accès distantes ont été intégrées et activées par défaut pour faciliter débogage et apports :
 
-Noyau Linux 4.9 patché par Eeply pour le pont Panasonic MN864729
-Boot automatique sur Manjaro x64 (basé sur l'initramfs de la vieille version fedora PS4
-Dernières mises à jour incluses (19/03/2018)
-SSH activé par défaut, accès via un PC sur le même réseau local
-X2Go serveur (LXDE uniquement !) activé par défaut, accès local/distant à une session de bureau via X2Go client sous Linux ou Windows.
-Teamviewer 13 préinstallé. (Accès distant à session de bureau)
-Environnements de bureau Gnome, LXDE, Mate.
-Firefox, Thunderbird, Libreoffice, Gnote, Audacious, VLC, Smplayer, Kodi, Filezilla, XCFA, Handbrake.
-Des émulateurs : Fceux (NES) / Nestopia (NES) /Snes9X (Super Nes) / Yabause (Sega Saturn) /PCSXR (PsOne)/PCSX2 (PS2) /PCSSPP (PSP) /Redream Dreamcast) /Reicast (Dreamcast) / CEMU (WiiU)/ Dolphin (GameCube/Wii) / DesMume (Nintendo DS) / MGBA (Game boy/ Game Boy Advance)
-Steam
-Interpréteur Wine + PlayOnLinux, pour installer simplement des jeux et applications Windows sous Linux, sans émulation, nativement.
-Préconfiguration Azerty/Français intégrale.
-Intégration du logiciel Solaar pour le support des dongles Logitech unifying.
-Flatpak (intégration du système de paquetage universel, mais nécessité d'avoir des kernels-headers pour l'utiliser, en attente d'une contribution donc)
-Intégration de la gestion dynamique du swap (fichier d'échange), désactivé par défaut toutefois pour préserver la mémoire flash de vos clés USB, pour l'activez exécutez la commande "sudo systemctl enable swapspace && sudo systemctl start swapspace"
 
 
À propos des bugs et retours de bugs :
 
La distribution Manjaro en elle même n'a pas de soucis particuliers, tous les bugs rencontrés dépendent des 2 autres éléments, le payload permettant de charger le noyau Linux depuis OrbitOS-BSD (qu'il s'agisse de la version de la version de valentinbreiz ou vultra) , et ledit noyau Linux patché par Eeply qui lui va charger l'initramfs (une sorte de minuscule distribution très légère) qui via ses scripts, chargera ensuite une vraie distribution GNU (tous les éléments libres gravitants autour du noyau Linux, de l’environnement de bureau, les services, les API, logiciels, etc...)
 
En effet, les PayLoads de valentinbreiz et vultra sont assez instables lors du chargement initial, en moyenne, on retrouve plusieurs types de crashs/échecs avant de réussis à booter Linux et avoir quelque chose s'affichant à l'écran, très souvent on peut rencontrer un crash complêt de la PS4 avec vérification du disque dur, etc... Ou même, se retrouver avec un écran noir/éteint. Et Dans de rares cas, j'ai même rencontré un Freeze de l'OS de la PS4 au moment de charger Linux, ou le noyau d'Eeply qui ne charge pas la distribution tel qu'il est censé le faire..
 
Un autre bug, vient peut être du fait que ce soit une PS4 Pro et que le pilote proposé par Failoverfl0w n'ait pas été optimisé pour la dernière révision de l'APU d'AMD inclu dans cette version de la console, il y a de nombreux soucis du côté de la gestion des fréquences du GPU de l'APU, c'est pourquoi l'environnement de bureau sous Gnome saccade, de même la prise en charge des résolutions est encore limité au 1080P, quand bien même la sortie HDMI 2.0 devrait aussi bien gérer de la 4K que des résolutions exotiques en 21/9 (3440x1440 et 2560x1440).
De fait, en tout cas sur ma PS4 Pro, seul l'environnement de bureau GNOME avec serveur d'affichage Wayland et pilote graphique logiciel (LLVM) se lance, sous Mate, LXDE, avec Xorg, niet (par contre en accès distant via x2go aucun souci, on peut se servir sans aucun problème de la PS4 comme d'un serveur.)
 
Par ailleurs il n'y a aucun support du Wifi et du Bluetooth actuellement, ni du disque dur interne.

Tous ces bugs rencontrés, ne dépendront que des mises à jour apportées au PayLoad, et au noyau Linux (BzImage) intégré dans la première partition en FAT32, que le PayLoad va venir charger, ce sont les deux seuls éléments dont il faudra se soucier réellement pour corriger les problèmes, et ça sera à voir du côté d'Eeply et valentinbreiz et vultra.
 
Leurs github sont accessibles ici, c'est sur leurs github que vous devrez apporter vos contributions, commits, et retours de bugs, ou même forker leur code :
 
Eeply (noyau & sources Linux): https://github.com/eeply/ps4-linux/
Valentinbreiz (Payload loader noyau Linux): https://github.com/v...4-Linux-Loader/
Vultra (Payload loader Linux) : https://github.com/V...5-Linux-Loader/
 
Les apports de chacun :
 
Au niveau des apports, sachez que la virtualisation est supportée par l'APU AMD, donc théoriquement il est possible de pouvoir lancer VirtualBox. Mais ce dernier a besoin des kernel-headers (les sources) du noyau Linux de Eeply pour pouvoir compiler et charger son module (pilote) et être utilisable.
Il faudra donc qu'une âme charitable propose sur le dépôt communautaire AUR, un paquet intégrant proprement les sources dans un paquet "kernel-headers" tel que c'est fait pour les noyaux prévus pour PC, et pourquoi pas, une gestion des mises à jour du noyau au passage directement sur la partition contenant ce dernier (BzImage)
 
Sachez aussi que quel que soit l'accessoire USB que vous utiliserez, les pilotes que vous voudrez utiliser dépendront essentiellement de deux choses, leur intégration au noyau Linux fourni par Eeply, OU la disponibilité de kernel Headers (les sources du noyau proprement intégrées à la distribution) permettant à tout un chacun de rétro-porter n'importe quel pilote.
 
Enfin, sachez que le Noyau Linux étant libre et open source, il y a de bonnes chances qu'à termes, tous les apports d'Eeply soient intégré au noyau Linux lors du développement de version ultérieures, et une fois qu'un pilote est présent dans le noyau Linux... Il y reste !
Personne ne rencontrera donc les problèmes typiques de Linux sur PS3, avec un OtherOS bridant l'accès au GPU, une architecture peu courante et quasi à l'abandon et un support logiciel sur la durée pauvre. L'architecture PC de la PS4 joue en notre faveur, dans dix ans, il pourra toujours y avoir des mises à jour et un système Linux à jour, donc n'importe lequel de vos apports, sera fait pour durer !
 
 
De même, il serait utile et sympathique qu'un lecteur/contributeur fasse une traduction de cet article en anglais pour GBAtemp et PsHax :manhug:
 
Téléchargements :
 
1er miroir : http://vavar60.online.fr/share/ps4/panasonic_MN864729/
2ème miroir : http://163.172.90.214/ps4linux/

Sources du noyau Linux par Eeeply contenant son patch pour le bridge Panasonic MN864729 => https://github.com/e...archive/1.0.zip
Pilote "radeon" modifié apportant le support du bridge (voir les modifications sur les fichiers ps4_bridge.c, radeon_connectors.c et radeon_encoders.c) => https://github.com/e.../gpu/drm/radeon

Sommes MD5 des fichiers :
 
PS4-Linux-Loader-4.55.bin : e71c6fcf2f5f61034801d929507a08b8
 
Manjaro-PS4-V1.7z.001 : 95296f03a3ca4faead4ec67a0c0f9f86 
Manjaro-PS4-V1.7z.002 : a5b0bc8cdfadf701835a5d91c4e804a6
Manjaro-PS4-V1.7z.003 : b877a101ca2e36fd3cbfe4dbb619f6ea
Manjaro-PS4-V1.7z.004 : a705ff5bc6e399a761f693558d2818bb
Manjaro-PS4-V1.7z.005 : bf5950eed70067f0c57d8d160d39ae9a
Manjaro-PS4-V1.7z.006 : 930fb6b1377f2453a143a9a4d48a5ba0
Manjaro-PS4-V1.7z.007 : 2cacc3b5dc881d4827f17fd3239da567
 
J'ai découpé le fichier IMG avec 7zip pour permettre à ceux ayant de petites connexions d'avoir moins de problèmes, et propose deux miroirs pour les téléchargements.
 
 
Installation :
 
Le principe est le même que Fedora pour firmware 1.76, vous aurez besoin de copier bit à bit, le fichier image sur une clé USB ou un disque dur. Vous pouvez utiliser les outils "gnome-disk-utility" (interface graphique) sous Linux ou DD (en ligne de commande) ou coupler les deux, pour ce faire, vous pouvez même redimensionner la partition Linux ensuite avec Gparted, par exemple, si c'est sur un SSD ou HDD sur port USB 3.0
Attention, la première partition du disque doit toujours être celle en FAT32 contenant le noyau Linux chargé par le Payload, et l'initramfs chargé par le noyau Linux, ensuite vous devez avoir la partition contenant Manjaro, et si vous le souhaitez, vous pouvez même rajouter votre partition EXFAT à côté pour vos applications & cie sur PS4 en usage habituel.
 
Vous pouvez également, si vous utilisez Manjaro Linuxc sur PC, utiliser la commande "mhwd-chroot /dev/sdb2" (remplacez /dev/sdb2 par le bon chemin de la partition système) via un terminal pour vous chrooter directement sur le système installé et modifier à la volée sans être sur PS4, mais sur PC.
 
 
Login :
 
Utilisateur : ps4
Mot de passe : 1
(sudo est fonctionel !)
 
Super administrateur : root
Mot de passe : 1
 
Pour des raisons de sécurité évidentes, pensez à changer le mot de passe ! :yay:
 
 
Rappel & documentation :
 
Encore une fois, ne vous étonnez pas si vous avez des crashs lors du chargement du payload... Ce dernier est encore instable. Par contre quand tout se déroule bien, il n'y a plus de crash (excepté les soucis GPU avec Xorg sur PS4 Pro, mais même quand ça ça plante, la console reste accessible via SSH ou X2Go, il est ainsi possible de redémarrer GDM avec la commande "sudo systemctl restart gdm".
 
Enfin, les touches magiques fonctionnent, Eeply semble les avoir activé par défaut, ainsi un CTRM+MAJ+PRINT+B va forcer un reboot de la console quelle que soit la situation. (Normalement.)
 
Documentation de Manjaro : https://wiki.manjaro...Page_Principale
Forum francophone Manjaro : https://www.manjaro.fr/forum/index.php
Documentation d'ArchLinux : https://wiki.archlinux.org
 
Vous y trouverez tout le nécessaire inhérent à cet écosystème logiciel, de pacman à yaourt pour installer des logiciels, au gestionnaire de pilotes MHWD très simplifié proposé par Manjaro.
 

Remerciement :
 
Eeply, Vultra, ValentinBreiz, qwertyuiop, specter, la team Fail0verflow, Linus Torvalds, Richard Stallman, la team ArchLinux, la Team Manjaro, ainsi que tous les contributeurs de logiciels libres, et tous ceux à venir.

Lundi 19 Mars 2018, 12:56 par tikilou
Source : Moi même.
19 mars 2018, 13:08
Approuver ce commentaire (+1)
Bonour,

Question toute bête : j'utilise linux sur mon pc, je comprends bien son intérêt sur ordinateur.
Qu'est-ce que cela apporte comme fonctionnalité sur console ?
Répondre à ce commentaire
19 mars 2018, 13:14
Approuver ce commentaire (+1)

Bonour,

Question toute bête : j'utilise linux sur mon pc, je comprends bien son intérêt sur ordinateur.
Qu'est-ce que cela apporte comme fonctionnalité sur console ?


A faire des choses que tu ne peux pas faire tourner sur la ps4 actuellement émulateur etc .... mais perso c'est chacun sont avis mais je trouve sa complètement inutile tu veux linux ta le pc qui peut lacceuir sans problème etc de mon point de vue ça sert juste à dire au gens ta vue j'ai réussi à faire tourner linux sur ma ps4
Répondre à ce commentaire
19 mars 2018, 13:21
Approuver ce commentaire (+1)
J'ai l'impression que le payload linux 4.05 me fait des siennes sur ma ps4 Slim (cuh-2015B), est-ce que le payload 4.55 a des chances de mieux fonctionner sur 4.05?
Répondre à ce commentaire
19 mars 2018, 13:21
Approuver ce commentaire (+1)
Le première avancer linux est une catastrophe , la deuxième est quelque peut instable ...ça devient bon! Vivement les mises à jours !
Répondre à ce commentaire
19 mars 2018, 13:22
Approuver ce commentaire (+1)

J'ai l'impression que le payload linux 4.05 me fait des siennes sur ma ps4 Slim (cuh-2015B), est-ce que le payload 4.55 a des chances de mieux fonctionner sur 4.05?

Théoriquement c'est plus stable sur 4.05... tu es sur d'avoir le dernier en date sinon (4.1 il me semble )

Moi sur 4.55 c'est impeccable 2 à 5 fois moyenne , ça prend 10s...
Répondre à ce commentaire
19 mars 2018, 13:35
Approuver ce commentaire (+1)
c'est un super taff merci pour les gens concernés, par contre je doute fort que CEMU tourne (bien) dessus comme mentionné dans la news , si une personne peut faire un retour a ce sujet je suis curieux de savoir :)
merci

(je peut pas perso je suis en 5.01)
Répondre à ce commentaire
Utilisateur en ligne
19 mars 2018, 13:47
Approuver ce commentaire (+1)

Bonour,

Question toute bête : j'utilise linux sur mon pc, je comprends bien son intérêt sur ordinateur.
Qu'est-ce que cela apporte comme fonctionnalité sur console ?


Avoir un écosystème de homebrews plus complet que le peu qu'on a à se mettre sous la dent actuellement sur l'OS d'origine (OrbitOS) de la PS4.

Avec ça, on peut avoir les émulateurs, KODI, etc... Et n'importe qui peut très bien reproduire une interface ressemblant à celle de la PS4 pour faire "console de jeu" dans l'apparence... Si des gens sur les consoles hackées développaient des interfaces optimisées console, rien ne l'empêche sous Linux aussi...

En réalité il sera beaucoup plus simple de développer du Homebrews via Linux sur PS4, que nativement, et les contributions PC seront bénéfiques à la PS4, et celles PS4 bénéfiques à l'univers PC.

Un cercle vertueux en somme.

Bonour,

Question toute bête : j'utilise linux sur mon pc, je comprends bien son intérêt sur ordinateur.
Qu'est-ce que cela apporte comme fonctionnalité sur console ?


A faire des choses que tu ne peux pas faire tourner sur la ps4 actuellement émulateur etc .... mais perso c'est chacun sont avis mais je trouve sa complètement inutile tu veux linux ta le pc qui peut lacceuir sans problème etc de mon point de vue ça sert juste à dire au gens ta vue j'ai réussi à faire tourner linux sur ma ps4


Tout le monde n'a pas un PC gaming tu sais ? La PS4 a un rapport qualité/prix imbattable pour ce matos, avec ça on peut aussi bien faire tourner des jeux/programmes PC, que PS4...
Répondre à ce commentaire
Utilisateur en ligne
19 mars 2018, 13:56
Approuver ce commentaire (+1)
+1

c'est un super taff merci pour les gens concernés, par contre je doute fort que CEMU tourne (bien) dessus comme mentionné dans la news , si une personne peut faire un retour a ce sujet je suis curieux de savoir :)
merci

(je peut pas perso je suis en 5.01)


Peut être sur la Slim, sur la pro en tout cas, pas possible au vu des soucis en matière de pilote gpu (côté fréquences), ce dernier est clairement sous exploité et aurait besoin d'un patch.
Il faut donc voir ça du côté d'Eeply et fail0verflow.

Oh, et désolé pour les nombreuses fautes de l'article au passage, beaucoup d’inattention, j'ai passé des heures sur tout ça, ça m'a mis KO.
Répondre à ce commentaire
19 mars 2018, 14:05
Approuver ce commentaire (+1)
Est ce que çà peut aider les devs à exploiter le noyau des ? ps4 5.x
Répondre à ce commentaire
19 mars 2018, 14:09
Approuver ce commentaire (+1)
+2
@tikilou :

merci pour ta reponse , quand tu dit slim tu englobe aussi la ps4 fat ? (vu que tu y fait pas mention dans ta réponse je demande mais je pense que c'est pareil niveau matos et exploitation )

@HAFEDHBY :

Les devs on deja ce qu'il faut pour exploiter la ps4 en 5.x et non ils on pas attendu linux sur ps4 pour cela
Répondre à ce commentaire
Utilisateur en ligne
19 mars 2018, 14:12
Approuver ce commentaire (+1)
+1

Est ce que çà peut aider les devs à exploiter le noyau des ? ps4 5.x


Il y a déjà une faille privée en 5.x

Par contre le support de Linux peut aider au reverse engeenering de la console, oui.
Répondre à ce commentaire
Utilisateur en ligne
19 mars 2018, 14:13
Approuver ce commentaire (+1)
+2

@tikilou :

merci pour ta reponse , quand tu dit slim tu englobe aussi la ps4 fat ? (vu que tu y fait pas mention dans ta réponse je demande mais je pense que c'est pareil niveau matos et exploitation )


Oui, à tester donc, mais moi je n'ai pas cette version.
Répondre à ce commentaire
19 mars 2018, 14:27
Approuver ce commentaire (+1)

Bonour,

Question toute bête : j'utilise linux sur mon pc, je comprends bien son intérêt sur ordinateur.
Qu'est-ce que cela apporte comme fonctionnalité sur console ?


Avoir un écosystème de homebrews plus complet que le peu qu'on a à se mettre sous la dent actuellement sur l'OS d'origine (OrbitOS) de la PS4.

Avec ça, on peut avoir les émulateurs, KODI, etc... Et n'importe qui peut très bien reproduire une interface ressemblant à celle de la PS4 pour faire "console de jeu" dans l'apparence... Si des gens sur les consoles hackées développaient des interfaces optimisées console, rien ne l'empêche sous Linux aussi...

En réalité il sera beaucoup plus simple de développer du Homebrews via Linux sur PS4, que nativement, et les contributions PC seront bénéfiques à la PS4, et celles PS4 bénéfiques à l'univers PC.

Un cercle vertueux en somme.

Bonour,

Question toute bête : j'utilise linux sur mon pc, je comprends bien son intérêt sur ordinateur.
Qu'est-ce que cela apporte comme fonctionnalité sur console ?


A faire des choses que tu ne peux pas faire tourner sur la ps4 actuellement émulateur etc .... mais perso c'est chacun sont avis mais je trouve sa complètement inutile tu veux linux ta le pc qui peut lacceuir sans problème etc de mon point de vue ça sert juste à dire au gens ta vue j'ai réussi à faire tourner linux sur ma ps4


Tout le monde n'a pas un PC gaming tu sais ? La PS4 a un rapport qualité/prix imbattable pour ce matos, avec ça on peut aussi bien faire tourner des jeux/programmes PC, que PS4...

il n y a pas besoin d'un pc gaming pour faire tourner un émulateur ps1 ps2 nes super nes etc y'a que pour les émulateur GameCube etc que ça peux être très intéressent et faudrais que cela soit etudier pour ce genre d emulateur pour ce qui et de faire tourner des programme je pense que ceci et plus réserver à des gens spécifique et non à Mr tout le monde

Après comme j'ai dit chacun sont avis pour ce qui et du miens je trouve ça entièrement inutile mais cela fait un truc quand même en plus pour la ps4 :)
Répondre à ce commentaire
Utilisateur en ligne
19 mars 2018, 14:36
Approuver ce commentaire (+1)
Chacun son avis... C'est inutile pour toi, mais de mon côté, entre mon i5-7200u et son gpu intel intégré, et l'APU d'AMD sur PS4, il y a un gouffre de performances...
Sur mon laptop, je ne peux pas jouer, sinon à de vieux émulateurs.

La PS4 a ce potentiel là, sans parler de l'aspect "plateforme multimedia" avec Kodi.
Répondre à ce commentaire
19 mars 2018, 14:39
Approuver ce commentaire (+1)
Je vais refaire le test avec Manjaro, mais je n'ai jamais réussi a lancer le shell Linux ne serais-ce qu'une seule fois sur slim...
Répondre à ce commentaire
Utilisateur en ligne
19 mars 2018, 14:44
Approuver ce commentaire (+1)

Je vais refaire le test avec Manjaro, mais je n'ai jamais réussi a lancer le shell Linux ne serais-ce qu'une seule fois sur slim...


Je REpréviens à nouveau, réussir à booter Linux c'est côton, le Payload a vraiment du mal... Il faut insister de nombreuses fois.

Avant cette vidéo, alors que précédemment j'avais booté 3 fois d'affilé sans aucun soucis, j'ai mis 1/4H à avoir de nouveau un boot fonctionnel, entretemps au moins 6 ou 7 crashs...


M'enfin bon, c'est un début, faut attendre que valentinbreiz le stabilise, et que eeply fasse des majs.
Répondre à ce commentaire
19 mars 2018, 14:49
Approuver ce commentaire (+1)

Bonjour, est-ce que cette version de linux est compatible avec les premières ps4 ? faut-il changer les initframs dans ce cas ?

Répondre à ce commentaire
Utilisateur en ligne
19 mars 2018, 15:00
Approuver ce commentaire (+1)

Bonjour, est-ce que cette version de linux est compatible avec les premières ps4 ? faut-il changer les initframs dans ce cas ?


Qui peut le plus peut le moins, ça fonctionnera aussi. ;)
Répondre à ce commentaire
Utilisateur en ligne
19 mars 2018, 15:19
Approuver ce commentaire (+1)
+1
Pour les curieux, voilà le code du pilote Panasonic, qu'il nous manquait auparavant :

Il a vraiment bien bossé Eeply
 
/*
 * Panasonic mn864729 DP->HDMI bridge driver (via PS4 Aeolia ICC interface)
 *
 * This software is licensed under the terms of the GNU General Public
 * License version 2, as published by the Free Software Foundation, and
 * may be copied, distributed, and modified under those terms.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 */

#include <asm/ps4.h>

#include "drm_crtc.h"
#include "drm_crtc_helper.h"
#include "drm_atomic_helper.h"
#include "drm_edid.h"
#include "drmP.h"

#include "radeon_mode.h"
#include "ObjectID.h"

#define CMD_READ	1, 1
#define CMD_WRITE	2, 2
#define CMD_MASK	2, 3
#define CMD_DELAY	3, 1
#define CMD_WAIT_SET	3, 2
#define CMD_WAIT_CLEAR	3, 3

#define TSYSCTRL 0x7005
# define TSYSCTRL_HDMI BIT(7)

#define TSRST 0x7006
# define TSRST_AVCSRST BIT(0)
# define TSRST_ENCSRST BIT(1)
# define TSRST_FIFOSRST BIT(2)
# define TSRST_CCSRST BIT(3)
# define TSRST_HDCPSRST BIT(4)
# define TSRST_AUDSRST BIT(6)
# define TSRST_VIFSRST BIT(7)

#define TMONREG 0x7008
# define TMONREG_HPD BIT(3)

#define TDPCMODE 0x7009


#define UPDCTRL 0x7011
# define UPDCTRL_ALLUPD BIT(7)
# define UPDCTRL_AVIIUPD BIT(6)
# define UPDCTRL_AUDIUPD BIT(5)
# define UPDCTRL_CLKUPD BIT(4)
# define UPDCTRL_HVSIUPD BIT(3)
# define UPDCTRL_VIFUPD BIT(2)
# define UPDCTRL_AUDUPD BIT(1)
# define UPDCTRL_CSCUPD BIT(0)


#define VINCNT 0x7040
# define VINCNT_VIF_FILEN BIT(6)

#define VMUTECNT 0x705f
# define VMUTECNT_CCVMUTE BIT(7)
# define VMUTECNT_DUMON BIT(6)
# define VMUTECNT_LINEWIDTH_80 (0<<4)
# define VMUTECNT_LINEWIDTH_90 (1<<4)
# define VMUTECNT_LINEWIDTH_180 (2<<4)
# define VMUTECNT_LINEWIDTH_360 (3<<4)
# define VMUTECNT_VMUTE_MUTE_ASYNC 1
# define VMUTECNT_VMUTE_MUTE_NORMAL 2
# define VMUTECNT_VMUTE_MUTE_RAMPA 4
# define VMUTECNT_VMUTE_MUTE_RAMPB 8
# define VMUTECNT_VMUTE_MUTE_COLORBAR_RGB 10
# define VMUTECNT_VMUTE_MUTE_TOGGLE 12
# define VMUTECNT_VMUTE_MUTE_COLORBAR_YCBCR 14

#define CSCMOD 0x70c0
#define C420SET 0x70c2
#define OUTWSET 0x70c3

#define PKTENA 0x7202

#define INFENA 0x7203
# define INFENA_AVIEN BIT(6)

#define AKESTA 0x7a84
# define AKESTA_BUSY BIT(0)

#define AKESRST 0x7a88

#define HDCPEN 0x7a8b
# define HDCPEN_NONE 0x00
# define HDCPEN_ENC_EN 0x03
# define HDCPEN_ENC_DIS 0x05


struct i2c_cmd_hdr {
	u8 major;
	u8 length;
	u8 minor;
	u8 count;
} __packed;

struct i2c_cmdqueue {
	struct {
		u8 code;
		u16 length;
		u8 count;
		u8 cmdbuf[0x7ec];
	} __packed req;
	struct {
		u8 res1, res2;
		u8 unk1, unk2;
		u8 count;
		u8 databuf[0x7eb];
	} __packed reply;

	u8 *p;
	struct i2c_cmd_hdr *cmd;
};

struct mn864729_bridge {
	struct drm_connector *connector;
	struct drm_encoder *encoder;
	struct drm_bridge bridge;
	struct i2c_cmdqueue cq;
	struct mutex mutex;

	int mode;
};

/* this should really be taken care of by the connector, but that is currently
 * contained/owned by radeon_connector so just use a global for now */
static struct mn864729_bridge g_bridge = {
	.mutex = __MUTEX_INITIALIZER(g_bridge.mutex)
};

static void cq_init(struct i2c_cmdqueue *q, u8 code)
{
	q->req.code = code;
	q->req.count = 0;
	q->p = q->req.cmdbuf;
	q->cmd = NULL;
}

static void cq_cmd(struct i2c_cmdqueue *q, u8 major, u8 minor)
{
	if (!q->cmd || q->cmd->major != major || q->cmd->minor != minor) {
		if (q->cmd)
			q->cmd->length = q->p - (u8 *)q->cmd;
		q->cmd = (struct i2c_cmd_hdr *)q->p;
		q->cmd->major = major;
		q->cmd->minor = minor;
		q->cmd->length = 0;
		q->cmd->count = 1;
		q->req.count += 1;
		q->p += sizeof(*q->cmd);
	} else {
		q->cmd->count += 1;
	}
}

static int cq_exec(struct i2c_cmdqueue *q)
{
	int res;

	if (!q->cmd)
		return 0;

	q->cmd->length = q->p - (u8 *)q->cmd;
	q->req.length = q->p - (u8 *)&q->req;

	res = apcie_icc_cmd(0x10, 0, &q->req, q->req.length,
		      &q->reply, sizeof(q->reply));

	if (res < 5) {
		DRM_ERROR("icc i2c commandqueue failed: %d\n", res);
		return -EIO;
	}
	if (q->reply.res1 != 0 || q->reply.res2) {
		DRM_ERROR("icc i2c commandqueue failed: %d, %d\n",
			  q->reply.res1, q->reply.res2);
		return -EIO;
	}

	return res;
}

static void cq_read(struct i2c_cmdqueue *q, u16 addr, u8 count)
{
	cq_cmd(q, CMD_READ);
	*q->p++ = count;
	*q->p++ = addr >> 8;
	*q->p++ = addr & 0xff;
	*q->p++ = 0;
}

static void cq_writereg(struct i2c_cmdqueue *q, u16 addr, u8 data)
{
	cq_cmd(q, CMD_WRITE);
	*q->p++ = 1;
	*q->p++ = addr >> 8;
	*q->p++ = addr & 0xff;
	*q->p++ = data;
}

#if 0
static void cq_write(struct i2c_cmdqueue *q, u16 addr, u8 *data, u8 count)
{
	cq_cmd(q, CMD_WRITE);
	*q->p++ = count;
	*q->p++ = addr >> 8;
	*q->p++ = addr & 0xff;
	while (count--)
		*q->p++ = *data++;
}
#endif

static void cq_mask(struct i2c_cmdqueue *q, u16 addr, u8 value, u8 mask)
{
	cq_cmd(q, CMD_MASK);
	*q->p++ = 1;
	*q->p++ = addr >> 8;
	*q->p++ = addr & 0xff;
	*q->p++ = value;
	*q->p++ = mask;
}

#if 0
static void cq_delay(struct i2c_cmdqueue *q, u16 time)
{
	cq_cmd(q, CMD_DELAY);
	*q->p++ = 0;
	*q->p++ = time & 0xff;
	*q->p++ = time>>8;
	*q->p++ = 0;
}
#endif

static void cq_wait_set(struct i2c_cmdqueue *q, u16 addr, u8 mask)
{
	cq_cmd(q, CMD_WAIT_SET);
	*q->p++ = 0;
	*q->p++ = addr >> 8;
	*q->p++ = addr & 0xff;
	*q->p++ = mask;
}

static void cq_wait_clear(struct i2c_cmdqueue *q, u16 addr, u8 mask)
{
	cq_cmd(q, CMD_WAIT_CLEAR);
	*q->p++ = 0;
	*q->p++ = addr >> 8;
	*q->p++ = addr & 0xff;
	*q->p++ = mask;
}

static inline struct mn864729_bridge *
		bridge_to_mn864729(struct drm_bridge *bridge)
{
	return container_of(bridge, struct mn864729_bridge, bridge);
}

static void mn864729_mode_set(struct drm_bridge *bridge,
			      struct drm_display_mode *mode,
			      struct drm_display_mode *adjusted_mode)
{
	struct mn864729_bridge *mn_bridge = bridge_to_mn864729(bridge);

	/* This gets called before pre_enable/enable, so we just stash
	 * the vic ID for later */
	mn_bridge->mode = drm_match_cea_mode(adjusted_mode);
	DRM_DEBUG_KMS("vic mode: %d\n", mn_bridge->mode);
	if (!mn_bridge->mode) {
		DRM_ERROR("attempted to set non-CEA mode\n");
	}
}

static void mn864729_pre_enable(struct drm_bridge *bridge)
{
	struct mn864729_bridge *mn_bridge = bridge_to_mn864729(bridge);
	DRM_DEBUG_KMS("mn864729_pre_enable\n");

	mutex_lock(&mn_bridge->mutex);
	cq_init(&mn_bridge->cq, 4);

#if 0
	/* No idea. DP stuff probably. This borks for some reason. Meh. */
	cq_writereg(&mn_bridge->cq, 0x7657,0xff);
	cq_writereg(&mn_bridge->cq, 0x76a5,0x80);
	cq_writereg(&mn_bridge->cq, 0x76a6,0x04);
	cq_writereg(&mn_bridge->cq, 0x7601,0x0a);
	cq_writereg(&mn_bridge->cq, 0x7602,0x84);
	cq_writereg(&mn_bridge->cq, 0x7603,0x00);
	cq_writereg(&mn_bridge->cq, 0x76a8,0x09);
	cq_writereg(&mn_bridge->cq, 0x76ae,0xd1);
	cq_writereg(&mn_bridge->cq, 0x76af,0x50);
	cq_writereg(&mn_bridge->cq, 0x76b0,0x70);
	cq_writereg(&mn_bridge->cq, 0x76b1,0xb0);
	cq_writereg(&mn_bridge->cq, 0x76b2,0xf0);
	cq_writereg(&mn_bridge->cq, 0x76db,0x00);
	cq_writereg(&mn_bridge->cq, 0x76dc,0x64);
	cq_writereg(&mn_bridge->cq, 0x76dd,0x22);
	cq_writereg(&mn_bridge->cq, 0x76e4,0x00);
	cq_writereg(&mn_bridge->cq, 0x76e6,0x1e); /* 0 for (DP?) scramble off */
	cq_writereg(&mn_bridge->cq, 0x7670,0xff);
	cq_writereg(&mn_bridge->cq, 0x7671,0xff);
	cq_writereg(&mn_bridge->cq, 0x7672,0xff);
	cq_writereg(&mn_bridge->cq, 0x7673,0xff);
	cq_writereg(&mn_bridge->cq, 0x7668,0xff);
	cq_writereg(&mn_bridge->cq, 0x7669,0xff);
	cq_writereg(&mn_bridge->cq, 0x766a,0xff);
	cq_writereg(&mn_bridge->cq, 0x766b,0xff);
	cq_writereg(&mn_bridge->cq, 0x7655,0x04);
	cq_writereg(&mn_bridge->cq, 0x7007,0xff);
	cq_writereg(&mn_bridge->cq, 0x7098,0xff);
	cq_writereg(&mn_bridge->cq, 0x7099,0x00);
	cq_writereg(&mn_bridge->cq, 0x709a,0x0f);
	cq_writereg(&mn_bridge->cq, 0x709b,0x00);
	cq_writereg(&mn_bridge->cq, 0x709c,0x50);
	cq_writereg(&mn_bridge->cq, 0x709d,0x00);
	cq_writereg(&mn_bridge->cq, 0x709e,0x00);
	cq_writereg(&mn_bridge->cq, 0x709f,0xd0);
	cq_writereg(&mn_bridge->cq, 0x7a9c,0x2e);
	cq_writereg(&mn_bridge->cq, 0x7021,0x04);
	cq_writereg(&mn_bridge->cq, 0x7028,0x00);
	cq_writereg(&mn_bridge->cq, 0x7030,0xa3);
	cq_writereg(&mn_bridge->cq, 0x7016,0x04);
#endif

	/* Disable InfoFrames */
	cq_writereg(&mn_bridge->cq, INFENA, 0x00);
	/* Reset HDCP */
	cq_writereg(&mn_bridge->cq, TSRST, TSRST_ENCSRST | TSRST_HDCPSRST);
	/* Disable HDCP flag */
	cq_writereg(&mn_bridge->cq, TSRST, HDCPEN_ENC_DIS);
	/* HDCP AKE reset */
	cq_writereg(&mn_bridge->cq, AKESRST, 0xff);
	/* Wait AKE busy */
	cq_wait_clear(&mn_bridge->cq, AKESTA, AKESTA_BUSY);

	if (cq_exec(&mn_bridge->cq) < 0) {
		DRM_ERROR("failed to run pre-enable sequence");
	}
	mutex_unlock(&mn_bridge->mutex);
}

static void mn864729_enable(struct drm_bridge *bridge)
{
	struct mn864729_bridge *mn_bridge = bridge_to_mn864729(bridge);
	u8 dp[3];

	if (!mn_bridge->mode) {
		DRM_ERROR("mode not available\n");
		return;
	}

	DRM_DEBUG_KMS("mn864729_enable (mode: %d)\n", mn_bridge->mode);

	/* Here come the dragons */

	mutex_lock(&mn_bridge->mutex);
	cq_init(&mn_bridge->cq, 4);

	cq_mask(&mn_bridge->cq, 0x6005, 0x01, 0x01);
	cq_writereg(&mn_bridge->cq, 0x6a03, 0x47);


	/* Wait for DP lane status */

	cq_wait_set(&mn_bridge->cq, 0x60f8, 0xff);
	cq_wait_set(&mn_bridge->cq, 0x60f9, 0x01);
	/* Wait for ?? */
	cq_writereg(&mn_bridge->cq, 0x6a01, 0x4d);
	cq_wait_set(&mn_bridge->cq, 0x60f9, 0x1a);


	cq_mask(&mn_bridge->cq, 0x1e00, 0x00, 0x01);
	cq_mask(&mn_bridge->cq, 0x1e02, 0x00, 0x70);

	cq_writereg(&mn_bridge->cq, 0x6020, 0x00);
	cq_writereg(&mn_bridge->cq, 0x7402, 0x1c);
	cq_writereg(&mn_bridge->cq, 0x6020, 0x04);
	cq_writereg(&mn_bridge->cq, TSYSCTRL, TSYSCTRL_HDMI);
	cq_writereg(&mn_bridge->cq, 0x10c7, 0x38);
	cq_writereg(&mn_bridge->cq, 0x1e02, 0x88);
	cq_writereg(&mn_bridge->cq, 0x1e00, 0x66);
	cq_writereg(&mn_bridge->cq, 0x100c, 0x01);
	cq_writereg(&mn_bridge->cq, TSYSCTRL, TSYSCTRL_HDMI);

	cq_writereg(&mn_bridge->cq, 0x7009, 0x00);
	cq_writereg(&mn_bridge->cq, 0x7040, 0x42);
	cq_writereg(&mn_bridge->cq, 0x7225, 0x28);
	cq_writereg(&mn_bridge->cq, 0x7227, mn_bridge->mode);
	cq_writereg(&mn_bridge->cq, 0x7228, 0x00);
	cq_writereg(&mn_bridge->cq, 0x7070, mn_bridge->mode);
	cq_writereg(&mn_bridge->cq, 0x7071, mn_bridge->mode | 0x80);
	cq_writereg(&mn_bridge->cq, 0x7072, 0x00);
	cq_writereg(&mn_bridge->cq, 0x7073, 0x00);
	cq_writereg(&mn_bridge->cq, 0x7074, 0x00);
	cq_writereg(&mn_bridge->cq, 0x7075, 0x00);
	cq_writereg(&mn_bridge->cq, 0x70c4, 0x0a);
	cq_writereg(&mn_bridge->cq, 0x70c5, 0x0a);
	cq_writereg(&mn_bridge->cq, 0x70c2, 0x00);
	cq_writereg(&mn_bridge->cq, 0x70fe, 0x12);
	cq_writereg(&mn_bridge->cq, 0x70c3, 0x10);
	cq_writereg(&mn_bridge->cq, 0x10c5, 0x00);
	cq_writereg(&mn_bridge->cq, 0x10f6, 0xff);
	cq_writereg(&mn_bridge->cq, 0x7202, 0x20);
	cq_writereg(&mn_bridge->cq, 0x7203, 0x60);
	cq_writereg(&mn_bridge->cq, 0x7011, 0xd5);
	cq_writereg(&mn_bridge->cq, 0x7a00, 0x0e);
	cq_wait_set(&mn_bridge->cq, 0x10f6, 0x80);
	cq_mask(&mn_bridge->cq, 0x7226, 0x00, 0x80);
	cq_mask(&mn_bridge->cq, 0x7228, 0x00, 0xFF);
	cq_writereg(&mn_bridge->cq, 0x7204, 0x40);
	cq_wait_clear(&mn_bridge->cq, 0x7204, 0x40);
	cq_writereg(&mn_bridge->cq, 0x7a8b, 0x05);
	cq_mask(&mn_bridge->cq, 0x1e02, 0x70, 0x70);
	cq_mask(&mn_bridge->cq, 0x1034, 0x02, 0x02);
	cq_mask(&mn_bridge->cq, 0x1e00, 0x01, 0x01);
	cq_writereg(&mn_bridge->cq, VMUTECNT, VMUTECNT_LINEWIDTH_90);
	if (cq_exec(&mn_bridge->cq) < 0) {
		DRM_ERROR("Failed to configure bridge mode\n");
	}

	mutex_unlock(&mn_bridge->mutex);
}

static void mn864729_disable(struct drm_bridge *bridge)
{
	struct mn864729_bridge *mn_bridge = bridge_to_mn864729(bridge);
	DRM_DEBUG_KMS("mn864729_disable\n");

	mutex_lock(&mn_bridge->mutex);
	cq_init(&mn_bridge->cq, 4);
	cq_writereg(&mn_bridge->cq, VMUTECNT, VMUTECNT_LINEWIDTH_90 | VMUTECNT_VMUTE_MUTE_NORMAL);
	cq_writereg(&mn_bridge->cq, INFENA, 0x00);
	if (cq_exec(&mn_bridge->cq) < 0) {
		DRM_ERROR("Failed to disable bridge\n");
	}
	mutex_unlock(&mn_bridge->mutex);
}

static void mn864729_post_disable(struct drm_bridge *bridge)
{
	/* struct mn864729_bridge *mn_bridge = bridge_to_mn864729(bridge); */
	DRM_DEBUG_KMS("mn864729_post_disable\n");
}

/* Hardcoded modes, since we don't really know how to do custom modes yet.
 * Other CEA modes *should* work (and are allowed if externally added) */

/* 1 - 640x480@60Hz */
static const struct drm_display_mode mode_480p = {
	DRM_MODE("640x480", DRM_MODE_TYPE_DRIVER, 25175, 640, 656,
		 752, 800, 0, 480, 490, 492, 525, 0,
		 DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC),
	.vrefresh = 60, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_4_3
};
/* 4 - 1280x720@60Hz */
static const struct drm_display_mode mode_720p = {
	DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 74250, 1280, 1390,
		 1430, 1650, 0, 720, 725, 730, 750, 0,
		 DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC),
	.vrefresh = 60, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9
};
/* 16 - 1920x1080@60Hz */
static const struct drm_display_mode mode_1080p = {
	DRM_MODE("1920x1080", DRM_MODE_TYPE_DRIVER, 148500, 1920, 2008,
		 2052, 2200, 0, 1080, 1084, 1089, 1125, 0,
		 DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC),
	.vrefresh = 60, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9
};

int mn864729_get_modes(struct drm_connector *connector)
{
	struct drm_device *dev = connector->dev;
	struct drm_display_mode *newmode;
	DRM_DEBUG_KMS("mn864729_get_modes\n");

	newmode = drm_mode_duplicate(dev, &mode_1080p);
	drm_mode_probed_add(connector, newmode);
	//newmode = drm_mode_duplicate(dev, &mode_720p);
	//drm_mode_probed_add(connector, newmode);
	//newmode = drm_mode_duplicate(dev, &mode_480p);
	//drm_mode_probed_add(connector, newmode);

	drm_mode_connector_update_edid_property(connector, NULL);

	return 0;
}

enum drm_connector_status mn864729_detect(struct drm_connector *connector,
		bool force)
{
	struct mn864729_bridge *mn_bridge = &g_bridge;
	u8 reg;

	struct radeon_connector *radeon_connector = to_radeon_connector(connector);
	struct radeon_connector_atom_dig *radeon_dig_connector = radeon_connector->con_priv;

	radeon_dig_connector->dp_sink_type = CONNECTOR_OBJECT_ID_DISPLAYPORT;
	radeon_dp_getdpcd(radeon_connector);

	mutex_lock(&mn_bridge->mutex);
	cq_init(&mn_bridge->cq, 4);
	cq_read(&mn_bridge->cq, TMONREG, 1);
	if (cq_exec(&mn_bridge->cq) < 9) {
		mutex_unlock(&mn_bridge->mutex);
		DRM_ERROR("could not read TMONREG");
		return connector_status_disconnected;
	}
	reg = mn_bridge->cq.reply.databuf[3];
	mutex_unlock(&mn_bridge->mutex);

	DRM_DEBUG_KMS("TMONREG=0x%02x\n", reg);

	if (reg & TMONREG_HPD)
		return connector_status_connected;
	else
		return connector_status_disconnected;
}

int mn864729_mode_valid(struct drm_connector *connector,
				  struct drm_display_mode *mode)
{
	int vic = drm_match_cea_mode(mode);

	/* Allow anything that we can match up to a VIC (CEA modes) */
	if (!vic || vic != 16) {
		return MODE_BAD;
	}

	return MODE_OK;
}

static int mn864729_bridge_attach(struct drm_bridge *bridge)
{
	/* struct mn864729_bridge *mn_bridge = bridge_to_mn864729(bridge); */

	return 0;
}

static struct drm_bridge_funcs mn864729_bridge_funcs = {
	.pre_enable = mn864729_pre_enable,
	.enable = mn864729_enable,
	.disable = mn864729_disable,
	.post_disable = mn864729_post_disable,
	.attach = mn864729_bridge_attach,
	.mode_set = mn864729_mode_set
};

int mn864729_bridge_register(struct drm_connector *connector,
			     struct drm_encoder *encoder)
{
	int ret;
	struct mn864729_bridge *mn_bridge = &g_bridge;
	struct drm_device *dev = connector->dev;

	mn_bridge->encoder = encoder;
	mn_bridge->connector = connector;
	mn_bridge->bridge.funcs = &mn864729_bridge_funcs;
	ret = drm_bridge_attach(dev, &mn_bridge->bridge);
	if (ret) {
		DRM_ERROR("Failed to initialize bridge with drm\n");
		return -EINVAL;
	}

	encoder->bridge = &mn_bridge->bridge;

	return 0;
}
Répondre à ce commentaire
19 mars 2018, 15:34
Approuver ce commentaire (+1)

Je REpréviens à nouveau, réussir à booter Linux c'est côton, le Payload a vraiment du mal... Il faut insister de nombreuses fois.

J'ai bien compris, mais vu que ça n'a jamais fonctionné chez moi malgrès les dizaines d'essais effectués, je suis incapable de faire une comparaison avec tel ou tel fichier pour savoir ce qui marche le mieux, ou tout simplement si j'ai vraiment les bons fichiers...

Répondre à ce commentaire
19 mars 2018, 15:46
Approuver ce commentaire (+1)
Du coup j'ai une question importante. Est ce que les drivers amd fonctionnent sur ce système ? Sont-ils preinstallés?

Car la dernière fois l'émulation wii était très lente avec le système fedora tout fait
Répondre à ce commentaire
Utilisateur en ligne
19 mars 2018, 15:59
Approuver ce commentaire (+1)

Du coup j'ai une question importante. Est ce que les drivers amd fonctionnent sur ce système ? Sont-ils preinstallés?

Car la dernière fois l'émulation wii était très lente avec le système fedora tout fait


Ça ne dépend pas de la distribution, Fedora n'y était pour rien, ce sont les pilotes en eux même qui nécessitent des contributions.
Il y a eu des mises à jour depuis, mais pour la ps4 pro par exemple, son support est tout frais, et comme le gpu n'est pas exactement le même, ça coince.

Ici pas de miracles, plus il y aura d'utilisateurs et contributeurs, meilleures seront les pilotes spécifiques à la PS4, et il y a du boulot... Pas que pour le gpu.
Toutefois ça sera infiniment moins laborieux que la PS3.

D'ailleurs on a quand même de sacrés développeurs sur le coup, Eeply a développé un driver pour une puce n'ayant aucune spécification publique et sur laquelle le reverse engineering semblait très complexe. Le gpu AMD a l'avantage lui, d'être en partie documenté, il ne serait pas surprenant qu'il y ait de belles avancées prochainement.
Répondre à ce commentaire
19 mars 2018, 16:04
Approuver ce commentaire (+1)
D'accord parce que la j'ai une ps4 FAT classique et je voulais savoir si sur ce build les drivers fonctionnaient mieux
Répondre à ce commentaire
19 mars 2018, 16:05
Approuver ce commentaire (+1)
Mais tu n'a pas répondu à la question . Il y a des drivers vidéos installés ? Pour ps4 fat sur cet OS
Répondre à ce commentaire
Utilisateur en ligne
19 mars 2018, 16:08
Approuver ce commentaire (+1)

Mais tu n'a pas répondu à la question . Il y a des drivers vidéos installés ? Pour ps4 fat sur cet OS


En toute logique ils sont déjà intégrés au noyau. Mais je n'ai pas de PS4 fat pour tester.
Teste par toi même et fait ton retour ici et sur le github d'Eeply
Répondre à ce commentaire
19 mars 2018, 16:28
Approuver ce commentaire (+1)
Merci tikilou pour tout ton taf =) Plus qu'à tester maintenant :)
Répondre à ce commentaire
19 mars 2018, 16:50
Approuver ce commentaire (+1)

Merci o/

Répondre à ce commentaire
19 mars 2018, 17:34
Approuver ce commentaire (+1)
Slt tout le monde savait vous si le son est enfin supporter en hdmi et se qu il manque pour l avoir ?
Répondre à ce commentaire
19 mars 2018, 17:35
Approuver ce commentaire (+1)

Est ce que çà peut aider les devs à exploiter le noyau des ? ps4 5.x

Il y a déjà une faille privée en 5.xPar contre le support de Linux peut aider au reverse engeenering de la console, oui.


je m'en doute de cette faille je commence vraiment a perdre patience surtout aprés les derniers tweets de qwerty
Répondre à ce commentaire
19 mars 2018, 17:38
Approuver ce commentaire (+1)

Mais tu n'a pas répondu à la question . Il y a des drivers vidéos installés ? Pour ps4 fat sur cet OS


Oui mais le son était pas supporté avant et je ne sait pas si le son est dispos avec les avancées depuis janvier
Répondre à ce commentaire
Utilisateur en ligne
19 mars 2018, 18:03
Approuver ce commentaire (+1)
Juste pour la petite info, concernant ceux qui s'interrogaient sur le son, je n'ai pas eu le temps de tester moi même, mais le noyau Linux supportera sans aucun souci plein de dongles bluetooth, wifi, des cartes son externe... Sur USB ! :)
Pour les plus pressés, ça peut dépanner ! :)

Et souvenez vous qu'avec Amazon, vous avez un mois pour renvoyer sans frais et être remboursé... :P
Répondre à ce commentaire
19 mars 2018, 18:05
Approuver ce commentaire (+1)
Je viens de tester tes fichiers. La PS4 reste allumée, mais j'ai un écran noir (parfois même l'écran qui ne reçois plus de signal).
C'est déjà mieux que ce que j'avais avant (extinction brutales...)
Répondre à ce commentaire
19 mars 2018, 18:15
Approuver ce commentaire (+1)

Je vais tester ce système en 4.05

Répondre à ce commentaire
Utilisateur en ligne
19 mars 2018, 18:33
Approuver ce commentaire (+1)

Je viens de tester tes fichiers. La PS4 reste allumée, mais j'ai un écran noir (parfois même l'écran qui ne reçois plus de signal).
C'est déjà mieux que ce que j'avais avant (extinction brutales...)


Oui, il faut essayer un bon nombre de fois, pour ne plus avoir ce souci. (Et malgré tout il y a quand même parfois des crashs (extinction brutale)

J'ai oublié de noter aussi, de mon côté je branche le média de stockage à l'arrière de la console, et rien d'autre que le récepteur sans fil logitech n'est branché à l'avant.

SI tu as un écran noir sans extinction de ce dernier, il y a des chances que l'OS se soit chargé après un temps, derrière, donc accès par SSH possible, si PS4 branchée en filaire, il faudra alors regarder son ip sur ta box/routeur.
Répondre à ce commentaire
19 mars 2018, 18:40
Approuver ce commentaire (+1)
Pareil que shim80 pas de signal
Répondre à ce commentaire
19 mars 2018, 19:05
Approuver ce commentaire (+1)
Bon si tu veux je peux le rédiger en anglais sur gba temp
Répondre à ce commentaire
19 mars 2018, 19:13
Approuver ce commentaire (+1)
J'ai essayé avec le bzimage de 4.05 et en bootant manuellement sur l'OS mais blocage sur la souris avec le fond d'écran........... Ca marche pas ! j'ai même pas accès au login
Répondre à ce commentaire
Utilisateur en ligne
19 mars 2018, 19:21
Approuver ce commentaire (+1)

Pareil que shim80 pas de signal


J'ai essayé avec le bzimage de 4.05 et en bootant manuellement sur l'OS mais blocage sur la souris avec le fond d'écran........... Ca marche pas ! j'ai même pas accès au login


Alors, déjà, j'aurais peut être dû publier la vidéo de mes échecs de boot, quand je dis que c'est galère, c'est vraiment galère, 15 minutes d'essais et reboot avant d'arriver à quelque chose ou Linux se charge. Le Payload est vraiment très instable.
Alors que juste avant cette série, j'avais booté plusieurs fois d'affilé sans soucis... C'est pour dire...

Enfin le BzImage il ne faut pas le remplacer, autant avoir la version la plus récente même si on a l'ancien Bridge HDMI sur sa PS4 !


Le seul moyen serait que valentinbreizh stabilise complètement son Payload 4.55... (Et que le pilote GPU soit stable, aussi) Car même moi je me suis énervé à la longue (je vous laisser imaginer, en tenant l'appareil pour filmer pendant une plombe...

Certains semblent toutefois avoir réussi à booter.
Répondre à ce commentaire
Utilisateur en ligne
19 mars 2018, 19:22
Approuver ce commentaire (+1)

Bon si tu veux je peux le rédiger en anglais sur gba temp


Ça serait sympa ça... Et appuie bien le fait que les payloads ne sont pas encore stables... Et que le driver du gpu sur PS4 pro n'est pas totalement fonctionnel.

En soit Manjaro fonctionne, la distribution en elle même n'a pas de souci, ce sont ces deux éléments qui nous font la misère, il y a besoin de corrections, contributeurs, et testeurs...
Répondre à ce commentaire
19 mars 2018, 19:24
Approuver ce commentaire (+1)

J'ai oublié de noter aussi, de mon côté je branche le média de stockage à l'arrière de la console, et rien d'autre que le récepteur sans fil logitech n'est branché à l'avant.

La ps4 Slim n'a que deux ports usb vers l'avant...

 

Sinon, j'arrive a me stabiliser sur ps4-allumée-mais-écran-noir, c'est déjà ça.

 

Personne ici n'a testé ça sur slim?

Répondre à ce commentaire
19 mars 2018, 19:40
Approuver ce commentaire (+1)
Il faudrait que tu me donne moyen de contact histoire que je discute avec toi sur l'article, je peux pas t'envoyer un mp.
Répondre à ce commentaire
Utilisateur en ligne
19 mars 2018, 20:02
Approuver ce commentaire (+1)

Il faudrait que tu me donne moyen de contact histoire que je discute avec toi sur l'article, je peux pas t'envoyer un mp.



Quelqu'un a déjà fait une traduction sur ps4hax (https://www.psxhax.c...y-tikilou.4873/ ), tu n'as qu'à la reprendre sur GBAtemp, après tout... C'est moi qui l'ait écrit à la base ^^


Oh, et d'ailleurs, je voulais leur répondre sur comment passer la distro en anglais/qwerty, mais pas moyen, 7 jours d'attente pour participer, du coup si tu pouvais rajouter ça à l'article en bon anglais, ça serait cool :

Hi guys ! I'm the author who have published the news on Logic-Sunrise and host this IMG.
By advance, sorry for my bad english.

You should use google translate, i've explained a lot of things... The Radeon (it's the name) driver is included inside the Linux Kernel published and compiled by EEPLY... If you want contribute, you have two ways.

First, you can contribute to the kernel, source code of driver is here, and you can report bugs/comits => github : /eeply/ps4-linux/tree/ps4pro/drivers/gpu/drm/radeon

Or, you can make two pkgbuild for AUR repository, and port Linux Kernel-Headers on Manjaro properly frome EEPLY Linux sources, then with it, purpose an other pkgbuild for AUR repository, with regular updates of the GPU driver PS4 + DKMS, then load him with modprobe.


Oh, by the way, you can easy change langage of Manjaro in Gnome settings, and for TTY/CLI :

"sudo nano /etc/X11/xorg.conf.d/00-keyboard.conf"

English configuration :
 
# Written by systemd-localed(8), read by systemd-localed and Xorg. It's
# probably wise not to edit this file manually. Use localectl(1) to
# instruct systemd-localed to update it.
Section "InputClass"
    Identifier "system-keyboard"
    MatchIsKeyboard "on"
    Option "XkbLayout" "us"
    Option "XkbModel" "pc104"
    Option "XkbOptions" "compose:caps,altwin:swap_alt_win"
EndSection
French configuration :
 
# Written by systemd-localed(8), read by systemd-localed and Xorg. It's
# probably wise not to edit this file manually. Use localectl(1) to
# instruct systemd-localed to update it.

Section "InputClass"
        Identifier "system-keyboard"
        MatchIsKeyboard "on"
        Option "XkbLayout" "fr"
        Option "XkbVariant" "oss_latin9"
EndSection
Répondre à ce commentaire
19 mars 2018, 20:14
Approuver ce commentaire (+1)

Ha ha... Les gars de psxhax ont l'air de pester contre le français...

Sinon, les premiers testeurs indiquent que les pilotes gpu développés par failoverfl0w ne sont pas implémentés.

Répondre à ce commentaire
19 mars 2018, 20:17
Approuver ce commentaire (+1)

J' ai envoyé le lien de ton post sur discord merci encore :) n' hésite pas à mettre tout pour quelqu' un qui n' y connais rien :)

Répondre à ce commentaire
Utilisateur en ligne
19 mars 2018, 20:25
Approuver ce commentaire (+1)

Ha ha... Les gars de psxhax ont l'air de pester contre le français...

Sinon, les premiers testeurs indiquent que les pilotes gpu développés par failoverfl0w ne sont pas implémentés.

 

Pour une fois que la situation est inversée, du côté azerty/qwerty et langue ! XD

 

 

Oui, ça dépend du noyau Linux compilé par Eeply (bzimage).

 

Je viens de maj l'article, apparemment il va bosser là dessus, mais bon, c'est un projet libre, n'importe qui peut contribuer, alors si certains s'y connaissent un peu... ;)

Répondre à ce commentaire
19 mars 2018, 20:43
Approuver ce commentaire (+1)

grazié millé :in-love:

Répondre à ce commentaire
19 mars 2018, 20:55
Approuver ce commentaire (+1)

Il faudrait que tu me donne moyen de contact histoire que je discute avec toi sur l'article, je peux pas t'envoyer un mp.

Quelqu'un a déjà fait une traduction sur ps4hax (https://www.psxhax.c...y-tikilou.4873/ ), tu n'as qu'à la reprendre sur GBAtemp, après tout... C'est moi qui l'ait écrit à la base ^^ Oh, et d'ailleurs, je voulais leur répondre sur comment passer la distro en anglais/qwerty, mais pas moyen, 7 jours d'attente pour participer, du coup si tu pouvais rajouter ça à l'article en bon anglais, ça serait cool :Hi guys ! I'm the author who have published the news on Logic-Sunrise and host this IMG.By advance, sorry for my bad english.You should use google translate, i've explained a lot of things... The Radeon (it's the name) driver is included inside the Linux Kernel published and compiled by EEPLY... If you want contribute, you have two ways.First, you can contribute to the kernel, source code of driver is here, and you can report bugs/comits => github : /eeply/ps4-linux/tree/ps4pro/drivers/gpu/drm/radeonOr, you can make two pkgbuild for AUR repository, and port Linux Kernel-Headers on Manjaro properly frome EEPLY Linux sources, then with it, purpose an other pkgbuild for AUR repository, with regular updates of the GPU driver PS4 + DKMS, then load him with modprobe.Oh, by the way, you can easy change langage of Manjaro in Gnome settings, and for TTY/CLI :"sudo nano /etc/X11/xorg.conf.d/00-keyboard.conf"English configuration : # Written by systemd-localed(8), read by systemd-localed and Xorg. It's# probably wise not to edit this file manually. Use localectl(1) to# instruct systemd-localed to update it.Section "InputClass" Identifier "system-keyboard" MatchIsKeyboard "on" Option "XkbLayout" "us" Option "XkbModel" "pc104" Option "XkbOptions" "compose:caps,altwin:swap_alt_win"EndSectionFrench configuration : # Written by systemd-localed(8), read by systemd-localed and Xorg. It's# probably wise not to edit this file manually. Use localectl(1) to# instruct systemd-localed to update it.Section "InputClass" Identifier "system-keyboard" MatchIsKeyboard "on" Option "XkbLayout" "fr" Option "XkbVariant" "oss_latin9"EndSection

ah ba non je n'ai pas de compte sur psx hax ^^. Mais ouai je vais transposer l'article sur gba temp
Répondre à ce commentaire
19 mars 2018, 21:33
Approuver ce commentaire (+1)
@Tikilou oui mais si je suis sur 4.05 faut bien que je mette quelque chose de 4.05.... J'imagine que le payload 4.55 ira pas
Répondre à ce commentaire
19 mars 2018, 21:36
Approuver ce commentaire (+1)

dites je pense à sa... toi qui est sur linux pas moyen que tu fasse un iso bootable de la ps4 avec rufus où quoi je demande juste ? je suis en 5.01 si seulemenyt tje pouvais downgradé :)

Répondre à ce commentaire
19 mars 2018, 21:39
Approuver ce commentaire (+1)

@Tikilou oui mais si je suis sur 4.05 faut bien que je mette quelque chose de 4.05.... J'imagine que le payload 4.55 ira pas

 

les payload sont ici sa fait la 3ième fois que je le met : https://sce.party/?page=payloads

Répondre à ce commentaire
19 mars 2018, 22:40
Approuver ce commentaire (+1)
beau boulot tikilou merci a toi
Répondre à ce commentaire
Utilisateur en ligne
20 mars 2018, 02:34
Approuver ce commentaire (+1)

@Tikilou oui mais si je suis sur 4.05 faut bien que je mette quelque chose de 4.05.... J'imagine que le payload 4.55 ira pas

 

Effectivement, mais maintenant que le hack sur 4.55 est stable, pourquoi rester en 4.05 ? Cet exploit est obsolète désormais...

 

dites je pense à sa... toi qui est sur linux pas moyen que tu fasse un iso bootable de la ps4 avec rufus où quoi je demande juste ? je suis en 5.01 si seulemenyt tje pouvais downgradé :)

 

Non, pas moyen, visiblement rufus, tout comme linux live usb creator, modifie quelque peut les images systèmes, donc non...

Si vous voulez préparer la clé USB, il faudra en passer par une distribution Linux sous Gnome en Live USB/CD/DVD et utiliser gnome-disks pour restaurer la sauvegarde des partitions sur un média de stockage (clé usb, hdd, ssd...) ou utiliser dd ou dcfldd pour restaurer ce backup en ligne de commande. Je ne connais pas d'outil Windows le faisant donc je ne m'avancerait pas là dessus, et Linux est de toute façon utile car Gparted permet de redimensionner la partition système et l'adapter à votre média de stockage.

 

beau boulot tikilou merci a toi

 

 

Merci, ça fait plaisir d'avoir quelques remerciements ici, sur Ps4Hax ça fait la gueule, certains auraient préféré une base Debian, mais Debian est à mon sens, pas accessible à l'user lambda, et Ubuntu casse pied avec son système de mise à jour complète tous les 6 mois, de l'obsolescence programmée des PPA, etc... La nécessité d'une bonne stabilité est surtout à chercher du côté du noyau, et comme sur PS4 on gère ça manuellement et que ça ne dépend pas des noyaux fournis par la distribution, bah... :)

C'est vraiment le dépôt communautaire AUR qui m'a convaincu de pousser Manjaro sur PS4, car ça facilitera le packaging et les apports de tout le monde, en plus Manjaro attends un peu de temps avec de rapatrier les dernières maj ArchLinux pour s'assurer que le système reste stable...

Répondre à ce commentaire
20 mars 2018, 07:28
Approuver ce commentaire (+1)

Bien dit. Je suis moi aussi extrêmement fan d'ArchLinux.
Il ne manque plus que les pilotes gpu et peut-être une installation sur HDD et ma ps4 va pouvoir remplacer mon vieux PC!

 

Mais pour l'instant, je vais renoncer a essayer d’exécuter Linux. Pas une seule réussite sur une bonne trentaine d'essais, je vais patienter le temps que sorte un payload plus stable.

Répondre à ce commentaire
20 mars 2018, 18:14
Approuver ce commentaire (+1)

Merci pour ta réponse :)

Répondre à ce commentaire
20 mars 2018, 18:36
Approuver ce commentaire (+1)
Je ne demandais pas les payloads je les ai déjà je tenais juste à dire qu'en 4.05 j'arrive à booter jusqu'à voir une souris et un fond d'écran mais impossible d'avoir le login;

Inutile de me faire chier avec vos 4.55 qui est mieux que 4.05 "obsolète" c'est comme si je vous disais que une moto de 2016 est devenu obsolète car y'a déjà le modèle de 2018 sorti faut arrêter les conneries. S'cusez moi d'être désagréable mais c'est comme emmerder quelqu'un qui est en 4.81 sur PS3 alors qu'il y a le 4.82CFW... Tant qu'il a pas fini ses jeux il s'en fout de passer en 4.82..... m'enfin... Je n'ai pas le même avis que tout le monde.

Seul le 1.76 est obsolète, plus personne bosse dessus.

Il me semble que pas mal de personnes ont un blackscreen en 4.55... Je ferai le pas en 4.55 quand ça sera aussi stable que 4.05.

Désolé mais ça m'énerve les gens qui poussent à updater sans aucune utilité. Les backups vont niquel sur 4.05 et j'ai des jeux à finir je vais pas perdre du temps à changer tout mes payloads, mon host et mettre à jour ma play..


Bon sang..

Sinon merci pour la news :)
Répondre à ce commentaire
22 mars 2018, 13:13
Approuver ce commentaire (+1)
PSXhax sa fait toujours la gueule faut pas y faire attention...
D'ailleurs j'ai pas bien compris cette phrase : via un terminal pour vous chrooter directement
Répondre à ce commentaire
22 mars 2018, 22:17
Approuver ce commentaire (+1)

PSXhax sa fait toujours la gueule faut pas y faire attention...
D'ailleurs j'ai pas bien compris cette phrase : via un terminal pour vous chrooter directement

Une fois que tu as accès au terminal, tu peux utiliser le chroot: C'est un moyen de te login en tant que root sur un disque externe contenant un OS linux. C'est très utilisé pour installer Archlinux depuis un usb live, car on peut se login sur l'OS fraîchement installé directement depuis le terminal sans même redémarrer la machine.

Répondre à ce commentaire
24 mars 2018, 17:04
Approuver ce commentaire (+1)
Ok Y a du mieux je pense ce matin. une fois le playload sender (et une seul fois ^^-)
Je croix que j'ai enfin quelques chose.
Ma console est actuellement encore allumé, blackscreen (en la connectant sur une TV Full HD Phillips, là ou elle est branché d'habitude ainsi que sur un TV Samsung)
Elle n 'est pas éteinte mais la lumière en haut est bleu mais elle clignote rose sur le coté bouton ON OFF / lecteur BR.
c'est normal ?
est t'il en train de boot sur l'installation mais ne reconnais toujour pas le modèle PHAT CUH1216A? ou j'ai oublié des trucs?
Répondre à ce commentaire
24 mars 2018, 23:49
Approuver ce commentaire (+1)
Linux pour les PS4 CUH-12XX est disponible : https://twitter.com/...670090974998529
Répondre à ce commentaire
26 mars 2018, 10:57
Approuver ce commentaire (+1)
Yes en attendant les drivers¡¡¡
Répondre à ce commentaire
13 avril 2018, 20:54
Approuver ce commentaire (+1)

j'aurais aimé avoir Windows 10 sur ma ps4. franchement Linux c'est que de la bidouille. je m'y connais rien... le pire c'est que j'avais été forcer a utiliser UNIX en 1999 mais je n'ai jamais kiffer. breff chacun son truc. mais un windows aurait été bcp mieux ^^

Répondre à ce commentaire
Cliquer ici pour continuer sur le forum
Envoyer