Asus WL-500W

From DD-WRT Wiki

(Difference between revisions)
Jump to: navigation, search
Revision as of 18:54, 21 September 2009 (edit)
Masterman (Talk | contribs)
(Now, to get started)
← Previous diff
Revision as of 18:59, 21 September 2009 (edit) (undo)
Masterman (Talk | contribs)
(Connecting the Drive to your Router)
Next diff →
Line 205: Line 205:
2.1 From the DD-WRT web GUI screen, on the Administration/Management tab, scroll to the bottom and click on Reboot Router. 2.1 From the DD-WRT web GUI screen, on the Administration/Management tab, scroll to the bottom and click on Reboot Router.
-3. After a minute, start a terminal session to your router. +3. After a minute, start a terminal session to your router or use a program like [[PuTTy]].
4. Disconnect the disk from your computer and connect it to your router. 4. Disconnect the disk from your computer and connect it to your router.

Revision as of 18:59, 21 September 2009

Contents

ASUS WL500W

Introduction

This How To is intended to walk someone through configuring a basic USB printer and a USB storage device on their ASUS WL-500W router. The majority of the information comes from the other ASUS WL500 series Wiki's as well as other websites. There are great USB how to articles on the DD-WRT wiki, so if what is listed in this how-to does not suit your needs, search the Wiki and the Forums! And remember Google is your freind!

Firmware

A fresh firmware flash is highly recommended as well as a clearing of the NVRAM. Starting from a clean slate will provide the smallest chance of encountering a random problem as these units can be some-what temperamental. Flash your WL500W router with either the latest DD-WRT Mega firmware (v24 SP2 or later) or the Eko DD-WRT NEWD/NEWD2 Big, or even a mini USB release that includes full USB support in a mini firmware package. Why bother with the reduced functionality of a mini build when this router has 8MB flash?

There are several advantages. The mini is a fraction of the size, yet provides the vast majority of the functionality of the larger builds. For this small sacrifice, you get a much more lean and efficient setup, including...

  • A nearly 5.0MB JFFS2 partition
  • Nearly 90% free system memory on a fully configured system
  • Full USB support, easily enabled from the web GUI (just like Mega)
  • Faster, leaner (Merely observational, but noteworthy)

Initial Prep

  1. Complete your standard WAN, LAN, DHCP configuration so that your router has working Internet access
    Note: This guide will not explain these details, since they are very well documented elsewhere
  2. Under Services, enable:
    Secure Shell (SSHd)
    Telnet (optional, select this if you have no idea how to connect to an SSH server)
    USB modules which you need (Core USB support, UHCI, OHCI, USB 2.0, USB Storage, ext2/ext3, FAT, USB Printing, Automatic drive mount)

For example, if you only want to install Optware packages on 2.0 device you can enable : Core USB support, USB 2.0, USB Storage, ext2/ext3 FS support

  • Save & then Apply Settings
  • Under Administration > Management:
  • Enable JFFS2 Support
  • Clean JFFS2
  • Save & then Apply Settings
  • Reboot Router

Configure the Printer from a Windows/Linux Client

  • From Windows, go to Control Panel, Printers, Add Printer
  • Choose Local, create new port Standard TCP/IP Port
  • Set Device Type to TCP/IP
  • For Hostname or IP field, set to router IP (default is 192.168.1.1)
  • On Vista, do not query printer for driver
  • On next screen, click custom
  • Manually select the printer from list or select Have Disk to add a new printer driver
  • Note: On Vista, many newer HP Deskjet printers can be set to HP Deskjet 990c since no Vista drivers are available from HP.


Print Services

Make sure it is enabled under the Services->USB tab. If it isn't select it, click save, wait 10 secs, then click apply. This will reboot your router. Also make sure Automatic Drive Mount is enabled.

  • In the drop down menu, you have three choices. /mnt /opt /jffs. You will need to select /jffs for the Print server to work, as well as clicking Apply Settings.
  • Plug the USB cord into the router, give it a few seconds and it should recognize. If not, your configuration settings are incorrect, or you do not have a build that is V24 sp2 or later.

The following link will assist with any problems:

(keep in mind that it was composed before SP2, and is for the 520gU, which doesn't matter, but will offer the old-school way of setting it up/diagnosing problems) http://wl520gu.googlepages.com/

Adding USB Storage

This section will be dedicated to both a USB flash drive and other USB storage devices such as hard disks. It is also recommended that the drive be formatted/partitioned to a Linux format (ext2/3). You may use FAT or FAT32, but not only will throughput speeds be slowed down, file sizes are a problem (FAT32 is limited to 4GB file sizes), and you will not be able to use optware or Linux swap. The following is HIGHLY technical and even those with alot of experience may have problems. It takes alot of time and patience to make this work properly and in the fashion you want it to. For novice users, I recommend just sticking to the basics until you understand what really is at play here.

Step 1 is to create partitions and file systems on your USB storage device on another system. A Linux PC is preferred, because you can easily partition flash drives as well as create ext2/ext3 file systems which are much more compatible with DD-WRT. NTFS support is currently (as offsep.15 2009) still in the developmental stage. You can download a bootable Linux distro called Ubuntu http://www.ubuntu.com/ to easily format the storage device.

You must partition and format your drive somewhere other than your router. DD-WRT does not include the commands necessary to perform these functions. Use a Linux boot CD like Knoppix or Ubuntu on your computer. Restart your computer so it boots from the Linux CD.

After Linux boots, connect your USB disk drive.

  • Open a terminal window so you can issue Linux commands.
  • Use the command "sudo su -" to become root.
  • Find out what Linux named your USB disk with the command dmesg | more You're looking for a set of messages that include the name and a description of your hard disk drive.

One line will say SCSI device sd? For the remainder of this text, replace sd? with the name of your disk. Here's an example of what you're looking for (in this case it's a HDD)

scsi0 : SCSI emulation for USB Mass Storage devices
Vendor: WD        Model: 1600BEV External  Rev: 1.05
Type:   Direct-Access                      ANSI SCSI revision: 02
Attached scsi disk sdb at scsi0, channel 0, id 0, lun 0
SCSI device sdb: 312581808 512-byte hdwr sectors (160042 MB)

Partition the disk using the command fdisk /dev/sd? You will be creating three partitions

  • sd?1 - the /opt partition, where Optware will reside.
  • sd?2 - the swap partition, where Linux will swap jobs.
  • sd?3 - the data partition, which you will share via Samba.

It's important to understand everyone's disk drive configuration will be different. If your drive is 40 GB or smaller, use the smaller set of partition sizes below. If your drive is

over 40 GB, you can use the larger set of partition sizes.

Disk 40 GB or less


  • /opt 256 megabytes
  • swap 32 megabytes
  • data remainder of the disk

Disk greater than 40 GB


  • /opt 512 megabytes
  • swap 64 megabytes
  • data remainder of the disk

Now, to get started

Remember, you MUST be logged in as root using the sudo su - command!

This is an example for a USB HDD. Note: The USB HDD MUST be self powered. You can get by this by using a powered hub if using something like a portable HDD

Also, to prevent the HDD from spinning down, go here http://www.dd-wrt.com/wiki/index.php/USB_storage#Prevent_Harddisk_Spindown

Code (the ? are the drive letters, make sure you choose the correct one!) The bold texts are the commands

# fdisk /dev/sd?
Command (m for help): p 
Disk /dev/sd?: 64 heads, 63 sectors, 621 cylinders
Units = cylinders of 4032 * 512 bytes
Command (m for help): n
Command action
  e   extended
  p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-621, default 1):<HIT ENTER>
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-621, default 621): +256M <HIT ENTER>
Command (m for help): n
Command action
  e   extended
  p   primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (197-621, default 197):<HIT ENTER>
Using default value 197
Last cylinder or +size or +sizeM or +sizeK (197-621, default 621): +32M <HIT ENTER>
Command (m for help): n
Command action
  e   extended
  p   primary partition (1-4)
p
Partition number (1-4): 3
First cylinder (197-621, default 197):<HIT ENTER>
Using default value 197
Last cylinder or +size or +sizeM or +sizeK (197-621, default 621): <HIT ENTER>
Command (m for help): t
Partition number (1-4): 2
Hex code (type L to list codes): 82
Changed system type of partition 2 to 82 (Linux swap)      
Command (m for help): p
Disk /dev/sd?: 64 heads, 63 sectors, 621 cylinders
Units = cylinders of 4032 * 512 bytes
Device Boot    Start       End    Blocks   Id  System
/dev/sd?1   *         1       196    395104+  83  Linux
/dev/sd?2           197       262    133056   82  Linux swap
/dev/sd?3           263       458    395136   83  Linux
Command (m for help): w

Format the opt and data partitions, and prepare the swap partition

# mke2fs -j -m 1 -L Optware /dev/sd?1

mke2fs 1.18, 11-Nov-1999 for EXT2 FS 0.5b, 95/08/09
Filesystem label=Optware
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
122112 inodes, 243964 blocks
12198 blocks (5.00%) reserved for the super user
First data block=0
8 block groups
32768 blocks per group, 32768 fragments per group
15264 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376
Writing inode tables: done
Writing superblocks and filesystem accounting information: done

# mke2fs -j -m 1 -L Shared /dev/sd?3

mke2fs 1.18, 11-Nov-1999 for EXT2 FS 0.5b, 95/08/09
Filesystem label=Shared
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
122112 inodes, 243964 blocks
12198 blocks (5.00%) reserved for the super user
First data block=0
8 block groups
32768 blocks per group, 32768 fragments per group
15264 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376
Writing inode tables: done
Writing superblocks and filesystem accounting information: done
# mkswap /dev/sd?2

Now your disk drive is partitioned and formatted for Linux! If you are a windows user, you can either proceed (recommended) using Linux (Ubuntu comes with FireFox already installed) or shut down the Linux distro you used, and make sure the boot disk pops out, as you wll need to get back to windows.


Connecting the Drive to your Router

1. You should have the JFFS file system enabled on your router. On the DD-WRT web GUI screen, the Administration/Management tab contains this option in an area labeled JFFS2 Support. Enable both options and reboot your router. After it reboots, the first option (JFFS2) will remain enabled and the second option (Clean JFFS2) will be disabled.

2. On the DD-WRT web GUI screen, on the Services tab enable the options for:

  • Core USB support
  • USB 2.0 support
  • USB storage support
  • ext2/ext3 File System support

2.1 From the DD-WRT web GUI screen, on the Administration/Management tab, scroll to the bottom and click on Reboot Router.

3. After a minute, start a terminal session to your router or use a program like PuTTy.

4. Disconnect the disk from your computer and connect it to your router.

  • Windows users, you must install a third party linux driver to be able to read the contents of the drive

5. In the terminal session, use the command dmesg | more to insure your disk drive is recognized. Here's an example of what it should look like on a USB HDD

SCSI subsystem driver Revision: 1.00
Initializing USB Mass Storage driver...
usb.c: registered new driver usb-storage
USB Mass Storage support registered.
Journalled Block Device driver loaded
hub.c: new USB device 00:03.1-1, assigned address 2
hub.c: USB hub found
hub.c: 4 ports detected
usb.c: registered new driver usblp
printer.c: v0.13: USB Printer Device Class driver
hub.c: new USB device 00:03.1-1.3, assigned address 3
scsi0 : SCSI emulation for USB Mass Storage devices
Vendor: WD        Model: 1600BEV External  Rev: 1.05
Type:   Direct-Access                      ANSI SCSI revision: 02
Attached scsi disk sda at scsi0, channel 0, id 0, lun 0
SCSI device sda: 312581808 512-byte hdwr sectors (160042 MB)
Partition check:
/dev/scsi/host0/bus0/target0/lun0: p1 p2 p3
WARNING: USB Mass Storage data integrity not assured
USB Mass Storage device found at 3

6. Change to the directory /dev/scsi/host0/bus0/target0/lun0 (Flash drives, use this: /dev/discs/disc0/disc) and list the files there. There should be one entry for the hard disk drive, and one for each of the three disk partitions

# cd /dev/scsi/host0/bus0/target0/lun0
# ls -la
drwxr-xr-x    1 root     root            0 Jan  1 00:00 .
drwxr-xr-x    1 root     root            0 Jan  1 00:00 ..
brw-------    1 root     root       8,   0 Jan  1 00:00 disc
brw-------    1 root     root       8,   1 Jan  1 00:00 part1
brw-------    1 root     root       8,   2 Jan  1 00:00 part2
brw-------    1 root     root       8,   2 Jan  1 00:00 part3

7. Change to the JFFS2 directory, and create directories for mounting the disk partition

# cd /jffs
# mkdir mnt
# mkdir mnt/disk1

8. Test mount your new opt and data partitions. In the terminal window, issue these commands (Flash drives, use this: /dev/discs/disc0/disc /part?)

# mount /dev/scsi/host0/bus0/target0/lun0/part1 /opt
# mount /dev/scsi/host0/bus0/target0/lun0/part3 /jffs/mnt/disk1
# mount
rootfs on / type rootfs (rw)
/dev/root on / type squashfs (ro)
none on /dev type devfs (rw)
proc on /proc type proc (rw)
ramfs on /tmp type ramfs (rw)
/dev/mtdblock/4 on /jffs type jffs2 (rw)
/dev/scsi/host0/bus0/target0/lun0/part3 on /jffs/mnt/disk1 type ext3 (rw)
/dev/scsi/host0/bus0/target0/lun0/part1 on /opt type ext3 (rw)

9. On the DD-WRT web GUI screen, on the Administration/Commands tab, click the Edit button, then enter your disk mount commands (Flash drives, use this: /dev/discs/disc0/disc /part?)

mount /dev/scsi/host0/bus0/target0/lun0/part1 /opt
mount /dev/scsi/host0/bus0/target0/lun0/part3 /jffs/mnt/disk1

Click on Save Startup to store the commands. Your terminal session will be disconnected.

10. From the DD-WRT web GUI screen, on the Administration/Management tab, scroll to the bottom and click on Reboot Router.

11. After a minute, restart your terminal session and issue the mount command again. You should see both of your disk partitions mounted, even after the router has rebooted.

# mount
rootfs on / type rootfs (rw)
/dev/root on / type squashfs (ro)
none on /dev type devfs (rw)
proc on /proc type proc (rw)
ramfs on /tmp type ramfs (rw)
/dev/mtdblock/4 on /jffs type jffs2 (rw)
/dev/scsi/host0/bus0/target0/lun0/part3 on /jffs/mnt/disk1 type ext3 (rw)
/dev/scsi/host0/bus0/target0/lun0/part1 on /opt type ext3 (rw)

Check under the USB tab, and look at the disk info part. Everything should be there.

Example for a USB Flash Drive with only a data and swap partition.

--- /dev/discs/disc0/disc
Block device, size 7.465 GiB (8015314944 bytes)
DOS/MBR partition map
Partition 1: 7.009 GiB (7526098944 bytes, 14699412 sectors from 63)
Type 0x83 (Linux)
Ext3 file system
UUID BC30D9C0-1CEB-4BD0-A3D8-48641B26A8F0 (DCE, v4)
Volume size 7.461 GiB (8011386880 bytes, 1955905 blocks of 4 KiB)
Partition 2: 462.8 MiB (485291520 bytes, 947835 sectors from 14699475)
Type 0x82 (Linux swap / Solaris)
Blank disk/medium
Status: Mounted on /mnt

INSTALLING OPTWARE ON YOUR DISK

After JFFS is enabled and disk partitions are mounting, you can download and install the Optware packages that provide more Linux functionality to the router. These will be installed onto the hard disk drive, NOT on the router itself. Remember the /opt directory on your router actually resides on the disk drive.

1. Use the command ipkg update to update your ipkg repositories

# ipkg update 
Downloading http://ipkg.nslu2-linux.org/feeds/optware/ddwrt/cross/stable/Packages ...
Connecting to ipkg.nslu2-linux.org[140.211.166.82]:80 
Packages             100% |**********************************************|   259 KB 00:00:00 ETA
Done.

2. Now download the Optware installation script from the web to the /tmp directory

# wget http://www.3iii.dk/linux/optware/optware-install-ddwrt.sh -O - | tr -d '\r' > /tmp/optware-install.sh

3. Execute the Optware installation script you just downloaded. It will take some time to download and configure everything, so verify it starts running, then take a break and come back in ten or fifteen minutes.

# sh /tmp/optware-install.sh
Checking system config ...
Using 192.168.1.1 as default gateway.
Using the following nameserver(s):
nameserver 192.168.1.30
Warning: local nameserver is different than gateway!
Check config or enter:
sed -i s/192.168.*/192.168.1.1/ /tmp/resolv.conf
to correct this.
Installing package uclibc-opt_0.9.28-13_mipsel.ipk ...
Connecting to ipkg.nslu2-linux.org[140.211.166.82]:80
uclibc-opt_0.9.28-12 100% |***********************************************|   832 KB 00:00:00 ETA
Updating /opt/etc/ld.so.cache
/opt/sbin/ldconfig: can't create /opt/etc/ld.so.cache~ (No such file or directory)
Installing package ipkg-opt_0.99.163-9_mipsel.ipk ...
Connecting to ipkg.nslu2-linux.org[140.211.166.82]:80
ipkg-opt_0.99.163-9_ 100% |***********************************************| 75896    00:00:00ETA
Downloading http://ipkg.nslu2-linux.org/feeds/optware/ddwrt/cross/stable/Packages.gz
Inflating http://ipkg.nslu2-linux.org/feeds/optware/ddwrt/cross/stable/Packages.gz
Updated list of available packages in /opt/lib/ipkg/lists/optware
Successfully terminated.
Installing uclibc-opt (0.9.28-12) to /opt/...
Downloading http://ipkg.nslu2-linux.org/feeds/optware/ddwrt/cross/stable/uclibc-opt_0.9.28-12_mipsel.ipk
package uclibc-opt suggests installing ipkg-opt
Configuring uclibc-opt
Updating /opt/etc/ld.so.cache
Successfully terminated.
Installing ipkg-opt (0.99.163-9) to /opt/...
Downloading http://ipkg.nslu2-linux.org/feeds/optware/ddwrt/cross/stable/ipkg-opt_0.99.163-9_mipsel.ipk
Configuring ipkg-opt
Successfully terminated.

4. Now install the busybox packages including links for busybox commands

# /opt/bin/ipkg-opt install busybox-base
# /opt/bin/ipkg-opt install busybox
# /opt/bin/ipkg-opt install busybox-links

5. In your terminal session, update your default executable PATH to look for the new Optware software before the DD-WRT software

# export PATH=/opt/bin:/opt/sbin:${PATH}

ACTIVATING SWAP

1. Insure the swap partition is formatted correctly by using the Optware busybox mkswap command

# /opt/bin/busybox mkswap /dev/scsi/host0/bus0/target0/lun0/part2

2. Use the free command to verify your swap space is active

# free
             total         used         free       shared      buffers
Mem:        13048        12564          484            0          908
Swap:        72252            0        72252
Total:        85300        12564        72736

3. Using the DD-WRT web GUI screen, go to the Administration/Commands screen, and click 'Edit'. Add the busybox swapon command below everything else so swap will be enabled whenever the router reboots. Click on Save Startup to save your startup commands. Your terminal session will be disconnected

/opt/bin/busybox swapon /dev/scsi/host0/bus0/target0/lun0/part2

4. Using the DD-WRT web GUI screen, go to the Administration/Management tab, scroll to the bottom, and click on Reboot Router

5. After a minute, restart your terminal session, and use the free command again. This verifies your swap space is activated whenever the router reboots

INSTALLING SAMBA

1. Using the terminal session, use the Optware ipkg-opt command to update your repository, remove any Samba packages installed with Optware, then download and install the Samba software

# /opt/bin/ipkg-opt update 
Downloading http://ipkg.nslu2-linux.org/feeds/optware/ddwrt/cross/stable/Packages.gz
Inflating http://ipkg.nslu2-linux.org/feeds/optware/ddwrt/cross/stable/Packages.gz
Updated list of available packages in /opt/lib/ipkg/lists/optware
Successfully terminated.
# /opt/bin/ipkg-opt remove samba
# /opt/bin/ipkg-opt install samba2

2. Samba uses a default Linux user name of nobody but DD-WRT doesn't provide this user name by default. The workaround is to add this user to the DD-WRT user/password file every time the router reboots.

3. Using the DD-WRT web GUI screen, go to the Administration/Commands screen. Add the following command to the bottom of your startup commands

echo "nobody:*:65534:65534:nobody:/var:/bin/false" >>/tmp/etc/passwd

4. Using the DD-WRT web GUI screen, go to the Administration/Management tab, scroll to the bottom, and click on Reboot Router'

5. After a minute, restart your terminal session, and check the user/password file to insure the nobody user has been added following a reboot

# grep nobody /tmp/etc/passwd
nobody:*:65534:65534:nobody:/var:/bin/false

6. Create a shared data directory on your hard disk drive

# cd /jffs/mnt/disk1
# mkdir share
# chmod 777 share


7. Edit the Samba configuration file to add this share at the bottom of the file

# cd /opt/etc/samba
# cat >>smb.conf  <<EOF
[disk1]
   comment = DD-WRT shared disk
   path = /jffs/mnt/disk1/share
   public = yes
   writable = yes
   printable = no
   create mask = 0666
EOF


8. Edit the Samba configuration file to:

8.1) change the default workgroup name. Yours should match whatever is on all your other computers.

8.2) Define the range of IP addresses allowed

8.3) Announce itself on your network


# vi smb.conf
[global]
# workgroup = NT-Domain-Name or Workgroup-Name
  workgroup = MyWorkgroupName
# server string is the equivalent of the NT Description field
  server string = DD-WRT Samba Server
# This option is important for security. It allows you to restrict
# connections to machines which are on your local network. 
  hosts allow = 192.168.1.  127.
# Cause this host to announce itself to local subnets here
  remote announce = 192.168.1.255
:wq
#


9. Test the Samba configuration by manually starting the two Samba daemons

# /opt/sbin/nmbd -D
# /opt/sbin/smbd -D


10. From your computer, browse your network. Go to the address bar, enter two back-slashes followed by the IP address of your router and press ENTER. You should see your shared disk drive

\\192.168.1.1

11. If you can see the drive, create a test directory and a test file within that directory from your computer.

12. Using the DD-WRT web GUI screen, go to the Administration/Commands screen. Add the following command to the bottom of your startup commands

/opt/etc/init.d/S80samba start


13. Using the DD-WRT web GUI screen, go to the Administration/Management tab, scroll to the bottom, and click on Reboot Router

14. After a minute, browse your network again to insure the drive is shared after the router reboots

ALL THE STARTUP COMMANDS

When you're finished, your router startup commands should look something like this

mount /dev/scsi/host0/bus0/target0/lun0/part1 /opt
mount /dev/scsi/host0/bus0/target0/lun0/part3 /jffs/mnt/disk1
/opt/bin/busybox swapon /dev/scsi/host0/bus0/target0/lun0/part2
echo "nobody:*:65534:65534:nobody:/var:/bin/false" >>/tmp/etc/passwd
/opt/etc/init.d/S80samba start


All data was copied and modified from http://forums.slickdeals.net/showthread.php?p=14205147#post14205147