This is an old revision of the document!


DNS-321

The DNS-321 is often considered the little brother of the DNS-323. It has a slightly slower CPU (400 vs 500), no USB port, but it does have more flash (16mb vs 8mb). Here is some info gathered from a unit with hardware version A2 running firmware 1.03. Please note that it appears that units labeled version A2 on the outside are labled as A1 on the motherboard itself.

Hardware

 DNS-321

CPU 400 MHz Marvell 88f5182-a2
RAM 64 MB
Flash 16 MB Micron M29W128GH
LAN Gigabit
Kernel 2.6.22.7
Samba 3.0.28
U-boot 1.1.1


Pictures

Flash CPU RAM Module

Serial Console

Flash A serial port is available for advanced troubleshooting and flash recovery. A simple cable can be made using a nokia ca-42 cable as discribed here. The cables can be purchased on eBay quite cheap. Other options for building a serial cable are available here.

Pinout:

Pin 1Pin 2Pin 3Pin 4
3.3VRXTXGND

Serial breakout code: 5784468
U-boot autoboot stop: <Space> + <1>

Recovery via serial

Pulled from here. The following is done with Ubuntu 12.04

1. Install the splitdns323fw package.

 $ sudo apt-get install dns323-firmware-tools

2. Then download the 1.03 FW package from D-Link:

 ftp://ftp.dlink.com/Multimedia/dns321/Firmware/

3. Split the firmware (in the directory you used in step 2):

 $ splitdns323fw -k 103kernel -i 103initrd -d 103defaults dns321_fw_103

4. If kermit is not installed do it now:

 $ sudo apt-get install ckermit

5. Setup your kermit config file, save the following as a .kermrc file in your home folder (note: the line “set line” will need to be set to your serial port):

 $ gedit ~/.kermrc
 set line /dev/ttyACM0
 set speed 115200
 set carrier-watch off
 set flow-control none
 set handshake none
 set prefixing all
 set streaming off
 set parity none

6. Run kermit, start this initally with the dns-321 box already running:

 $sudo kermit

7. Once inside kermit hit the <c> key to get to the console. Hit <enter> a couple times.

 !!if you are running stock firmware type 5784468 and hit <enter>!!

8. You should now be at a # prompt:

 #

9. Now enter the reboot command. Be prepared to do the next step quickly as you will only have 3 or so seconds to complete it..

 # reboot

10. You will now see something similar to this

 USB 0: host mode
 USB 1: host mode
 Net:   egiga0 [PRIME]
 Hit any key to stop autoboot:

press <space> + <1> - this will exit the boot sequence.

11. At this point you should be at a boot prompt similar to the following:

 Marvell>> 

12. Now you can enter a multitude of commands here but we will on need two right now (? shows all commands available). For recovery purposes we only need two commands, see #13 and #15.

13. Flash the kernel image via uboot:

 #loadb k

you will get this in response:

 ## Ready for binary (kermit) download to 0x00400000 at 115200 bps..

at this point you will need to hit

 <ctrl>+<\> then <c>

then you will need to upload the kernel file

 send 103kernel

you should now see a screen showing transfer status. Once it completes (it will take a good 5 minutes or so) move on to #14 .

14. Verify that the kernel was sent successfully: hit <c> to go to the console and make sure the image in 13 was accepted ok. You should see

 Kernel Size = 1554936
 Copy to Flash... done
 
 note: Kernel size might be different!

15. Flash the ramdisk image via uboot:

 # loadb r

you will get this in response:

 ## Ready for binary (kermit) download to 0x00400000 at 115200 bps..

at this point you will need to hit

 <ctrl>+<\> then <c>

then you will need to upload the kernel file

 send 103initrd

you should now see a screen showing transfer status. Once it completes (it will take a good 15 minutes or so) move on to #16 .

16. Verify that the kernel was sent successfully: hit <c> to go to the console and make sure the image in 15 was accepted ok. You should see:

  Ramdisk Size = 8935844
  Copy to Flash... done

17. At this point you will need to pull power from the unit and plug it back in.

Alternative Firmware

Alt-f, an alternative firmware available for the DNS-323, now has experimental support for the DNS-321. For more information please check the thread on the google groups for Alt-f (link blocked). Search for “flashed DNS-321”.

Outputs

U-Boot
 ** LOADER **
 ** MARVELL BOARD: DB-88F5182-DDR2 LE 

U-Boot 1.1.1 (Feb 20 2009 - 16:05:55) Marvell version: 2.2.2.Chopper.04

U-Boot code: 00200000 -> 0026FFF0  BSS: -> 0027BC90

Soc: 88F5182 A2 (DDR2)
CPU running @ 400Mhz 
SysClock = 200Mhz , TClock = 166Mhz 

DRAM CS[0] base 0x00000000   size  64MB 
DRAM Total size  64MB 
[16384kB@ff000000] Flash: 16 MB
Addresses 4M - 0M are saved for the U-Boot usage.
Mem malloc Initialization (4M - 3M): Done
advanced 
CPU : ARM926 (Rev 0)
88F5182 A2 streaming disabled 

USB 0: host mode
USB 1: host mode
Net:   egiga0 [PRIME]
Hit any key to stop autoboot:  0 
Marvell>>


dmesg
## Booting image at ff040000 ...
   Image Name:   Linux-2.6.22.7
   Created:      2009-08-10   9:41:56 UTC
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    1554872 Bytes =  1.5 MB
   Load Address: 00008000
   Entry Point:  00008000
   Verifying Checksum ... OK
OK
## Loading Ramdisk Image at ff1c0000 ...
   Image Name:   Ramdisk
   Created:      2009-08-17   2:18:25 UTC
   Image Type:   ARM Linux RAMDisk Image (gzip compressed)
   Data Size:    8935780 Bytes =  8.5 MB
   Load Address: 00800000
   Entry Point:  00800000
   Verifying Checksum ... OK

Starting kernel ...

Uncompressing Linux...................................................................................................... done, booting the kernel.
Linux version 2.6.22.7 (jack@SWTEST1) (gcc version 3.4.4 (release) (CodeSourcery ARM 2005q3-2)) #15 Mon Aug 10 17:41:46 CST 2009
CPU: ARM926EJ-S [41069260] revision 0 (ARMv5TEJ), cr=a0053177
Machine: Feroceon
Using UBoot passing parameters structure
Memory policy: ECC disabled, Data cache writeback
CPU0: D VIVT write-back cache
CPU0: I cache: 32768 bytes, associativity 1, 32 byte lines, 1024 sets
CPU0: D cache: 32768 bytes, associativity 1, 32 byte lines, 1024 sets
Built 1 zonelists.  Total pages: 16256
Kernel command line: root=/dev/ram console=ttyS0,115200 :::DB88FXX81:egiga0:none
PID hash table entries: 256 (order: 8, 1024 bytes)
Console: colour dummy device 80x30
Dentry cache hash table entries: 8192 (order: 3, 32768 bytes)
Inode-cache hash table entries: 4096 (order: 2, 16384 bytes)
Memory: 64MB 0MB 0MB 0MB = 64MB total
Memory: 52912KB available (2908K code, 193K data, 120K init)
Mount-cache hash table entries: 512
CPU: Testing write buffer coherency: ok
NET: Registered protocol family 16
Sys Clk = 200000000, Tclk = 166666667

CPU Interface
-------------
SDRAM_CS0 ....base 00000000, size  64MB 
SDRAM_CS1 ....base 10000000, size 256MB 
SDRAM_CS2 ....base 20000000, size 256MB 
SDRAM_CS3 ....base 30000000, size 256MB 
PEX0_MEM ....base e0000000, size 128MB 
PEX0_IO ....base f2000000, size   1MB 
PCI0_MEM ....base e8000000, size 128MB 
PCI0_IO ....base f2100000, size   1MB 
INTER_REGS ....base f1000000, size   1MB 
DEVICE_CS0 ....no such
DEVICE_CS1 ....no such
DEVICE_CS2 ....no such
DEV_BOOCS ....base ff000000, size  16MB 
CRYPT_ENG ....base f0000000, size  64KB 

  Marvell Development Board (LSP Version 3.0.5_NAS_GDP_p9)-- DB-88F5182-DDR2  Soc: 88F5182 A2

 Detected Tclk 166666667 and SysClk 200000000 
Marvell USB EHCI Host controller #0: c10b1600
Marvell USB EHCI Host controller #1: c10b1400
PCI: bus0: Fast back to back transfers enabled
SCSI subsystem initialized
usbcore: registered new interface driver usbfs
usbcore: registered new interface driver hub
usbcore: registered new device driver usb
Time: orion_clocksource clocksource has been installed.
NET: Registered protocol family 2
IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
TCP established hash table entries: 2048 (order: 2, 16384 bytes)
TCP bind hash table entries: 2048 (order: 1, 8192 bytes)
TCP: Hash tables configured (established 2048 bind 2048)
TCP reno registered
checking if image is initramfs...it isn't (no cpio magic); looks like an initrd
Freeing initrd memory: 8726K
RTC registered
Use the XOR engines (acceleration) for enhancing the following functions:
  o RAID 5 Xor calculation
  o kernel memcpy
  o kenrel memzero
  o copy user to/from kernel buffers
Number of XOR engines to use: 2
VFS: Disk quotas dquot_6.5.1
Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
squashfs: version 3.3 (2007/10/31) Phillip Lougher
io scheduler noop registered
io scheduler anticipatory registered (default)
Serial: 8250/16550 driver $Revision: 1.1.1.1 $ 4 ports, IRQ sharing disabled
serial8250.0: ttyS0 at MMIO 0xf1012000 (irq = 3) is a 16550A
serial8250.0: ttyS1 at MMIO 0xf1012100 (irq = 4) is a 16550A
RAMDISK driver initialized: 16 RAM disks of 18432K size 1024 blocksize
loop: module loaded
Marvell Ethernet Driver 'mv_ethernet':
  o Uncached descriptors in DRAM
  o DRAM SW cache-coherency
  o TCP segmentation offload enabled
  o Checksum offload enabled
  o Marvell ethtool proc enabled
  o Rx desc: 128
  o Tx desc: 256
  o Loading network interface 'egiga0' 
PPP generic driver version 2.4.2
PPP Deflate Compression module registered
PPP BSD Compression module registered
PPP MPPE Compression module registered
NET: Registered protocol family 24
Intergrated Sata device found
scsi0 : Marvell SCSI to SATA adapter
scsi1 : Marvell SCSI to SATA adapter
NFTL driver: nftlcore.c $Revision: 1.1.1.1 $, nftlmount.c $Revision: 1.1.1.1 $
flash VppMin = "181" , VppMax = "197"
cfi_flash_0: Found 1 x16 devices at 0x0 in 8-bit bank
 Amd/Fujitsu Extended Query Table at 0x0040
cfi_flash_0: CFI does not contain boot bank location. Assuming top.
number of CFI chips: 1
cfi_cmdset_0002: Disabling erase-suspend-program due to code brokenness.
Creating 6 MTD partitions on "cfi_flash_0":
0x00000000-0x00020000 : "MTD1"
0x00020000-0x00040000 : "MTD2"
0x00040000-0x001c0000 : "Linux Kernel"
0x001c0000-0x00bc0000 : "File System"
0x00f80000-0x01000000 : "u-boot"
0x00bc0000-0x00f80000 : "Module"
ehci_marvell ehci_marvell.4523: Marvell Orion EHCI
ehci_marvell ehci_marvell.4523: new USB bus registered, assigned bus number 1
ehci_marvell ehci_marvell.4523: irq 17, io base 0xf1050100
ehci_marvell ehci_marvell.4523: USB 2.0 started, EHCI 1.00, driver 10 Dec 2004
usb usb1: configuration #1 chosen from 1 choice
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 1 port detected
ehci_marvell ehci_marvell.167817: Marvell Orion EHCI
ehci_marvell ehci_marvell.167817: new USB bus registered, assigned bus number 2
ehci_marvell ehci_marvell.167817: irq 12, io base 0xf10a0100
ehci_marvell ehci_marvell.167817: USB 2.0 started, EHCI 1.00, driver 10 Dec 2004
usb usb2: configuration #1 chosen from 1 choice
hub 2-0:1.0: USB hub found
hub 2-0:1.0: 1 port detected
mice: PS/2 mouse device common for all mice
md: linear personality registered for level -1
md: raid0 personality registered for level 0
md: raid1 personality registered for level 1
device-mapper: ioctl: 4.11.0-ioctl (2006-10-12) initialised: dm-devel@redhat.com
dm_crypt using the OCF package.
TCP cubic registered
NET: Registered protocol family 1
NET: Registered protocol family 17
md: Autodetecting RAID arrays.
md: autorun ...
md: ... autorun DONE.
RAMDISK: Compressed image found at block 0
EXT2-fs warning: mounting unchecked fs, running e2fsck is recommended
VFS: Mounted root (ext2 filesystem).
Freeing init memory: 120K
init started:  BusyBox v1.00-pre1 (2009.02.11-09:07+0000) multi-call binary
init started:  BusyBox v1.00-pre1 (2009.02.11-09:07+0000) multi-call binary
Starting pid 261, console /dev/ttyS0: '/etc/rc.sh'
** Mounting /etc/fstab
umount: proc: not mounted
umount: proc: not mounted
umount: /image.cfs: not mounted
umount: /image.cfs: not mounted
Check MTD block device V2.05.12242008
	MTDC: Mount MTD1 done.
	MTDC: Mount MTD2 done.
	Error: Can't open file /sys/mtd1/version.txt in mtd1.
	MTDC: Backup files from MTD1 to MTD2.
** copy mtd1 files
cp: /sys/mtd1/firmwareupdate: No such file or directory
cp: /sys/mtd1/MountError: No such file or directory
cp: /sys/mtd1/exports: No such file or directory
mv: /sys/mtd1/udhcpd.leases: No such file or directory
mv: /sys/mtd1/firmwareupdate: No such file or directory
mv: /sys/mtd1/restore: No such file or directory
mv: /sys/mtd1/format_ok: No such file or directory
mv: /sys/mtd1/pls_sync: No such file or directory
mv: /sys/mtd1/pls_chmod_a2: No such file or directory
mv: /sys/mtd1/pls_chmod_b2: No such file or directory
mv: /sys/mtd1/spare_dsk: No such file or directory
mv: /sys/mtd1/std_raid1: No such file or directory
mv: /sys/mtd1/old_prescan_version: No such file or directory
cp: /sys/mtd1/ftpgroup: No such file or directory
cp: /sys/mtd1/ez-ipupdate.cache: No such file or directory
** link lib **
** link web **
** link /usr/bin **
** link /usr/sbin **
cp: /sys/crfs/default/server-key-nopassword.pem: No such file or directory
    mode:         16384
-o  offset:       0
-f  frequency:    0
    maxerror:     16384000
    esterror:     16384000
    status:       64 ( UNSYNC )
-p  timeconstant: 2
    precision:    1
    tolerance:    33554432
-t  tick:         10000
    time.tv_sec:  1351718500
    time.tv_usec: 964351
    return value: 5 (clock not synchronized)
<rtc>: getRTC time= 12/10/31 21:21:41
** set loopback interface
MAC = <removed>
egiga0: mac address changed
Jumbo Fram enable
Set mtu 9000
egiga0: Ilegal MTU value 9000,  rounding MTU to: 9004 
egiga0: change mtu 1500 (buffer-size 1520) to 9004 (buffer-size 9024)
** Activate Gigabit Interface
egiga0: link down
** execute rc.init.sh
Setting hostname .... NASbox
egiga0: link up, full duplex, speed 1 Gbps
hd verify v1.21.08122009
can not detect hd
normal mode
Set Timezone=08
cmd =cp /sys/crfs/sbin/zoneinfo/08Mountain /etc/localtime
get IP = 192.168.5.5
crond[622]: crond 2.3.2 dillon, started, log level 8

check button V2.67.07242009
1.03(1.19.0817.2009)
08/17/2009

SIOCADDRT: File exists

mfg_search version 1.01.1103.2008

mfg_search
kill -9 `pidof mfg_Chopper` 2>/dev/null
local ip c0a80505 (192.168.5.5)
netmask  ffffff00 (255.255.255.0)
init socket OK
kill: Usage: kill [-s sigspec | -signum | -sigspec] [pid | job]... or
kill -l [exitstatus]

DLINK321 UPnP AV / MediaServer v2.03 (2009-08-11 10:58:39 CST)

No CodePage
UUID[uuid:39457473-0645-7145-5ec9-00265a7a9a5e]
** Get MAC Addr
set_fan_speed()-->h
Set fan to high speed
op_server v2.01.06012006
crond[665]: crond 2.3.2 dillon, started, log level 8

Starting pid 676, console /dev/ttyS0: '/bin/sh'


BusyBox v1.00-pre1 (2009.02.11-09:07+0000) Built-in shell (ash)
Enter 'help' for a list of built-in commands.

crond[714]: crond 2.3.2 dillon, started, log level 8


/proc/cpuinfo
Processor	: ARM926EJ-S rev 0 (v5l)
BogoMIPS	: 266.24
Features	: swp half thumb fastmult edsp 
CPU implementer	: 0x41
CPU architecture: 5TEJ
CPU variant	: 0x0
CPU part	: 0x926
CPU revision	: 0
Cache type	: write-back
Cache clean	: cp15 c7 ops
Cache lockdown	: format C
Cache format	: Harvard
I size		: 32768
I assoc		: 1
I line length	: 32
I sets		: 1024
D size		: 32768
D assoc		: 1
D line length	: 32
D sets		: 1024

Hardware	: Feroceon
Revision	: 0000
Serial		: 0000000000000000


/proc/meminfo
MemTotal:        61828 kB
MemFree:         18800 kB
Buffers:         21152 kB
Cached:          11176 kB
SwapCached:          0 kB
Active:           8596 kB
Inactive:        28588 kB
SwapTotal:           0 kB
SwapFree:            0 kB
Dirty:               4 kB
Writeback:           0 kB
AnonPages:        4892 kB
Mapped:           1488 kB
Slab:             4572 kB
SReclaimable:      892 kB
SUnreclaim:       3680 kB
PageTables:        132 kB
NFS_Unstable:        0 kB
Bounce:              0 kB
CommitLimit:     30912 kB
Committed_AS:    11816 kB
VmallocTotal:   450560 kB
VmallocUsed:     17012 kB
VmallocChunk:   425980 kB


/proc/mtd
dev:    size   erasesize  name
mtd0: 00020000 00020000 "MTD1"
mtd1: 00020000 00020000 "MTD2"
mtd2: 00180000 00020000 "Linux Kernel"
mtd3: 00a00000 00020000 "File System"
mtd4: 00080000 00020000 "u-boot"
mtd5: 003c0000 00020000 "Module"



Navigation

Personal Tools