
Dump1090 هو مفكك ترميز بسيط لإشارات Mode S لأجهزة RTLSDR
===
Dump 1090 هو أداة فك ترميز Mode S مصممة خصيصًا لأجهزة RTLSDR.
الميزات الرئيسية هي:
بينما ما زلت أضيف/أصلح بعض الأشياء في فرعي من وقت لآخر، فإنني أستهدف بساطة التنفيذ. ومع ذلك، يتوفر فرع أكثر اكتمالًا من حيث الميزات طوره MalcolmRobb.
اكتب "make".
لالتقاط الحركة المرورية مباشرة من جهاز RTL الخاص بك وعرض الحركة الملتقطة على المخرجات القياسية، ما عليك سوى تشغيل البرنامج دون أي خيارات على الإطلاق:
./dump1090
لإخراج رسائل سداسية عشرية فقط:
./dump1090 --raw
لتشغيل البرنامج في الوضع التفاعلي:
./dump1090 --interactive
لتشغيل البرنامج في الوضع التفاعلي مع دعم الشبكة، والاتصال بمتصفحك على http://localhost:8080 لرؤية الحركة الحية:
./dump1090 --interactive --net
في الوضع التفاعلي، من الممكن الحصول على مخرجات أقل كثافة معلوماتية ولكنها بنمط "أركيد" أكثر، حيث يتم تحديث الشاشة كل ثانية لعرض جميع الطائرات التي شوهدت مؤخرًا مع بعض المعلومات الإضافية مثل الارتفاع ورقم الرحلة، المستخرجة من حزم Mode S المستلمة.
لفك ترميز البيانات من ملف، استخدم:
./dump1090 --ifile /path/to/binfile
يجب إنشاء الملف الثنائي باستخدام rtl_sdr بهذه الطريقة (أو مع أي برنامج آخر قادر على إخراج عينات IQ غير موقعة 8-بت بمعدل عينات 2 ميجاهرتز).
rtl_sdr -f 1090000000 -s 2000000 -g 50 output.bin
في المثال، يُستخدم كسب 50 مع rtl_sdr؛ ببساطة يجب عليك استخدام أعلى كسب متاح لموالفك. هذا ليس ضروريًا عند استدعاء Dump1090 نفسه لأنه قادر على تحديد أعلى كسب مدعوم تلقائيًا.
من الممكن تغذية البرنامج بالبيانات عبر الإدخال القياسي باستخدام خيار --ifile مع "-" كوسيطة.
يمكن استدعاء Dump1090 مع خيارات سطر أوامر أخرى لتعيين كسب مختلف وتردد مختلف وما إلى ذلك. للحصول على قائمة الخيارات استخدم:
./dump1090 --help
كل ما لم يتم توثيقه هنا يجب أن يكون واضحًا، وبالنسبة لمعظم المستخدمين، فإن استدعاءه بدون وسائط على الإطلاق هو أفضل ما يمكن فعله.
افتراضيًا، يحاول Dump1090 إصلاح أخطاء البت باستخدام المجموع الاختباري CRC. يستخدم البرنامج جدول متلازمات محسوبًا مسبقًا لتحديد وتصحيح ما يصل إلى خطأي بت بسرعة في الرسائل المستلمة.
هذا قادر بالفعل على إصلاح الأخطاء ويعمل بشكل موثوق في تجربتي. ومع ذلك، إذا كنت مهتمًا ببيانات موثوقة للغاية، أقترح استخدام مفتاح سطر الأوامر --no-fix لتعطيل إصلاح الأخطاء.
في تجربتي المحدودة، كان Dump1090 قادرًا على فك ترميز عدد كبير من الرسائل حتى في الظروف التي واجهت فيها مشاكل باستخدام برامج أخرى. ومع ذلك، لم يتم إجراء أي اختبار رسمي، لذا لا يمكنني الادعاء حقًا أن هذا البرنامج أفضل أو أسوأ مقارنة بالبرامج المماثلة الأخرى.
إذا كان بإمكانك التقاط حركة مرور لا يستطيع Dump1090 فك ترميزها بشكل صحيح، فأرسل لي بريدًا إلكترونيًا مع رابط تنزيل. قد أحاول تحسين الكشف خلال وقت فراغي (هذا مجرد مشروع هواية).
يمكن لـ Dump1090 فك ترميز رسائل الموضع السطحي (Type Code 5-8)، والتي تُرسل بواسطة الطائرات أثناء وجودها على الأرض (التحرك على المدرج، الانتظار عند البوابات، إلخ). تتضمن هذه الرسائل موقع الطائرة وسرعتها الأرضية ومسارها الأرضي.
تستخدم المواضع السطحية ترميزًا مختلفًا عن المواضع الجوية: صيغة CPR (الإبلاغ المضغوط عن الموضع) تغطي 90 درجة فقط بدلاً من 360، وتتطلب موضعًا مرجعيًا ضمن 45 ميلًا بحريًا لفك ترميز لا لبس فيه.
بدلاً من مطالبتك بتكوين موقع جهاز الاستقبال الخاص بك، يحسب Dump1090 تلقائيًا موضعًا مرجعيًا عن طريق حساب متوسط جميع المواضع الجوية التي تم فك ترميزها بنجاح. ينجح هذا لأنه إذا كان بإمكانك استقبال حركة سطحية من مطار، فمن شبه المؤكد أنك تستقبل حركة جوية أيضًا. يوفر متوسط موضع الطائرات المحلقة مرجعًا قريبًا بما يكفي (ضمن متطلب 45 ميلًا بحريًا بسهولة) لفك ترميز المواضع السطحية.
ملاحظة: لن يتم عرض المواضع السطحية إلا بعد فك ترميز موضع جوي واحد على الأقل بنجاح لتأسيس المرجع. ستظهر الطائرات على الأرض بارتفاع 0 في العرض التفاعلي.
عند تمكين دعم الشبكة باستخدام --net، يبدأ Dump1090 في الاستماع لاتصالات العملاء على المنفذين 30002 و30001 (يمكنك تغيير كلا المنفذين إذا أردت، راجع مخرجات --help).
يتم تزويد العملاء المتصلين بالبيانات في أسرع وقت ممكن فور وصولها من الجهاز (أو من الملف إذا تم استخدام --ifile) بالصيغة الخام المشابهة للتالية:
*8D451E8B99019699C00B0A81F36E;
يتم فصل كل إدخال بسطر جديد بسيط (حرف LF، hex 0x0A).
المنفذ 30001 هو منفذ الإدخال الخام، ويمكن استخدامه لتغذية Dump1090 بالبيانات بنفس الصيغة المحددة أعلاه، مع رسائل سداسية عشرية تبدأ بحرف * وتنتهي بحرف ;.
لذلك على سبيل المثال، إذا كانت هناك نسخة أخرى بعيدة من Dump1090 تجمع البيانات، فمن الممكن إضافة المخرجات إلى نسخة محلية من Dump1090 من خلال القيام بشيء مثل هذا:
nc remote-dump1090.example.net 30002 | nc localhost 30001
من المهم ملاحظة أن ما يتم استلامه عبر المنفذ 30001 يتم بثه أيضًا إلى العملاء الذين يستمعون إلى المنفذ 30002.
بشكل عام، يتم التعامل مع كل ما يتم استلامه من المنفذ 30001 تمامًا مثل الحركة العادية من أجهزة RTL أو من الملف عند استخدام --ifile.
من الممكن استخدام Dump1090 كمجرد مركز (hub) باستخدام --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 ميجاهرتز. إذا كان لديك هوائي جيد، فستتمكن من التقاط إشارات من طائرات بعيدة جدًا عن موقعك، خاصة إذا كنت في الهواء الطلق وفي موقع يتمتع بإطلالة جيدة على السماء.
يمكنك بسهولة بناء هوائي رخيص جدًا باتباع التعليمات في:
http://antirez.com/news/46
مع هذا الهوائي البسيط، تمكنت من التقاط إشارات طائرات على بعد 200+ كم مني.
إذا كنت مهتمًا بهوائي أكثر احترافيًا، تحقق من الموارد التالية:
باستخدام --aggressive، من الممكن تفعيل الوضع العدواني، وهو نسخة معدلة من كشف وفك ترميز حزم Mode S. عادةً ما يستخدم الوضع العدواني المزيد من وحدة المعالجة المركزية (خاصة إذا كان هناك العديد من الطائرات ترسل حزم DF17)، لكنه يمكنه اكتشاف المزيد من الرسائل.
يتم تعديل الخوارزمية في الوضع العدواني بالطرق التالية:
يُنصح باستخدام الوضع العدواني فقط في الأماكن التي تكون فيها الحركة منخفضة من أجل إتاحة فرصة لالتقاط المزيد من الرسائل.
وضع التصحيح هو مساعدة بصرية لتحسين خوارزمية الكشف أو لفهم سبب عدم عمل البرنامج لمدخل معين.
في هذا الوضع، يتم عرض الرسائل في تمثيل رسومي بنمط فن ASCII، حيث يتم عرض أشرطة المقدار الفردية المأخوذة بتردد 2 ميجاهرتز.
يعرض فهرس رقم العينة، حيث 0 هو العينة التي تم فيها العثور على أول قمة Mode S. تتم أيضًا إضافة بعض الضوضاء الخلفية الإضافية قبل القمة الأولى لتوفير بعض السياق.
لتمكين وضع التصحيح والتحقق من مجموعات الحزم التي يمكنك تسجيلها، استخدم dump1090 --help للحصول على قائمة بعلامات التصحيح المتاحة.
يتضمن وضع التصحيح مخرجات جافاسكربت اختيارية تُستخدم لتصور الحزم باستخدام متصفح الويب؛ يمكنك استخدام ملف debug.html في دليل 'tools' لتحميل ملف frames.js المولد.
الكود موثق جدًا ومكتوب ليكون سهل الفهم. بالنسبة للمبرمج المجتهد الذي لديه مواصفات Mode S بين يديه، يجب أن يكون فهم كيفية عمله أمرًا بسيطًا.
الخوارزميات التي استخدمتها تم الحصول عليها أساسًا من خلال النظر إلى العديد من الرسائل كما تُعرض باستخدام برنامج SDL مؤقت، ومحاولة نمذجة الخوارزمية بناءً على كيفية ظهور الرسائل بيانيًا.
إذا كان لديك جهاز RTLSDR وكنت في منطقة توجد بها طائرات تحلق فوق رأسك، فما عليك سوى تشغيل البرنامج والتحقق من الإشارات.
ومع ذلك، إذا لم يكن لديك جهاز RTLSDR، أو إذا كان وجود الطائرات في منطقتك محدودًا جدًا، فقد ترغب في تجربة ملف العينة الموزع مع توزيعة Dump1090 في دليل "testfiles".
فقط قم بتشغيله هكذا:
./dump1090 --ifile testfiles/modes1.bin
إنه مجرد مرشح بسيط يأخذ عينات IQ خام 8-بت كمدخل ويخرج ملفًا يفتقد جميع أجزاء الملف حيث تكون I وQ أقل من المحدد لأكثر من 32 عينة.
استخدمه هكذا:
cat big.bin | ./dump1090 --snip 25 > small.bin
استخدمته لإنشاء ملف اختبار صغير لتضمينه داخل توزيعة الكود المصدري لهذا البرنامج.
تمت كتابة Dump1090 في بعض أوقات الفراغ خلال عيد الميلاد 2012، إنه مشروع هواية، لذا سأتمكن من معالجة المشكلات وتحسينه فقط خلال وقت الفراغ. ومع ذلك، نشجعك على إرسال طلبات السحب لتحسين البرنامج. يمكن أن تكون قائمة TODO المضمنة في توزيعة المصدر نقطة بداية جيدة.
تمت كتابة Dump1090 بواسطة Salvatore Sanfilippo [email protected] والمساهمين الآخرين الذين أرسلوا التصحيحات على مر الوقت (راجع سجل الالتزامات لمزيد من المعلومات)، وهو مُصدر تحت رخصة BSD ثلاثية البنود.