Getting DSLinux up and running

See this page.

Logging in

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.

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.

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.

You can now use the command cfg_rc to use a menu system to generate /etc/rc.conf


Or the old way, copy /etc/rc.defaults to /etc/rc.conf:

cp /etc/rc.default /etc/rc.conf

And then 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 advisedto 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. #

Changing the default font

Due to the DS's low resolution screen, a very small font is used by default. If you have difficulty reading the screen you may want to add the following to /etc/rc.conf:


The changes will take effect on the next boot, to change the font size immediately you can type:

consolechars -f /usr/share/consolefonts/alt-8x8.psf

If you look in /usr/share/consolefonts you will see many differents fonts, most of which are unfortunately unusable due to the being too big UsingDSLinux_files/sad.png

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:

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


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.


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:

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.

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 mountedat 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:

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


 ls [-l] <filename or directory> [<filename or directory> ...]



cd - change current working directory


 cd <directory>


mkdir - create ("make") a new directory


 mkdir [-p] <directory> [<directory> ...]



cp - copy a file


 cp <filename> <new filename or directory>


rm - remove a file


 rm <filename> [<filename> ...]


Note: Busybox rm doesn't support the recursive option properly. Use /usr/bin/coreutils/rm instead

rmdir - remove one or more empty directories


 rmdir <directory> [<directory> ...]
mv - rename a file or move one or more files into another directory


 mv <file> <new filename> mv <file> [<file> ...] <directory>


 ln [-s] <filename> <linkname>


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.


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


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



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


 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


 cat <filename> [<filename> ...]


You should never give cat binary files as argument, only text files.

date - show the current date and time



This is an easy command UsingDSLinux_files/smile.png

find - lists filenames found in directory


 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.


free - show how much memory is 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



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.

kill - forcibly abort a program


 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 UsingDSLinux_files/smile.png

mount - show which drive is mounted where



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


 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


 more <file>

A gotcha: cant pipe stuff to the version of "more" included in DSLinux at this point

NDS Buttons & Functions

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


command. DSLinux will turn off the DS for you.


Sound should work out of the box including the microphone

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 -

Recording from the microphone

Microphone support is still in an alpha stage, but does work.

To record, use the following:

rawrec filename.raw

To playback, use:

rawplay filename.raw

The resulting file can be imported into an audio editor, however the exact specifications of the rawrec output file are not confirmed. According to the rawrec documentation, the default recording format is 2 channel signed 16-bit little endian. The sample rate is nonstandard, with an approximate (estimated, not confirmed) speed of 42000 Hz.

Wireless Networking


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 wificonfwhich 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 wncand 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:

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 myprofileis 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 to, you can use 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 mightalready have all the right info filled in for you.

Please note that some WiFiRouters/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 and that your access point's

Use the following commands to configure your wireless interface:

 iwconfig nds channel 6 essid SoftAP-91 key 0102031a2b ifconfig nds up route add default gw

If your network doesn't require a wepkey, simply change the iwconfig line to :

 iwconfig nds channel 6 essid SoftAP-91

Testing the connection



to ping your router. If your router has a different IP address you should of course substitute 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 to the IP address of the computer serving 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, create the file /etc/resolv.conf and put a line in there that says


To do this you can either use vi (you should read editing text files with viif you do not know vi) or run the following command:

 echo "nameserver" > /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



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 rather than an IP number. Inadyn supports the following sites:

First, sign up to one of the sites above and add a new hostname, 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:


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

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 , however at the time of writing this, seems to be down, so there is a copy at

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 Then you would run


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.

Now type:


To launch a menu driven system to generate /etc/rc.conf

Or, if you want, you can do it the old way. 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

You will also need to set a samba password for root, which is held differently from the main system password

smbpasswd -a

If you want DSLinux to automatically start inetd on each boot, edit /etc/rc.conf and make sure it includes:


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:


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:


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:


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 MPDto 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:modrakabout 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 thisbefore 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 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 BitlBeeto 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 // /media/linux/mnt

Please note: You can use now use ftp to transfer files to and from your DS. See here


The following games are available in DSLinux:

To run a game, type its name and hit enter. For example, to start advent4, type


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:


Please be aware tht PIXIL is still in development and has many bugs at the moment.


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 patcheddslinux.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:

This is a list of things you can try to get wifi to work if the power LED flashes quickly:

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 evertry 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 into an IP address such as, is completed.

Bringing up wireless says something about extensions

When you start wireless, you may see a message similar to the following:

Warning: Driver for device has been complied with version 19 of Wireless extension,while this program supports up to version 17

You can safely ignore this error.

Tab completion does not work

This problem has been fixed by Amadeus in this commit:

Problems with 2GB SD cards

This problem has been fixed by Amadeus in this commit: