UsbGecko/fi
< UsbGecko
Jump to navigation
Jump to search
This article is in the process of translating from English to Finnish.
Please help translate this article if you can. |
USB Gecko on Wii/Gamecube -kehitys ja hakkerointi työkalu, joka yhdistetään tietokoneen USB-porttiin ja gamecube muistikorttiväylään Wiissä. Sitä voidaan käyttää; lähettämään homebrewiä konsolin, käyttää tietokonetta etänä Wii Linuxin avulla ja etä-virheen-korjaus työkaluna. Lisätietoa sivulla USB Gecko kotisivu (englanniksi).
Ohjelmat, jota tarvitset tietokoneellasi:
Olen kokeillut linux-ohjelmaa, kaikki näyttää olevan ok, paitsi ftdi_read_data palauttaa aina 0.
#include <stdio.h>
#include <sys/types.h>
#include <ftdi.h>
//-------------------------- Globals ----------------------------------
int32_t status;
int ret;
int32_t TxSent;
int32_t RxSent;
struct ftdi_context ftdic;
int cmd_readmem = 0x04;
//-------------------------- Function Prototypes ----------------------------------
void gecko_opendevice();
int main(int argc, char **argv)
{
void* plop;
unsigned char responseback = 0;
ftdi_init(&ftdic);
printf("-----------------------------------\n");
printf("- NoNameNo's UsbGecko Linux Tools -\n");
printf("-----------------------------------\n\n");
gecko_opendevice();
printf("Connecting to Wii.\n");
printf("%x\n",gecko_writebyte(&cmd_readmem,1));
printf("%x\n",gecko_readbyte(&responseback, 1));
ftdi_usb_close(&ftdic);
ftdi_deinit(&ftdic);
return EXIT_SUCCESS;
}
//----------------------------------------------------------------------------------------------------
//----------------------------------------------------------------------------------------------------
//----------------------------------------------------------------------------------------------------
int gecko_readbyte(unsigned char* lpBuffer, int dwBytesToRead)
{
status = ftdi_read_data(&ftdic, lpBuffer, dwBytesToRead);
if (status > 0){
if(status != dwBytesToRead){
return 2;
}
}
else{
printf("[Error] UsbGecko Reading Device\n");
//ftdi_usb_close(&ftdic);
//ftdi_deinit(&ftdic);
return status;
}
return 1;
}
//----------------------------------------------------------------------------------------------------
//----------------------------------------------------------------------------------------------------
//----------------------------------------------------------------------------------------------------
int gecko_writebyte(unsigned char* lpBuffer, int dwBytesToWrite)
{
status = ftdi_write_data(&ftdic, lpBuffer, dwBytesToWrite);
if (status > 0){
if(status != dwBytesToWrite){
return 2;
}
}
else{
printf("[Error] UsbGecko Writing Device\n");
ftdi_usb_close(&ftdic);
ftdi_deinit(&ftdic);
return 0;
}
return 1;
}
//----------------------------------------------------------------------------------------------------
//----------------------------------------------------------------------------------------------------
//----------------------------------------------------------------------------------------------------
void gecko_opendevice()
{
//---------------------------open device --------------------------------------
if((ret = ftdi_usb_open(&ftdic, 0x0403, 0x6001)) < 0) {
printf("[Error] UsbGecko NOT Detected\n");
exit(0);
}
else{
printf("[OK] UsbGecko Detected\n");
}
//---------------------------Reset device --------------------------------------
if((ret = ftdi_usb_reset(&ftdic)) < 0) {
printf("[Error] UsbGecko Reseting Device \n");
ftdi_usb_close(&ftdic);
ftdi_deinit(&ftdic);
exit(0);
}
else{
printf("[OK] UsbGecko Reseted\n");
}
//---------------------------SetTimeOut to 2000 --------------------------------------
ftdic.usb_read_timeout=2000;
ftdic.usb_write_timeout=2000;
printf("[OK] UsbGecko Setted 2 sec timout\n");
//---------------------------Purging RX/TX buffers --------------------------------------
if((ret = ftdi_usb_purge_buffers(&ftdic)) < 0) {
printf("[Error] UsbGecko Purging Buffer \n");
ftdi_usb_close(&ftdic);
ftdi_deinit(&ftdic);
exit(0);
}
else{
printf("[OK] UsbGecko Purged RX/TX buffers\n");
}
//--------------------------- Set RX/TX size buffer --------------------------------------
if((ret = ftdi_read_data_set_chunksize(&ftdic,65536)) < 0) {
printf("[Error] UsbGecko Setting RX buffer size\n");
ftdi_usb_close(&ftdic);
ftdi_deinit(&ftdic);
exit(0);
}
else{
printf("[OK] UsbGecko Setted RX Buffer Size\n");
}
if((ret = ftdi_write_data_set_chunksize(&ftdic,65536)) < 0) {
printf("[Error] UsbGecko Setting TX Buffer size\n");
ftdi_usb_close(&ftdic);
ftdi_deinit(&ftdic);
exit(0);
}
else{
printf("[OK] UsbGecko Setted TX Buffer Size\n");
}
//---------------------------Required ??? --------------------------------------
sleep(1);
}