Saturday, October 11, 2014

Setting up my 30m APRS on HF using Quisk SDR, Soundmodem and Xastir on Linux.

Setting up my 30m APRS on HF using Quisk SDR, Soundmodem and Xastir on Linux.


Here is how I conferred my HF APRS gateway from a HF SDR. (30m Softrock SDR)

30m APRS hardware

1) Install QUISK  (SDR software) on on Linux.

2) Install Alsa loop. (loopback sound driver)
3) Install Soundmodem.  (AFSK Modem)
4) Install Xastir. ( APRS IGate and map viewer)




So lets begin.

1) Install QUISK  (SDR software) on on Linux.

The Quisk instillation need Python so you will have to install the following first.
Install the following packages.
sudo apt-get install python2.7, python2.7-dev, python-wxgtk2.8, fftw3-dev, libasound2-dev, and portaudio19-dev.

goto your Downloads directory. ( or you favorite directory)

cd Downloads
Download the Quisk application from if you want the latest version at http://james.ahlstrom.name/quisk/docs.html (quisk-3.4.4.tar.gz tar -xvf and then run quisk.py you need python ass seen above) or you could run the command  sudo apt-get install quisk


Here is the instructions if you get the latest version

 sudo apt-get install quisk
wget http://james.ahlstrom.name/quisk/quisk-3.6.18.tar.gz
unzip the quisk source code
tar -xvf quisk-3.6.18.tar.gz
there should now be a directory quisk-3.6.10
goto quisk-3.6.10 directory
cd quisk-3.6.10
Compile the quisk application
sudo make
sudo make install
you now need to create a configuration file for quisk to see your Softrock lite II sdr sound input IQ signal.
Create a text file with you favorite text editor and copy the text below and save it as 30m_aprs_quisk_conf_sdriq.py


#*****************************************************

# These are the configuration parameters for Quisk using the
# SDR-IQ by RfSpace as the capture device.

# Please do not change this sample file.

# Instead copy it to your own .quisk_conf.py and make changes there.
# See quisk_conf_defaults.py for more information.

from sdriqpkg import quisk_hardware             # Use different hardware file


# In ALSA, soundcards have these names:

#name_of_sound_play = "hw:0"
#name_of_sound_play = "hw:1"
#name_of_sound_play = "plughw"
#name_of_sound_play = "plughw:1"
#name_of_sound_play = "default"

use_sdriq = 1                                   # Use the SDR-IQ

sdriq_name = "pcm.sdrXonarD1Record12"
sdriq_clock = 66666667.0                # actual sample rate (66666667 nominal)
sdriq_decimation = 1250                 # Must be 360, 500, 600, or 1250
sample_rate = int(float(sdriq_clock) / sdriq_decimation + 0.5)  # Don't change this
name_of_sound_capt = ""                 # We do not capture from the soundcard
name_of_sound_play = "hw:0"             # Play back on this soundcard need s to be loopback device
playback_rate = 48000                   # Radio sound play rate
channel_i = 0                                   # Soundcard index of left channel
channel_q = 1                                   # Soundcard index of right channel

display_fraction = 0.85                 # The edges of the full bandwidth are not valid
#***************************************************************

Then save the file.
We now need to setup the ALSA sound system to map the alsa audio coming into the server to a friendly name "pcm.sdrXonarD1Record12" see above config file.
Run the command sudo arecord -l it will list all the ALSA audio input devices.

 sudo arecord -l
**** List of CAPTURE Hardware Devices ****
xcb_connection_has_error() returned true
Home directory /home/anton not ours.
card 0: D1 [Xonar D1], device 0: Multichannel [Multichannel]
  Subdevices: 0/1
  Subdevice #0: subdevice #0
card 1: PCH [HDA Intel PCH], device 0: VT1708S Analog [VT1708S Analog]
  Subdevices: 2/2
  Subdevice #0: subdevice #0
  Subdevice #1: subdevice #1
card 2: D1_1 [Xonar D1], device 0: Multichannel [Multichannel]
  Subdevices: 0/1
  Subdevice #0: subdevice #0
card 3: M44 [M Audio Delta 44], device 0: ICE1712 multi [ICE1712 multi]
  Subdevices: 0/1
  Subdevice #0: subdevice #0


Please note I have multiple sound cards in my Linux server so you might not have as many interfaces listed as mine above.

Identify the your sound card in the list.

in my case it is :card 3: M44 [M Audio Delta 44], device 0: ICE1712 multi [ICE1712 multi]
You now need to configure the ALSA system to map the name of quisk to this card and you do it in the ALSA config file in your user home directory. (in my case it is /home/anton)

cd  to go to your home directory

pwd To list your home directory

/home/anton
edit the following ALSA audio mapping file with you favorite text editor .asoundrc  (note the dot in front of the name it means its hidden) I use VI as an editor


 vi .asoundrc

Add the following and change the names relevant your sound card name (RED)

#************************** pcm definition ************************************
pcm.sdrM44_card {# defining the card to be used
     type hw
     card M44 # this has to be done to force reboot to point to same cards
}

#************************* controller section ***********************************
ctl.sdrM44_card {#defining the control interface
     type hw
     card M44 # this has to the same as above

     }
#****************************** recording ***********************************
pcm.sdrM44Record12 { # input input 1 and 2
     type plug
     slave {
     pcm "dsnooper_M44"
     channels 4
     }
         ttable.0.0 1
         ttable.1.1 1
}



Run the quisk with your costume configuration  with the full path to the configfile

sudo quisk -c /home/anton/Downloads/quisk-3.6.10/quisk_conf_softrock_iq.py






Now we need to setup the ALSA loop back audio interface for Quisk to send the USB demodulated audio to Xastir or Fldigi or what ever modem device you are using.

2) Install ALSA loop. (Loopback sound driver)



To check if it is already installed in the ALSA device driver.
run the command sudo arecoed -l 

If you see the loopback devise skip this section below and go section 3

Compiling snd-aloop if needed

Update: it may not be needed any longer as of kernel 2.6.38 ...

It may well be that the ALSA Loopback kernel module was not included in your distribution's kernel package (it is the case in e.g. debian, as far as I know). This is no bother as we can easily compile it. Note that there is no way around since the loopback ALSA module is not part of the kernel baseline in general. So unless your kernel packager had done the following work, you will have to do it yourself ...
Warning: I tried alsa-driver 1.0.21 against 2.6.33.5-rt22 and while it compiled fine, it would not load at all, even when forced. So don't waste your time with this version combo.
Make sure you really don't have it installed. Better check that not :)
sudo modinfo snd-aloop
If modinfo reports nada, time to check that you have installed the kernel headers corresponding to your presently running kernel. I'll leave this to you as this is very distro dependent. In debian based distros, the package is called something like linux-headers-xxx and must match the installed kernel (package linux-image-xxx).
Time to make a backup of the installed kernel modules. Example:

cd
mkdir backup
cd backup
cp -a /lib/modules/`uname -r`/kernel/sound .


Prerequisite: you of course need a compiler and other tools. In debian based distros, you can check that you have a package called build-essential installed:
dpkg -l build-essential
If not, just get it:
sudo apt-get install build-essential

Now grab the alsa-driver source code (same version as your installed ALSA, in my case 1.0.23 which I will use in my description) from the The ALSA website, uncompress, untar it and cd to the alsa-driver top dir. Here is a command summary

cd
mkdir source
cd source
wget ftp://ftp.alsa-project.org/pub/driver/alsa-driver-1.0.23.tar.bz2
tar jxvf alsa-driver-1.0.23.tar.bz2
cd alsa-driver-1.0.23


Now you have to configure the source package for compilation. To help you, look at what ALSA modules are currently loaded:
cat /proc/asound/modules

make
sudo make install

It will normally install all the compiled modules into the correct location of your kernel installation. Now check that the kernel knows about the loopback module:

~$ sudo modinfo snd-aloop
filename: /lib/modules/2.6.32/kernel/sound/drivers/snd-aloop.ko
license: GPL
description: A loopback soundcard
author: Jaroslav Kysela <perex@perex.cz>
srcversion: B85A5847D027749DCF96195
depends: snd-pcm,snd
vermagic: 2.6.32 SMP preempt mod_unload modversions CORE2
parm: index:Index value for loopback soundcard. (array of int)
parm: id:ID string for loopback soundcard. (array of charp)
parm: enable:Enable this loopback soundcard. (array of bool)
parm: pcm_substreams:PCM substreams # (1-8) for loopback driver. (array of int)


Now lets load it. But before that, shut down all audio apps (including firefox). Once done, do this:
sudo modprobe snd-whatever-module-you-need
sudo modprobe snd-aloop
sudo alsa force-unload



Now, see if it works: ~$ lsmod | grep aloop snd_aloop 4732 0
snd_pcm 57065 6 snd_aloop,snd_hdsp
snd 40404 18 snd_aloop,snd_hdsp,snd_pcm,snd_hwdep,snd_rawmidi,snd_seq,snd_timer,snd_seq_device

If all was ok then add snd-aloop in /etc/modules. (If you wish, you can give the loopback soundcard another name than "Loopback" in a modprobe option but I kept the default throughout the entire HOWTO and there is no need to change it.)
In case anything went wrong and you wish to go back to your previous ALSA installation, no problem:


sudo rm /lib/modules/`uname -r`/kernel/sound sudo cp -a ~/backup/sound /lib/modules/`uname -r`/kernel/ sudo alsa force-reload

there should be two new ALSA devicess 


This virtual sound card consists of 2 devices:
hw:Loopback,0
hw:Loopback,1
to see if the loop back connector is active run the command aplay -l or arecord -l


sudo arecord -l

**** List of CAPTURE Hardware Devices ****
xcb_connection_has_error() returned true
Home directory /home/anton not ours.

card 4: Loopback [Loopback], device 0: Loopback PCM [Loopback PCM]

  Subdevices: 8/8
  Subdevice #0: subdevice #0
  Subdevice #1: subdevice #1
  Subdevice #2: subdevice #2
  Subdevice #3: subdevice #3
  Subdevice #4: subdevice #4
  Subdevice #5: subdevice #5
  Subdevice #6: subdevice #6
  Subdevice #7: subdevice #7
card 4: Loopback [Loopback], device 1: Loopback PCM [Loopback PCM]
  Subdevices: 7/8
  Subdevice #0: subdevice #0
  Subdevice #1: subdevice #1
  Subdevice #2: subdevice #2
  Subdevice #3: subdevice #3
  Subdevice #4: subdevice #4
  Subdevice #5: subdevice #5
  Subdevice #6: subdevice #6
  Subdevice #7: subdevice #7

if you did see the above loopback then you are ok and we can just add the loopback configuration to the 30m_aprs_quisk_conf_sdriq.py file as above.

edit the file 30m_aprs_quisk_conf_sdriq.py
and make shore the it has the following.
name_of_sound_play = "hw:0"             # Play back on this soundcard need s to be loopback device
select the configeration button on quisk to see if the loopback is working fine.


Now we can configure Soundmodem and Xastir to decode our HF APRS....

3) Install Soundmodem. (AFSK Modem)

Instillation of soundmodem
sudo apt-get install soundmodem

We now need to configure the soundmodem and this can easily be done with guide.
sudo soundmodemconfig


Set up the ALSA audio driver and point it to the loopback interface we have configured above " plughw:Loopback,1,0"


Create a new channel by write clicking on the previous configuration that was created and selecting new channel.

Select KISS and then enter the serial device file /dev/soundmodem0

Select Modulator and set the bits 300 board  and Frequencies to 900Hz , 1.1 Khz and enable Differential Encoding.

Select Demodeluator and set the bits 300 board  and Frequencies to 900Hz , 1.1 Khz and enable Differential Encoding.

Now to test your configuration.
Select the diagnose menu and then the spectrum option and then tune the APRS frequency on the Quisk SDR so that the AFSK tones is in the center of pass band section in the spectrum display below. (Center frequency is 1Khz) You can also then check if you Radio audio frequency is flat. (Both peeks is the same high)


Move your mouse cursor over display to find frequency of display. ( wait for APRS message to be received on HF)

Adjust the Quisk SDR frequency until the APRS signal is across the 1Khz frequency. see above



That's it, your soundmodem is configured.

here is a copy of my soundmodem configuration file /etc/ax25/soundmodem.conf that was generated with soundmodemconfig application.

<?xml version="1.0"?>
<modem>

 <configuration name="HF_300Board">
<chaccess txdelay="150" slottime="100" ppersist="40" fulldup="0" txtail="10"/>
<audio type="alsa" device="plughw:Loopback,1,0" halfdup="0" capturechannelmode="Mono"/>
<ptt file="none" gpio="0" hamlib_model="" hamlib_params=""/>
<channel name="Channel 0">
<mod mode="afsk" bps="300" f0="900" f1="1100" diffenc="1" ifname="sm0" hwaddr="ZR6AIC-2" ip="10.0.0.1" netmask="255.255.255.0" broadcast="10.0.0.255"/>
<demod mode="afsk" bps="300" f0="900" f1="1100" diffdec="1"/>
<pkt mode="KISS" ifname="sm0" hwaddr="ZR6AIC-2" ip="10.0.0.1" netmask="255.255.255.0" broadcast="10.0.0.255" file="/dev/soundmodem0" unlink="0"/>
</channel>
</configuration>
</modem>


You will need some test audio so here is a video of a message that was recorded. Play it back and see if your modem is setup coorectely.

 

After your testing you will the close the soundmodemconfig Application and then run it as a soundmodem daemon in the background.

Close the soundmodemconfig application by clicking on the X on top.

then run the deamon sudo soundmodem&

4) Install Xastir. ( APRS IGate and map viewer)


Now lets setup the iGate of your APRS demodulated data to the internet
Install Xastir
sudo apt-get install xastir

run xastir

sudo xastir

Configure the Xastir to get the serial data from your sound modem
Select the interface menu


Now select the add  button and then then the Serial KISS TNC option

The TNC port has to be /dev/soundmodem0 as we configured in the soundmodem setup above

Then setup your internet APRS server details.

Save en setup your station detail.
Select file menu and then configeration.

Update your IGate details and station info see below.



Save your station configuration.
Now start Device 0 and Device 1 in the Interface menu and if all is well the interface will change to the up state.



If all the interfaces when up you should see your IGate on the internet. http://aprs.fi



Friday, September 26, 2014

log PSAT cubesat 25 September 18:20GMT (APRS)

ParkinsonSAT (Psat) cubesat 25 September 18:20GMT

CW message from PSAT Cubesat.  "PSAT EVPT32DC 7.23V" , "PSAT EXPT32DC 7.24V 0DBM" , "PSAT EXPT32DC 7.25V 0DBM"




Psat is the next APRS satellite design from students at the US Naval Academy. Although we have built 5 previous APRS satellites, only the original PCSAT-1 is still in orbit because all the others were deployed from the Shuttle and at the low altitude, have re-entered. PCSAT-1 (W3ADO-1) is partially operational when ever sun angles are optimum a few times a day; and you can see its live downlink on http://pcsat.aprs.org.


APRS herd by PCSAT
more info available at http://www.aprs.org/psat.html

Thursday, September 25, 2014

Log of POPSAT-HIP1 Cubsat CW beacon on webSDR http://zr6aic.giga.co.za:8902

Log of POPSAT-HIP1 Cubsat CW beacon on webSDR http://zr6aic.giga.co.za:8902 CW Message  POPSAT EXPT25DC 7.74V ?0C


Here is the recording of the POPSAT-HIP1 Cubesat on 24 September 2014 at 9:26 GMT.

This recording was done on frequency 437,395Mhz Modulation set to FM CW



To access the webSDR click here http://zr6aic.giga.co.za:8901

Tuesday, July 1, 2014

Useful Linux Commands

Useful Linux Commands

Linux

Disk space

Free disk space
  • df -k Mounted disk list 
  • df -h - shows disk free info 
  • du -sh - shows information about utilisation 
  • du -sk * | sort -n - what files/directories are using the most storage

What is taking up disk space?

  • find / -type f -size +100000k -exec ls -lh {} \; | awk '{print $5 ": " $NF}'

Find Folder size, sorted.

  • du * -sh | sort –nr

Remove specific files recursively

  • rm `find . -name '*.log'` -rf

Finding files
Finding files by filename
  • find / -name mystuff 
Note: this ignores symbolic links
Finding files by content


  • grep -H -r “the text” /home/tom 
Finding strings in file recursively looking through directories

  • find ./ |xargs grep -i StringToFind 
Finding the process that access a log file
  • fuser -m -u /var/log/logfile.log

Networking

What is blocking the local port?
  • netstat -tlnp | grep 50101
Finding the application that is using the port
  • lsof | grep 50101
Finding the application that is using the port
  • fuser -v -n tcp 80
  • netstat –i – list all the interfaces (including bonded interfaces)
  • netstat –s – summary statistics - dropped packets, retransmissions
  • netstat –l – show listening sockets - who’s got what port open
  • netstat –t – show active connections - who’s connected
  • netstat –r – show the routing table used by the kernel - what routes are currently loaded
  • ss -no state established '( dport = :8999 or sport = :8999 )' - who is connected to/from port 8999
  • ss -pmn (processes, memory, numeric – don’t resolve) (su to pricing) - show the process and memory info of each socket
With this command and its different options one can obtain statistics as well as configure any network adapter connected in the system.
  • ifconfig [devicename] [reqd. action] [options] :
example : To assign IP Address to a network adapter.
  • ifconfig eth0 192.168.1.1
whois [options] <arg[@server]> : Queries the WHOIS database, to retrieve available information about the given server / domain-name. example : To obtain information about a domain, suppose google.com.
  • whois google.com
ping [options] [host-address/name] : This command sends Internet Control Message Protocol (ICMP) to the specified network host. example : To ping a network host "192.168.1.1"
  • ping 192.168.1.1
netstat [options] : Gives information about the all the network connections established by the system through different ports. -t : Displays only TCP socket connections -a : Displays all the sockets that is listening and non-listening ones For example :
  • netstat -a
traceroute [options] [host-name/address] : Displays identity of hosts visited by the packet while routing from its source to destination. -n : This option disables the DNS lookups for the IP Addresses example :
  • traceroute 192.168.1.1
route [options] [destination host-name/address] : Displays as well as allows to manipulate the IP routing table. -n : Displays IP addresses as by default hostnames are displayed example : The command below displays the numerical IP addresses in the IP routing table
  • route -n
telnet [options] [host] [port_number] : Does an interactive communication with another host through TELNET protocol on the specified port number. By default it uses TCP port number 23 and the connection is not encrypted. -l : specify user name to login as on the remote system example : To login into remote host 192.168.1.1 in username "abc"
  • telnet -l abc 192.168.1.1
ssh [options] [username@host-address] : Enables a user to make secure remote login to the specified host address. -C : Compresses the data which sent over the connection to specified host -X : Enables the user to use X server features. example : In order to ssh to host 192.168.1.1 with username "abc" following is the command.
  • ssh -X abc@192.168.1.1
scp [options] [username@host-address:file_location] : Enables a user to make secure copy of the file to the specified host-address. -r : Recursively copies the data in directories -C : Compresses the data which sent over the connection to specified host example : In order to scp file.txt to host 192.168.1.1 with username "abc" following is the command.
  • scp file.txt abc@192.168.1.1:~\
wget [options] [URL] : Performs HTTP request from through the shell to get data from the URL -r : Get the URL and all its links in recursive manner
  • wget http://www.google.co.za

iptables [options] : This command requires root permission. It enables to carry out packet filtering and Network Address Translation. -F : Flush set of rules -n : Show rules without carrying out DNS lookups -A : Appends one or more rules to the end of the selected chain. -j : Specify the target of the rule -s : specify source -L : Current rules are listed For example : To block packets from certain IP Address 192.168.1.1, can be done by
  • iptables -A INPUT -s 192.168.1.1 -j DROP
tcpdump [options] : Outputs the contents of packets on the network interface. It can also output only certain packets based on the condition provided.
-i ether0 to select the interface you what to monitor
  • tcpdump -i ethe0

How To Find My Public IP Address From Command Line On a Linux

  •  dig +short myip.opendns.com @resolver1.opendns.com

Processes

  • top : The top program provides a dynamic real-time view of a running system.
  • mpstat : writes to standard output activities for each available processor. Repeat every second : "mpstat 1"
  • ps : Display all running processes (eg : to list java processes = "ps -ef | grep java" )
  • pgrep : Looks through the currently running processes and lists the process IDs which matches the selection criteria to screen
  • pstree : shows running processes as a tree
  • netstat : displays network connections (both incoming and outgoing), routing tables, and a number of network interface (network interface controller or software-defined network interface) and network protocol statistics (the very useful "-p" option is not allowed in PROD unless you're root)
  • htop : Show all CPU running process (For mutilator CPU)
Find threads/handles for all users
  • ps -eLf 
Total counts on threads/handles for all users
  • ps -eLf | wc -l

kill

  • Never use kill -9 if you can help it
  • You can send any signal you like (use kill -l to list them) SIGUSR1 and SIGUSR2 are user defined. Each signal has a default action, e.g. to temporarily interrupt or to terminate the program

 strace - system trace

  • strace -p 25292 -f : trace pid 25292 in real time
  • strace -p 25292 -f -c : trace pid 25292 and report summary statistics on exit

How to use VI editor.

INSERT Mode

For adding text to a file  ( press Esc and then below command)  . The three most common ways to enter the Insert Mode are:
LetterAction
iStarts inserting in front of the current cursor position
IStarts adding at the front of the line
aStarts adding after the cursor
AStarts adding at the end of the line
oStarts opening a new line underneath the cursor
OStarts opening a line above the cursor.
<Esc>Gets out of Insert Mode

EDIT Mode

Generally for moving the cursor and deleting stuff.
In the Edit Mode, the keys do not type letters, but do other actions such as cursor movement, deletions, copying lines, etc.
LetterSimple Cursor Movement
hMoves cursor left one spaceNote: the Arrow keys do work locally, but sometimes mess up over a network.
jMoves cursor down one line
kMoves cursor up one line
lMoves cursor right one space
Fast Cursor Movement
wMoves the cursor a full word at a time to the right
bMoves the cursor back to the left a word at a time
^Moves the cursor to the front of a line
$Moves the cursor to the end of a line
<ctrl>fMoves the cursor forward a full page of text at a time
<ctrl>bMoves the cursor backward a full page of text at a time
Modifying Text
xDeletes the character under the cursor
ddDeletes the line where the cursor is located (type d twice!)
n ddDelete n consecutive lines ( n is an integer)
rReplaces the character under the cursor with the next thing typed
JJoins current line with the one below (Capital J!)
uUndoes the last edit operation
<ctrl> rRedo (Undoes the last undo operation)
Cut and Paste Operations
yyCopies or yanks a line ( 5yy yanks 5 lines)
pPuts the yanked text on the line below the cursor (lower case p)
PPuts the yanked text above the current line (capital P)
Note: If vi is already in the input mode, text from that or another window may be highlited using the left mouse button, and copied into place by pressing the middle mouse button.

COMMAND Mode

For interacting with the operating system. To enter the Command Mode, a colon “ : ” must precede the actual command.
LetterAction
: r <file>reads a file from disk into the vi editor
: w <file>writes current file to disk
: wqwrites the file and quits vi
: q!quits without writing (useful if you’ve messed up!)

Saturday, May 24, 2014

After a wonderful day at the SA AMSAT satellite symposium I have learned the following.

After a wonderful day at the SA AMSAT satellite symposium I found the following very interesting. (24May2014)
http://www.amsatsa.org.za/
  1. KLETSkous the 1U Cubesat build by volunteer Amateur Radio operators.



The planned payload for KLETSkous will be as follows.

  • A Linear transponder (2m uplink and 70 cm downlink)bandwidth of 20 kHz
  • Currently the frequencies in the 435.100 to 435.140 MHz range are considered for the uplink and 145.860 to 145.980 MHz for the downlink
  • The scientific payload will be a experiment analysing "Worm Holes"  (This experiment will try and find the portholes between Sun and Earth).
  • There was a live Transponder demo and a prototype of the space frame.


More information is available at http://www.amsatsa.org.za/



2) A presentation on the progress of the experiments on ZACube-1 was also very interesting.
ZACUBE-1 Cube sat Picture

  • Very nice pictures were captured from the VGA cameras.
  • Beacon TX power was also increased and should be easier to capture the signals.
  • They are now slowly deploying the long wire HF antenna in the following few weeks to enable the HF experiments.
More info available at http://www.cput.ac.za/blogs/fsati/zacube-1/

3) A presentation on the experiments of a Satellite propulsion system (Vacuum Arc Thruster)
Vacuum Arc Thruster
  • Vacuum arc thrusters are a potentially useful technology for use as microthrusters on microsats for the future.
  • It is basically a spark plug that generate sparks in a vacuum to propel the satellite. by (Jonathan Lun PhD Student SANSA Space Science,University of the Witwatersrand)