Install and configure BUTT (Broadcast Using This Tool) in Linux

Home > Search
  by

The following article are my notes on how I got BUTT to work on Linux Mint. If you are using any other Debian family Linux distribution, such as Debian or Ubuntu, use this article as a sort of general guideline, as the procedure may be different on other Debian family distributions. However, this should totally work on Linux Mint. If you are using a Red Hat family distribution, such as Red Hat or CentOS, this installation procedure is going to be quite a bit different, since Red Hat distributions use yum instead of apt-get.  I tend to leans towards using a Debian family Linux distributions for pro audio services, since the Debian family of distributions seem to have greater support and user base for pro audio than the Red Hat family of Linux distributions. I would go with a Red Hat distribution for server side service, such as a web server.

BUTT needs a number of dependencies. If your system does not have these packages, install the packages. If possible, issues these commands as root or using sudo to prevent authorization issues.

apt-get install libfltk1.3-dev
apt-get install libportaudio-dev
apt-get install libvorbis-dev
apt-get install libogg-dev
apt-get install libopus-dev
apt-get install libflac-dev
apt-get install libsamplerate-dev
apt-get install libmp3lame-dev
apt-get install libfdk-aac-dev
apt-get install build-essentials
apt-get install gcc
apt-get install gcc-c++
apt-get install portaudio19-dev
apt-get install libasound2 
apt-get install alsa-utils 
apt-get install alsa-oss
apt-get install jackd2

 

BUTT needs version 19 of portaudio. apt-get may not install version 19. Determine the version of portaudio on your system.

apt-show-versions libportaudio-dev

 

If you have a prior version of portaudio installed, remove portaudio.

apt-get remove libportaudio-dev

 

Go to http://www.portaudio.com/download.html and downloaded version 19. Extract the contents of the archive.

tar -zxvf pa_stable-version.tzg

 

Once extracted, you should have a directory named portaudio.  In the portaudio directory, run the configure script.

cd portaudio
./configure

 

Once configured, make and then install portaudio.

make
make install

 

After all the BUTT dependencies have been installed, at the sourceforge page for BUTT, download the Source Code (tar.gz) file. This will put the butt_<version>.tar.gz file in /home/user/downloads. Extract the BUTT archive. This will create a directory named butt-version.

tar -xzvf butt-<version>.tar.gz

 

Enter the butt-version directory, and configure butt.

cd butt-version
./configure

 

Make and install butt.

make
make install


You should now be able to launch the graphical BUTT user interface by issuing the BUTT command.

butt

 

At Main Tab > Server, you can configure a Shoutcast or Icecast server. If setting up an Icecast server, enter the IP address, port, and password of your Icecast server, which you can get from your icecast.xml file. This assume you have already installed and configured an Icecast server.



 

While probably not neseccary for initial startup, it's usually a good idea to set your preferred bit and sample rates.


 

Always SAVE SETTINGS after you make a change.



Add a Comment




We will never share your name or email with anyone. Enter your email if you would like to be notified when we respond to your comment.




Please enter in the box below so that we can be sure you are a human.




Comments


April 24th, 2018 by Aub
That was fantastic, from your tutorial I finally installed BUTT on ubuntu 16.04 with little more in my dependencies. It just helped me to know that the issue I had was almost the dependencies.


April 24th, 2018 by Aub
Dependencies: apt-get install libfltk1.3-dev apt-get install libportaudio-dev apt-get install libvorbis-dev apt-get install libogg-dev apt-get install libopus-dev apt-get install libflac-dev apt-get install libsamplerate-dev apt-get install libmp3lame-dev apt-get install build-essentials apt-get install gcc apt-get install gcc-c++ apt-get install portaudio19-dev apt-get install libasound2 alsa-utils alsa-oss apt-get install jackd2 #If you encounter any problem regarding portaudio Go to: http://www.portaudio.com/download.html and download (in my case) pa_stable_v190600_20161030.tgz extract the file and do: tar -xzf pa_stable__date.tgz cd portaudio ./configure make make install #If you encounter any problem regarding the lbfdk_aac apt-get install libfdk-aac-dev Installing BUTT: tar -xzf butt-.tar.gz #your butt version in my case: tar -xzf butt-0.1.16.tar.gz cd butt-0.1.13 ./configure make sudo make install


April 24th, 2018 by Jeremy (moderator)
Thank you very much for sharing Aub. I cleaned up this article and I also added your additions, to hopefully help others who happen upon this article. It's great to know that this worked for you on Ubuntu, as I am a Mint user. You have made the Internet a better place. Happy streaming!


July 29th, 2018 by Attila
Hey Jeremy! I've been trying to follow your instructions on installing BUTT on Ubuntu 18.04. When I arrived to the stage of installing "libportaudio-dev" from the downloaded file, and I entered the last command (make install) I got the following message in terminal: "/usr/bin/install -c -d /usr/local/lib /bin/bash ./libtool --mode=install /usr/bin/install -c lib/libportaudio.la /usr/local/lib libtool: install: /usr/bin/install -c lib/.libs/libportaudio.so.2.0.0 /usr/local/lib/libportaudio.so.2.0.0 /usr/bin/install: cannot remove '/usr/local/lib/libportaudio.so.2.0.0': Permission denied Makefile:190: recipe for target 'install' failed make: *** [install] Error 1 " Any ideas?


July 29th, 2018 by Jeremy (moderator)
Hey Attila,

  • When I get a "Permission denied" response when attempting to install or make, the first thing I do is to attempt the install or make as root (if possible).
  • If I still get "Permission denied" as root, then I switch back to my normal user account, and attempt the install or make.
  • If I still get "Permission denied", as my normal user, I try to install or make using sudo.
  • If I still get "Permission denied", I usually think that perhaps the files were downloaded as "john" but are attempting to be insalled as "jane". In other words, if "john" downloaded the files, then I attempt to install the files as "john". Or, I'll download the files as "root" and then attempt to install or make the files as "root".
  • If I still get "Permission denied", then perhaps SELinux is interferring with the install. If possible, I'll temporarily disable SELinux to see if SELinux is indeed the cause of the "Permission denied" response - `setenforce Permissive`.
  • If I still get "Permission denied", I'll check /var/log/messages, /var/log/secure, or journalctl to see if there are any events in the logs that may indicate why permission is denied.
  • If wouldn't try to use chown (change owner) or chmod (change mode) on the source files, as the source files should have the appropriate permission for make.
  • If "Permission denied" still appears, then I would contact the fella that made Butt (he is actually quite reachable).


October 10th, 2018 by DexterIsMyHero
Tried this on Debian Stretch. Your article seems to suggest it's possible. Debian was mentioned. Sadly I find that several of these packages not available, or have unmet dependencies. I have free, nonfree and contrib sources enabled. Is it even possible to install this on Debian Stretch?


November 1st, 2018 by Saiqul Kencoz
Hello there, i've been trying any solution but i can't solved it out, i got error on my port-audio, i have port audio 19 installed from www.portaudio.com but when i try to do a make install, i found this port_audio.cpp: In function ‘int snd_callback(const void*, void*, long unsigned int, const PaStreamCallbackTimeInfo*, PaStreamCallbackFlags, void*)’: port_audio.cpp:554:72: error: invalid conversion from ‘const float*’ to ‘float*’ [-fpermissive] src_short_to_float_array((short*)pa_pcm_buf, srconv_stream.data_in, frameCount*cfg.audio.channel); ~~~~~~~~~~~~~~^~~~~~~ In file included from port_audio.cpp:24:0: /usr/include/samplerate.h:171:6: note: initializing argument 2 of ‘void src_short_to_float_array(const short int*, float*, int)’ void src_short_to_float_array (const short *in, float *out, int len) ; ^~~~~~~~~~~~~~~~~~~~~~~~ port_audio.cpp:585:72: error: invalid conversion from ‘const float*’ to ‘float*’ [-fpermissive] src_short_to_float_array((short*)pa_pcm_buf, srconv_record.data_in, frameCount*cfg.audio.channel); ~~~~~~~~~~~~~~^~~~~~~ In file included from port_audio.cpp:24:0: /usr/include/samplerate.h:171:6: note: initializing argument 2 of ‘void src_short_to_float_array(const short int*, float*, int)’ void src_short_to_float_array (const short *in, float *out, int len) ; ^~~~~~~~~~~~~~~~~~~~~~~~ port_audio.cpp: In function ‘void snd_close()’: port_audio.cpp:776:24: error: invalid conversion from ‘const void*’ to ‘void*’ [-fpermissive] free(srconv_stream.data_in); ~~~~~~~~~~~~~~^~~~~~~ In file included from /usr/include/c++/7/cstdlib:75:0, from /usr/include/c++/7/stdlib.h:36, from port_audio.cpp:18: /usr/include/stdlib.h:563:13: note: initializing argument 1 of ‘void free(void*)’ extern void fr


December 5th, 2018 by Tom Sullivan
I really appreciate your work to assemble this amount of detail. I didn't get a compile (Ubuntu 18.04) but I got an education in the process of tracking down missing components. Meanwhile I can run BUTT on my Mac. Tom(12/5/18)