Synoptic Code: Decoding a Russian Navy Weather Report Sent in Morse
Bellingcat Maritime Mysteries. A Morse transmission from the Russian tanker Yelnya on the Black Sea. Morse gives five-digit groups, the call sign leads to an X post, and the WMO ship code turns the groups into weather, with one tempting wrong answer on the way.
Title: Synoptic Code (Bellingcat Challenge, Maritime Mysteries series, by Galen, Bellingcat)
Description: This is a morse code transmission received on the 13th October 2024. The sender is thought to be the Yelnya, a Russian ship operating on the Black Sea.
.-. -.-. ...- / -.. . / ..- -.-. - .- ..... / .---- ...-- .---- ---.. .---- / ----. ----. ...-- ....- ..... / .---- ----- ...-- ....- -.... / ....- .---- -.... ----. ---.. / ...-- ..--- ....- ----- ..... / .---- ----- ..--- ---.. ----- / ....- ----- .---- ..--- ----- / ..... ....- ----- ----- ----- / --... ----- ..--- ----- ----- / ---.. ...-- ..... ----- ----- / ..--- ..--- ..--- ..... ..--- / ----- ----- ..--- ---.. ----- / .---- ...-- ----- .---- ..--- / -... - / .- .-. / ..- -.-. - .- ..... / -.Question: Can you decode the message? What was the reported air temperature in degrees Celsius? (give your answer to one decimal place i.e. “12.3”)
The answer, up front: the message is a standard WMO ship weather report (FM 13 SHIP) from call sign UCTA5. Its air-temperature group is 10280, so +28.0 °C. The obvious online answer, 34.6, is the ship’s longitude read as a temperature.
28.0The route: Morse to text, the call sign to an X post with the same message, and a decoding guide for the ship code to check what each group means. That last step matters, because the decode offered in the X thread is wrong.
Step 1: Morse to text
The challenge hints at it (“A morse code lookup table. Is this the best way?”): don’t decode 380 dots and dashes by hand. I used the Russian Morse code translator at themorselab.com, which falls back to Latin letters. The message only contains Latin letters and digits, so any International Morse decoder gives the same result.

Twenty words. Five letters of radio procedure, then thirteen groups of five digits.
RCV DE UCTA5 13181 99345 10346 41698 32405 10280 40120 54000 70200 83500 22252 00280 13012 BT AR UCTA5 N
The structure gives most of it away:
DE UCTA5is radio procedure: “from UCTA5”.UCTA5is a call sign. Russian call signs start withUorR.- Five-digit groups starting with a fixed identifier (
99…,222…) are the shape of a synoptic weather report, the WMO format that ships and weather stations send every six hours.13181starts with13and18: the 13th, 18 UTC, which matches the date in the brief and one of the standard reporting hours. BT ARare prosigns: break, end of message.
Step 2: The call sign leads to an X post
A Google search for the call sign alone:
ucta5

The second result quotes the challenge’s groups word for word: “Russian Navy Morse code weather from Altay Class tanker Yelnya”.
The post on X from 13 October 2024, 18:28 UTC, is by a radio amateur who logged the transmission on 12464 kHz CW at 1805 UTC. It contains the identical message and a position: 34.5N 34.6E, heading south-west at 6–10 knots. A reply in the thread explains the call sign: the Yelnya still sent as RLA88 in March 2022, before its call sign changed to UCTA5.

The post confirms the sender and gives the position. The reply asking about the air temperature gives a decode, and links the reference guide.
How sure? Sure about the source: same date, same call sign, same groups. The challenge message ends in N (-.), the X post in K (-.-, “over”), one dash apart, which is a typical copying difference and doesn’t change any data group.
Step 3: False lead, the decode in the thread
A reply from January 2025 asks for the air temperature, and the answer comes straight back:
10346 = Air temperature 34.6 degrees 00280 = Sea temperature 28.0 degrees
It looks plausible: 10346 starts with 1, and the air-temperature group in the ship code is 1snTTT. But it’s wrong twice:
10346is not a temperature. In the ship code, the group after the latitude (99LaLaLa) is always the longitude,QcLoLoLoLo.1is the quadrant (north/east),0346is 034.6°. The X post itself gives the position as 34.5N 34.6E, so its own message contains that longitude.- The actual air-temperature group,
10280, is skipped. The reply quotes00280instead. That’s the sea-water temperature group (0snTwTwTw), and it happens to hold the same value, 28.0. So the reply has the right number under the wrong label and the wrong number under the right one.
Lesson: a five-digit group means what its position says, not what its first digit looks like. A decode without the group order is a guess.
Step 4: Decoding with the ship code
The same reply links the guide that settles it: Decode Ship Observation Code from the Naval Postgraduate School, FM 13-IX SHIP. It gives the symbolic form, the order of the groups:
DDDD YYGGiw 99LaLaLa QcLoLoLoLo iRiXhVV Nddff (00fff) 1snTTT
2snTdTdTd 4PPPP 5appp 7wwW1W2 8NhCLCMCH 9GGgg
222DsVs (0snTwTwTw) (1PwaPwaHwaHwa) ...
and defines the air-temperature group:

1snTTT: identifier 1, sign 0 = positive, temperature in tenths of a degree. 10280 = +28.0 °C.
Laid over the message, group by group:

Blue is the position, green the air temperature, yellow the sea temperature. The 1 at the start of 10346 is a quadrant code.
| Group | Symbolic form | Decoded |
|---|---|---|
UCTA5 | DDDD | call sign (Yelnya) |
13181 | YYGGiw | 13th of the month, 18 UTC; iw=1: wind from anemometer, in m/s |
99345 | 99LaLaLa | latitude 34.5° |
10346 | QcLoLoLoLo | quadrant 1 = north/east; longitude 034.6° |
41698 | iRiXhVV | no precipitation group; manned, weather group included; cloud base 1000–1500 m; visibility 20 km |
32405 | Nddff | 3/8 cloud cover; wind from 240° at 5 m/s |
10280 | 1snTTT | air temperature +28.0 °C |
40120 | 4PPPP | sea-level pressure 1012.0 hPa |
54000 | 5appp | pressure steady, 0.0 hPa change in 3 hours |
70200 | 7wwW1W2 | state of sky unchanged |
83500 | 8NhCLCMCH | 3/8 low cloud, stratocumulus |
22252 | 222DsVs | section 2: course south-west, 6–10 knots |
00280 | 0snTwTwTw | sea-water temperature +28.0 °C |
The last group, 13012, would be the instrumental wave group (1PwaPwaHwaHwa), but a 30-second wind-wave period with 6 m height isn’t plausible for a calm Mediterranean evening. It plays no part in the answer either way. For cloud base, weather and cloud type the guide refers to the WMO land-station code tables; visibility (VV, table 4377) is printed in the guide itself.
Verification
- Position cross-check. Decoded as
99LaLaLa QcLoLoLoLo, the message puts the ship at 34.5° N, 34.6° E. That’s exactly the position the X post gives independently of any decoding, and it’s the eastern Mediterranean, between Cyprus and the Levant, on a route from the Black Sea area. If10346were the air temperature, the report would have no longitude at all. - Course cross-check.
22252decodes to south-west at 6–10 knots, word for word the “Heading S West at 6-10 Knots” in the post. - Group order.
10280sits where the guide puts1snTTT, afterNddffand before4PPPP.00280sits after222DsVs, where the guide puts the sea temperature.
The moment of certainty is the position: the X post’s own “34.5N 34.6E” is 99345 10346. Once those two groups are the position, the only temperature group left in section 1 is 10280.
Answer
28.0Takeaways
- Five-digit groups are a format, so find the format. Repeated identifiers, a day-hour group and a call sign up front point to a synoptic report. Once you know the format, every group has a defined meaning.
- Position decides meaning. In SYNOP and SHIP codes, a group’s first digit is often an identifier, but not always: after
99LaLaLacomes the longitude, whatever its first digit. Read the groups in order against the symbolic form. - A call sign is a search term. Radio amateurs log military transmissions publicly, with time, frequency and often position. One search turned a string of digits into a named ship at a known place.
- Check a found answer against its own source. The wrong decode sat in the same thread as the position that disproves it.