Installing ghpsdr3-alex on Raspberry Pi
I recommend installing either the raspbian or raspbian pisces distributions as there is no Ubuntu release to date.
All the pre-req packages mentioned for the Ubuntu installation are also needed for the Raspberry Pi and are available using "apt-get install" as usual.
- The RasPi USB subsystem is sensitive to power supply voltage levels - A supply of 5.25V at 2A is recommended. With +5.17V I was getting on-board Ethernet errors and system hangs when one more device besides keyboard and mouse were plugged in to the on-board USB ports or an outboard powered USB HUB. Increasing the voltage to +5.27V solved the problem.
- Do not use power from a USB PC port or from a USB Hub.
Once it's up and running, some details that may help in setting up the hardware for use - I'm currently overclocking at 1GHz:-
Keyboard, mouse, usb sound card and Ethernet fully operational using the 7-port USB hub. root@pisces:~# lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 0424:9512 Standard Microsystems Corp.
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp.
Bus 001 Device 004: ID 050d:0307 Belkin Components USB 2.0 - 7 ports Hub [FSU307]
Bus 001 Device 005: ID 04f3:0103 Elan Microelectronics Corp.
Bus 001 Device 006: ID 041e:3040 Creative Technology, Ltd SoundBlaster Live! 24-bit External SB0490
Bus 001 Device 007: ID 0fe6:8101 Kontron (Industrial Computer Source / ICS Advent) DM9601 Fast Ethernet Adapter
Bus 001 Device 008: ID 047d:1022 Kensington Orbit Optical
root@pisces:~# ifconfig eth0 Link encap:Ethernet HWaddr b8:27:eb:2c:07:c9
inet addr:192.168.10.31 Bcast:192.168.10.255 Mask:255.255.255.0 inet6 addr: fe80::ba27:ebff:fe2c:7c9/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:410 errors:0 dropped:0 overruns:0 frame:0 TX packets:377 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:28905 (28.2 KiB) TX bytes:35938 (35.0 KiB)
eth1 Link encap:Ethernet HWaddr 00:10:14:00:9f:fa
inet addr:192.168.2.199 Bcast:192.168.2.255 Mask:255.255.255.0 inet6 addr: fe80::210:14ff:fe00:9ffa/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:5 errors:0 dropped:0 overruns:0 frame:0 TX packets:7 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:230 (230.0 B) TX bytes:592 (592.0 B)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
root@pisces:~# cat /proc/asound/cards
0 [External ]: USB-Audio - SB Live! 24-bit External Creative Technology SB Live! 24-bit External at usb-bcm2708_usb-1.3.3, full spe 1 [ALSA ]: BRCM bcm2835 ALSbcm2835 ALSA - bcm2835 ALSA bcm2835 ALSA
I had originally forgotten to add snd-bcm2835 to /etc/modules which is why the SB Live! 24 is card 0. Rebooting with just the on-board sound card then adding the SB Live! 24 USB changed the on-board to card 0 and the SB Live! 24 USB is now card 1. I have further tests to do, mainly with sound, but now the Rpi is looking much healthier.
It's running at 1GHz with this config.txt file. root@pisces:~# cat /boot/config.txt
root@pisces:~# cat /etc/network/interfaces
- Used by ifup(8) and ifdown(8). See the interfaces(5) manpage or
- /usr/share/doc/ifupdown/examples for more information.
iface lo inet loopback
- File: ifcfg-eth0
iface eth0 inet static
iface eth1 inet static
root@pisces:~# cat /etc/modules
- /etc/modules: kernel modules to load at boot time.
- This file contains the names of kernel modules that should be loaded
- at boot time, one per line. Lines beginning with "#" are ignored.
- Parameters can be specified after the module name.
== Headline text == * SOFTWARE * If you build ghpsdr3-alex already it's a case of following the same procedure with the following caveats that apply to the RasPi ARM architecture. What follows is a blow by blow account of how I did it for the iw0hdv branch which supports my HiQSDR+Preselector.
Subject: [n2adr-sdr] Raspberry Pi running ghpsdr3-alex
I did a fresh clone and changed to the iw0hdv branch from the default master branch.
- git checkout iw0hdv
Removed all traces of -msse, -msse3 and -ffast-math from Makefile.am and Makefile.in where appropriate in the subdirectories.
- autoreconf -i
- ./configure CFLAGS='-O3 -pipe -march=armv6 -mfpu=vfp -mfloat-abi=hard' CXXFLAGS='-O3 -pipe -march=armv6 -mfpu=vfp -mfloat-abi=hard'
- make all && make all install
Running hiqsdr-server at 48K/96K and dspserver (built with qt4) as qt5 is not yet available. There are instructions for building qt5 but following them bullet by bullet it failed not far along. The instructions are for building on i386 - I have put out a request for .deb packages or at least built tarballs to the Raspberry Pi forum.
QtRadio running on another box using the connection from the server list. Sound is a touch distorted, quite distorted on start up of QtRadio and spectrum is always a little bit slow.
When a slave connected and tried changing frequency, dspserver crashed - dspserver can be a bit crash happy.
The first thing I tried on the Pi was QtRadio standalone, spectrum and waterfall were OK but no sound.
Just now a client using glSDR (5) is attempting to change frequency, sound went quite distorted then dspserver crashed.
Restarted dspserver and QtRadio sound started very distorted before it settled down to reasonable.
Installing on ODROID-X and Pandaboard
There are 2 Ubuntu images downloadable from hardkernel.com
The image needs to be decompressed e.g:- "gzip -d odroidx_20120906-linaro-precise-ubuntu-desktop_with_HDMI.img.gz" then burned on to a SD card (full size or microSD with a full size adaptor).
"dmesg" will tell you what it's called when you attach the reader with the SD card inserted to a USB port,e.g /dev/sdb, /dev/sdc, etc.
"dd if=odroidx_20120906-linaro-precise-ubuntu-desktop_with_HDMI.img of=/dev/sdc bs=1M"
When it completes, insert the SD card into the ODROID-X and boot up - the ODROID-X has a power on and a reset switch on board.
There is a way to prepare the SD card using Windows but I don't do Windows, consult http://beagleboard.org/demo/angstrom/ for a link to "dd" for Windows.
I use the HDMI.img as I have a spare HDMI port on one of my monitors - it requires a micro HDMI cable, standard HDMI on the monitor end and micro HDMI on the ODROID-X board.
When you have the ODROID-X all up and running and installed the pre-req packages for ghpsdr3-alex - there are a lot of them as is the case with any Ubuntu or other distribution, the build instructions are as follows:-
$ git clone git://github.com/alexlee188/ghpsdr3-alex.git
$ cd ghpsdr3-alex
Then I run a script to remove -msse and friends, the script I call "rm_words" made executable and put in /usr/local/bin
find ./ -type f | xargs sed -i 's/-msse3//g'
find ./ -type f | xargs sed -i 's/-msse//g'
find ./ -type f | xargs sed -i 's/-ffast-math//g'
set_Qt-5.0.0_path.src contains "export PATH=/opt/qt5/bin:$PATH" and I'm using the qt5-daily from edgers.
The configure script I call "alex-config" made executable and put in /usr/local/bin
./configure CFLAGS='-O3 -pipe -mfpu=neon -fno-tree-vectorize -fopenmp' CXXFLAGS='-O3 -pipe -mfpu=neon -fno-tree-vectorize -fopenmp'
$ make -j 4 all
$ sudo make -j 4 all install
The ODROID-X is treated the same as the Pandaboard and the Raspberry Pi when building ghpsdr3-alex, except the Pandaboard uses the normal Ubuntu ARM distribution while the ODROID-X uses the linaro Ubuntu ARM distribution built especially for it. The Raspberry Pi uses the debian raspbian distribution.
The distributions are all Ubuntu ARM and packages are updated, upgraded and installed in exactly the same manner as Ubuntu for x86/x86_64 so there is no learning curve involved if you already know Ubuntu.
I use 32GB Class 10 (the fastest) SD cards but recommend at least 16GB to give ample space to install and build other software. SD cards can either be full size or microSD in a full size adaptor.
I have been running hiqsdr-server, dspserver and QtRadio on the ODROID-X for a few weeks 24/7.
"dsploop" by Alex has stopped the dspserver crashes that periodically occurred on all platforms.