XboxHacker BBS
 
*
Welcome, Guest. Please login or register.
Did you miss your activation email?
May 23, 2013, 12:28:07 PM


Login with username, password and session length


Pages: « 1 2 3 4 5 6 7 8 »
  Print  
Author Topic: Using lflash to flash XBReboot??  (Read 33403 times)
trancy
Hacker
***
Posts: 58


View Profile
« Reply #100 on: January 07, 2010, 07:25:44 AM »

I did some modifications.

I think the problem is the pagesize from 256/512 mb Nand. The size is 0x840 and from 16 mb Nand only 0x210.

I am at work right now and can not test it. Can someone confirm it?

Edit 1: some write modifications
Edit 2: Do not use it!

Code:
    /* placed in public domain, written by Felix Domke <tmbinc@elitedvb.net> */
    /* USE ON YOUR OWN RISK. */
        /*modified by tuxuser*/
#include <stdio.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/mman.h>
#include <byteswap.h>
#include <string.h>

int nandsize;
int bsec;
int nandtype = 0;

extern void *mmap64 (void *__addr, size_t __len, int __prot, int __flags, int __fd, __off64_t __offset) __THROW;

volatile void * ioremap(unsigned long long physaddr, unsigned size, int sync)
{
    int axs_mem_fd = -1;
    unsigned long long page_addr, ofs_addr, reg, pgmask;
    void* reg_mem = NULL;

    /*
     * looks like mmap wants aligned addresses?
     */
    pgmask = getpagesize()-1;
    page_addr = physaddr & ~pgmask;
    ofs_addr  = physaddr & pgmask;

    /*
     * Don't forget O_SYNC, esp. if address is in RAM region.
     * Note: if you do know you'll access in Read Only mode,
     *  pass O_RDONLY to open, and PROT_READ only to mmap
     */
    if (axs_mem_fd == -1) {
        axs_mem_fd = open("/dev/mem", O_RDWR|(sync ? O_SYNC : 0));
        if (axs_mem_fd < 0) {
                perror("AXS: can't open /dev/mem");
                return NULL;
        }
    }

    /* memory map */
    reg_mem = mmap64(
        (caddr_t)reg_mem,
        size+ofs_addr,
        PROT_READ|PROT_WRITE,
        MAP_SHARED,
        axs_mem_fd,
        page_addr
    );
    if (reg_mem == MAP_FAILED) {
        perror("AXS: mmap error");
        close(axs_mem_fd);
        return NULL;
    }

    reg = (unsigned long )reg_mem + ofs_addr;
    return (volatile void *)reg;
}

int iounmap(volatile void *start, size_t length)
{
    unsigned long ofs_addr;
    ofs_addr = (unsigned long)start & (getpagesize()-1);

    /* do some cleanup when you're done with it */
    return munmap((unsigned char*)start-ofs_addr, length+ofs_addr);
}

#define STATUS  1
#define COMMAND 2
#define ADDRESS 3
#define DATA    4
#define LOGICAL 5
#define PHYSICAL 6

volatile unsigned int *flash;

void sfcx_writereg(int reg, int value)
{
    flash[reg] = bswap_32(value);
}

unsigned int sfcx_readreg(int reg)
{
    return bswap_32(flash[reg]);
}

void readsector(unsigned char *data, int sector, int raw)
{
    int status;
    sfcx_writereg(STATUS, sfcx_readreg(STATUS));
    sfcx_writereg(ADDRESS, sector);
    sfcx_writereg(COMMAND, raw ? 3 : 2);

    while ((status = sfcx_readreg(STATUS))&1);

    if (status != 0x200)
    {
        if (status & 0x40)
            printf(" * Bad block found at %08x\n", sector);
        else if (status & 0x1c)
            printf(" * (corrected) ECC error %08x: %08x\n", sector, status);
        else if (!raw)
            printf(" * illegal logical block %08x\n", sector);
        else
            printf(" * Unknown error at %08x: %08x. Please worry.\n", sector, status);
    }

    sfcx_writereg(ADDRESS, 0);

    int i;
    for (i = 0; i < 0x210; i+=4)
    {
        sfcx_writereg(COMMAND, 0);
        *(int*)(data + i) = bswap_32(sfcx_readreg(DATA));
    }
}

void flash_erase(int address)
{
    sfcx_writereg(0, sfcx_readreg(0) | 8);
    sfcx_writereg(STATUS, 0xFF);
    sfcx_writereg(ADDRESS, address);
    while (sfcx_readreg(STATUS) & 1);
    sfcx_writereg(COMMAND, 0xAA);
    sfcx_writereg(COMMAND, 0x55);
    while (sfcx_readreg(STATUS) & 1);
    sfcx_writereg(COMMAND, 0x5);
    while (sfcx_readreg(STATUS) & 1);
    int status = sfcx_readreg(STATUS);
    if (status != 0x200)
        printf("[%08x]", status);
    sfcx_writereg(STATUS, 0xFF);
    sfcx_writereg(0, sfcx_readreg(0) & ~8);
}

void write_page(int address, unsigned char *data)
{
    sfcx_writereg(STATUS, 0xFF);
    sfcx_writereg(0, sfcx_readreg(0) | 8);

    sfcx_writereg(ADDRESS, 0);

    int i;

    /*mod by trancy*/
    switch (nandtype)
    {
        case 0:
        {
            for (i = 0; i < 0x210; i+=4)
            {
                sfcx_writereg(DATA, bswap_32(*(int*)(data + i)));
                sfcx_writereg(COMMAND, 1);
            }
        }
        break;

        case 1:
        case 2:
        {
            for (i = 0; i < 0x840; i+=4)
            {
                sfcx_writereg(DATA, bswap_32(*(int*)(data + i)));
                sfcx_writereg(COMMAND, 1);
            }
        }
        break;
    }

    sfcx_writereg(ADDRESS, address);
    sfcx_writereg(COMMAND, 0x55);
    while (sfcx_readreg(STATUS) & 1);
    sfcx_writereg(COMMAND, 0xAA);
    while (sfcx_readreg(STATUS) & 1);
    sfcx_writereg(COMMAND, 0x4);
    while (sfcx_readreg(STATUS) & 1);
    int status = sfcx_readreg(STATUS);
    if (status != 0x200)
        printf("[%08x]", status);
    sfcx_writereg(0, sfcx_readreg(0) & ~8);
}



extern volatile void * ioremap(unsigned long long physaddr, unsigned size, int sync);
extern int iounmap(volatile void *start, size_t length);

int dump_flash_to_file(const char *filename)
{
    printf(" * Dumping to %s...\n", filename);

    FILE *f = fopen(filename, "wb");

    int i;
    for (i = 0; i < nandsize; i += 0x200)
    {
        unsigned char sector[0x210];
        readsector(sector, i, 1);
        if (!(i&0x3fff))
        {
            printf("%08x\r", i);
            fflush(stdout);
        }
        if (fwrite(sector, 1, 0x210, f) != 0x210)
            return -1;
    }
    printf("done!   \n");
    fclose(f);
    return 0;
}

int verify_flash_with_file(const char *filename, int raw)
{
    FILE *f = fopen(filename, "rb");
    if (!f)
        return -1;

    if (raw == -1) /* auto */
    {
        fseek(f, 0, SEEK_END);

        if (ftell(f) == nandsize / 0x200 * 0x210)
        {
            raw = 1;
            printf(" * detected RAW nand file, verifying in raw mode.\n");
        } else
        {
            raw = 0;
            printf(" * detected short nand file, verifying in cooked mode.\n");
        }
        fseek(f, 0, SEEK_SET);
    }

    printf(" * Verifying flash with %s...\n", filename);

    int i;
    for (i = 0; i < nandsize; i += 0x200)
    {
        unsigned char sector[0x210], sector_flash[0x210];
        if (!(i&0x3fff))
        {
            printf("%08x\r", i);
            fflush(stdout);
        }
        if (fread(sector, 1, 0x210, f) != 0x210)
            return i;
        readsector(sector_flash, i, raw);
        if (sector_flash[bsec] != 0xFF) /* bad sector */
        {
            printf(" * ignoring bad sector at %08x\n", i);
            continue;
        }
        if (memcmp(sector, sector_flash, 0x210))
        {
            printf(" * VERIFY error at %08x\n", i);
            return -2;
        }
    }
    printf("done!   \n");
    fclose(f);
    return i;
}

int flash_from_file(const char *filename, int raw)
{
    printf(" * Flashing from %s...\n", filename);

    FILE *f = fopen(filename, "rb");
    if (!f)
        return -1;

    if (raw == -1) /* auto */
    {
        fseek(f, 0, SEEK_END);

        if (ftell(f) == nandsize / 0x200 * 0x210)
        {
            raw = 1;
            printf(" * detected RAW nand file, flashing in raw mode.\n");
        } else
        {
            raw = 0;
            printf(" * detected short nand file, flashing in cooked mode.\n");
        }
        fseek(f, 0, SEEK_SET);
    }

    int i;
    for (i = 0; i < nandsize; i += 0x4000)
    {
        unsigned char sector[0x210*32], sector_flash[0x210*32];
        memset(sector, 0xFF, sizeof(sector));
        if (!fread(sector, 1, 0x210*32, f))
            return i;

        printf("%08x\r", i);
        fflush(stdout);

        int phys_pos;

        if (!raw)
        {
            readsector(sector_flash, i, 0);

            phys_pos = sfcx_readreg(PHYSICAL);

            if (!(phys_pos & 0x04000000)) /* shouldn't happen, unless the existing image is broken. just assume the sector is okay. */
            {
                printf(" * Uh, oh, don't know. Reading at %08x failed.\n", i);
                phys_pos = i;
            }
            phys_pos &= 0x3fffe00;

            if (phys_pos != i)
                printf(" * relocating sector %08x to %08x...\n", i, phys_pos);
        } else
            phys_pos = i;

        flash_erase(phys_pos);
        int j;

        /*mod by trancy*/
        switch (nandtype)
        {
            case 0:
            {
                for (j = 0; j < 32; ++j) //pagesize: 0x200
                    write_page(phys_pos + j * 0x200, sector + j * 0x210);
            }
            break;

            case 1:
            case 2:
            {
                for (j = 0; j < 8; ++j) //pagesize: 0x840
                    write_page(phys_pos + j * 0x800, sector + j * 0x840);
            }
            break;
        }
    }
    return 0;

}

int main(int argc, char **argv)
{
    flash = ioremap(0xea00c000, 0x1000, 1);

    printf(" * flash config: %08x\n", sfcx_readreg(0));

    sfcx_writereg(0, sfcx_readreg(0) &~ (4|8|0x3c0));

    int reg = sfcx_readreg(0);

    switch(reg)
    {
    // 512MB
    case 0x00AA3020:
        nandsize = 512 * 1024 * 1024;
        bsec = 0x200;
        nandtype = 2;
        break;
    //256MB NAND
    case 0x008A3020:
        nandsize = 256 * 1024 * 1024;
        bsec = 0x200;
        nandtype = 1;
        break;
    //16 MB NAND
    case 0x00023010:
    case 0x01198010:
        nandsize = 16 * 1024 * 1024;
        bsec = 0x205;
        nandtype = 0;
        break;
    default:
        printf(" * unknown flash config %08x\n", reg);
        return 1;
    }


    if (argc != 2 && argc != 3)
    {
        printf("usage: %s <current> [<new>]\n", *argv);
        return 2;
    }

    const char *orig = argv[1];
    int res = verify_flash_with_file(orig, 1);
    if (res == -1)
    {
        dump_flash_to_file(orig);
        res = verify_flash_with_file(orig, 1);
    }

    if (res != nandsize)
    {
        if (res == -2)
            printf(" * verify failed!\n");
        else if (res > 0)
            printf(" * verified correctly, but only %d bytes.\n", res);
        else
            printf(" * original image invalid\n");
        printf(" * I won't flash if you don't have a full, working backup, sorry.\n");
        return 1;
    }
    printf(" * verify ok.\n");

    if (argc > 2)
    {
        const char *image = argv[2];

        flash_from_file(image, -1);
        res = verify_flash_with_file(image, -1);
        if (res > 0)
            printf(" * verified %d bytes ok\n", res);
        else
            printf(" * verify failed! (%d)\n", res);
    }
    return 0;
}



« Last Edit: January 08, 2010, 02:02:19 PM by trancy » Logged
maximilian0017
Xbox Hacker
*****
Posts: 684


View Profile
« Reply #101 on: January 07, 2010, 10:02:44 AM »

Thanks Eiji.  That's never fun- I was hoping to mess with the code and use trial and error to get it to write back only the first 1000 blocks, but not sure I have enough experience with the hardware to take any sort of risks...ha

The worst thing that can happen is that you need to short the datapins of the nand (41-44) while reconnecting the Powerconnector, after that you can write to the Nand again if Nandpro cant write to it.

Complete steps are somwhere here on the board.
« Last Edit: January 07, 2010, 10:05:19 AM by maximilian0017 » Logged
MagnusHydra
Hacker
***
Posts: 85


View Profile
« Reply #102 on: January 07, 2010, 12:08:42 PM »

Here is a lil bit newer version of lflash, which is now "all-in-one". It *should* support Reading/Flashing ALL 16MB Consoles and Reading 256/512MB Consoles.

Which way to dump this way?
Quote
07. type "gcc lflash.c", this will compile lflash and create an a.out file on the USB drive
08. type "chmod +x a.out", this will make it executable
09. type "./a.out backupnand.bin

Or like this?
Quote
type gcc lflash.c -o lflash
type ./lflash 1.bin

Or are the the same in written different?
The chmod +x a.out  is an extra step in away. Both ways dumping my 512 jasper the xbox freezes.


Also tuxuser u ask if someone can help. Let me know how I'll try.
Logged

If you need to get up with me I am always on aim and over at www.360haven.com. If u don't have aim I do have msn but you will have to ask me to get on.
My dual nand rgh showing retail nand online then switching the rgh nand auto launching freestyle dash
utar
Master Hacker
****
Posts: 328


View Profile
« Reply #103 on: January 07, 2010, 12:26:23 PM »

Both are the same "gcc lflash.c -o lflash" is neater since the "-o" sets the output file name to be lflash, rather then a.out.

I expect you can get away without chmod assuming that gcc automatically sets the execute bit.


Utar
« Last Edit: January 07, 2010, 12:29:43 PM by utar » Logged
MagnusHydra
Hacker
***
Posts: 85


View Profile
« Reply #104 on: January 07, 2010, 12:40:56 PM »

Both are the same "gcc lflash.c -o lflash" is neater since the "-o" sets the output file name to be lflash, rather then a.out.

I expect you can get away without chmod assuming that gcc automatically sets the execute bit.


Utar
K thank you

I got to to start to dump my 512 nand. It got to 0c0c0000 and had a bad block.
*(corrected) ECC error 0c0c0200: 00000210
*(corrected) ECC error 0c0c0400: 00000210
*(corrected) ECC error 0c0c0600: 00000210
*(corrected) ECC error 0c0c0800: 00000210
*(corrected) ECC error 0c0c0a00: 00000210
*(corrected) ECC error 0c0c0c00: 00000210
*(corrected) ECC error 0c0c0e00: 00000210
*(corrected) ECC error 0c0c1000: 00000210
*(corrected) ECC error 0c0c1200: 00000210
*(corrected) ECC error 0c0c1400: 00000210
*(corrected) ECC error 0c0c1600: 00000210
*(corrected) ECC error 0c0c1800: 00000210
*(corrected) ECC error 0c0c1a00: 00000210
*(corrected) ECC error 0c0c1c00: 00000210
*(corrected) ECC error 0c0c1e00: 00000210
19e4c000
Frozen... I am waitting a few mins to see what happends

seems like every time I cut the xbox off and redo everything it goes a little bit-farther before it freezes... Embarrassed

Which lflash.c file is a 100% work jasper 512 dumping? So I can see what it dose. I don't need it to really get a dump I did mine LTP 3 time along time ago... I just messing around testing things.
« Last Edit: January 07, 2010, 12:44:43 PM by MagnusHydra » Logged

If you need to get up with me I am always on aim and over at www.360haven.com. If u don't have aim I do have msn but you will have to ask me to get on.
My dual nand rgh showing retail nand online then switching the rgh nand auto launching freestyle dash
iLLNESS
Master Hacker
****
Posts: 398


View Profile
« Reply #105 on: January 07, 2010, 02:35:56 PM »

I did some modifications.

I think the problem is the pagesize from 256/512 mb Nand. The size is 0x840 and from 16 mb Nand only 0x210.

I am at work right now and can not test it. Can someone confirm it?

Edit 1: some write modifications

okay tested. results:

tuxusers latest script to dump nandpro equivalent of -r64 worked fine. it was a 66mb file, which verified %100 against the NAND i read AFTER running the script using nandpro2b and usb spi flasher. so, tuxusers script is SAFE to some degree (atleast for me).

now onto your script trancy.
your script also verifies the read %100 with usb spi flasher read. so that is good. however, during flash it locked up the 360.
Code:
[00000280][00000280][00000280][00000280][00000280][00000280][00000280][00000280][00000280][00000280]
[00000280][00000280][00000280][00000280][00000280][00000280][00000280][00000280][00000280][00000280]
[00000280][00000280][00000280][00000280][00000280][00000280][00000280][00000280][00000280][00000280]
etc etc etc
018a0000 <--- failed here
the 360 was completely dead after the failed write. would not turn on at all. nandpro still detects the 360 fine however, so it is recoverable.

these are the results as of now.

i will try and flash the nand again to see if i make it farther like some people have had luck with during read. as it stands now however, this script is NOT SAFE unless you can recover with USB/LPT afterwards.
Logged
Bydox
Member
**
Posts: 30


View Profile
« Reply #106 on: January 08, 2010, 05:56:11 AM »

For the people working on 256/512 Mb write support, it may be easier to debug by simply writing a single (unused) block somewhere at the end of the nand.  Then read back this same block to see if lflash wrote the data correctly.  Hopefully this will not lock up Linux and not corrupt anything important in the nand.  Once the code works for these garbage/unused blocks, you can try to flash the important data at the start of the nand.

I noticed that the total Linux freezes/crashes are much more common when reading/writing to USB storage.  When reading/writing to RAM file system or network share, it doesn't seem to happen for me.  I only get brief pauses (terminal window only, not all of desktop) that eventually resume again.  Try that.

BTW, looking at the dump of a big block jasper, I don't think the sector size is any different from a regular 16Mb nand.  It's still 528 bytes.  There might be more than 32 sectors per block...have not verified that yet.
Logged
trancy
Hacker
***
Posts: 58


View Profile
« Reply #107 on: January 08, 2010, 01:42:30 PM »

@iLLNESS
Thanks for testings!

I noticed that the total Linux freezes/crashes are much more common when reading/writing to USB storage.  When reading/writing to RAM file system or network share, it doesn't seem to happen for me.  I only get brief pauses (terminal window only, not all of desktop) that eventually resume again.  Try that.

i can confirm this too, maybe we need a newer version of linux livecd (only console) with better mount/fat support! The xbox freezes everytime beyond 150 MB of dump. I think the fat driver from linux is the problem.

BTW, looking at the dump of a big block jasper, I don't think the sector size is any different from a regular 16Mb nand.  It's still 528 bytes.  There might be more than 32 sectors per block...have not verified that yet.

Yes you are right, the pagesize is always 0x210 (RAW) long. Only the pagecount in a block is differnt to the larger nand.
« Last Edit: January 08, 2010, 02:06:49 PM by trancy » Logged
iLLNESS
Master Hacker
****
Posts: 398


View Profile
« Reply #108 on: January 08, 2010, 02:54:21 PM »

no problem.

im available for future testing as well Wink
Logged
tex1ntux
Hacker
***
Posts: 50


View Profile
« Reply #109 on: January 08, 2010, 05:09:47 PM »

I believe this is the format...

Big block  - (0x200 + 0x10 ) * 256 pages = 0x21000 = 1 block
Small block - (0x200 + 0x10) * 32 pages = 0x4200 = 1 block

Also, here's a trick for reading from a 256MB without crashing:

Copy the program from /flash to /Desktop, so the dump ends up on the desktop instead of going straight to the usb drive.
After it finishes drag the dump to /flash.

This helps with the problems reading/writing to USB while dumping.
« Last Edit: January 08, 2010, 05:16:55 PM by tex1ntux » Logged
iLLNESS
Master Hacker
****
Posts: 398


View Profile
« Reply #110 on: January 08, 2010, 05:40:19 PM »

I believe this is the format...

Big block  - (0x200 + 0x10 ) * 256 pages = 0x21000 = 1 block
Small block - (0x200 + 0x10) * 32 pages = 0x4200 = 1 block

Also, here's a trick for reading from a 256MB without crashing:

Copy the program from /flash to /Desktop, so the dump ends up on the desktop instead of going straight to the usb drive.
After it finishes drag the dump to /flash.

This helps with the problems reading/writing to USB while dumping.

doesn't this introduce new issues? i thought 360 only used like 256mb of ram in linux.... i believe tuxuser mentioned this on irc and said that dumping from the livecd in general is flakey... but i've heard the freezing issues stopped when dumping nand to WINSCP or SSH or something. i don't remember.

either way, im reinstalling ubuntu 7.10 on one of my old 20gigs after my 250GB kicked the bucket. so i should be able to again dump/write the nand with no freezing issues for fat/space issues.
WD was nice enough to send me a Black drive to replace my current Blue drive.
Logged
trancy
Hacker
***
Posts: 58


View Profile
« Reply #111 on: January 08, 2010, 08:36:05 PM »

Some progress  Grin

Thanks tex1ntux for the info Wink

I need some beta tester Wink to test this with 16mb flash
We need to copy xbr.bin and xbrflash.c (I called it so)  to Desktop (yes, sometimes Xbox freezes during copy xbr.bin to desktop).

1.st is to get a backup from the nand
type: ./a.out backup.bin
Then we must copy backup.bin to USB-Drive. If Xbox freezes then try again.

After that we can flash the xbr.bin, but we need to move bad blocks before.

http://rapidshare.com/files/332452093/xbrflash.c

I tested it with 512MB Nand and it works;)
XBR-Flash will only dump and write 64MB.

Code:
XBR-Flash for Linux v0.1.1 beta by trancy
Thanks goes to tmbinc and Redline99

Nandsize: 64 MB

Dumping to backup.bin...
0x200 block's to dump...
Bad block found (index: 0x73)                
Reading block: 0x200 of 0x200
Reading done in 41.00 sec.
Speed: 1.56 MB/s

Verifying flash with backup.bin...
0x200 block's to verify...
Bad block found (index: 0x73)                
Ignoring bad block at 0x73
Verifying block: 0x200 of 0x200
Verify done in 41.00 sec.
Speed: 1.56 MB/s
Verify ok.

Flashing from xbr.bin...
0x200 block's to write...
Detected RAW nand file, flashing in raw mode.
Unexpected erase at block 0x73 with status 0x202
Writing block: 0x200 of 0x200
Write done in 31.00 sec.
Speed: 2.06 MB/s

Verifying flash with xbr.bin...
0x200 block's to verify...
Detected RAW nand file, verifying in raw mode.
Bad block found (index: 0x73)                
Ignoring bad block at 0x73
Verifying block: 0x200 of 0x200
Verify done in 41.00 sec.
Speed: 1.56 MB/s
Verified 67108864 bytes ok :)
« Last Edit: January 08, 2010, 08:49:39 PM by trancy » Logged
iLLNESS
Master Hacker
****
Posts: 398


View Profile
« Reply #112 on: January 08, 2010, 08:43:50 PM »

i've got 16mb i can test.
you say big block now works?
Logged
trancy
Hacker
***
Posts: 58


View Profile
« Reply #113 on: January 08, 2010, 08:44:58 PM »

yes it works Wink
Logged
iLLNESS
Master Hacker
****
Posts: 398


View Profile
« Reply #114 on: January 08, 2010, 08:46:35 PM »

k booting 16mb box now.

ive got ubuntu on the hdd (just finished as i read your post actually)

so i shouldnt have any issues with freezing due to sizes.. even though its only 16mb lol
Logged
iLLNESS
Master Hacker
****
Posts: 398


View Profile
« Reply #115 on: January 08, 2010, 08:49:35 PM »

rapidshare is overloaded...
mind posting to
Code:
or some other site?
Logged
trancy
Hacker
***
Posts: 58


View Profile
« Reply #116 on: January 08, 2010, 08:51:15 PM »

Here
http://rapidshare.de/files/48965797/xbrflash.c.html
Logged
iLLNESS
Master Hacker
****
Posts: 398


View Profile
« Reply #117 on: January 08, 2010, 08:57:02 PM »

Code:
XBR-Flash for Linux v0.1.1 beta by trancy
Thanks goes to tmbinc and Redline99

Nandsize: 16 MB

Dumping to backup2.bin...
0x400 block's to dump...
Reading block: 0x400 of 0x400
Reading done in 12.00 sec.
Speed: 1.33 MB/s

Verifying flash with backup2.bin...
0x400 block's to verify...
Verifying block: 0x400 of 0x400
Verify done in 11.00 sec.
Speed: 1.45 MB/s
Verify ok.

Flashing from xbr.bin...
0x400 block's to write...
Detected RAW nand file, flashing in raw mode.
Writing block: 0x400 of 0x400
Write done in 11.00 sec.
Speed: 1.45 MB/s

Verifying flash with xbr.bin...
0x400 block's to verify...
Detected RAW nand file, verifying in raw mode.
Verifying block: 0x400 of 0x400
Verify done in 11.00 sec.
Speed: 1.45 MB/s
Verified 16777216 bytes ok :)

BRB. reboot.
Logged
iLLNESS
Master Hacker
****
Posts: 398


View Profile
« Reply #118 on: January 08, 2010, 08:58:35 PM »

its ALIVE.

everything is A-OKAY. box boots.
Logged
trancy
Hacker
***
Posts: 58


View Profile
« Reply #119 on: January 08, 2010, 09:00:54 PM »

Thank you. I see the 16 MB Nand is quite slower then the bigger Nands
Logged
Pages: « 1 2 3 4 5 6 7 8 »
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.11 | SMF © 2006-2009, Simple Machines LLC

Valid XHTML 1.0! Valid CSS! Dilber MC Theme by HarzeM