By:
Comments Off

Whispering

For the last couple of days I have been using my RPi + KX3 to listen to WSPR and post spots up to the internet. This works well when I am working or away running errands and would not be using my station either way.

WSPR is a great application for the Raspberry Pi. It is a good low power approach to this compared to using a full sized PC and QRO (100w) radio. Right now for the receive function I am primarily using a shunt loaded tower that is tuned for 160m.  While it is not a properly tuned/loaded circuit it is a big antenna and makes a great general purpose receive antenna.

Yea, I know... I need to setup the cat/ptt controls between the RPi and KX3 so that it can transmit too.  --It is on my list of things to-do when time permits.

Ok.. it is time to focus on my evening activities... I have a week worth of MooC lectures to watch for two different classes.  I will leave the RPi and KX3 listening to the ether while I study.

73 de NG0R

By:
Comments Off

WSPR + RPi

I have been continuing to tweak the steps for installing WSPR on an RPi (ARM6) based upon feedback from folks on the internet.

My testing uses versions:
Image: 2014-12-24-wheezy-raspbian.zip
WSPR build: 4979

// WSPR installation procedure update on Raspberry Pi B by NG0R, John Hoaglun Feb 19th 2015 based upon some notes from Greg KI7MT
 // WSPR installation procedure update on Raspberry Pi B by NG0R, John Hoaglun Feb 18th 2015
 // WSPR installation procedure on Raspberry Pi 2 by OZ9U, Soeren Schmidt, Feb 16th 2015.
// Note: installation at your own risk.

sudo apt-get update
sudo apt-get install subversion python3-dev python3-numpy autoconf -y
sudo nano /etc/apt/sources.list
add deb http://mirrordirector.raspbian.org/raspbian/ jessie main contrib non-free rp

comment out wheezy
sudo apt-get update
sudo apt-get install python3-pil.imagetk -y
sudo nano /etc/apt/sources.list

comment out jessie
uncomment wheezy
sudo apt-get update
sudo apt-get install libportaudio2 portaudio19-dev libsamplerate0-dev libfftw3-dev -y
sudo nano /etc/apt/sources.list

uncomment jessie
comment out wheezy
sudo apt-get update
sudo apt-get install gcc-4.9 g++-4.9 gfortran-4.9  tk8.6-dev tcl8.6-dev python3-pip -y

//Note to self… manually removing and linking the compilers is less than desirable but pillow seems to break otherwise right now
cd /usr/bin
sudo rm gcc
sudo rm arm-linux-gnueabihf-gcc 
sudo ln -s gcc-4.9 gcc
sudo ln -s gcc-4.9 arm-linux-gnueabihf-gcc 
sudo rm g++
sudo ln -s g++-4.9 g++
sudo rm gfortran
sudo ln -s gfortran-4.9 gfortran
//Note to self… one of those pillow installs is not needed but I need to test it to figure out which one
sudo apt-get install --reinstall python3-pillow -y 
sudo pip3 install -I pillow==2.5.3

sudo apt-get install libjack-jackd2-0 portaudio19-dev -y
cd /home/pi
svn co svn://svn.code.sf.net/p/wsjt/wsjt/branches/wspr
cd wspr
./autogen.sh CC=gcc-4.9 FC=gfortran-4.9 CXX=g++-4.9 --with-f2py='/usr/bin/f2py3.4’
make && sudo make install

--------------------

References:

http://www.hoaglun.com/blog/2015/wspr-on-a-raspberry-pi

http://www.george-smart.co.uk/wiki/Compiling_WSPR

http://Naomi.mountains.net.au/hamradio/digital/wsjt-wsjtx.html

By:
Comments Off

WSRP + RPi + KX3

Making progress!

WSPR running on a Raspberry Pi

A few minutes of listening to WSPR on 40m

I have a KX3 (using I+Q) connected to my RPi listening to WSPR on 40m tonight.   I don't have the cat controls working yet but I will probably tackle that after I install FLDigi.  The RPi has no performance issues receiving and decoding WSPR. The CPU jumps up to 70% for a couple of seconds for the decode then goes back to under 20% during receive.

Pretty cool (and geeky) stuff.

73 de NG0R

By:
Comments Off

WSPR on a Raspberry PI

Wooo hoo..... Thanks Soren!

Soren OZ9U found my earlier blog posting from 1/25/2015 that had a partial recipe. He looked at the error and figured out that the gcc parameters that were being specified needed GCC v4.9. He sent me an updated install recipe that worked for him but only got me about 98% there.  I then pulled out my previous notes and was able to bridge the last couple of errors.

My testing uses versions:
Image: 2014-12-24-wheezy-raspbian.zip
WSPR build: 4912

// WSPR installation procedure update on Raspberry Pi B by NG0R, John Hoaglun Feb 18th 2015
// WSPR installation procedure on Raspberry Pi 2 by OZ9U, Soeren Schmidt, Feb 16th 2015.
// Note: installation at your own risk.

sudo apt-get install subversion python3-dev python3-numpy autoconf 
sudo nano /etc/apt/sources.list
<use jessie in /etc/apt/sources.list>
sudo apt-get update
sudo apt-get install python3-pil.imagetk
sudo nano /etc/apt/sources.list
<use wheezy in /etc/apt/sources.list>
sudo apt-get update
sudo apt-get install libportaudio2 portaudio19-dev libsamplerate0-dev cl-fftw3
sudo nano /etc/apt/sources.list
<use jessie in /etc/apt/sources.list>
sudo apt-get update
sudo apt-get install gcc-4.9 g++-4.9 gfortran-4.9
cd /usr/bin
sudo rm gcc
sudo rm arm-linux-gnueabihf-gcc 
sudo ln -s gcc-4.9 gcc
sudo ln -s gcc-4.9 arm-linux-gnueabihf-gcc 
sudo rm g++
sudo ln -s g++-4.9 g++
sudo rm gfortran
sudo ln -s gfortran-4.9 gfortran
sudo apt-get install tk8.6-dev tcl8.6-dev
sudo apt-get install python3-pip
sudo apt-get install --reinstall python3-pillow
sudo pip3 install -I pillow==2.5.3
sudo apt-get install libjack-jackd2-0
sudo apt-get install portaudio19-dev
cd /home/pi
svn co svn://svn.code.sf.net/p/wsjt/wsjt/branches/wspr
cd wspr
./autogen.sh
nano Makefile
< edit Makefile: change f2py to f2py3.4 and -DF2PY=\"/usr/bin/f2py\" to -DF2PY=\"/usr/bin/f2py3.4\" >
make
sudo make install
--------------------
References:
http://www.hoaglun.com/blog/2015/wspr-on-a-raspberry-pi
http://www.george-smart.co.uk/wiki/Compiling_WSPR
http://Naomi.mountains.net.au/hamradio/digital/wsjt-wsjtx.html

I was able to bring up the WSPR gui after those steps were completed. It has been sitting there idle for an hour without any issues. I don't currently have a radio hooked up to the RPi so that will limit my testing short term.

I am going to run a couple more installs with fresh images to make sure that my notes are good and then I will try to hook up a radio and to a little testing of transmit and receive operations. I will also try to install a few other ham radio related packages to make sure that they don't break this install.

Thanks to Soren and the folks before us that have contributed to get us to this point.

73 de NG0R

By:
Comments Off

2015 St Cloud Hamfest

Ben (N2BEN) and I (NG0R) went to the Cabin Fever Reliever on Saturday

We did not spend any money which kind of implies that there was nothing that we could not go home without. There were some nice rigs and a limited amount of parts for builders. Ultimately I think that we have a well equipped station so we have not been hauling home too much stuff from the hamfests for many years.

We had a good time talking with friends that we do not get too see very often and this is a sign that spring is coming... it is be beginning of the hamfest session.  :-)

73 de NG0R

By:
Comments Off

2015 MNQP

It is kind of a tradition....

As long as we have lived at this house I have gotten on for the Minnesota QSO Party.  Sometimes it is a solo event and other years Ben (N2BEN) participates.

This year is a solo event. I am operating in casual mode as I did get an early start... I decided to go on a 5 mile walk this morning instead. Then I had to get a new version of N1MM configured which turned out to be a little challenging since I run Linux not Windows.

S7399R~G.jpg

The score is ok for a very casual operating event. I am sure that if I had called CQ on CW or SSB that I probably could have put an easy 100-150q's into the log if I had wanted to  "run" vs operating "search & pounce."  Today was fun & casual which is a nice way to spend an afternoon in the shack.

2015:  8,000 points (part time casual effort - NG0R solo)
2014: 18,308 points (part time casual effort - NG0R solo)
2013: 43,792 points (NG0R + N2BEN)
2012: 25,050 points (NG0R + N2BEN)
2011:  8,282 points (NG0R + N2BEN)
2010:  7,074 points (NG0R + N2BEN)
2009:  2,668 points (NG0R + N2BEN)
2008:  4,653 points (first year with Ben operating)

73 de NG0R

By:
Comments Off

Tram the G0759 Mill

I spent some time this afternoon building some tram aids for my G0759/G0704 mill. 

The tram aid tools allow me to adjust the head with fine detail when I loosen up the head. They are pretty simple to make... some steel, a couple of holes, and some tapped threads.

With the tram aids in place I then installed the tram gauge into 1/2" collet.

It appears that head is out of tram by 0.0065 inches over a span of 6 inches.

Loosen up the three bolts/nuts (not shown) and then tweak the 1/4" 28 tpi bolts on the tram aid until the dial indicators are where you want them.. then tighten up the head bolts/nuts again.

It took all of two minutes to put the mill head back in tram.

I am pretty happy with the mod to the mill and the new calibration tool.

By:
Comments Off

WSPR on a Raspberry PI

I am trying to work through the magical process of getting WSPR installed on a current Raspberry PI OS image. Clearly this is a complex process as I have burned up an entire weekend and not been completely successful. I have found a couple of approaches that get close... but this is not horse-shoes or hand grenades so that is not close enough.

Image: 2014-12-24-wheezy-raspbian.zip
WSPR branch release: 4903
References: 
         http://blogzs1jen.dyndns.org:83/category/raspberry-pi-tx/
         https://groups.yahoo.com/neo/groups/WSJTgroup/conversations/messages/13134
         http://blogzs1jen.dyndns.org:83/category/raspberry-pi-tx/

After some testing I came up a semi-refined process. I used that base OS image, configured the basic setting for the RPi & Wifi with no extra packages and then created an image of that config that I could deploy & redeploy on multiple 16gb SD cards to refine my process. I also documented EVERY step as I went so that I had some detailed notes. (My engineer / architect background from my day job might have popped out as I tackled this process)

A couple of key themes came up as I tried different approaches that I saw documented on the internet.

  • The Python PIL package has an issue and it is not clear if PILLOW is the fix or not
  • The F2PY path and version can be an issue especially with F2PY3.2
  • There seems to be some complications between Python 2.7, 3.2, and 3.4
  • There is an issue with python-imaging-tk depending on the install order & versions
  • There is an issue with python3-dev depending on the install order & versions
  • There is an issue with jackd2 related to needing to see the speed of the CPU in a text string

My current steps:

  1. sudo -i  (so that you don't have to run sudo for every command)
  2. apt-get remove python-numpy -y
  3. apt-get install python3-numpy autoconf gfortran libsamplerate0-dev cl-fftw3 libhamlib-utils libportaudio2 python3-dev -y
  4. nano /etc/apt/sources.list
  5. Comment out: deb http://mirrordirector.raspbian.org/raspbian/ wheezy main contrib non-free rpi
  6. add:  deb http://mirrordirector.raspbian.org/raspbian/ jessie main contrib non-free rpi
  7. Save it
  8. apt-get update
  9. apt-get install python3-pil
  10. apt-get install libjack-jackd2-0
  11. nano /etc/apt/sources.list
  12. Comment out:  deb http://mirrordirector.raspbian.org/raspbian/ jessie main contrib non-free rpi
  13. Un-comment: deb http://mirrordirector.raspbian.org/raspbian/ wheezy main contrib non-free rpi
  14. apt-get update
  15. apt-get install python-imaging-tk
  16. apt-get install python-pmw
  17. apt-get install portaudio19-dev
  18. apt-get install subversion
  19. svn co https://svn.code.sf.net/p/wsjt/wsjt/branches/wspr
  20. cd wspr
  21. ./autogen.sh
  22. make
  23. sudo make install


To redo to the process you can run:

  1. make clean && make distclean &&  ./autogen.sh 

  2. make && sudo make install

Using the steps above I am currently stuck in the midst of step 22. The output of that sub-step is shown below:

RUN F2PY w.so
--------------------
/usr/bin/f2py3 -c --quiet --fcompiler=gnu95 --f77exec=gfortran --f90exec=gfortran \
--opt="-cpp -fbounds-check -O2" thnix.o   -lfftw3f -lgfortran -lportaudio -lpthread -lsamplerate  libwspr.a -m w wspr1.f90 getfile.f90 paterminate.f90 audiodev.f90
rmbadname1: Replacing "len" with "len_bn".
{}
{'attrspec': ['intent(in)']}
{'attrspec': ['intent(in)']}
    Building module "w"...
        Constructing wrapper function "wspr1"...
          wspr1()
        Constructing wrapper function "getfile"...
          getfile(fname,len_bn)
        Constructing wrapper function "paterminate"...
          paterminate()
        Constructing wrapper function "audiodev"...
          inbad,outbad = audiodev(jdevin,jdevout)
    Wrote C/API module "w" to file "/tmp/tmpn9wngzym/src.linux-armv6l-3.4/wmodule.c"
    Fortran 77 wrappers are saved to "/tmp/tmpn9wngzym/src.linux-armv6l-3.4/w-f2pywrappers.f"
cc1: error: unrecognized command line option ‘-fstack-protector-strong’
cc1: error: unrecognized command line option ‘-fstack-protector-strong’
error: Command "arm-linux-gnueabihf-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -g -fstack-protector-strong -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 -fPIC -I/tmp/tmpn9wngzym/src.linux-armv6l-3.4 -I/usr/lib/python3/dist-packages/numpy/core/include -I/usr/include/python3.4m -c /tmp/tmpn9wngzym/src.linux-armv6l-3.4/fortranobject.c -o /tmp/tmpn9wngzym/tmp/tmpn9wngzym/src.linux-armv6l-3.4/fortranobject.o" failed with exit status 1
Makefile:162: recipe for target 'WsprMod/w.so' failed
make: *** [WsprMod/w.so] Error 1

 

I have tried a couple of other recipes based upon those links at the top of this post but they all had some pretty complex issues with PIL/Pillow and versioning that I was unable to completely resolve. 

It is a bit disappointing that there is a WSJT package (deb) for the Raspberry PI that seems to work without all of this non-sense but not for WSRP. This level of complexity and time commitment is beyond what many ham radio operators (and builders) really want to invest since it is a software issue.

I would love to get this resolved as I think that it would be fun to use my Raspberry PI as the platform for digital mode operations in my shack. Yes, I have more powerful computers with more full featured operating systems but that is not really what I want. I was thinking of the RPi + FLDigi + WSPR +WSJT tied my Elecraft K2 or something similar in a dedicated position in my shack away from the other operating positions. Digital + QRP (5 watts or less) seems like a good use the RPi.

Hopefully these notes help someone else to get WSPR running on a RPi with a current OS stack. I will keep playing but it is hard to think that I will spend this much time on again anytime soon.

73 de NG0R

By:
Comments Off

Spindle Lock

After quiet a few distractions it is finished....

G0759 Mill with the new Spindle Lock

Ok... there is a back story. When the boys (Jacob, Ben, Joe) and I use the mill it feels like it takes 3 hands to change the R8 collet and accessories sometimes.  There is no "spindle brake" or "spindle lock" on this mill. After a bit of searching it appears that Grizzly and LittleMachineShop.com both sell after market spindle locks.

Screen capture from the LittleMachineShop.Com webpage

As much as I love to buy parts from Carl at LittleMachineShop.com I do get tired of sending out the money. I figured that since I am man that owns tools (Mill, Lathe, etc) I should be able to make one of these.

I am the proud owner of a 6lbs chunk of 6016 aluminum

I purchased a scrap piece of 6061 aluminum from a metal retailer in the Minneapolis area. It is 2.5"x5"x5" weighing in at 6 pounds.

My first project on the new lathe involves a 6 pound block in a four jaw chuck

Since I don't like to start small my first project in the new lathe is pretty complex. I have not even made chips on this lathe until now.  --As they say "Go Big or Go Home!"

Boring bar making chips

There was 5 gallon bucket full of chips once we the lathe work was complete

Two different ID sizes... pretty good for the first project

Mounted in the 3" vise on the mill

Added the 5" vise temporarily for this project

Using an indexable 1.25" face mill to remove some meat from the part

Ben (14) doing some of the milling

The finished part over being sanded down

That 6 pound block now ways about 1 pound. The total cost of parts for this project was about $18. There is probably 8 hours of labor in this project between setting up new machines and tools in addition to taking pictures and showing Ben how to setup the various operations.

It was a pretty cool project and I am very happy especially given the complexity and the number of operations. It works VERY well.

This mill is a G0759 which is the same as the G0704+DRO or a BF20 or a Super X3.