Akademisk Radioklubb


License course spring 2018

Our first amateur radio license course this year will start in week 6. The precise date, time and location will be updated in this post once it is ready. If you would like to impact the date and register for the course, please answer this form. It is possible to show up to the first lecture without registering, however it is nice to know how many people to expect beforehand with regard to room reservations.

As an amateur radio operator, you will learn a lot about radio communication, electronics, propagation mechanics and much more. You can even build your own electric circuits that allow you to communicate with other amateurs from all over the world. An amateur radio license is required to participate in the amateur radio hobby. With the amateur radio license you get access to a large amount of frequencies, which is what allows us to perform this hobby. Feel free to show up for the first lecture if you would like to learn more about this hobby, and why it is fun.

The course is open to anyone, and will consist of four lectures followed by an exam. Each lecture is approximately two hours long. The course is offered in English or Norwegian, depending on the attendees. The course is free, but if you pass the exam there is a license fee of 2000 NOK to the national communications authority (NKOM). The exam is only available in Norwegian. You may bring a dictionary if you are not proficient in written Norwegian.

The lecture plan is:

Date Topics
TBD Introduction to amateur radio, practical prefixes and units, Ohms law, Passive components, Direct Current
TBD Alternating current, Active components, Receiver/radio architecture, Modulation
TBD Antennas and cables, Wave propagation, Digital Communication
TBD Left over topics, walkthrough of example exam

The curriculum for the course is “Veien til internasjonal amatørradiolisens”, which can be purchased here.

If you already know that you are interested in amateur radio, ARK is currently recruiting new members. A license is not required to apply, but we encourage new members to get licensed as soon as possible, so that they are able to partake in all that the club has to offer.

Register for the course.

Improvements to the 3 m parabolic dish mount

As mentioned in a previous post, we uncovered a mounting issue during a recent maintenance session of our 3m parabolic dish. The Spid BIG-RAS rotor mounts to a piece of metal tubing at the top of the tiltable mast. At some point this tubing became deformed, causing the rotor to attach improperly. Fortunately we discovered this in time, re-tightened the bolts and made a plan to  make a more permanent fix.

We decided to weld together a square flange bracket with the circular flange on the bottom part of the rotor. With this modification the square flange mounts directly to the mast via four heavy duty bolts. We believe that this attachment method is much more robust to vibrations, and is also simpler to mount.

Thanks to Omega Verksted for lending us the use of their metal workshop, and thanks to everyone that for helping out with the heavy lifting.

With a more sturdy attachment, we are more confident that the dish will move about as expected. Now we can start attempting to receive transmissions in the 23 cm band, which we will come back to this in a later post.

Rough antenna pattern measurements using a local radio beacon

As part of a sub-project for my master’s thesis I performed some antenna pattern measurements on three amateur radio yagi antenna systems in Trondheim. An antenna pattern is useful when evaluating the characteristics and performance of an antenna.

The sub-project for my master’s thesis originally concerned ionospheric scintillations on satellite downlinks in the 144 MHz and 430 MHz amateur radio bands, and ground stations were built/modified to measure these effects. During verification of the ground station setups we evaluated the antenna patterns of the ground station antennas. This is repeated in this blog post as it may be of interest to other amateurs.

The antennas we measured on is a newly (late 2016) erected four bay loop fed array (LFA) antenna from InnovAntennas, and 2×9 and 2×19 crossed Tonna antennas for 144 MHz and 430 MHz respectively. The Tonna antennas are part of the NTNU Test Satellite (NUTS) ground station.

Height curve between NUTS ground station and LA2VHF beacon at Vassfjellet. The distance is sufficiently large so that the 800 m height difference causes only a 1-2 degree take off angle tilt.

Each of the CW beacons at Vassfjellet sends a morse code sequence, e.g. “LA2VHF JP53EG”, followed by a 10 seconds long CW tone. The measurement is performed by logging the signal power during the long CW tone after each beacon sequence, and rotating the test antenna step by step. The process is repeated for each antenna position in 4 degree increments. Once the antenna has rotated 360 degrees, an antenna pattern is derived. Although all of the antennas have access to both vertical and horizontal polarization, we chose to measure only the horizontal polarization of the antennas due to the polarization of the beacon antennas (horizontal). This measurement method allows for far field measurements when the frequency is below approximately 1000 MHz. Below 1000 MHz the far field distance is so large that is becomes impractical to construct an anechoic chamber, which we have used in a previous posts[1][2] on measuring antenna patterns. This method would be essential if we ever want to measure the patterns of our HF antennas.

The measured antenna patterns seen in the figures above correlate fairly well with the expected results. Some artifacts are expected due to the measurement method, for example the pattern is very likely to include errors caused by reflections in the nearby environment. One example in the antenna patterns for the 2×9 and 2×19 yagis is a strong lobe between 120 degrees and 20 degrees. At these angles there is a large hillside that could explain the reflections. The 4 bay array shows a large squinting main lobe that could be caused by a large ventilation aggregate located next to the antenna.

To get better results a second transmitter at a different location could be utilized. If the pattern is the same as during the first measurement it is likely the actual pattern that was measured. At the points where it deviates it would be possible to perform an analysis to figure if a lobe occurs due to reflections. But the most important improvement would be to automate the process to avoid measurement bias and fatigue. With the current setup each measurement took about 40 minutes of manual labor.

Christmas tree party

Every year, ARK organizes an annual Christmas tree party. The event functions as a nice break in an otherwise stressful exam period. We serve porridge and gløgg, and even dance around the tree when it becomes too late in the evening.

LA1WUA doing SWR measurements on the Christmas decorations.

The most important part of this party is to bring about Christmas with the annual Christmas QSO, where LA1ARK, typically placed in the workshop, runs a QSO against LA1K, typically placed in the shack. Some years, we’ve also tried to use the Christmas tree itself as an antenna or placed the antenna in the tree, but we went for portable antennas attached to the radios themselves this year. Usually, the president and the station manager has the privilege of doing this tradition, but due to the circumstances this year, our social manager (and organizer of the party), LB7JH, and our workshop manager, LB0VG, did the honors.

It is traditional to create a new antenna on the fly.

LA3WUA showing LB0VG and LB7JH how to use the network analyzer.

Christmas QSO in progress.

Important information to exchange is the amount of snow in either end, what the participant on the other end wishes to receive as Christmas gifts, whether the participant has gotten anything nice as a Christmas present, whether the other participant thinks he or she might get a horse for Christmas, etc.

The Christmas QSO was a great success also this year. We wish everyone happy holidays, and a happy new year!

libpredict 2.0

After a long period of development, we are quite proud to announce that we have finally released a stable version of libpredict 2.0.

Libpredict is a C library for TLE-based satellite tracking (see the general introduction in an earlier post for more details). We started development of the library back in 2013, by forking Predict and starting the long haul towards separating the pure satellite prediction code from the user interface, and collecting the functions into a coherent API. In august 2015, we thought libpredict was ready for its first stable release, and released version 1.0.

Later that year, however, we realized that we had defined the numbers extracted from a TLE no less than three different places :-). Our structure fields were not very coherently named. The object associated with the fixed set of satellite parameters was also the same object used for outputting time-varying properties. Lots of fodder for our inner, undiagnosed OCD.

We follow semantic versioning for the library. Our measures to rectify for these issues resulted in backwards-incompatible changes that already required a major version bump from 1.0 to 2.0. And still, it turns out we weren’t finished.

The separation of satellite prediction functions into a separate library was a stepping stone towards multiple, larger goals. At the same time as we created libpredict, we also created Flyby, a more direct fork of the user interface parts of Predict. After having separated the satellite calculation code into libpredict, we wanted to back-substitute the satellite calculations in Flyby by calls to libpredict, while cleaning up the code and then do further development in the directions we wanted. Seeing all parts of libpredict in action in Flyby led us to realize that while some of our design choices were good, others were also not that good, resulting in further changes to the API. Insertion in Flyby also made missing features and bugs more apparent. We therefore decided to wait with the release of libpredict 2.0 until we were satisfied that there were no major change requirements lurking beneath the surface, so that we did not have to rapidly release version 3.0 straight after having released version 2.0.

Stock photo of generic ARK member doing generic programming stuff.

Finally, this year we were more or less satisfied. After almost 2.5 years, we could release version 2.0 of libpredict. This comes at great satisfaction, as we finally actually can recommend the general public to try out the latest stable version, and not the latest development version. We can also make Flyby use version 2.0 of libpredict instead of requiring the latest development version, which should make us able to finally release version 1.0 of Flyby too.

The release of libpredict 2.0 was duly celebrated by consuming Kvikklunsj (a Norwegian imitation of Kit-Kat) and Coca-Cola at ARK. During the release party for version 1.0, we celebrated using Solo (a Norwegian orange soda) and general candy. This was a horrible, nauseatingly sweet experience we’d rather not repeat, which might also serve to explain why it took 2.5 years between version 1.0 and version 2.0.

Rough summary of the changes – for more details, see the list of issues in the 2.0 milestone:

API changes:

  • Separate predict_orbit_t into an input structure (predict_orbital_elements_t) and an output structure (struct predict_position)
  • Replace the multiple occurrences of TLE parameters by a single instance
  • Clean up TLE parameter names and other fields
  • Change from predict_is_geostationary to predict_is_geosynchronous and change the definitions appropriately
  • Return predict_observation in predict_next_aos and predict_next_los
  • Change the arguments for predict_doppler_shift to use a predict_observation instead of a predict_position
  • Input the TLE lines as separate strings instead of an two-element array of strings

New features:

  • Calculate phase and orbit number
  • Calculate satellite visibility status
  • Calculate satellite footprint
  • Calculate GHA, right ascension and declination for the sun and the moon
  • Calculation of max elevation of a pass


  • Add more examples on libpredict usage
  • Upper-casify and/or rename all constants and document them properly according to SGP4 publications

Bug fixes:

  • Set the international designator properly
  • Rectify the sign for the calculated doppler shift
  • Rectify a path error for our pkgconfig file
  • Remove the last global variable within the library, so that libpredict becomes truly threadsafe.

Other changes:

  • Replace all home-grown math functions by calls to functions from math.h.

The release notes and corresponding sources can be found at https://github.com/la1k/libpredict/releases/tag/v2.0.0, and doxygen documentation at http://la1k.github.io/libpredict/api/2.0/. Debian packages can be found at https://launchpad.net/~ryeng/+archive/ubuntu/libpredict. Check out the examples and the README file for introduction to how libpredict can be used, or otherwise see this earlier blog post (updated for recent API changes).

We anticipate that we might have to do some more API-incompatible changes in the future and be forced to release libpredict 3.0. In the meantime, we are aiming for a 2.1 release with added features for Venus and Jupiter tracking and improvements to AOS and LOS calculations.

« Older posts