Welcome! Log In Create A New Profile

Advanced

Unbricking OMNINAS kd20 (oxnas820)

Posted by crosser 
Unbricking OMNINAS kd20 (oxnas820)
July 03, 2014 03:18AM
I have Shuttle Omninas kd20, and I managed to screw its u-boot image in NAND. So it does not boot into u-boot from NAND anymore. The board does have serial header (which I am using), but no JTAG header. And obviously it has 2 SATA interfaces (it's a NAS box).

I am trying to use this guide to boot from SATA disk, and it works. Almost. First, using different stage1 images result in reported frequecies that do not match those in the names of the images. I need to use stage1/stage1.wrapped800 to get reported 750 MHz that is "right" for the board.

After booting into the u-boot, I can do almost anything using tftp: chain-load another u-boot, or boot a kernel. So far so good. But NAND operation is unstable. Erase works, reading usually works, writing always hangs. So I cannot recreate the u-boot partition in NAND, and presumably ubifs won't work if I try.

NAND access (obviously) worked fine when I was booting from NAND, including when I chain-loaded an external u-boot over tftp.

All of the above makes me think that the problem is in stage1, that does not suit my board, and incorrectly initializes something in the hardware.

I (obviously) have u-boot built from the source that works when chain-loaded over tftp.

Now the question: how can I constuct the stage1 and u-boot images that are suitable for writing onto the SATA disk, and do I need to modify the contents of the first sector (the one constructed by perl "print"s in disk_create)? I did not find any resources explaining this.

Thanks!
Re: Unbricking OMNINAS kd20 (oxnas820)
July 03, 2014 04:23AM
crosser,

This question I think would be best answered by WarheadsSE.

However, since it is an OX820, I would look at this u-boot (Note that it is not usable as is for your purpose, I've provided only the NAND version for Pogo V3):
http://forum.doozan.com/read.php?3,16017

I think it would need to be adjusted somewhat for your box (clock, 2 SATA ,...). And booting with SATA can be done, as discussed in this original development thread:
http://archlinuxarm.org/forum/viewtopic.php?f=55&t=6193

Just some ideas to consider.

-bodhi
===========================
Forum Wiki
bodhi's corner
Re: Unbricking OMNINAS kd20 (oxnas820)
July 03, 2014 01:58PM
My immediate assumption is the timings for the NAND. Also, I have to admit I have never tried writing to NAND from inside any of the uboot images.
Re: Unbricking OMNINAS kd20 (oxnas820)
July 03, 2014 03:57PM
WarheadsSE Wrote:
-------------------------------------------------------
> My immediate assumption is the timings for the
> NAND.

Concur. And I thought this would be doable:

- Build both SPL and U-boot to boot SATA.
- Build both SPL and U-boot to boot NAND.
- Boot into Debian/Arch
- Flash NAND version of SPL and U-boot from inside Debian/Arch
- If unsuccessful, go back and adjust SPL source, try again.

-bodhi
===========================
Forum Wiki
bodhi's corner
Re: Unbricking OMNINAS kd20 (oxnas820)
July 03, 2014 04:14PM
WarheadsSE,

can you point me to the source from which the stage1 images in oxnas_sata_boot tar are built? Then I could try to play with timeings etc.

I've got the source of u-boot from the vendor (Shuttle). That one is guaranteed to contain working config, I could try to find it there. (Although so far I cannot identify stage1 sources in the vendor's tar.)

I tried to use u-boot-spl.bin from kref's u-boot-oxnas but it fails on me even earlier:
edit: this one is fixed: kref's spl requires boot flag and/or partition type FAT.

U-Boot SPL 2013.10-ga72eb8f-dirty (Jul 04 2014 - 01:20:20)
  Boot device: SATA
Attempting to set PLLA to 750 MHz ...
  plla_ctrl0 : 0000000a
  plla_ctrl1 : 000f0000
  plla_ctrl2 : 001d01a0
  plla_ctrl3 : 00000017

PLLA Set
Bus 0: OK 
  Device 0: 
spl: fat register err - -1
### ERROR ### Please RESET the board ###

stage1.wrapped800 from oxnas_sata_boot prints this (note that "800" image results in "750MHz"):

Stage-1 Bootloader Mon Nov 14 22:18:52 EST 2011
Attempting to set PLLA to 750MHz ...
  plla_ctrl0 : 0x0000000A
  plla_ctrl1 : 0x000F0000
  plla_ctrl2 : 0x001D01A0
  plla_ctrl3 : 0x00000017
PLLA Set

Setup memory, testing
Reading disk 0, Image 0
  Sector : 0x0000009A
  Hdr len: 0x0001FB34
  Hdr CRC: 0x2229BDCD
 OK
Initialising disks
SATA PHY not ready for device 1
Detecting SATA busses:
Bus 0: Found first device OK
  Device 0: Model: ST9250827AS  Firm: 3.CMG  Ser#: 5RG8WKJN
            Type: Hard Disk
            Capacity: 1610743807.9 MB = 127.9 GB (268435455 x 512)
  Device 1: not available
Failed to read valid environment from disk, using built-in default


U-Boot 1.1.2 (Dec 31 2011 - 15:24:45)
... etc ...

while the original vendor stage1 prints this:

Stage-1 Bootloader 2012-06.13-13:06:32
Attempting to set PLLA to 750MHz ...
  plla_ctrl0 : 0x0000000A
  plla_ctrl1 : 0x000F0000
  plla_ctrl2 : 0x001D01A0
  plla_ctrl3 : 0x00000017
PLLA Set

Setup memory, testing, Image 0
  Hdr len: 0x00028540
  Hdr CRC: 0xB64F4EDD
 OK
... logo and u-boot messages ...

Thanks!



Edited 1 time(s). Last edit at 07/03/2014 05:36PM by crosser.
Re: Unbricking OMNINAS kd20 (oxnas820)
July 03, 2014 09:19PM
I managed to unbrick the device by restoring the original (vendor's) copy of u-boot in NAND. This is how:

Prepare bootable SATA disk with kref's SPL + u-boot. Before compiling, change the frequecy from 800MHz to 750MHz in include/configs/ox820.h. Do not bother about the kernel and rootfs, just SPL, and u-boot.img on the FAT partition. Network does not work [*], but we can get away without it. NAND write works, and that is enough for now. Kref's bootloader works more reliably than the images from oxnas_sata_boot, although the latter have functional networking.

Put the image of the vendor's U-Boot NAND partition on the same FAT partition of the disk. I called it "omiboot.img".

Insert the disk in the box, turn it on. Press any key while it boots, don't wait for "Hit any key to stop autoboot" message or it will switch to netconsole. Which probably won't work anyway, because networking is broken.

From the u-boot command line, run

fatload ide 0:1 64000000 omiboot.img
nand erase 40000 200000
nand write 64000000 40000 200000

(2M starting at 0x40000 is vendor's U-Boot partition.)

After this procedure, turn off the power, take out the disk, and turn it on again. It should boot into the vendor's u-boot.

In my case, vendor's Stage-1 partition was intact, but it likely can be restored in the same way. Of course, you should have backed them up before writing anything into NAND, in the first place.

[*] kref's u-boot pretends to work with the network interface, there are no error messages, the packets are sent to the outer world successfully, but incoming packets do not reach the system.
dalvir
Re: Unbricking OMNINAS kd20 (oxnas820)
March 19, 2015 07:23PM
I'm a newbie to Linux programming. Can you help me to do it with simple steps please.
dalvir
Re: Unbricking OMNINAS kd20 (oxnas820)
March 19, 2015 07:25PM
I'm a newbie to Linux programming. Can you help me with simple steps?
Re: Unbricking OMNINAS kd20 (oxnas820)
October 21, 2018 09:32AM
@crosser

while playing around I bricked my kd20 a year ago. And sure, I made no backup that time :(
Reading your post I thought this could be a way to unbrick my KD20 using sata_boot now.
I followed your explanation above but run into problems.
I can't manage to compile krefs u-boot source to get the 750MHz files, no way :(

So my question,
could you please offer all your (hopefully still existing) files to unbrick the kd20 as you had discribe above, and offer a download link for these? Any help would be greatly appreciated.
Re: Unbricking OMNINAS kd20 (oxnas820)
October 21, 2018 03:20PM
Bastler,

> So my question,
> could you please offer all your (hopefully still
> existing) files to unbrick the kd20 as you had
> discribe above, and offer a download link for
> these? Any help would be greatly appreciated.

Here in the u-boot release thread:

https://forum.doozan.com/read.php?3,16017


Quote

3. SATA direct booting tarball.


BTW, to compile that u-boot, you need to go back to much older gcc version.

-bodhi
===========================
Forum Wiki
bodhi's corner



Edited 1 time(s). Last edit at 10/21/2018 03:22PM by bodhi.
Re: Unbricking OMNINAS kd20 (oxnas820)
October 22, 2018 10:54AM
Thank you bodhi for your quick reply.

I assume that these files inside ox20-sata-uboot will work for my kd20 too?
As far as I understand I will just have to use u-boot.img and u-boot-spl.bin out of the ox820-sata-uboot tar.

While reading through many of the threads I'm more and more confused about the -HowTo- now...
Starts with correct preparing the hdd to use the disk_create script :(
I assume that Fat32, Swap, Data would be correct.


Meanwhile I found a stock- KD20.zip which could be used if USB would be working.
It contains:

rdimg.gz
root.bz2
rootfs.ubi
stage1.wrapped-nand
u-boot.wrapped
u-boot.wrapped-nand
uImage

Would it be possible to use these files for sata-boot too?
Could I simply change the links inside disk_create to point towards these files?

Ok a lot to try now :)
Re: Unbricking OMNINAS kd20 (oxnas820)
October 22, 2018 03:38PM
Bastler,

> I assume that these files inside ox20-sata-uboot
> will work for my kd20 too?

It should work. These are same SoC and same stock u-boot, IIRC.

> As far as I understand I will just have to use
> u-boot.img and u-boot-spl.bin out of the
> ox820-sata-uboot tar.

> Meanwhile I found a stock- KD20.zip which could be
> used if USB would be working.
> It contains:
>
> rdimg.gz
> root.bz2
> rootfs.ubi
> stage1.wrapped-nand
> u-boot.wrapped
> u-boot.wrapped-nand
> uImage
>
> Would it be possible to use these files for
> sata-boot too?
> Could I simply change the links inside disk_create
> to point towards these files?
>

Sure. You can try both stock- KD20.zip, and the tarball.

The tarball's binaries were compiled using kref's fork so they most likely will work.

-bodhi
===========================
Forum Wiki
bodhi's corner
Re: Unbricking OMNINAS kd20 (oxnas820)
October 24, 2018 11:21AM
Getting some headache with my tries :(
I need a little hint to come ahead.
What I get always, now is:

Stage-1 Bootloader 2012-06.13-13:06:32
Attempting to set PLLA to 750MHz ...
  plla_ctrl0 : 0x0000000A
  plla_ctrl1 : 0x000F0000
  plla_ctrl2 : 0x001D01A0
  plla_ctrl3 : 0x00000017
PLLA Set

Setup memory, testing, Image 0
Failed to correct error
Failed to correct error
  Hdr len: 0xA1A2A3A4
  Hdr CRC: 0xB1B2B3B4
 read failed, Image 1
Failed to correct error
Failed to correct error
  Hdr len: 0xA1A2A3A4
  Hdr CRC: 0xB1B2B3B4
 read failed, Image 0
Failed to correct error
Failed to correct error
  Hdr len: 0xA1A2A3A4
  Hdr CRC: 0xB1B2B3B4
 read failed, Image 1

and so on and so on.
I think I missed a step while preparing the hdd, each time.
Not really sure, I believe the two hdd-bays are meant by the error messages.
I have to try the preparing once more and look carefully to description again.
A little Language barrier seems to stop me here :)
Re: Unbricking OMNINAS kd20 (oxnas820)
October 24, 2018 11:41PM
Bastler,

> A little Language barrier seems to stop me here :)

:) The best way to overcome that is to post your log of the terminal session where you run through the procdure of preparing the SATA drive. Post everything.

-bodhi
===========================
Forum Wiki
bodhi's corner
Re: Unbricking OMNINAS kd20 (oxnas820)
October 25, 2018 11:05AM
Hope I hit the point now:
I created a folder which contains stage1-, u-boot- and uImages- folder and the disk_create script and the three links.
Folders got the files inside.
@stage1.wrapped => stage1/stage1.wrapped-nand
@u-boot.wrapped => u-boot/u-boot.wrapped
@uImage => uImages/uImage
Used an empty hdd (sdd), created the two partitions and formated the second.
Festplatte /dev/sdd: 596,2 GiB, 640135028736 Bytes, 1250263728 Sektoren
Einheiten: Sektoren von 1 * 512 = 512 Bytes
Sektorgröße (logisch/physikalisch): 512 Bytes / 512 Bytes
E/A-Größe (minimal/optimal): 512 Bytes / 512 Bytes
Festplattenbezeichnungstyp: dos
Festplattenbezeichner: 0x00008000

Gerät      Boot Anfang       Ende   Sektoren  Größe Kn Typ
/dev/sdd1         2048      22527      20480    10M 83 Linux
/dev/sdd2        22528 1250263727 1250241200 596,2G 83 Linux
disk_create script modified to sdd:
# uncomment line below and set to the correct disk
disk=/dev/sdd1
run disk_create script now:
./disk_create

0+1 Datensätze ein
0+1 Datensätze aus
444 bytes copied, 0,332976 s, 1,3 kB/s
Writing stage 1
109+1 Datensätze ein
109+1 Datensätze aus
56000 bytes (56 kB, 55 KiB) copied, 0,101461 s, 552 kB/s
Writing uboot
2582+1 Datensätze ein
2582+1 Datensätze aus
1322208 bytes (1,3 MB, 1,3 MiB) copied, 0,272353 s, 4,9 MB/s
Writing kernel to 5989+1 Datensätze ein
5989+1 Datensätze aus
3066408 bytes (3,1 MB, 2,9 MiB) copied, 0,422584 s, 7,3 MB/s
No error messages.

Placed the hdd into the right KD20 sata-slot,
started cutecom and then the kd20
and got the message shown in last post.
BTW sdd2 is empty, I placed nothing into.
Hope these are enough infos, still something missing?
Re: Unbricking OMNINAS kd20 (oxnas820)
October 25, 2018 03:31PM
Bastler,


> BTW sdd2 is empty, I placed nothing into.
> Hope these are enough infos, still something
> missing?

I think that 2nd HDD should be disconnected to make sure the bootROM reads the 1st one only.

-bodhi
===========================
Forum Wiki
bodhi's corner
Re: Unbricking OMNINAS kd20 (oxnas820)
October 26, 2018 07:44AM
Quote
I think that 2nd HDD should be disconnected to make sure the bootROM reads the 1st one only.

There is one sata_hdd only (sdd) which I placed into the right slot of the kd20.
sdd1 is the unformated partition of size 10M.
sdd2 is the second partition which is formated to ext3 but with no contents.

As far as I can see disk_create script is writing something to sdd.
But are these values possible not correct for KD20?
perl <<EOF | dd of="$disk" bs=512
    print "\x00" x 0x1a4;
    print "\x00\x5f\x01\x00";
    print "\x00\xdf\x00\x00";
    print "\x00\x80\x00\x00";
    print "\x00" x (0x1b0 -0x1a4 -12 );
    print "\x22\x80\x00\x00";
    print "\x22\x00\x00\x00";
    print "\x00\x80\x00\x00";
EOF

if [ -f $stage1File ];then
	echo "Writing stage 1"
	dd if=$stage1File    of="$disk" bs=512 seek=34
fi

if [ -f $ubootFile ];then
	echo "Writing uboot"
	dd if=$ubootFile     of="$disk" bs=512 seek=154
fi

if [ -f $kernelFile ];then
	echo "Writing kernel to "
	dd if=$kernelFile of="$disk"1 bs=512 
fi

If this is correct, do I well while running the disk_create script just one time?
Or must this writing be done one by one?
Re: Unbricking OMNINAS kd20 (oxnas820)
October 26, 2018 10:44AM
Update:

I found this thread and followed instructions.
I attached existing uImage and used the two other files from :
Quote
https://www.dropbox.com/s/82t5pfnybvacr3b/KD20_sata_boot.tar.gz?dl=0
Quote
https://forum.doozan.com/read.php?2,17649,19426

This output comes while disk_create script is running:
0+1 Datensätze ein
0+1 Datensätze aus
444 bytes copied, 0,33572 s, 1,3 kB/s
Writing stage 1
16+1 Datensätze ein
16+1 Datensätze aus
8224 bytes (8,2 kB, 8,0 KiB) copied, 0,00161072 s, 5,1 MB/s
Writing uboot
300+1 Datensätze ein
300+1 Datensätze aus
153984 bytes (154 kB, 150 KiB) copied, 0,0209251 s, 7,4 MB/s
Writing kernel to 
5989+1 Datensätze ein
5989+1 Datensätze aus
3066408 bytes (3,1 MB, 2,9 MiB) copied, 0,672913 s, 4,6 MB/s

Put the hdd into the kd20 and start and pressed a key to stop autoboot:
Stage-1 Bootloader 2015-01.21-21:48:56
Attempting to set PLLA to 800MHz ...
  plla_ctrl0 : 0x0000030A
  plla_ctrl1 : 0x00400000
  plla_ctrl2 : 0x007F0068
  plla_ctrl3 : 0x00000193
PLLA Set

Setup memory, testing
Reading disk 00
  Sector : 0x0000009A
  Hdr len: 0x00025978
  Hdr CRC: 0x1CCE0DF0
 OK
Detecting SATA busses:
Bus 0: No devices found
Failed to read valid environment from disk, using built-in default

     _           _   _   _       
    | |         | | | | | |      
 ___| |__  _   _| |_| |_| | ___  
/ __| '_ \| | | | __| __| |/ _ \ 
\__ \ | | | |_| | |_| |_| |  __/ 
|___/_| |_|\__,_|\__|\__|_|\___| 
          _   _     ____              _
         | | | |   | __ )  ___   ___ | |_ 
         | | | |___|  _ \ / _ \ / _ \| __| 
         | |_| |___| |_) | (_) | (_) | |_ 
          \___/    |____/ \___/ \___/ \__| 

U-Boot 1.1.2 (Jan 24 2015 - 13:54:11)

U-Boot code: 60D00000 -> 60D25978  BSS: -> 60D3A680
IRQ Stack: 60cddf7c
FIQ Stack: 60cdcf7c
RAM Configuration:
	Bank #0: 60000000 256 MB
SRAM Configuration:
	64KB at 0x50000000
NAND:128 MiB
*** Warning - bad CRC, using default environment

In:    serial
Out:   serial
Err:   serial
Setting Linux mem= boot arg value
Hit any key to stop autoboot:  2 <0x08><0x08><0x08> 0 

                              Boot Menu
==============================================================================
0: Enter Command Line Interface             1: Reboot
2: Start the Kernel Code                    T: GPIO Test Function

=> Select: 
OXNAS>

This output is if no key is pressed:
Stage-1 Bootloader 2015-01.21-21:48:56
Attempting to set PLLA to 800MHz ...
  plla_ctrl0 : 0x0000030A
  plla_ctrl1 : 0x00400000
  plla_ctrl2 : 0x007F0068
  plla_ctrl3 : 0x00000193
PLLA Set

Setup memory, testing
Reading disk 00
  Sector : 0x0000009A
  Hdr len: 0x00025978
  Hdr CRC: 0x1CCE0DF0
 OK
Detecting SATA busses:
Bus 0: No devices found
Failed to read valid environment from disk, using built-in default

     _           _   _   _       
    | |         | | | | | |      
 ___| |__  _   _| |_| |_| | ___  
/ __| '_ \| | | | __| __| |/ _ \ 
\__ \ | | | |_| | |_| |_| |  __/ 
|___/_| |_|\__,_|\__|\__|_|\___| 
          _   _     ____              _
         | | | |   | __ )  ___   ___ | |_ 
         | | | |___|  _ \ / _ \ / _ \| __| 
         | |_| |___| |_) | (_) | (_) | |_ 
          \___/    |____/ \___/ \___/ \__| 

U-Boot 1.1.2 (Jan 24 2015 - 13:54:11)

U-Boot code: 60D00000 -> 60D25978  BSS: -> 60D3A680
IRQ Stack: 60cddf7c
FIQ Stack: 60cdcf7c
RAM Configuration:
	Bank #0: 60000000 256 MB
SRAM Configuration:
	64KB at 0x50000000
NAND:128 MiB
*** Warning - bad CRC, using default environment

In:    serial
Out:   serial
Err:   serial
Setting Linux mem= boot arg value
Hit any key to stop autoboot:  2 <0x08><0x08><0x08> 1 <0x08><0x08><0x08> 0 

IDE device 0: not available
enable_interrupts

Reset IDE: Detecting SATA busses:
Bus 0: No devices found
disk is not present!
enable_interrupts

Reset IDE: Detecting SATA busses:
Bus 0: No devices found
disk is not present!
enable_interrupts

Reset IDE: Detecting SATA busses:
Bus 0: No devices found
disk is not present!
enable_interrupts

Reset IDE: Detecting SATA busses:
Bus 0: No devices found
disk is not present!
enable_interrupts

Reset IDE: Detecting SATA busses:
Bus 0: No devices found
disk is not present!
enable_interrupts

Reset IDE: Detecting SATA busses:
Bus 0: No devices found
disk is not present!
enable_interrupts

Reset IDE: Detecting SATA busses:
Bus 0: No devices found
disk is not present!
enable_interrupts

Reset IDE: Detecting SATA busses:
Bus 0: No devices found
disk is not present!
enable_interrupts

Reset IDE: Detecting SATA busses:
Bus 0: No devices found
disk is not present!
Wait GMAC to reset
Wait for PHY reset
PHY is IC+ IP1001LF
Wait for link to come up............

When I remove the hdd and start kd20 I'll get:
Stage-1 Bootloader 2012-06.13-13:06:32
Attempting to set PLLA to 750MHz ...
  plla_ctrl0 : 0x0000000A
  plla_ctrl1 : 0x000F0000
  plla_ctrl2 : 0x001D01A0
  plla_ctrl3 : 0x00000017
PLLA Set

Setup memory, testing, Image 0
Failed to correct error
Failed to correct error
  Hdr len: 0xA1A2A3A4
  Hdr CRC: 0xB1B2B3B4
 read failed, Image 1

So I need to make changes permanent. Have to research how.
Re: Unbricking OMNINAS kd20 (oxnas820)
October 26, 2018 03:43PM
Bastler,

Congrats!

It means the Kd20 is actually different from the Pogo V3 in some way. Even it is the same SoC, OX820.


Stage-1 Bootloader 2015-01.21-21:48:56
Attempting to set PLLA to 800MHz ...
  plla_ctrl0 : 0x0000030A
  plla_ctrl1 : 0x00400000
  plla_ctrl2 : 0x007F0068
  plla_ctrl3 : 0x00000193
PLLA Set

Setup memory, testing
Reading disk 00
  Sector : 0x0000009A
  Hdr len: 0x00025978
  Hdr CRC: 0x1CCE0DF0
 OK
Detecting SATA busses:
Bus 0: No devices found
Failed to read valid environment from disk, using built-in default

     _           _   _   _       
    | |         | | | | | |      
 ___| |__  _   _| |_| |_| | ___  
/ __| '_ \| | | | __| __| |/ _ \ 
\__ \ | | | |_| | |_| |_| |  __/ 
|___/_| |_|\__,_|\__|\__|_|\___| 
          _   _     ____              _
         | | | |   | __ )  ___   ___ | |_ 
         | | | |___|  _ \ / _ \ / _ \| __| 
         | |_| |___| |_) | (_) | (_) | |_ 
          \___/    |____/ \___/ \___/ \__| 

U-Boot 1.1.2 (Jan 24 2015 - 13:54:11)

U-Boot code: 60D00000 -> 60D25978  BSS: -> 60D3A680
IRQ Stack: 60cddf7c
FIQ Stack: 60cdcf7c
RAM Configuration:
	Bank #0: 60000000 256 MB
SRAM Configuration:
	64KB at 0x50000000
NAND:128 MiB
*** Warning - bad CRC, using default environment

In:    serial
Out:   serial
Err:   serial
Setting Linux mem= boot arg value
Hit any key to stop autoboot:  2 <0x08><0x08><0x08> 0

Once you got here, it is unbricked!

-bodhi
===========================
Forum Wiki
bodhi's corner
Re: Unbricking OMNINAS kd20 (oxnas820)
October 27, 2018 02:55AM
thank you bodhi!
But without all the infos here inside forum and your will to help I would not stay at this point now.
And it's not the end of the story. I have to learn how to make the stock files permanent so the kd20 will run as before.
I will try to follow Peacemaker post:
Quote
https://forum.doozan.com/read.php?2,17649,19426

Okay, then
1. boot form sata to Uboot
2. load your uboot-backup via tftp

tftp 64000000 uboot.backup # <- your backup file former mtd2

3. write it back to nand:

nand erase 40000 200000
nand write 64000000 40000 200000

Same for stage1:

tftp 64000000 stage1.backup
nand erase 0 40000
nand write 64000000 0 40000

Let's see if this works in my case too.
Re: Unbricking OMNINAS kd20 (oxnas820)
October 30, 2018 04:53AM
No it's not working, I run into next problems now.
Costs me a lot of hours to made it possible to connect my notebook with the kd20 using tftpd-hpa.
The moment I could ping both, I thought I could try to tftp uboot.backup.
OXNAS> tftp 64000000 uboot.backup
Wait GMAC to reset
Wait for PHY reset
PHY is IC+ IP1001LF
Wait for link to come up...........Link up
Wait for auto-negotiation to complete
Link is 1000M
TFTP from server 192.168.0.1; our IP address is 192.168.0.128
Filename 'uboot.backup'.
Load address: 0x64000000
Loading: *<0x08>
ARP Resend request
T invalid RARP header
#################################################################
	 #################################################################
	 #################################################################
	 #################################################################
	 #################################################################
	 #################################################################
	 ####################
done
Bytes transferred = 2097152 (200000 hex)
It seemed to work but point of question is the T invalid RARP header here.
Ok, but there are bytes received as expected so let's try next command (I thought).
Wrong idea, here the result:
NAND erase: device 0 offset 0x40000, size 0x200000
data abort
pc : [<60d138f0>]    lr : [<60d10880>]
sp : 60cdb924  ip : 60d10450  fp : 60d2230a
r10: 00200000  r9 : 00000000  r8 : 60cddfdc
r7 : 00000008  r6 : 60cdb9f8  r5 : 00000000  r4 : 60d3883c
r3 : 00000000  r2 : 00020000  r1 : 41000000  r0 : 00040000
Flags: nzcv  IRQs on  FIQs on  Mode SVC_32
Resetting CPU ...

HW reset~~

I tried this with my notebook and a RaspberryPi, both the same. Invalid header, and while nand write the return to earth..
I can't figure it out for now so I would like to ask for help here again.

Here my next questions:
Is this a result of the wrong header? If, what to do, where to look for?
Or what do I overlook, or what else did I possible wrong?
Re: Unbricking OMNINAS kd20 (oxnas820)
October 30, 2018 01:23PM
Bastler,

Quote

tftp 64000000 uboot.backup # <- your backup file former mtd2

3. write it back to nand:

Quote

Check at this point, your envs should indicate whether you have mtd partitions and can access NAND. For examle, a running box would have:

mtdids=nand0=orion_nand
mtdparts=mtdparts=orion_nand:1M(u-boot),4M(uImage),32M(rootfs),-(data)
ncip=192.168.0.220
partition=nand0,2


nand erase 40000 200000
nand write 64000000 40000 200000

-bodhi
===========================
Forum Wiki
bodhi's corner
Re: Unbricking OMNINAS kd20 (oxnas820)
October 30, 2018 02:38PM
Check at this point, your envs should indicate whether you have mtd partitions and can access NAND.

Sorry for asking, but how do I have to check this?
Re: Unbricking OMNINAS kd20 (oxnas820)
October 30, 2018 05:51PM
Bastler Wrote:
-------------------------------------------------------
>
> Check at this point, your envs should indicate
> whether you have mtd partitions and can access
> NAND. 
>
>
> Sorry for asking, but how do I have to check this?


At the prompt,

printenv

And also if it is supported,

mtdparts

-bodhi
===========================
Forum Wiki
bodhi's corner
Re: Unbricking OMNINAS kd20 (oxnas820)
October 31, 2018 10:13AM
Didn't thought that printenv would be the right one for this.
Ok, there is no such information as described.
mtdparts is not supported.

After doing the tftp 64000000 uboot.backup, printenv will throw out just a little more information as seen in second block here:
//--------------- first start --------------------

OXNAS> printenv
bootcmd=run beep select0 load loadr sysled boot || run sysretry load loadr sysled boot|| run sysretry load loadr sysled boot|| run sysretry load loadr sysled boot|| run sysretry load loadr sysled boot|| run sysretry load loadr sysled boot|| run sysretry load loadr sysled boot|| run sysretry load loadr sysled boot|| run sysretry load loadr sysled boot || run sysretry load loadr sysled boot || run errled select2 load3 loadr3 ramboot boot 
bootdelay=2
baudrate=115200
ethaddr=00:25:b1:ff:ff:00
ipaddr=192.168.0.128
serverip=192.168.0.1
autoload=n
netmask=255.255.0.0
bootfile="uImage"
select0=ide dev 0
select1=ide dev 1
select2=dhcp 
loadr=ide read 0x62000000 2122 1644
load=ide read 0x60500000 50a 1800
loadr3=tftp 0x62000000 rdimg.gz
load2=ide read 0x60500000 e3e8 1800
load3=tftp 0x60500000 uImage
sysretry=led a;ide res
sysled=led 1
errled=led r
beep=beep
ramboot=setenv bootargs root=/dev/ram0 console=ttyS0,115200 initrd=0x61000000 mem=256M
boot=bootm 60500000 62000000
stdin=serial
stdout=serial
stderr=serial
bootargs=root=/dev/sda2 initrd=0x61000000 console=ttyS0,115200 elevator=cfq mac_adr=0x00,0x25,0xb1,0xff,0xff,0x00 mem=256M poweroutage=yes

Environment size: 1158/8188 bytes
//------------ after tftp 64000000 uboot.backup ----------------

OXNAS> printenv
bootcmd=run beep select0 load loadr sysled boot || run sysretry load loadr sysled boot|| run sysretry load loadr sysled boot|| run sysretry load loadr sysled boot|| run sysretry load loadr sysled boot|| run sysretry load loadr sysled boot|| run sysretry load loadr sysled boot|| run sysretry load loadr sysled boot|| run sysretry load loadr sysled boot || run sysretry load loadr sysled boot || run errled select2 load3 loadr3 ramboot boot 
bootdelay=2
baudrate=115200
ethaddr=00:25:b1:ff:ff:00
autoload=n
bootfile="uImage"
select0=ide dev 0
select1=ide dev 1
select2=dhcp 
loadr=ide read 0x62000000 2122 1644
load=ide read 0x60500000 50a 1800
loadr3=tftp 0x62000000 rdimg.gz
load2=ide read 0x60500000 e3e8 1800
load3=tftp 0x60500000 uImage
sysretry=led a;ide res
sysled=led 1
errled=led r
beep=beep
ramboot=setenv bootargs root=/dev/ram0 console=ttyS0,115200 initrd=0x61000000 mem=256M
boot=bootm 60500000 62000000
stdin=serial
stdout=serial
stderr=serial
bootargs=root=/dev/sda2 initrd=0x61000000 console=ttyS0,115200 elevator=cfq mac_adr=0x00,0x25,0xb1,0xff,0xff,0x00 mem=256M poweroutage=yes
filesize=200000
fileaddr=64000000
netmask=255.255.0.0
ipaddr=192.168.0.128
serverip=192.168.0.1

Environment size: 1192/8188 bytes
Re: Unbricking OMNINAS kd20 (oxnas820)
October 31, 2018 04:07PM
Bastler,


filesize=200000
fileaddr=64000000
netmask=255.255.0.0
ipaddr=192.168.0.128
serverip=192.168.0.1


That's encouraging! those are variables set by tftp. Now at this point you can already set envs to boot a rootfs on USB/HDD/NFS. And then flash u-boot.backup in Debian.

But if you want to deal with flashing u-boot right now, you should find these correct definition for this KD20 (I need to look back in this thread to see if it is the same as the Pogo V3, I think it is).

Kirkwood Dockstar
mtdids=nand0=orion_nand 
mtdparts=mtdparts=orion_nand:1M(u-boot),4M(uImage),32M(rootfs),-(data) 
partition=nand0,2

OX820 Pogo V3
mtdids=nand0=41000000.nand
mtdparts=mtdparts=41000000.nand:14m(boot),-(data)

So try

setenv mtdids 'nand0=41000000.nand'
setenv mtdparts 'mtdparts=41000000.nand:14m(boot),-(data)'



I forgot, get the listing of the commands at the prompt (with that we'll know if mtdparts command and other important commands are available or not).

help

-bodhi
===========================
Forum Wiki
bodhi's corner



Edited 1 time(s). Last edit at 10/31/2018 04:12PM by bodhi.
Re: Unbricking OMNINAS kd20 (oxnas820)
November 01, 2018 10:54AM
bodhi,

seems I have none of these commands :(

Version: U-Boot 1.1.2 (Jan 24 2015 - 13:54:11)

OXNAS> help
?       - alias for 'help'
base    - print or set address offset
bdinfo  - print Board Info structure
beep	- make beep sound
bootm   - boot application image from memory
bootp	- boot image via network using BootP/TFTP protocol
clrenv	- clear environment
cmp     - memory compare
cp      - memory copy
crc32   - checksum calculation
dhcp	- invoke DHCP client to obtain IP/boot params
diskboot- boot from IDE device
echo    - echo args to console
exit    - exit script
ext2load- load binary file from a Ext2 filesystem
ext2ls  - list files in a directory (default /)
go      - start application at address 'addr'
help    - print online help
ide     - IDE sub-system
iminfo  - print header information for application image
led	- LED Switch
ledfail - Extinguish (0) or light (1) failure LED
loop    - infinite loop on address range
md      - memory display
mm      - memory modify (auto-incrementing)
mtest   - simple RAM test
mw      - memory write (fill)
nand	- NAND sub-system
nboot   - boot from NAND device
nm      - memory modify (constant address)
ping	- send ICMP ECHO_REQUEST to network host
poweroff- Power-OFF
printenv- print environment variables
part	- clear MBR
rarpboot- boot image via network using RARP/TFTP protocol
reset   - Perform RESET of the CPU
run     - run commands in an environment variable
saveenv - save environment variables to persistent storage
setenv  - set environment variables
test    - minimal test like /bin/sh
tftpboot- boot image via network using TFTP protocol
usb     - USB sub-system
usbboot - boot from USB device
version - print monitor version
OXNAS> 
Re: Unbricking OMNINAS kd20 (oxnas820)
November 01, 2018 03:32PM
Bastler,

Do the 2 setenvs before nand erase.

3. write it back to nand:

setenv mtdids 'nand0=41000000.nand'
setenv mtdparts 'mtdparts=41000000.nand:14m(boot),-(data)'


nand erase 40000 200000 
nand write 64000000 40000 200000

-bodhi
===========================
Forum Wiki
bodhi's corner
Re: Unbricking OMNINAS kd20 (oxnas820)
November 02, 2018 03:24PM
bodhi,
no success.
I set the two envs, checked them via printenv and tried to erase.
Result -> HW-reset as before.
Little bit frustrating for now :)

Meanwhile I played around and I tried to load the uImage to 60500000 and get this:

tftp 0x60500000 uImage
Wait GMAC to reset
Wait for PHY reset
PHY is IC+ IP1001LF
Wait for link to come up...........Link up
Wait for auto-negotiation to complete
Link is 1000M
TFTP from server 192.168.0.1; our IP address is 192.168.0.128
Filename 'uImage'.
Load address: 0x60500000
Loading: *<0x08>
ARP Resend request
T invalid RARP header
#################################################################
	 #################################################################
	 #################################################################
	 #################################################################
	 #################################################################
	 #################################################################
	 #################################################################
	 #################################################################
	 #################################################################
	 ##############
done
Bytes transferred = 3066408 (2eca28 hex)
OXNAS> bootm
## Booting image at 60500000 ...
   Image Name:   Linux-2.6.31.14_7821
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    3066344 Bytes =  2.9 MB
   Load Address: 60008000
   Entry Point:  60008000
   Verifying Checksum ... OK
OK

Starting kernel ...

Uncompressing Linux........................................................................................................................................................................................ done, booting the kernel.
[    0.000000] Linux version 2.6.31.14_7821 (root@localhost.localdomain) (gcc version 4.2.4) #1 SMP Wed Jun 18 11:54:35 CST 2014
[    0.000000] CPU: ARMv6-compatible processor [410fb025] revision 5 (ARMv7), cr=00c5387f
[    0.000000] CPU: VIPT nonaliasing data cache, VIPT nonaliasing instruction cache
[    0.000000] Machine: Oxsemi NAS
[    0.000000] 1 memory region
[    0.000000] Ignoring unrecognised tag 0x00000000
[    0.000000] Memory policy: ECC disabled, Data cache writealloc
[    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 65024
[    0.000000] Kernel command line: root=/dev/sda2 initrd=0x61000000 console=ttyS0,115200 elevator=cfq mac_adr=0x00,0x25,0xb1,0xff,0xff,0x00 mem=256M poweroutage=yes
[    0.000000] PID hash table entries: 1024 (order: 10, 4096 bytes)
[    0.000000] Dentry cache hash table entries: 32768 (order: 5, 131072 bytes)
[    0.000000] Inode-cache hash table entries: 16384 (order: 4, 65536 bytes)
[    0.000000] Memory: 256MB = 256MB total
[    0.000000] Memory: 253696KB available (5308K code, 333K data, 148K init, 0K highmem)
[    0.000000] Hierarchical RCU implementation.
[    0.000000] NR_IRQS:128
[    0.000000] OX820_RPS_init_irq: interrupts 64 to 128
[    0.000000] ox820_clocksource_init() Timer 2 running at 390625 Hz
[    0.010000] Console: colour dummy device 80x30
[    0.010000] console [ttyS0] enabled
[    0.020000] Calibrating delay loop... 319.48 BogoMIPS (lpj=1597440)
[    0.250000] Security Framework initialized
[    0.250000] Mount-cache hash table entries: 512
[    0.260000] CPU: Testing write buffer coherency: ok
[    0.260000] Calibrating local timer... 400.00MHz.
[    0.330000] CPU1: Booted secondary processor
[    0.430000] Calibrating delay loop... 319.48 BogoMIPS (lpj=1597440)
[    0.660000] Brought up 2 CPUs
[    0.670000] SMP: Total of 2 processors activated (638.97 BogoMIPS).
[    0.680000] NET: Registered protocol family 16
[    0.680000] Number of DMA channels = 4, version = 4
[    0.690000] Allocating 303 SRAM generic DMA descriptors
[    1.190000] PCIeA version/deviceID 082510b5
[    1.200000] PCIeB version/deviceID 082510b5
[    2.210000] ox820_pci_preinit() PCIEB link up timeout (00001814)
[    2.210000] ox820_pciea_setup_resources() resource cf81b200
[    2.220000] ox820_pci_scan_bus() nr 0 sys cf81b1e0, sys->bus (null)
[    2.230000] pci 0000:00:00.0: PME# supported from D0 D1 D2 D3hot
[    2.240000] pci 0000:00:00.0: PME# disabled
[    2.240000] PCI: bus0: Fast back to back transfers disabled
[    2.250000] ox820_pci_scan_bus: number 0 primary 0 secondary 0 subordinate 0
[    2.250000] ox820_map_irq(): dev->bus->number = 0, (primary 0) slot:0, pin:1 - returning IRQ 51
[    2.260000] Aton-Buttons Device Load
[    2.280000] bio: create slab <bio-0> at 0
[    2.280000] SCSI subsystem initialized
[    2.450000] cfg80211: Calling CRDA to update world regulatory domain
[    2.450000] NET: Registered protocol family 2
[    2.460000] Switched to NOHz mode on CPU #0
[    2.460000] IP route cache hash table entries: 2048 (order: 1, 8192 bytes)
[    2.460000] Switched to NOHz mode on CPU #1
[    2.470000] TCP established hash table entries: 8192 (order: 4, 65536 bytes)
[    2.480000] TCP bind hash table entries: 8192 (order: 4, 65536 bytes)
[    2.480000] TCP: Hash tables configured (established 8192 bind 8192)
[    2.490000] TCP reno registered
[    2.490000] NET: Registered protocol family 1
[    2.500000] Aton Buttons Driver Load
[    2.500000] Create fragment cache
[    2.510000] Installing knfsd (copyright (C) 1996 okir@monad.swb.de).
[    2.520000] NTFS driver 2.1.29 [Flags: R/O].
[    2.520000] fuse init (API version 7.12)
[    2.530000] SGI XFS with security attributes, large block/inode numbers, no debug enabled
[    2.540000] msgmni has been set to 495
[    2.540000] alg: No test for stdrng (krng)
[    2.550000] io scheduler noop registered
[    2.550000] io scheduler anticipatory registered
[    2.560000] io scheduler deadline registered
[    2.560000] io scheduler cfq registered (default)
[    2.590000] Serial: 8250/16550 driver, 2 ports, IRQ sharing disabled
[    2.600000] serial8250: ttyS0 at MMIO 0x44200000 (irq = 55) is a 16550A
[    2.610000] brd: module loaded
[    2.620000] loop: module loaded
[    2.620000] ox820sata: OX820 sata core.
[    2.620000] scsi0 : oxnassata
[    2.630000] scsi1 : oxnassata
[    2.630000] ata1: SATA max UDMA/133 irq 50
[    2.640000] ata2: SATA max UDMA/133 irq 50
[    3.550000] ata1: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
[    3.950000] ata1.00: ATA-8: TOSHIBA MK6465GSX, GJ003A, max UDMA/100
[    3.960000] ata1.00: 1250263728 sectors, multi 16: LBA48 NCQ (depth 0/32)
[    3.970000] ata1.00: configured for UDMA/100
[    3.970000] ata1: exception Emask 0x10 SAct 0x0 SErr 0x0 action 0x9 t4
[    3.980000] ata1.00: configured for UDMA/100
[    3.980000] ata1: EH complete
[    4.340000] ata2: SATA link down (SStatus 0 SControl 300)
[    4.340000] scsi 0:0:0:0: Direct-Access     ATA      TOSHIBA MK6465GS GJ00 PQ: 0 ANSI: 5
[    4.350000] sd 0:0:0:0: [sda] 1250263728 512-byte logical blocks: (640 GB/596 GiB)
[    4.360000] sd 0:0:0:0: [sda] Write Protect is off
[    4.360000] sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[    4.370000] sd 0:0:0:0: Attached scsi generic sg0 type 0
[    4.370000] NAND device: Manufacturer ID: 0xad, Chip ID: 0xf1 (Hynix NAND 128MiB 3,3V 8-bit)
[    4.370000] Scanning device for bad blocks
[    4.440000]  sda:
[    4.440000] Creating 5 MTD partitions on "NAND 128MiB 3,3V 8-bit":
[    4.440000] 0x000000000000-0x000000040000 : "Stage-1"
[    4.450000] 0x000000040000-0x000000240000 : "U-Boot"
[    4.460000] 0x000000240000-0x000000840000 : "INITRD"
[    4.460000] 0x000000840000-0x000001000000 : "Kernel"
[    4.470000] 0x000001000000-0x000008000000 : "Root"
[    4.470000] mice: PS/2 mouse device common for all mice
[    4.480000] rtc-pcf8563 0-0051: chip found, driver version 0.4.2.5
[    4.490000] rtc-pcf8563 0-0051: rtc core: registered rtc-pcf8563 as rtc0
[    4.490000] rtc-pcf8563 0-0051: get date/time...
[    4.510000] rtc-pcf8563 0-0051: low voltage detected, date/time is not reliable.
[    4.520000] reset pcf8563...
[    4.550000] rtc-pcf8563 0-0051: date/time invailid, reset to 2012/01/01...
[    4.560000] OXNAS bit-bash I2C driver initialisation OK
[    4.570000] md: linear personality registered for level -1
[    4.570000] md: raid0 personality registered for level 0
[    4.580000] md: raid1 personality registered for level 1
[    4.580000]  sda1 sda2
[    4.580000] device-mapper: ioctl: 4.15.0-ioctl (2009-04-01) initialised: dm-devel@redhat.com
[    4.590000] TCP cubic registered
[    4.600000] NET: Registered protocol family 10
[    4.600000] NET: Registered protocol family 17
[    4.610000] RPC: Registered udp transport module.
[    4.610000] sd 0:0:0:0: [sda] Attached SCSI disk
[    4.620000] RPC: Registered tcp transport module.
[    4.640000] rtc-pcf8563 0-0051: setting system clock to 2012-01-02 00:00:00 UTC (1325462400)
[    4.640000] md: Waiting for all devices to be available before autodetect
[    4.650000] md: If you don't use raid, use raid=noautodetect
[    4.660000] md: Autodetecting RAID arrays.
[    4.660000] md: Scanned 0 and added 0 devices.
[    4.670000] md: autorun ...
[    4.670000] md: ... autorun DONE.
[    4.760000] kjournald starting.  Commit interval 5 seconds
[    4.760000] EXT3 FS on sda2, internal journal
[    4.770000] EXT3-fs: recovery complete.
[    4.770000] EXT3-fs: mounted filesystem with writeback data mode.
[    4.780000] VFS: Mounted root (ext3 filesystem) on device 8:2.
[    4.780000] Freeing init memory: 148K
[    4.790000] Warning: unable to open an initial console.
[    4.790000] Kernel panic - not syncing: No init found.  Try passing init= option to kernel.
[    4.800000] [<c0033374>] (unwind_backtrace+0x0/0xe8) from [<c00511ec>] (panic+0x44/0x128)
[    4.810000] [<c00511ec>] (panic+0x44/0x128) from [<c002d6f8>] (init_post+0xc8/0x104)
[    4.820000] [<c002d6f8>] (init_post+0xc8/0x104) from [<c0008910>] (kernel_init+0x1c8/0x210)
[    4.830000] [<c0008910>] (kernel_init+0x1c8/0x210) from [<c002eaa8>] (kernel_thread_exit+0x0/0x8)
[    4.830000] CPU1: stopping
[    4.840000] [<c0033374>] (unwind_backtrace+0x0/0xe8) from [<c002d360>] (do_IPI+0xe0/0x144)
[    4.850000] [<c002d360>] (do_IPI+0xe0/0x144) from [<c002dbd8>] (__irq_svc+0x38/0xc0)
[    4.850000] Exception stack(0xcf84df98 to 0xcf84dfe0)
[    4.860000] df80:                                                       60000013 00000000 
[    4.870000] dfa0: 00000000 cf84c000 cf84c000 c05abe50 c0584d78 c05ac38c 00000000 410fb025 
[    4.870000] dfc0: 60024f48 00000000 c05ba170 cf84dfe0 c002f154 c002f158 60000013 ffffffff 
[    4.880000] [<c002dbd8>] (__irq_svc+0x38/0xc0) from [<c002f158>] (default_idle+0x24/0x2c)
[    4.890000] [<c002f158>] (default_idle+0x24/0x2c) from [<c002efb8>] (cpu_idle+0x60/0x94)
[    4.900000] [<c002efb8>] (cpu_idle+0x60/0x94) from [<60008084>] (0x60008084)

At this point (and before) I can't enter anything using the serial. I'll have to plug out the power cord.
The point seems to be : unable to open an initial console. Don't know how to.
But may be this log can give some information which could help for the above erase and write problem?



Edited 2 time(s). Last edit at 11/02/2018 03:42PM by Bastler.
Re: Unbricking OMNINAS kd20 (oxnas820)
November 02, 2018 03:51PM
Bastler,

Quote

But may be this log can give some information which could help for the above erase and write problem?

[    0.000000] Linux version 2.6.31.14_7821 (root@localhost.localdomain) (gcc version 4.2.4) #1 SMP Wed Jun 18 11:54:35 CST 2014
[    0.000000] CPU: ARMv6-compatible processor [410fb025] revision 5 (ARMv7), cr=00c5387f
[    0.000000] CPU: VIPT nonaliasing data cache, VIPT nonaliasing instruction cache
[    0.000000] Machine: Oxsemi NAS
[    0.000000] 1 memory region
[    0.000000] Ignoring unrecognised tag 0x00000000
[    0.000000] Memory policy: ECC disabled, Data cache writealloc
[    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 65024
[    0.000000] Kernel command line: root=/dev/sda2 initrd=0x61000000 console=ttyS0,115200 elevator=cfq mac_adr=0x00,0x25,0xb1,0xff,0xff,0x00 mem=256M poweroutage=yes

Excellent! even though you can't fix u-boot in serial console, you can try to boot into Debian and fix it there. It is much better to deal with NAND partition in Debian.



1. So what is on the USB drive? is the rootfs on the 2nd partition? With the current bootargs that you have, rootfs mut be on sda2

2. You also need to load uInitrd for the kernel to boot properly

tftp 0x60500000 uImage
tftp 0x61000000 uInitrd

-bodhi
===========================
Forum Wiki
bodhi's corner



Edited 1 time(s). Last edit at 11/02/2018 03:51PM by bodhi.
Author:

Your Email:


Subject:


Spam prevention:
Please, enter the code that you see below in the input field. This is for blocking bots that try to post this form automatically. If the code is hard to read, then just try to guess it right. If you enter the wrong code, a new image is created and you get another chance to enter it right.
Message: