Adding HAM Callsign Support to SiK Telemetry Radio

Adding HAM Callsign Support to SiK Telemetry Radio

Until now and to my knowledge, SiK firmware did not have a built-in feature to handle the callsign transmission, leaving compliance to external hacks.

In this article, I will walk you through the feature I'm contributing to the SiK firmware: automatic HAM callsign transmission. We'll discuss the rationale, AT commands, and how to use it. Disclaimer: First of all I want to emphasize that I am not a lawyer, and the following is based on my understanding of the FCC rules. Therefore, I want to say one more time that I am not providing any legal advice.

Rationale

Licensed amateur radio operators are required by the Federal Communications Commission (FCC) to identify their station using their assigned callsign at regular intervals during transmissions. This requirement is outlined in Part 97 of the FCC rules and exists to ensure accountability and traceability within the amateur radio service. The callsign serves as a unique identifier that links their transmissions to their license. According to the regulation, the callsign must be transmitted at the end of a communication and at least every 10 minutes during ongoing transmissions. This applies whether the licensed amateur is transmitting voice, Morse code, or digital data. Even in cases where communication is automated (such as telemetry link) the station must still identify itself appropriately, typically by including the callsign in the data stream.

After digging more into the regulation, I personally found out that I am supposed to transmit my callsign since, although I am transmitting at 915 MHz, my radio does not comply with Part 15, therefore:

  • Amateur stations must transmit their assigned callsign every 10 minutes during communication.

  • The callsign must also be transmitted at the end of the communication.

  • Identification must occur regardless of modulation method (voice, Morse, digital data).

How the Feature Works

I introduced a small but useful addition: the ability to configure a callsign and an interval, and let the firmware handle automatic insertion of that callsign into the data stream.

The system works as follows:

  1. The user configures their callsign and interval using new AT commands.

  2. A timer schedules the transmission of the callsign at the given interval.

  3. If enabled, the callsign is inserted into the outgoing telemetry packets.

  4. If no callsign is configured, the default string NOSIGN is used.

It is important to note that this feature is disabled by default. Before enabling it, the user should set their callsign. If that is not the case, the system will transmit the default callsign NOSIGN every 10 minutes. Also, this feature is not part of the official firmware. I have submitted it to the authors for review. However, the pull request is still pending. If you are interested in using it (and improving it), you would need to recompile the firmware from my branch and flash it to your radio. If you are interested in doing so, this is the link to my branch that shows the modified code. 

How to use it

It is extremely simple to use this feature. I'll be using using my first name as callsign, in the following example. First step is to connect to your radio using a UART. Once the connection is successfull, you would need to enter the command environment (typing +++). Once you are in command mode, you just need to set the call sign and time interval (or leave the time interval to the default value of 600 seconds):

  AT&CS=<your_callsign>
  AT&CI=600

The interval needs to be specified in seconds. After receiving the confirmation, the last step is to just enable the feature with the command AT&CE and that is it! The receiver will now receive your callsign every 10 minutes.

This is a work in progress, and I am planning to improve the code to avoid potential conflicts with other data packets. Furthermore, I'll try to embed the transmission of a call sign as part of a mavlink packet, in order to have it received by the PixHawk Autopilot.

I hope this feature will be useful to others, and I welcome feedback and collaboration from the community!


Disclaimer: This post reflects my personal experience. I am not responsible for any damage, injury, or issues that may result from attempting to follow the same steps. Please do your own research and take all necessary safety precautions!