{"id":123,"date":"2025-03-16T15:01:34","date_gmt":"2025-03-16T07:01:34","guid":{"rendered":"https:\/\/aeroinformatics.cn\/?p=123"},"modified":"2025-03-16T15:01:34","modified_gmt":"2025-03-16T07:01:34","slug":"ads-b-flight-trajectory-capture-attempts","status":"publish","type":"post","link":"https:\/\/aeroinformatics.cn\/?p=123","title":{"rendered":"ADS-B flight trajectory capture attempts"},"content":{"rendered":"\n<p>title_zh: ADS-B\u822a\u8ff9\u91c7\u96c6\u5c1d\u8bd5<\/p>\n\n\n\n<p>(English version <a href=\"#en\">below<\/a>)<\/p>\n\n\n\n<p>\u822a\u73ed\u8ffd\u8e2a\u662f\u5f88\u597d\u7684\u516c\u6c11\u79d1\u5b66\u9879\u76ee\uff0c\u521a\u597d\u4e5f\u548c\u6211\u7684\u7814\u7a76\u4e13\u957f\u5174\u8da3\u975e\u5e38\u76f8\u7b26\u3002\u5728\u672c\u79d1\u6bd5\u8bbe\u6307\u5bfc\u8bc4\u5ba1\u548c\u81ea\u5df1\u7814\u7a76\u7acb\u9879\u7533\u8bf7\u4e2d\uff0c\u6211\u90fd\u5f88\u5e0c\u671b\u53ef\u4ee5\u5ef6\u7eed\u4ee5\u5f80\u8f66\u8f86\u548c\u884c\u4eba\u8f68\u8ff9\u6570\u636e\u5206\u6790\u7684\u7814\u7a76\uff0c\u540c\u65f6\u4e0e\u6240\u5728\u5355\u4f4d\u7684\u6559\u5b66\u79d1\u7814\u65b9\u5411\u5b9e\u8d28\u6027\u5730\u7d27\u5bc6\u7ed3\u5408\u3002\u9664\u53bb\u7406\u8bba\u548c\u65b9\u6cd5\u7814\u7a76\u5c42\u9762\u7684\u95ee\u9898\uff0c\u6700\u5e38\u9047\u5230\u7684\u95ee\u9898\u8981\u5c5e\u7814\u7a76\u533a\u57df\u9009\u62e9\u4e86\uff1a\u516c\u5f00\u6570\u636e\u96c6\u901a\u5e38\u4e0d\u80fd\u8986\u76d6\u4e2d\u56fd\u5927\u9646\u5730\u533a\u2014\u2014\u76f8\u6bd4\u4e8e\u7ef4\u57fa\u548cOSM\u5927\u9646\u793e\u7fa4\uff0c\u706b\u817f\u548c\u98de\u53cb\u4eec\u7684\u89c4\u5219\u610f\u8bc6\u548c\u793e\u4f1a\u8d23\u4efb\u611f\u4f7f\u5f97\u4ed6\u4eec\u81ea\u89c9\u4e0d\u5411\u6d77\u5916\u4f20\u8f93\u548c\u5171\u4eab\u6570\u636e\u3002\u7814\u7a76\u6d77\u5916\u533a\u57df\u7684\u6570\u636e\u5219\u4f1a\u4f7f\u5f97\u9879\u76ee\u7533\u8bf7\u548c\u5b66\u751f\u7b54\u8fa9\u9762\u4e34\u6c89\u91cd\u81f4\u547d\u7684\u8d28\u7591\u3002\u56fd\u5185\u822a\u73ed\u4fe1\u606f\u63d0\u4f9b\u5546\u7f3a\u4e4f\u65b9\u4fbf\u76f4\u63a5\u7684\u6570\u636e\u63a5\u53e3\uff0c\u800c\u7f3a\u4e4f\u7f51\u9875\u4ea7\u54c1\u3001\u4e3b\u6253\u79fb\u52a8\u5e94\u7528\u7684\u7b56\u7565\u4f7f\u5f97\u9006\u5411\u5de5\u7a0b\u96be\u5ea6\u500d\u589e\uff0c\u66f4\u4e0d\u7528\u8bf4\u6f5c\u5728\u7684\u4f26\u7406\u548c\u6cd5\u5f8b\u98ce\u9669\u3002\u56e0\u800c\uff0c\u81ea\u884c\u91c7\u96c6\u6570\u636e\u6210\u4e3a\u4e86\u4e00\u6761\u503c\u5f97\u5c1d\u8bd5\u7684\u51fa\u8def\u3002<\/p>\n\n\n\n<p>\u53d7\u5230\u533b\u5b66\u9879\u76ee\u9884\u5b9e\u9a8c\u8303\u5f0f\u7684\u542f\u53d1\uff0c\u8fc7\u53bb\u4e00\u4e2a\u6708\u5199\u9879\u76ee\u7533\u8bf7\u671f\u95f4\u6211\u51b3\u5b9a\u901a\u8fc7\u52a8\u624b\u91c7\u96c6\u548c\u89c2\u5bdf\u6570\u636e\u5bfb\u627e\u7075\u611f\u3002\u6b64\u524d\u4e86\u89e3\u5230\u7528\u4e8e\u6536\u770b\u7535\u89c6\u5e7f\u64ad\u7684RTL2832U\u7535\u8def\u548cR820T\u82af\u7247\u662f\u4e00\u79cd\u4ef7\u683c\u548c\u6027\u80fd\u90fd\u53ef\u63a5\u53d7\u53c8\u6613\u4e8e\u83b7\u53d6\u7684\u8f6f\u4ef6\u65e0\u7ebf\u7535\u89e3\u51b3\u65b9\u6848\u3002\u800c\u5404\u5927\u822a\u73ed\u8ffd\u8e2a\u7f51\u7ad9\u90fd\u4f1a\u540c\u65f6\u5efa\u8bae\u642d\u914d\u4e00\u4e2aSBC\u4ee5\u6700\u5c0f\u4ee3\u4ef7\u5b9e\u65f6\u63a5\u6536\u548c\u5171\u4eab\u6570\u636e\uff0c\u56e0\u800c\u8fd8\u8d2d\u5165\u4e86\u4e00\u6b3e\u6811\u8393\u6d3e\u4f5c\u4e3a\u521d\u59cb\u8bbe\u5907\u3002\u5f53\u7136\uff0c\u540e\u671f\u8d70\u901a\u6280\u672f\u8def\u7ebf\u5e76\u5bf9\u6574\u5957\u7cfb\u7edf\u6709\u57fa\u672c\u4e86\u89e3\u4e4b\u540e\uff0c\u5728\u7b14\u8bb0\u672c\u4e0a\u5b89\u88c5\u865a\u62df\u673a\u7684\u65b9\u5f0f\u5728\u4e0d\u8981\u6c42\u6301\u7eed\u5728\u7ebf\u7684\u573a\u666f\u4e2d\u4e5f\u5b8c\u5168\u53ef\u884c\u4e14\u65b9\u4fbf\u3002<\/p>\n\n\n\n<p>\u6309\u7167adsb.im\u7f51\u7ad9\u63d0\u4f9b\u7684\u8bf4\u660e\uff0c\u6211\u4eec\u5206\u522b\u5728RPi\u548cVirtualBox\u4e2d\u70e7\u5f55\u4e86\u5e26\u6709<code>ultrafeeder<\/code>\u9879\u76ee\u5b89\u88c5\u7684Raspberry OS\u548cDietPi\u7cfb\u7edf\u955c\u50cf\u3002\u8fd9\u4e2a\u9879\u76ee\u7531Github\u7684<code>sdr-enthusiasts<\/code>\u7ec4\u7ec7\u7ef4\u62a4\uff0c\u4f7f\u7528\u4e86\u5fb7\u56fd\u7231\u597d\u8005<code>wiedehopf<\/code>\u6539\u7f16\u7684\u540e\u7aefADS-B\u89e3\u7801\u5de5\u5177<code>readsb<\/code>\u548c\u524d\u7aefADS-B\u822a\u8ff9\u53ef\u89c6\u5316\u754c\u9762<code>tar1090<\/code>\u3002\u8fd9\u4e2afeeder\u9879\u76ee\u652f\u6301\u5411\u8bf8\u591a\u5e73\u53f0\u5b9e\u65f6\u5171\u4eab\u6570\u636e\uff0c\u540c\u65f6\u652f\u6301\u4e0d\u4f5c\u4efb\u4f55\u5171\u4eab\u4ee5\u53ca\u5728\u4e00\u4e2afeeder\u5b9e\u4f8b\u4e0b\u63a5\u5165\u591a\u4e2a\u5b50feeder (\u79f0\u4e3aStage 2)\uff0c\u6ee1\u8db3\u79c1\u6709\u6570\u636e\u4fdd\u62a4\u548c\u5ba4\u5185\u63a5\u6536\u623f\u95f4\u7a97\u6237\u5355\u4e00\u9762\u5411\u6027\u6761\u4ef6\u4e0b\u591a\u4e2a\u5929\u7ebf\u6570\u636e\u7684\u7b80\u5355\u5408\u5e76\u7684\u9700\u8981\u3002\u7ecf\u8fc7\u53cd\u590d\u8c03\u6574\uff0c\u5728\u81ea\u5bb6\u9633\u53f0\u4e0a\u91c7\u7528\u6811\u8393\u6d3e\u4f5c\u4e3a\u4e3b\u673a\uff0c\u653e\u5728\u53e6\u4e00\u4fa7\u7a97\u53e3\u7684\u65e7\u7b14\u8bb0\u672c\u4e0a\u8fd0\u884c\u7684\u865a\u62df\u673a\u4f5c\u4e3a\u5b50\u8282\u70b9\uff0c\u4ee5\u53ca\u65e5\u5e38\u643a\u5e26\u7684\u5de5\u4f5c\u7b14\u8bb0\u672c\u4e0a\u8fd0\u884c\u865a\u62df\u673a\u4f5c\u4e3a\u5728\u6821\u6d4b\u8bd5\u7684\u72ec\u7acb\u79fb\u52a8\u8282\u70b9\u3002\u622a\u6b62\u76ee\u524d\uff0c\u5728\u81ea\u5bb6\u4e24\u4fa7\u7a33\u5b9a\u91c7\u96c6\u5c06\u8fd1\u4e24\u5468\uff0c\u5728\u5e7f\u6c49\u6821\u533a\u548c\u5929\u5e9c\u6821\u533a\u6d4b\u8bd5\u91c7\u96c6\u5404\u4e00\u6b21(\u517162061\u6761\u8bb0\u5f55)\uff0c\u5177\u4f53\u7edf\u8ba1\u5206\u6790\u8fd8\u6709\u5f85\u8fdb\u884c\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\" id=\"campus-viz\"><img loading=\"lazy\" decoding=\"async\" width=\"1920\" height=\"1240\" src=\"https:\/\/aeroinformatics.cn\/wp-content\/uploads\/2025\/03\/cafucadsb.png\" alt=\"colored dots plotted over a greyscale terrain map\" class=\"wp-image-126\" srcset=\"https:\/\/aeroinformatics.cn\/wp-content\/uploads\/2025\/03\/cafucadsb.png 1920w, https:\/\/aeroinformatics.cn\/wp-content\/uploads\/2025\/03\/cafucadsb-300x194.png 300w, https:\/\/aeroinformatics.cn\/wp-content\/uploads\/2025\/03\/cafucadsb-768x496.png 768w, https:\/\/aeroinformatics.cn\/wp-content\/uploads\/2025\/03\/cafucadsb-1536x992.png 1536w\" sizes=\"auto, (max-width: 1920px) 100vw, 1920px\" \/><figcaption class=\"wp-element-caption\">\u98de\u9662\u6821\u56ed\u6d4b\u8bd5\u91c7\u96c6\u5230\u7684\u822a\u8ff9 (\u989c\u8272\u8868\u793a\u901f\u5ea6\uff0c\u7ea2\u8272\u6162\u3001\u84dd\u8272\u5feb)<br>Flight trajectories collected from tests on the campuses of Flight University (color-coded speed, red for slow, blue for fast)<\/figcaption><\/figure>\n\n\n\n<p>\u7c97\u7565\u89c2\u5bdf\u53ef\u89c1\uff0c\u5e7f\u6c49\u7684\u8bad\u7ec3\u822a\u8ff9\u56e0\u4e3a\u4e09\u6559\u7684\u906e\u6321\u6709\u90e8\u5206\u7f3a\u5931\uff0c\u4f46\u53cc\u6d41\u5317\u5411\u79bb\u573a\u5012\u662f\u610f\u6599\u4e4b\u5916\u5730\u597d\uff1b\u798f\u7530\u80fd\u901a\u8fc7\u4e0d\u540c\u65b9\u5411\u62fc\u51d1\u770b\u5230\u5929\u5e9c\u897f\u8dd1\u9053\u5317\u5411\u548c\u5317\u8dd1\u9053\u4e1c\u5411\u79bb\u573a\u3001\u4e1c\u897f\u4e24\u6761\u8dd1\u9053\u5317\u5411\u8fdb\u8fd1\u7565\u6709\u7f3a\u5931\uff0c\u673a\u576a\u5357\u7aef\u7684\u6ed1\u884c\u4e5f\u91c7\u96c6\u5230\u4e00\u4e9b\uff1b\u9ad8\u7a7a\u90e8\u5206\u5728\u4e94\u51e4\u6eaa\u5904\u56db\u901a\u516b\u8fbe\u3002<\/p>\n\n\n\n<p>\u5728\u5b9e\u9645\u8c03\u8bd5\u8fc7\u7a0b\u4e2d\u5f53\u7136\u5c11\u4e0d\u4e86\u5404\u79cd\u95ee\u9898\u3002\u6bd4\u5982\u7535\u89c6\u68d2\u786c\u4ef6\u5b9e\u9645\u4e0a\u8d28\u91cf\u53c2\u5dee\u4e0d\u9f50\uff0c\u8868\u73b0\u4e3a\u5b8c\u5168\u6536\u4e0d\u5230\u4efb\u4f55\u6709\u6548\u4fe1\u53f7\u53ea\u6709\u566a\u58f0\uff0c\u6216\u8005\u96be\u4ee5\u5728\u6307\u5b9a\u9891\u7387\u6301\u7eed\u7a33\u5b9a\u5de5\u4f5c\uff0c\u4f3c\u61c2\u975e\u61c2\u5730\u67e5\u9605\u4e00\u4e9b\u8d44\u6599\u540e\u8ba4\u4e3a\u53ef\u80fd\u662ftuner\u82af\u7247\u5931\u6548\uff0c\u7531\u4e8e\u6ca1\u6709\u76f8\u5173\u7535\u8def\u77e5\u8bc6\u548c\u5de5\u5177\uff0c\u6240\u4ee5\u4e5f\u6ca1\u6709\u62c6\u673a\u6df1\u7a76\uff0c\u800c\u662f\u53ea\u80fd\u9000\u8d27\u91cd\u4e70\u78b0\u8fd0\u6c14\u3002\u8f6f\u4ef6\u4e0a\u95ee\u9898\u867d\u7136\u4e0d\u591a\uff0c\u4f46\u4e5f\u503c\u5f97\u6ce8\u610f\u3002\u7f51\u7edc\u73af\u5883\u5bfc\u81f4\u5f00\u6e90\u5de5\u5177\u94fe\u4e2d\u7684Debian\u8f6f\u4ef6\u66f4\u65b0\u3001Docker\u8f6f\u4ef6\u83b7\u53d6\u3001Github\u8f6f\u4ef6\u83b7\u53d6\u8f83\u4e3a\u75db\u82e6\uff0c\u5c24\u5176\u662f\u521d\u59cb\u642d\u5efa\u70b9\u4eae\u7684\u8fc7\u7a0b\uff0c\u914d\u7f6e\u66f4\u6362\u955c\u50cf\u6e90\u81ea\u662f\u4e0d\u5728\u8bdd\u4e0b\uff0c\u4f46\u9664\u4e86\u5404\u79cd\u6298\u817e\u4e4b\u5916\u91c7\u7528\u4e00\u4e9b\u975e\u53ef\u9760\u53ef\u4fe1\u6216\u6709\u767b\u5f55\u9650\u5236\u7684\u79c1\u4eba\u6e90\u5f15\u5165\u4e86\u4e00\u4e9b\u5bf9\u672c\u4efb\u52a1\u6ca1\u6709\u90a3\u4e48\u91cd\u8981\u7684\u4f9b\u5e94\u94fe\u5b89\u5168\u98ce\u9669\u3002\u53e6\u5916\u76ee\u7684\u4e0d\u540c\u4e5f\u4f7f\u5f97\u6211\u4eec\u867d\u7136\u4e0d\u9700\u8981\u914d\u7f6e\u5171\u4eab\u5230\u5e73\u53f0\u7684\u5185\u5bb9\uff0c\u4f46\u9700\u8981\u66f4\u6539\u4e00\u6761<code>readsb<\/code>\u7684\u914d\u7f6e\u9009\u9879<code>READSB_ENABLE_TRACES=true<\/code>\uff0c\u53ef\u4ee5\u5728<code>ultrafeeder<\/code>\u7f51\u9875\u7ba1\u7406\u754c\u9762\u53f3\u4e0a\u89d2\u7684Setup\u83dc\u5355Expert\u9009\u9879(<code>http:\/\/rpi.local\/expert<\/code>)\u901a\u8fc7\u6dfb\u52a0\u73af\u5883\u53d8\u91cf\u7684\u65b9\u5f0f\u5904\u7406\u3002\u914d\u7f6e\u597d\u540e\u4ee5gunzip\u538b\u7f29\u7684json\u683c\u5f0f\u8f68\u8ff9\u5c06\u6309\u7167ICAO24\u4f4d\u5730\u574016\u8fdb\u5236\u8868\u793a\u7684\u672b\u4e24\u4f4d\u7ec4\u7ec7\u5728\u9ed8\u8ba4<code>\/opt\/adsb\/config\/ultrafeeder\/globe_history<\/code>\u76ee\u5f55\u4e0b\u7684traces\u6587\u4ef6\u5939\u3002\u5982\u679c\u6ca1\u6709\u914d\u7f6e\u5f00\u542f\u8f68\u8ff9\u5b58\u76d8\uff0c\u5219\u8be5\u8def\u5f84\u4e2d\u53ea\u4f1a\u4fdd\u7559\u7528\u4e8e\u7b80\u5355\u56de\u653e\u548c\u67e5\u770b\u5927\u81f4\u5206\u5e03\u7684heatmap\u6587\u4ef6\u5939\u5185\u7684ttf\u683c\u5f0f\u4e8c\u8fdb\u5236\u5b58\u6863\uff0c\u6ca1\u6709\u5305\u542b\u5b8c\u6574\u7684\u4fe1\u606f<sup data-fn=\"8d8e781c-f487-4933-be97-2e7be62d4595\" class=\"fn\"><a href=\"#8d8e781c-f487-4933-be97-2e7be62d4595\" id=\"8d8e781c-f487-4933-be97-2e7be62d4595-link\">1<\/a><\/sup>\uff0c\u540c\u65f6\u6587\u4ef6\u89e3\u6790\u548c\u683c\u5f0f\u4e5f\u660e\u786e\u6ca1\u6709\u4fdd\u969c<sup data-fn=\"ad709057-030d-4a4e-a0de-cd999e9d645b\" class=\"fn\"><a href=\"#ad709057-030d-4a4e-a0de-cd999e9d645b\" id=\"ad709057-030d-4a4e-a0de-cd999e9d645b-link\">2<\/a><\/sup>\u3002<\/p>\n\n\n\n<p>\u603b\u4e4b\u6709\u4e86\u8fd9\u4e9b\u6570\u636e\uff0c\u4ee5\u540e\u7814\u7a76\u548c\u6307\u5bfc\u5e0c\u671b\u90fd\u4f1a\u6709\u66f4\u597d\u7684\u7d20\u6750\u548c\u9009\u9898\u3002\u4ece\u8fd9\u4e9b\u6570\u636e\u6837\u672c\u51fa\u53d1\u5148\u884c\u5f00\u53d1\u6d4b\u8bd5\u7b97\u6cd5\uff0c\u4e5f\u4e3a\u540e\u671f\u51ed\u501f\u53ef\u5c55\u793a\u7684\u521d\u6b65\u7ed3\u679c\u5bfb\u6c42\u66f4\u6743\u5a01\u5b8c\u6574\u7684\u5408\u4f5c\u6570\u636e\u7533\u8bf7\u63d0\u4f9b\u652f\u6491\u3002<\/p>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"en\">English version<\/h2>\n\n\n\n<p>(Partially ranslated by gemma2 via Ollama, adjusted and reviewed by myself with reference to deepseek-r1:14b via Ollama)<\/p>\n\n\n\n<p>Flight tracking is a very nice project for citizen science, which also aligns with my research expertise and interest. For undergraduate thesis mentoring and my own research proposal, I&#8217;ve consistently hoped to continue my work on the analysis of vehicle and pedestrian movement data, also to align it with the teaching and research objectives here at my institution substantially. <\/p>\n\n\n\n<p>Besides theoretical and methodological issues, the most common challenge has been choosing the study area: publicly available datasets often don&#8217;t cover mainland China. Unlike Wiki and OSM communities here, local hams and aviation enthusiasts are aware of rules and social responsibility, leading them to consciously refrain from transmitting and sharing data across borders. But focusing a project on overseas regions would lead to serious condemnation during fund applications and student presentations. Domestic flight information providers lack convenient and direct data interfaces, and their focus on mobile applications rather than web interface makes reverse engineering exponentially more difficult, not to mention the potential ethical and legal risks involved. Therefore, collecting data\u00a0independently emerged as a viable alternative\u00a0worth exploring.<\/p>\n\n\n\n<p>Inspired by the pilot study paradigm of medical research, I decided to gather and observe data hands-on for inspiration over the past month during my proposal writing. I had previously learned that the RTL2832U circuit and R820T chip are an affordable and readily available software defined radio (SDR) solution for watching television broadcasts. Major flight tracking websites often recommend pairing an SBC with this hardware for minimal cost to receive and share data in real-time, so I purchased a Raspberry Pi as my beginning gear. After understanding basics of how the entire system works, using a virtual machine on my laptop is entirely feasible and convenient for scenarios that don&#8217;t require constant online feed.<\/p>\n\n\n\n<p>Following the instructions provided on adsb.im, we flashed Raspberry OS and DietPi images with the <code>ultrafeeder<\/code> installation onto both the RPi and VirtualBox. This feeder project, maintained by the <code>sdr-enthusiasts<\/code> organization on Github, integrate a modified backend ADS-B decoding tool <code>readsb<\/code> and a frontend ADS-B flight path visualization interface <code>tar1090<\/code> by a German enthusiast <code>wiedehopf<\/code>. The feeder supports real-time data sharing to various platforms, while also supporting no sharing at all and incorporating multiple micro-feeders (for a so-called Stage 2 configuration) under a single feeder instance. This meets the needs of private data collection and merging data from multiple antennas in my indoor receiving scenario with windows facing only one direction each. <\/p>\n\n\n\n<p>After repeated adjustments, I set up a network with the Raspberry Pi on my balcony as the main device, a virtual machine running on an old laptop by the other window as a micro-feeder node, and another virtual machine running on my work laptop for testing as a standalone mobile node while on campus. As of now, there has been approximately two weeks of stable collection from home, and test collections once each at Guanghan and Tianfu campuses, with a total of 62061 records collected from campus tests. Detailed stats and analysis is still pending. Initial observations (<a href=\"#campus-viz\">figure above<\/a>) show that training flights at Guanghan (<code>GHN\/ZUGH<\/code>) were partially missing due to obstructions by Teaching Building 3, but northbound departures from Shuangliu (<code>CTU\/ZUUU<\/code>) were surprisingly good. At Futian, merging views from multiple spots covered northbound departures from the west runway and eastbound departures from the north runway in Tianfu (<code>TFU\/ZUTF<\/code>), while there are some gaps in northbound approaches for both west and east runways. Some data of taxiing were captured near the southern end of the apron. For high altitudes, observations seemed abundant for flights over Wufengxi VOR\/DME (<code>WFX<\/code>).<\/p>\n\n\n\n<p>Not surprisingly, various issues arose during the whole process. For example, the TV tuner hardware quality can be inconsistent, resulting in no effective signal and only noise, or difficulty maintaining stable operation at designated frequencies. After vaguely researching some materials, I suspected it might be due to a faulty tuner chip. However, lacking relevant circuit knowledge and tools, I couldn&#8217;t disassemble and investigate further, so I simply returned defective units and bought from other vendors hoping for better luck. Software-related issues were fewer but still noteworthy for beginners. The network environment made updating and retrieving software from Debian, Docker, and Github in the open-source toolchain quite painful, especially during the initial setup process. While switching to mirror sources was necessary, resorting to some unreliable or restricted private mirrors introduced potential supply chain security risks though it&#8217;s less relevant to this task. <\/p>\n\n\n\n<p>Additionally, we had to manually enable track logging feature of\u00a0<code>readsb<\/code>\u00a0for data recording. This involves adding an environment variable  <code>READSB_ENABLE_TRACES=true<\/code>, which could be handled through the Expert mode under Setup menu in the upper right corner of <code>ultrafeeder<\/code> web interface (accessible at <code>http:\/\/rpi.local\/expert<\/code>). After configuring, flight trajectory data in gunzipped JSON format would be found under the <code>traces<\/code> folder under <code>\/opt\/adsb\/config\/ultrafeeder\/globe_history<\/code>,  organized by the last two hexadecimal digits of the ICAO 24-bit address. If tracking was not enabled, only the <code>heatmap<\/code> folder within that path would retain binary <code>.ttf<\/code> format archive files for simple playback and viewing (<a href=\"https:\/\/github.com\/wiedehopf\/readsb\/issues\/23#issuecomment-1566947\">wiedehopf\/readsb#23<\/a>), causing loss of full information. Both parsing and formatting are known to have no good support or guarantees at this time (<a href=\"https:\/\/github.com\/wiedehopf\/tar1090\/issues\/221#issuecomment-1425565840\">wiedehopf\/tar1090#221<\/a>).<\/p>\n\n\n\n<p>In conclusion, with these data collected, there should be better material and topics for future research and mentorship. Using these sample datasets to develop and test algorithms first will also generating presentable results to support the seek for more collaboration and data from authoritative and integrate sources later on.<\/p>\n\n\n\n<p><\/p>\n\n\n<ol class=\"wp-block-footnotes\"><li id=\"8d8e781c-f487-4933-be97-2e7be62d4595\">\u4f5c\u8005\u672c\u4eba\u56de\u5e16 <a href=\"https:\/\/github.com\/wiedehopf\/readsb\/issues\/23#issuecomment-1566947\">wiedehopf\/readsb#23<\/a> &#8220;pTracks (and the 45 min history on non globe-index installs) uses the data produced by tar1090.sh in that repo. It basically builds its own history using aircraft.json and archiving a reduced data set. This is the origin of my tar1090 webinterface. At some point i&#8217;d like to move that generation of data to readsb but it&#8217;s not been a priority as it works perfectly fine.&#8221; <a href=\"#8d8e781c-f487-4933-be97-2e7be62d4595-link\" aria-label=\"Jump to footnote reference 1\">\u21a9\ufe0e<\/a><\/li><li id=\"ad709057-030d-4a4e-a0de-cd999e9d645b\">\u4f5c\u8005\u672c\u4eba\u56de\u5e16 <a href=\"https:\/\/github.com\/wiedehopf\/tar1090\/issues\/221#issuecomment-1425565840\">wiedehopf\/tar1090#221<\/a> &#8220;They are binary, i might change the format without notice, if you want your own archives do that. Or parse the json traces that can be put out, they have much more info than the base data for replay.&#8221; <a href=\"#ad709057-030d-4a4e-a0de-cd999e9d645b-link\" aria-label=\"Jump to footnote reference 2\">\u21a9\ufe0e<\/a><\/li><\/ol>","protected":false},"excerpt":{"rendered":"<p>title_zh: ADS-B\u822a\u8ff9\u91c7\u96c6\u5c1d\u8bd5 (English version below) \u822a\u73ed\u8ffd\u8e2a\u662f\u5f88\u597d\u7684\u516c\u6c11\u79d1\u5b66\u9879\u76ee\uff0c\u521a\u597d\u4e5f\u548c\u6211\u7684\u7814\u7a76\u4e13\u957f\u5174\u8da3\u975e\u5e38\u76f8\u7b26\u3002\u5728\u672c\u79d1\u6bd5\u8bbe\u6307\u5bfc\u8bc4\u5ba1\u548c\u81ea\u5df1\u7814\u7a76\u7acb\u9879\u7533\u8bf7\u4e2d\uff0c\u6211\u90fd\u5f88\u5e0c\u671b\u53ef\u4ee5\u5ef6\u7eed\u4ee5\u5f80\u8f66\u8f86\u548c\u884c\u4eba\u8f68\u8ff9\u6570\u636e\u5206\u6790\u7684\u7814\u7a76\uff0c\u540c\u65f6\u4e0e\u6240\u5728\u5355\u4f4d\u7684\u6559\u5b66\u79d1\u7814\u65b9\u5411\u5b9e\u8d28\u6027\u5730\u7d27\u5bc6\u7ed3\u5408\u3002\u9664\u53bb\u7406\u8bba\u548c\u65b9\u6cd5\u7814\u7a76\u5c42\u9762\u7684\u95ee\u9898\uff0c\u6700\u5e38\u9047\u5230\u7684\u95ee\u9898\u8981\u5c5e\u7814\u7a76\u533a\u57df\u9009\u62e9\u4e86\uff1a\u516c\u5f00\u6570\u636e\u96c6\u901a\u5e38\u4e0d\u80fd\u8986\u76d6\u4e2d\u56fd\u5927\u9646\u5730\u533a\u2014\u2014\u76f8\u6bd4\u4e8e\u7ef4\u57fa\u548cOSM\u5927\u9646\u793e\u7fa4\uff0c\u706b\u817f\u548c\u98de\u53cb\u4eec\u7684\u89c4\u5219\u610f\u8bc6\u548c\u793e\u4f1a\u8d23\u4efb\u611f\u4f7f\u5f97\u4ed6\u4eec\u81ea\u89c9\u4e0d\u5411\u6d77\u5916\u4f20\u8f93\u548c\u5171\u4eab\u6570\u636e\u3002\u7814\u7a76\u6d77\u5916\u533a\u57df\u7684\u6570\u636e\u5219\u4f1a\u4f7f\u5f97\u9879\u76ee\u7533\u8bf7\u548c\u5b66\u751f\u7b54\u8fa9\u9762\u4e34\u6c89\u91cd\u81f4\u547d\u7684\u8d28\u7591\u3002\u56fd\u5185\u822a\u73ed\u4fe1\u606f\u63d0\u4f9b\u5546\u7f3a\u4e4f\u65b9\u4fbf\u76f4\u63a5\u7684\u6570\u636e\u63a5\u53e3\uff0c\u800c\u7f3a\u4e4f\u7f51\u9875\u4ea7\u54c1\u3001\u4e3b\u6253\u79fb\u52a8\u5e94\u7528\u7684\u7b56\u7565\u4f7f\u5f97\u9006\u5411\u5de5\u7a0b\u96be\u5ea6\u500d\u589e\uff0c\u66f4\u4e0d\u7528\u8bf4\u6f5c\u5728\u7684\u4f26\u7406\u548c\u6cd5\u5f8b\u98ce\u9669\u3002\u56e0\u800c\uff0c\u81ea\u884c\u91c7\u96c6\u6570\u636e\u6210\u4e3a\u4e86\u4e00\u6761\u503c\u5f97\u5c1d\u8bd5\u7684\u51fa\u8def\u3002 \u53d7\u5230\u533b\u5b66\u9879\u76ee\u9884\u5b9e\u9a8c\u8303\u5f0f\u7684\u542f\u53d1\uff0c\u8fc7\u53bb\u4e00\u4e2a\u6708\u5199\u9879\u76ee\u7533\u8bf7\u671f\u95f4\u6211\u51b3\u5b9a\u901a\u8fc7\u52a8\u624b\u91c7\u96c6\u548c\u89c2\u5bdf\u6570\u636e\u5bfb\u627e\u7075\u611f\u3002\u6b64\u524d\u4e86\u89e3\u5230\u7528\u4e8e\u6536\u770b\u7535\u89c6\u5e7f\u64ad\u7684RTL2832U\u7535\u8def\u548cR820T\u82af\u7247\u662f\u4e00\u79cd\u4ef7\u683c\u548c\u6027\u80fd\u90fd\u53ef\u63a5\u53d7\u53c8\u6613\u4e8e\u83b7\u53d6\u7684\u8f6f\u4ef6\u65e0\u7ebf\u7535\u89e3\u51b3\u65b9\u6848\u3002\u800c\u5404\u5927\u822a\u73ed\u8ffd\u8e2a\u7f51\u7ad9\u90fd\u4f1a\u540c\u65f6\u5efa\u8bae\u642d\u914d\u4e00\u4e2aSBC\u4ee5\u6700\u5c0f\u4ee3\u4ef7\u5b9e\u65f6\u63a5\u6536\u548c\u5171\u4eab\u6570\u636e\uff0c\u56e0\u800c\u8fd8\u8d2d\u5165\u4e86\u4e00\u6b3e\u6811\u8393\u6d3e\u4f5c\u4e3a\u521d\u59cb\u8bbe\u5907\u3002\u5f53\u7136\uff0c\u540e\u671f\u8d70\u901a\u6280\u672f\u8def\u7ebf\u5e76\u5bf9\u6574\u5957\u7cfb\u7edf\u6709\u57fa\u672c\u4e86\u89e3\u4e4b\u540e\uff0c\u5728\u7b14\u8bb0\u672c\u4e0a\u5b89\u88c5\u865a\u62df\u673a\u7684\u65b9\u5f0f\u5728\u4e0d\u8981\u6c42\u6301\u7eed\u5728\u7ebf\u7684\u573a\u666f\u4e2d\u4e5f\u5b8c\u5168\u53ef\u884c\u4e14\u65b9\u4fbf\u3002 \u6309\u7167adsb.im\u7f51\u7ad9\u63d0\u4f9b\u7684\u8bf4\u660e\uff0c\u6211\u4eec\u5206\u522b\u5728RPi\u548cVirtualBox\u4e2d\u70e7\u5f55\u4e86\u5e26\u6709ultrafeeder\u9879\u76ee\u5b89\u88c5\u7684Raspberry OS\u548cDietPi\u7cfb\u7edf\u955c\u50cf\u3002\u8fd9\u4e2a\u9879\u76ee\u7531Github\u7684sdr-enthusiasts\u7ec4\u7ec7\u7ef4\u62a4\uff0c\u4f7f\u7528\u4e86\u5fb7\u56fd\u7231\u597d\u8005wiedehopf\u6539\u7f16\u7684\u540e\u7aefADS-B\u89e3\u7801\u5de5\u5177readsb\u548c\u524d\u7aefADS-B\u822a\u8ff9\u53ef\u89c6\u5316\u754c\u9762tar1090\u3002\u8fd9\u4e2afeeder\u9879\u76ee\u652f\u6301\u5411\u8bf8\u591a\u5e73\u53f0\u5b9e\u65f6\u5171\u4eab\u6570\u636e\uff0c\u540c\u65f6\u652f\u6301\u4e0d\u4f5c\u4efb\u4f55\u5171\u4eab\u4ee5\u53ca\u5728\u4e00\u4e2afeeder\u5b9e\u4f8b\u4e0b\u63a5\u5165\u591a\u4e2a\u5b50feeder (\u79f0\u4e3aStage 2)\uff0c\u6ee1\u8db3\u79c1\u6709\u6570\u636e\u4fdd\u62a4\u548c\u5ba4\u5185\u63a5\u6536\u623f\u95f4\u7a97\u6237\u5355\u4e00\u9762\u5411\u6027\u6761\u4ef6\u4e0b\u591a\u4e2a\u5929\u7ebf\u6570\u636e\u7684\u7b80\u5355\u5408\u5e76\u7684\u9700\u8981\u3002\u7ecf\u8fc7\u53cd\u590d\u8c03\u6574\uff0c\u5728\u81ea\u5bb6\u9633\u53f0\u4e0a\u91c7\u7528\u6811\u8393\u6d3e\u4f5c\u4e3a\u4e3b\u673a\uff0c\u653e\u5728\u53e6\u4e00\u4fa7\u7a97\u53e3\u7684\u65e7\u7b14\u8bb0\u672c\u4e0a\u8fd0\u884c\u7684\u865a\u62df\u673a\u4f5c\u4e3a\u5b50\u8282\u70b9\uff0c\u4ee5\u53ca\u65e5\u5e38\u643a\u5e26\u7684\u5de5\u4f5c\u7b14\u8bb0\u672c\u4e0a\u8fd0\u884c\u865a\u62df\u673a\u4f5c\u4e3a\u5728\u6821\u6d4b\u8bd5\u7684\u72ec\u7acb\u79fb\u52a8\u8282\u70b9\u3002\u622a\u6b62\u76ee\u524d\uff0c\u5728\u81ea\u5bb6\u4e24\u4fa7\u7a33\u5b9a\u91c7\u96c6\u5c06\u8fd1\u4e24\u5468\uff0c\u5728\u5e7f\u6c49\u6821\u533a\u548c\u5929\u5e9c\u6821\u533a\u6d4b\u8bd5\u91c7\u96c6\u5404\u4e00\u6b21(\u517162061\u6761\u8bb0\u5f55)\uff0c\u5177\u4f53\u7edf\u8ba1\u5206\u6790\u8fd8\u6709\u5f85\u8fdb\u884c\u3002 \u7c97\u7565\u89c2\u5bdf\u53ef\u89c1\uff0c\u5e7f\u6c49\u7684\u8bad\u7ec3\u822a\u8ff9\u56e0\u4e3a\u4e09\u6559\u7684\u906e\u6321\u6709\u90e8\u5206\u7f3a\u5931\uff0c\u4f46\u53cc\u6d41\u5317\u5411\u79bb\u573a\u5012\u662f\u610f\u6599\u4e4b\u5916\u5730\u597d\uff1b\u798f\u7530\u80fd\u901a\u8fc7\u4e0d\u540c\u65b9\u5411\u62fc\u51d1\u770b\u5230\u5929\u5e9c\u897f\u8dd1\u9053\u5317\u5411\u548c\u5317\u8dd1\u9053\u4e1c\u5411\u79bb\u573a\u3001\u4e1c\u897f\u4e24\u6761\u8dd1\u9053\u5317\u5411\u8fdb\u8fd1\u7565\u6709\u7f3a\u5931\uff0c\u673a\u576a\u5357\u7aef\u7684\u6ed1\u884c\u4e5f\u91c7\u96c6\u5230\u4e00\u4e9b\uff1b\u9ad8\u7a7a\u90e8\u5206\u5728\u4e94\u51e4\u6eaa\u5904\u56db\u901a\u516b\u8fbe\u3002 \u5728\u5b9e\u9645\u8c03\u8bd5\u8fc7\u7a0b\u4e2d\u5f53\u7136\u5c11\u4e0d\u4e86\u5404\u79cd\u95ee\u9898\u3002\u6bd4\u5982\u7535\u89c6\u68d2\u786c\u4ef6\u5b9e\u9645\u4e0a\u8d28\u91cf\u53c2\u5dee\u4e0d\u9f50\uff0c\u8868\u73b0\u4e3a\u5b8c\u5168\u6536\u4e0d\u5230\u4efb\u4f55\u6709\u6548\u4fe1\u53f7\u53ea\u6709\u566a\u58f0\uff0c\u6216\u8005\u96be\u4ee5\u5728\u6307\u5b9a\u9891\u7387\u6301\u7eed\u7a33\u5b9a\u5de5\u4f5c\uff0c\u4f3c\u61c2\u975e\u61c2\u5730\u67e5\u9605\u4e00\u4e9b\u8d44\u6599\u540e\u8ba4\u4e3a\u53ef\u80fd\u662ftuner\u82af\u7247\u5931\u6548\uff0c\u7531\u4e8e\u6ca1\u6709\u76f8\u5173\u7535\u8def\u77e5\u8bc6\u548c\u5de5\u5177\uff0c\u6240\u4ee5\u4e5f\u6ca1\u6709\u62c6\u673a\u6df1\u7a76\uff0c\u800c\u662f\u53ea\u80fd\u9000\u8d27\u91cd\u4e70\u78b0\u8fd0\u6c14\u3002\u8f6f\u4ef6\u4e0a\u95ee\u9898\u867d\u7136\u4e0d\u591a\uff0c\u4f46\u4e5f\u503c\u5f97\u6ce8\u610f\u3002\u7f51\u7edc\u73af\u5883\u5bfc\u81f4\u5f00\u6e90\u5de5\u5177\u94fe\u4e2d\u7684Debian\u8f6f\u4ef6\u66f4\u65b0\u3001Docker\u8f6f\u4ef6\u83b7\u53d6\u3001Github\u8f6f\u4ef6\u83b7\u53d6\u8f83\u4e3a\u75db\u82e6\uff0c\u5c24\u5176\u662f\u521d\u59cb\u642d\u5efa\u70b9\u4eae\u7684\u8fc7\u7a0b\uff0c\u914d\u7f6e\u66f4\u6362\u955c\u50cf\u6e90\u81ea\u662f\u4e0d\u5728\u8bdd\u4e0b\uff0c\u4f46\u9664\u4e86\u5404\u79cd\u6298\u817e\u4e4b\u5916\u91c7\u7528\u4e00\u4e9b\u975e\u53ef\u9760\u53ef\u4fe1\u6216\u6709\u767b\u5f55\u9650\u5236\u7684\u79c1\u4eba\u6e90\u5f15\u5165\u4e86\u4e00\u4e9b\u5bf9\u672c\u4efb\u52a1\u6ca1\u6709\u90a3\u4e48\u91cd\u8981\u7684\u4f9b\u5e94\u94fe\u5b89\u5168\u98ce\u9669\u3002\u53e6\u5916\u76ee\u7684\u4e0d\u540c\u4e5f\u4f7f\u5f97\u6211\u4eec\u867d\u7136\u4e0d\u9700\u8981\u914d\u7f6e\u5171\u4eab\u5230\u5e73\u53f0\u7684\u5185\u5bb9\uff0c\u4f46\u9700\u8981\u66f4\u6539\u4e00\u6761readsb\u7684\u914d\u7f6e\u9009\u9879READSB_ENABLE_TRACES=true\uff0c\u53ef\u4ee5\u5728ultrafeeder\u7f51\u9875\u7ba1\u7406\u754c\u9762\u53f3\u4e0a\u89d2\u7684Setup\u83dc\u5355Expert\u9009\u9879(http:\/\/rpi.local\/expert)\u901a\u8fc7\u6dfb\u52a0\u73af\u5883\u53d8\u91cf\u7684\u65b9\u5f0f\u5904\u7406\u3002\u914d\u7f6e\u597d\u540e\u4ee5gunzip\u538b\u7f29\u7684json\u683c\u5f0f\u8f68\u8ff9\u5c06\u6309\u7167ICAO24\u4f4d\u5730\u574016\u8fdb\u5236\u8868\u793a\u7684\u672b\u4e24\u4f4d\u7ec4\u7ec7\u5728\u9ed8\u8ba4\/opt\/adsb\/config\/ultrafeeder\/globe_history\u76ee\u5f55\u4e0b\u7684traces\u6587\u4ef6\u5939\u3002\u5982\u679c\u6ca1\u6709\u914d\u7f6e\u5f00\u542f\u8f68\u8ff9\u5b58\u76d8\uff0c\u5219\u8be5\u8def\u5f84\u4e2d\u53ea\u4f1a\u4fdd\u7559\u7528\u4e8e\u7b80\u5355\u56de\u653e\u548c\u67e5\u770b\u5927\u81f4\u5206\u5e03\u7684heatmap\u6587\u4ef6\u5939\u5185\u7684ttf\u683c\u5f0f\u4e8c\u8fdb\u5236\u5b58\u6863\uff0c\u6ca1\u6709\u5305\u542b\u5b8c\u6574\u7684\u4fe1\u606f\uff0c\u540c\u65f6\u6587\u4ef6\u89e3\u6790\u548c\u683c\u5f0f\u4e5f\u660e\u786e\u6ca1\u6709\u4fdd\u969c\u3002 \u603b\u4e4b\u6709\u4e86\u8fd9\u4e9b\u6570\u636e\uff0c\u4ee5\u540e\u7814\u7a76\u548c\u6307\u5bfc\u5e0c\u671b\u90fd\u4f1a\u6709\u66f4\u597d\u7684\u7d20\u6750\u548c\u9009\u9898\u3002\u4ece\u8fd9\u4e9b\u6570\u636e\u6837\u672c\u51fa\u53d1\u5148\u884c\u5f00\u53d1\u6d4b\u8bd5\u7b97\u6cd5\uff0c\u4e5f\u4e3a\u540e\u671f\u51ed\u501f\u53ef\u5c55\u793a\u7684\u521d\u6b65\u7ed3\u679c\u5bfb\u6c42\u66f4\u6743\u5a01\u5b8c\u6574\u7684\u5408\u4f5c\u6570\u636e\u7533\u8bf7\u63d0\u4f9b\u652f\u6491\u3002 English version (Partially ranslated by gemma2 via Ollama, adjusted and reviewed by myself with reference to deepseek-r1:14b via Ollama) Flight tracking is a very nice project for citizen science, which also aligns with my research expertise and interest. For undergraduate thesis [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":"[{\"content\":\"\u4f5c\u8005\u672c\u4eba\u56de\u5e16 <a href=\\\"https:\/\/github.com\/wiedehopf\/readsb\/issues\/23#issuecomment-1566947\\\">wiedehopf\/readsb#23<\/a> \\\"pTracks (and the 45 min history on non globe-index installs) uses the data produced by tar1090.sh in that repo. It basically builds its own history using aircraft.json and archiving a reduced data set. This is the origin of my tar1090 webinterface. At some point i'd like to move that generation of data to readsb but it's not been a priority as it works perfectly fine.\\\"\",\"id\":\"8d8e781c-f487-4933-be97-2e7be62d4595\"},{\"content\":\"\u4f5c\u8005\u672c\u4eba\u56de\u5e16 <a href=\\\"https:\/\/github.com\/wiedehopf\/tar1090\/issues\/221#issuecomment-1425565840\\\">wiedehopf\/tar1090#221<\/a> \\\"They are binary, i might change the format without notice, if you want your own archives do that. Or parse the json traces that can be put out, they have much more info than the base data for replay.\\\"\",\"id\":\"ad709057-030d-4a4e-a0de-cd999e9d645b\"}]"},"categories":[6],"tags":[25,23,9,7,24],"class_list":["post-123","post","type-post","status-publish","format-standard","hentry","category-research","tag-ads-b","tag-analysis-of-movement-data","tag-flight-tracking","tag-7","tag-24"],"_links":{"self":[{"href":"https:\/\/aeroinformatics.cn\/index.php?rest_route=\/wp\/v2\/posts\/123","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/aeroinformatics.cn\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/aeroinformatics.cn\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/aeroinformatics.cn\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/aeroinformatics.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=123"}],"version-history":[{"count":8,"href":"https:\/\/aeroinformatics.cn\/index.php?rest_route=\/wp\/v2\/posts\/123\/revisions"}],"predecessor-version":[{"id":133,"href":"https:\/\/aeroinformatics.cn\/index.php?rest_route=\/wp\/v2\/posts\/123\/revisions\/133"}],"wp:attachment":[{"href":"https:\/\/aeroinformatics.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=123"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/aeroinformatics.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=123"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/aeroinformatics.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=123"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}