To people editing this page: Please note that a lot of commands may not be present or work differently on DSLinux than on Linux systems you are used to. "Standard" options you expect of a tool may not be supported in its DSLinux equivalent. Please always make sure that whatever you describe on this page is really working in DSLinux!
Contents
- Getting DSLinux up and running
- Logging in
- The Shell
- Creating /etc/rc.conf
- Changing the default password
- Basic Commands and Concepts
- File Management
- Advanced shell features
- Utilities
- passwd - change the default password
- echo - print all specified arguments to the screen
- cat - print the contents of files on the screen
- date - show the current date and time
- find - lists filenames found in directory
- free - show how much memory is free
- ps - show running programs
- kill - forcibly abort a program
- mount - show which drive is mounted where
- time - measure the time a program takes to execute
- more - display a file in pages
- NDS Buttons & Functions
- Shutting down
- Sound
- Wireless Networking
- Introduction
- Configuring the wireless interface
- Configuring the wireless interface using wificonf
- Setting up your router
- Configuring the wireless interface manually (deprecated)
- Testing the connection
- Setting up DNS
- Testing DNS
- Making your networking settings permanent
- Using the inadyn dynamic dns client
- Using the Boa Webserver
- Connecting to remote computers with SSH
- Connecting to your PC with telnet
- Connecting to DSLinux with ssh, telnet, ftp and samba
- Securing connections with OpenVPN
- Reading email with nail
- Playing mp3s Wirelessly with ESD
- Watch it on video
- If you cannot get it to work
- Taking a screenshot
- Surfing the web with the retawq web browser
- Instant Messaging
- Transferring Files via NFS from your PC to your DS
- Games
- Editing text files with vi
- Using the PIXIL Suite
- Troubleshooting
- Known Problems
Getting DSLinux up and running
See this page.
Logging in
Without autologin
When DSLinux has booted, it will display a login prompt that looks somewhat like this:
Welcome to DSlinux. This is the GBAMP version. You must type "halt" or "poweroff" before turning off the DS. NintendoDS login:
Log in as user "root" by typing "root" and pressing enter. Next you will be prompted for a password. The password is uClinux (case sensitive, note the upper-case C). You won't see the password as you type it. Hit enter when you have entered the password.
With autologin
Some builds have autologin enabled (currently the DLDI build). You will not see a login prompt on those builds. Instead, you will be presented a shell prompt immediately after booting.
The Shell
When you have logged in successfully, DSLinux will open up a shell. A shell is a command interpreter. It displays a prompt (#) and a blinking cursor. You can type a command, and when you hit return, the command will execute. The command may produce output on the screen. Or the command may not produce output at all, but do something else instead, like deleting a file, for example.
Because DSLinux currently has no graphical interface but only a shell, some innocent people call DSLinux "DOS-based". Don't listen to them. Fortunately, DSLinux (and Linux in general) has absolutely nothing to do with DOS.
Note that if the DLDI build detects extra RAM in slot-2, three virtual terminals are enabled by default. This allows for basic multitasking in DSLinux. For instance, using virtual terminals, one can play music in one terminal while browsing the web with another, using the third for any commands that may need to be entered. To switch between virtual terminals, press Alt+F1/F2/F3.
Creating /etc/rc.conf
The first time you use DSLinux you may see a message like this:
"The file /etc/rc.conf does not exist on your system," "so the default configuration will be used." "The file /etc/rc.defaults contains instructions on how" "to create /etc/rc.conf to customise your dslinux installation."
/etc/rc.conf is where DSLinux specific configuration such as wireless networking is kept. To start, first copy /etc/rc.defaults to /etc/rc.conf:
cp /etc/rc.default /etc/rc.conf
Now open up /etc/rc.conf in an editor:
nano /etc/rc.conf
Once you have finished editing the file to your tastes, press Ctrl-O to save and then Ctrl-X to quit. For further information about /etc/rc.conf, read the rest of this document.
Changing the default password
You are highly advised to change the default password ("uClinux") to something else. To do so, type passwd at a shell prompt:
# passwd Changing password for root Enter the new password (minimum of 5, maximum of 8 characters) Please use a combination of upper and lower case letters and numbers. Enter new password: Bad password: too simple. Warning: weak password (continuing). Re-enter new password: Password changed. #
Basic Commands and Concepts
In case you are not familiar with Linux, read this section. It provides a bit of basics you should know about Linux, and a list of some of the basic commands available.
Note that some commands take arguments. In the instructions below, required arguments are enclosed in pointy brackets, like this: <argument>. Optional arguments are enclosed in braces, like this: [argument]. Multiple optional arguments are notated like this: [<argument> ...]
Arguments to commands may contain wildcards:
- * - matches any amount of characters
- ? - matches a single character
- [a-d] - matches any character from a to d
See the examples below if this sounds confusing.
Some commands also take options. Usually, options should be placed right after the program's name on the command line and before any arguments.
File Management
Introduction
In Linux and UNIX, directories are separated by a forward slash ('/'), and not a backslash ('\') as in Windows and DOS.
Filenames are case-sensitive: "documents" and "Documents", for example, are two distinct directories. A filename can contain spaces and other non-alphanumeric characters, but these special characters need to be "escaped", so that the shell does not confuse characters in filenames with characters that have special meanings to the shell. The escape character is the backslash ('\'). For example. if you had a directory called "/home/Documents and Settings", on the command line you would write:
/home/Documents\ and\ Settings
Instead of putting a backslash in front of every special character, you can also put filenames containing special characters in double quotes:
"/home/Documents and Settings"
While this "special character" business may seem rather limiting and complicated if you are used to naming conventions from other operating systems such as Windows, remember that you will have to type the filenames on the small DSLinux keyboard. You cannot click an icon. In fact, most directories and files in a typical Linux system have relatively short names, because short names are much more user-friendly when using a command line instead of a graphical user interface. For example, what is called "C:\Documents and Settings" in Windows is simply called "/home" in Linux. This is much shorter to type. So, even though it is possible, you may not even want to use spaces or other special characters in your filenames. In the end, long names containing special characters just get in the way.
Directories
In Linux, almost all directories on the system have a special purpose. It is not like in Windows, where each installed program creates a single directory for itself somewhere and puts all its files in there. Instead, files of certain types go into certain directories. Let's look at some directories you will find in DSLinux:
- / - the root directory. It is the parent of all other directories. Everything starts here. There is nothing above the root directory.
- /bin - contains executable program files
- /etc - contains configuration files
- /dev - contains special device files to access hardware devices
- /lib - contains libraries needed by programs in /bin
- /tmp - contains temporary files
- /proc - contains files providing information about the system
- /usr - contains a subhierarchy of directories containing things that are interesting to users of the system, but are not vital for system operation
- * /usr/bin - contains more executable programs
- * /usr/lib - contains more libraries needed by more executable programs
- /var - contains files that change often.
- /home - contains files belonging to the system's users - put all your personal files here
Note that you cannot create files and directories everywhere in DSLinux. The root filesystem, which is the filesystem mounted at '/', is a read-only filesystem. You cannot write to it. You can only create files and directories on a storage medium such as a CF card, or in the /sram directory of builds lacking permanent storage. Since /sram is not permanent, your changes will be lost when you turn the DS off.
Symbolic links
In DSLinux /tmp is a symbolic link to /var/tmp. A symbolic link (often just called symlink) is somewhat like an alias for another file. This means that, for example, all files that go into /tmp are actually ending up in /var/tmp. The reason this is useful is that if /tmp was a directory in the root filesystem, it would be read-only, because the whole root filesystem is read-only. But /tmp is required to be writable. To solve this problem. we make /tmp a symlink to /var/tmp. /var/tmp is writable, and now so is /tmp. Great.
Accessing media
There is no concept of drive letters in Linux. Instead, drives are mounted at directories, so to access files on a drive, you simply go into the directory the drive is mounted at. This has the advantage that the whole filesystem hierarchy is a single tree. It is not scattered across drives as it is on Windows or DOS. You do not really have to know what directory is on what drive to use the system. On builds using CF or SD storage cards, the cards are mounted on the following directories:
- /gbamp on the GBAMP build
- /media on the DLDI builds
- /sd on the DSMEM build
Note that on any of the builds above, the /home directory is always writable, because it is a symbolic link a directory on the CF card. It is therefore enough to remember that /home is the only location where you can create files and directories (emphasis intended to keep even lazy readers informed).
Getting back a bit about why /tmp is a symbolic link to /var/tmp: /var in turn is actually also a symbolic link to a directory on writable media! For example, in the GBAMP build, /var is a symbolic link to /gbamp/var.
Commands for file management
The following commands are useful for file management:
ls - list files and directories
Synopsis:
ls [-l] <filename or directory> [<filename or directory> ...]
Options:
- -l - long listing (shows more information)
Examples:
- ls /bin - list programs available in the /bin directory
- ls /bin /home - first lists programs available in the /bin directory and then in the /home directory
- ls -l - long listing of the current directory
cd - change current working directory
Synopsis:
cd <directory>
Examples:
- cd / - go to the root directory
- cd .. - go up one directory (.. always denotes the parent directory)
- cd . - do nothing, stay at the current directory (. always denotes the current directory)
mkdir - create ("make") a new directory
Synopsis:
mkdir [-p] <directory> [<directory> ...]
Options:
- -p - create missing parent directories
Examples:
- mkdir /home - create a directory called /home (will likely already exist in your dslinux installation)
- mkdir -p /home/music/squarepusher - create directory squarepusher inside the directory /home/music, and create the /home/music directory if it does not exist.
cp - copy a file
Synopsis:
cp <filename> <new filename or directory>
Examples:
- cp peach.txt pear.txt - copy file peach.txt to file pear.txt
- cp peach.txt /home/stuff - copy file peach.txt from current directory into directory /home/stuff
rm - remove a file
Synopsis:
rm <filename> [<filename> ...]
Options:
- -f - force deletion
- -r - delete recursively (i.e. delete non-empty directories and everything below them)
Note: Busybox rm doesn't support the recursive option properly. Use /usr/bin/coreutils/rm instead
- rm /home/test.txt - delete file /home/test.txt
rm te?t.txt - Remove all files in the current directory called te<insert any character here>t.txt. Some examples for matching files: test.txt, text.txt or teat.txt or te5t.txt
- rm -r /home/music/*mp3 - delete all files in the /home/music directory with their names ending in 'mp3'
- rm -rf /home/music - delete the /home/music directory and anything it contains
- rm -rf /home/musi[c-e] - delete the /home/music, /home/musid and /home/musie directories and anything they contain
rmdir - remove one or more empty directories
Synopsis
rmdir <directory> [<directory> ...]
mv - rename a file or move one or more files into another directory
Synopsis:
mv <file> <new filename> mv <file> [<file> ...] <directory>
ln - create a link (or alias) for a file
Synopsis:
ln [-s] <filename> <linkname>
Options:
- -s - create a symbolic link (or "soft link") instead of a hard link
A hard link is created by default. When the file is removed, it will still be accessible from the hard linked name. A file is only lost for good if all its hard links have been removed. A symbolic link is said to be "dangling" when the file it points to is removed, i.e. it points nowhere and the file is lost for good.
Examples:
- ln tee tea - the file tee is now also accessible through the name tea
- ln -s bork bark - creates a symbolic link bark pointing to the file bork.
In the latter example, when bork is removed, the symlink will have nowhere to point to anymore (but it is not removed automatically).
Using the 'ls -l' command, you can see whether a file is a symbolic link. If you see something like:
apples.txt -> oranges.txt
in the output of ls -l, this tells you that apples.txt is a symbolic link to oranges.txt. Hard links to the same file appear as different files in the output of ls.
Advanced shell features
The shell has a couple of useful features.
One is redirection of a program's output into a file. The syntax for redirecting is:
command > filename
For example, this command creates a file list.txt containing the names of all files in the current directory:
ls > list.txt
Note that list.txt will be overwritten. If you want to append the list of filenames to the file instead of overwriting it, use:
ls >> list.txt
Utilities
There are several basic but useful utility commands. These are available on any Linux or UNIX system, so it is good to know about them. Some of these commands are actually built into the shell itself.
passwd - change the default password
Synopsis:
passwd
You are advised to change the password if you plan to use inetd as the default password for DSLinux is widely known
echo - print all specified arguments to the screen
Synopsis:
echo <arguments>
This command is more useful than it seems at first glance. Combined with shell redirection, it can be used to create files. You will see later that this feature comes in handy during configuration of wireless networking. Example:
echo my secret > /home/secret.txt
cat - print the contents of files on the screen
Synopsis:
cat <filename> [<filename> ...]
Examples:
- cat /home/secret.txt - print the contents of /home/secret.txt (the file that was created in the echo example above).
You should never give cat binary files as argument, only text files.
date - show the current date and time
Synopsis:
date
This is an easy command
find - lists filenames found in directory
Synopsis:
find <directory> [-name <pattern>] -
As indicated by the brackets, the pattern is optional. If specified, find will only print files with filenames matching the pattern. The pattern may contain shell wildcards, and this is what makes it useful.
Examples:
- find / - prints all files on the sytem
- find . -name '*.txt' - prints all files in or below the current directory ending in .txt
free - show how much memory is free
Synopsis:
free
The values are printed in kbyte. Divide by 1024 to convert the value into megabyte. (On other Linux systems, free may accept a -m option that makes it print the values in MB. But this does not work in DSLinux.)
ps - show running programs
Synopsis:
ps
This command shows all running programs on the system. Running programs are also referred to as 'processes' in Linux, hence the name 'ps'. ps shows not only the name, but various information about the process.
Example output of ps (shortened):
PID Uid VmSize Stat Command 17 root SW -sh 28 root RW ps
* The first field (PID) shows the Process ID. Linux gives each process a unique number to identify a process. This number is called the process' ID.
- The second field show the Uid (User ID) the process is running at. There is only one user in DSLinux, called root. On most Linux systems there is more than one user, and working as the root user is avoided as much as possible. A process usually has the user ID of the user that started it.
The third field (VmSize) is empty. This would normally show how much virtual memory a process is using (i.e. how much memory the process thinks it has). But DSLinux has no virtual memory, so this field is blank.
- The fourth field (Stat) indicated the status of a process. For example, S means that the process is sleeping, R is a running process and W is process which has no resident pages. Consult your local manpage for more abbreviations.
- The last field (Command) shows the command that was run to create the process. -sh is the shell. You can see ps showing itself in the second line of the example output.
kill - forcibly abort a program
Synposis:
kill <PID>
Kill terminates the program with process ID <PID>. To find the PID of a process (a "process" is a program in execution), see the ps command above. Make sure you do not kill important processes, or else your system will probably crash
mount - show which drive is mounted where
Synopsis:
mount
This is not really useful, but shows you where drives are mounted in DSLinux. For example, if you are using a GBAMP, the mount command will show you that the device representing the CF card in the gbamp (/dev/hda1, or just /dev/hda in some cases), is mounted at the /gbamp directory. The mount command is also used by the DSLinux startup script to perform the mount.
time - measure the time a program takes to execute
Synposis:
time <command>
The time command runs the specified command and will print how long the command took to execute when the program is done.
more - display a file in pages
Synopsis:
more <file>
A gotcha: cant pipe stuff to the version of "more" included in DSLinux at this point
NDS Buttons & Functions
- the cross
- *is used as cursor keys (up, down, left, right)
- a = return
- b = space
- x = page up
- y = page down
- l = shift
- r = ctrl
As a result of this, l+x & l+y scroll up and down through the buffer
The K in the upper right corner of the soft keyboard switches to M when pressed and back to K when pressed again. That means switching between keyboard and mouse mode.
Shutting down
Run the
poweroff
command. DSLinux will turn off the DS for you.
Sound
Sound should work out of the box although the microphone is currently unsupported
Playing mp3's
You can use the mp3play command to play mp3 files:
mp3play <file>
There are occasional skips during mp3 playback due to DMA problems. Using the -m option (mono output) may help decrease the number of skips.
Playing ogg
Ogg Vorbis seems to need more CPU power than the DS can offer, thus ogg playback is very choppy
cat file.ogg |ivorbisfile_example|rawplay
To stop skipping you can always 'decode' the file first, eg:
cat file.ogg |ivorbisfile_example > file.tmp cat file.tmp | rawplay
Playing Internet radio
You can use a combination of madplay and wget to stream mp3 radio stations. It may stutter for the first few seconds.
wget -O - http://someurl.mp3 | madplay --downsample -d -
Wireless Networking
Introduction
Please note that networking terminology and concepts used in this section are often simplified. This section is just meant to get people going. It does not explain networking concepts in detail. You may want to refer to other sources about computer networking to get a deeper understanding of what this section is talking about.
Note that the IP addresses given in the examples below may not work for you at all. To chose a working IP address for your DS you need to know the network number of your wireless network . For IP addresses in the 192.168.x.x range, which are commonly used by wireless routers for home use, the network number is the first three numbers of the IP address. 192.168.1 is the network number in the examples below. The IP address of your DS should match your router's network number, but the fourth number in the IP address needs to be unique, that means no other device should be using it. Note that the fourth number of an IP address of a device may not be zero or 255!
Please bear in mind that the Nintendo DS cannot connect to a WPA encrypted access point. Only WEP is supported by the DS hardware
Configuring the wireless interface
The file rc.conf allows you to configure your network settings in DSLinux. At the moment, only one configuration is supported. In the future, multiple configurations will be supported. However, if you're using the DLDI build with a RAM expansion, you can use wificonf which does support multiple profiles.
Using configuration data from your Nintendo WIFI Connection setup, if available, is supported, too.
You need to create rc.conf yourself. It is not present on a freshly installed DSLinux system. See the file /etc/rc.defaults from within DSLinux for information on how to create it. /etc/rc.defaults includes a lot of helpful comments. They will not be duplicated here. You can read /etc/rc.defaults by running:
cat /etc/rc.defaults
and scrolling back to the beginning of the output. Hold L and press the X button repeatedly to scroll up, hold L and press the Y button to scroll down.
Please read this file carefully before asking for help in the forums
Once rc.conf is set up you can restart the network anytime by running:
/etc/rc.d/network restart
You can also have the network started automatically on boot (again, see the comments in /etc/rc.defaults).
The power LED will flash slowly when the DS is not associated with an access point, and it will flash a bit faster when it is associated with an access point.
Configuring the wireless interface using wificonf
If you're using the RAM or DLDI (only recommended if you have extra RAM) build, you can use the wizard-style wificonf (or if you want less to type, wnc) for configuring the wireless interface.
To use it, simply type wnc and press return. Navigate using the D-pad and the Tab key, and press return to make a choice.
Wificonf is WFC or profile-based. The idea is that you create a profile and then choose "Load" to bring up the network, or if the network is defined in your WFC settings choose WFC and then the slot.
Basic usage:
- If you have WFC settings stored, choose WFC and then the WFC slot.
- If you'd like to create a new profile from scratch, choose Create.
- If you'd like to scan for networks and create a profile based on a network found in the scan, choose Scan.
- When you have created a profile, choose Load or Auto to set up the network.
When creating a profile, you will be asked if you want to use DHCP or configure the IP settings manually. Unless you have special needs you should choose DHCP.
Also note that in all dialogs, you may be asked for settings that may not be necessary or applicable for your set-up, such as "WEP key" or "2nd DNS". These can simply be left blank.
If you want to bring up a network configured using wificonf at boot time, you have to edit /etc/rc.conf. If you do not have /etc/rc.conf or you need help on modifying rc.conf, read Configuring the wireless interface.
Open rc.conf and change the value of enable_network_on_boot to YES and add a new line that reads NETWORK_CONFIG=/var/wncsh/profiles/myprofile, where myprofile is the name of your profile.
Setting up your router
You may need to adjust some router settings to get dslinux talking to it.
Most routers hand out IP addresses to computers on the network dynamically via the DHCP protocol. DHCP does not work for most people in dslinux, so you should consider giving your DS a static IP address. 'Static' means the IP address is assigned manually without DHCP. Log into your router, and change the DHCP range to exclude the IP address you wish to use for your NDS. For example, if you pick a DHCP range from 192.168.1.3 to 192.168.1.254, you can use 192.168.1.2 for dslinux.
If your router has an alternate or non-windows set-up option, you may want to run through that in addition to your traditional settings. This may solve some issues with frequent disconnections of DSLinux from your network. If you run through this set-up option after your traditional setup, your router might already have all the right info filled in for you.
Please note that some WiFi Routers/Access-points must have SSID broadcasting enabled for DSlinux to be able to make the connection.
Also, if the above procedure doesn't work for you, you can try to set your Router's/AP's to channel 6 if your DS doesn't detect your AP or connects to it. Just leave your SSID broadcasting and set a WEP encription (I don't think it matters if it is Open or Shared).
Configuring the wireless interface manually (deprecated)
(This section is based on a forum post by chishm and the WEP usage example posted on pepsiman's blog).
The wireless interface should be configured via rc.conf in most cases. However, this section explains how to configure the interface manually, should you ever need to.
In this example, we assume that you want your DS's IP address to be 192.168.1.2 and that your access point's
- IP address is 192.168.1.1
- Channel is 6
- Essid name is SoftAP-91
- 64-bit WEP is 0102031a2b (10 hex digits)
Use the following commands to configure your wireless interface:
iwconfig nds channel 6 essid SoftAP-91 key 0102031a2b ifconfig nds 192.168.1.2 up route add default gw 192.168.1.1
If your network doesn't require a wepkey, simply change the iwconfig line to :
iwconfig nds channel 6 essid SoftAP-91
Testing the connection
Run
ping 192.168.1.1
to ping your router. If your router has a different IP address you should of course substitute 192.168.1.1. If your router does not respond, something went wrong during the previous steps.
Setting up DNS
This step only has to be done once, except for the .nds or .ds.gba builds, where this step is required after each boot.
You need to tell DSLinux which computer to ask DNS queries. DNS is the protocol used to match hostnames like www.dslinux.org to the IP address of the computer serving www.dslinux.org. Computers do not understand hostnames, they only can only talk to each other when they know their IP addresses. Hostnames are only used by humans because they are easier to remember.
Most routers can forward DNS queries to a working DNS server automatically, so in most cases, DNS queries from dslinux should go to the router. So continuing with our example above where the wireless router has the IP address 192.168.1.1, create the file /etc/resolv.conf and put a line in there that says
nameserver 192.168.1.1
To do this you can either use vi (you should read editing text files with vi if you do not know vi) or run the following command:
echo "nameserver 192.168.1.1" > /etc/resolv.conf
Some routers do not forward DNS queries. Using them as DNS server will not work. Try to find out what DNS servers your router is using and use one of them for dslinux. Or call your internet service provider and ask them for an IP address of a DNS server you can use.
Testing DNS
Run
ping www.dslinux.org
and you should get a response. If not, read this guide again and make sure you have not missed anything. If you still have problems, seek help on the forums. If you are able to get the help you need from the forums, please ask those who gave you the help to contribute to the wiki, and/or contribute what you have learned yourself.
Making your networking settings permanent
See Configuring the wireless interface.
Using the inadyn dynamic dns client
Free Dynamic DNS enables you and other people to refer to your ds as nintendo-ds.somesite.com rather than an IP number. Inadyn supports the following sites: http://www.dyndns.org/ http://freedns.afraid.org/ http://www.zoneedit.com/ http://www.no-ip.com/
First, sign up to one of the sites above and add a new hostname, dyndns.org is recommended. Copy /etc/inadyn.conf.example to /etc/inadyn.conf and edit. To start inadyns type:
/etc/rc.d/inadyn start
To enable on boot, edit /etc/rc.conf so it includes:
start_inadyn="YES"
A log file will be generated in /var/log/inadyn.log. Use this to diagnose any problems you may have.
Using the Boa Webserver
To enable the Boa webserver, either type:
/etc/rc.d/boa start
or edit /etc/rc.conf to include "start_boa=YES" to start on boot. The default website resides in linux/var/www. For people outside your lan to access your DS will probably require you to forward port 80 on your router to your DS.
Connecting to remote computers with SSH
DSLinux has an ssh client. You can use it to connect to remote computers securely. An SSH server must of course be running on the remote computer. To connect, simply type:
ssh <username>@<hostname>
where <hostname> is the DNS name of the computer you want to connect to and <username> being the user you'd like to connect as. If the ssh program cannot be not found, try the following instead:
dbclient <hostname>
Connecting to your PC with telnet
If you run a telnet daemon on your PC, you can connect to your PC from your DS. Running telnetd on a Linux system is easy, but details differs a bit depending on the distribution. In most cases, it should be enough to
- open the file /etc/inetd.conf
- find a line that says something about telnet
- uncomment the line by removing the first # character
- and saving the file.
Next, you should to tell inetd to re-read its configuration. The following command should work on most distributions, assuming that inetd is already running:
killall -HUP inetd
If you are on windows above 2000 you can use netcat, a copy of which is at http://www.vulnwatch.org/netcat/ , however at the time of writing this, vulnwatch.org seems to be down, so there is a copy at http://jercos.dyndns.org/nc.exe
- Download to your desktop
Click start > run
- In the run box type "cmd" and click ok
- In the black backgrounded box that pops up type
- cd desktop
- nc -l -p 23 -e cmd.exe
That will give you an unsecure telnet server (anyone who connects gets a console.)
If you know how to start a telnet server in other operating systems, please add this information to this section.
Now, try to connect to your PC from your DS. Let's say your PC has the IP address 192.168.1.23. Then you would run
telnet 192.168.1.23
on the DS.
Connecting to DSLinux with ssh, telnet, ftp and samba
Please note: You are advised to use sshd over telnetd as it is much more secure You are also advised to change the default password
You can run various daemons on DSLinux and connect to it from your PC. This makes typing and other operations a whole lot easier! To do this we use inetd, the internet services daemon. First, make your network settings permanent. Next copy the provided inetd.conf.example to /etc/inetd.conf
cp /etc/inetd.conf.example /etc/inetd.conf
Now open up /etc/inetd.conf in an editor and remove the # from in front of the line that says:
#ssh stream tcp nowait root /usr/bin/dropbear -F -i
so it looks like:
ssh stream tcp nowait root /usr/bin/dropbear -F -i
Please note that dropbear generates a hostkey the first time it is run and may take a while to complete If you want to enable telnet, you can do the same but for this line: Please note that telnet is an unsecure protocol and transmits as plaintext
#telnet stream tcp nowait root /bin/telnetd
If you want you can also enable the ftp server by doing exactly the same as above but for the line that says:
#ftp stream tcp nowait root /usr/bin/ftpd -l
If you want to enable Windows Networking, remove the #'s from the following lines
#netbios-ssn stream tcp nowait root /usr/bin/smbd -F #netbios-ns dgram udp wait root /usr/bin/nmbd -F
If you want DSLinux to automatically start inetd on each boot, edit /etc/rc.conf and make sure it includes:
start_inetd="YES"
To start inetd now type:
/etc/rc.d/inetd start
If everything is configured correctly you should now be able to connect to your DS using ssh, telnet and ftp. For a nice Windows SSH client you could use PuTTY. When using ftp and ssh make sure that you are logging in as user 'root', not anonymous which is the default for many clients.
To connect to your DS using Windows Networking, go to Start->Run and enter in:
\\TheIPofYourDS\share
and use root/uClinux as the username/pass. The password for SAMBA is held differently than the standard Linux password. To change it from the default (recommended), use smbpasswd. The default workgroup is set to WORKGROUP. You will need to set this to the same workgroup as your PC. To change the workgroup, edit /etc/smb.conf.
Note that you should only start inetd in a trusted environment. Do not enable it if you are in a public network, because anyone could easily connect to your DSLinux installation (the default root password is widely known). Neither should you configure your router to put the DS into DMZ, because this makes your DS accessible to anyone on the internet!
Securing connections with OpenVPN
Note: As of 12/02/08 the TUN driver has been removed from the builds on Kineox due to memory constraints. To use openvpn at this point in time you will need to compile your own builds
OpenVPN is a full-featured SSL VPN solution which can accomodate a wide range of configurations which is now included in DSLinux. There are clients available for Windows and Linux. For a very simple configuration see this page. Please read /etc/openvpn.conf.example to see what options DSLinux requires. Once configured you can start openvpn automatically via /etc/rc.conf or by using the provided script in /etc/rc.d/
Reading email with nail
You can use the nail client to send and receive pop, imap and smtp. See /etc/nail.rc.example for an example configuration file that works with Gmail. If you plan to use Gmail you will also need to enable POP3 within your Gmail account using the web interface. After doing so, edit /etc/nail.rc.example and copy to /etc/nail.rc. To receive mail after configuring, type:
nail -f gmail
To send mail type:
nail email@address.com
and type your message. Once finished press CTRL-D to send. To help diagnose problems you can set verbose mode using -v
nail -v -f gmail
There is a manual page that explains how to use nail here
Playing mp3s Wirelessly with ESD
You can use the Enlightened Sound Daemon to play audio from your computer through the speakers on the DS using the wireless connection. Pretty much any application that supports ESD output should work. To enable esd on boot, enter the following into /etc/rc.conf:
start_esd="YES"
or alternatively, type the following to start it now:
/etc/rc.d/esd start
You should now be able to direct the output of ESD aware programs to your DS. You may experience stuttering at the start but is should soon disappear.
There is a EsounD WInamp3 plugin for Windows available here
Below is an example on how to use ESD with mplayer:
mplayer -ao esd:ip_address_of_ds music.mp3
Here is an example on how to configure MPD to output to ESD, enter the following into /etc/mpd.conf
audio_output {
type "ao"
driver "esd"
format "32768:16:1"
options "host=ip_address_of_ds:16001"
name "esd"
}With the included ncmpc client you can connect to the mpd server running on your PC and change the song/playlist etc.
Watch it on video
There's a tutorial video on youtube made by Modrak:modrak about setting up networking in DSLinux.
If you cannot get it to work
If you cannot seem to get networking to work in DSLinux, make sure you've read this before asking others for help.
Taking a screenshot
Amadeus has coded a screenshot utility called snapshot, which can be used to take screengrabs. It outputs PNG files and is useful for debugging/showing off.
For the top screen, type:
snapshot /dev/fb0 /media/file.png
and for the bottom, type:
snapshot /dev/fb1 /media/file.png
Surfing the web with the retawq web browser
You can find documentation for the retawq web browser here.
Instant Messaging
DSLinux has irssi and tinyirc for IRC chatting.
If you point a browser like links to www.ebuddy.com/mobile you will get a usable interface to AIM, MSN, or Yahoo.
If you have a computer accessible from the internet that you can set up for the purpose, you can use BitlBee to interface IRC to many protocols. Or if you don't mind your password being available to a stranger on the internet you can use one of the public servers listed on that site.
Transferring Files via NFS from your PC to your DS
This currently only applies to people using custom builds, as the builds on kineox do not include NFS support.
It is possible to use NFS (Network File System) to transfer files from a PC running an NFS server to your DS. First make sure that NFS is enabled in the build you are using by typing 'cat /proc/filesystems' at a command prompt. If NFS is not listed you will have to enable it in the kernel configuration under "Filesystems/Network filesystems". You will also have to enable nfs in busybox mount and RPC support in uClibc. Setup an NFS server on your pc computer (read the documentation for your distribution). When mounting on the DS make sure to use the option nolock.
mount -o nolock,nfsvers=2,noac //192.168.1.1/nfsshare /media/linux/mnt
Please note: You can use now use ftp to transfer files to and from your DS. See here
Games
The following games are available in DSLinux:
- advent4 Colossal Cave Adventure! A text based game that is really fun.
- bs Battleship - Information on how to play it is included in the game.
- dungeon Yet another text adventure.
- hanoi Towers of Hanoi - A game where you must move the stacked disks from one pole to another in order of size, largest to smallest.
knight KnightSMove - a logical solitaire Some version of solitaire. Instructions are in game.
- blue Another solitaire game. Refer to the in-game instructions for help.
- sudoku - It was all the rage last year
- snake - Grab the money and escape before the snake eats you
- fish - Play "GO FISH!" with your DS
- tetris - The old classic that everybody knows
- hangman - spell out the word before you get hanged!
- boggle - Find words hidden in the random letters.
To run a game, type its name and hit enter. For example, to start advent4, type
advent4
and hit enter. Most games can be quit by either pressing 'q' or pressing 'Control' and then 'c'.
Editing text files with vi
You can find an introduction to vi here.
Using the PIXIL Suite
To start the PIXIL applications suite, enter:
/usr/pixil/nxstart.sh
Please be aware tht PIXIL is still in development and has many bugs at the moment.
Troubleshooting
Error number X
You can look up the meaning of error numbers here (1 to 34) and here (35 to 131).
Mount error on boot
If error # 6 happens trying to mount a SD/mini SD/micro SD card please make sure that you have DLDI patched dslinux.nds with the appropriate file.
do translation fault scrolls off the screen
This means that unfortunately DSLinux has crashed. You may experience this often as DSLinux is in a constant state of development
Known Problems
I am getting errors from the /etc/rc.d/network script!
There have been a few people lately that had problems with the script. There have also been a lot of changes made to it lately. Most people that had trouble with it had essids that contained special characters and/or spaces.
Also please make sure that you edit /etc/rc.conf using an editor that supports UNIX style line endings (like Gvim).
Why can't DSLinux connect to my access point while everything else can?
This problem is quite common - a lot of people have trouble connecting DSLinux to their AP while everything else works fine. Alas, no one has analysed the problem deeply yet, since none of the people reporting the problem were able to do so themselves and were unable to provide enough information needed for someone else to do so. A packet capture of the DS trying to associate would help.
This is a list of things you can try to get wifi to work if the power LED flashes slowly:
- Make sure your AP broadcasts the SSID of your wireless network.
- Try explicitly setting the channel of your wireless network in /etc/rc.conf.
- Try without WEP, and with WEP try open vs. shared authentication.
- If without WEP works, and you still can't connect with WEP, check if your password is ASCII or HEX, in many routers you can type your password in ASCII (up to 5 characters), but your ds needs a HEX password (up to 10 characters). If you find out that your password is ASCII, then don't worry you do not need to change it, but you must fill in the HEX version of your ASCII password in your configuration. You can convert ACII into HEX without problems, just google it (some converters give answers like %12%34%56%78%90 , but you must type it without the % on your ds, like 1234567890.)
- Try to set your AP to 2Mbit/s speed. The DS can only do 2Mbit/s, not more. Your AP may fail to detect this and talk to the DS at a higher speed than the DS can listen.
This is a list of things you can try to get wifi to work if the power LED flashes quickly:
- Try with and without DHCP.
See also Working Routers.
If DSLinux is getting the ssid from a WFC configuration, make sure your ssid only contains letters and numbers, not spaces or any other special characters. If you are specifying the ssid manually in /etc/rc.conf instead, you can use special characters (!, for example), but you should escape them with a backslash, like this: \!
Do not ever try to edit the rc.conf file on Windows using Notepad and copy it to DSLinux. You will get weird ":not found" messages. This is because Windows line endings are different to what DSLinux is expecting. If you must edit rc.conf in Windows, using the Windows version of gvim should work
Help, I cannot login because the keyboard does not respond!
This is a common error made by lots of new users. You simply haven't read the documentation. See here.
Retawq prints an error message on startup
When I start up retawq, i get the following:
Warning: with the current configuration, DNS hostname lookups will "block" the whole program, and it will seem to hang
You can ignore that. It just means that the program will wait before doing anything else until a DNS hostname lookup, which is the process of translating a website name such as www.dslinux.org into an IP address such as 67.18.228.4, is completed.
Tab completion does not work
This problem has been fixed by Amadeus in this commit: http://mailman.dslinux.in-berlin.de/pipermail/dslinux-commit/2007-October/002488.html
Problems with 2GB SD cards
This problem has been fixed by Amadeus in this commit: http://mailman.dslinux.in-berlin.de/pipermail/dslinux-commit/2007-October/002488.html
