Raspberry Pi Internet Radio and Streaming Station

Published  May 11, 2022   0
Raspberry Pi Internet radio and Streaming Station

In this tutorial, we are going to set up a Raspberry Pi streaming station using DarkIce and Icecast. DarkIce and Icecast are two Raspberry Pi packages used for audio recording, encoding, and streaming. DarkIce is a live audio streamer that records audio from an audio interface, i.e. Microphone, encodes it, and sends it to a streaming server. DarkIce can record audio from OSS audio devices, ALSA audio devices, Jack sources, and CoreAudio. It can encode the recorded audio in the MP3, MP2, AAC LC, AAC HEv2, Opus, and Vorbis formats. Then it can send the encoded audio to the ShoutCast, IceCast, and Darwin Streaming Servers.

Icecast is an audio/video streaming media server that supports Ogg, Opus, WebM, and MP3 streams. It can be used to create everything from Internet radio stations to jukeboxes and many things in between. Previously, we have used Raspberry Pi to build many interesting projects, which you can also check.

Components Required

  • Raspberry Pi
  • USB Microphone

How to Install DarkIce and Icecast onto Raspberry Pi

Before installing the DarkIce and Icecast, the Raspberry Pi needs to be fully updated. Use the below commands to update the Raspberry Pi to its latest version:

sudo apt-get update
sudo apt-get upgrade

Use the below commands to download the darkice deb package and install it. The default DarkIce package comes without MP3 support.

Wget https://github.com/x20mar/darkice-with-mp3-for-raspberry-pi/blob/master/darkice_1.0.1-999~mp3+1_armhf.deb?raw=true
mv darkice_1.0.1-999~mp3+1_armhf.deb?raw=true darkice_1.0.1-999~mp3+1_armhf.deb
sudo apt-get install libmp3lame0 libtwolame0
sudo dpkg -i darkice_1.0.1-999~mp3+1_armhf.deb

Now, before configuring, DarkIce will need to install Icecast on Raspberry Pi. Use the below command to install the Icecast:

sudo apt-get install icecast2

During the installation process, it will ask you if you want to configure Icecast2. Select Yes.

Icecast on Raspberry Pi

The next screen will ask you to specify the domain name. Select OK to use the default hostname "localhost".

Icecast Configuration

Now, in the next steps, you will be required to add 3 passwords. The first one is to control access to media sources, the second is to use stream relays, and the third password is to grant access to the administration console. Click ‘ok’ to use the default password. The default username will be “admin”.

DarkIce on Raspberry Pi

After installing the Icecast2, we need to create a darkice config file to use the right sound card and talk to icecast2. Create a config file using the following command:

sudo nano darkice.cfg

Then copy and paste these configurations in the file:

# this section describes general aspects of the live streaming session
duration     = 0     # duration of encoding, in seconds. 0 means forever
bufferSecs   = 5     # size of internal slip buffer, in seconds
reconnect    = yes   # reconnect to the server(s) if disconnected
# this section describes the audio input that will be streamed
device          = plughw:0,0  # Soundcard device for the audio input
sampleRate      = 22050     # sample rate in Hz. try 11025, 22050 or 44100
bitsPerSample   = 16        # bits per sample. try 16
channel         = 2         # channels. 1 = mono, 2 = stereo
# this section describes a streaming connection to an IceCast2 server
# there may be up to 8 of these sections, named [icecast2-0] ... [icecast2-7]
bitrateMode     = abr       # average bit rate
format          = mp3       # format of the stream: ogg vorbis
bitrate         = 320       # bitrate of the stream sent to the server
server          = localhost # host name of the server
port            = 8000      # port of the IceCast2 server, usually 8000
password        = lolcat123 # source password to the IceCast2 server
mountPoint      = Stream.mp3  # mount point of this stream on the IceCast2 server
name            =  Raspberry Pi Stream # name of the stream
description     = Broadcast from Raspberry Pi # description of the stream
#public          = yes       advertise this stream?

Save the changes using Ctrl+X > Y > Enter.

Then create another file named "darkice.sh" using the below command:

sudo nano darkice.sh

Paste the below line in the file. This line contains the address to the configuration file.

sudo /usr/bin/darkice -c /home/pi/darkice.cfg

Then make the darkice.sh file executable using the below command:

sudo chmod 777 /home/pi/darkice.sh

Next, start the Icecast2 service using the below command:

sudo service icecast2 start

Boot on start:

Now, we have DarkIce working and everything we now need to make DarkIce run as soon as Raspberry Pi starts. For that use the below command to open up crontab:

crontab –e

And add the below command at the end of the file. Change the file path to match your installation directory.

@reboot sleep 10 && sudo /home/pi/darkice.sh

Save the changes by typing CTRL+X, then Y, then pressing the ENTER key. With this done, the setup is over. Reboot the Pi using the below command:

sudo reboot

Testing the Raspberry Pi Internet Radio

Now that everything is ready, let’s test if the stream was set up correctly or not. For that go to your browser type http:// Pi IP Address:8000. Mine is

Raspberry Pi Internet Radio

Click on M3U in the top right corner or enter http:// to open the stream. If you're able to listen to the content, the stream is running properly.

Raspberry Pi Internet Radio

This is how you can build a Raspberry Pi Internet Radio and Streaming Station. A complete working video is given below.


Have any question realated to this Article?

Ask Our Community Members