Bu yazımızda UBAKUSAT uydusundan aldığımız GMSK 9600 şeklinde modüle edilmiş AX.25 paketlerini nasıl decode ederek telemetri verilerini oluşturabileceğimizi öğreneceğiz. Bu yazıda daha önce kaydedilmiş ses dosyaları üzerinden çalışarak çevrim dışı (offline) bir çözümleme işlemini anlatacağım.
Ben bu çalışmayı linux ortamındaki hazır araçlarla yapacağım ama benzer programları hatta aynı programları windows işletim sistemi içinde bulabilir veya alternatiflerini deneyebilirsiniz.
Kullanacağım Araçlar :
- AUDACITY ses düzenleme programı (https://www.audacityteam.org/)
- DIREWOLF modem programı (https://github.com/wb2osz/direwolf)
- LIBREOFFICE CALCULATOR (MS Excel’in linux karşılığı) (https://www.libreoffice.org/)
LEO (Low Earth Orbting – Alçak Dünya Yörüngesi) Uydu geçişleri birkaç dakika ile 15 dakika arasında olmaktadır. Herşeyi hazırlayıp geçiş anındaki telemetri verisini anlıkçevrimiçi (online) çözümlemek oldukça zordur. Ancakbu yazıda anlatacağımız yazılımları kullanmaya alıştıktan sonra bunları çevrimiçi de kullanabilir olacaksınız.
Programların çevrimiçi nasıl birbirine bağlanabilecekleri ile ilgili kullanımı başka bir yazıda ele almaya çalışacağım.
Öncelikle geçiş sırasında kaydedilmiş bir ses dosyasına ihtiyacımız var. Bu dosyayı aşağıdaki yöntemlerden biri ile oluşturabilirsiniz:
- Geçiş esnasında telsizinizin hoparlör çıkışını bilgisayarınızın mikrofon girişine uygun bir yapıda bağlayıp, doppler etkisini manuel veya bilgisayar destekli olarak sağlayarak uydudan 437.225Mhz de yapılan yayını kaydediniz
- Bir SDR alıcısını (örneğin RTL SDR) 437.225Mhz merkez frekansına ayarlayıp band genişliğini NBFM yaparak uydu sinyalini gördüğünüz yerin üzerine kilkleyerek sinyali WAV dosyası olarak bilgisayarınıza kaydediniz, bu işlemler sırasında doğru frekansı denk getirmeniz zor olabilir, bu nedenle bu işlemi aşağıdaki çözümle birlikte uygulamanızı tavsiye ederim,
- Bir SDR alıcısını (örneğin RTL SDR) 437.225Mhz merkez frekansına ayarlayıp IQ datasını kaydediniz, böylece geçiş esnasında belirli bir aralıkta (örneğin 200Khz) bulunan tüm yayınları kaydetmiş olursunuz. Daha sonra 2. adımdaki işlemi SDR alıcınız yerine IQ dosyasından oynatarak ses dosyasını kaydediniz
- Ya da benim bu yazıda yapacağım gibi SATNOGS ağında başkalarının kaydettiği veriler ile hızlıca denemeler yapabilirsiniz.
Bu yazıda, işleri biraz kolaylaştırmak adına, https://network.satnogs.org/observations/?norad=99998&observer=&page=1&failed=1&bad=1&good=1&station=&future=1&unvetted=1 adresinde bulunan ve SATNOGS ağına bağlı radyo amatörleri tarafından kaydedilmiş ses dosyalarını kullanacağım.
Bu sayfada bulunan RESULTS bölümünde aşağıdaki işaret, bu dinlemeye ait bir ses dosyası olduğunu belirtir:
İndireceğiniz dinlemenin ENCODING bölümünde GMSK9k6 yazdığından emin olunuz.
Bu kaydın dinleme işareti üzerinde kliklediğinizde kaydın WATERFALL olarak dinleme görüntüsü gelir.
Bu kayıtta birkaç kez telemetri sinyali alınmış, 400. saniye civarındaki sinyal oldukça başarılı görünmektedir. Öyleyse bu kaydın ses dosyasını dinleyebilirsiniz, bunun için yukarıdaki tab’lardan AUDIO’ya basmanız yeterli olacaktır (400. saniye civarına giderek dinleme yaparsanız, telemetre verisinin sesinin neye benzediği konusunda fikir sahibi olabilirsiniz)
Şimdi sol taraftaki DOWNLOAD bölümünden ses dosyasını indirip kaydedelim. Gösterilenörnek için bilgisayarınıza “satnogs_133879_2018-05-13T11-05-33.ogg” adında bir ses dosyası indirmiş olacaksınız.
Şimdi bu dosyayı AUDACITY programıyla açın. Aşağıdaki gibi bir ses dosyası ile karşılaşacaksınız.
Modem verisi olan bölümleri kolaylıkla ayırt edilebilmektedir (kesikli çizgilerin oluştuğu noktalar). Ben öncelikle kolaylık olsun diye modem verisi olmayan kısımları ses dosyasından kesip çıkartıyorum ve arşivliyorum. Böylece daha az yer kaplamış oluyor. Bunu DIREWOLF programına girdi olarak verebilirsiniz. Ama direwolf ile birlikte ATEST programı da yüklenmiş ise veri çözme işlemi için bu kesme ve kaydetme işini yapmanıza gerek yok. ATEST programı hızlı bir şekilde tüm ses dosyasını analiz etmekte ve içinde bulunan modem verilerini decode etmektedir.
Şimdi yukarıda hazırladığımız WAV dosyasının içindeki verileri çözelim :
atest -B 9600 -P C+ satnogs_133879_2018-05-13T11-05-33.wav
Çıktı olarak aşağıdaki gibi mesaj göreceksiniz :
———————————————————–
baris@baris-laptop:~$ atest -B 9600 -P C+ satnogs_133879_2018-05-13T11-05-33.wav
Data rate set to 9600 bits / second.
Using scrambled baseband signal rather than AFSK.
Demodulator profile set to “C+”
48000 samples per second
16 bits per sample
1 audio channels
4118642 audio bytes in file
Fix Bits level = 0
Channel 0: 9600 baud, K9NG/G3RUH, C+, 48000 sample rate x 2.
DECODED[1] 0:16.7098 YM1RAS audio level = 93(+136/-125) |||||||||
[0.4] YM1RAS>TA2MKA:TC0SAT<0x0b><0x0b>Z�<0x1f>�<0x01>
DECODED[2] 0:24.8244 YM1RAS audio level = 113(+150/-138) __|||||||
[0.5] YM1RAS>TA2MKA:TC0SAT<0x0b><0x0b>Z� <0x1b><0x01>
2 packets decoded in 0 seconds.
Burada çözümlenen telemetri mesajı konusunda genel bir fikir sahibi olacaksınız. Ancak BYTE olarak kodlanmış telemetre verileri terminal ekranınızda anlaşılır karakterler olarak görünmeyeceklerdir. Bunun için ATEST programı çıktısını hexadecimal rakamlar olarak görebilmemiz gerekmektedir.
Bunun için DIREWOLF programının kendisini kullanacağız. Aşağıdaki komut ses dosyamızı hızla ekrana basarken, bunu okuyan DIREWOLD içindekileri bize hexadecimal rakamlar olarak verecek:
cat satnogs_133879_2018-05-13T11-05-33.wav | direwolf -B 9600 -r 48000 -n 1 -b 16 -d p –
Bu komutun çıktısı aynı dosya için aşağıdaki gibi olacak :
Dire Wolf version 1.3
Includes optional support for: gpsd
ERROR – Could not open config file /home/baris/direwolf.conf
Try using -c command line option for alternate location.
Audio input device for receive: stdin (channel 0)
Audio out device for transmit: default (channel 0)
Channel 0: 9600 baud, K9NG/G3RUH, +, 48000 sample rate x 2.
Note: PTT not configured for channel 0. (Ignore this if using VOX.)
Ready to accept AGW client application 0 on port 8000 …
Ready to accept KISS client application on port 8001 …
Use -p command line option to enable KISS pseudo terminal.
YM1RAS audio level = 93(+136/-125) [NONE] |||||||||
[0.4] YM1RAS>TA2MKA:TC0SAT<0x0b><0x0b>Z�<0x1f>�<0x01>
——
U frame UI: p/f=0, No layer 3 protocol implemented., length = 140
dest TA2MKA 0 c/r=1 res=3 last=0
source YM1RAS 0 c/r=0 res=3 last=1
000: a8 82 64 9a 96 82 e0 b2 9a 62 a4 82 a6 61 03 f0 ..d……b…a..
010: 54 43 30 53 41 54 0b 0b 5a f8 1f df 01 00 00 00 TC0SAT..Z…….
020: a5 01 01 01 01 01 01 01 16 01 01 01 01 ff e6 00 …………….
030: 12 ff fe fe 5e fe e0 00 d2 00 07 00 01 ff 78 00 ….^………x.
040: 02 00 02 00 02 00 02 00 02 00 02 00 02 00 02 00 …………….
050: 02 00 02 03 4b 00 10 00 10 00 07 03 45 00 08 00 ….K…….E…
060: 00 00 00 00 00 00 00 03 48 00 1d 03 5c 03 19 00 ……..H…\…
070: 05 03 5b 00 05 03 06 02 8e 00 02 02 92 00 02 02 ..[………….
080: 92 00 02 5a f8 1d de 00 0e d3 a0 00 …Z……..
——
Error: Information part of telemetry packet must begin with “#”
Telemetry
YM1RAS audio level = 113(+150/-138) [NONE] __|||||||
Audio input level is too high. Reduce so most stations are around 50.
[0.5] YM1RAS>TA2MKA:TC0SAT<0x0b><0x0b>Z� <0x1b><0x01>
——
U frame UI: p/f=0, No layer 3 protocol implemented., length = 140
dest TA2MKA 0 c/r=1 res=3 last=0
source YM1RAS 0 c/r=0 res=3 last=1
000: a8 82 64 9a 96 82 e0 b2 9a 62 a4 82 a6 61 03 f0 ..d……b…a..
010: 54 43 30 53 41 54 0b 0b 5a f8 20 1b 01 00 00 00 TC0SAT..Z. …..
020: a5 01 01 01 01 01 01 01 16 01 01 01 01 ff e2 00 …………….
030: 14 00 06 00 0a ff 82 01 3f ff fa 00 1f ff 75 00 ……..?…..u.
040: 02 00 02 00 02 00 02 00 02 00 02 00 02 00 02 00 …………….
050: 02 00 02 03 4a 00 10 00 10 00 07 03 44 00 07 00 ….J…….D…
060: 00 00 00 00 00 00 00 03 48 00 1d 03 5c 03 19 00 ……..H…\…
070: 05 03 5d 00 05 03 07 02 8e 00 02 02 93 00 02 02 ..]………….
080: 93 00 02 5a f8 1d de 00 0f bd 40 00 …Z……@.
——
Error: Information part of telemetry packet must begin with “#”
Telemetry
End of file on stdin. Exiting.
Bu ekranda bulunan hexadecimal rakamları kopyayaladığımızda aşağıdaki gibi iki tane mesaj elde ederiz :
a8 82 64 9a 96 82 e0 b2 9a 62 a4 82 a6 61 03 f0
54 43 30 53 41 54 0b 0b 5a f8 1f df 01 00 00 00
a5 01 01 01 01 01 01 01 16 01 01 01 01 ff e6 00
12 ff fe fe 5e fe e0 00 d2 00 07 00 01 ff 78 00
02 00 02 00 02 00 02 00 02 00 02 00 02 00 02 00
02 00 02 03 4b 00 10 00 10 00 07 03 45 00 08 00
00 00 00 00 00 00 00 03 48 00 1d 03 5c 03 19 00
05 03 5b 00 05 03 06 02 8e 00 02 02 92 00 02 02
92 00 02 5a f8 1d de 00 0e d3 a0 00
a8 82 64 9a 96 82 e0 b2 9a 62 a4 82 a6 61 03 f0
54 43 30 53 41 54 0b 0b 5a f8 20 1b 01 00 00 00
a5 01 01 01 01 01 01 01 16 01 01 01 01 ff e2 00
14 00 06 00 0a ff 82 01 3f ff fa 00 1f ff 75 00
02 00 02 00 02 00 02 00 02 00 02 00 02 00 02 00
02 00 02 03 4a 00 10 00 10 00 07 03 44 00 07 00
00 00 00 00 00 00 00 03 48 00 1d 03 5c 03 19 00
05 03 5d 00 05 03 07 02 8e 00 02 02 93 00 02 02
93 00 02 5a f8 1d de 00 0f bd 40 00
Ben kolay olsun diye aşağıdaki gibi bir linux komut satırıkullanarak istediğim bilgiye kolayca ulaştım, sizler notepad veya benzeri bir programlada temizlik yapıp sadece telemetre bilgilerineulaşabilirsiniz:
cat satnogs_133879_2018-05-13T11-05-33.wav | direwolf -B 9600 -r 48000 -n 1 -b 16 -d u -d p – |awk -F”0:” ‘{print $2}’ -| grep “^ ” – | awk -F. ‘{print$1}’ | sed ‘s/TC0SAT//’
Sıra geldi bu telemetre verisinin içindekimesajı anlamaya. Bunun için :
http://www.tamsat.org.tr/tr/ubakusat-usat-telemetri-dekoder/
isimli yazımızdaki EXCEL dosyasını indirin. Dosyayı açıp içindeki sol üst bölüme bu iki mesajı sırasıyla yapıştırın, dosyanın alt bölümlerinde çözümlenmiş verileri görecek ve uydumuzun o anki durumu hakkında bilgi sahibi olacaksınız.
Bu arada dikkat etmeniz gereken şey, excel dosyası içerisinde de belirtildiği gibi, mesajın başından ‘54 43 30 53 41’ olan bölümüne kadar olan kısmını silmektir.Çünkü bu bölüm telemetre bilgisi değil istasyon bilgileridir.
54 43 30 53 41 54 0b 0b 5a f8 1f df 01 00 00 00 a5 01 01 01 01 01 01 01 16 01 01 01 01 ff e6 00 12 ff fe fe 5e fe e0 00 d2 00 07 00 01 ff 78 00 02 00 02 00 02 00 02 00 02 00 02 00 02 00 02 00 02 00 02 03 4b 00 10 00 10 00 07 03 45 00 08 00 00 00 00 00 00 00 00 03 48 00 1d 03 5c 03 19 00 05 03 5b 00 05 03 06 02 8e 00 02 02 92 00 02 02 92 00 02 5a f8 1d de 00 0e d3 a0 00
Verisi için EXCEL dosyasının çıktısı aşağıdaki gibidir :
Şimdiden iyi eğlenceler diliyorum…
GMSK 9600 olarak modüle edilmeyen kayıtları nasıl çevirebiliriz peki, yada kendimiz aldığımız farklı bir uydumun verilerini nasıl çözümşeyebilirim encodingini nasıl anlayıp, ona göre kod yazabilirim?
Birkac soruyu birlesik sordugun icin kendi fikrimi bolerek yazayim;
– Module edilmeyen kayitlar icin, yani yazilimin taniyamadigi veriler icin gozle duzeltmeler yapabilirsin ama bu oldurucu derecede zor olur. gercekten cozmen gereken bir kayit varsa, bolum bolum yazilimdaki (kaynak kodundaki) adimlari isleterek bir kontrol yapabilirsin… ama herhalde mars yuzyinde bir aracin kontrolsuz kaldiginda milyar dolar kaybetmemek icin boyle birseye girerdim 🙂
– Farkli uydulardan ne kaydi aldiginiza gore uygun programi kullanabilirsiniz…. neredeyse butun digital mod yazilimlari ya standard inputtan ya da ses dosyasindan cozumleme yapabiliyor, en kotu ihtimal bilgisayarin hoparlorunden cikip mikrofonundan grerek cozebilirsiniz. Direwolf genel oalrak AX25 cozumlemeye uygun bir yazilim. Ancak FSK, RTTY, SSTV, AMTOR, JT65 vb sinyalleri cozumleyen farkli farkli programlar var. ornegimizde direwolf kullanmamizin nedeni gelen sinyallerin AX25 ve AFSK/GMSK oldugunu biliyor olmamizdir
– Nasil anlariz? guzel bir soru. Bildiklerimin yapisini genelde sesinden taniyorum ben. Otomatik tanimlayan bir yazilim var midir bilmiyorum.. su sayfa farkli digital modlarin seslerini tanimak icin bir baslangic olabilir sanirim :
https://www.sigidwiki.com/wiki/Category:Amateur_Radio
http://www.astrosurf.com/luxorion/qsl-audiofiles.htm
Cevaplarınız için teşekkür ederim. Ubuntu da zorlanacağıma karar alıp windows üzerinden dinleme yapmaya karar verdim. sdr# üzerinden dinleme yapıp telemetri verilerine ulaşmak istiyorum. uyduların hazır decoder’larını indirdim, fakat hepsi .kss uzantılı dosya istiyor veya wga bağlamamı istiyor. bira araştırdım agw onlinekiss programı ile sorunu çözebileceğimi düşündüm ama agw onlinekiss hatalar verdi çoğunu çzödüm ama son verdiği hatayı anlayamadım. önerdiğiniz başka bir program varmı yada farklı bir yöntem. ilginiz için şimdiden teşekkür ediyorum.
direwolf da girdi olarak veremedim yardımcı olabilecek kaynak varmı
Girdi olarak vermek yerine birinin ciktisini bir dosyaya yazdirip ordan direwolf da acmaya deneyebilirsiniz….
abi .wav dosyasını direwolf ve atest okumuyor,sistemim ubantu. direwolf düzgün yüklendi galiba ama (atest -B 9600 -P C+ satnogs_133879_2018-05-13T11-05-33.wav) bu kodu girdiğimde atest okuyamadı. (cat satnogs_133879_2018-05-13T11-05-33.wav | direwolf -B 9600 -r 48000 -n 1 -b 16 -d p –) bunu girdiğimde de direwolf okumadı. farklı bir uydu ses dosyasını indirdim ama encoding aynı, kodları yazarken kendi indirdiğim dosyanın ismini kullanıyorum ama olmuyor, araştırıyorum sürekli ama bır türlü kaç gündür araştırıyorum bulamadım. yardım edermisin
Wav dosyani paylasi rmisin ya da indirebilecegim Satnogs linkini
https://drive.google.com/drive/folders/11ST9VEeMp5GEdVawv0VgcGxaAo3aB7DR
Tamamdır barış abi çözdüm sorunu teşekkürler
direwolf yerine windows için benzeri bir uygulama varmı?
direwolf WINDOS da da calisiyor bildigim kadariyla
Merhaba, direwolf yerine windows için benzer bir program varmı.
Merhaba, geçiş saatlerini https://www.n2yo.com/satellite/?s=43466 adresinden takip edebilirsiniz.
bende denemek isterim
Öncelike katkılarınızın bulunduğu UBAKUSAT için tebrik ederim.Ayrıca son dönemde girişi artan yazılarınızı görmekten mutluluk duyuyorum ve keyifle okuyorum,sadece emeği geçen yazar arkadaşların bunu bilmesini istedim.iyi çalışmalar kolaylıklar
Sayfamizdaki teknik bir aksaklik nedeni ile bir suredir yazi ekleyemiyorduk. Ancak bundan sonra yogunlasarak TAMSAT calismalari ile ilgili paylasimlarimizi buradan sizlerle paylasmaya devam edecegiz. Destekleriniz icin simdiden cok tesekkurler.