Unfortunately no one can be told what fun_plug is - you have to see it for yourself.
You are not logged in.
Just grabbed a couple of these on sale and am having no luck. 323 recognizes the drives, but lists them as "Capacity: 0GB" and attempts to format just fail.
Any suggestions?
Offline
factory reset the unit
pull the drives, insert them into a desktop machine and delete all partitions
reinsert into dns323, boot up and see if there is any change
you can also try reloading / reapplying dns323 firmware (or upgrade/downgrade)
but are these 1.5 tb drives supported? Somebody else posted asking whether these are supported recently.
lu
Last edited by luusac (2008-09-21 20:57:39)
Offline
Hi,
the problem is in D-Link firmware. They use modifiable goAhead lightweight http server.
I built it from scratch and append some goforms from D-Link firmware (package goahead from firmware "http://tsd.dlink.com.tw/temp/download/3034/dns323_GPL_v1.05_05052008.tgz").
For the recognition of HDD capacity they use /proc/partitions.
Here is my output (2 Seagate Barracudas ST31500341AS):
# cat /proc/partitions
major minor #blocks name
7 0 5484 loop0
31 0 64 mtdblock0
31 1 64 mtdblock1
31 2 1536 mtdblock2
31 3 6336 mtdblock3
31 4 192 mtdblock4
9 0 2928183424 md0
8 0 1465138584 sda
8 1 530113 sda1
8 2 1464091807 sda2
8 4 514080 sda4
8 16 1465138584 sdb
8 17 530113 sdb1
8 18 1464091807 sdb2
8 20 514080 sdb4
Following 2 lines are of interest when it goes about capacity recognition:
8 0 1465138584 sda
8 16 1465138584 sdb
The capacity in GB should be calculated this way:
1.) 1465138584 * 1024 = 1500301910016
2.) 1500301910016 / 1000000000 = 1500 (integer division)
But the problem is in parsing of these lines.
Everything runs well if the number of digit is less than 10 (all drives with capacity <= 1TB fullfils this).
In case of ST31500341AS there are 10 digits and the parser parses it wrong as an empty string.
Here is an output from my webs server (with original wrong code):
line2=| 8 0 1465138584 sda|
line2+11=|1465138584 sda|
1.HDtmp=| sda|
2.HDtmp=||
HDSize=
line2=| 8 16 1465138584 sdb|
line2+11=|1465138584 sdb|
1.HDtmp=| sdb|
2.HDtmp=||
HDSize=
And here voila after a little modification:
line2=| 8 0 1465138584 sda|
line2+10=| 1465138584 sda|
1.HDtmp=| 1465138584 sda|
2.HDtmp=| 1465138584|
HDSize= 1465138584
line2=| 8 16 1465138584 sdb|
line2+10=| 1465138584 sdb|
1.HDtmp=| 1465138584 sdb|
2.HDtmp=| 1465138584|
HDSize= 1465138584
The wrong line in Disktool/checkHD.c (function GetHDSizeInfo line: 1048):
HDtmp=strchr(line2+11,' ');
It should be:
HDtmp=strchr(line2+10,' ');
This is only the reason. Unfortunatly the firmware I downloaded is not complete and there is no possibility to build it (at least for me).
Has anyone any suggestions how to make D-Link to repair their firmware?
Robert
Last edited by rfbsoft (2008-10-16 11:00:33)
Offline
There is something in the stickies about some types of 1.5 tB being ok for single use but no good for mirrored use.
But that cant be your problem because you already looked, eh?
Biscotte
Offline