
Dump1090 is a simple Mode S decoder for RTLSDR devices
Dump 1090 एक Mode S डीकोडर है जो विशेष रूप से RTLSDR उपकरणों के लिए डिज़ाइन किया गया है।
मुख्य विशेषताएं हैं:
"make" टाइप करें।
सीधे अपने RTL डिवाइस से ट्रैफ़िक कैप्चर करने और कैप्चर किए गए ट्रैफ़िक को मानक आउटपुट पर दिखाने के लिए, बिना किसी विकल्प के प्रोग्राम चलाएँ:
./dump1090
सिर्फ हेक्साडेसिमल संदेश आउटपुट करने के लिए:
./dump1090 --raw
प्रोग्राम को इंटरैक्टिव मोड में चलाने के लिए:
./dump1090 --interactive
प्रोग्राम को इंटरैक्टिव मोड में, नेटवर्किंग समर्थन के साथ चलाने के लिए, और लाइव ट्रैफ़िक देखने के लिए अपने ब्राउज़र से http://localhost:8080 पर कनेक्ट करें:
./dump1090 --interactive --net
इंटरैक्टिव मोड में कम सूचना घनत्व वाला लेकिन अधिक "आर्केड-शैली" आउटपुट संभव है, जहाँ स्क्रीन हर सेकंड रिफ्रेश होती है जिसमें हाल ही में देखे गए सभी विमान कुछ अतिरिक्त जानकारी जैसे ऊंचाई और उड़ान संख्या के साथ दिखाए जाते हैं, जो प्राप्त Mode S पैकेट से निकाली गई है।
फ़ाइल से डेटा डिकोड करने के लिए, इसका उपयोग करें:
./dump1090 --ifile /path/to/binfile
बाइनरी फ़ाइल को rtl_sdr का उपयोग करके इस प्रकार बनाया जाना चाहिए (या किसी अन्य
प्रोग्राम के साथ जो 2Mhz नमूना दर पर 8-बिट अहस्ताक्षरित IQ नमूने आउटपुट कर सके)।
rtl_sdr -f 1090000000 -s 2000000 -g 50 output.bin
उदाहरण में rtl_sdr में 50 का लाभ उपयोग किया गया है, आपको अपने ट्यूनर के लिए
उपलब्ध उच्चतम लाभ का उपयोग करना चाहिए। Dump1090 को कॉल करते समय यह आवश्यक नहीं है
क्योंकि यह स्वचालित रूप से समर्थित उच्चतम लाभ का चयन कर सकता है।
प्रोग्राम को मानक इनपुट के माध्यम से डेटा फीड करना संभव है, --ifile विकल्प के साथ "-" तर्क के रूप में उपयोग करके।
Dump1090 को अलग लाभ, आवृत्ति आदि सेट करने के लिए अन्य कमांड लाइन विकल्पों के साथ बुलाया जा सकता है। विकल्पों की सूची के लिए इसका उपयोग करें:
./dump1090 --help
यहाँ दस्तावेजित नहीं की गई हर चीज़ स्पष्ट होनी चाहिए, और अधिकांश उपयोगकर्ताओं के लिए बिना तर्कों के इसे कॉल करना सबसे अच्छा है।
डिफ़ॉल्ट रूप से Dump1090 24-बिट CRC चेकसम का उपयोग करके डिकोडिंग त्रुटियों की जाँच करता है, जहाँ उपलब्ध हो। त्रुटियों वाले संदेश छोड़ दिए जाते हैं।
--fix कमांड लाइन स्विच CRC चेकसम के आधार पर एकल बिट त्रुटि सुधार सक्षम करता है। तकनीकी रूप से, यह गलत बिट स्थान को खोजने के लिए पूर्व-गणना किए गए चेकसम अंतरों की तालिका का उपयोग करता है जो एकल बिट त्रुटियों से उत्पन्न होते हैं।
यह वास्तव में त्रुटियों को ठीक करने में सक्षम है और मेरे अनुभव में विश्वसनीय रूप से काम करता है, हालांकि यदि आप बहुत विश्वसनीय डेटा में रुचि रखते हैं तो मैं त्रुटि सुधार को अक्षम करने के लिए --no-fix कमांड लाइन स्विच का उपयोग करने का सुझाव देता हूँ।
मेरे सीमित अनुभव में Dump1090 बड़ी संख्या में संदेशों को डिकोड करने में सक्षम था उन स्थितियों में भी जहाँ मुझे अन्य प्रोग्राम का उपयोग करने में समस्याएँ आईं, हालांकि कोई औपचारिक परीक्षण नहीं किया गया इसलिए मैं वास्तव में यह दावा नहीं कर सकता कि यह प्रोग्राम अन्य समान प्रोग्रामों से बेहतर या बदतर है।
यदि आप ऐसे ट्रैफ़िक को कैप्चर कर सकते हैं जिसे Dump1090 ठीक से डिकोड करने में असमर्थ है, तो मुझे डाउनलोड लिंक के साथ एक ईमेल भेजें। मैं अपने खाली समय में पहचान में सुधार करने का प्रयास कर सकता हूँ (यह सिर्फ एक शौक परियोजना है)।
--net के साथ नेटवर्किंग समर्थन सक्षम करके Dump1090 पोर्ट 30002 और 30001 पर क्लाइंट कनेक्शन के लिए सुनना शुरू करता है (यदि आप चाहें तो दोनों पोर्ट बदल सकते हैं, --help आउटपुट देखें)।
कनेक्टेड क्लाइंट को डेटा ASAP प्रदान किया जाता है जैसे ही यह डिवाइस से आता है (या फ़ाइल से यदि --ifile का उपयोग किया गया हो) निम्नलिखित जैसे रॉ प्रारूप में:
*8D451E8B99019699C00B0A81F36E;
प्रत्येक प्रविष्टि एक साधारण न्यूलाइन (LF वर्ण, हेक्स 0x0A) द्वारा अलग की जाती है।
पोर्ट 30001 रॉ इनपुट पोर्ट है, और इसका उपयोग Dump1090 को उसी प्रारूप में डेटा फीड करने के लिए किया जा सकता है
जैसा ऊपर निर्दिष्ट किया गया है, जिसमें हेक्स संदेश * से शुरू होते हैं और ; वर्ण के साथ समाप्त होते हैं।
इसलिए उदाहरण के लिए यदि कोई अन्य दूरस्थ Dump1090 इंस्टेंस डेटा एकत्र कर रहा है तो निम्नलिखित तरीके से आउटपुट को स्थानीय Dump1090 इंस्टेंस में जोड़ना संभव है:
nc remote-dump1090.example.net 30002 | nc localhost 30001
यह ध्यान रखना महत्वपूर्ण है कि पोर्ट 30001 के माध्यम से जो प्राप्त होता है वह पोर्ट 30002 पर सुनने वाले क्लाइंट को भी प्रसारित किया जाता है।
सामान्य तौर पर पोर्ट 30001 से प्राप्त हर चीज़ को RTL उपकरणों या फ़ाइल से सामान्य ट्रैफ़िक की तरह ठीक उसी तरह संभाला जाता है जब --ifile का उपयोग किया जाता है।
Dump1090 को सिर्फ एक हब के रूप में उपयोग करना संभव है, --ifile के साथ /dev/zero को तर्क के रूप में निम्नलिखित उदाहरण में:
./dump1090 --net-only
या वैकल्पिक रूप से स्क्रीन पर क्या हो रहा है यह देखने के लिए:
./dump1090 --net-only --interactive
फिर आप इसे इंटरनेट से विभिन्न डेटा स्रोतों से फीड कर सकते हैं।
कनेक्टेड क्लाइंट को SBS1 (BaseStation) प्रारूप में संदेश प्रदान किए जाते हैं, समान:
MSG,4,,,738065,,,,,,,,420,179,,,0,,0,0,0,0
MSG,3,,,738065,,,,,,,35000,,,34.81609,34.07810,,,0,0,0,0
इसका उपयोग किसी अन्य डिकोडर का उपयोग किए बिना विभिन्न साझाकरण साइटों को डेटा फीड करने के लिए किया जा सकता है।
Mode S संदेश 1090 Mhz आवृत्ति पर प्रेषित होते हैं। यदि आपके पास एक अच्छा एंटीना है तो आप अपनी स्थिति से काफी दूर विमानों से संकेत उठा सकेंगे, विशेष रूप से यदि आप बाहर हैं और अच्छे आकाश दृश्य वाले स्थान पर हैं।
आप निम्नलिखित निर्देशों का पालन करके एक बहुत सस्ता एंटीना आसानी से बना सकते हैं:
http://antirez.com/news/46
इस तुच्छ एंटीना के साथ मैं अपने से 200+ किमी दूर विमानों के संकेत उठाने में सक्षम था।
यदि आप अधिक गंभीर एंटीना में रुचि रखते हैं तो निम्नलिखित संसाधन देखें:
--aggressive के साथ आक्रामक मोड सक्रिय किया जा सकता है जो Mode S पैकेट का पता लगाने और डिकोडिंग का एक संशोधित संस्करण है। आक्रामक मोड आमतौर पर अधिक CPU का उपयोग करता है (विशेष रूप से यदि कई विमान DF17 पैकेट भेज रहे हैं), लेकिन कुछ अतिरिक्त संदेशों का पता लगा सकता है।
आक्रामक मोड में एल्गोरिद्म निम्नलिखित तरीकों से संशोधित किया गया है:
आक्रामक मोड का उपयोग केवल उन स्थानों पर सलाह दी जाती है जहाँ कम ट्रैफ़िक होता है ताकि कुछ अतिरिक्त संदेशों को कैप्चर करने का मौका मिले।
डीबग मोड पहचान एल्गोरिद्म में सुधार करने या यह समझने के लिए एक दृश्य सहायता है कि प्रोग्राम किसी दिए गए इनपुट के लिए काम क्यों नहीं कर रहा है।
इस मोड में संदेश ASCII-कला शैली के ग्राफिकल प्रतिनिधित्व में प्रदर्शित होते हैं, जहाँ 2Mhz पर नमूना किए गए व्यक्तिगत परिमाण बार प्रदर्शित होते हैं।
एक सूचकांक नमूना संख्या दिखाता है, जहाँ 0 वह नमूना है जहाँ पहला Mode S शिखर पाया गया था। पहले शिखर से पहले कुछ अतिरिक्त पृष्ठभूमि शोर भी जोड़ा जाता है ताकि कुछ संदर्भ प्रदान किया जा सके।
डीबग मोड सक्षम करने और जाँचने के लिए कि आप किस प्रकार के पैकेटों का लॉग ले सकते हैं,
mode1090 --help का उपयोग करें उपलब्ध डीबग फ्लैग की सूची प्राप्त करने के लिए।
डीबग मोड में एक वैकल्पिक जावास्क्रिप्ट आउटपुट शामिल है जिसका उपयोग वेब ब्राउज़र का उपयोग करके पैकेटों को विज़ुअलाइज़ करने के लिए किया जाता है, आप उत्पन्न frames.js फ़ाइल को लोड करने के लिए 'tools' निर्देशिका के अंतर्गत debug.html फ़ाइल का उपयोग कर सकते हैं।
कोड बहुत दस्तावेजित है और समझने में आसान बनाने के लिए लिखा गया है। परिश्रमी प्रोग्रामर के लिए जिसके पास Mode S विनिर्देश है, यह समझना तुच्छ होना चाहिए कि यह कैसे काम करता है।
मेरे द्वारा उपयोग किए गए एल्गोरिद्म मूल रूप से कई संदेशों को देखकर प्राप्त किए गए थे जैसा कि एक थ्रो-अवे SDL प्रोग्राम के साथ प्रदर्शित किया गया था, और संदेशों के ग्राफिकल रूप के आधार पर एल्गोरिद्म को मॉडल करने का प्रयास किया गया।
यदि आपके पास एक RTLSDR उपकरण है और आप ऐसे क्षेत्र में हैं जहाँ आपके सिर के ऊपर विमान उड़ रहे हैं, तो बस प्रोग्राम चलाएँ और संकेतों की जाँच करें।
हालाँकि यदि आपके पास RTLSDR उपकरण नहीं है, या यदि आपके क्षेत्र में विमानों की उपस्थिति बहुत सीमित है, तो आप "testfiles" निर्देशिका के अंतर्गत Dump1090 वितरण के साथ वितरित नमूना फ़ाइल आज़माना चाह सकते हैं।
बस इसे इस प्रकार चलाएँ:
./dump1090 --ifile testfiles/modes1.bin
यह सिर्फ एक सरल फ़िल्टर है जो इनपुट में रॉ IQ 8 बिट नमूने प्राप्त करेगा और फ़ाइल के उन सभी हिस्सों को हटाकर एक फ़ाइल आउटपुट करेगा जहाँ I और Q निर्दिष्ट <स्तर> से अधिक समय के लिए 32 से अधिक नमूनों के लिए कम हैं।
इसे इस प्रकार उपयोग करें:
cat big.bin | ./dump1090 --snip 25 > small.bin
मैंने इसका उपयोग इस प्रोग्राम स्रोत कोड वितरण के अंदर शामिल करने के लिए एक छोटी परीक्षण फ़ाइल बनाने के लिए किया।
Dump1090 क्रिसमस 2012 के दौरान कुछ खाली समय में लिखा गया था, यह एक शौक परियोजना है इसलिए मैं केवल खाली समय में ही मुद्दों को संबोधित और इसमें सुधार कर पाऊँगा, हालाँकि आपको प्रोग्राम में सुधार करने के लिए पुल अनुरोध भेजने के लिए प्रोत्साहित किया जाता है। एक अच्छा प्रारंभिक बिंदु स्रोत वितरण में शामिल TODO सूची हो सकती है।
Dump1090 को साल्वाटोर सैनफिलिप्पो [email protected] द्वारा लिखा गया था और BSD तीन खंड लाइसेंस के तहत जारी किया गया है।