As the Raspberry Pi doesn't have a conventional BIOS, the various system configuration parameters that would normally be kept and set using the BIOS are now stored in a text file named config.txt.

The config.txt file is the exact same for both the RPi1 and the RPi2.

There are two ways to edit the config.txt file. Via ssh, or by plugging the SD card into another computer running Windows, OSX, or Linux.

Remount /flash partition writeable

mount -o remount,rw /flash

Edit config.txt

nano /flash/config.txt

Make your changes, then ctrl+x to save. Remount /flash partition readonly again.

mount -o remount,ro /flash


You can take you SD card out and put it in a Windows, Linux, or Mac computer and edit config.txt directly

The RPi requires you to buy special keys if you want to be able to playback certain codecs. They are:

These licences are purchase based on the specific serial number of your RPi.

The licences can be bought from To purchase the licence you will need the serial number of your RPi, this can be done from SSH

cat /proc/cpuinfo

Add the following to your config.txt


Replace 00000000 with the licence key that you purchased.

If you are having issues with your licence there are some tests you can do to confirm if the licence is enabled or not. SSH into your Raspberry Pi and run the below commands:

vcgencmd codec_enabled MPG2
vcgencmd codec_enabled WVC1

If MPG2 or WVC1 has been successfully enabled it should return something similar to this:


If it returns disabled you will need to check:

Raspberry Pi's latest kernels and firmware now by default use Device Tree (DT) to manage some resource allocation module usage.

The current solution is not a pure Device Tree system -- there is still board support code that creates some platform devices -- but the external interfaces (i2c, i2s, spi) and the audio devices that use them must now be instantiated using a Device Tree Blob (DTB) passed to the kernel by the loader (start.elf).

The main impact of using Device Tree is to change from everything on, relying on module blacklisting to manage contention, to everything off unless requested by the DTB. In order to continue to use external interfaces and the peripherals that attach to them, you will need to add some new settings to your config.txt.

The current supported DTB's can be found in /flash/overlays. These can be set by using any of the following overlays

audio interfaces:




override the defaults for the lirc-rpi module:


optional hardware interfaces:

dtparam=i2c1=on  # For later RPi's
dtparam=i2c0=on  # For early RPi's

Please see

Stock config.txt