JS8Call: Slack on shortwave

Hi, Habr.



Among the radio amateur software, there are many messaging programs, the most popular of which are FT8 and WSPR. However, they are more focused on classic radio amateur communication - acknowledgment of reception and / or exchange of a report on the quality of communication, and this is where it all ends. In this regard, the new digital type of communication JS8Call seemed very interesting to me, the possibilities of which are much wider.







Let's see how it works.



Reception and transmission



The JS8 protocol itself works on the same principle as the FT8 popular among radio amateurs. I have already parsed it on Habré, those who wish can familiarize themselves in more detail. In short, messages are transmitted on medium, long or short waves in the form of fixed "packets" with a length of 15 seconds, the length of each message is 77 bits, which on the one hand is not much, on the other hand, it allows you to transmit short messages in the form of a call sign, place of transmission, etc. ...



The FT8 protocol itself turned out to be very successful, because allows you to transmit and receive messages over long distances - with 5 W of output power, it is quite possible to contact a correspondent over a distance of 1000 km. But the text encoding scheme in FT8 is too limited, tk. is focused only on radio amateur callsigns, practically nothing else can be transmitted inside the message (in principle it is possible, but it will be very slow and inconvenient). But using the coding principle itself, another radio amateur Jordan Sherer created his JS8Call program based on FT8 (as you might guess, JS is the author's initials), which has much more flexible functionality:



  • : Turbo (6 , 160 ), Normal (15 , 50 , Slow (30c , 25 ). , , . , , , , .
  • : , , . , .
  • The program can work at almost any frequency, from 1.8 MHz to 144 MHz VHF.
  • There is an API for integration with external software via UDP or TCP.
  • The program works on any hardware, including Windows, OSX and Raspberry Pi, while the software is distributed free of charge and is available in source .


It is important to note that JS8Call is geared towards ham radioapplication and experiments in the field of communication, you should not consider it simply as a free replacement for a satellite phone in the taiga. There is no encryption or closed channels in the program - all messages are visible to everyone, so it is hardly suitable for prof. communication without "file modification" and licensing of allocated frequencies. On the other hand, for amateur radio experiments, such software can be not only interesting, but also useful, for example, you can organize your own SMS gate for sending messages from places where there is no cellular coverage in order to be able to emergency communication, or organize the exchange of messages between two groups radio amateurs on a hike - support for the Raspberry Pi makes it possible to make a compact and self-contained device for receiving and transmitting messages. All this is possible, goes beyond the "orthodox" radio amateur communication,but that makes it so interesting that you can try something new.



Physically, the connection of the program to the transceiver or receiver is carried out in the same way as for other digital modes, it is enough to connect the audio output of the transceiver to the PC and select the corresponding audio device in the software.



The general principle is clear, let's move on to testing.



Testing



My radio amateur callsign expired 5 years ago, and without a valid license it is officially impossible to work on transmission, so I will only use the program for reception, and I will test the “transmission” locally within the room using a PC sound card - obviously, the program “makes no difference ”Where the signal is coming from and where.



Reception



I installed the program on the Raspberry Pi and used it in receive mode: the GQRX program connected to the SDRPlay receiver and the JS8Call exchanged data via a virtual audio cable.







You can pay attention to the Distance field in the right corner of the picture. As you can see, you can even receive a message from another continent. In general, on the reception, everything is quite good. Almost all European countries and several stations from America and Canada were received on my modest antenna AOR SA7000 (this is a 2 meter long rod) on the balcony. Each mark on the map is a received station: The







maximum reception distance was 7831 km at 14 MHz. Alas, no signals from Russia were received.



Broadcast



I will test the "transfer" only locally, for which 4 copies of the program with different "virtual" callsigns USER1..USER4 were launched using the command line js8call.exe -r test1js8call.exe -r test4. In the settings, sending data to pskreporter was also disabled so as not to interfere with other radio amateurs with test messages. The windows for receiving and transmitting 4 programs look something like this: I







remind you that the frequency on the screen is "virtual", no signals were broadcast. As it turned out, even a virtual sound card is not needed, an ordinary microphone and computer speaker are enough.



JS8Call provides the following features:



  • Sending messages to all subscribers or to a specific user
  • The ability to send a response indicating the signal quality
  • Ability to forward a message to a subscriber through another subscriber
  • The ability to ask the subscriber if there are any received messages for him
  • The ability to see which subscriber "hears" whom, in order to know through whom a message can be sent.


This is just a part of the available functions, those who wish can familiarize themselves with the documentation for the program. All this can be tested locally, using a speaker and microphone, without even going on air. It is rather curious to observe how the second program, in response to a request for signal strength or station information, automatically transmits a response that appears in the "chat window" in the first program. In general, the possibilities for amateur radio experiments are quite large.



API



The last interesting point we will look at is the API. To begin with, you need to enable API support in the program in the settings, I chose TCP:







We write the simplest program to receive messages via socket:



import socket

HOST = '127.0.0.1'  # The server's hostname or IP address
PORT = 2442        # The port used by the server

with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
    s.connect((HOST, PORT))
    while True:
        data = s.recv(1024)
        print('Received', repr(data))


We launch. The result in the screenshot:







As you can see, we have full access to incoming messages in the form of JSON, which allows us to use them as we like, for example, for a gate in Telegram, SMS, sending to other services, etc. It seems that the API can also be used for transmission, but this is not accurate, the author has not yet posted a full description.



Conclusion



As you can see, the JS8Call program is definitely quite an interesting and somewhat new experiment in the field of radio amateur communication. JS8Call is focused not only on the "traditional" exchange of reception reports, but also supports more or less active participation of radio amateurs in field trips, communication in a campaign, work with messages and groups. There is now a certain increase in interest in QRP communications (low-power communications with portable equipment) and radio communications in nature, partly because there is more and more interference in cities, and serious antennas cannot be installed officially. So the JS8Call program is quite "in the subject" and will certainly interest radio amateurs who are fond of traveling and traveling. In general, all this is quite interesting, and one can hope that with the advent of such software, interest in amateur radio will only increase.



Well, everyone, as usual, happy experiments.



All Articles