PDA

View Full Version : HAM / APRS thread


HumanPenguin
07-24-2007, 11:53 AM
Any HAMs on the list.

I was thinking. As we have no RS232 port. It might be possible to hack an old bluetooth headset to connect to a Rig. Somehow attach the mic and ear-piece. Then if we can opperate the PTT somehow.

Then we can take the sound input and create some APRS software that creates a POI list for Maemo Mapper. A separate pop up massager for sending and receiving other signals.

I am going to get my N800 later this week. Anyone else want to play with this.

Can we connect both the Headset and a GPS through BlueTooth?

UPDATE:
I have decided to create a Yahoo group. Hildon Ham

I explain what I am thinking a little more clearly. And can gather info/ideas on the subject of Ham Radio applications for Maemo.
http://groups.yahoo.com/group/HildonHam/

HumanPenguin
07-24-2007, 06:00 PM
Ok If anyone is interested in this PM me. I will give my EMail.

I have pulled apart an old Jabba 250v Bluetooth headset.

Attaching it to the appropriate plug and using the little vibrate connection to trigger the PTT should be easy. All that is required is adapting software on the N800 to send a ring signal whenever it needs to activate the PTT and convert the sound signal.

I will hunt down a spare plug for my VX-7r and experiment.

mdanehart
07-24-2007, 08:43 PM
Hello fellow Ham. I run a Icom IC-91A that I have been using for my UHF repeater connected to Echlink. Not really sure what you are trying to accomplish..73

HumanPenguin
07-24-2007, 10:24 PM
I have decided to set this up on a Yahoo Group.

http://groups.yahoo.com/group/HildonHam/

Just to gather ideas and experiment.

Feel free to join in.

st5150
05-14-2008, 07:23 AM
Has any progress been made on this?

Benson
05-14-2008, 09:59 AM
Well, there's been a little discussion over here...
http://www.internettablettalk.com/forums/showthread.php?t=14877&page=2
But no actual progress was made. Everyone who knows how to build stuff is too busy; everyone who has time doesn't know how...

st5150
05-14-2008, 03:03 PM
I can build the PTT interface between the NIT and the radio, but some software work will have to be done. I like the ring signal idea mentioned above. My original idea was to have the NIT transmit an aditional audio tone, oh lets say ~10KHz, which won't be picked up by the radio when the NIT is sending the PSK warble. On the radio's PTT side we can use a LM567 tone decoder ( http://web.mit.edu/6.115/www/datasheets/LM567.pdf ) tuned to a 10KHz tone, and ground a pin when it hears one.

Worse comes to worse, it wouldn't be the end of the world if we have to manually use a toggle switch to get the radio to flip between RX and TX.

Benson
05-14-2008, 03:20 PM
The ring idea might be a little more complex, software side... the tone generator looks easy enough though.

st5150
05-14-2008, 04:33 PM
Yes. I'm not a big time coder, but I have no problems designing a NIT-to-Radio interface and publishing its schematics, board layout, parts list, etc.

st5150
05-21-2008, 05:55 AM
Look at what I found:

https://garage.maemo.org/frs/download.php/2391/MaemoPSK31.png


:D

papabluto
08-18-2008, 03:23 PM
Hmmm along the lines of rs-232, has anyone gotten a usb to db-9 rs-232 converter cable to run on a 770 or n800? It would be fun to run my old pk-232 multimode controller on the tablet :)

Also is there anything software wise to run host mode on a pk-232 or other ham data controller?

73s de Steve, Wi0e

Benson
08-18-2008, 06:50 PM
Hmmm along the lines of rs-232, has anyone gotten a usb to db-9 rs-232 converter cable to run on a 770 or n800? It would be fun to run my old pk-232 multimode controller on the tablet :)
Yes. (Technically, it's a DE9, though; the second letter denotes the shell size.)
You can get one from jolouis's store (http://www.electronicproductonline.com/), or use any device with a supported chipset. That one's a pl2303, and of course all pl2303s will work, but a few other chipsets have also been confirmed working if you search around.

fnordianslip
08-18-2008, 07:53 PM
I've had Linux native support for AX.25 running on my n800, with a custom kernel under the inital Diablo version. I've not tried it with the upgraded version yet, but I've managed to run an I-gate on my n800, so it is definitely feasible.

I've mostly been working with an Elcom TNC in KISS mode and I am still trying to get the bluetooth interface working well.

The kernel I built has support for a bunch of different USB-RS232 adapters. If you are interested in trying this stuff out, let me know.

fnord.

st5150
08-21-2008, 02:38 PM
For what its worth, I was able to connect a USB to serial adapter to my N810 and have it stream 4800 baud NMEA out for a p r s purposes:

http://www.internettablettalk.com/forums/showthread.php?t=20433&highlight=gpspipe

tsm1mt
12-10-2008, 05:32 PM
Maemo Mapper with APRS (http://maemo-mapper-aprs.blogspot.com/) support.

I haven't heard/seen anything as far as code or an installable app, but I'm definitely interested.

APRS was one of the reasons I upgraded from my Nokia 770 to the N810 - better USB host-mode.

None of the new GPSs seem to have a serial port. :(

TA-t3
12-11-2008, 12:04 PM
Hm, interesting effort. Thanks for the link, I shall definitely be watching.. I wouldn't mind aprs patches getting into the official maemo mapper, unless they're big. I would use it, anyway.

st5150
12-12-2008, 06:19 PM
Nice, can't wait for a release. Also can't wait for maemo mapper to get fixed so it can actually see the 810's GPS.

tsm1mt
02-04-2009, 01:38 PM
I've been using MaemoMapper with the built-in N810 GPS for a while and it works fine, once the built-in GPS finally acquires a signal.

I've apparently lost my BT GPS unit that I used to use with the 770. Maybe I'll find it in one of my other vehicles eventually..

I need to look into the USB->Serial adapter more. My OpenTracker+ is in hand, along with my USB OTG and USB-Serial adapters, brought up GPSD and was dumping GPS data to stdout, but the serial adapter didn't want to play ball yet. I need to work out the driver issues.

st5150
02-06-2009, 03:48 PM
Fanoush has posted the serial drivers you need. http://www.internettablettalk.com/forums/showpost.php?p=101312&postcount=5 Just insmod them in and use gpspipe http://www.internettablettalk.com/forums/showthread.php?t=20433
I forgot which chipset was more stable for me, I believe the non FTDI one was more stable.

K4RJJ
02-21-2009, 01:49 AM
Anyone thought of a Signalink USB? I'm getting a N770 next week and hope to be able to use it for some sound card/Packet modes. A Signalink USB and a Bluetooth GPS might be just the pair.

Ronny K4RJJ

K4RJJ
02-21-2009, 01:52 AM
For anyone that has not seen one.

http://www.digitalham.co.uk/equipment/tigertronics_signalink_usb.php

TA-t3
02-23-2009, 06:40 AM
So it behaves like a USB sound card to the computer.. I'm not certain about the state of USB sound drivers on the tablets, in particular the 770's default operating system is OS2006 which may be in a poorer state than the newer systems. If someone knows anything about the state of USB sound drivers on the tablets please step forward. :)

tsm1mt
02-23-2009, 03:10 PM
Fanoush has posted the serial drivers you need. http://www.internettablettalk.com/forums/showpost.php?p=101312&postcount=5 Just insmod them in and use gpspipe http://www.internettablettalk.com/forums/showthread.php?t=20433
I forgot which chipset was more stable for me, I believe the non FTDI one was more stable.

Saw those a few times and never did find a driver for the serial adapter I picked up.

Just ordered a PL2303 based one so I hope to meet with more success once it arrives.

Still need to work on my QEMU scratchbox so I can try to pull down the MaemoMapper + APRS and compile.

The IMG I'm using doesn't come up to the GUI and I can't seem to make it boot into single-user-mode w/o password and haven't researched the root password for the commonly available VMWare images.. but I haven't tried too hard yet.

st5150
02-24-2009, 04:24 AM
I know what you mean, I've been lagging for a year getting scratchbox up and running right.

On a different note, I checked the spec sheet for the FM transmitter that will be used on the next gen NIT. It doesn't go down low enough to support 6 meters. So much for dreams of 6 meter QRP NIT contacts.

st5150
07-24-2009, 02:24 AM
Anyone know of a NIT GPS program that displays coordinates in Maidenhead grid square format? http://en.wikipedia.org/wiki/Maidenhead_Locator_System

I suppose I could write something quick and dirty using the code below, but I thought I'd ask fist.



#
# bearing and distance calculations together with
# locator convertions to lat/long and back
#
# some of this is nicked from 'Amateur Radio Software' by
# John Morris GM4ANB and tranlated into perl from the original
# basic by me - I have factorised it where I can be bothered
#
# Copyright (c) 1998 - Dirk Koopman G1TLH
#
# $Id: DXBearing.pm,v 1.11 2006/03/26 18:36:01 minima Exp $
#

package DXBearing;

use DXUtil;
use POSIX qw(:math_h);

use strict;
use vars qw($pi);

$pi = 3.14159265358979;

use vars qw($VERSION $BRANCH);
$VERSION = sprintf( "%d.%03d", q$Revision: 1.11 $ =~ /(\d+)\.(\d+)/ );
$BRANCH = sprintf( "%d.%03d", q$Revision: 1.11 $ =~ /\d+\.\d+\.(\d+)\.(\d+)/ || (0,0));
$main::build += $VERSION;
$main::branch += $BRANCH;

# convert a qra locator into lat/long in DEGREES
sub qratoll
{
my $qra = uc shift;
my ($p1, $p2, $p3, $p4, $p5, $p6) = unpack 'AAAAAA', $qra;
($p1, $p2, $p3, $p4, $p5, $p6) = (ord($p1)-ord('A'), ord($p2)-ord('A'), ord($p3)-ord('0'), ord($p4)-ord('0'), ord($p5)-ord('A'), ord($p6)-ord('A') );

my $long = ($p1*20) + ($p3*2) + (($p5+0.5)/12) - 180;
my $lat = ($p2*10) + $p4 + (($p6+0.5)/24) - 90;
return ($lat, $long);
}

# convert a lat, long in DEGREES to a qra locator
sub lltoqra
{
my $lat = shift;
my $long = shift;

my $v;
my ($p1, $p2, $p3, $p4, $p5, $p6);

$lat += 90;
$long += 180;
$v = int($long / 20);
$long -= ($v * 20);
$p1 = chr(ord('A') + $v);
$v = int($lat / 10);
$lat -= ($v * 10);
$p2 = chr(ord('A') + $v);
$p3 = int($long/2);
$p4 = int($lat);
$long -= $p3*2;
$lat -= $p4;
$p3 = chr(ord('0')+$p3);
$p4 = chr(ord('0')+$p4);
$p5 = int((12 * $long) );
$p6 = int((24 * $lat) );
$p5 = chr(ord('A')+$p5);
$p6 = chr(ord('A')+$p6);

return "$p1$p2$p3$p4$p5$p6";
}

# radians to degrees
sub rd
{
my $n = shift;
return ($n / $pi) * 180;
}

# degrees to radians
sub dr
{
my $n = shift;
return ($n / 180) * $pi;
}

# calc bearing and distance, with arguments in DEGREES
# home lat/long -> lat/long
# returns bearing (in DEGREES) & distance in KM
sub bdist
{
my $hn = dr(shift);
my $he = dr(shift);
my $n = dr(shift);
my $e = dr(shift);
return (0, 0) if $hn == $n && $he == $e;
my $co = cos($he-$e)*cos($hn)*cos($n)+sin($hn)*sin($n);
my $ca = $co ? atan(abs(sqrt(1-$co*$co)/$co)) : $pi;
$ca = $pi-$ca if $co < 0;
my $dx = 6367*$ca;
my $si = sin($e-$he)*cos($n)*cos($hn);
$co = sin($n)-sin($hn)*cos($ca);
my $az = $co ? atan(abs($si/$co)) : $pi;
$az = $pi - $az if $co < 0;
$az = -$az if $si < 0;
$az = $az+2*$pi if $az < 0;
return (rd($az), $dx);
}

# turn a lat long string into floating point lat and long
sub stoll
{
my ($latd, $latm, $latl, $longd, $longm, $longl) = $_[0] =~ /(\d{1,2})\s+(\d{1,2})\s*([NnSs])\s+(1?\d{1,2})\s+(\d{1,2})\s*([EeWw])/;

$longd += ($longm/60);
$longd = 0-$longd if (uc $longl) eq 'W';
$latd += ($latm/60);
$latd = 0-$latd if (uc $latl) eq 'S';
return ($latd, $longd);
}

# turn a lat and long into a string
sub lltos
{
my ($lat, $long) = @_;
my $slat = slat($lat);
my $slong = slong($long);
return "$slat $slong";
}
1;

st5150
05-21-2010, 02:39 PM
Know your gridsquare at all times!

Launch gpsd by running your favorite map program or

/usr/libexec/navicore-gpsd-helper

Then run

python gpsdll2mh.py





#!/usr/bin/python

# gpsdll2mh.py
#
# G1OGY 20081102
#
# `gpsdll2mh.py` is a `gpsd' [http://gpsd.berlios.de] console-client which
# prints Maidenhead LOCATOR at user-determined, arbitary, even-number
# precision; (GPS precision max=52 - it gets quite silly long before that).
#
# PREREQUISITES: this program requires access to a running `gpsd' daemon
# (with a GPS receiver attached and functional).
#
# `gpsdll2mh.py` is intended for 'Rover-style' operation ( WAB, WAS, perhaps)
# so that one's 'new' locator can be sent as soon as it becomes apparant.
# It will also assist in calculating a (static) locator to a greater
# precision for microwave dish aiming purposes.
#
#
#
# Command line args are supported to select Locator precision (default=6);
# repeat frequency; server:port
#
#
# Command line (console) usage:
#
# python gpsdll2mh.py [[[precision] [repeat]] [server:port]]] <additive>
#
# like: python gpsdll2mh.py 10 30 (on a linux laptop running gpsd)
# or : python gpsdll2mh.py 10 30 192.168.1.99:2947 (on a (Windows) laptop connecting
# to linux server on standard port)
# so: 10-char locator evey 30 seconds
#
#
# Credits:
# The Lat/Long to Maidenhead part of this program is a rework of an original script by
# Dan Jacobson -- http://jidanni.org/geo/maidenhead/ ; latterly updated by Rene Kanter.
#
## lonlat2maidenhead -- long/lat to Maidenhead grid calculator not limited to 6 characters
## Created On : Sat Mar 15 03:54:08 2003
## rkanters 2004.2.20 version ll2mh
#
# Thank you, gentlemen.
#

#
# gpsdll2mh.py Program code
# -------------------------


# get modules
import re, sys, string
from time import sleep
from socket import *

# Set variables (defaults)
gpsdHost = 'localhost'
gpsdPort = 2947 # gpsd default (IANA)
gpsdCall = ['p'] # fixed gpsd command for 'position'

# print usage at default (no args) start ('cos of cheap way to do command-line args)
print '\n*********************************************** ************************'
print '\n',sys.argv[0],

# Ah! running with no args
if len(sys.argv)<2:
print "Running : 6-char LOC, 5 sec rptr, `gpsd' is local, default port \n"
print 'Usage:'
print ' ',sys.argv[0],'[[[LOC Precision] [Repeat delay]] [Server:port]]]\n'
# Abort!
print '\nINFO :: ** Ctrl-C to stop **\n\n'

# Ah! Now have args to chobble...
# validate the input precision value: must have an even number
if len(sys.argv)>1:
loclen=int(sys.argv[1])
if loclen<2 or loclen%2!=0:
sys.stderr.write('ERROR :: Locator precision requested must be an even number \n\n')
sys.exit(87)
else:
loclen=6 # why report only Square? (won't often change unless you're in a 'plane!)
# if only sqare is needed then '4' on cmd line

maxn=loclen/2 # program constant

# grab or set repeat value
if len(sys.argv)>2:
snooze=int(sys.argv[2])
else:
snooze = 5 # seconds


# gpsd network server
if len(sys.argv)>3:
sp = sys.argv[3].split(":")
gpsdHost=sp[0]
gpsdPort=int(sp[1])
print 'INFO :: Connecting to : ', gpsdHost,':',gpsdPort,'\n'

# Networking
# create local socket
gpsdSock = socket(AF_INET, SOCK_STREAM)

# connect to gpsd daemon
try:
gpsdSock.connect((gpsdHost, gpsdPort))
except Exception, e:
print " FATAL ERROR :: Cannot connect to `gpsd'!\n"
print "Is `gpsd' running? Is your server:port address correct?\n"
print "System message ::" , e ,'\n'


# send position query, receive response and calculate LOCATOR
# ~persevere~ if daemon is recalcitrant
try:
while 1:
for Query in gpsdCall:
gpsdSock.send(Query)
data = gpsdSock.recv(32)
if len(data)<12:
break
latlong = data[7:]

A=ord('A') # set a base value for the calcs.

# Following commented code originally allowed for manual entry of the lat/long values -
# I'll revisit this sometime so that there's a stand-alone option.
# run the prog with a switch - it sits and waits for input: LAT.###### <space> LONG.###### [CR]
# JIC the OPS have only a handheld GPS or Sat-Nav system available.
##
### while 1:
### line=sys.stdin.re adline()
### if not line: break
### ll=re.findall(r'([-0-9.]+)\s+([-0-9.]+)',line)
##

ll=re.findall(r'([-0-9.]+)\s+([-0-9.]+)',latlong)
if ll:
for x,y in ll:
lat=float(x)
lon=float(y)
else:
sys.stderr.write(sys.argv[0]+': ERROR :: Cannot determine LAT / LONG. Is ''`gpsd'' running?\n\n')
sys.exit(44)
if -180<=lon<180: pass
else:
sys.stderr.write('ERROR :: longitude must be -180<=lon<180\n\n')
sys.exit(32)

if -90<=lat<90: pass
else:
sys.stderr.write('ERROR :: latitude must be -90<=lat<90\n\n')
sys.exit(33) # can't handle north pole, sorry, [A-R]

lon=(lon+180.0)/20 # scale down and set up for first digit
lat=(lat+90.0)/10
mhloc=""
i=0
while i<maxn:
i+=1
loni=int(lon)
lati=int(lat)
if i%2:
mhloc+=chr(A+loni)+chr(A+lati)
lon=(lon-loni)*10
lat=(lat-lati)*10
else:
mhloc+=str(loni)+str(lati)
lon=(lon-loni)*24
lat=(lat-lati)*24

# print lat/long 'cos a short (<12) locator won't update much
# (unless you've got the hammer down)

print 'Lat / Long: ', latlong, 'Locator: ', mhloc, '\n' # main output
sleep(snooze) # repeat delay
# Close down

except KeyboardInterrupt: # inhibits the traceback on exit
gpsdSock.shutdown(1)
gpsdSock.close()

# returns the grid square, to the precision given, that contains the given point.
#


# TO DO
# DONE! Trap no valid GPS Data - if GPS device is unplugged gpsd continues but provides `?'

# DONE! Trap no gpsd daemon - can't connect
# Esoteric...
# keep count (and display on close) of all Fields [IO, JO, JN], Squares [JO01, IO91, JP63]
# and Sub-Squares [JO01BR, JO01HQ] traversed on the journey.
# 3 counters inside. Storage?? mySQL-Lite??
# print 'em ???


You can download the code above here http://www.g1ogy.com/projects/gps/gpsdll2mh.py or here http://www.g1ogy.com/projects/gps/gpsdll2mh.shtml

A simple script to run this would be


/usr/libexec/navicore-gpsd-helper&
sleep 15
python gpsdll2mh.py


Or if you want the extra bells such as the compass from GPSJinni


GPSJinni&
sleep 15
python gpsdll2mh.py

ki6amd
06-07-2010, 05:32 PM
So there's no /dev/tty or /dev/rfcomm ? Hmm... I only had a test unit, but I thought there was. Anyone ever heard of bluetooth serial adapter? It's supported under almost every bluetooth stack as BTSPP. I'm fairly certain it will work with the N900, just as it does with the N810.
http://annectere.com/shop/media/catalog/product/cache/1/image/5e06319eda06f020e43594a9c230972d/B/l/Bluetooth_Serial_Module.jpg

You can find MANY manufacturers of these here (http://www.google.com/products?q=bluetooth%20serial%20adapter&um=1&hl=en&ie=UTF-8&sa=N&tab=if). Let me know if this helps... I've blogged about this at http://blog.ki6amd.com

fnordianslip
11-17-2010, 08:16 PM
So USB host mode for the N900 is looking as if it will be useful imminently, and the new Kenwood D-72 HT is due in early December (I've just preordered one).

I've put a feature request in for the power-kernel to support AX.25 networking and KISS mode, and have just built such a variant of the power-kernel v45, which I may not actually test just yet until the dust settles a bit and some reported issues are better explained.

I hope to build the ax25 libs and utils packages over the next few weeks for maemo5. There's still the old stuff I built for N8x0 (Diablo) floating around here somewhere, too.

If anyone else is planning on getting a D72, it would be interesting to hear if you plan to use it with your maemo device.

biketool
04-15-2011, 04:29 AM
AX 25 is great for APRS, if anyone is writing an app though it should have a console mode for accessing BBS's like on the international space station.
Here is a PSK-31 project that looks easy enough to run on a N900. http://www.qsl.net/n1vtn/phaseshift.html
I dont have a working scratchbox but Petittrack is on the same page and worked brilliantly on the Zaurus source there too. http://www.qsl.net/n1vtn/petittrack.html
My netbook / partition is too small to fit scratchbox so I can't compile these myself.
Any thoughts of trying a one off hack/wrapper of the Android Echolink app? http://www.echolink.org/faq_android.htm