A computer or user can communicate with the CH3SNAS using a range of protocols.
Servers
SMB/CIFS server This provides the basic file server functionality on the local-area network.
FTP server This is mainly for allowing the files to be accessed via the Internet. Such access will normally require some configuration of the home router/gateway as general access from the outside to devices on the LAN is normally filtered by the gateway’s firewall function. A typical router (e.g. Linksys WRT54G) can be configured to direct incoming ftp requests (port 21) to the IP address of the NAS. The NAS, in turn, can be configured via the browser interface to only allow access to some directories, to request a user/password or to give only read access.
Print server Technically this is part of the SMB/CIFS protocol suite. It allows the CH3SNAS to act as a print server on the local network.
uPnP (Universal Plug-and-Play) This is a set of protocols which allows the CH3SNAS to be discovered as a source of multimedia (music, video, pictures) and to allow a uPnP-enabled rendering device such as a network-enabled video renderer to see and access the available media. Probably the most common current uPnP-enabled rendering devices are Windows PCs running Microsoft Media Player.
iTunes server Essentially iTunes is, as a networking protocol, Apple’s proprietary counterpart to uPnP. Common iTunes rendering devices are computers running
HTTP server (limited) There is a small HTTP server to generate and process the HTML forms used to configure the CH3SNAS. That configuration interface can be accessed via a web browser using a computer on the local-area network (or if desired – mind the security – from the Internet). This HTTP server process is known as “Webs” and is from GoAhead. Users interested in using an HTTP server for other uses should consider installing the Lighttpd package under fun_plug.
DHCP server In case the CH3SNAS is used in a network without a DHCP server, the CH3SNAS can be configured to provided all devices with a unique IP-address. This will presumably be seldom used, but can help if you want to connect the CH3SNAS to, for example, a stand-alone laptop. The laptop sees a more or less fully functioning network without having to temporarily reconfigure the laptop to use static IP address.
Clients
NTP client The CH3SNAS can use the Network Time Protocol to get the current time from NTP servers on the internet.
DHCP client Although the CH3SNAS can be bound to a fixed IP address, it can also get its IP address from a local DHCP server.
E-mail client The CH3SNAS can be configured to automatically send e-mail to its administrator to notify about certain events.
FTP client The CH3SNAS can be configured to automatically download files at scheduled times from an FTP server.
HTTP client The CH3SNAS can be configured to automatically download files at scheduled times from an HTTP server.
Client/server
Telnet (requires fun_plug) The CH3SNAS contains support for establishing telnet sessions, whereby a remote user can login to the machine via an unsecure connection.
SSH (requires fun_plug) SSH is a modern successor to telnet. SSH fixes security problems in telnet by encrypting traffic between both machines.
Available firmware and upgrades
Conceptronic regularly provides updates of the firmware (embedded software, or if you like: operating system and servers) inside the CH3SNAS. These are available for download at Conceptronic.net. Test versions (betas and “release candidates”) are also made available for a more technical audience.
You may want to see our overview on all versions to see the new features and if any major issues have been reported. There is also a guide on upgrading the firmware available here
This tutorial is deprecated and should only be used with fonz fun_plug 0.5! Please check the tutorial page for updated tutorials on this topic!
PHP is a server-side scripting language that is widely used for developing dynamic web sites. PHP allows custom software to run on the server (in our case the NAS) hosting the web site.
PHP scripts are typically embedded in HTML pages. When a browser requests such a HTML page, the scripts are executed by the PHP add-in module of the HTTP server (here: lighttpd). Usually the PHP code inserts some additional HTML content into the version of the HTML page that gets sent to the browser. The browser (“client”) itself thus doesn’t see the scripts which were executed on the server.
In this tutorial we assume that the lighttpd HTTP server is already installed on the NAS (see tutorial on installing lighttpd On bigger systems, PHP is sometimes used in combination with an Apache server (instead of the leaner lighttpd) and an SQL database. This widely-used bundle of software tools is sometimes known as LAMP: Linux, Apache, MySQL, PHP. The installation of MySQL on the NAS is covered in another tutorial.
With regular HTML pages, your web server can only provide static content: all users see the same set of pages and the pages don’t change until someone (e.g. manually) updates the stored HTML pages. A server-side scripting language like PHP helps if you need to add dynamic content, such as a visitor counter (see example code below) or maybe news-of-the-day.
Public domain as well as proprietary PHP software is available for various applications including:
public domain
personal photo galleries (e.g. Gallery (Gallery 2 also requires mySQL) or Dalbum)
Uli kindly provided a packaged version of php for the NAS in his repository.
PHP is not installed as part of fun_plug by default, but you should already have downloaded a copy as part of the general tutorial on how to download, install and upgrade packages. Let’s make sure you still have the latest version (as Uli upgrades his repository regularly). Note that the rsync command could take a while because it can download multiple packages depending on what is already in your /ffp/pkg/packages directory. Also note that you have to install curl additionally! As of PHP 5.2.17 you also have to install libiconv which is in fonz repository.
If you have a version of php installed that is outdated, you will need to run in upgrade mode instead (see here for help). Still, make sure you have curl and libiconv installed!
PHP is configured with a file called php.ini. You thus need to copy one of the example-files from /ffp/etc/examples/ to /ffp/etc/ while renaming it to php.ini:
Restart lighttpd to load the new configuration – including the PHP module. This can be done by rebooting the entire NAS or using
cd/ffp/start
sh lighttpd.sh restart
Testing PHP
You can test your installation of PHP by placing a file called index.php in the server.document-root directory (e.g. /mnt/HD_a2/www/pages) with the following content:
<H1>This is normal HTML</H1>
But the <U>following table</U> is generated by PHP:
<?phpphpinfo();?>
Now go to the website on your NAS using the configured address and e.g. http://CH3SNAS:80. You should see a long page with configuration information for the PHP server as shown in the picture). This output is generated by the function call “phpinfo()“.
Using PHP
Let us now go back to a somewhat less intimidating and possibly even boring example: the standard “Hello World” in PHP. Copy and paste the following text to a file named helloworld.php and store it in the server.document-root:
<?phpecho"Hello World";?>
Then go to the website on your NAS using the configured address and port and add /helloworld.php (the address may look like this: http://CH3SNAS/helloworld.php).
The following example shows a more complete web page (adapted from the lighttpd tutorial). It adds 3 features:
visitors are greeted using their IP address (using the $_SERVER['REMOTE_ADDR'])
any viewing of the web page triggers updates to a file (counter.txt) stored on the NAS
the web site uses counter.txt to show how often the page has been viewed
This requires three fragments of PHP code, each enclosed between and ?> tokens:
<?php$fname="counter.txt";// The file where the number of hits gets storedif(!file_exists($fname)){// If file doesn't exist..$countfile=fopen($fname,"a");// .. create it$counter=0;// .. and initialize hit counter to zero}else{$countfile=fopen($fname,"r+");// Open for read and write$counter=fgets($countfile,100);// Load number of hits by reading first 100 bytesrewind($countfile);// Reset the file pointer to overwrite old counter value}$counter++;// Increment counter by onefputs($countfile,$counter);// Write the new value to the filefclose($countfile);// Close the File?>
<html>
<head>
<title>Hello PHP World!</title>
<style type="text/css">
<!--
h1 {text-align:center; font-family:Arial, Helvetica, Sans-Serif;}
h2 {text-align:center;}
p {text-indent:20px;}
-->
</style>
</head>
<body bgcolor = "#ffffcc" text = "#0000ff">
<h1>Welcome, <?phpecho$_SERVER['REMOTE_ADDR'];?>, <BR>to the PHP world</h1>
<h2>This page was viewed <?phpecho$counter;?> times</h2>
<p><A HREF="page1.html">Link to page1</A></p>
<p><A HREF="page2.html">Link to page2</A></p>
<p><A HREF="https://nas-tweaks.net/">external link</A></p>
</body>
</html>
The first and by far the longest PHP section looks to see if a file name counter.txt exists in the server.document-root If it doesn't exist, it creates it and decides there have been zero hits so far ($counter=0). Note that variables in PHP do not need to be declared and start with a $ and that no clear distinctions are made between numeric and string variables: conversions are done on demand.
If the file already exists, the first 100 bytes (should be enough for a decent number) are copied into $counter. Then $counter is incremented, written to the counter.txt file and the file is closed.
The remaining HTML code is similar to the code in the lighttpd tutorial. In the level one header (H1), a string is generated by a PHP echo command which prints the IP address of the remote client. In the level two header the value of $counter that was previously computed is used.
Optional: Using shared extensions
PHP allows the use of additional modules, so called "shared extensions". E.g. there is calendar for calendar-related functions. The modules are stored in /ffp/lib/php/extensions/no-debug-non-zts-20060613/.
Available modules
You can list the available modules using:
ls -al /ffp/lib/php/extensions/no-debug-non-zts-20060613/*.so
As of version php-5.2.6-3 the following modules are available:
And add below the extension you want. E.g. to enable the calendar extension, you add:
; Linux extensions
extension=calendar.so
;extension=ctype.so
;extension=ftp.so
Afterwards you have to restart lighttpd to load the changes.
Demo of calendar extension
To see whether or not calendar was indeed loaded, you could run the PHPinfo.php script shown above.
Or run a script calendar.php containing:
<?phpfor($year=2000;$year<2011;$year++){$days=cal_days_in_month(CAL_GREGORIAN,2,$year);echo"February in $year has $days days <BR>";}?>
Notes
PHP and HTML
A page with PHP code is generally stored on disk as HTML code with one or more fragments of embedded PHP. When the HTTP sends delivers the actual page to the browser ("client") the PHP sections have been interpreted and removed. In general they have been replaced by additional HTML code (see the counter example above). The receiving client thus does not see the PHP code and cannot even directly know whether PHP has been used to generate the served page.
Short open tag
If you want to use "<?" instead of "<?php" to mark the start of PHP code fragments, you need to change change the value of "short_open_tag" (line 131) in /ffp/etc/php.ini file to On:
short_open_tag = On
This is a matter of taste and convenience. When you distribute PHP code for use in other servers, you need to keep in mind that they may be set to short_open_tag = Off.
File extensions and default file names
HTML pages containing PHP code should have a .php extension. This tells the lighttpd server to pass the code via the PHP preprocessor before sending it across the network.
When you access the lighttpd server without providing a specific file name, it successively checks for files in the server.document-root directory(typically /srv/www/pages/) named
index.php
index.html
index.htm
default.htm
This is defined in a parameter called index-file.names in the lighttpd.conf file. As the list suggests, if you have both an index.php file and an index.html file in the same directory, the index.php file has precedence. If you explicitly ask for index.html, however, you will get that file instead of index.php.
Stateless
Note that after a page has been processed, when a new request for the same page is made by the same or another client, all computation starts from scratch: PHP is "stateless" in the sense that variables such as $counter are all lost after the page request has been completed. So the only way to track state in a PHP server is to store information in a file (as in counter.txt above), to store information in a database (another tutorial), or to assume the client maintains any relevant information between one page request and the next one.
Learning the PHP language
There are numerous books (printed and online) on PHP. See for example php.net.
Dealing with PHP errors
PHP syntax errors messages are appended to the Lighttpd error.log file. So if you are experimenting with- or developing PHP code, it can help to keep an eye on that file.
This article assumes fun_plug is installed. It only explains what busybox is and how it works, so don’t expect to learn new useful Linux tricks.
Busybox calls itself “The Swiss Army Knife of Embedded Linux”. It is a single program that provides over 60 commonly used commands that are normally available on the Linux command line. Examples of such commands:
In a standard Linux distribution these commands are separate programs. Busybox implements these programs (occasionally with somewhat reduced options) as a single executable program. Hence the “Swiss army knife” slogan. This saves space and maybe loading time, which is important for embedded Linux implementations.
To see what programs are handled by Busybox on the CH3SNAS you can use the following command within an ssh (PuTTY) session:
cd/bin
ls-l|more
The piping via more allows you to view the folder listing produced ls at your own pace. Use the spacebar to see more of the listing, and q to quit the more utility. The output will contain dozens of lines like:
Essentially this says that, for example, the file /bin/ls is a symbolic link (“->”) to the program /bin/busybox. You can get a feel for for this by trying
busybox ls-l/bin/busybox
yourself and seeing that it performs the same as typing ls -l /bin/busybox directly. Typing busybox without any parameters gives information like the program version and a list of all supported commands.
The CH3SNAS is a Network-Attached Storage device manufactured and marketed under the Conceptronic brand. This brand is owned by the 2L Alliance based in The Netherlands.
The CH3SNAS is essentially a small file server which you connect to a local TCP/IP network via an ethernet cable. In a home network, the CH3SNAS will typically be connected via a UTP cable to a router. The CH3SNAS can contain up to two 3.5 inch SATA drives (which can be sold bundled with the actual CH3SNAS). The drives can have any capacity (typically 0.2-1 TBytes/drive). If two drives are used (for extra capacity or to enable RAID 0 and 1 modes), they do not need to have equal storage capacity or be of the same brand.
The CH3SNAS is internally a small, networked Linux computer with one or more shared (logical or physical) network drives. The CH3SNAS is primarily intended to store files that can be accessed by a computer on the local network.
One specific application highlighted by the vendor is to stream audio or video from the CH3SNAS to other networked devices such as laptops or a Playstation 3. Alternatively it can centrally store media, which can then be copied to smaller portable devices (Conceptronics markets their storage product line with the slogan Grab’n’Go).
Files can optionally be accessed across the internet (via an FTP server, which is disabled by default for security reasons). As a bonus, the CH3SNAS can also act as a print server, thus converting a printer with a USB port into a printer than can be shared across the local-area network.
CH3SNAS Usage
The CH3SNAS caters to a wide range of users:
average home PCs users with a wired or wireless network
users interested in computing technology (and thus interested in trying out more advanced featues)
tweakers who are willing to spend significant amounts of time to tune/adapt the (and may thus actually extend the system – which is internally Linux-based).
More information on target users, target usage, and interoperability with various operating systems can be found in the article on Usage-Scenarios.
Hard disk configurations
The CH3SNAS can be operated with a single or dual 3.5 inch hard disk of any capacity or brand. When the system is initialized, the user has the option of creating partitions (volumes) which can be on a single disk or span both disks. A list and discussion of the possible storage configurations can be found in Configuration Options.
Hardware
Externally, the CH3SNAS has a Gigabit Ethernet connector, a USB port for connecting a printer, a connector for the supplied power supply, a single on/off button, four status LEDs and a somewhat hidden reset button.
The internals obviously consist of the hard disks themselves (which may come with the CH3SNAS, but can also be purchased seperately) and a circuit board that houses the processor and memory chips which form the small computer which contols the hardware and provides the numerous software features. Unlike destop PCs or laptops, the computer is not hardware upgradeable. The central chip is a complex System-on-Chip manufactured by Marvell (Marvell Feroceon 88F5182). More hardware details and photos of all key components can be found in Hardware.
Software
The software running on the embedded processor core is mainly needed to support the following features:
SMB/CIFS (file server for a LAN)
FTP (file server for usage across the Internet)
Print server (connect a USB printer to the network)
uPnP (multimedia server)
iTunes server (Apple’s multimedia server)
More software details on these protocols and a more extensive list of modules can be found in [[CH3SNAS:Software]] [[XXX]]. The software also includes a configuration interface which be access via a web browser (similar to the way routers are typically configured).
This Linux-based software is stored in an on-board non-volatile Flash memory which allows the CH3SNAS to boot even when the hard disks are not yet operational. The softwarecan be updated to newer firmware versions via the web-based configuration interface. In addition, the CH3SNAS (as well as various similar devices) have options to allow the more technically inclined to add scripts or even additional servers without having to recompile code or even without having to modify the content of the Flash (via the so-called fun_plug technique).
References
More detailed versions of the above abridged sections can be found on separate pages in this blog:
Usage – target users, target usage, and interoperability
The CH3SNAS uses the Linux ext2 file system, and thus cannot preserve data which was written to the hard disks (e.g. using Microsoft Windows) before these are inserted into the CH3SNAS: reformatting will normally be necessary for both a new and a used hard disk. Lets assume the drives have storage capacities of respectively C1 and, if a 2nd drive is present, C2 Gigabytes. The CH3SNAS supports a number of different ways in which to format individual hard disk partitions using the built-in web interface:
Standard – each drive can be accessed as a different volume (results in a volume of size C1 and, if present, C2)
JBOD – Just-a-Bunch of Disks, allowing both drives to be accessed as a single large volume (of size C1+C2)
RAID 0 – files are “striped” over both drives, thus potentially giving higher performance (resulting in a single volume of size 2*min(C1,C2))
RAID 1 – files are automatically mirrored at the sector level on both drives, thus allowing data recovery if either drive fails. RAID 1 results in a single volume of size min(C1,C2). Note that this occupies 2*min(C1,C2) of total disk space.
Configurations 2, 3, and 4 require a dual-drive system. A RAID 0 or 1 volume can be no larger than the smallest of the two drives, but can optionally be configured to be smaller than min(C1,C2). Any remaining space on both drives becomes accessible as a single JBOD volume.
Consequently, a dual-drive system can support up to 6 alternative configuration options:
Two Standard volumes
A single large JBOD volume
A single RAID 0 volume (if both drives have the same size, and no JBOD volume is needed)
A single smaller RAID 1 volume (if both drives have the same size, and no JBOD volume is needed)
A RAID 0 volume and a JBOD volume
A RAID 1 volume and a JBOD volume (see screen shot)
It may be possible to create other working configurations (such as RAID 0 + RAID 1 + JBOD), but these cannot be created using the built-in configuration interface and will probably not have been tested.
Under Windows, volumes can be assigned user-selectable drive letters (such as R: for a RAID).
The CH3SNAS seems to be targetted at home users with enough experience to set up a basic wired- or wirless network. Some effort was clearly invested in making the configuration of the system painless. The device and its manual thus do quite some handholding for the novice user to get the device to work as intended. The device and its manual unfortunately do not provide guidelines for novice users about suitable backup strategies or ways to safeguard their data. This may be current practice for this type of product, but is a problem when you give novice users the storage capacity to e.g. save all their home videos on a single drive or device. [IMO vendor should do something about this in printed manual, but volunteer to create a page on [[Data backup do’s and don’ts]]?]
The device does contain some optional features and settings (such as an FTP server or options for setting IP addresses) which are suited for more technically oriented users.
For the real enthusiasts (hobbyists, students, IT professionals) the CH3SNAS and some of its competitors provide
Compatibility with Microsoft Windows
The CH3SNAS is simplest to access for PCs running a version of Windows. This is because the access protocols are based on a set of proprietary Microsoft standards (MSB/CIFS) which are supported by Windows itself. Thus, to a PC running Microsoft Windows, the NAS looks exactly like another PC with one or more shared drives (see screenshot) and possibly a shared printer. No special software is therefore needed under Microsoft Windows to access or configure the CH3SNAS.
Although an EasySearch utility is provided to simplify initial network setup for non-technical users, it is relatively easy to set up the NAS without this using the written documentation. The actual configuration of the NAS (e.g. drive formatting, access control, enabling FTP) is done using a web browser (default IP address 192.168.0.20).
Compatibility with Linux PCs
Internally, the device runs a small Linux distribution and an open-source file sever (called a Samba server). This is presumably to keep the materials costs (smaller processor, less emory), development cost (open source) and power consumption of the device down.
The CH3SNAS can also be accessed by Linux PCs: although LINUX natively tends to use a UNIX equivalent (NFS) to the Microsoft protocols provided by the CH3SNAS, Samba client support is relatively standard in Linux distributions. Although setting up access to from a Linux PC will, however, be a bit trickier than from a PC running Microsoft Windows, this is not necessarily an issue for typical Linux users.
Alternatively, Linux PCs users can access an implementation of NFS which is hidden in the 1.03 firmware, but is not accessible via the web-based configuration interface (yet). A tutorial on to access this hidden feature will be provided in the future. For urgent needs, see the personal Blog of Dennis, a former employee of Conceptronic.
Compatibility with Apple computers
The CH3SNAS does not natively support Apple’s AppleTalk protocol suite (roughly Apple’s equivalent of Microsoft’s SMB/CIFS). Modifications are possible to support this. This involves installing the open source Nettatalk server via the use of FunPlug.
Compatibility with the Playstation 3
The CH3SNAS is sometimes used with Sony’s Playstation 3 for wireless streaming of multimedia. In this scenario, the PS3 discovers the CH3SNAS using uPnP and uses uPnP to display available tracks/videos.
Compatibility with the XboX 360
As of Firmware 1.05, the CH3SNAS can be discovered by the XboX 360 for streaming multimedia content to the XboX.
We use cookies on our website to give you the most relevant experience by remembering your preferences and repeat visits. By clicking “Accept All”, you consent to the use of ALL the cookies. However, you may visit "Cookie Settings" to provide a controlled consent.
This website uses cookies to improve your experience while you navigate through the website. Out of these, the cookies that are categorized as necessary are stored on your browser as they are essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may affect your browsing experience.
Necessary cookies are absolutely essential for the website to function properly. These cookies ensure basic functionalities and security features of the website, anonymously.
Cookie
Duration
Description
cookielawinfo-checkbox-analytics
11 months
This cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Analytics".
cookielawinfo-checkbox-functional
11 months
The cookie is set by GDPR cookie consent to record the user consent for the cookies in the category "Functional".
cookielawinfo-checkbox-necessary
11 months
This cookie is set by GDPR Cookie Consent plugin. The cookies is used to store the user consent for the cookies in the category "Necessary".
cookielawinfo-checkbox-others
11 months
This cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Other.
cookielawinfo-checkbox-performance
11 months
This cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Performance".
viewed_cookie_policy
11 months
The cookie is set by the GDPR Cookie Consent plugin and is used to store whether or not user has consented to the use of cookies. It does not store any personal data.
Functional cookies help to perform certain functionalities like sharing the content of the website on social media platforms, collect feedbacks, and other third-party features.
Performance cookies are used to understand and analyze the key performance indexes of the website which helps in delivering a better user experience for the visitors.
Analytical cookies are used to understand how visitors interact with the website. These cookies help provide information on metrics the number of visitors, bounce rate, traffic source, etc.
Advertisement cookies are used to provide visitors with relevant ads and marketing campaigns. These cookies track visitors across websites and collect information to provide customized ads.