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

Advertisements


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s