wiki:Documentation/HOWTO/BuildOnPi3
Last modified 7 months ago Last modified on 06/25/16 17:42:09

Building on Raspian Pi 3 B


  1. Build dependencies
  2. Getting the source
  3. Compiling fldigi
  4. Final Touches
  5. Icing on the cake
    1. Set up a ham menu
    2. Add desktop paging


Build dependencies

This is a recount of my recent experience with a brand new VILROS Pi 3 B. I purchased a Pi 3 B with case, 2.4 Amp wall wart power supply, HDMI cable, and a 16 GB SD card with NOOBS already installed. Take a look at the Amazon participating vendors if you can't decide where to purchase a unit. It took less than an hour to assemble and begin the installation of the Raspbian OS. I recommend that you have the computer connected to the internet via ethernet before you begin the OS install. As of 25 June I have created 4 Pi-3B systems using these instructions. The last one with a 64 GB SD card.

When you have your desktop screen up and working correctly you can then proceed.

Raspbian is a bit more like Ubuntu than Debian in that it uses a similar security model. You never have to log in as root, but use the "sudo" command when root access is necessary for certain commands. I strongly recommend that you change the default password for the "pi" user ... before you begin.

Open a terminal window. First we need to insure that the source repository is enabled. Use the terminal line editor, 'nano' to modify the /etc/apt/sources.list to include the line

deb-src http://archive.raspbian.org/raspbian/ jessie main contrib non-free rpi

$ sudo nano /etc/apt/sources.list

and remove the leading # from the line which contains that string.

Use control-O, control-X to save the change and exit nano.

Check your work:

$ cat /etc/apt/sources.list

Ensure that you see the line that starts with "deb-src" and it's NOT disabled with a preceding "#" character.

Update the apt repository data, and install libxft-dev. This library is needed for fldigi (and any other fltk application) to produce nicely rendered fonts on the computer screen.

$ sudo apt-get update
$ sudo apt-get install libxft-dev

This will automatically add a number of dependent packages:

libfontconfig1-dev
libpthread-stubs0-dev
libxdmcp-dev
x11proto-input-dev
libx11-doc
xorg-sgml-doctools
x11proto-core-dev
x11proto-render-dev
libxrender-dev
libxau-dev
x11proto-kb-dev
libxcb1-dev
libx11-dev
libxft-dev

On my installation I had to abort the libX11-doc download (use control-C) and repeat the "sudo apt-get install libxft-dev". apt-get will not repeat any successful downloads.

This is the easiest way to get the rest of the build dependencies for fldigi, etal:

$ sudo apt-get build-dep fldigi

Note the lines that contain "fltk" as we will want to remove those and install our own using a local build of the fltk library. I accomblished this with:

$ sudo apt-get remove libfltk-cairo1.3
$ sudo apt-get remove libfltk-forms1.3
$ sudo apt-get remove libfltk-gl1.3
$ sudo apt-get remove libfltk-images1.3
$ sudo apt-get remove libfltk1.3-dev

Next you will need to build fltk from source. I recommend building the library and the applications in a separate directory in your $HOME directory.

$ cd
$ mkdir dev
$ cd dev
$ wget fltk.org/pub/fltk/1.3.3/fltk-1.3.3-source.tar.gz

$ tar xzf fltk-1.3.3-source.tar.gz
$ mkdir tarballs
$ mv fltk*gz tarballs

$ cd fltk-1.3.3
$ ./configure
$ make
$ sudo make install

$ sudo ldconfig

Note: fltk default configuration should include

--enable-xft --enable-threads --enable-X11 --enable-shared

Checked the fltk version

$ fltk-config --version

yup ... it's 1.3.3

and that it's GUI builder, fluid, is installed in /usr/local/bin.

$ ls /usr/local/bin

Getting the source

Using a web browser download the latest fldigi source compressed archive to your /home directory. Or you can download using wget

$ wget https://sourceforge.net/projects/fldigi/files/fldigi/fldigi-3.23.12.tar.gz

flamp, fllog, flmsg, flnet, flrig, flwkey, and flwrap can be similarly downloaded.

$ wget https://sourceforge.net/projects/fldigi/files/flmsg/flmsg-3.00.01.tar.gz
$ wget https://sourceforge.net/projects/fldigi/files/flrig/flrig-1.3.26.tar.gz

Note that using wget from the terminal command line will generally be faster than using the web based http access. You could also download the latest alpha version for your new penny whistle computer.

The source compressed archive contains all the files needed to compile fldigi. xxx.tar.gz , xxx.tgz are common naming conventions for compressed archived created using the program 'tar'. We are still in the dev directory, right ?

$ tar xzf fldigi-3.23.12.tar.gz
$ mv fldigi*gz tarballs

Change the version number if a newer version or the alpha version of the given Fl-suite program was downloaded

$ cd fldigi-3.23.12

Compiling fldigi

At this point you will have a source tree extracted from the tarball containing a configure script. The following command will prepare the source for compilation.

The configure command generates the Makefiles that make uses to run the compiler and linker. configure has various options to fine-tune the build.

$ ./configure
$ make
$ sudo make install

Note: The compile will fail if you set any ./configure switches for optimization, such as --enable-optimizations=native.

Repeat the configure, make, and install for flrig, flmsg, etc.

Final Touches

The recommended sound server for fldigi is Pulse Audio, but you will need to install the volume control.

$ sudo apt-get install pavucontrol
$ pulseaudio --start

The 'pi' user should already be a member of both the audio and dialout groups. You can insure that by

$ sudo adduser pi dialout
$ sudo adduser pi audio

The OS will probably tell you that pi is already a member of those groups.

Log out and then log back in to Raspbian. That insures that any group privileges will have been updated.

Go get a cup of tea, coffee, or your favorite beverage.

Connect your transceiver audio and rig control interface(s). This was easy for me as the IC7200 has a single USB port for both. The Raspbian OS recognizes the IC7200 USB hub and both devices. No special drivers are needed.

The pavucontrol is on the Raspbian sub-menu for audio applications. Fldigi, flrig, etal are all found on the Raspbian sub-menu "Internet".

Start pavucontrol, and then fldigi. Configure fldigi, selecting PulseAudio? for the sound interface. Select "Fastest Sinc Interpreter" on the Audio/Settings? tab. Let's keep that little CPU from burning up.

View the pavucontrol and set up the Record and Playback to correctly connect the h/w to fldigi.

You should see signals on the waterfall.

Start flrig and configure it for you transceiver setup. For my IC7200 I had a choice of two serial port selections on that combo control:

  1. /dev/serial/by-id/usb-Silicon_Labs_CP2102_USB_to_UART_Bridge_Controller_IC-7200_0203232-if00-port0
  2. /dev/ttyUSB0

Either may be selected, I chose to use (a) Set baud rate and other parameters to match the IC7200 and bingo off and running with full rig control.

fldigi should immediately find flrig and the two programs will start their socket communications.

That should get you up and running with fldigi and flrig. These procedures were last tested on 05/31/2016 by W1HKJ.

Icing on the cake

These recommendations are really specific to the Openbox / LXDE desktop. Openbox is the default window manager used by the LXDE desktop environment on the Pi.

Set up a ham menu

Open the "Menu / Preferences / Main Menu Editor" and add a "New Menu" item. Name it "Ham Apps" and then populate it with flrig, fldigi, flmsg, etc.

Add the Openbox Configuration dialog

$ sudo apt-get install obconf

You will then have a new menu item "Menu / Preferences / Openbox Configuration Manager". You will need it for the next step.

Add desktop paging

To add a desktop pager to the LXDE panel proceed as follows:

Right click on an empty space on the panel.
Select "Add / Remove Panel Items"
Select the tab "Panel Applets"
Press the "Add" button
Select "Desktop pager"
Adjust position using the up/down buttons.
Close the Panel Preferences

Open the new Openbox Configuration Manager
Select the Desktops tab
Change the number of desktops to suit your operation.  Two is sufficient for my use.