Wednesday, October 4, 2017

AX25, ODroid, PAT Part 2

At first I tried the deb package both linux and armhf but ran into problems with each.  Solution was to build from source.

Build from Source:

https://github.com/la5nta/pat/wiki/Building-from-source
sudo apt-get install golang-go
export GOPATH=`pwd`
Attempts at using go to do the install failed.

git clone https://github.com/la5nta/pat $GOPATH/src/github.com/la5nta/pat
cd $GOPATH/src/github.com/la5nta/pat
git submodule update --init --recursive
./make.bash libax25
./make.bash
sudo cp pat /usr/local/bin

Success. Now edit the config:
vi /home/odroid/.wl2k/config.json
Enter your callsign, winlink password, locator, etc.

I set the serial-tc path to:  /dev/ttyACM0

Not sure if this will work yet though.

Run the web client with:
pat http

Next blog post...try to send an email P2P.

73

Tuesday, October 3, 2017

AX25,ODroid and PAT/Winlink

Considering what has been happening in Puerto Rico with Hurricane Maria, I decided  I need to get  Winlink operational so I can send email over radio.  Since I prefer Linux, I started exploring options and found PAT, http://getpat.io/, a cross-platform Winlink client.

Goal:   Get the Kenwood TH-D74A built in KISS TNC to send Winlink email using the PAT client on Ubuntu 16.04 on a 64Bit ODroid C2

Make sure the TH-D74A has the most recent firmware.

On Kenwood TH-D74A, go to:

Menu > Configuration > Interface > KISS > USB or Bluetooth.  I chose USB.

Instructions:
https://github.com/la5nta/pat/wiki/AX25-Linux

Power on the TH-D74 and plug usb cable into it and the ODroid C2.

On the ODroid C2, use 'dmesg' to find the device name:  /dev/ttyACM0

sudo apt-get update && upgrade -y
sudo apt-get install ax25-tools

Modify /etc/ax25/axports

sudo apt-get install ax25-apps


Here is where problems begin:

sudo modprobe ax25

sudo modprobe mkiss

I received messages indicating modprobe cannot find the necessary modules.

Solution

Build a custom kernel
https://github.com/umiddelb/armhf/wiki/How-To-compile-a-custom-Linux-kernel-for-your-ARM-device



Verify your kernel version with:

uname -r

My ODroid say 3.14.79-97

Install the prerequisite software and start the process.

Make sure to run this:

make menuconfig


After completing this step, I decided to make an image of the ODroid OS as a backup in case I screwed something up badly.  To do this, I shutdown the ODroid, ejected the SD Card and put it into a card reader on my Windows 10 computer.  I used Win32Disk Imager to make img files of both the main volume and the boot volume.

After making the backup, I loaded the SD card back into the ODroid, booted up, and continued the kernel build process.

Scroll to Networking and make sure AX 25 Ham Radio components are selected.

Complete the rest of the process.


Summary

$ git clone --depth 1 --single-branch -b odroidc2-3.14.y https://github.com/hardkernel/linux
$ cd linux
$ make odroidc2_defconfig
$ make menuconfig
##Enable the AX25/Ham Radio Components
$ make savedefconfig
$ make -j 4 Image dtbs modules
$ sudo cp arch/arm64/boot/Image arch/arm64/boot/dts/meson64_odroidc2.dtb /media/boot
$ sudo make modules_install
$ sudo make firmware_install
$ sudo make headers_install INSTALL_HDR_PATH=/usr
$ kver=`make kernelrelease`
$ sudo cp .config /boot/config-${kver}
$ cd /boot
$ sudo update-initramfs -c -k ${kver}
$ sudo mkimage -A arm64 -O linux -T ramdisk -a 0x0 -e 0x0 -n initrd.img-${kver} -d initrd.img-${kver} uInitrd-${kver}
$ sudo cp uInitrd-${kver} /media/boot/uInitrd


After running this the first time and rebooting, I check the kernel version which appears to have been changed.

However no luck with AX25 module.

Turns out that in the "Menuconfig" step, those flagged with "*"  need further selections.  I need to redo entire process.   Thanks to:  http://www.tldp.org/HOWTO/AX25-HOWTO/x144.html

This time I made sure to go into each AX25 category and select the appropriate modules.  They should be indicated with "M"

This time things went smoother.    These commands worked without any errors:

sudo modprobe ax25
sudo modprobe mkiss


That's it for now.    In another post,  I'll document steps taken to test the connection and will try to send an email.

Saturday, April 22, 2017

Key Elements

Here is a shell script to receive APRS packet audio through the microphone input:
 arecord -f S16_LE -c 1 -r 48000 -D hw:CARD=Device,DEV=0 - |sox -t raw -esigned-integer  -b16 -r 48000 - -esigned-integer -b16 -r 22050 -t raw - | multimon-ng -q -v 10 -t raw -A - | python aprs_parser.py  


Here is a shell script to receive APRS packets from a RTL-2832 TV Tuner:
 rtl_fm -f 144.390M -s 22050 - | multimon-ng -q -v 10 -t raw -A - | python aprs_parser.py  

aprs_parser.py is a script I wrote to decode the APRS packets and insert into the PostgreSQL/PostGIS database.  I'll post it when I clean the code up. It uses SQLAlchemy, Geoalchemy2, and aprslib Python modules.

The PostgresSQL/PostGIS database needs to have a geometry column with spatial reference id of 4326 (aka WGS_1984).

Thursday, February 9, 2017

Interoperability Conference 2017

Open GIS Server with Raspberry Pi and Radio

Presentation Slides

This was a side project I worked on at night to see if I could run a geographic information system (GIS) that could support both traditional desktop application and modern web mapping applications (server/client). The Raspberry Pi is used to listen for and capture digital data containing location information and insert it into the GIS database.

The goal of this was to get audience members thinking about GIS and how it might be useful or could be applied in the radio/communication community.  

I hope to publish a build log as well as the code I wrote to handle the database insertion.

73,
KE8CRV

Wednesday, February 8, 2017

GIS Data Sources

Finding sources of GIS data can be frustrating for several reasons:

  • Many formats and coordinate systems
  • Lack of metadata
  • Data has not been updated
  • Restrictions that prevent sharing

Here are some useful links and the types of layers that can be found.

State of Michigan
http://gis.michigan.opendata.arcgis.com/
  • All Roads
  • Boundaries
  • Rivers and Lakes
  • Imagery
  • Elevation Data
  • Hospitals
  • FEMA Regions
  • Communication Towers
  • Topo Maps
https://earthexplorer.usgs.gov/

  • Imagery
  • Historical Imagery
  • Elevation
http://www.census.gov/data/data-tools.html

  • Population

City or County
Check with the County or City websites for GIS data. 
  • Parcel data
  • Basemap
Global Administrative Areas
http://gadm.org/
  • Basemap:   Lots of data.  May be better off using Natural Earth Data sets instead
Natural Earth Data
  • Basemaps
US National Grid (USNG)
http://usngcenter.org/fema-region-5/

What other types of data should be included in an offline GIS?  Let me know in the comments section.


Wednesday, January 11, 2017

Imagery from US Topo Maps

With a couple command lines, you can convert US Topo Map pdfs into layers that can be used in GIS or to form a basemap that can be used offline.

US Topo 2 Tif  - This PDF is a good resource to have in an offline GIS.

Download the areas of interest from the US GeoPDF Topo Maps.  These are good to have on hand for printing or for loading to mobile apps like Avenza PDF.

The following examples will assume the pdf is called "MN_Grand_Marais_20160511_TM_geo.pdf"

Run the GDAL command:

gdalinfo MN_Grand_Marais_20160511_TM_geo.pdf –mdd LAYERS

This will allow you to see all the layer names.

Then run the GDAL command:


gdal_translate MN_Grand_Marais_20160511_TM_geo.pdf marais_contours.tif \
--config GDAL_PDF_LAYERS "Map_Frame.Terrain.Contours" --config GDAL_PDF_BANDS 3 \
--config GDAL_PDF_DPI 400

You will now have a TIF file that can can be loaded into the open source GIS

There are additional command line options to do compression and other stuff to the outputs.  Check the pdf for more info.

Tuesday, January 3, 2017

Stack Preview



Here is a preview of the ODroid C2 stack.  Currently the brass standoffs are mounted to a piece of acryllic I got from Menards.  Still need to come up with a with a good case design.  You can imagine how easy this would fit into a Pelican case to provide a temporary mobile GIS server,















Ideas for cases?  Let me know in the comments.

Sunday, January 1, 2017

GeoNode and /tmp

I noticed that when you use the web browser to load layers into GeoNode, the data gets stored and uncompressed in /tmp.   This is a problem, since the ODroid C2 has 16GB eMMC.   Fortunately, the C2 can run both eMMC and SD Card storage simultaneous.

I added a 32 GB SD Card to the ODroid C2 that was hosting GeoNode.  Here are the steps to do this:

su root

Use fdisk to list the devices:

fdisk -l

Create new partition with the device id that belongs to the SD Card:

fdisk /dev/mmcblk1

Create new primary partition, use default settings

Format the new partition:

mkfs.ext4 /dev/mmcblk1p1

Automount the new partition by editing  /etc/fstab

Add line:

/dev/mmcblk1p1 /tmp ext4 defaults 0 0

Allow read/write access

chmod 777 /tmp

Reboot and you should see GeoNode start using the new /tmp directory.  You can check by running this command:


df -h

This will also need to be done to accommodate the geonode data directories.  This will be done in a further blog post.