Differences

This shows you the differences between the selected revision and the current version of the page.

dns-320 2012/11/04 19:32 dns-320 2021/01/06 20:56 current
Line 47: Line 47:
</code> </code>
\\ \\
 +
Line 53: Line 54:
===== Serial PIN Layout ===== ===== Serial PIN Layout =====
-BusyBox break-in code is still 5784468+BusyBox break-in code is 5784468 for Firmware before v2.03. Starting with v2.03 it is set by the ui [http://forums.dlink.com/index.php?topic=42483.msg149905#msg149905].
Jumper: JP3\\ Jumper: JP3\\
Line 629: Line 630:
\\ \\
\\ \\
 +
 +
 +
===== Setting up Debian in chrooted enviroment ===== ===== Setting up Debian in chrooted enviroment =====
-D-Link has recently put a prebuilt Debian Squeeze package on their [[ftp://ftp.dlink.pl/dns/dns-320/driver_software/DNS-320%26325_linuxDebian_revA_Squeeze_all_en_20110111.zip|ftp]] site. The package size is approximately 150 MB. Read the instruction inside.+D-Link put a prebuilt Debian Squeeze package on their [[ftp://ftp.dlink.pl/dns/dns-320/driver_software/DNS-320%26325_linuxDebian_revA_Squeeze_all_en_20110111.zip|ftp]] site, in 2011. The package size is approximately 150 MB. Read the instruction inside. You may have to modify ''--bind'' (dash-dash-bind) to ''--rbind'' (dash-dash-rbind) for the ''/proc'' (and possibly ''/dev'') mounts in fun_plug.debian to get some usb devices (e.g. the DS9490R USB-1wire adapter) to work properly in squeeze. 
 + 
 +The prebuilt Debian Squeeze package is NO LONGER available through the D-Link FTP, as of july 2014, but a backup is listed on this [[https://code.google.com/archive/p/funplug-dns320-dns325/downloads|Google Code]] page.
===== Source code for firmware ==== ===== Source code for firmware ====
Dlink have release source code for firmware 1.0 on their [[ftp://ftp.dlink.fr/DNS/DNS-320/GPL/dns-320_a1_fw_v1.00_gpl(0216101012).tgz|ftp]] site. The source code size is approximate 25 MB Dlink have release source code for firmware 1.0 on their [[ftp://ftp.dlink.fr/DNS/DNS-320/GPL/dns-320_a1_fw_v1.00_gpl(0216101012).tgz|ftp]] site. The source code size is approximate 25 MB
 +
Line 641: Line 648:
===== U-BOOT Configuration ==== ===== U-BOOT Configuration ====
You can access the boot console (for trying to run your own kernel) via a netconsole. You can access the boot console (for trying to run your own kernel) via a netconsole.
-To interrupt the U-Boot startup, press SPACE and 1 before the one-second timeout.+To interrupt the U-Boot startup, press SPACE and 1 before the one-second timeout. You should get a Marvell_DNS320>> prompt immediately. If the kernel starts to boot, you missed the timeout window. Starting ahead of the timeout and pressing SPACE-1-SPACE-1, etc. will increase you chances of hitting the window.
The full U-Boot environment (MAC addresses hidden) is: The full U-Boot environment (MAC addresses hidden) is:
Line 696: Line 703:
Environment size: 1238/131068 bytes Environment size: 1238/131068 bytes
</code> </code>
- 
Line 703: Line 709:
<code> source build_fw </code> <code> source build_fw </code>
this will result in a file "DNS320-firmware" in the merge folder, which can be flashed to the unit via the webinterface (firmware update). this will result in a file "DNS320-firmware" in the merge folder, which can be flashed to the unit via the webinterface (firmware update).
-Right now the build_fw script does not do a full rebuild of the complete firmware, it rather puts together precompiled binaries that come with the built environment. [[http://forum.dsmg600.info/viewtopic.php?pid=41860#p41860|Here]] is an attempt at rebuilding the build script. [[http://curvedbrain.org/2008/06/09/building-firmware-binary-image-d-link-dns-323/|This]] blog post describes how to assemble a firmware image for the [[http://wiki.dns323.info/start|DNS-323]] and will probably helpful for the DNS-320 as well.+Right now the build_fw script does not do a full rebuild of the complete firmware, it rather puts together precompiled binaries that come with the built environment. [[http://dns323.kood.org/forum/viewtopic.php?pid=41860#p41860|Here]] is an attempt at rebuilding the build script. [[http://curvedbrain.org/2008/06/09/building-firmware-binary-image-d-link-dns-323/|This]] blog post describes how to assemble a firmware image for the [[http://wiki.dns323.info/start|DNS-323]] and will probably helpful for the DNS-320 as well.
Use this  custom build_fw to make a custom settings for the kernel Use this  custom build_fw to make a custom settings for the kernel
Line 988: Line 994:
        if (extract_frimware)         if (extract_frimware)
        {         {
-            firmware_unpack_extract(flashfilename, configfilename, dnsHeader.DefaultOffset, dnsHeader.+            firmware_unpack_extract(flashfilename, configfilename, dnsHeader.DefaultOffset, dnsHeader.DefaultLenght);
-code ]; then +
-  tar -xzf linux-2.6.22.18.tgz +
-fi +
- +
-# config our kernel and build it +
-cd ./linux-2.6.22.18 +
-sh cv.sh +
-make c +
-====== DNS-320 ====== +
-This page will share some more information about the [[http://www.dlink.co.uk/cs/Satellite?c=Product_C ]; then +
-  mv merge/uImage merge/uI, mage.org +
-fi +
- +
-if [ -f dns320flash -x dlink320firmware -o kernel ramdisk image config\nDNS323D1Ulean +
-make menuconfig +
-make +
-make modules +
-make uImage +
-cd ../ +
- +
-# Dlink run merge now +
-if [ ! -d uRamDiskefaultLenght);+
            printf("Default        Checksum file : %08x\n\n",calc_checksum(configfilename));             printf("Default        Checksum file : %08x\n\n",calc_checksum(configfilename));
        }         }
        else         else
-        { printf("\/coden"); }+        { printf("\n"); }
Line 1299: Line 1283:
===== Other info ===== ===== Other info =====
-The following [[http://forum.dsmg600.info/viewtopic.php?id=6094|thread]] handles some DNS-320 initial conversation, request there if you want some specific info here, or add yourself.+The following [[http://dns323.kood.org/forum/viewtopic.php?id=6094|thread]] handles some DNS-320 initial conversation, request there if you want some specific info here, or add yourself.
Line 1329: Line 1313:
or <code>killall fan_control</code>, and run <code>FT_testing -S</code>/code or <code>killall fan_control</code>, and run <code>FT_testing -S</code>/code
 +
 +
 +
 +
 +===== SSH Access =====
 +This is just a quick n' dirty way to get root access to the device. This configuration is __not__ recommended as permanent.
 +
 +  - Create fun_plug
 +  - Create sshd_config
 +  - reboot dns-320
 +
 +
 +**File 1 fun_plug * **
 +<code>
 +#!/bin/sh
 +# credit to
 +# http://webapps.itcs.umich.edu/radmind/index.php/Generate_ssh_host_keys
 +# for the scripted ssh-keygen
 +
 +ssh-keygen -q -t dsa -f /mnt/HD/HD_a2/ssh_host_dsa_key -N ""\
 +    -C "" < /dev/null > /dev/null 2> /dev/null
 +
 +/usr/sbin/sshd -f /mnt/HD/HD_a2/sshd_config
 +</code>
 +
 +**File 2 sshd_config * **
 +<code>
 +Port 22
 +Protocol 2
 +HostKey /mnt/HD/HD_a2/ssh_host_dsa_key
 +PermitEmptyPasswords yes
 +PasswordAuthentication yes
 +ChallengeResponseAuthentication no
 +TCPKeepAlive yes
 +</code>
 +
 +* Create the files with a Linux compatible text editor (Like [[http://notepad-plus.sourceforge.net/uk/site.htm|Notepad++]])
 +
 +Connect: ''ssh root@dns_ip''
 +
 +
 +
 +
 +===== Detect USB button pressure =====
 +I wanted to replace the 8 seconds pressure on the power button by a simple pressure on the usb button.
 +So, i've analysed the chk_io program while it seemed to be the one which does the job for the usb copy.
 +The chk_io is not gpl, so only the binary is available. I used strace and LD_PRELOAD on ioctl to analyse it,
 +and finally found a similar program for the dns-323.
 +
 +I'm not sure it's required to open /dev/REG each time, but it's what the official program does.
 +Idem for the open attributes.
 +
 +I've created :
 +
 +* ffp/extra/shutdown/chkbutton (gcc -static -s chkbutton.c -o chkbutton)
 +
 +* /ffp/extra/shutdown/shutdown_ffp.sh
 +
 +* /ffp/extra/shutdown/usbOff.sh
 +
 +* /ffp/etc/fun_plug.local
 +
 +Just copy these files or feel free to modify them.
 +
 +Files are available here : http://nadenislamarre.free.fr/dns320
 +
 +<code>
 +# chkbutton.c
 +
 +#define _GNU_SOURCE 1
 +#include <stdio.h>
 +#include <stdlib.h>
 +#include <fcntl.h>
 +
 +#define DEVICE "/dev/REG"
 +#define REQUEST 0x65
 +#define REGISTER 0x10110
 +#define BTN_NOTUSB 0x08000000
 +
 +int main (int argc, char *argv[]) {
 +  int fd;
 +  unsigned long data[2];
 +
 +  while(1) {
 +    if ((fd = open (DEVICE, O_RDWR|O_LARGEFILE)) == -1) {
 +      exit(1);
 +    }
 +
 +    data[0] = REGISTER;
 +    data[1] = 0;
 +
 +    if(ioctl(fd, REQUEST, &data) == 0) {
 +      if(! ((data[1] & BTN_NOTUSB) == BTN_NOTUSB)) {
 +        printf("USB\n");
 +        fflush(stdout);
 +        usleep(1000 * 1000 * 3);
 +      }
 +    }
 +   
 +    close(fd);
 +    usleep(1000*30);
 +  }
 +
 +  return 0;
 +}
 +</code>
 +
 +The following script called in the /ffp/etc/fun_plug.local make the dns-320 reboot just by pressing on the usb button.
 +The redirection to /dev/null is required because the shutdown.sh script kill processes on some conditions.
 +
 +<code>
 +#!/bin/sh
 +
 +# /ffp/extra/shutdown/usbOff.sh
 +
 +export PATH=$PATH:/bin:/sbin
 +
 +chkbutton |
 +while read BTN
 +do
 +  if test "$BTN" = "USB"
 +  then
 +    led usb blue blinking
 +    shutdown_ffp.sh >/dev/null 2>/dev/null
 +    exit 0
 +  fi
 +done
 +</code>
 +
 +<code>
 +#!/bin/sh
 +
 +# /ffp/etc/fun_plug.local
 +
 +# replacement for shutdown ; must not be on a mounted device
 +cp /ffp/extra/shutdown/* /sbin
 +usbOff.sh&
 +</code>
 +
 +The shutdown script is the same as the official one except that i've added a proper shutdown for ffp : /ffp/etc/rc stop
 +
 +<code>
 +#!/bin/sh
 +
 +# /ffp/extra/shutdown/shutdown_ffp.sh
 +
 +source /usr/local/modules/files/project_features
 +
 +/ffp/etc/rc stop
 +
 +kill_running_process
 +#kill -9 -1
 +
 +# remove link file
 +rm /usr/local/upload
 +sync
 +
 +umount_dev.sh all
 +
 +umount /usr/local/config
 +
 +sleep 1
 +# shutdown device
 +
 +MODEL=$(cat "/usr/local/modules/files/model")
 +echo "MODEL:$MODEL"
 +
 +if [ "$PROJECT_FEATURE_MCU_CHIP_WT693P" = "1" ]; then
 + echo "device shutdown"
 + up_send_ctl DeviceShutdown 0
 +
 +elif [ "$PROJECT_FEATURE_MCU_CHIP_69P803" = "1" ]; then
 + echo "send cmd to micro-p to shutdown"
 + up_send_ctl DeviceShutdown 1
 +else
 + poweroff
 +fi
 +</code>
 +
 +

Navigation

Personal Tools