XML Bandplan – Structured Amateur Radio Bandplan

As of today bandplan information for amateur radio is accessible in form of various spreadsheets, PDFs or even in Wikipedia. Of course this differs from country to country. Depending on the source, the bandplan may be outdated and it can be challenging to find a valid source for up-to-date information. While it is possible to find bandplan authoritative information on bandplan usage for the three different IARU regions, the best-practices for the member countries are even more difficult to find. In short: the information is difficult to find, exists in various formats and is not at hand when you really need it.

For my FT 817 remote control project I was in need of a digital bandplan for my C source code. Instead of hacking the information into the corresponding C structures I chose a different approach: I created a structured XML file with the bandplan information and used XSLT scripts to generate the corresponding C structures from the XML file:
<bandname=“40m”author=“DG6FL”created=“20121109″valid=“20130101″ref=“DE02″>
<countryname=“DE”/>
</band>
Using (XSLT) scripts this information can be converted to C source code:
constt_bandbands[]={
{“2200m”,13570,13780, NULL },
{“2200m: CW, QRSS, narrow digital modes”,13570,13780, NULL },
{“160m”,181000,185000, NULL },
};
Well I did not stop there: I implemented capabilities for handling different regions within the frequency bands, countries and licenses. In the XML files this looks like this:
<regionmin=“7175000″max=“7300000″bandwidth=“2700″ref=“US01″>
<licensename=“Amateur_Extra”ref=“US01″/>
</region>
In addition to the obvious bandplan informations it was also helpful to create channels on particular frequencies. These channels can contain a name or a mode information, i.e. for switching the TRX automatically.
<channelname=“PSK31″freq=“7035000″ref=“US02″><modename=“Digital”/></channel>
During the implementation I realized, that all entries should have some generic information, i.e. the author of the entry, a version number, a timestamp and a reference. The references (i.e. HTML, PDF or spreadsheets) can be downloaded within the framework I have created, stored to the git repository and checked for updates using MD5 sums. Checking the bandplans for possible changes is easily done now  using the toplevel makefile:
$ make check_references

For such a structured document it is very important, that its syntax is correct. Therefore I have described the document structure in a DTD file. This DTD file is referenced in all the XML bandplan files:
<!DOCTYPE note SYSTEM “bandplan.dtd”>
It is possible to check the syntax of all bandplans using the top level makefile:
$ make xmltest

HTML Output

What can we do with this structured XML documents? Obviously I have used it for my Arduino project. Using this information source it is easy to create HTML bandplans, PDFs or structures in the programming language of your flavour for further work.
$ make html 

 

Frequency (MHz) Bandwidth (kHz) Mode License Reference Comment
3.500 – 3.580 2.700
Klasse_A: 750W (PEP)
Klasse_E: 100W (PEP)
DE02
3.500 – 3.510 0.200 CW
Klasse_A: 750W (PEP)
Klasse_E: 100W (PEP)
DE01 Intercontinental QSO
3.510 – 3.560 0.200 CW
Klasse_A: 750W (PEP)
Klasse_E: 100W (PEP)
DE01 Contest
3.555 CW DE01 QRS
3.560 CW DE01 QRP
3.560 – 3.580 0.200 CW
Klasse_A: 750W (PEP)
Klasse_E: 100W (PEP)
DE01
3.560 CW DE01 QRP
3.580 – 3.590 0.500 Digital
Klasse_A: 750W (PEP)
Klasse_E: 100W (PEP)
DE01 small bandwidth digital modes
3.590 – 3.600 0.500 Digital
Klasse_A: 750W (PEP)
Klasse_E: 100W (PEP)
DE01 small bandwidth digital modes, automatic digital stations
3.593 WSPR WSPR01 WSPR
3.600 – 3.620 2.700 All
Klasse_A: 750W (PEP)
Klasse_E: 100W (PEP)
DE01
3.620 – 3.650 2.700 All
Klasse_A: 750W (PEP)
Klasse_E: 100W (PEP)
DE01 SSB contest
3.630 Digital DE01 Digital Speech
3.650 – 3.700 2.700 All
Klasse_A: 750W (PEP)
Klasse_E: 100W (PEP)
DE01
3.690 SSB DE01 QRP
3.700 – 3.800 2.700 All
Klasse_A: 750W (PEP)
Klasse_E: 100W (PEP)
DE01
3.735 Digital DE01 ATV
3.760 DE01 Emergency Region 1
3.775 – 3.800 2.700 All
Klasse_A: 750W (PEP)
Klasse_E: 100W (PEP)
DE01 Intercontinental QSO
 
 

Summary

Now there is a structured document framework, which can handle all bandplan information. So far I have implemented US and german bandplans. We now have one source for all the information we need. The XML bandplan project is a building block for your future ideas and projects. Feel free to contact me and contribute ideas, converters, updates and bandplan content.

Open Issues
Current Version (June 2013) v0.7.16


Morse Decoder Test – iPhone / iPad

There are three morse decoders in the App Store. Same test case for all of them: “CQ CQ CQ DE DG
D6FL DG6FL K” from memory of my palm paddle with 20wpm.

Results:

  1. MorseDecoder (HotPaw Productions)
    Seems to work
  2. MorseDec (Luca Facchinetti)
    Room for improvement
  3. Morsepad (Black Cat Systems)
    Does not work at all

Converting LaTeX to ePub

In contrast to claims in the web (i.e. M. Kofler: Sackgasse LaTeX?) it is possible to create ebooks from LaTeX sources easily even with sophisticated formulas and custom stylesheets. Using calibre and tex4ht I was able to provide an ePub of my PhD thesis: Atomistische Simulation von Nanoindentation. The resulting output looks quite impressive (minor defects when it comes to image boundaries or subscripts in text blocks). For comparison the original PDF.

Cross Glide

Raspi As WSPR Transmitter

Recently the Raspberry Pi (Raspi) has gained much interest in the Ham Radio community. One interesting things is: the I/O pins provide access to a clock signal (GPCLK0) and it is possible to modulate this clock signal via software. This has motivated Guido Ten Dolle (PE1NZZ) to implement a WSPR transmitter and to publish the sources under GPL. Within the last days I have made some minor modifications to the WsprryPi sources, built a 30m QRP filter using the ugly method and connected everything to my doublet antenna.

Raspi as WSPR Transmitter

Immediately my 10mW have been received in 743km distance by G6HUI (WSPR Spots):

Timestamp Call MHz SNR Drift Grid Pwr Reporter RGrid km az
 2013-04-13 15:30  DG6FL  10.140199  -16  -1  JO40cb  0.01  G6HUI  IO81wl  743  286
7869km with 10mW
Timestamp Call MHz SNR Drift Grid Pwr Reporter RGrid km az
 2013-04-22 05:02  DG6FL  10.140238  -21  1  JO40cb  0.01  W4AC  EL86  7869  289

Information on how to do this yourself can be found in the WsprryPi repository.


Mount OSX SMB Share From Linux

A small reminder for all the options:
mount.cifs //1.2.3.4/public /mnt/public -o user=myusername,password=mypassword,nounix,sec=ntlmssp,noperm,rw


Time Machine & Local Snapshots

Time machine can keep local snapshots. While this feature is useful if you travel and don’t have access to your Time Capsule, the local snapshots can consume a lot of the local disk space in /.MobileBackups. There is a complex Removal Algorithm for old local snapshots based on the remaining free disk space.

To find out how much space your local snapshots consume (Local Snapshots):

  • Apple-Logo → About This Mac → Further Information → Storage: Backup == Local Snapshot Space
  • Alternatively from commandline:
    test -d /.MobileBackups && du -hcs /.MobileBackups

It is useful to control the behavior of the local snapshots yourself (Controlling Local Snapshots) using tmutil disablelocal and tmutil enablelocal.


Downloading the Google Latitude History of a Year

It is possible to download the google latitude history of a complete year in one step:
https://maps.google.com/locationhistory/b/0/kml?startDay=01/01/2012&endDay=12/31/2012


Follow

Get every new post delivered to your Inbox.