
Dump1090 RTLSDR डिवाइसों के लिए एक सरल Mode S डिकोडर है
Dump 1090 एक Mode S डिकोडर है जिसे विशेष रूप से RTLSDR उपकरणों के लिए डिज़ाइन किया गया है।
मुख्य विशेषताएँ हैं:
जबकि समय-समय पर मैं अपने fork में चीज़ें जोड़ता / ठीक करता रहता हूँ, मैं कार्यान्वयन की minimalism को लक्षित करता हूँ। हालाँकि अधिक feature-complete fork उपलब्ध है, जिसे MalcolmRobb ने विकसित किया है।
"make" टाइप करें।
अपने RTL डिवाइस से सीधे ट्रैफ़िक कैप्चर करने और कैप्चर किए गए ट्रैफ़िक को स्टैंडर्ड आउटपुट पर दिखाने के लिए, बस प्रोग्राम को बिना किसी विकल्प के चलाएँ:
./dump1090
केवल हेक्साडेसिमल संदेश आउटपुट करने के लिए:
./dump1090 --raw
प्रोग्राम को इंटरैक्टिव मोड में चलाने के लिए:
./dump1090 --interactive
प्रोग्राम को इंटरैक्टिव मोड में, नेटवर्किंग समर्थन के साथ चलाने के लिए, और लाइव ट्रैफ़िक देखने के लिए अपने ब्राउज़र से http://localhost:8080 पर कनेक्ट करें:
./dump1090 --interactive --net
इंटरैक्टिव मोड में कम सूचना-सघन लेकिन अधिक "आर्केड शैली" आउटपुट प्राप्त करना संभव है, जहाँ स्क्रीन हर सेकंड रिफ्रेश होती है और प्राप्त Mode S पैकेटों से निकाली गई ऊँचाई और उड़ान संख्या जैसी कुछ अतिरिक्त जानकारी के साथ हाल ही में देखे गए सभी विमानों को प्रदर्शित करती है।
फ़ाइल से डेटा डिकोड करने के लिए, उपयोग करें:
./dump1090 --ifile /path/to/binfile
बाइनरी फ़ाइल को rtl_sdr का उपयोग करके इस प्रकार बनाया जाना चाहिए (या किसी अन्य प्रोग्राम के साथ जो 2Mhz सैंपल दर पर 8-बिट unsigned IQ सैंपल आउटपुट करने में सक्षम हो)।
rtl_sdr -f 1090000000 -s 2000000 -g 50 output.bin
उदाहरण में rtl_sdr में 50 का gain उपयोग किया गया है, आपको बस अपने tuner के लिए उपलब्ध उच्चतम gain का उपयोग करना चाहिए। Dump1090 को कॉल करते समय यह आवश्यक नहीं है क्योंकि यह स्वचालित रूप से समर्थित उच्चतम gain का चयन करने में सक्षम है।
--ifile विकल्प के साथ तर्क के रूप में "-" का उपयोग करके प्रोग्राम को स्टैंडर्ड इनपुट के माध्यम से डेटा फीड करना संभव है।
Dump1090 को अलग gain, फ़्रीक्वेंसी आदि सेट करने के लिए अन्य कमांड लाइन विकल्पों के साथ कॉल किया जा सकता है। विकल्पों की सूची के लिए उपयोग करें:
./dump1090 --help
यहाँ जो कुछ भी प्रलेखित नहीं है वह स्पष्ट होना चाहिए, और अधिकांश उपयोगकर्ताओं के लिए इसे बिना किसी तर्क के कॉल करना सबसे अच्छा है।
डिफ़ॉल्ट रूप से Dump1090 CRC चेकसम का उपयोग करके बिट त्रुटियों को ठीक करने का प्रयास करता है। प्रोग्राम प्राप्त संदेशों में दो बिट त्रुटियों तक को शीघ्रता से पहचानने और सुधारने के लिए एक पूर्व-गणना की गई syndrome तालिका का उपयोग करता है।
यह वास्तव में त्रुटियों को ठीक करने में सक्षम है और मेरे अनुभव में विश्वसनीय रूप से काम करता है, हालाँकि यदि आप बहुत विश्वसनीय डेटा में रुचि रखते हैं तो मैं त्रुटि सुधार को अक्षम करने के लिए --no-fix कमांड लाइन स्विच का उपयोग करने का सुझाव देता हूँ।
मेरे सीमित अनुभव में Dump1090 बड़ी संख्या में संदेशों को डिकोड करने में सक्षम था, यहाँ तक कि उन परिस्थितियों में भी जहाँ मुझे अन्य प्रोग्रामों का उपयोग करते समय समस्याओं का सामना करना पड़ा, हालाँकि कोई औपचारिक परीक्षण नहीं किया गया इसलिए मैं वास्तव में यह दावा नहीं कर सकता कि यह प्रोग्राम अन्य समान प्रोग्रामों की तुलना में बेहतर या बदतर है।
यदि आप ऐसा ट्रैफ़िक कैप्चर कर सकते हैं जिसे Dump1090 ठीक से डिकोड नहीं कर पाता, तो मुझे डाउनलोड लिंक के साथ एक ईमेल भेजें। मैं अपने खाली समय में पहचान को बेहतर बनाने का प्रयास कर सकता हूँ (यह केवल एक शौकिया प्रोजेक्ट है)।
Dump1090 सतही स्थिति संदेशों (Type Code 5-8) को डिकोड कर सकता है, जो ज़मीन पर रहते हुए विमानों द्वारा प्रेषित किए जाते हैं (टैक्सीिंग, गेट पर प्रतीक्षा आदि)। इन संदेशों में विमान की स्थिति, ज़मीनी गति और ज़मीनी ट्रैक शामिल होते हैं।
सतही स्थितियाँ हवाई स्थितियों से भिन्न एन्कोडिंग का उपयोग करती हैं: CPR (Compact Position Reporting) प्रारूप 360 के बजाय केवल 90 डिग्री कवर करता है, और असंदिग्ध डिकोडिंग के लिए 45 nautical miles के भीतर एक संदर्भ स्थिति की आवश्यकता होती है।
आपसे अपने रिसीवर का स्थान कॉन्फ़िगर करने की आवश्यकता के बजाय, Dump1090 सभी सफलतापूर्वक डिकोड की गई हवाई स्थितियों का औसत निकालकर स्वचालित रूप से एक संदर्भ स्थिति की गणना करता है। यह इसलिए काम करता है क्योंकि यदि आप किसी हवाई अड्डे से सतही ट्रैफ़िक प्राप्त कर सकते हैं, तो आपको लगभग निश्चित रूप से हवाई ट्रैफ़िक भी प्राप्त होता है। ऊपर से उड़ान भरने वाले विमानों की औसत स्थिति एक ऐसा संदर्भ प्रदान करती है जो सतही स्थितियों को डिकोड करने के लिए पर्याप्त निकट (45 NM आवश्यकता के भीतर) होता है।
नोट: सतही स्थितियाँ केवल तभी प्रदर्शित की जाएँगी जब संदर्भ स्थापित करने के लिए कम से कम एक हवाई स्थिति सफलतापूर्वक डिकोड की गई हो। ज़मीन पर मौजूद विमान इंटरैक्टिव डिस्प्ले में altitude 0 के साथ दिखाई देंगे।
--net के साथ नेटवर्किंग समर्थन सक्षम करने पर Dump1090 पोर्ट 30002 और 30001 पर क्लाइंट कनेक्शन के लिए सुनना शुरू कर देता है (यदि आप चाहें तो दोनों पोर्ट बदल सकते हैं, --help आउटपुट देखें)।
कनेक्टेड क्लाइंट्स को डिवाइस (या यदि --ifile उपयोग किया गया है तो फ़ाइल से) से आते ही डेटा ASAP परोसा जाता है, निम्नलिखित के समान रॉ प्रारूप में:
*8D451E8B99019699C00B0A81F36E;
प्रत्येक प्रविष्टि एक साधारण newline (LF कैरेक्टर, hex 0x0A) द्वारा अलग की जाती है।
पोर्ट 30001 रॉ इनपुट पोर्ट है, और इसका उपयोग Dump1090 को ऊपर निर्दिष्ट प्रारूप में डेटा फीड करने के लिए किया जा सकता है, जिसमें हेक्स संदेश * से शुरू होते हैं और ; कैरेक्टर के साथ समाप्त होते हैं।
उदाहरण के लिए, यदि कोई अन्य रिमोट Dump1090 इंस्टेंस डेटा एकत्र कर रहा है, तो इस प्रकार कुछ करके आउटपुट को स्थानीय Dump1090 इंस्टेंस में जोड़ना संभव है:
nc remote-dump1090.example.net 30002 | nc localhost 30001
यह ध्यान रखना महत्वपूर्ण है कि पोर्ट 30001 के माध्यम से जो प्राप्त होता है वह पोर्ट 30002 पर सुनने वाले क्लाइंट्स को भी प्रसारित किया जाता है।
सामान्य तौर पर पोर्ट 30001 से प्राप्त हर चीज़ को RTL डिवाइसों से सामान्य ट्रैफ़िक या --ifile उपयोग किए जाने पर फ़ाइल से ट्रैफ़िक की तरह ही संभाला जाता है।
निम्नलिखित उदाहरण की तरह --ifile के साथ तर्क के रूप में /dev/zero का उपयोग करके Dump1090 को केवल एक hub के रूप में उपयोग करना संभव है:
./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 पर सैंपल किए गए व्यक्तिगत magnitude बार प्रदर्शित होते हैं।
एक इंडेक्स सैंपल संख्या दिखाता है, जहाँ 0 वह सैंपल है जहाँ पहला Mode S पीक पाया गया था। कुछ संदर्भ प्रदान करने के लिए पहले पीक से पहले कुछ अतिरिक्त पृष्ठभूमि शोर भी जोड़ा जाता है।
डिबग मोड सक्षम करने और यह जाँचने के लिए कि आप पैकेटों के कौन से संयोजन log कर सकते हैं, उपलब्ध डिबग फ्लैग की सूची प्राप्त करने के लिए dump1090 --help का उपयोग करें।
डिबग मोड में एक वैकल्पिक javascript आउटपुट शामिल है जिसका उपयोग वेब ब्राउज़र का उपयोग करके पैकेटों को विज़ुअलाइज़ करने के लिए किया जाता है, आप जेनरेट की गई frames.js फ़ाइल को लोड करने के लिए 'tools' निर्देशिका के अंतर्गत debug.html फ़ाइल का उपयोग कर सकते हैं।
कोड बहुत अच्छी तरह प्रलेखित है और इसे समझने में आसान बनाने के लिए लिखा गया है। हाथ में Mode S विनिर्देश रखने वाले परिश्रमी प्रोग्रामर के लिए यह समझना आसान होना चाहिए कि यह कैसे काम करता है।
मैंने जिन एल्गोरिथ्म का उपयोग किया, वे मूल रूप से एक throw-away 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 के दौरान कुछ खाली समय में लिखा गया था, यह एक शौकिया प्रोजेक्ट है इसलिए मैं केवल खाली समय में ही मुद्दों का समाधान कर पाऊँगा और इसे बेहतर बना पाऊँगा, हालाँकि प्रोग्राम को बेहतर बनाने के लिए आपको pull request भेजने के लिए प्रोत्साहित किया जाता है। एक अच्छा प्रारंभिक बिंदु सोर्स वितरण में शामिल TODO सूची हो सकती है।
Dump1090 को Salvatore Sanfilippo [email protected] और समय के साथ पैच भेजने वाले अन्य योगदानकर्ताओं द्वारा लिखा गया था (अधिक जानकारी के लिए commits इतिहास देखें) और इसे BSD तीन-खंड लाइसेंस के अंतर्गत जारी किया गया है।