I’ll fix this in the next hours, thanks for the details.
Done, it is now fixed!
From a quick look in Network observations, and if I’m not missing something, it seems that in both frequencies we don’t have any reception since 25th of March.
Indeed it’s 1200 bd.
Just as the exact baud rate doesn’t matter, the exact tone frequency pair (for AX.25 it’s 1200 Hz and 2200 Hz according to Bell 202 standard) isn’t that important either.
OBZP1 uses 1125 Hz and 2300 Hz.
This packet has a length of 0.9 seconds at 135 bytes (133 bytes payload and 2 bytes CRC).
135 bytes = 1080 bits
1080 bits / 0.9 sec = 1200 bits/sec
bookmark this thread
can you share, what app name in this screenshot? thank you!
73
That is https://www.ocenaudio.com/
thank you! i should learn more about this tools.
Hi,
While running tests, I’ve come to this initial conclusion…
I used these observations :
- satnogs_13653971_2026-03-25T06-46-48.ogg
- satnogs_13653994_2026-03-24T10-03-10.ogg
- satnogs_13653942_2026-03-25T17-45-50.ogg
- satnogs_13654017_2026-03-25T13-36-34.ogg
- satnogs_13653935_2026-03-25T17-49-43.ogg
Mode : AFSK 1200 Bell-202 + NRZI + AX.25
- Mark = 1200 Hz audio, Space = 2200 Hz audio (Bell-202 standard)
- Encodage NRZI (NRZ donne 0 trames, NRZI donne 13 trames CRC-OK)
- Framing AX.25 / HDLC (flag 0x7E, bit-stuffing, LSB-first)
- FCS CRC-16/IBM-SDLC (poly 0x8408)
13 unique frames were decoded with a valid CRC :
All with src=OBZP1-0 → dest=CQ-0, and ASCII telemetry payload:
260325204646;06;B1=4FA80200D80FCF0F;B2=50A80200D80FCF0F;T2=54;
Au=7353;Ai=-223;Bu=7356;Bi=146;Su=7407;Si=393;3u=7352;3i=0
260325095131;06;B1=0BEF0100BA0FCF0F;…;Au=7420;Ai=76;Bu=7420;Bi=60;…
260325163846;06;B1=866A0200C20FCF0F;…;Au=7386;Ai=-205;Bu=7388;Bi=146;…
Format:
YYMMDDHHMMSS;06;B1=…;B2=…;T2=temp;Au/Ai;Bu/Bi;Su/Si;3u/3i (battery registers + A/B/Solar/3V bus).
Non-standard AX.25 peculiarity:
- ctrl varies (0x00, 0x02, 0x06, 0x08, 0x0c) instead of 0x03 (UI)
- pid = 0x01 instead of 0xF0
→ A strict AX.25 decoder (which filters ctrl==0x03) rejects these frames.
This is why standard stations cannot decode anything despite the AFSK1200 chain.
Example of decoding on this observation 13653942 et 13653971
=== satnogs_13653942_2026-03-25T17-45-50 ===
[NRZI off=0] 136B OBZP1-0 > CQ-0 ctrl=0x0c pid=0x01
ASCII: 260325204646;06;B1=4FA80200D80FCF0F;B2=50A80200D80FCF0F;T2=54;Au=7353;Ai=-223;Bu=7356;Bi=146;Su=7407;Si=393;3u=7352;3i=0
[NRZI off=0] 136B OBZP1-0 > CQ-0 ctrl=0x00 pid=0x01
ASCII: 260325204746;06;B1=8CA80200D80FCF0F;B2=8CA80200D80FCF0F;T2=54;Au=7356;Ai=-256;Bu=7357;Bi=146;Su=7416;Si=427;3u=7355;3i=0
[NRZI off=0] 133B OBZP1-0 > CQ-0 ctrl=0x02 pid=0x01
ASCII: 260325204816;06;B1=AAA80200D80FCF0F;B2=AAA80200D80FCF0F;T2=54;Au=7325;Ai=159;Bu=7323;Bi=143;Su=7321;Si=0;3u=7321;3i=0
[NRZI off=0] 136B OBZP1-0 > CQ-0 ctrl=0x06 pid=0x01
ASCII: 260325204846;06;B1=C7A80200D80FCF0F;B2=C8A80200D80FCF0F;T2=54;Au=7355;Ai=-262;Bu=7356;Bi=147;Su=7415;Si=432;3u=7353;3i=0
[NRZI off=0] 136B OBZP1-0 > CQ-0 ctrl=0x08 pid=0x01
ASCII: 260325204848;06;B1=C9A80200D80FCF0F;B2=CAA80200D80FCF0F;T2=54;Au=7346;Ai=-143;Bu=7346;Bi=145;Su=7388;Si=309;3u=7345;3i=0
=== satnogs_13653971_2026-03-25T06-46-48 ===
[NRZI off=0] 131B OBZP1-0 > CQ-0 ctrl=0x06 pid=0x01
ASCII: 260325095131;06;B1=0BEF0100BA0FCF0F;B2=0BEF0100BA0FCF0F;T2=54;Au=7420;Ai=76;Bu=7420;Bi=60;Su=7417;Si=0;3u=7420;3i=0
[NRZI off=0] 135B OBZP1-0 > CQ-0 ctrl=0x08 pid=0x01
ASCII: 260325095201;06;B1=0BEF0100BA0FCF0F;B2=0BEF0100BA0FCF0F;T2=54;Au=7442;Ai=-214;Bu=7442;Bi=58;Su=7485;Si=297;3u=7441;3i=0
[NRZI off=0] 134B OBZP1-0 > CQ-0 ctrl=0x00 pid=0x01
ASCII: 260325095401;06;B1=0BEF0100BA0FCF0F;B2=0BEF0100BA0FCF0F;T2=54;Au=7431;Ai=-87;Bu=7432;Bi=59;Su=7455;Si=168;3u=7431;3i=0
[NRZI off=17] 17B lv
cJ-6 > 0Q+"iq-0 ctrl=0x9f pid=0xea
ASCII:
Could you show us how and where do you see that in your observations?
Hi Daniel,
Looking more closely at this and using the results that F4TNk has given us, I find that direwolf atest -F 1 (fix-bits mode) with relaxed AX.25 gives decodes. Using atest with the -F 1 switch allows non-standard ctrl bytes (0x00, 0x02, 0x06, 0x08, 0x0c) and pid=0x01 to be accepted.
For example, try the command - sox satnogs_13654017_2026-03-25T13-36-34.ogg -r 48000 test.wav then atest -F 1 test.wav
Format looks like -
-
YYMMDDHHMMSS= UTC timestamp of the beacon -
06= frame counter/sequence -
B1/B2= raw battery register bytes (little-endian) -
T2=54= temperature sensor (°C) -
Au/Ai= A-bus voltage (mV) / current (mA) -
Bu/Bi= B-bus voltage / current -
Su/Si= Solar-bus voltage / current -
3u/3i= 3.3V-bus voltage / curren
The attached script can be used to examine multiple files.
Good hunting all,
Bob
N6RFM
decode_obzp1.sh.zip (970 Bytes)
hello daniel @dl7ndr using ocen now i can detect and measure with accurate the exact tone of afsk signal
now im wondering, what if we dont have information about the exact length of packets. how we measure the baudrates?
Hi Bali,
Did you try atest as above? 1200 baud.
/b
Hi Daniel,
You’re right, it’s not exactly the Bell-202 standard
. If we analyze, for example, satnogs_13653971_2026-03-25T06-46-48.ogg, I measure:
Frame 095131 (t=280s) — FFT resolution 0.62 Hz
MARK region 800-1600 Hz: 1192.5 Hz (amp=1836)
SPACE region 1800-2800 Hz: 2298.1 Hz (amp=582)
Space/mark amplitude ratio: 0.32
Separation: 1106 HzFrame 095401 (t=430s) — FFT resolution 0.62 Hz
MARK region 800-1600 Hz: 1191.9 Hz (amp=1588)
SPACE region 1800-2800 Hz: 2298.1 Hz (amp=549)
Space/mark amplitude ratio: 0.35
Separation: 1106 Hz=== Decoder test 1200/2300 vs 1200/2200 (3 phases only for speed) ===
Mark=1200 Space=2200: 3 unique CRC-OK framesMark=1200 Space=2250: 3 unique CRC-OK frames
Mark=1200 Space=2300: 3 unique CRC-OK frames
Mark=1200 Space=2350: 3 unique CRC-OK frames
| Mesure | Valeur |
|---|---|
| Mark (pic FFT) | 1192 Hz ≈ 1200 Hz |
| Space (pic FFT) | 2298 Hz ≈ 2300 Hz |
| Separation | 1106 Hz |
By slightly changing the analysis method, I also obtain a similar result :
Therefore, the true audio frequencies are closer to 1200/2300 Hz, not the standard Bell-202 (1200/2200 Hz). But this has no practical importance for the decoder; they still capture the tone at 2298 Hz. The 3 unique frames are decoded regardless of the space value between 2200 and 2350 Hz.
Here is the Python script used for space tone analysis :
DOKA_OGG.zip (194 Bytes)
Here is the Python script used for decode frame :
analysis_doka_decoder.zip (6.1 KB)
Does anyone have an IQ file from a good observatory ?
73’s
hi Bob, yes i tried it. and it work. because can decoded by atest, we now its baudrates should be around 1200. but if its not work, i mean for another sat, how we know the baudrates. is there another method?
thank you!
Have a look at this OBZP1 location
Jan | PE0SAT
@fredy Could you program some Doka observation on this satellite using my UHF station? For testing purposes and UHF band protection, please? Do I need an active station?
tnx
Done for the next 48h
Hi @bali
I’m still estimating signal bandwidth/baudrate using Inspectrum. As for tomes being used, I’m also here to learn.
![]()
I wonder if this satellite is still in orbit, I haven’t seen any recent receptions nor a positive object ID.
Jan | PE0SAT

