[TUTORIAL] Downgrade para PSGrooPIC y PS3Break[Ahora 3.55]

14, 5, 6, 7, 8
hola,hice todo el proceso y salio todo bien,la ps3 esta a la 3.41 pero al intentar instalar el backup manager me da error 8001003a,si alguien me puede ayudar,he buscado pero no he encontado nada.gracias
Donde has buscado? aunque estes en 3.41 tienes que hacer Jailbreak, por eso te da ese error
como jailbreak sigo todos los pasos y me da ese error
que payload utilizas para entrar en modo jailbreak? He buscado en google, y gente que le ha salido ese error, instalando la v4b de Hermes le ha valido.

Si no, me temo que te tocará formatear el Disco Duro para reestablecer ajustes
pues yo he buscado y no he encontrado casi nada,de todas formas intentare lo que me dice y ya te cuento gracias por tu ayuda
TSC escribió:que payload utilizas para entrar en modo jailbreak? He buscado en google, y gente que le ha salido ese error, instalando la v4b de Hermes le ha valido.

Si no, me temo que te tocará formatear el Disco Duro para reestablecer ajustes


Hola, haber si alguien me ayuda.

Tengo una play 3 con fireware 3.50 y quiero saber como hago el downgrade a 3.41 para que me pueda leer los juegos backups, este es modelo slim.

Ahora tengo un pincho PIC (hermes del pincho v4b).

Ya tengo estos programas los pongo haber si sirven, tengan encuenta que soy nuevo y mucho no entiendo, lei mucho pero la verdad se me mezcla todo.

Microchip.BootLoader.USB.HID.v2.6b ( este segun me dijeron es para usar con el pincho )

PSGrooPIC_BEEPIC_FW341_DEF.hex

PSGrooPIC_V1.7a_wBTL_FW3.41.hex
( Estos hex son los que se usan con el programa Microchip , ahora se como usar el programa pero no se en que orden usar los HEX esos que tengo o si serviran )

Luego baje estos programas de este hilo :

PSGradePIC_wBTL_PICDEM
PSGradePIC_wBTL
PSGradePIC_nBTL
Actualizacion 3.41
Actualizacion 3.15
PENDRIVER


La maquina la compro como viene de fabrica hace 5 dias.

Tambien tengo el OM 2.1 i2 para ponercelo

En donde habla de paso 1, el pincho yo ya lo tengo igual lo tengo que flashear? el pincho es comprado, igualmente si hay que flashearlo me explicas como se hace.



Como pongo la ps3 en modo factory?

Gracias esas son mis dudas [mad]
dt_loky escribió:Hola, haber si alguien me ayuda.

Tengo una play 3 con fireware 3.50 y quiero saber como hago el downgrade a 3.41 para que me pueda leer los juegos backups, este es modelo slim.

Ahora tengo un pincho PIC (hermes del pincho v4b).

Ya tengo estos programas los pongo haber si sirven, tengan encuenta que soy nuevo y mucho no entiendo, lei mucho pero la verdad se me mezcla todo.

Microchip.BootLoader.USB.HID.v2.6b ( este segun me dijeron es para usar con el pincho )

PSGrooPIC_BEEPIC_FW341_DEF.hex

PSGrooPIC_V1.7a_wBTL_FW3.41.hex
( Estos hex son los que se usan con el programa Microchip , ahora se como usar el programa pero no se en que orden usar los HEX esos que tengo o si serviran )

Luego baje estos programas de este hilo :

PSGradePIC_wBTL_PICDEM
PSGradePIC_wBTL
PSGradePIC_nBTL
Actualizacion 3.41
Actualizacion 3.15
PENDRIVER


La maquina la compro como viene de fabrica hace 5 dias.

Tambien tengo el OM 2.1 i2 para ponercelo

En donde habla de paso 1, el pincho yo ya lo tengo igual lo tengo que flashear? el pincho es comprado, igualmente si hay que flashearlo me explicas como se hace.



Como pongo la ps3 en modo factory?

Gracias esas son mis dudas [mad]


Lo siento, pero preguntas muchas cosas en un solo hilo. Pretendes que te resumamos 3 meses de scene en un mensaje. Deberías empezar a leer pero despacio y conforme vayas entendiendo cosas ir progresando. Es que estás preguntando cosas muy básicas y no dices ni que dongle tienes.
El dongle es el PSGrooPIC, lo que no se si es 2550 o 4550.

Igual que que si alguien me explicara un poquito el downsgrade lo podria realizar ya que tengo los programas bajados y algo entiendo

Solo no se hacer esto:

En donde habla de paso 1, el pincho yo ya lo tengo igual lo tengo que flashear? el pincho es comprado, igualmente si hay que flashearlo me explicas como se hace.

De ultima hacer lo de modo factory lo busco x google y listo
Que tal esto me sirve para un PSGrooPIC fabricado con un PIC 18F4550 y con el cristal de 8Mhz???

El led tiene que parpadear en algun momento o quedarse prendido???

Porque lo he intentado y la consola no se apaga automaticamente, sino que prende el XMB y aparece un cartel rojo indicando "Factory Service Mode" y el led no parpadea ni se queda prendido... esta apagado permanente... cuadno lo conecto a la PC por usb no se prende pero si presiono el boton de reset entra perfecto en modo de programación...

Para flashear el dongle utilizo el programa "MiEUSBHIDLoader"

Saludos
no entiendo muy bien esto, funciona con ps3break pic 1.0 , se podran jugar juegos q requieran firmware 3.42 o 3.50?
guillew777 escribió:no entiendo muy bien esto, funciona con ps3break pic 1.0 , se podran jugar juegos q requieran firmware 3.42 o 3.50?


NO. Es para bajar de versión la PS3 a la 3.41

¿Has leído algo? :-?
LeiSure escribió:
guillew777 escribió:no entiendo muy bien esto, funciona con ps3break pic 1.0 , se podran jugar juegos q requieran firmware 3.42 o 3.50?


NO. Es para bajar de versión la PS3 a la 3.41

¿Has leído algo? :-?


no, la verdad no tengo mucho tiempo para leer, gracias por responder
guillew777 escribió:no, la verdad no tengo mucho tiempo para leer, gracias por responder

Voto esa respuesta para respuesta del año... increible ¿no se puede reportar por esto?
TSC escribió:Voto esa respuesta para respuesta del año... increible ¿no se puede reportar por esto?


La verdad es que si se puede reportar ya que en las normas te dicen que uses la búsqueda antes de escribir un mensaje pero la peña no sabe ni dónde están las normas me parece a mi.

Por lo menos este ha sido sincero.
He actualizado el PSGradePIC incorporando la verdadera usb_dongle_master_key encontrada por graf_chokolo.

Download
Source Download

Commit 1
Commit 2
Commit 3
Commit 4
Commit 5

Por cierto, para los que no lo sepan, la master_key es maestra como su propia palabra lo dice y siempre ha valido para poner en Factory Mode la PS3 incluso con firmware 3.55. Lo que hizo Sony para bloquear el downgrade fue añadir a una lista negra un checksum del LV2Diag.self que permitía hacer el downgrade. Esta actualización para lo único que sirve es para evitar que Sony bloquee el dongle_id 0xAAAA y nos quedemos sin Factory Mode por esa tontería, ya que antes se forzaba el dongle_id a 0xAAAA en vez de generar una master_key específica para un dongle_id aleatorio. (La master_key que se tenía era para el dongle_id 0xAAAA).

Saludos, Noltari.

P.D: Espero haberme explicado bien. No dudéis en preguntar si tenéis alguna duda :D.
Muchas gracias! Ahora actualizo el primer post. Solo una cosa, ahora mismo, que dongle_id fuerza?
TSC escribió:Muchas gracias! Ahora actualizo el primer post. Solo una cosa, ahora mismo, que dongle_id fuerza?

Ninguno, genera uno aleatorio cada vez.

Sorry, estaba cenando :3.
Otra duda, perdona... Lo genera cada vez que compilas, o cada vez que ejecuta?

gracias again
TSC escribió:Otra duda, perdona... Lo genera cada vez que compilas, o cada vez que ejecuta?

gracias again

Cada vez que se ejecuta genera un número aleatorio distinto.
Hola Noltari, he descargado el .rar y me dispongo a grabar el PSGradePIC_nBTL.hex ya que yo no tengo bootloader, programo directamente a pelo sobre el pic. Luego monto sobre la board de el semi y conecto en el usb mas alejado del lector. Es una FAT de 40GB con firm 2.55 , parpadea un par d veces pero la consola se inicia normalmente y se queda en el menú pidiendo que seleccione usuario, en vez de apagarse la pantalla durante esos 7 min. aprox. . Estoy haciendo algo mal? Gracias.


Por cierto yo uso 18F2455. Gracias.
jhonsay escribió:Hola Noltari, he descargado el .rar y me dispongo a grabar el PSGradePIC_nBTL.hex ya que yo no tengo bootloader, programo directamente a pelo sobre el pic. Luego monto sobre la board de el semi y conecto en el usb mas alejado del lector. Es una FAT de 40GB con firm 2.55 , parpadea un par d veces pero la consola se inicia normalmente y se queda en el menú pidiendo que seleccione usuario, en vez de apagarse la pantalla durante esos 7 min. aprox. . Estoy haciendo algo mal? Gracias.


Por cierto yo uso 18F2455. Gracias.

¿Haces la combinaión de Power + Eject y lo pones en el USB de más a la derecha como si se tratara de un jailbreak normal?
El USB es indiferente en el proceso de jail/grade.
josete2k escribió:El USB es indiferente en el proceso de jail/grade.

No, te equivocas, no es indiferente para nada.
Según en tutorial, valdría con P3GO ya que es compatible con PSGroove, no?
Para este dongle también valdría el programador de l primer post o lo hago con los archivos de la web oficial del P3GO?

PD: La PS3 es Slim, modelo CECH-2504A
Sólo tiene importancia el USB a la hora de la colocación de un pendrive con los archivos.

A la hora de generar el xploit (PSGroove) o ejecutar el PSGrade la PS3 tiene en cuenta todos los puertos USB.

Si bien es cierto que hay gente que afirma que un determinado puerto USB le funciona mejor que otro, pero le atribuiría el hecho al propio dongle antes que a los puertos de la consola.

Por cierto Noltari, te felicito por el random ID; buena idea... yo a lo máximo que aspiro es a generar mi propio ID y MK asociada para así evitar el uso del 0xAAAA para los archivos del git de zAxis.

Si tienes un rato podrías mirar a portarlo para AT.... [sati]
A mi me funciona sólo en el derecho :$.

Gracias por apreciar mi trabajo ^^. Cuando tenga un rato lo porto a la AT, el problema es que no tengo ninguna para probarlo y todavía no he compilado nada para la AT xDDDD. Si eso porto el código tal cual lo tengo para el PIC y te lo paso para que lo compiles y lo pruebes.

Por cierto, he estado haciendo pruebas y el anterior código no llegaba a generar números del todo random. Sin embargo, se me ha ocurrido generar una semilla a partir del timer del PIC, después de haber recibido el challenge de la PS3, lo que sí ha dado resultado y genera números completamente aleatorios (probado durante toda la mañana). Por si alguien quiere saber qué dongle_id "aleatorio" estaba generando era 0x0204 siempre xD.

He actualizado el código en el GitHub y he añadido una función de guardado a la EEPROM del PIC para que lo probéis vosotros mismos si os apetece :3.

Source: https://github.com/Noltari/PSGradePIC/c ... b19dc5645e

Build Normal: http://dl.dropbox.com/u/4708147/PSGrooP ... c5645e.zip
Build Desarrollo (Guarda el dongle_id y la usb_dongle_key en la EEPROM): http://dl.dropbox.com/u/4708147/PSGrooP ... c5645e.zip

P.D: La EEPROM del PIC es una pasada para hacer pruebas :D.

P.D2(EDIT): Si alguien quiere comparar la key generada, aquí tenéis una web hecha por waninkoko que os la genera: http://is.gd/jHsag

Saludos, Noltari.
Muy buenas.

Un par de cosillas.

Lo primero, los hex compilados ya estan actualizados con el RND de verdad??

Lo segundo, esto ya es mas cosa mia que nada mas, ¿por que lo haceis todo en CCS C? Yo estuve trabajando con el hace tiempo, pero al final lo deseché y me pasé al C18 y C32 de microchip, trabajo con estos integrados y la verdad es que es mucho más cómodo (y encima te puedes bajar los compiladores by the face de microchip, ya no tienen restricciones)
Lo unico que he de reconocer que es mas coñazo de hacer son los descriptores de USB, pero vamos, tampoco es un gran infierno....

Si tengo tiempo despues de reyes yo mismo me ofrezco a convertirlo.

Por cierto, he hecho un motor de juegos 2D basado en el Tiny3D de Hermes (y obviamente el psl1ght), tiene soporte para objetos basicos, sprites animados, modulacion de color, alpha blending, modo aditivo, etc..., estoy pensando en subirlo a GitHub, ¿a alguien le interesa?

Os pongo un ejemplo de como es el main de un juego creado con el motor (van unos 2000 sprites y ni se entera XD) (si este no es el sitio apropiado, please, decidme donde lo meto, asias)

s32 main(s32 argc, const char* argv[])
{
        GusEngine::initialize(32, 64, (char*)"/dev_hdd0/game/GUSENGINE/USRDIR/content/"); //memoria vertices, memoria grafica, directorio de contenido

   basicObject* layeredGhost =  new basicObject((char*)"ghost.png",  128, 128, 300, 250); //archivo de imagen, width, height, x, y
   layeredGhost->layer = 3;
   GusEngine::addObject(layeredGhost, -1); //el objeto a añadir, ID del objeto

   basicObject* loadedGhosts[5000];
   
   basicObject* theGhost;

   int gh = 0;
   int cnt = 0;

   for(int x = 0; x < 800; x+= 16)
   {
   
      for(int y = 0; y < 500; y+= 16)
      {
      
         theGhost = new basicObject((char*)"ghost.png",  32, 32, 16 + x, 16 + y);
         theGhost->layer = 1;
         loadedGhosts[cnt] = theGhost;
         GusEngine::addObject(theGhost, cnt++);
            
      }
   
   }

   int i;

   while(1)
   {

      GusEngine::beginFrame();

      for(i = 0; i < MAX_PADS; i++){

         if(GusEngine::padInfo.status[i]){
            
            if(GusEngine::padData[i].BTN_CROSS)
               return 0;
            else if(GusEngine::padData[i].BTN_CIRCLE)
            {
               
               gh++;
               theGhost = new basicObject((char*)"ghost.png", 32, 32, 16 + (32 * gh), 16 + (32 * gh));
               theGhost->modulateColor = true;
               theGhost->modulationColor.a = 1;
               theGhost->modulationColor.r = gh / 10.0f;
               theGhost->modulationColor.g = gh / 5.0f;
               theGhost->modulationColor.b = gh / 6.0f;
               theGhost->layer = 2;
               GusEngine::addObject(theGhost, gh);
               
            }
            else if(GusEngine::padData[i].BTN_SQUARE)
               layeredGhost->layer += 0.1f;
         }
         
      }

      for(int buc = 0; buc < cnt; buc++)
         loadedGhosts[buc]->rotation += GusEngine::lastFrameTime * PI_F / 1000;

      GusEngine::endFrame();

   }

   GusEngine::clear(true, true);

}



Y ya por ultimo pero no menos importante, BRAVO SEÑORES, seguid así, que se vea que el scene español sigue vivo.

Un saludo a todos.
por Noltari Hoy 11:00

jhonsay escribió:
Hola Noltari, he descargado el .rar y me dispongo a grabar el PSGradePIC_nBTL.hex ya que yo no tengo bootloader, programo directamente a pelo sobre el pic. Luego monto sobre la board de el semi y conecto en el usb mas alejado del lector. Es una FAT de 40GB con firm 2.55 , parpadea un par d veces pero la consola se inicia normalmente y se queda en el menú pidiendo que seleccione usuario, en vez de apagarse la pantalla durante esos 7 min. aprox. . Estoy haciendo algo mal? Gracias.


Por cierto yo uso 18F2455. Gracias.

¿Haces la combinaión de Power + Eject y lo pones en el USB de más a la derecha como si se tratara de un jailbreak normal?


Si, hago la combinacion y lo he probado en los 2 puertos que trae la de 40gb y parpadea la luz con la siguiente secuencia: un parpadeo largo y 3 o 4 cortos. Eso lo hace 2 veces y luego arranca la play normal. Yo programo directamente el pic, no uso bootloader y estoy usando el que tu pusiste. Activo el LVP porque en mi caso hace falta. ¿qué mas debo tener en cuenta?
Hola ...necesito ayuda urgente ... la verdad hice todo lo que dice en la pagina 1 ... en una consola de fabrica 4.2u de 160Gb cech-2501a... y en 2 consolas, lo que me pasa es que no me la deja en 3.15...
alguien ah hecho downgrade en este modelo...saludos
Noltari escribió:
josete2k escribió:Tienes un MP

https://github.com/Noltari/PSGrade :3

Source Download: http://github.com/Noltari/PSGrade/zipball/master


Mola ;) no se si cambia el ID o no... el libusb-win32 me da siempre el mismo ID.



autoDFU añadido:
/*
    PSGrade

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    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.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

#include <avr/io.h>
#include <avr/wdt.h>
#include <avr/power.h>
#include <avr/interrupt.h>
#include <util/delay.h>
#include <string.h>
#include <stdio.h>

#include <LUFA/Version.h>
#include <LUFA/Drivers/Board/LEDs.h>
#include <LUFA/Drivers/USB/USB.h>
#include <LUFA/Drivers/USB/Class/CDC.h>

#include "key.h"
#include "hmac.h"
#include "random.c"

#define RED   (LEDS_LED1)
#define GREEN   (LEDS_LED2)
#define BOTH   (RED|GREEN)
#define NONE   (LEDS_NO_LEDS)
#define LED(x) LEDs_SetAllLEDs(x)

#define PORT_EMPTY 0x0100   /* powered only */
#define PORT_FULL 0x0103    /* connected, enabled, powered, full-speed */
#define C_PORT_CONN  0x0001 /* connection */
#define C_PORT_RESET 0x0010 /* reset */
#define C_PORT_NONE  0x0000 /* no change */
#define CHALLENGE_INDEX   7
#define SHA1_DIGESTSIZE   20

uint16_t port_status[6] = { PORT_EMPTY, PORT_EMPTY, PORT_EMPTY, PORT_EMPTY, PORT_EMPTY, PORT_EMPTY };
uint16_t port_change[6] = { C_PORT_NONE, C_PORT_NONE, C_PORT_NONE, C_PORT_NONE, C_PORT_NONE, C_PORT_NONE };

enum {
   init,
   wait_hub_ready,
   hub_ready,
   p5_wait_reset,
   p5_wait_enumerate,
   p5_challenged,
   p5_responded,
   p5_wait_disconnect,
   p5_disconnected,
   done,
} state = init;


uint8_t hub_int_response = 0x00;
uint8_t hub_int_force_data0 = 0;
int last_port_conn_clear = 0;
int last_port_reset_clear = 0;

int8_t port_addr[7] = { -1, -1, -1, -1, -1, -1, -1 };
int8_t port_cur = -1;

void USB_Device_SetDeviceAddress(uint8_t Address)
{
   port_addr[port_cur] = Address & 0x7f;
   UDADDR = Address & 0x7f;
   UDADDR |= (1 << ADDEN);
}

void switch_port(int8_t port)
{
   if (port_cur == port) return;
   port_cur = port;
   if (port_addr[port] < 0)
      port_addr[port] = 0;
   UDADDR = port_addr[port] & 0x7f;
   UDADDR |= (1 << ADDEN);
}

volatile uint8_t expire = 0; /* counts down every 10 milliseconds */
volatile uint32_t ispcount=2000; /*counts down for auto enter isp mode*/
uint8_t isptrig;
ISR(TIMER1_OVF_vect)
{
   uint16_t rate = (uint16_t) -(F_CPU / 64 / 100);
   TCNT1H = rate >> 8;
   TCNT1L = rate & 0xff;
   if (expire > 0)
      expire--;
   if(ispcount > 0)
           ispcount--;
   else
     if(isptrig)    {LED(GREEN);((void (*)(void))0x1800)();} /*salto a la pos 0x1800 donde está el bootloader en el at90usb162*/
}



void panic(int led1, int led2)
{
   for(;;) {
      _delay_ms(100);
      LED(led1);
      _delay_ms(100);
      LED(led2);
   }      
}

void HUB_Task(void)
{
   Endpoint_SelectEndpoint(1);

   if (Endpoint_IsReadWriteAllowed())
   {
      if (hub_int_response) {
         if (hub_int_force_data0) {
            Endpoint_ResetDataToggle();
            hub_int_force_data0 = 0;
         }
         Endpoint_Write_Byte(hub_int_response);
         Endpoint_ClearIN();
         hub_int_response = 0x00;
      }
   }
}


void JIG_Task(void)
{
   static int bytes_out = 0, bytes_in = 0;

        Endpoint_SelectEndpoint(2);
        if (Endpoint_IsReadWriteAllowed())
        {
      Endpoint_Read_Stream_LE(&jig_challenge[bytes_out], 8, NO_STREAM_CALLBACK) ;      
        Endpoint_ClearOUT();
      bytes_out += 8;
      if (bytes_out >= 64) {
         //Generate random seed from AVR timer.
         srand(jig_challenge[7] + jig_challenge[8]); // As there is no function to get the time from the AVR we use the two first random chars from the jig_challenge as a seed.

         //Get a random dongle_id, based off the seed generated with the AVR timer.
         dongle_id[0] = rand();
         dongle_id[1] = rand();

         //Check dongle_id. If it should be revoked a new one is generated.
         int i;
         for(i = 0; i < sizeof(usb_dongle_revoke_list); i++) {
            if(usb_dongle_revoke_list[i] == (((dongle_id[0] << 8) & 0xFF) & (dongle_id[1] & 0xFF)) ) {
               i = 0;
               dongle_id[0] = rand();
               dongle_id[1] = rand();
            }
         }
         
         //Generate the jig_response.
         jig_response[0] = 0x00;
         jig_response[1] = 0x00;
         jig_response[2] = 0xFF;
         jig_response[3] = 0x00;
         jig_response[4] = 0x2E;
         jig_response[5] = 0x02;
         jig_response[6] = 0x02;
         jig_response[7] = dongle_id[0];
         jig_response[8] = dongle_id[1];

         //Generate usb_dongle_key from usb_dongle_master_key and dongle_id.
         HMACInit(usb_dongle_master_key, SHA1_DIGESTSIZE);
         HMACBlock(dongle_id, sizeof(dongle_id));
         HMACDone();
         for(i = 0; i < SHA1_DIGESTSIZE; i++) {
            usb_dongle_key[i] = hmacdigest[i];
         }

         //Generate jig_response.
         HMACInit(usb_dongle_key, SHA1_DIGESTSIZE);
         HMACBlock(jig_challenge + CHALLENGE_INDEX, SHA1_DIGESTSIZE);
         HMACDone();
         for(i = 0; i < SHA1_DIGESTSIZE; i++) {
            jig_response[CHALLENGE_INDEX + sizeof(dongle_id) + i] = hmacdigest[i];
         }

         state = p5_challenged;
         expire = 50; // was 90
      }
   }

        Endpoint_SelectEndpoint(1);
        if (Endpoint_IsReadWriteAllowed() && state == p5_challenged && expire == 0)
   {
      if ( bytes_in < 64) {
         Endpoint_Write_Stream_LE(&jig_response[bytes_in], 8, NO_STREAM_CALLBACK);
         Endpoint_ClearIN();
         bytes_in += 8;
         if ( bytes_in >= 64) {
         
            state = p5_responded;
            expire = 50;
         }
      }
   }
}

void connect_port(int port)
{
   last_port_reset_clear = 0;
   hub_int_response = (1 << port);
   port_status[port - 1] = PORT_FULL;
   port_change[port - 1] = C_PORT_CONN;

}

void disconnect_port(int port)
{
   last_port_conn_clear = 0;
   hub_int_response = (1 << port);
   port_status[port - 1] = PORT_EMPTY;
   port_change[port - 1] = C_PORT_CONN;
}



void SetupHardware(void)
{
   /* Disable watchdog if enabled by bootloader/fuses */
   MCUSR &= ~(1 << WDRF);
   wdt_disable();

   /* Disable clock division */
   clock_prescale_set(clock_div_1);

   /* Setup timer */
   TCCR1B = 0x03;  /* timer rate clk/64 */
   TIMSK1 = 0x01;

   /* Hardware Initialization */
   LEDs_Init();
   USB_Init();
   sei();
}


int main(void)
{
    isptrig=1;
   ispcount=2000;
   SetupHardware();

   LED(~GREEN);
   state = init;
   switch_port(5);

   for (;;)
   {
      if (port_cur == 0)
         HUB_Task();

      if (port_cur == 5)
         JIG_Task();

      USB_USBTask();
      
         //connect 5
      if (state == hub_ready && expire == 0)
      {
         connect_port(5);
         state = p5_wait_reset;
      }
      

      if (state == p5_wait_reset && last_port_reset_clear == 5)
      {
         switch_port(5);
         state = p5_wait_enumerate;
      }

      // disconnect 5
      if (state == p5_responded && expire == 0)
      {         
         switch_port(0);
         disconnect_port(5);
         state = p5_wait_disconnect;
      }
      
      if (state == p5_wait_disconnect && last_port_conn_clear == 5)
      {
         state = p5_disconnected;
         expire = 20;
      }
      
      // done
      if (state == p5_disconnected && expire == 0)
      {
         isptrig=0;/*stop enter isp mode*/   
            LED(GREEN);
         break;
      }
   }
}

uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
                                    const uint8_t wIndex,
                                    const void** const DescriptorAddress)
{
   const uint8_t  DescriptorType   = (wValue >> 8);

   void*          Address = NULL;
   uint16_t       Size    = NO_DESCRIPTOR;

   switch (DescriptorType)
   {
   case DTYPE_Device:
      switch (port_cur) {
      case 0:
         Address = (void *) HUB_Device_Descriptor;
         Size    = sizeof(HUB_Device_Descriptor);
         break;
      case 5:
         Address = (void *) port5_device_descriptor;
         Size    = sizeof(port5_device_descriptor);
         break;
      }
      break;
   case DTYPE_Configuration:
      switch (port_cur) {
      case 0:
         Address = (void *) HUB_Config_Descriptor;
         Size    = sizeof(HUB_Config_Descriptor);
         break;
      case 5:
         // 1 config
         Address = (void *) port5_config_descriptor;
         Size    = sizeof(port5_config_descriptor);
         break;
      }
      break;
   case 0x29: // HUB descriptor (always to port 0 we'll assume)
      switch (port_cur) {
      case 0:
         Address = (void *) HUB_Hub_Descriptor;
         Size    = sizeof(HUB_Hub_Descriptor);
         break;
      }
      break;
   }
   
   *DescriptorAddress = Address;
   return Size;
}

void EVENT_USB_Device_Connect(void) { }
void EVENT_USB_Device_Disconnect(void) { }

void EVENT_USB_Device_UnhandledControlRequest(void)
{      
   
   if (port_cur == 5 && USB_ControlRequest.bRequest == REQ_SetInterface)
   {
      /* can ignore this */
      Endpoint_ClearSETUP();
      Endpoint_ClearIN();
      Endpoint_ClearStatusStage();
      return;
   }

   if (port_cur == 0 &&
       USB_ControlRequest.bmRequestType == 0xA0 &&
       USB_ControlRequest.bRequest == 0x00 &&  // GET HUB STATUS
       USB_ControlRequest.wValue == 0x00 &&
       USB_ControlRequest.wIndex == 0x00 &&
       USB_ControlRequest.wLength == 0x04) {
      Endpoint_ClearSETUP();
      Endpoint_Write_Word_LE(0x0000); // wHubStatus
      Endpoint_Write_Word_LE(0x0000); // wHubChange
      Endpoint_ClearIN();
      Endpoint_ClearStatusStage();
      return;
   }

   if (port_cur == 0 &&
       USB_ControlRequest.bmRequestType == 0xA3 && 
       USB_ControlRequest.bRequest == 0x00 &&   //  GET PORT STATUS
       USB_ControlRequest.wValue == 0x00 &&
       USB_ControlRequest.wLength == 0x04) {
      uint8_t p = USB_ControlRequest.wIndex;
      if (p < 1 || p > 6) return;

      Endpoint_ClearSETUP();
      Endpoint_Write_Word_LE(port_status[p - 1]); // wHubStatus
      Endpoint_Write_Word_LE(port_change[p - 1]); // wHubChange
      Endpoint_ClearIN();
      Endpoint_ClearStatusStage();
      return;
   }

   if (port_cur == 0 &&
       USB_ControlRequest.bmRequestType == 0x23 &&
       USB_ControlRequest.bRequest == 0x03 && // SET_FEATURE
       USB_ControlRequest.wLength == 0x00) {
      uint8_t p = USB_ControlRequest.wIndex;
      if (p < 1 || p > 6) return;
      
      Endpoint_ClearSETUP();
      Endpoint_ClearIN();
      Endpoint_ClearStatusStage();

      switch(USB_ControlRequest.wValue) {
      case 0x0008: // PORT_POWER
         if (p == 6 && state == init) {
            /* after the 6th port is powered, wait a bit and continue */
            state = hub_ready;
            expire = 15;
         }
         break;
      case 0x0004: // PORT_RESET
         hub_int_response = (1 << p);
         port_change[p - 1] |= C_PORT_RESET;
         break;
      }
      return;
   }

   if (port_cur == 0 &&
       USB_ControlRequest.bmRequestType == 0x23 &&
       USB_ControlRequest.bRequest == 0x01 && // CLEAR_FEATURE
       USB_ControlRequest.wLength == 0x00) {
      uint8_t p = USB_ControlRequest.wIndex;
      if (p < 1 || p > 6) return;
      
      Endpoint_ClearSETUP();
      Endpoint_ClearIN();
      Endpoint_ClearStatusStage();

      switch(USB_ControlRequest.wValue) {
      case 0x0010: // C_PORT_CONNECTION
         last_port_conn_clear = p;
         port_change[p - 1] &= ~C_PORT_CONN;
         break;
      case 0x0014: // C_PORT_RESET
         last_port_reset_clear = p;
         port_change[p - 1] &= ~C_PORT_RESET;
         break;
      }
      return;
   }

   panic(RED, GREEN);
}

void EVENT_USB_Device_ConfigurationChanged(void)
{
   /* careful with endpoints: we don't reconfigure when "switching ports"
      so we need the same configuration on all of them */
   if (!Endpoint_ConfigureEndpoint(1, EP_TYPE_INTERRUPT, ENDPOINT_DIR_IN, 8, ENDPOINT_BANK_SINGLE))
      panic(GREEN, BOTH);
   if (!Endpoint_ConfigureEndpoint(2, EP_TYPE_INTERRUPT, ENDPOINT_DIR_OUT, 8, ENDPOINT_BANK_SINGLE))
      panic(GREEN, BOTH);
}

void EVENT_USB_Device_Suspend(void) { }
void EVENT_USB_Device_WakeUp(void) { }
void EVENT_USB_Device_Reset(void) { }
void EVENT_USB_Device_StartOfFrame(void) { }
void EVENT_USB_InitFailure(const uint8_t ErrorCode) { }
void EVENT_USB_UIDChange(void) {}
josete2k escribió:
Noltari escribió:
josete2k escribió:Tienes un MP

https://github.com/Noltari/PSGrade :3

Source Download: http://github.com/Noltari/PSGrade/zipball/master


Mola ;) no se si cambia el ID o no... el libusb-win32 me da siempre el mismo ID.



autoDFU añadido:
/*
    PSGrade

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    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.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

#include <avr/io.h>
#include <avr/wdt.h>
#include <avr/power.h>
#include <avr/interrupt.h>
#include <util/delay.h>
#include <string.h>
#include <stdio.h>

#include <LUFA/Version.h>
#include <LUFA/Drivers/Board/LEDs.h>
#include <LUFA/Drivers/USB/USB.h>
#include <LUFA/Drivers/USB/Class/CDC.h>

#include "key.h"
#include "hmac.h"
#include "random.c"

#define RED   (LEDS_LED1)
#define GREEN   (LEDS_LED2)
#define BOTH   (RED|GREEN)
#define NONE   (LEDS_NO_LEDS)
#define LED(x) LEDs_SetAllLEDs(x)

#define PORT_EMPTY 0x0100   /* powered only */
#define PORT_FULL 0x0103    /* connected, enabled, powered, full-speed */
#define C_PORT_CONN  0x0001 /* connection */
#define C_PORT_RESET 0x0010 /* reset */
#define C_PORT_NONE  0x0000 /* no change */
#define CHALLENGE_INDEX   7
#define SHA1_DIGESTSIZE   20

uint16_t port_status[6] = { PORT_EMPTY, PORT_EMPTY, PORT_EMPTY, PORT_EMPTY, PORT_EMPTY, PORT_EMPTY };
uint16_t port_change[6] = { C_PORT_NONE, C_PORT_NONE, C_PORT_NONE, C_PORT_NONE, C_PORT_NONE, C_PORT_NONE };

enum {
   init,
   wait_hub_ready,
   hub_ready,
   p5_wait_reset,
   p5_wait_enumerate,
   p5_challenged,
   p5_responded,
   p5_wait_disconnect,
   p5_disconnected,
   done,
} state = init;


uint8_t hub_int_response = 0x00;
uint8_t hub_int_force_data0 = 0;
int last_port_conn_clear = 0;
int last_port_reset_clear = 0;

int8_t port_addr[7] = { -1, -1, -1, -1, -1, -1, -1 };
int8_t port_cur = -1;

void USB_Device_SetDeviceAddress(uint8_t Address)
{
   port_addr[port_cur] = Address & 0x7f;
   UDADDR = Address & 0x7f;
   UDADDR |= (1 << ADDEN);
}

void switch_port(int8_t port)
{
   if (port_cur == port) return;
   port_cur = port;
   if (port_addr[port] < 0)
      port_addr[port] = 0;
   UDADDR = port_addr[port] & 0x7f;
   UDADDR |= (1 << ADDEN);
}

volatile uint8_t expire = 0; /* counts down every 10 milliseconds */
volatile uint32_t ispcount=2000; /*counts down for auto enter isp mode*/
uint8_t isptrig;
ISR(TIMER1_OVF_vect)
{
   uint16_t rate = (uint16_t) -(F_CPU / 64 / 100);
   TCNT1H = rate >> 8;
   TCNT1L = rate & 0xff;
   if (expire > 0)
      expire--;
   if(ispcount > 0)
           ispcount--;
   else
     if(isptrig)    {LED(GREEN);((void (*)(void))0x1800)();} /*salto a la pos 0x1800 donde está el bootloader en el at90usb162*/
}



void panic(int led1, int led2)
{
   for(;;) {
      _delay_ms(100);
      LED(led1);
      _delay_ms(100);
      LED(led2);
   }      
}

void HUB_Task(void)
{
   Endpoint_SelectEndpoint(1);

   if (Endpoint_IsReadWriteAllowed())
   {
      if (hub_int_response) {
         if (hub_int_force_data0) {
            Endpoint_ResetDataToggle();
            hub_int_force_data0 = 0;
         }
         Endpoint_Write_Byte(hub_int_response);
         Endpoint_ClearIN();
         hub_int_response = 0x00;
      }
   }
}


void JIG_Task(void)
{
   static int bytes_out = 0, bytes_in = 0;

        Endpoint_SelectEndpoint(2);
        if (Endpoint_IsReadWriteAllowed())
        {
      Endpoint_Read_Stream_LE(&jig_challenge[bytes_out], 8, NO_STREAM_CALLBACK) ;      
        Endpoint_ClearOUT();
      bytes_out += 8;
      if (bytes_out >= 64) {
         //Generate random seed from AVR timer.
         srand(jig_challenge[7] + jig_challenge[8]); // As there is no function to get the time from the AVR we use the two first random chars from the jig_challenge as a seed.

         //Get a random dongle_id, based off the seed generated with the AVR timer.
         dongle_id[0] = rand();
         dongle_id[1] = rand();

         //Check dongle_id. If it should be revoked a new one is generated.
         int i;
         for(i = 0; i < sizeof(usb_dongle_revoke_list); i++) {
            if(usb_dongle_revoke_list[i] == (((dongle_id[0] << 8) & 0xFF) & (dongle_id[1] & 0xFF)) ) {
               i = 0;
               dongle_id[0] = rand();
               dongle_id[1] = rand();
            }
         }
         
         //Generate the jig_response.
         jig_response[0] = 0x00;
         jig_response[1] = 0x00;
         jig_response[2] = 0xFF;
         jig_response[3] = 0x00;
         jig_response[4] = 0x2E;
         jig_response[5] = 0x02;
         jig_response[6] = 0x02;
         jig_response[7] = dongle_id[0];
         jig_response[8] = dongle_id[1];

         //Generate usb_dongle_key from usb_dongle_master_key and dongle_id.
         HMACInit(usb_dongle_master_key, SHA1_DIGESTSIZE);
         HMACBlock(dongle_id, sizeof(dongle_id));
         HMACDone();
         for(i = 0; i < SHA1_DIGESTSIZE; i++) {
            usb_dongle_key[i] = hmacdigest[i];
         }

         //Generate jig_response.
         HMACInit(usb_dongle_key, SHA1_DIGESTSIZE);
         HMACBlock(jig_challenge + CHALLENGE_INDEX, SHA1_DIGESTSIZE);
         HMACDone();
         for(i = 0; i < SHA1_DIGESTSIZE; i++) {
            jig_response[CHALLENGE_INDEX + sizeof(dongle_id) + i] = hmacdigest[i];
         }

         state = p5_challenged;
         expire = 50; // was 90
      }
   }

        Endpoint_SelectEndpoint(1);
        if (Endpoint_IsReadWriteAllowed() && state == p5_challenged && expire == 0)
   {
      if ( bytes_in < 64) {
         Endpoint_Write_Stream_LE(&jig_response[bytes_in], 8, NO_STREAM_CALLBACK);
         Endpoint_ClearIN();
         bytes_in += 8;
         if ( bytes_in >= 64) {
         
            state = p5_responded;
            expire = 50;
         }
      }
   }
}

void connect_port(int port)
{
   last_port_reset_clear = 0;
   hub_int_response = (1 << port);
   port_status[port - 1] = PORT_FULL;
   port_change[port - 1] = C_PORT_CONN;

}

void disconnect_port(int port)
{
   last_port_conn_clear = 0;
   hub_int_response = (1 << port);
   port_status[port - 1] = PORT_EMPTY;
   port_change[port - 1] = C_PORT_CONN;
}



void SetupHardware(void)
{
   /* Disable watchdog if enabled by bootloader/fuses */
   MCUSR &= ~(1 << WDRF);
   wdt_disable();

   /* Disable clock division */
   clock_prescale_set(clock_div_1);

   /* Setup timer */
   TCCR1B = 0x03;  /* timer rate clk/64 */
   TIMSK1 = 0x01;

   /* Hardware Initialization */
   LEDs_Init();
   USB_Init();
   sei();
}


int main(void)
{
    isptrig=1;
   ispcount=2000;
   SetupHardware();

   LED(~GREEN);
   state = init;
   switch_port(5);

   for (;;)
   {
      if (port_cur == 0)
         HUB_Task();

      if (port_cur == 5)
         JIG_Task();

      USB_USBTask();
      
         //connect 5
      if (state == hub_ready && expire == 0)
      {
         connect_port(5);
         state = p5_wait_reset;
      }
      

      if (state == p5_wait_reset && last_port_reset_clear == 5)
      {
         switch_port(5);
         state = p5_wait_enumerate;
      }

      // disconnect 5
      if (state == p5_responded && expire == 0)
      {         
         switch_port(0);
         disconnect_port(5);
         state = p5_wait_disconnect;
      }
      
      if (state == p5_wait_disconnect && last_port_conn_clear == 5)
      {
         state = p5_disconnected;
         expire = 20;
      }
      
      // done
      if (state == p5_disconnected && expire == 0)
      {
         isptrig=0;/*stop enter isp mode*/   
            LED(GREEN);
         break;
      }
   }
}

uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
                                    const uint8_t wIndex,
                                    const void** const DescriptorAddress)
{
   const uint8_t  DescriptorType   = (wValue >> 8);

   void*          Address = NULL;
   uint16_t       Size    = NO_DESCRIPTOR;

   switch (DescriptorType)
   {
   case DTYPE_Device:
      switch (port_cur) {
      case 0:
         Address = (void *) HUB_Device_Descriptor;
         Size    = sizeof(HUB_Device_Descriptor);
         break;
      case 5:
         Address = (void *) port5_device_descriptor;
         Size    = sizeof(port5_device_descriptor);
         break;
      }
      break;
   case DTYPE_Configuration:
      switch (port_cur) {
      case 0:
         Address = (void *) HUB_Config_Descriptor;
         Size    = sizeof(HUB_Config_Descriptor);
         break;
      case 5:
         // 1 config
         Address = (void *) port5_config_descriptor;
         Size    = sizeof(port5_config_descriptor);
         break;
      }
      break;
   case 0x29: // HUB descriptor (always to port 0 we'll assume)
      switch (port_cur) {
      case 0:
         Address = (void *) HUB_Hub_Descriptor;
         Size    = sizeof(HUB_Hub_Descriptor);
         break;
      }
      break;
   }
   
   *DescriptorAddress = Address;
   return Size;
}

void EVENT_USB_Device_Connect(void) { }
void EVENT_USB_Device_Disconnect(void) { }

void EVENT_USB_Device_UnhandledControlRequest(void)
{      
   
   if (port_cur == 5 && USB_ControlRequest.bRequest == REQ_SetInterface)
   {
      /* can ignore this */
      Endpoint_ClearSETUP();
      Endpoint_ClearIN();
      Endpoint_ClearStatusStage();
      return;
   }

   if (port_cur == 0 &&
       USB_ControlRequest.bmRequestType == 0xA0 &&
       USB_ControlRequest.bRequest == 0x00 &&  // GET HUB STATUS
       USB_ControlRequest.wValue == 0x00 &&
       USB_ControlRequest.wIndex == 0x00 &&
       USB_ControlRequest.wLength == 0x04) {
      Endpoint_ClearSETUP();
      Endpoint_Write_Word_LE(0x0000); // wHubStatus
      Endpoint_Write_Word_LE(0x0000); // wHubChange
      Endpoint_ClearIN();
      Endpoint_ClearStatusStage();
      return;
   }

   if (port_cur == 0 &&
       USB_ControlRequest.bmRequestType == 0xA3 && 
       USB_ControlRequest.bRequest == 0x00 &&   //  GET PORT STATUS
       USB_ControlRequest.wValue == 0x00 &&
       USB_ControlRequest.wLength == 0x04) {
      uint8_t p = USB_ControlRequest.wIndex;
      if (p < 1 || p > 6) return;

      Endpoint_ClearSETUP();
      Endpoint_Write_Word_LE(port_status[p - 1]); // wHubStatus
      Endpoint_Write_Word_LE(port_change[p - 1]); // wHubChange
      Endpoint_ClearIN();
      Endpoint_ClearStatusStage();
      return;
   }

   if (port_cur == 0 &&
       USB_ControlRequest.bmRequestType == 0x23 &&
       USB_ControlRequest.bRequest == 0x03 && // SET_FEATURE
       USB_ControlRequest.wLength == 0x00) {
      uint8_t p = USB_ControlRequest.wIndex;
      if (p < 1 || p > 6) return;
      
      Endpoint_ClearSETUP();
      Endpoint_ClearIN();
      Endpoint_ClearStatusStage();

      switch(USB_ControlRequest.wValue) {
      case 0x0008: // PORT_POWER
         if (p == 6 && state == init) {
            /* after the 6th port is powered, wait a bit and continue */
            state = hub_ready;
            expire = 15;
         }
         break;
      case 0x0004: // PORT_RESET
         hub_int_response = (1 << p);
         port_change[p - 1] |= C_PORT_RESET;
         break;
      }
      return;
   }

   if (port_cur == 0 &&
       USB_ControlRequest.bmRequestType == 0x23 &&
       USB_ControlRequest.bRequest == 0x01 && // CLEAR_FEATURE
       USB_ControlRequest.wLength == 0x00) {
      uint8_t p = USB_ControlRequest.wIndex;
      if (p < 1 || p > 6) return;
      
      Endpoint_ClearSETUP();
      Endpoint_ClearIN();
      Endpoint_ClearStatusStage();

      switch(USB_ControlRequest.wValue) {
      case 0x0010: // C_PORT_CONNECTION
         last_port_conn_clear = p;
         port_change[p - 1] &= ~C_PORT_CONN;
         break;
      case 0x0014: // C_PORT_RESET
         last_port_reset_clear = p;
         port_change[p - 1] &= ~C_PORT_RESET;
         break;
      }
      return;
   }

   panic(RED, GREEN);
}

void EVENT_USB_Device_ConfigurationChanged(void)
{
   /* careful with endpoints: we don't reconfigure when "switching ports"
      so we need the same configuration on all of them */
   if (!Endpoint_ConfigureEndpoint(1, EP_TYPE_INTERRUPT, ENDPOINT_DIR_IN, 8, ENDPOINT_BANK_SINGLE))
      panic(GREEN, BOTH);
   if (!Endpoint_ConfigureEndpoint(2, EP_TYPE_INTERRUPT, ENDPOINT_DIR_OUT, 8, ENDPOINT_BANK_SINGLE))
      panic(GREEN, BOTH);
}

void EVENT_USB_Device_Suspend(void) { }
void EVENT_USB_Device_WakeUp(void) { }
void EVENT_USB_Device_Reset(void) { }
void EVENT_USB_Device_StartOfFrame(void) { }
void EVENT_USB_InitFailure(const uint8_t ErrorCode) { }
void EVENT_USB_UIDChange(void) {}

Guay! Cuando llegue a casa lo añado. Sobre que dé siempre el mismo dongle_id en el libusb es normal, porque ahí no aparece el dongle_id del que hablamos, sino los descriptores del USB. Donde realmente aparece el dongle_id es en la respuesta generada a la PS3, y ésta no se puede ver a menos que se altere el código para mandarlo por serial a un ordenador o guardarlo en una eeprom, como hago con el PSGrooPIC.

Saludos, Noltari.
Los firms que vienen en estos enlaces no me acaban de funcionar

Me he bajado la 3.41 modificada y a la primera

FAT de 60gb

SLIM de 250gb
Hola, dos preguntas para los expertos.
¿ se puede Downgradear directamente una 3.50 a una 3.41 sin pasar por el 3.15 en una slim 320G ?.
¿ se perderia la reproduccion BR ?.
Gracias
josete2k escribió:autoDFU añadido:

Gracias. Ya lo he compilado y subido en los hilos.
e echo todo lo del tutorial y perfecto, pero despues de actualizalo a la 3.41 e puesto la pelicula del padrino en blue ray y si arranco y dije cual es el problema pues? una ves con PIC puesto la reproduci y nadamas se veia en verde eso es el problema del video? y se arregla solo quitando el pic?
Noltari escribió:
jhonsay escribió:Hola Noltari, he descargado el .rar y me dispongo a grabar el PSGradePIC_nBTL.hex ya que yo no tengo bootloader, programo directamente a pelo sobre el pic. Luego monto sobre la board de el semi y conecto en el usb mas alejado del lector. Es una FAT de 40GB con firm 2.55 , parpadea un par d veces pero la consola se inicia normalmente y se queda en el menú pidiendo que seleccione usuario, en vez de apagarse la pantalla durante esos 7 min. aprox. . Estoy haciendo algo mal? Gracias.


Por cierto yo uso 18F2455. Gracias.

¿Haces la combinaión de Power + Eject y lo pones en el USB de más a la derecha como si se tratara de un jailbreak normal?



Los esquemas que utilizo para la Board, son estos:
http://img708.imageshack.us/i/14bootloader.png/

No sé que estoy haciendo mal...alguien me exa un cable?
kiris escribió:e echo todo lo del tutorial y perfecto, pero despues de actualizalo a la 3.41 e puesto la pelicula del padrino en blue ray y si arranco y dije cual es el problema pues? una ves con PIC puesto la reproduci y nadamas se veia en verde eso es el problema del video? y se arregla solo quitando el pic?


x2
jhonsay escribió:
Noltari escribió:
jhonsay escribió:Hola Noltari, he descargado el .rar y me dispongo a grabar el PSGradePIC_nBTL.hex ya que yo no tengo bootloader, programo directamente a pelo sobre el pic. Luego monto sobre la board de el semi y conecto en el usb mas alejado del lector. Es una FAT de 40GB con firm 2.55 , parpadea un par d veces pero la consola se inicia normalmente y se queda en el menú pidiendo que seleccione usuario, en vez de apagarse la pantalla durante esos 7 min. aprox. . Estoy haciendo algo mal? Gracias.


Por cierto yo uso 18F2455. Gracias.

¿Haces la combinaión de Power + Eject y lo pones en el USB de más a la derecha como si se tratara de un jailbreak normal?



Los esquemas que utilizo para la Board, son estos:
http://img708.imageshack.us/i/14bootloader.png/

No sé que estoy haciendo mal...alguien me exa un cable?



Hola, ya está solucionado, el problema era la board !!! no estaba como en el esquema, funciona para hacer psgroove pero no para hacer psgrade, así que si alguien tiene el mismo problema, que monte una placa en condiciones que halla sido testeada por alguien antes y listo. La que puse en el anterior post FUNCIONA 100%, probada en PS3 FAT 60GB version 3.50.
En cambio en la PS3 FAT 40GB version 3.55 entra en modo-servicio pero cuando enciendo con el pendrive con los archivos dentro en el puerto mas cercano al lector, no los lee e inicia la consola normalmente. Podría intentar actualizar a pelo metiendo el firm 3.15 en PSE/UPDATE ?? gracias...
jhonsay escribió:Hola, ya está solucionado, el problema era la board !!! no estaba como en el esquema, funciona para hacer psgroove pero no para hacer psgrade, así que si alguien tiene el mismo problema, que monte una placa en condiciones que halla sido testeada por alguien antes y listo. La que puse en el anterior post FUNCIONA 100%, probada en PS3 FAT 60GB version 3.50.
En cambio en la PS3 FAT 40GB version 3.55 entra en modo-servicio pero cuando enciendo con el pendrive con los archivos dentro en el puerto mas cercano al lector, no los lee e inicia la consola normalmente. Podría intentar actualizar a pelo metiendo el firm 3.15 en PSE/UPDATE ?? gracias...

En la 3.55 el archivo para el downgrade fue metido en una lista negra y NO FUNCIONA.
Noltari escribió:
jhonsay escribió:Hola, ya está solucionado, el problema era la board !!! no estaba como en el esquema, funciona para hacer psgroove pero no para hacer psgrade, así que si alguien tiene el mismo problema, que monte una placa en condiciones que halla sido testeada por alguien antes y listo. La que puse en el anterior post FUNCIONA 100%, probada en PS3 FAT 60GB version 3.50.
En cambio en la PS3 FAT 40GB version 3.55 entra en modo-servicio pero cuando enciendo con el pendrive con los archivos dentro en el puerto mas cercano al lector, no los lee e inicia la consola normalmente. Podría intentar actualizar a pelo metiendo el firm 3.15 en PSE/UPDATE ?? gracias...

En la 3.55 el archivo para el downgrade fue metido en una lista negra y NO FUNCIONA.



Si ok gracias, me había liado escribiendo las versiones con tanta play. A esperar entonces.
Se puede seguir juegando online con el firm 3.50 y las DNS cambiadas?? Gracias de antemano ;)
indurein escribió:Se puede seguir juegando online con el firm 3.50 y las DNS cambiadas?? Gracias de antemano ;)


Este es el hilo de downgrade, busca el hilo correspondiente y pregúntalo allí. Es mas lógico, no?
kiris escribió:
kiris escribió:e echo todo lo del tutorial y perfecto, pero despues de actualizalo a la 3.41 e puesto la pelicula del padrino en blue ray y si arranco y dije cual es el problema pues? una ves con PIC puesto la reproduci y nadamas se veia en verde eso es el problema del video? y se arregla solo quitando el pic?


x2


x3
kiris escribió:
kiris escribió:
kiris escribió:e echo todo lo del tutorial y perfecto, pero despues de actualizalo a la 3.41 e puesto la pelicula del padrino en blue ray y si arranco y dije cual es el problema pues? una ves con PIC puesto la reproduci y nadamas se veia en verde eso es el problema del video? y se arregla solo quitando el pic?


x2


x3


Oye, no canses mas con la preguntita! ¿Pretendes llegar a x1000? Si nadie te contesta es porque no se sabe o porque no se te entiende. Exprésate mejor.
Hola a todos. Tengo una PS3 Fat 3.50. Os explico lo que hice:


Carge en mi pic el HexPSGrave.
Formatee un pen en Fat32 desde windows y le meti el Lv2diag.self del paso 1 en la raiz junto con la actualizacion 3.15 con este nombre (ps3os_v3_15_PS3UPDAT.PUP)
Despues, meti mi pinopic en el puerto usb mas alejado del lector, encendi la consola con power+eject y enseguida se apago (hasta aqui todo correcto)
Despues, meti el usb con los 2 archivos en el puerto usb mas proximo al lector y encendi la consola....empezo a parpadear el led verde sin parar y espere unos 10 minutos....pero no pasaba nada, asi que apage la consola desde el botos trasero de la corriente y la volvi a encender y fue a partir de ahi cuando empezo el calvario.
La consola la encendia y se apagaba al momento sola.
Volvi a formatear el usb, meti el Lv2diag.self del paso 1 y le meti tambien en esta ocasion la version 3.41 del tuto.
Volvi a hacer lo mismo, pero en esta ocasion no parpadeaba el led, si no que se quedo fijo (como tiene que ser en teoria no??) tras varios minutos no aparecia nada en la pantalla y de repente el led volvia a parpadear asi, que tras un buen rato, tuve que volver a apagarla.

Bien, no se que es lo que puedo probar a hacer ahora...puede ser que con la version 3.15 de antes, al tener el nombre de (ps3os_v3_15_PS3UPDAT.PUP) se bloquease o algo???
Puede ser que la version 3.41 del tuto, no sea la fixed que hace falta y por eso quizas no termino de downgradearse???

Que es lo mejor que puedo hacer???
Espero vuestra ayuda.
Un saludo.
Sasisimo escribió:Hola a todos. Tengo una PS3 Fat 3.50. Os explico lo que hice:


Carge en mi pic el HexPSGrave.
Formatee un pen en Fat32 desde windows y le meti el Lv2diag.self del paso 1 en la raiz junto con la actualizacion 3.15 con este nombre (ps3os_v3_15_PS3UPDAT.PUP)
Despues, meti mi pinopic en el puerto usb mas alejado del lector, encendi la consola con power+eject y enseguida se apago (hasta aqui todo correcto)
Despues, meti el usb con los 2 archivos en el puerto usb mas proximo al lector y encendi la consola....empezo a parpadear el led verde sin parar y espere unos 10 minutos....pero no pasaba nada, asi que apage la consola desde el botos trasero de la corriente y la volvi a encender y fue a partir de ahi cuando empezo el calvario.
La consola la encendia y se apagaba al momento sola.
Volvi a formatear el usb, meti el Lv2diag.self del paso 1 y le meti tambien en esta ocasion la version 3.41 del tuto.
Volvi a hacer lo mismo, pero en esta ocasion no parpadeaba el led, si no que se quedo fijo (como tiene que ser en teoria no??) tras varios minutos no aparecia nada en la pantalla y de repente el led volvia a parpadear asi, que tras un buen rato, tuve que volver a apagarla.

Bien, no se que es lo que puedo probar a hacer ahora...puede ser que con la version 3.15 de antes, al tener el nombre de (ps3os_v3_15_PS3UPDAT.PUP) se bloquease o algo???
Puede ser que la version 3.41 del tuto, no sea la fixed que hace falta y por eso quizas no termino de downgradearse???

Que es lo mejor que puedo hacer???
Espero vuestra ayuda.
Un saludo.


El archivo de la actualización tiene que llamarse PS3UPDATE. PUP
Lo pone en todos los tutos.
LeiSure escribió:
Sasisimo escribió:Hola a todos. Tengo una PS3 Fat 3.50. Os explico lo que hice:


Carge en mi pic el HexPSGrave.
Formatee un pen en Fat32 desde windows y le meti el Lv2diag.self del paso 1 en la raiz junto con la actualizacion 3.15 con este nombre (ps3os_v3_15_PS3UPDAT.PUP)
Despues, meti mi pinopic en el puerto usb mas alejado del lector, encendi la consola con power+eject y enseguida se apago (hasta aqui todo correcto)
Despues, meti el usb con los 2 archivos en el puerto usb mas proximo al lector y encendi la consola....empezo a parpadear el led verde sin parar y espere unos 10 minutos....pero no pasaba nada, asi que apage la consola desde el botos trasero de la corriente y la volvi a encender y fue a partir de ahi cuando empezo el calvario.
La consola la encendia y se apagaba al momento sola.
Volvi a formatear el usb, meti el Lv2diag.self del paso 1 y le meti tambien en esta ocasion la version 3.41 del tuto.
Volvi a hacer lo mismo, pero en esta ocasion no parpadeaba el led, si no que se quedo fijo (como tiene que ser en teoria no??) tras varios minutos no aparecia nada en la pantalla y de repente el led volvia a parpadear asi, que tras un buen rato, tuve que volver a apagarla.

Bien, no se que es lo que puedo probar a hacer ahora...puede ser que con la version 3.15 de antes, al tener el nombre de (ps3os_v3_15_PS3UPDAT.PUP) se bloquease o algo???
Puede ser que la version 3.41 del tuto, no sea la fixed que hace falta y por eso quizas no termino de downgradearse???

Que es lo mejor que puedo hacer???
Espero vuestra ayuda.
Un saludo.


El archivo de la actualización tiene que llamarse PS3UPDATE. PUP
Lo pone en todos los tutos.



Vale, entonces vuelvo a hacer lo mismo no???
Esta vez formateare el pen por msdos, le metere la actualizacion 3.15 bajo ese nombre junto con el archivo del paso 1.
Estoy en lo cierto??? Es que no quiero quedarme sin consola....
Espero vuestra confirmacion de lo que pretendo hacer.
Gracias por vuestra ayuda.
397 respuestas
14, 5, 6, 7, 8