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](http://8ch9azbsfifz.github.io/bandplan/html/bandplan.html#DE02)
3.500 - 3.510 0.200 CW
Klasse_A: 750W (PEP)
Klasse_E: 100W (PEP)
[DE01](http://8ch9azbsfifz.github.io/bandplan/html/bandplan.html#DE01) _Intercontinental QSO_
3.510 - 3.560 0.200 CW
Klasse_A: 750W (PEP)
Klasse_E: 100W (PEP)
[DE01](http://8ch9azbsfifz.github.io/bandplan/html/bandplan.html#DE01) _Contest_
3.555 CW [DE01](http://8ch9azbsfifz.github.io/bandplan/html/bandplan.html#DE01) **QRS**
3.560 CW [DE01](http://8ch9azbsfifz.github.io/bandplan/html/bandplan.html#DE01) **QRP**
3.560 - 3.580 0.200 CW
Klasse_A: 750W (PEP)
Klasse_E: 100W (PEP)
[DE01](http://8ch9azbsfifz.github.io/bandplan/html/bandplan.html#DE01)
3.560 CW [DE01](http://8ch9azbsfifz.github.io/bandplan/html/bandplan.html#DE01) **QRP**
3.580 - 3.590 0.500 Digital
Klasse_A: 750W (PEP)
Klasse_E: 100W (PEP)
[DE01](http://8ch9azbsfifz.github.io/bandplan/html/bandplan.html#DE01) _small bandwidth digital modes_
3.590 - 3.600 0.500 Digital
Klasse_A: 750W (PEP)
Klasse_E: 100W (PEP)
[DE01](http://8ch9azbsfifz.github.io/bandplan/html/bandplan.html#DE01) _small bandwidth digital modes, automatic digital stations_
3.593 WSPR [WSPR01](http://8ch9azbsfifz.github.io/bandplan/html/bandplan.html#WSPR01) **WSPR**
3.600 - 3.620 2.700 All
Klasse_A: 750W (PEP)
Klasse_E: 100W (PEP)
[DE01](http://8ch9azbsfifz.github.io/bandplan/html/bandplan.html#DE01)
3.620 - 3.650 2.700 All
Klasse_A: 750W (PEP)
Klasse_E: 100W (PEP)
[DE01](http://8ch9azbsfifz.github.io/bandplan/html/bandplan.html#DE01) _SSB contest_
3.630 Digital [DE01](http://8ch9azbsfifz.github.io/bandplan/html/bandplan.html#DE01) **Digital Speech**
3.650 - 3.700 2.700 All
Klasse_A: 750W (PEP)
Klasse_E: 100W (PEP)
[DE01](http://8ch9azbsfifz.github.io/bandplan/html/bandplan.html#DE01)
3.690 SSB [DE01](http://8ch9azbsfifz.github.io/bandplan/html/bandplan.html#DE01) **QRP**
3.700 - 3.800 2.700 All
Klasse_A: 750W (PEP)
Klasse_E: 100W (PEP)
[DE01](http://8ch9azbsfifz.github.io/bandplan/html/bandplan.html#DE01)
3.735 Digital [DE01](http://8ch9azbsfifz.github.io/bandplan/html/bandplan.html#DE01) **ATV**
3.760 [DE01](http://8ch9azbsfifz.github.io/bandplan/html/bandplan.html#DE01) **Emergency Region 1**
3.775 - 3.800 2.700 All
Klasse_A: 750W (PEP)
Klasse_E: 100W (PEP)
[DE01](http://8ch9azbsfifz.github.io/bandplan/html/bandplan.html#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