OpenWrt Forum Archive

Topic: sam's firmware collections for TP-Link WR703N

The content of this topic has been archived between 6 Feb 2018 and 1 May 2018. Unfortunately there are posts – most likely complete pages – missing.

Admin note: the user provided firmwares in this thread are reported to brick recent TP-Link WR703N hardware revisions! The images are unmaintained and unofficial, it is not advised to use them.





Just like it's 11N big brothers WR703N contains a 400MHz CPU, 32MB memory, 4MB flash storage and what's more is one usb 2.0 port. This makes it perfect for a few exciting projects due to its extreme low power consumption and miniature size.

More hardware information can be found on the wiki page and forum discussion. I will list couple of projects around WR703N which I have been working on. Hopefully someone will find them useful.

I created these firmwares with those criteria in mind:
high performance
low maintenance
minimal user action

Changes since 1229, aka The Big Squeeze
* More file system (including cd/dvd-rom) support in nas firmware
* replaced user space nfs server by kernel one to save memory in nas firmware
* mobile phone usb tethering support
* usb printer support
* firewall improvement
* multi wan (uplinks) support
* Easy switch Network profile
* Improved web GUI
* Disabled wifi client due to security concerns.
* Shortened hostname
* AP on by default as a management interface.
* Unique AP SSID so we can have multiple devices running at the same time
* Squeezed it really hard so I can put more stuff in
* Make the AP key same for both nas and pulseaudio firmware
* Added a status page for pulseaudio so you can get essential information like sample rate like a breeze
* Added nfs client support for pulseaudio firmware. It's now possible to mount remote nfs share
* Updated the format page on nas firmware. It should work much better with huge hard disk.



Firmware List

NAS (network attached storage)
Key Features:
* High throughput 9-10MB/s read and write FTP
* NFS server (kernel mode) support with 9MB/s read and 6.5MB/s write throughput.
* FTP, NFS and Wifi AP works out of box with internet sharing
* OpenVPN server/client with lzo support.
* Easy to use web page to format disk with a single click
* Excellent file system support including ext2/3, (v)fat, ntfs
* CD/DVD-ROM with ISO9660, Joliet and UDF disk support
* usb printer support
* support mounting iso images via loop module
* multiple wan/uplinks and usb tethering support for mobile phone
* Intuitive web gui for switching between 3 most used network profile without the risk of 'bricking' the router by mistake.


PulseAudio (audio streaming much like airplay)
Key Features:
* Universal usb 1.0/1.1/2.0 sound card/speakers support
* Plug and Play. Sound card/Speakers can be added/removed whenever you want
* Default sample rate set to 44.1Khz if the sound card/speakers supports it so you can have the best music playback possible
* Physical volume buttons (up/down/mute) control playback volume
* WebOS support (tested on TouchPad)
* Very low delay and smooth playback with good wifi network
* All-in-one pulseaudio status page covering sinks, sink inputs, clients and logs
* usb printer support
* multiple wan/uplinks and usb tethering support for mobile phone
* Intuitive web gui for switching between 3 most used network profile without the risk of 'bricking' the router by mistake.
* NFS client support
* PREEMPT kernel geared for audio playback

(Last edited by jow on 10 Jan 2013, 15:37)

NAS firmware

This is a firmware for those who want to share out their usb hard drive over local network. Setting up a NAS like a pro has never been easier thanks to configuration-free ftp, nfs. Pre-configured WiFi HotSpot (AP) allows any wifi devices/clients to access files on the usb disk instantly and better still those wifi devices/clients will be able to surf the internet or access resources on the local home network at the same time. This is all done without any messing around configuration files on WR703N, no file to edit, no commend line to type.

Ever dreaming of access files out and about? No problem. OpenVPN server/client with lzo compression support is build in. Due to security reasons I dare not to pre-configure openvpn for you. Please head to openwrt's excellent wiki for setting up openvpn.

This firmware requires minimal configuration but do read through the rest of this post before try it out!!!!

Requirements:
* A router that has dhcp support that is connected to your home local network (Any out of shelf router bought recently should do)
* Ethernet cable with one end connected to the lan port of the above router and the other end connected to the lan port of WR703N
* usb 2.0 hard disk (formatted as a single ext3 partition preferable but not necessary)
* 5V usb power adapter. You will need a power adapter with sufficient current to power your hard disk. Personally I am using one 5V 1.0A power adapter and usb hard drive works fine.

Flash the firmware:
Get version 28854-1229 (aka The big Squeeze) firmware from here http://xbox-remote.googlecode.com/files … actory.bin
Flash it with the usual way either with web upgrade if you are using original firmware or mtd command if you are using openwrt.

First Boot:
The first time you boot WR703N after you flashed the firmware please make sure the usb hard disk is disconnected from WR703N till the router is initialised, i.e. steady blue LED. After you have steady blue LED open the following address http://nas/ using your web browser. You should see a system information page. If everything goes all right you can then plug in your usb hard disk. If your hard disk is formatted as a single ext3 partition then you don't need to do anything otherwise please head to the "How to format usb disk" section.

Configure network/wifi client the easy way
See my post here for details on how to switch between 3 predefined network profile and among other things like enable wifi client.

How to format usb disk:
Make sure you have copied out all files from your usb hard disk as this process will destroy any existing partition and file system on your usb hard disk. This process cannot be undone.

Open the following link http://nas/cgi-bin/webif/power-format.sh from your web browser and following the instruction. When all done it will automatically reboot WR703N. The time it takes for the format process varies. It takes less than 1 minute to format a slow usb 2.0 memory stick.

How to access files within local network
After the router is initialised, i.e. steady blue LED, with usb hard disk connected, you can access files on the usb hard disk using any ftp client pointing to ftp://nas/ with

username:   root
password:    root

If your hard disk have multiple partitions they will be automatically mounted on folder disk-xy where "x" will be letters staring from a and "y" will be the number of that partition. For example to access the 2nd partition you can just navigate into folder disk-a2.

CD/DVD-ROM will be mounted on folder cdrom-y where "y" will be the number of that cd/dvd-rom starts from "0". For example, the first cd/dvd-rom will be mounted on cdrom-0.

FTP Clients
If you are using windows you can try NetDrive or ExpanDrive which can mount any ftp server as a windows drive which hides away the ftp bits therefore make files on the usb drive available to any software that does not have ftp support.

Modern Linux distribution like Ubuntu has excellent ftp support and you should not have any problem with ftp using default file manager, for example with nautilus working on ftp is no different than working on a local disk.

Android user should try ES File Explorer which has very good ftp support.

XBMC (the ultimate media player) does support ftp protocol natively.

NFS Clients

To access nfs all you need to do is pointing the nfs client to nas:/mnt/sda1. Linux supports nfs natively and you should be able to find quite a few windows clients as well. The latest XBMC across all platforms should support nfs natively.

Due to limited CPU power the nfs write throughout is not as good as I expected even though it beats the read throughout of many commercial nas selling twice the price. I would recommend using ftp to upload really big files.

WiFi HotSpot (AP) access
The WiFi HotSpot is pre-configured to

SSID:  NAS-xxxx
KEY:    UEC7wzdu

where xxxx refers the last 4 digits of the device's mac address which is printed on the back of WR703N. Make sure your wifi client support 11G or 11N WPA/WPA2 protocol.

Multiple Wan/Uplinks and USB Tethering Support
If your mobile phone supports usb tethering then you can use WR703N to share out your mobile phone's internet via the built in AP. It cannot be easier!! Just plug in the usb cable and enable the usb tethering option on your mobile and off you go.

I know that quite a lot phones nowadays can do wifi tethering but remember the wifi chip inside is not as good as the one inside WR703N. It will dramatically reduce the battery of the mobile phone. By using usb tethering you removed all the problems and besides you can charge your mobile phone at the same time.

Multiple wan is enabled by default for all wan/uplink interfaces.

Compatibility
I would really like it to work with every single usb hard disk out there. But in reality some works better. I noticed that one of my usb-ide converter (USB to Parallel-ATA bridge made by sunplus) keeps disconnecting under heavy uploading (writing) via ftp. I have't found out why but its likely to do with kernel module that shipped with openwrt. If you experienced similar problems I would suggest swap another usb (adapter) hard disk to see any difference.


Some nice pictures
http://xbox-remote.googlecode.com/files/router.jpg
http://xbox-remote.googlecode.com/files/wr703n-01.jpg
http://xbox-remote.googlecode.com/files/wr703n-02.jpg


Q & A
Q: What's the performance like?
A: With ftp and a 2.5 inch usb 2.0 hard disk I can achieve around 10MB/s read and 9MB/s write throughput. CPU is a bit tight at maximum transfer rate. I can get similar read throughput with nfs but only 6.5MB/s write throughput possibly because of the limited CPU power.

Q: Why not samba? FTP is really ancient
A:  Samba is not really designed for embedded environment like WR703N. Samba is huge and slow. With the same hardware I can only achieve 7MB/s read and 6MB/s write throughput.

Q: Can I use it to stream 1080p HD videos?
A: You certainly can. But be aware that maximum bitrate you can stream probably will be capped to 80Mbps which is probably the hard limit of 100Mbps network.

Q: Can I just unplug the usb hard disk whenever I feel like?
A: Absolutely not!! If you unplug the usb hard disk without proper unmount process then expect missing/corrupted file/folders, unable to access them via ftp (i.e. empty ftp folder) and kidnapped by aliens :). If you really need to unplug the usb hard disk you should go to http://nas/cgi-bin/webif/status-usb.sh and click unmount for all mounted partition. You should only attempt to unplug it after the unmount process is done for each and every partition though most likely only /dev/sda1.

Q: How do I found out status of my usb hard disk, like available space?
A: Open this link http://nas/cgi-bin/webif/status-basic.sh and look for /dev/sda1 and it will till you  free space (in KiB) and total space in (KiB) for your usb hard disk

Q: Can I use opkg install additional packages?
A: In short no. All packages are cherry picked and only the needed bits ended up in this firmware. 4MB flash really makes it challenging to squeeze everything you need inside.

Q: Do you offer warranty?
A: This is a hobby project and no warranty is offered.

Q: How can I use nfs?
A: All you need to is mount openwrt-nas:/mnt

Q: What's the root password?
A: The root password is "root" without quote.

Q: Does this firmware support 3G modem?
A: No. I don't have any 3G modem. However usb tethering (via mobile phone) is supported since firmware version 28854-1229.

Q: Do you have a full list of the features of this firmware?
A: The changes I made are too many to list. Most important features include but not limited to
    * configuration free ftp, nfs
    * support EFI GUID partition in addition to dos partition
    * authentication-free web server
    * automatic mount usb hard disk with ext2/3, (v)fat, ntfs file system
    * usb cd/dvd-rom with ISO9660, Joliet and UDF disk support
    * added loop module so you could mount iso images on WR703N and possibly share it out via ftp/nfs.
    * can format the disk from web page
    * all nfs, ftp process will be restarted when hard disk umounted using the web page
    * pre-configured network, wifi and network sharing on wifi AP works out of box
    * openvpn with ssl and lzo support build in
    * support usb 1.1/2.0 hard disk
    * multiple wan/uplinks support with usb tethering
    * usb printer support
    * easy to use web gui to switch most common network profiles

Q: What packages are installed?
A:  Full list of packages

base-files
base-files-network
block-mount
busybox
crda
dnsmasq
dropbear
e2fsprogs
haserl
hotplug2
ip
iptables
iptables-mod-conntrack
iptables-mod-conntrack-extra
iptables-mod-ipopt
iptables-mod-nat
iw
kernel
kmod-ath
kmod-ath9k
kmod-ath9k-common
kmod-button-hotplug
kmod-cfg80211
kmod-crypto-aes
kmod-crypto-arc4
kmod-crypto-core
kmod-fs-exportfs
kmod-fs-ext3
kmod-fs-isofs
kmod-fs-nfs-common
kmod-fs-nfsd
kmod-fs-ntfs
kmod-fs-udf
kmod-fs-vfat
kmod-input-core
kmod-input-gpio-buttons
kmod-input-gpio-keys-polled
kmod-input-polldev
kmod-ipt-conntrack
kmod-ipt-conntrack-extra
kmod-ipt-core
kmod-ipt-ipopt
kmod-ipt-nat
kmod-ipt-nathelper
kmod-leds-gpio
kmod-lib-crc16
kmod-lib-crc-itu-t
kmod-loop
kmod-mac80211
kmod-nls-base
kmod-nls-utf8
kmod-scsi-cdrom
kmod-scsi-core
kmod-tun
kmod-usb2
kmod-usb-core
kmod-usb-net
kmod-usb-net-cdc-ether
kmod-usb-net-rndis
kmod-usb-ohci
kmod-usb-printer
kmod-usb-storage
libblkid
libc
libcom
libext2fs
libgcc
libip4tc
liblzo
libnl-tiny
libpthread
librpc
librt
libuci
libuuid
libwrap
libxtables
mtd
nfs-kernel-server
openvpn
opkg
p910nd
portmap
resize2fs
restorefactory
swconfig
tune2fs
uci
uhttpd
vsftpd
webif
wireless-tools
wpad-mini

Q: When I try "mount_root" under fail safe I saw some error messages like this. What's wrong?

root@(none):/# mount_root
/sbin/mount_root: line 1: pi_include: not found
/sbin/mount_root: line 1: pi_include: not found
/sbin/mount_root: line 1: set_jffs_mp: not found
/sbin/mount_root: line 1: determine_root_device: not found
/sbin/mount_root: line 1: can't create /.extroot.md5sum: Read-only file system
switching to jffs2

A: Nothing to worry about. The mount_root command tries to load every scripts under /lib/preinit/ and 50_determine_usb_root which comes from extra-root does not like to be loaded that way, that's all. It should mount jffs2 partition just fine.

(Last edited by s7mx1 on 2 Jan 2012, 15:46)

PulseAudio firmware

Pulseaudio is a sound server which gets installed on machines running on linux like latest Ubuntu. It is less known for people outside linux though you can install it on Windows. This firmware enables you streaming lossless audio cross wifi network which is very similar to airplay but with extreme cheap price tag.

This firmware is extremely easy to use. Optionally you will need to configure the wifi client which is just one click away.

Requirements:
* A 802.11g or 802.11n wifi router with dhcp support
* usb sound card or speakers
* any powered usb port can deliver 500 mA current or a usb battery pack

Flash the firmware
Get  version 28854-1229 (aka The big Squeeze) firmware from http://xbox-remote.googlecode.com/files … actory.bin and flash the usual way either with web upgrade if you are using original firmware or mtd command if you are using openwrt.

WiFi HotSpot (AP) access
The WiFi HotSpot is pre-configured to

SSID:  PulseAudio-xxxx
KEY:    UEC7wzdu

where xxxx refers the last 4 digits of the device's mac address which is printed on the back of WR703N. Make sure your wifi client support 11G or 11N WPA/WPA2 protocol.

Configure network/wifi client the easy way
See my post here for details on how to switch between 3 predefined network profile and among other things like enable wifi client.

Plug the usb sound card/speakers
Just plug in your usb sound card/speakers and as soon as the WR703N is initialised (with steady blue LED light) and it will be ready to go.

It's truly plug and play. You can plug in/out whenever you like. You can swap to a totally different sound card/speakers. The firmware should be smart enough to sort it out for you.

Physical Volume buttons
If your sound card/speakers has volume button (up/down/mute) . They should in most cases work straight out of the box. You can use them to increase, reduce or mute the current sound playing.

PulseAudio Status Page
I reckon this will be the most useful/visited page of this entire firmware. It will show detailed information on pulseaudio sinks, sink inputs, clients and also logs related to pulseaudio. You will be able to easily find out what sample rate the current sound card is running (under sinks section) and how many usb sound card is configured (card0, card1 etc under sinks section). The page is refreshed automatically every one minute.

The pulseaudio status page can be accessed from here

If your's does not work this is the best place to visit. This is a typical pulseaudio status page screenshoot

http://xbox-remote.googlecode.com/files/pulse-status-01.png

and here

http://xbox-remote.googlecode.com/files/pulse-status-01.png

If your status page looks like the following it means that your usb sound card/speakers are not detected or supported.

http://xbox-remote.googlecode.com/files/pulse-status-03.png


PulseAudio Clients
To actually play sound out from sound card/speakers attached to WR703N you will need a pulseaudio capable client to send audio to it. To make it easier for you I have gathered some sample configuration which can be downloaded from http://xbox-remote.googlecode.com/files … g-1229.zip.

linux based clients
It is really ease to set up with most recent linux distribution as pulseaudio is chosen by the default audio system. In most cases all you need to do is to drop file client.conf-external (in the linux folder of the extracted zip file) to /etc/pulse/client.conf if you want to set this globally or to ~/.pulse/client.conf to affect current user alone. You will need to log out and then log back in for it to take effects.

WebOS
WebOS is very similar to modern linux which uses pulseaudio by default however the pulseaudio shipped with it is missing some key components that prevent gapless integration.  You will need a rooted webos device and copy over the file client.conf-external (in the webos folder of the extracted zip file) to /etc/pulse/client.conf. You will need to restart your webos device for it to take effects.

Due to the bizarre way Palm/HP implemented pulseaudio on webos, the volume control on webos device will not work with WR703N however this should not be a problem if you have physical volume buttons on your sound card/speakers. The notification sound will not work as well. But other than that it works beautifully. I have been watching youtube 4oD tv programs on my touchpad (WebOS 3.02) which streams to WR703N on the same wifi network. During more than one hour playback I have not noticed any audio/video out of sync problems which is very common for similar wifi streaming solutions. This is excellent result to say at least.

mpd
MPD as a music system deserve to be highlighted here. It's small, efficient, runs on a large range of small embedded hardware and of course your PC. The very best feature of mpd makes it stand out from other pulseaudio capable music clients is the ability to re-sample audio internally.

The re-sampling process will kick in if the pulseaudio was given a 44.1KHz audio stream when the sound card only supports 48KHz sample rate playback. The hardware that WR703N runs unlike CPUs inside your PC such that it does have a floating point unit which make is really hard for re-sampling. Therefore you will likely to hear 'pops' occasionally when re-sampling is going on. If the mpd is running on a capable machine (CPU with a floating point) the re-sampling process can be shifted from WR703N to mpd which can yields better quality playback.

In the mpd folder of the extracted zip file you will find 3 audio output sample files. The output-resample-on-server.conf means re-sample will be done on WR703N if any, output-resample-to-44100.conf/output-resample-to-48000.conf means MPD will force re-sample to 44.1Khz and 48Khz respectively. You could just copy the contents of the corresponding file to your main mpd configuration file and restart mpd for it to take effects.

Please make sure that the sample rate defined in output section of your mpd configuration file matches that hardware sample rate of your usb sound card/speakers. The sample rate that your usb sondcard/speakers runs at can be found out easily by checking this page http://pulseaudio/cgi-bin/webif/power-pulseaudio.sh
If you have a spare machine and you want to utilise the CPU power on it to do the heavy lifting for re-sampling so that you can have smooth playback whatever the sample rate of the audio source, then you will need a pulseaudio relay. The idea is to have another pulseaudio running on the same network preferable on 100Mb/s wired and point every pulseaudio clients to that pulseaudio replay machine instead of WR703N, it then forward the (re-sampled, mixed) audio stream to WR703N.

I am currently running a pulseaudio replay with Atom D510 @1.5GHz, the CPU usage is about 10% of a single core for resampling (ffmpeg method) 44.1Khz audio to 48Khz. I believe any  modern CPUs (ARM or X86) with floating point unit should do the job. The machine runs pulseaudio replay does not need any sound card as sound is actually played on WR703N. I would recommend using pulseaudio version 1.1 if possible.

Sample pulseaudio replay server configuration files ( in linux -> pulse-replay sub folder of the extracted zip file) which can be copied over to /etc/pulse/. 

To help detecting when WR703N becomes available I have crated a monitoring script and its accompany upstart service file. It works great for the pulseaudio replay. You will need to copy pulse-monitor.conf (in linux -> pulse-monitor sub folder ) to /etc/init/ and copy
pulse-monitor.sh in the same folder to  /etc/init.d/ then start the service by

initctl start pulse-monitor

Some nice pictures

http://xbox-remote.googlecode.com/files/wr703n-03.jpg
http://xbox-remote.googlecode.com/files/wr703n-04.jpg

[b] Q & A
Q: What's the CPU usage of the running pulseaudio?
A: The CPU usage is about 12% and load is about 0.5 for puseaudio playing back 48Khz audio streaming without re-sampling. The resampling however does not increase much cpu usage.

Q: What's the power consumption like?
A:  With running pulseaudio I measured 1.5Watt from main power socket. This translates to about 240mA current consumption (assume 80% efficiency of the power adapter) with my Sweex usb speakers. I have been running WR703N with the same speakers setup with 4x 2700mAh batteries for 8 hours straight.

Q: My wifi network has high latency and playback is choppy. Can I adjust the buffer size?
A: You can go to http://pulseaudio/cgi-bin/webif/system- … aemon.conf from your browser and increase default-fragment-size-msec value. Save it and then apply changes then reboot it. However it may not solve all the problems and audio delay will be increased as a result. This can cause audio/video out of sync if the value is set too high. It would be best to improve your wifi network, i.e. investing better wifi router.

Q: My wifi coverage/signal is weak. What should I do?
A: Move around WR703N to get the best reception. You should also consider adding additional antenna or get a wifi range extender.

Q: The sound is choppy. What's wrong?
A: Move WR703N near to the wifi router, if this solves the problem then see weak wifi signal Q&A just above. Make sure that there is plenty free CPU resources on the pulseaudio client (mpd), pulseaudio replay sever if you have one. You may want to adjust default-fragment-size-msec if there is a high latency on your wifi network. It's worth to also look into getting a less congested  wifi channel and avoid and other interference from other 2.4G wifi devices (like bluetooth or microwave etc).

Q: What usb sound card/speakers does it support?
A: Virtually any usb sound card/speakers should work with it. But be aware some usb sound card/speakers may consume more power in which case you will need a usb power adapter that can deliver more current. If you just need a cheap usb speakers I would recommend Sweex GO Stereo Speaker Bar, Creative A40 or Logitech Black S150.

Q: I am planning to use the lan port of WR703N to provide internet access to my pc/laptop, is it doable?
A: If the wifi client setting is setup up correcting then you should be able to surf internet with the lan port of WR703N automatically. It should not intefere with the pulseaudio wifi streaming though all traffic go through the wifi interface. I have been able to watching 720p east ender show that way and music streamed wirelessly to pulseaudio plays smoothly.

(Last edited by s7mx1 on 30 Dec 2011, 14:53)

How to configure the network the easy way

Configuring network especially changing to something vastly different is not an easy task. There are so many elements involved: network, wifi, dhcp and firewall. Even if you are very familiar with openwrt you are likely to run into trouble or missed something.

Added to the fact that latest WR703N is notorious at providing accessible TTL pins I feel strongly that by providing a robust and easy to switch network profile/network will benefit all end users of WR703N.

After a bit study I realised that with only one ethernet port the end user will most likely to use one of the three network setups with WR703N which will be explained later. I exposed those 3 network setup with a shiny new web gui page so you can switch between them with a single click. This page can be accessed from

http://nas/cgi-bin/webif/power-network.sh  for nas firmware
http://pulseaudio/cgi-bin/webif/power-network.sh  for pulseaudio firmware

Setting up is straightforward but please read through the rest of the post to fully understand the meaning and possible consequence of each setting. After you click the "Set network mode" button it will need to restart itself so the changes can take effect.

Wifi Station
You need to provide the upstream wifi router's SSID and KEY if you want WR703N to connect to it via wifi.

If you put in wrong combination of upstream wifi router's SSID and KEY or upstream wifi router is not accessible, refuse to connect etc, this will ruin the build-in AP on WR703N since the wifi ap share the same hardware as the wifi client. In that scenario the wifi chip will keep fast switching channels in the hope of connecting to the up stream wifi router and as a result the build-in AP's channel will keep switching as well which makes it impossible for any clients to connect to.

By default SSID is set to "Disabled" which disables the wifi client.

Unique Device ID
If you have multiple WR703N running on the same network with the same firmware,  for example you have 2 WR703N powered by my pulseaudio firmware running on the same network. Then it is advisable to turn on the "Unique Device ID" features which will use the last 4 letters of the mac address of each device. This unique device id string will be append to the hostname of each device and you will be able to use the unique-fied hostname to access each individual device, for example if your last 4 letters of the mac address is ab12 and after you turned on "Unique Device ID" you will be able to access the device with hostname like pulseaudio-ab12  (for pulseaudio firmware) or nas-ab12 (for nas firmware) instead of pulseaudio/nas.

By default its disabled.


Explanation of the 3 network setup/mode

1) Mode 1:
    The ethernet port (eth0) of WR703N acts like lan port. Together with wifi AP (wlan0) it forms a bridged lan. This bridged lan sits on a private network of 172.16.0.0/24 (nas) or 172.16.10.0.24 (pulseaudio). DHCP server is turned on on this bridged lan so you can connect your pc to either the lan port of WR703N or the wifi AP.
    Optionally you can set wifi station so it will connect to upstream wifi AP as a client. This interface wlan1 will act like an wan port.


2) Mode 2:
   The ethernet port (eth0) of WR703N acts like wan port which you need to connect to upstream (e.g. another router).
   Wifi AP (wlan0) sits on a private network of 172.16.0.0/24 (nas) or 172.16.10.0.24 (pulseaudio). DHCP server is turned on on wifi AP so you can connect your pc via wifi.
    Optionally you can set wifi station so it will connect to upstream wifi AP as a client. This interface wlan1 will act like another wan port.

3) Mode 3:
   Wifi AP (wlan0) sits on a private network of 172.16.0.0/24 (nas) or 172.16.10.0.24 (pulseaudio). DHCP server is turned on on wifi AP so you can connect your pc via wifi.
   The ethernet port (eth0) of WR703N acts like lan port. Together with wifi client (wlan1) it forms a WDS bridged lan. This bridged lan will have an ip addressed assigned by the upstream wifi AP (the one wlan1 is connected to). DHCP is not running on this wds bridged lan and any dhcp requested is handled by up stream wifi router directly. The good thing about this wds bridged lan is that you can think the ethernet port of WR703N as an extended lan port of the upstream wifi router.

Pulseaudio firmware uses mode 1 by default and nas firmware uses mode 2 by default.

What about the usb tethering?
If you connected your mobile phone with WR703n and enabled usb tethering the usb network interface USB0 will automatically appear which acts as wan port. No configuration is need for this.

(Last edited by s7mx1 on 30 Dec 2011, 14:26)

reserved

Very nice! I'm trying it out now. Can you please do a full package list and post it as reference for us lesser dudes? smile

great work! WR703N is best choice for offline download ,it consumes so little power.

Lennong wrote:

Very nice! I'm trying it out now. Can you please do a full package list and post it as reference for us lesser dudes? smile

I had to remove the package info from the firmware and therefore "opkg list" will show nothing with this nas firmware. This is to save some precious firmware space.  Let me know how it goes.

Here is the full package list:

base-files-network
base-files
blkid
block-mount
busybox
crda
dnsmasq
dropbear
e2fsprogs
fdisk
haserl
hotplug2
iptables-mod-conntrack
iptables-mod-nat
iptables
iw
kernel
kmod-ath9k-common
kmod-ath9k
kmod-ath
kmod-button-hotplug
kmod-cfg80211
kmod-crypto-aes
kmod-crypto-arc4
kmod-crypto-core
kmod-fs-ext4
kmod-input-core
kmod-input-gpio-buttons
kmod-input-gpio-keys-polled
kmod-input-polldev
kmod-ipt-conntrack
kmod-ipt-core
kmod-ipt-nat
kmod-leds-gpio
kmod-lib-crc16
kmod-mac80211
kmod-nls-base
kmod-nls-utf8
kmod-scsi-core
kmod-tun
kmod-usb-core
kmod-usb-storage
kmod-usb2
libblkid
libc
libcom_err
libext2fs
libgcc
libip4tc
liblzo
libnl-tiny
libpthread
librpc
librt
libuci
libuuid
libwrap
libxtables
mtd
openvpn
opkg
portmap
resize2fs
restorefactory
swconfig
tune2fs
uci
uhttpd
unfs3
vsftpd
webif
wireless-tools
wpad-mini

a build with transmission big_smile ?

s7mx1 wrote:

NAS firmware

This is a firmware for those who want to share out their usb hard drive over local network. Setting up a NAS like a pro has never been easier thanks to configuration-free ftp, nfs. Pre-configured WiFi HotSpot (AP) allows any wifi devices/clients to access files on the usb disk instantly and better still those wifi devices/clients will be able to surf the internet or access resources on the local home network at the same time. This is all done without any messing around configuration files on WR703N, no file to edit, no commend line to type.

Ever dreaming of access files out and about? No problem. OpenVPN server/client with lzo compression support is build in. Due to security reasons I dare not to pre-configure openvpn for you. Please head to openwrt's excellent wiki for setting up openvpn.

This firmware requires minimal configuration but do read through the rest of this post before try it out!!!!

Requirements:
* A router that has dhcp support that is connected to your home local network (Any out of shelf router bought recently should do)
* Ethernet cable with one end connected to the lan port of the above router and the other end connected to the lan port of WR703N
* usb 2.0 hard disk (formatted as a single ext3 partition preferable but not necessary)
* 5V usb power adapter. You will need a power adapter with sufficient current to power your hard disk. Personally I am using one 5V 1.0A power adapter and usb hard drive works fine.

Flash the firmware:
Get the firmware from here http://xbox-remote.googlecode.com/files … actory.bin
Flash it with the usual way either with web upgrade if you are using original firmware or mtd command if you are using openwrt.

First Boot:
The first time you boot WR703N after you flashed the firmware please make sure the usb hard disk is disconnected from WR703N till the router is initialised, i.e. steady blue LED. After you have steady blue LED open the following address http://openwrt-nas using your web browser. You should see a system information page. If everything goes all right you can then plug in your usb hard disk. If your hard disk is formatted as a single ext3 partition then you don't need to do anything otherwise please head to the "How to format usb disk" section.

How to format usb disk:
Make sure you have copied out all files out from your usb hard disk as this process will destroy any existing partition and file system on your usb hard disk. This process cannot be undone.

Open the following link http://openwrt-nas/cgi-bin/webif/system-format.sh from your web browser and following the instruction. When all done it will automatically reboot WR703N. The time it takes for the format process varies. It takes less than 1 minute to format a slow usb 2.0 memory stick.

How to access files within local network
After the router is initialised, i.e. steady blue LED, with usb hard disk connected, you can access files on the usb hard disk using any ftp client pointing to ftp://openwrt-nas with

username:   root
password:    root

FTP Clients
If you are using windows you can try NetDrive or ExpanDrive which can mount any ftp server as a windows drive which hides away the ftp bits therefore make files on the usb drive available to any software that does not have ftp support.

Modern Linux distribution like Ubuntu has excellent ftp support and you should not have any problem with ftp using default file manager, for example with nautilus working on ftp is no different than working on a local disk.

Android user should try ES File Explorer which has very good ftp support.

XBMC (the ultimate media player) does support ftp protocol natively.

WiFi HotSpot (AP) access
The WiFi HotSpot is pre-configured to

SSID:  OpenWrt-NAS
KEY:    j2*C71wzdu

Make sure your wifi client support 11G or 11N WPA/WPA2 protocol.

Some nice pictures
http://xbox-remote.googlecode.com/files/router.jpg
http://xbox-remote.googlecode.com/files/wr703n-01.jpg
http://xbox-remote.googlecode.com/files/wr703n-02.jpg


Q & A
Q: What's the performance like?
A: With ftp and a 2.5 inch usb 2.0 hard disk I can achieve around 10MB/s read and 10MB/s write throughput. CPU is a bit tight at maximum transfer rate.

Q: Why not samba? FTP is really ancient
A:  Samba is not really designed for embedded environment like WR703N. Samba is huge and slow. With the same hardware I can only achieve 7MB/s read and 6MB/s write throughput.

Q: Can I use it to stream 1080p HD videos?
A: You certainly can. But be aware that maximum bitrate you can stream probably will be capped to 80Mbps which is probably the hard limit of 100Mbps network.

Q: Can I just unplug the usb hard disk whenever I feel like?
A: Absolutely not!! If you unplug the usb hard disk without proper unmount process then expect missing/corrupted file/folders, unable to access them via ftp (i.e. empty ftp folder) and kidnapped by aliens smile. If you really need to unplug the usb hard disk you should go to http://openwrt-nas/cgi-bin/webif/status-usb.sh and click unmount for all mounted partition. You should only attempt to unplug it after the unmount process is done for each and every partition though most likely only /dev/sda1.

Q: How do I found out status of my usb hard disk, like available space?
A: Open this link http://openwrt-nas/cgi-bin/webif/status-basic.sh and look for /dev/sda1 and it will till you  free space (in KiB) and total space in (KiB) for your usb hard disk

Q: Can I use opkg install additional packages?
A: In short no. All packages are cherry picked and only the needed bits ended up in this firmware. 4MB flash really makes it challenging to squeeze everything you need inside.

Q: Do you offer warranty?
A: This is a hobby project and no warranty is offered.

Q: How can I use nfs?
A: All you need to is mount openwrt-nas:/mnt

Q: What's the root password?
A: The root password is "root" without quote.

Q: Do you have a full list of the features of this firmware?
A: The changes I made are too many to list. Most important features include but not limited to
    * configuration free ftp, nfs
    * support EFI GUID partition in addition to dos partition
    * authentication-free web server
    * automatic mount usb hard disk with ext3 file system
    * can format the disk from web page
    * all nfs, ftp process will be restarted when hard disk umounted using the web page
    * pre-configured network, wifi and network sharing on wifi AP works out of box
    * openvpn with ssl and lzo support build in
    * support only usb 2.0 hard disk

Q: What packages are installed?
A:  Full list of packages

base-files-network
base-files
blkid
block-mount
busybox
crda
dnsmasq
dropbear
e2fsprogs
fdisk
haserl
hotplug2
iptables-mod-conntrack
iptables-mod-nat
iptables
iw
kernel
kmod-ath9k-common
kmod-ath9k
kmod-ath
kmod-button-hotplug
kmod-cfg80211
kmod-crypto-aes
kmod-crypto-arc4
kmod-crypto-core
kmod-fs-ext4
kmod-input-core
kmod-input-gpio-buttons
kmod-input-gpio-keys-polled
kmod-input-polldev
kmod-ipt-conntrack
kmod-ipt-core
kmod-ipt-nat
kmod-leds-gpio
kmod-lib-crc16
kmod-mac80211
kmod-nls-base
kmod-nls-utf8
kmod-scsi-core
kmod-tun
kmod-usb-core
kmod-usb-storage
kmod-usb2
libblkid
libc
libcom_err
libext2fs
libgcc
libip4tc
liblzo
libnl-tiny
libpthread
librpc
librt
libuci
libuuid
libwrap
libxtables
mtd
openvpn
opkg
portmap
resize2fs
restorefactory
swconfig
tune2fs
uci
uhttpd
unfs3
vsftpd
webif
wireless-tools
wpad-mini

Excellent! Thanks!

It runs very nice, and no nasty high load like other homebuilt I've tried.

A couple of things:
I cannot get my Huawei E173 to fly even though I get driver hook. I also tried to to firmware upgrade from web ui, but it flips out and reboots.

A part from those issues I get really good throughput, up to 35Mbit to a USB flash disk via ftp. That was more than I expected, nice! I put the router in another room, tried out XBMC and then streamed a 2h video powered from a 1600mAh battery I had lying around! smile

Lennong wrote:

Excellent! Thanks!

It runs very nice, and no nasty high load like other homebuilt I've tried.

A couple of things:
I cannot get my Huawei E173 to fly even though I get driver hook. I also tried to to firmware upgrade from web ui, but it flips out and reboots.

A part from those issues I get really good throughput, up to 35Mbit to a USB flash disk via ftp. That was more than I expected, nice! I put the router in another room, tried out XBMC and then streamed a 2h video powered from a 1600mAh battery I had lying around! smile

No 3G modem support in this firmware I am afraid. I use my phone to do the tethering and don't have a 3G modem.

The web ui firmware upgrade is bit flaky. I found mtd method is more reliable. You can either transfer the firmware over via ftp or scp then run

mtd -r write /path/to/firmware firmware

I assume you are streaming it via wifi, then 35Mbit/s is indeed a good throughput.

s7mx1 wrote:
Lennong wrote:

Excellent! Thanks!

It runs very nice, and no nasty high load like other homebuilt I've tried.

A couple of things:
I cannot get my Huawei E173 to fly even though I get driver hook. I also tried to to firmware upgrade from web ui, but it flips out and reboots.

A part from those issues I get really good throughput, up to 35Mbit to a USB flash disk via ftp. That was more than I expected, nice! I put the router in another room, tried out XBMC and then streamed a 2h video powered from a 1600mAh battery I had lying around! smile

No 3G modem support in this firmware I am afraid. I use my phone to do the tethering and don't have a 3G modem.

The web ui firmware upgrade is bit flaky. I found mtd method is more reliable. You can either transfer the firmware over via ftp or scp then run

mtd -r write /path/to/firmware firmware

I assume you are streaming it via wifi, then 35Mbit/s is indeed a good throughput.

I'm gonna solder on the UART pins anyway so no biggie. Yes, I was surprised over the throughput, as well as the ultra low power usage, amazing combination!

I've tried to recreate your build, but I get a too big build and fail to generate image. I assume you are chopping out bits and pieces here and there? Do you have any pointers on paths to go when chopping it?

My goal is to have extroot on a stick, FAT support,  3G and multiWAN in one package, prefereably managed by either LuCI or x-Wrt. I have a tiny powered 4-port USB-hub that will fit inside the router and a couple of stripped flash memories that also will fit in there, I will flip the exisiting USB port and connect it after the hub and possibly glue another USB port next to it. The result will be two internal USB disks and one external + MultiWAN with fall-over to 3G. It will be the perfect travelcompanion for sharing and viewing media for both business and pleasure! I did managed to fit all that inside my Ralink 3050F based wr512-3gn with 4MB flash, but it seems like the Atheros chip takes more precious space for the basic functionality.

@Lennong
post some pictures after you finish your project.
nice idea, by the way

maurer wrote:

@Lennong
post some pictures after you finish your project.
nice idea, by the way

Will do!

maurer wrote:

a build with transmission big_smile ?

Probably I can squeeze transmission in with the expenses of openvpn. Will do it at later time but now I really want to release the pulseaudio firmware.

Lennong wrote:

I've tried to recreate your build, but I get a too big build and fail to generate image. I assume you are chopping out bits and pieces here and there? Do you have any pointers on paths to go when chopping it?

My goal is to have extroot on a stick, FAT support,  3G and multiWAN in one package, prefereably managed by either LuCI or x-Wrt. I have a tiny powered 4-port USB-hub that will fit inside the router and a couple of stripped flash memories that also will fit in there, I will flip the exisiting USB port and connect it after the hub and possibly glue another USB port next to it. The result will be two internal USB disks and one external + MultiWAN with fall-over to 3G. It will be the perfect travelcompanion for sharing and viewing media for both business and pleasure! I did managed to fit all that inside my Ralink 3050F based wr512-3gn with 4MB flash, but it seems like the Atheros chip takes more precious space for the basic functionality.

@Lennong

I will be surprised if you can squeeze every package I listed without major changes to the source code. I have spent hours and hours on minimising space out of my home gateway (TP-Link WR841ND shown in the first picture) which uses very similar CPU and it also got 4MB flash. I managed to reuse the work done on WR841ND and apply them almost straight to WR703N. The svn repository of patches (against trunk version 28854) can be found  at https://xbox-remote.googlecode.com/svn/ … runk-28854
You can check out by doing

svn co https://xbox-remote.googlecode.com/svn/trunk/embeded-system/openwrt/nas/trunk-28854 openwrt-nas

where you will find openwrt configuration file "config-nas" which you need to copy to .config in your openwrt root folder. patches can be found in "patches" folder which you need to apply by "patch -p0".

Remember those patches are against trunk revision 28854. If you want to have a working station wifi (i.e. using WR703N connect to other wireless AP) you will need to downgrade "package/mac80211" to revision 28294.

For your plan I would suggest:
1) Remove CONFIG_CLEAN_IPKG=y in the .config so that you will retain installed package information
2) Build openvpn as a module or remove it (1.3MB raw disk space) if you don't need it so that there is room for ppp  which has a lot dependencies
3) Set every configuration file you need beforehand so it works straight out of the box for example, 3G auth, overlay or root on usb disk etc. Have a look at my patches to get an idea.

The reason AR71xx platform uses so much space I guess is because it takes around 830KB raw space for the kernel wifi driver and its dependency alone. The reason I choose xwrt over luci is purely because of the size.

Good luck to your project.

s7mx1 wrote:
Lennong wrote:

I've tried to recreate your build, but I get a too big build and fail to generate image. I assume you are chopping out bits and pieces here and there? Do you have any pointers on paths to go when chopping it?

My goal is to have extroot on a stick, FAT support,  3G and multiWAN in one package, prefereably managed by either LuCI or x-Wrt. I have a tiny powered 4-port USB-hub that will fit inside the router and a couple of stripped flash memories that also will fit in there, I will flip the exisiting USB port and connect it after the hub and possibly glue another USB port next to it. The result will be two internal USB disks and one external + MultiWAN with fall-over to 3G. It will be the perfect travelcompanion for sharing and viewing media for both business and pleasure! I did managed to fit all that inside my Ralink 3050F based wr512-3gn with 4MB flash, but it seems like the Atheros chip takes more precious space for the basic functionality.

@Lennong

I will be surprised if you can squeeze every package I listed without major changes to the source code. I have spent hours and hours on minimising space out of my home gateway (TP-Link WR841ND shown in the first picture) which uses very similar CPU and it also got 4MB flash. I managed to reuse the work done on WR841ND and apply them almost straight to WR703N. The svn repository of patches (against trunk version 28854) can be found  at https://xbox-remote.googlecode.com/svn/ … runk-28854
You can check out by doing

svn co https://xbox-remote.googlecode.com/svn/trunk/embeded-system/openwrt/nas/trunk-28854 openwrt-nas

where you will find openwrt configuration file "config-nas" which you need to copy to .config in your openwrt root folder. patches can be found in "patches" folder which you need to apply by "patch -p0".

Remember those patches are against trunk revision 28854. If you want to have a working station wifi (i.e. using WR703N connect to other wireless AP) you will need to downgrade "package/mac80211" to revision 28294.

For your plan I would suggest:
1) Remove CONFIG_CLEAN_IPKG=y in the .config so that you will retain installed package information
2) Build openvpn as a module or remove it (1.3MB raw disk space) if you don't need it so that there is room for ppp  which has a lot dependencies
3) Set every configuration file you need beforehand so it works straight out of the box for example, 3G auth, overlay or root on usb disk etc. Have a look at my patches to get an idea.

The reason AR71xx platform uses so much space I guess is because it takes around 830KB raw space for the kernel wifi driver and its dependency alone. The reason I choose xwrt over luci is purely because of the size.

Good luck to your project.

Very nice and handy info there, thanks! It actually looks quite logical if one looks into the config and patch files, will dig into it! smile

Hi,
I have built the firmware with basic USB storage support but not much space left for FTP/NFS things, can you share your ".config" ?

lazyfai wrote:

Hi,
I have built the firmware with basic USB storage support but not much space left for FTP/NFS things, can you share your ".config" ?

@lazyfai

See post #16

i also tried to build some time ago a nas image but the hdd fsiled to mount.
do you use 2.5 hdd only powered from 703n usb ? or external powered?

maurer wrote:

i also tried to build some time ago a nas image but the hdd fsiled to mount.
do you use 2.5 hdd only powered from 703n usb ? or external powered?

@maurer

I can power the 2.5 HDD from 703N's usb port providing 703N gets its power from a 5v, 1A usb power adapter which comes with my HTC mobile phone.  I previously tried a 5V, 0.75A usb power adapter but the hard disk struggles to power up.

(Last edited by s7mx1 on 11 Dec 2011, 13:34)

@s7mx1

I saw your (I think) message on raspi forum and joined this forum. Eagerly waiting for your pulse audio firmware. Any idea when you will be releasing it.

Generalenthu wrote:

@s7mx1

I saw your (I think) message on raspi forum and joined this forum. Eagerly waiting for your pulse audio firmware. Any idea when you will be releasing it.

@Generalenthu

Yes. that was me.

I just got physical volume buttons on my usb speakers working, now I can adjust the pulseaudio output volume by pressing the  volume up/down button on my speakers which is really cool.

I will try to release it early next week (it's Sunday night local time), so stay tuned.

Really nice to see you dotting the i's and crossing the t's. I ordered my unit mid last week and is yet to be shipped. On a related note, is there enough flash memory to include mpd in the firmware. All my music is on a nas which could be mounted on boot along with a remote mpd database. This may be impractical though.

To me the obvious alternative is to just run pulseaudio making it discoverable. I guess it could be connected to mpd running elsewhere. Anyways, I am a linux n00b; pardon me if it sounds ignorant.

I am planning to use a USB soundcard plugged into wr703n and connect it to aux in an ipod dock. Ideally would like to be able to draw power for wr703n from ipod male connector, but am not finding suitable cables.

Anyways, this setup should give Sonos a serious run for its money!

s7mx1 wrote:
Lennong wrote:

I've tried to recreate your build, but I get a too big build and fail to generate image. I assume you are chopping out bits and pieces here and there? Do you have any pointers on paths to go when chopping it?

My goal is to have extroot on a stick, FAT support,  3G and multiWAN in one package, prefereably managed by either LuCI or x-Wrt. I have a tiny powered 4-port USB-hub that will fit inside the router and a couple of stripped flash memories that also will fit in there, I will flip the exisiting USB port and connect it after the hub and possibly glue another USB port next to it. The result will be two internal USB disks and one external + MultiWAN with fall-over to 3G. It will be the perfect travelcompanion for sharing and viewing media for both business and pleasure! I did managed to fit all that inside my Ralink 3050F based wr512-3gn with 4MB flash, but it seems like the Atheros chip takes more precious space for the basic functionality.

@Lennong

I will be surprised if you can squeeze every package I listed without major changes to the source code. I have spent hours and hours on minimising space out of my home gateway (TP-Link WR841ND shown in the first picture) which uses very similar CPU and it also got 4MB flash. I managed to reuse the work done on WR841ND and apply them almost straight to WR703N. The svn repository of patches (against trunk version 28854) can be found  at https://xbox-remote.googlecode.com/svn/ … runk-28854
You can check out by doing

svn co https://xbox-remote.googlecode.com/svn/trunk/embeded-system/openwrt/nas/trunk-28854 openwrt-nas

where you will find openwrt configuration file "config-nas" which you need to copy to .config in your openwrt root folder. patches can be found in "patches" folder which you need to apply by "patch -p0".

Remember those patches are against trunk revision 28854. If you want to have a working station wifi (i.e. using WR703N connect to other wireless AP) you will need to downgrade "package/mac80211" to revision 28294.

For your plan I would suggest:
1) Remove CONFIG_CLEAN_IPKG=y in the .config so that you will retain installed package information
2) Build openvpn as a module or remove it (1.3MB raw disk space) if you don't need it so that there is room for ppp  which has a lot dependencies
3) Set every configuration file you need beforehand so it works straight out of the box for example, 3G auth, overlay or root on usb disk etc. Have a look at my patches to get an idea.

The reason AR71xx platform uses so much space I guess is because it takes around 830KB raw space for the kernel wifi driver and its dependency alone. The reason I choose xwrt over luci is purely because of the size.

Good luck to your project.

I've finally got some time for testing your config. It should be doable to rip out OpenVPN and throw in PPP instead. When you say downgrade the mac80211 package, how do I do that?