eniac111 / snake-os

Automatically exported from code.google.com/p/snake-os
2 stars 1 forks source link

Conrad Network Storage Device GNSD630 / A-Tec MS304S MS347S #257

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
I've been trying to get snake to work on one of these. 

Note: I only have a Conrad device but the firmware is the same.

Hardware:
SOC: CNS2132
RAM: 32MB
FLASH: ST M25P64 (8mb)
USB-SATA bridge: SPIF225A

Serial interface (J1): GND DATA - DATA GND
Serial console is disabled in the original firmware but can be enabled by 
modifying /etc/inittab in the root fs.

JTAG (J2)
VCC - - TMS TCK GND TDO SRST TDI
Works okish with openocd.

The original firmware can be downloaded here: http://www.enclosureservice.com/
Layout:
0x00000000 u-boot
0x00020000 u-boot config
0x00030000 not sure, looks like an ide driver. maybe unused
0x00040000 kernel
0x00220000 root fs squashfs 3.0 
0x007DFFF0 firmware info (20 bytes)

The firmware updater will reject images if the values at 0x007DFFF0 don't 
match. Similar sequences are at the end of the image and the end of the u-boot 
segment but they don't seem to be matter.

The updater will write everything starting from the kernel segment to the 
flash. Would be useful if there was a way to get it to overwrite u-boot as well.

I managed to get snake os to boot already, but the button driver has to be 
disabled and the sata disk isn't recognized. Which makes it fairly useless.

I guess the sata bridge needs some extra code. Without source or docs, that 
could take a while to figure out.

As a temporary workaround it might be possible to use the original 
bootloader/kernel with a customized snake root fs. I haven't tried that yet 
though.

Original issue reported on code.google.com by stefansc...@googlemail.com on 15 Dec 2011 at 3:23

GoogleCodeExporter commented 9 years ago
[deleted comment]
GoogleCodeExporter commented 9 years ago
Hy Stefan, thanks for your great job. 
Sorry that I cant help you very much, because i am a more a python... upper 
level programer. The USB cases are also at my work and i had vacancy this week.
One question to the hardware, is it possible to use the usb-host ports on this 
device also?

Original comment by mkhom...@googlemail.com on 18 Dec 2011 at 1:49

GoogleCodeExporter commented 9 years ago
There's actually python on these things, :) For the torrent client, which is 
bittornado.

From what I can tell the external socket uses the device port, one host port 
goes to the sata bridge and the second one isn't connected to anything. So 
sadly host usb probably isn't possible.

Original comment by stefansc...@googlemail.com on 19 Dec 2011 at 2:09

GoogleCodeExporter commented 9 years ago
[deleted comment]
GoogleCodeExporter commented 9 years ago
[deleted comment]
GoogleCodeExporter commented 9 years ago
isnt it possible to put a usb hub between sata controller and usb host port?

Original comment by mkhom...@googlemail.com on 19 Dec 2011 at 1:53

GoogleCodeExporter commented 9 years ago
is there anywhere a shematic of the chip

Original comment by mkhom...@googlemail.com on 19 Dec 2011 at 1:59

GoogleCodeExporter commented 9 years ago
Maybe if you have a REALLY steady hand you can solder an usb socket to the 
unused port, but I wouldn't try that..

Cavium provides documentation at cnuser.org, but the site requires registration.
Pinout for the spif225a is in the datasheet. here for example:
http://www.ic-on-line.cn/view_download.php?id=1668005&file=0335\spif225a_2118438
.pdf

I think I got sata to work. There was some code in the original kernel that 
fiddled with the gpio pins. I reproduced parts of it in our kernel and now the 
disk shows up. Not sure how it works.. but for now that's good enough for me.

Installation instructions. 

DO THIS AT YOUR OWN RISK, I DIDN'T TEST THIS A WHOLE LOT!

- download gnsd630-mod.bin and install it from the web interface (which seems 
to be IE only..). It's a modified version of the original firmware, adding 
serial console, telnet and an installation script for snake. Note, you can get 
remote root without password so it's not safe for regular usage.

- telnet into the device as root

- cd into /tmp/ and wget snakeos-V1.3.2-gnsd630.bin

- run "snakeinstall.sh <path to snakeos-gnsd630.bin>". Wait until you get "63+0 
records out".. afterwards it will probably lock up and kick you out. If you 
reset now you will either boot into snake ..or have trashed your flash.

The ip address will probably change. Without dhcp it should be 192.168.0.240.

Also, going back to the original firmware will be a bit tricky right now.

Original comment by stefansc...@googlemail.com on 30 Dec 2011 at 3:01

Attachments:

GoogleCodeExporter commented 9 years ago
Forgot to mention.. snakeinstall.sh does not verify the image at all make sure 
it's intact when you run the script.

Just in case here are the md5sums for both images:

1ce65630c27188681b42cada163ebfc5  gnsd630-mod.bin
06a3516417929da70b1dd05a88ebf156  snakeos-V1.3.2-gnsd630.bin

Original comment by stefansc...@googlemail.com on 30 Dec 2011 at 3:06

Attachments:

GoogleCodeExporter commented 9 years ago
Really cool, Thanks... Ill try it out!

Original comment by mkhom...@googlemail.com on 30 Dec 2011 at 6:22

GoogleCodeExporter commented 9 years ago
done the job!!!!!
a tip... i couldnt wget the file, downloaded it via browser and copied it to 
disk via usb

-installed from fat32 disk /dev/sda3 alias /mnt/data
-copied the image to tmp
-ran /bin/installsnake.sh ;-)

Original comment by mkhom...@googlemail.com on 30 Dec 2011 at 7:31

GoogleCodeExporter commented 9 years ago
ok, seems to be great until now :-)

One issue:
I wanted to format disk from webinterface, it oes went wrong because we have not
enough ram on board: 

>>mkfs.ext3 /dev/sda1
>>killed

so I had to create a 1GB Vfat partition and enabled swap.
than i could create the ext3 partition in sda2

Original comment by mkhom...@googlemail.com on 31 Dec 2011 at 12:00

GoogleCodeExporter commented 9 years ago
for creating the ext3 partition i used nohup, because dropbear always kicked me 
out

Original comment by mkhom...@googlemail.com on 31 Dec 2011 at 1:19

GoogleCodeExporter commented 9 years ago
Is it possible to get usb-storage functionality back??

Original comment by mkhom...@googlemail.com on 31 Dec 2011 at 3:44

GoogleCodeExporter commented 9 years ago
yeah .. copying it to the disk first works too. You don't even need to copy it 
to /tmp/, the script will do that on its own.

mkfs.ext3 works for me even without swap. I only tested it on a small one. 
Maybe it depends on the partition size.

I didn't try the usb storage mode. Will look into it.

Original comment by stefansc...@googlemail.com on 31 Dec 2011 at 4:01

GoogleCodeExporter commented 9 years ago
Ok.. this one should have usable usb storage support. 

Two issues compared to the original firmware.
You have to reset after (dis)connecting. 
When starting up in storage mode the drive briefly shuts down, which doesn't 
sound very nice and creates ugly syslog messages.

The image should be installable from the snake web interface.

md5sum: dbd36b170fe6a677a938a88b996dc4a2

Original comment by stefansc...@googlemail.com on 2 Jan 2012 at 11:16

Attachments:

GoogleCodeExporter commented 9 years ago
The orignal firmware image attached to post #8 has a busted bootloader config. 
This isn't an issue when installing from the web interface (it doesn't 
overwrite the bootloader) but that makes it no good for restoring the firmware.

Fixed image attached.

To restore the original firmware do (requires 
snakeos-gnsd630-V1.3.2-20120102-from-original.bin):
cd <dir with image>
cp /bin/busybox ./
./busybox dd if=gnsd630-mod.bin of=/dev/mtdblock5 bs=65536
and reset

Copying busybox isn't strictly needed but makes it slightly safer.

md5sum: b7fb124113810f8f09bf462ef588b800

Original comment by stefansc...@googlemail.com on 2 Jan 2012 at 11:49

Attachments:

GoogleCodeExporter commented 9 years ago
OK, I tested out the new Firmware.

The USB access runs really fine :-) Great work!

Could it be, that the firmware completely resets all settings after each reboot.

Also it seems, the mac address is reseted, so the device gets a new ip address 
after reboot.

Original comment by mkhom...@googlemail.com on 3 Jan 2012 at 1:26

GoogleCodeExporter commented 9 years ago
Nice.

You have to explcititly save the config with system -> config -> "Save config", 
otherwise it will revert to the previous state (or the default config). This 
will also make the mac address stick.

Original comment by stefansc...@googlemail.com on 3 Jan 2012 at 4:09

GoogleCodeExporter commented 9 years ago
Oh, thanks for the tip ;-)

Original comment by mkhom...@googlemail.com on 3 Jan 2012 at 5:18

GoogleCodeExporter commented 9 years ago
Made a bug report because of killed mkfs:
http://code.google.com/p/snake-os/issues/detail?id=266&start=200

Original comment by mkhom...@googlemail.com on 3 Jan 2012 at 5:57

GoogleCodeExporter commented 9 years ago
Hi Stefan, 

Sorry to dig up this old thread but any chance you still have the openocd 
config files hanging around? The IGRS has the same jtag header and I'm trying 
to get it going with a busblaster configured as a jtagkey. 
Can you post the configs and let us know what kind of jtag you were using?

Cheers,
Hank

Original comment by and...@sideramota.com on 29 Apr 2012 at 3:19

GoogleCodeExporter commented 9 years ago
Its been a while that I did this and my notes are a mess. I'd probably have to 
wire up the box again to sort things out completely. I use some wiggler clone.

This is my openocd config. The *_delay, *_width and reset_config options can 
probably be removed. I think tried to fix the default reset command with those.

debug_level 2
interface parport
parport_port 0   
parport_cable old_amt_wiggler
reset_config trst_and_srst trst_open_drain srst_open_drain srst_nogate
jtag_rclk 2000
adapter_nsrst_delay 200
jtag_ntrst_delay 100   
adapter_nsrst_assert_width 100
jtag_ntrst_assert_width 100   

jtag newtap cns2132 cpu -irlen 4 -expected-id 0x00526fa1
target create cns2132.cpu fa526 -endian little -chain-position cns2132.cpu
cns2132.cpu configure -work-area-phys 0x21FFF000 -work-area-size 4096

arm7_9 dcc_downloads enable

proc vcatch { what } {
        arm9 vector_catch $what
}

proc resetboard {} {
        jtag_reset 0 1
        jtag_init

        vcatch all
        jtag_reset 0 0
        after 2000 { vcatch none }
}

If you want to run something (I hope this won't violate that cnsusers agreement 
but this information can be gleaned from the u-boot sources so it's probably 
ok).

Connect to openocd via telnet 
resetboard -- reset and halt the device (the normal reset commands don't work)
mww 0x72000000 0x02000021 -- configure ram as ddr/16bit/32MB (I think 64MB 
would be 0x02000022) 
mww 0x72000008 0x1  -- init ram
load_image uboot.img 0x20000000  -- load a boot loader into ram
mww 0x76000000 0x1 -- remap ram from 0x20000000 to 0x0

Instead of just resuming now I usually had to single step until the pc hits 
0x70 or so. I guess it's a timing issue or something.

This whole sequence can probably be automated.

Original comment by stefansc...@googlemail.com on 30 Apr 2012 at 11:54

GoogleCodeExporter commented 9 years ago
I tried to apply gnsd630-mod.bin to Conrad ME-SN-35B ( 
http://www.conrad-uk.com/ce/en/product/413502/35-SATA-NETWORK-HDD-ENCLOSURE-BLAC
K )with CNS2132-250fp128-aefd-g and the webinterface allowed upgrade, which 
bricked the unit

Is there a recovery of any kind?

Original comment by scer...@gmail.com on 8 Sep 2012 at 9:18

GoogleCodeExporter commented 9 years ago
In addition Conrad ME-SN-35B has 
Flash: MX25l6445EM1-10G
USB-SATA bridge: SPIF301
Memory: Mosel 256Mb V58C2256164SC16

Original comment by scer...@gmail.com on 9 Sep 2012 at 7:26

GoogleCodeExporter commented 9 years ago
If the updater just wrote the whole image to the flash the bootloader could 
still  be intact. But I think interactive mode was disabled in gnsd630-mod.bin 
so it might not be of much use. You could still try to set up serial console 
and see what happens. More info here: 
http://code.google.com/p/snake-os/wiki/SerialConnectionHowToNSK330 
http://code.google.com/p/snake-os/wiki/Recovery. Those cables are dirt cheap on 
ebay so it might be worth a try.

If you post high res pictures of the board I could possbily help you find the 
serial header.

Hopefully the flash is at least 4MB.. some of these only come with 1MB..

Original comment by stefansc...@googlemail.com on 9 Sep 2012 at 12:35

GoogleCodeExporter commented 9 years ago
I should stop leaving tabs open over night.. that's an 8MB flash. Maybe you'll 
have luck with the serial connection. No promises though.

Original comment by stefansc...@googlemail.com on 9 Sep 2012 at 12:49

GoogleCodeExporter commented 9 years ago
Thanks, the pics of both sides are here: 
http://www.mediafire.com/?8m3vg2666tovli5

I will give it a try (for learning experience if nothing else)

Seb

Original comment by scer...@gmail.com on 9 Sep 2012 at 9:07

GoogleCodeExporter commented 9 years ago
It's the four holes labeled CN1 near the LED. Starting from the CN1 the first 
one should be ground.. third and fourth are the data lines.

Original comment by stefansc...@googlemail.com on 9 Sep 2012 at 10:27

GoogleCodeExporter commented 9 years ago
Thanks, will give it a go & report back

Original comment by scer...@gmail.com on 9 Sep 2012 at 11:01

GoogleCodeExporter commented 9 years ago
Before had a chance to play with it, I got RMA so had the unit replaced with 
new one

Original comment by scer...@gmail.com on 29 Oct 2012 at 8:32

GoogleCodeExporter commented 9 years ago
any pointers to getting snakeos to run on Conrad ME-SN-35B please..

Regards

RT

Original comment by tawn...@googlemail.com on 29 Jan 2013 at 11:43

GoogleCodeExporter commented 9 years ago
Do you know the specifications?

CPU, flash and ram would be most useful.

Original comment by stefansc...@googlemail.com on 30 Jan 2013 at 6:37

GoogleCodeExporter commented 9 years ago
as post 25, i put this in the issues and groups, sorry for being needy !

Want to try programming Conrad ME-SN-35B with snakeos, 
will need to program via ttl serial,
the nas device has 256mb ram onboard NT5DS16M16CS-5T
never compiled using sdk's and dont have linux installed at presant
can anyone answer if snakeos can be compiled for 256mb ?
can someone compile for 256mb ?
or do I really need to change the ram for 64mb ?
or will it work anyway but (64mb version) 64mb ?
will 32mb version run with 256mb chip ?

I was going to run through the recovery guide to acheive serial programming ?

T...

Original comment by tawn...@googlemail.com on 31 Jan 2013 at 8:33

GoogleCodeExporter commented 9 years ago
Oh sorry.. didn't notice that it was the same one.

That's 256Mbit.. so it's 32MByte like most of these things.

The other Conrad enclosure had the bootloader prompt and serial console 
disabled. So using the the recovery procedure wasn't possible there, but maybe 
this one is different.

It also needed some changes in the kernel to work properly. Could be that this 
one won't work with standard snakeos either.

Original comment by stefansc...@googlemail.com on 1 Feb 2013 at 1:22

GoogleCodeExporter commented 9 years ago
Aah yes of course didn't notice that was in bits, I may try updating through 
web interface, failing that am handy with a soldering iron ! 

Original comment by tawn...@googlemail.com on 1 Feb 2013 at 1:39

GoogleCodeExporter commented 9 years ago
I have the same model.

Conrad ME-SN-35B
SOC: CNS2132
Flash: MX25l6445EM1-10G
USB-SATA bridge: SPIF301
Memory: Mosel 256Mb V58C2256164SC16

Just wanted to give it a go myself without some proper background check.
So I've tried the "gnsd630-mod.bin" firmware.
I was still able to use it as an USB device, but the network was gone.
I've got an USB to serial converter (Belkin F5U103V) and a Cisco console kabel 
for wiring.

I've used the known pinout for a serial D9 connector:
http://i.stack.imgur.com/oPa91.gif

The layout below gives me some terminal feedback (Putty):

--\
|o| 1 GND
|o| 2 VCC (not used)
|o| 3 TX
|o| 4 RX
---

However I still receive a lot of rubish and I tried some lower bitrate settings 
(14400, 9600, 1200) and control (none, xon/xoff). Parity left the same (none, 
8, 1).
It also doesn't seem to register any keypress and I would expect some more 
feedback (like 'scrabled' prompt).
I'll have to dig up some more information about the chip to fully understand 
everything, but it seems to fail already on the serial connection.

Original comment by r.slu...@gmail.com on 4 Feb 2013 at 8:14

GoogleCodeExporter commented 9 years ago
Serial operates at 5v logic, I beleive these require ttl which operates at 3.3v 
logic which is why the nokia cable was sujested because its a serial converter 
that operates at ttl, you can use a max232 level converter for this or just buy 
a ca-50 nokia cable or such like, 
then when you get comms working ...follow post 8
hope this helps
T

Original comment by tawn...@googlemail.com on 4 Feb 2013 at 8:52

GoogleCodeExporter commented 9 years ago
Thanks for your help T, but I think both are USB to serial cables operating 
with the PL2303 chip. Also TTL describes wider voltage range 3V till 5V.
http://en.wikipedia.org/wiki/Digital_signal#Logic_voltage_levels

I expect another issue.

These Belkin adapters also gave my colleagues (and their Cisco equipment) some 
issues with putty, so I'm thinking give Linux a shot.

Original comment by r.slu...@gmail.com on 4 Feb 2013 at 9:38

GoogleCodeExporter commented 9 years ago
The other device used these serial settings:
baudrate: 38400
bits: 8
parity: none
stop bits: 1

This one seems to be made by the same manufacturer.. so maybe they will work 
here. But as I said earlier the boot prompt was disabled so it might just print 
some messages and then lock up when starting the OS.

Mine also acts as a normal USB disk by default. The OS reroutes the SATA bridge 
to the internal USB pins when it isn't connected to anything.

Original comment by stefansc...@googlemail.com on 5 Feb 2013 at 12:40

GoogleCodeExporter commented 9 years ago
I also have the Conrad ME-SN-35B NAS.   Has anyone managed to get Snake-os 
working on it?  I dont want to brick this thing so want to hear a success 
before I jump in.

Original comment by r...@studentmidwife.net on 12 Feb 2013 at 10:57

GoogleCodeExporter commented 9 years ago
I bought one of these. Will see what I can do.

The usb port looks like it's only a device port again .. so it won't be 
possible to attach anything to it.

Original comment by stefansc...@googlemail.com on 8 Mar 2013 at 7:57

GoogleCodeExporter commented 9 years ago
Ok, some progress. I got a GNSD630 build of snake installed and it seems to 
work fine so the hardware must be fairly similar. This box identifies itself as 
GNS66EB so that's what I'll call it.

The original firmware looks very similar to the one in the GNSD630 too. One of 
the bigger changes seems to be that they replaced BitTornado with Transmission. 
Serial console is also accessible by default.

Gns66eb-orig.bin is a dump of the original firmware. The only change is that 
the bootloader prompt is unlocked. Can be used for recovery purposes or to 
disect it.

There's something strange going on with the firmware updater. I tried to create 
an installable image by overwriting the last chunk with the one from the 
gnsd630-mod.bin image, which made it installable. The problem is that the 
updater skips the last ~1MB, leaving the box in an unbootable state. The part 
copied from gnsd630-mod.bin is mostly filled with zeros with a few values at 
the end. One of those values is suspicously close to the offset where it stops 
writing the image.. but it could just be a coincidence. Changing it seemed to 
have no effect.

I packed a gns66ed-mod.bin without transmission and mediatomb to get the size 
below that limit. Otherwise there are similar changes as in gnsd630-mod.bin. 
Telnet is activated and there's an installation script for snake.

Installation procedure for snake:

..and just to be clear.. DO THIS AT YOUR OWN RISK!

install gns66eb-mod.bin
connect via telnet and login as root
cd /tmp/
wget snakeos-gnsd630-V1.3.2-20130308-from-original.bin (or somehow copy it to 
the disk)
run installsnake.sh snakeos-gnsd630-V1.3.2-20130308-from-original.bin

hope that nothing went wrong and reboot into snake

Original comment by stefansc...@googlemail.com on 10 Mar 2013 at 2:25

Attachments:

GoogleCodeExporter commented 9 years ago
[deleted comment]
GoogleCodeExporter commented 9 years ago
gns66ed-mod.bin

Original comment by stefansc...@googlemail.com on 10 Mar 2013 at 2:31

Attachments:

GoogleCodeExporter commented 9 years ago
... and gns66eb-orig.bin

md5sum for all files:
3947662d489c0b8c1e53881e9dca72be  
snakeos-gnsd630-V1.3.2-20130308-from-original.bin
046271b45ca54ca947f74692c2fa1191  gns66eb-mod.bin
70368c864c1f3203c113c6ff69928fa6  gns66eb-orig.bin

Original comment by stefansc...@googlemail.com on 10 Mar 2013 at 2:33

Attachments:

GoogleCodeExporter commented 9 years ago
I will try this when I get 6 mins, been up to the eyeballs ... seriously .. 
just peeking over the edge, 

Original comment by tawn...@googlemail.com on 10 Mar 2013 at 2:38

GoogleCodeExporter commented 9 years ago
I have tried many bin's in this thread and all I ever get is 'upgrade failed'.

My current firmware says it is version V01R25

Am I missing something here or perhaps this thread is not for my device.

Cheers,

Rob

Original comment by r...@studentmidwife.net on 11 Mar 2013 at 12:17

GoogleCodeExporter commented 9 years ago
Is it this one? 
http://www.conrad.com/ce/en/product/413502/35-SATA-HDD-Network-Enclosure
Gns66eb-mod.bin is the only one that should be installable, but be aware that 
you probably can't go back easily once that's done and that this image is 
somewhat crippled (Mediatomb and Transmission are gone which handled DLNA/UPNP 
and  BitTorrent).

Honestly, if you were happy with the original firmware then stick with it. 
Snake isn't perfect either.

Original comment by stefansc...@googlemail.com on 11 Mar 2013 at 3:32

GoogleCodeExporter commented 9 years ago
Ahhh.... ok.

I think i will stick with the default firmware then unless some leaps are
made.  I do use the bittorent and DNLA a fair bit.

Thanks for your help anyway,

Original comment by r...@studentmidwife.net on 11 Mar 2013 at 3:42