Dongle Chino - Euclala/RCM-X86

1, 2, 3, 4, 5, 619
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_

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.
david_jmnz escribió:Yo lo acabo de recibir, pero pongo el dongle en la consola y no hace nada. Esta roto?


Deberia encenderse una luz roja nada mas enchufarlo y luego parpadea a verde, se queda fija y entonces le das al power+volumen arriba.
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.



No no si el mio va perfecto :) , yo lo pongo solo para ayudar .

Se ve que le salio un partida defectuosa

@david_jmnz El mio venia sin carga , ponlo a cargar unos minutos antes de usarlo.
Otra vez Despues de hacer muchas pruebas volvio a 0 % de carga y para poder usarlo le di una vez al botoncito y funciono perfedcto.
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 :D
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 :D


Me uno a la petición! [ginyo] yo que no se nada de python os agradecería que echarais una mano a los incultos de ese mundo.

Saludos!! [beer]
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 :D

Me uno a la petición del compañero
Cuando ustedes buenamente puedan lo ponen por aquí y que el autor del hilo haga el favor de ponerlo en el primer post, muchos les estaríamos agradecidos gracias por adelantado
Saludos
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


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...
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 :) ¡¡
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.
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.

Como si es un solo euro, tu has pagado por un producto, el cual debería estar en perfectas condiciones y cumplir con lo que anuncia que hace, estas en tu claro derecho a reclamar por ello, suerte y ya nos contarás como acaba la película
Saludos
vamos reclamación pero ya no te lo pienses,
Yo lo pedi ayer y me habeis puesto el cuerpo malo.
He pagado por paypal, asi que como no funcione reclamacion al canto.
Lo de reprogramarlo no me importa mucho ya que uso SXOS, y si viene con ese payload no creo que tenga que actualizarlo en mucho tiempo.
Las mejoras van en el firm, el payload simplemente es una llamada para ejecutar el bin de la sd (que es donde esta el SO)
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.
JulesRussel escribió:@CASTIGADOR Sí, tiene hilo en gbatemp también:
https://gbatemp.net/threads/my-dongle-p ... er.513755/

Ese que has puesto no es de otro cacharro?
Saludos
Hace 3 días que lo pedí y aun no me han enviado nada
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.


Estoy de acuerdo contigo, el usb tipo C da un poco de miedo cada vez que se quita, parece que se va a romper.
@EVILRAVER Sí, el mismo que de la página que puso Castigador. Es otro proyecto que tiene también payloads en UF2, en principio el vuestro es un arduino zero (según el github) así que ambos deberían de incorporar el chip "Atmel SAM D21" con lo que os deberían de servir esos payloads.
El de gbatemp los vende en tindie pero sin puerto usb c me parece más incómodo. https://www.tindie.com/products/electro ... ee-loader/
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...


Buff, ya vi que habló en GitHub, pero eso no es lo mío, yo ya reclamé ayer en AliExpress y poniendo captura de lo de GitHub...
Me tocó la "china" nunca mejor dicho
@javieron_

hehehe, ya tenemos como crear cualquier payload en archivo uf2 para enviarlo al dongle como unidad usb, ya se como hacerlo, lo he probado y me funciona con todos excepto txso (que a euclala la ocupa mucho menos)...

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..
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

aqui lo bueno, el script que nosotros pensabamos que era para convertir los payload .bin a uf2, no era tal, este sirve par convertir las compilaciones que acabamos de hacer a uf2.(probe tanto con bin como con hex para ver que el proceso funciona bien), ocupan lo mismo los uf2..

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...

P.D: el unico que no me ocupa lo mismo es el TXOS, no se porque creo que me falta cambiar alguna opcion del build, comprobados ReiNX 1.2 y las versiones antiguas de ReiNX y tambien HBL32, todos los archivos creados con este metodo coinciden con los de euclala.


Leyendo por ahi, hay bastante gente que las placas trinket m0 y arduino no se las reconoce el pc, probad otros puertos del pc y recomiendas si teneis un hub usb autoalimentado mejor, tambien a ser posible usar puertos 2.0, los 3.0 suelen dar problemas.
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.
Se.puede usar este dogle.para cargar el boot.bat del SXOS?
Que dogle chino sería bueno para cargar el SXOS?
Ya que el mío oficial del SXOS dejó de funcionar y ya no me carga
El boot.dat tiene que ir en la microSD. De momento solo vale para RajNX, ReiNX, SX OS y Atmosphere. El dongle salvo escepciones no parece malo.
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?.
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()
{

}


Este es el resultado que me da al subirlo al trinket:

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.


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ó: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.



cargarlo a traves de arduino ide y hacerlo luego con el uf2 es lo mismo...
Con arduino ide lo cargas tal cual, luego no hace falta poner el archivo uf2 que realmente es lo mismo solo que esta preparado para instalar al copiar a la unidad que crea el dongle cuando lo conectas al pc con el modo res (programacion)...

Algo debe tener el TXOS ya que si yo intento hacerlo manual no me ocupa lo mismo que el que hace euclala (podria ser que estuviera erroneo......
podrias poner el uf2 de hbl32, para ver si este te lo injecta, te saldra su menu..

UF2 :
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..

ya esta listo para usar.

P.D: Vale, acabo de comprobar que cambiando el txos.h que tiene euclala, por una version que he conseguido del foro de trinket m0, llamada sxos.h, eran distintas, compilado con este nuevo archivo y vuala, uf2 con el mismo peso que los archivos de uclala...
Tambien he descubierto otra cosa, con el build te crea los archivos para v3, no se si para los que teneis placa v2 tendrias que usar otro, ya que los uf2 que el pone en v2 pesan 3 kb mas....
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.
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.


Buenas, aqui no puedo subir archivos..
No se que diferencias habra entre placa v2 y v3, pero si tienes la placa v2 puedes probar a instalar el uf2 de la version V2ext del github de euclala.
Utilizando el metodo que puse antes.
Otra opcion es que @javieron_ te pudiera pasar una copia de los archivos que a el le funcionan de su dongle, (current.uf2, index.html y infor_uf2.txt) y los pones tu en el tuyo copiandolos con el metodo anterior en la unidad usb que crea el dongle.

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..(ahora bajare uno de tx xecuter y lo convertire para ver que sale...), de momento yo he cogido uno del foro de trinket m0 llamado sxox.h y ese parece correcto el payload...


Payloads:
euclala txos.h : 146 kb
trinket m0 sxos.h : 168 kb.

El mio acabo de bajarlo de team xecuter y convertilo de bin a .h
clock SXOS.h : 168 kb.

Asi que ahora a saber porque el de euclala ocupa menos que parte del payload habra quitado??.
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..

pues por que con source se tunea y los chinos no se aguantan je, je
ya podemos hacer nuestros payload al gusto?

saludos
No estoy en casa pero esta noche os subo los ficheros :)
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.
Podéis poner enlace de AliExpress por favor?

Viene ya con el Sox preparado para instalar como el sox pro original??
oso^Yonki escribió:Podéis poner enlace de AliExpress por favor?

Viene ya con el Sox preparado para instalar como el sox pro original??


Hola Yonki, lo tienes en la primera página de este mismo hilo.

Un saludo.
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 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.


Domde está ese programa es para la Nintendo o.para el pc ?
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.


Hola clockterra muchas gracias por el comentario de los payloads. De todas formas (no lo he probado personalmente) tengo entendido que desde el menú de TXOS se pueden lanzar payloads cargados en la SD ¿No es así?

Si esto funciona, entiendo que pudiendo lanzar el TXOS con el dongle, luego puedo meter dentro de la SD el payload que quiera y desde el menú de inicio del TXOS lanzar un payload externo ¿me equivoco?

Yo de momento no necesito lanzar payloads distintos al de TXOS por que es el sistema que utilizo y la verdad estoy muy contento con el, pero si en un futuro saliera un custom firmware mejor o con más utilidades que este, creo que esta seria la manera de poder lanzarlo.

Por último, entiendo también que con el sistema de TXOS el payload siempre será el mismo y que cuando haya una actualización será en todo caso del boot.dat ¿esto es así? por lo tanto creo que el dongle que tengo ahora (aunque no pueda reprogramarlo) siempre me servirá ¿me equivoco?

De todas formas, como he dicho en un comentario anterior, ya he puesto una reclamación a Aliexpress, y entiendo que casi al 100% me devolverán el dinero de este dongle. Hoy he vuelto a pedir otro dongle al mismo vendedor (espero que ya venga con el problema corregido) y cuando venga este se lo regalaré a un buen amigo del foro que también utiliza TXOS como yo, así al menos se que le dará un uso y no se quedará tirado por ahí en cualquier cajón.

Un saludo.
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 que me apeteciera cargar, desde la micro SD externamente. No habría problema, pero así estoy... Jajajajajaja
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


Desde luego quitar la resistencia "bien" es muy difícil. No tengo una estación de soldadura ni un soporte con lupa (que seria lo ideal), de hecho estoy mirando alguna en Amazon para poder practicar un poco con esto y si me surge alguna cosilla poder hacerla cómodamente.

Quitar la resistencia es fácil, yo he utilizado un palillo de madera para empujarla con una mano y el soldador en la otra, he calentado ambas partes de la resistencia hasta que ha salido.

Lo difícil ha sido poner la soldadura nuevamente. No tengo flux y no se quedaba pegada al dongle. He tenido que coger un hilo de cobre de un cable de teléfono, bañarlo un poco con soldadura y ayudado nuevamente del palillo en la posición acercar el soldador hasta que ha funcionado, pero me ha costado muchísmo por que es un espacio muy pequeño, esto sin una lupa de aumento es casi misión imposible, de hecho no se como he podido hacerlo yo sin nada, la verdad... pura chiripa.

Lo que me extraña es que a ti ni siquiera te arranque el TXOS de fábrica... A mi cuando me vino si que me funcionaba el arranque del sistema, pero al igual que ahora no me entraba en modo programación en el pc.

Desde luego después de la experiencia la única solución que te queda es quitar resistencia y programar nuevamente y luego puentear de nuevo para que lance el payload. Pero sin una lupa y un soldador de punta muy fina es complejo, la verdad.

Haz la reclamación en Aliexpress igual que yo, te devolverán el dinero segurisimo por que el vendedor sabe que este problema existe y pide otro a este vendedor o de otra marca/modelo si este no te convence.

Un saludo amigo y ya me dirás si te decides a cacharrear.
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
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


Eso no es el dongle que se trata en este hilo....
si quieres hablar de el, mejor create un hilo para ello...
Ese va con capacitores que ademas no parecen supercharger con lo cual despues de un par de usos toca poner a cargar....

Lo unico que tienen en comun es que los hace el mismo creo...Pero al no usar bateria tendra los mismos problemas que tiene el dongle the TX.
@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.
Imagen
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.
Imagen


si se que son los condensadores, el trabajo real que deben realizar suele ser para mantener estable el voltaje, no como en el caso de este dongle o el del SXOS pro, al tener que realizar todo el trabajo los condensadores tienden a estropearse muy pronto...(y mas con la calidad de los condensadores que ponen los chinos)..
Si te mueves un poco ademas habras visto la de gente con problemas ya en el SXOS pro debido a los condensadores y se supone que estos pusieron los de calidad...Asi que por eso yo evito los dongle que lleven condensadores, prefiero bateria..
Ahora es cuando me como un zass en toda la boca, y el chino me envia el rcm-x86 v3 y para sorpresa lleva condensadores...jejejejeee
@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
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 converter
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 converter
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.


Muchas gracias! Me lo anoto para cuando llegue el mío :-)
@clockterra


Si si, en cuanto esté delante de un pc actualizo la info que aún no he tenido oportunidad
Entonces el dongle este ¿tiene bateria o condensadores? Yo en las fotos veo dos condensadores como dos soles.
BeSalmorejo escribió:Entonces el dongle este ¿tiene bateria o condensadores? Yo en las fotos veo dos condensadores como dos soles.


pues no estas viendo la foto que toca...(la del atmosphere no es el mismo dongle, por eso pedia al que lo puso que si queria hablar de el creara un hilo...)...

el rcm-x86 lleva una bateria de 3.7v y 60 mA.
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!
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!



Buenos dias ¡ En princio posible es, pero como actualmente no tenemos nada hecho que no este en el Github del creador ( link en la primera pagina ) , de momento no es necesario.
919 respuestas
1, 2, 3, 4, 5, 619