Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Script to compile and install Dream DRM receiver software on Ubuntu
#!/bin/bash
# *** Script to compile and install Dream DRM receiver software on Ubuntu
# *** and other APT based distros.
# *** More at: http://onetransistor.blogspot.com/2015/12/compile-install-dream-drm-linux.html
# *** based on instructions at: http://drm.sourceforge.net/wiki/index.php/Building_on_apt_based_distros
set -e
QMAKE_EXEC=qmake-qt4
MAKE_ARGS=-j3
# 1. Install required dependencies
sudo apt install libhamlib2 libqwt6abi1
sudo apt install g++ unzip make qt4-dev-tools automake libtool libtool-bin libqtwebkit-dev libqtwebkit4 libqt5webkit5-dev libpulse-dev libhamlib-dev libfftw3-dev libqwt-dev libsndfile1-dev zlib1g-dev libgl1-mesa-dev libqt4-opengl-dev
# 2. Build and install FAAD2 library
wget http://downloads.sourceforge.net/faac/faad2-2.7.tar.gz
tar zxf faad2-2.7.tar.gz
cd faad2-2.7
. bootstrap
./configure --enable-shared --without-xmms --with-drm --without-mpeg4ip
make $MAKE_ARGS
sudo cp include/faad.h include/neaacdec.h /usr/include
sudo cp libfaad/.libs/libfaad.so.2.0.0 /usr/local/lib/libfaad2_drm.so.2.0.0
sudo ln -s /usr/local/lib/libfaad2_drm.so.2.0.0 /usr/local/lib/libfaad2_drm.so.2
sudo ln -s /usr/local/lib/libfaad2_drm.so.2.0.0 /usr/local/lib/libfaad2_drm.so
cd ..
# 3. Build and install FAAC library
wget http://downloads.sourceforge.net/faac/faac-1.28.tar.gz
tar zxf faac-1.28.tar.gz
cd faac-1.28
. bootstrap
./configure --with-pic --enable-shared --without-mp4v2 --enable-drm
make $MAKE_ARGS
sudo cp include/faaccfg.h include/faac.h /usr/include
sudo cp libfaac/.libs/libfaac.so.0.0.0 /usr/local/lib/libfaac_drm.so.0.0.0
sudo ln -s /usr/local/lib/libfaac_drm.so.0.0.0 /usr/local/lib/libfaac_drm.so.0
sudo ln -s /usr/local/lib/libfaac_drm.so.0.0.0 /usr/local/lib/libfaac_drm.so
cd ..
# 4. Build and install Dream
wget http://downloads.sourceforge.net/drm/dream-2.1.1-svn808.tar.gz
tar zxf dream-2.1.1-svn808.tar.gz
cd dream
sed -i -- 's#$$OUT_PWD#/usr#g' dream.pro
sed -i -- 's#faad_drm#faad2_drm#g' dream.pro
$QMAKE_EXEC
make $MAKE_ARGS
sudo cp dream /usr/local/bin/dream
sudo cp src/GUI-QT/res/MainIcon.svg /usr/share/icons/dream.svg
printf "[Desktop Entry]\nVersion=1.0\nType=Application\nName=Dream\nComment=Software Digital Radio Mondiale Receiver\nTryExec=/usr/local/bin/dream\nExec=/usr/local/bin/dream\nIcon=dream.svg\nCategories=Audio;AudioVideo;Science;Electronics\n" | tee dream.desktop
cp dream.desktop ~/.local/share/applications/dream.desktop
cd ..
sudo ldconfig
# 5. Cleanup
rm dream-2.1.1-svn808.tar.gz
rm faac-1.28.tar.gz
rm faad2-2.7.tar.gz
rm -rf ./dream
rm -rf ./faac-1.28
rm -rf ./faad2-2.7
# Optional: uncomment to remove dev libs
#sudo apt -y purge qt4-dev-tools automake libtool libtool-bin libqt5webkit5-dev libpulse-dev libhamlib-dev libfftw3-dev libqwt-dev libsndfile-dev
#sudo apt -y autoremove
@mp107

This comment has been minimized.

Copy link

mp107 commented May 5, 2017

In order to properly build the Dream I had to install also libqt4-opengl-dev.
Linux Mint 18 MATE.

@braselectron

This comment has been minimized.

Copy link

braselectron commented May 30, 2017

I am trying this on Ubuntu 14.04.5 (32bits) and what happens is that after making dream, it crashes with Segmentation fault (core dumped)

Also I needed to use qt5 (qt4 will not work)

Making faac and faad2 did go with many warning messages.

~/Downloads/SDR/dream$ qmake
Project MESSAGE: Qt 5 release GUI mode
Project MESSAGE: building on Linux
Project MESSAGE: with FAAD2
Project MESSAGE: with FAAC
Project MESSAGE: with libsndfile
Project MESSAGE: with hamlib
Project MESSAGE: with pulseaudio

Then

~/Downloads/SDR/dream$ make
g++ -Wl,-O1 -Wl,-rpath-link,/usr/lib/i386-linux-gnu -o dream obj/Pacer.o obj/Hamlib.o obj/Rig.o obj/RigDlg.o obj/drm_pulseaudio.o 
        obj/AMDemodulation.o obj/AMSSDemodulation.o obj/ChanEstTime.o obj/ChannelEstimation.o obj/IdealChannelEstimation.o
        obj/TimeLinear.o obj/TimeWiener.o obj/DABMOT.o obj/DataDecoder.o obj/DataEncoder.o obj/epgutil.o obj/Experiment.o 
        obj/Journaline.o obj/crc_8_16.o obj/dabdgdec_impl.o obj/log.o obj/newsobject.o obj/newssvcdec_impl.o obj/NML.o obj/Splitter.o 
        obj/MOTSlideShow.o obj/DataIO.o obj/ChannelSimulation.o obj/DrmReceiver.o obj/DRMSignalIO.o obj/DrmSimulation.o 
        obj/DrmTransmitter.o obj/FAC.o obj/main.o obj/InputResample.o obj/BlockInterleaver.o obj/SymbolInterleaver.o obj/IQInputFilter.o 
        obj/MatlibSigProToolbox.o obj/MatlibStdToolbox.o obj/AFPacketGenerator.o obj/MDIDecode.o obj/MDIInBuffer.o obj/MDIRSCI.o
        obj/MDITagItemDecoders.o obj/MDITagItems.o obj/PacketSinkFile.o obj/PacketSocket.o obj/PacketSourceFile.o obj/Pft.o 
        obj/RCITagItems.o obj/RSCITagItemDecoders.o obj/RSISubscriber.o obj/TagPacketDecoder.o obj/TagPacketDecoderMDI.o
        obj/TagPacketDecoderRSCIControl.o obj/TagPacketGenerator.o obj/BitInterleaver.o obj/ChannelCode.o obj/ConvEncoder.o
        obj/EnergyDispersal.o obj/Metric.o obj/MLC.o obj/QAMMapping.o obj/TrellisUpdateMMX.o obj/TrellisUpdateSSE2.o 
       obj/ViterbiDecoder.o obj/MSCMultiplexer.o obj/CellMappingTable.o obj/OFDMCellMapping.o obj/OFDM.o obj/Parameter.o 
       obj/PlotManager.o obj/ReceptLog.o obj/Resample.o obj/ResampleFilter.o obj/Scheduler.o obj/SDCReceive.o obj/SDCTransmit.o 
       obj/ServiceInformation.o obj/SimulationParameters.o obj/audiofilein.o obj/aac_codec.o obj/AudioCodec.o obj/AudioSourceDecoder.o
       obj/AudioSourceEncoder.o obj/null_codec.o obj/opus_codec.o obj/FreqSyncAcq.o obj/SyncUsingPil.o obj/TimeSync.o 
       obj/TimeSyncFilter.o obj/TimeSyncTrack.o obj/TableCarMap.o obj/TableFAC.o obj/TableStations.o obj/TextMessage.o obj/CRC.o 
       obj/FileTyper.o obj/LogPrint.o obj/Reassemble.o obj/Settings.o obj/Utilities.o obj/Version.o obj/Logging.o obj/EPG.o obj/epgdec.o 
       obj/Util.o obj/BWSViewer.o obj/AnalogDemDlg.o obj/CodecParams.o obj/CWindow.o obj/DialogUtil.o obj/DRMPlot.o obj/EPGDlg.o 
       obj/EvaluationDlg.o obj/fdrmdialog.o obj/fmdialog.o obj/GeneralSettingsDlg.o obj/jlbrowser.o obj/JLViewer.o obj/LiveScheduleDlg.o 
       obj/MultColorLED.o obj/MultSettingsDlg.o obj/Schedule.o obj/SlideShowViewer.o obj/SoundCardSelMenu.o obj/StationsDlg.o 
       obj/TransmDlg.o obj/qrc_icons.o obj/moc_Rig.o obj/moc_RigDlg.o obj/moc_Logging.o obj/moc_BWSViewer.o 
       obj/moc_AnalogDemDlg.o obj/moc_CodecParams.o obj/moc_CWindow.o obj/moc_DialogUtil.o obj/moc_DRMPlot.o 
       obj/moc_EPGDlg.o obj/moc_EvaluationDlg.o obj/moc_fdrmdialog.o obj/moc_fmdialog.o obj/moc_GeneralSettingsDlg.o 
       obj/moc_jlbrowser.o obj/moc_JLViewer.o obj/moc_LiveScheduleDlg.o obj/moc_MultColorLED.o obj/moc_MultSettingsDlg.o 
       obj/moc_SlideShowViewer.o obj/moc_SoundCardSelMenu.o obj/moc_StationsDlg.o obj/moc_TransmDlg.o
       -L/usr/lib -ldl -lrt -lfftw3 -lz -lfaad2_drm -lfaac_drm -lsndfile -lhamlib -lqwt -lpulse -lQt5WebKitWidgets -L/usr/lib/i386-linux-gnu
      -lQt5Quick -lQt5OpenGL -lQt5PrintSupport -lQt5Location -lQt5WebKit -lQt5Qml -lQt5Widgets -lQt5Positioning -lQt5Sensors -lQt5Xml 
      -lQt5Network -lQt5Gui -lQt5Core -lGL -lpthread

Then

~/Downloads/SDR/dream$ dream
Segmentation fault (core dumped)

Can you help? Any suggestions ?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.