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