{"id":18822529,"url":"https://github.com/dkxce/aprsair","last_synced_at":"2025-09-07T23:43:19.761Z","repository":{"id":138130488,"uuid":"412457567","full_name":"dkxce/APRSAIR","owner":"dkxce","description":"Console App Detects DTMF GPS Signals or APRS AFSK1200 signals from radios (eg: Abbree AR-F8, Zastone ZT-889G)  over soundcard and allow to view it over console, web (HTTP), APRS and send via HTTP-GET, TCP-APRS, UDP-APRS.","archived":false,"fork":false,"pushed_at":"2021-11-07T10:24:32.000Z","size":2602,"stargazers_count":4,"open_issues_count":0,"forks_count":3,"subscribers_count":1,"default_branch":"main","last_synced_at":"2023-12-16T14:43:43.903Z","etag":null,"topics":["air","aprs","dkxce","dtmf","gps","http","server","udp"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dkxce.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2021-10-01T12:26:17.000Z","updated_at":"2023-06-01T21:34:39.000Z","dependencies_parsed_at":"2023-09-30T11:01:26.155Z","dependency_job_id":null,"html_url":"https://github.com/dkxce/APRSAIR","commit_stats":{"total_commits":7,"total_committers":2,"mean_commits":3.5,"dds":0.4285714285714286,"last_synced_commit":"63b612f95f552f8dfa3a4d104cf094859d648eb0"},"previous_names":[],"tags_count":2,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dkxce%2FAPRSAIR","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dkxce%2FAPRSAIR/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dkxce%2FAPRSAIR/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dkxce%2FAPRSAIR/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dkxce","download_url":"https://codeload.github.com/dkxce/APRSAIR/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248804825,"owners_count":21164135,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["air","aprs","dkxce","dtmf","gps","http","server","udp"],"created_at":"2024-11-08T00:50:08.665Z","updated_at":"2025-04-14T01:11:22.872Z","avatar_url":"https://github.com/dkxce.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"﻿# APRSAir / APRS Air\r\n\r\nConsole App Detects DTMF GPS Signals or APRS AFSK1200 signals from radios (eg: Abbree AR-F8, Zastone ZT-889G) \r\nover soundcard and allow to view it over console, web (HTTP), APRS and send via HTTP-GET, TCP-APRS, UDP-APRS.\r\n\r\nЭто консольное приложение, которое разбирает DTMF GPS пакеты от радиостанций (пакеты координат).\r\nК таким радиостанциям относятся Abbree AR-F8, Zastone ZT-889G и прочие. А также пакеты APRS AFSK1200.\r\nОно позволяет прослушивать звуковую карту и преобразовывать полученные пакеты в текстовую строку,\r\nкоторая выводится в консоль, через веб-сервер, через APRS-сервер и может отправлять разобранные\r\nданные по сети средствами HTTP-GET, TCP-APRS, UDP-APRS на внешние сервера.\r\nДля прослушивания используются устройства аудиовхода (записи). Т.е. вы можете подключить вашу \r\nрадиостанцию к линейному входу звуковой карты или к микрофонному входу и следить за эфиром.\r\nЛибо подключить SDR-приемник и анализировать звук с него.\r\n\r\nПриложение может работать в режиме веб-сервера, подключившись к которому можно получать информацию\r\nобо всех разобранных пакетах координат, а также в режиме APRS-сервера, отправляя всем клиентам\r\nстандартные APRS-пакеты с координатами радиостанций.\r\n\r\nТакже вы можете настроить отправку пакетов на внешний HTTP или APRS сервер.\r\n\r\nНачиная с версии 0.0.1.5 приложение поддерживает прием пакетов APRS AFSK1200.\r\nДля этого используется параметр /afsk=.. (только в режимах /listen, либо /agw, либо /kiss)\r\n\r\nНачиная с версии 0.0.1.15 приложение умеет работать по KISS/AGW протоколу.\r\nВы можете подключиться к AGW Packet Engine или напрямую через KISS к TNC\r\nпо TCP/IP или через Serial COM Port и получать APRS-пакеты из эфира.\r\nДля этого используется параметр /age, либо /kiss\r\n\r\nРекомендуемые значения для настройки DTMF в радиостанции:\r\n\tDTMF Transmit time: 160 - 200 ms (200 ms наверняка)\r\n\tDTMF Interval time: 130 - 200 ms (200 ms наверняка)\r\n\t6-тизначный ANI CODE !!!\r\n\r\n\r\nЗапуск в тестовом режиме (проверка работоспособности DTMF):\r\n\r\n\tAPRSAIR.exe\r\n\t\r\nПолучение списка звуковых устройств ввода (записи DTMF/AFSK1200):\r\n\r\n\tAPRSAIR.exe /listrecorddevices\r\n\tAPRSAIR_List_input_devices.cmd\r\n\t\r\nПреобразование пакета (строки) в звуковой сигнал DTMF:\r\n\r\n\tAPRSAIR.exe /encode \"[PACKET]\" \"[FILE.WAV]\"\r\n\tAPRSAIR.exe /encode \"926801  B0B  023C#7B0  034#A030  00198000\" \"encoded_file.wav\"\r\n\tpacket_to_dtmf.cmd\r\n\t\r\n\tAPRSAIR.exe /encgeo \"CALLID B0B LAT.XX LON.XX ALTITUDE\" \"[FILE.WAV]\"\r\n\tAPRSAIR.exe /encgeo \"926801 B0B 55.5 37.5 00198000\" \"encoded_file.wav\"\r\n\tgeo_to_dtmf.cmd\r\n\t\r\nПреобразование звукового сигнала DTMF из файла в текст (файл):\r\n\r\n\tAPRSAIR.exe /decode \"[FILE.WAV]\"\r\n\tAPRSAIR.exe /decode \"encoded_file.wav\"\r\n\r\n\tAPRSAIR.exe /decode \"[FILE.WAV]\" \"[FILE.TXT]\"\r\n\tAPRSAIR.exe /decode \"encoded_file.wav\" \"original_packet.txt\"\r\n\tAPRSAIR_to_packet.cmd\r\n\r\n\tAPRSAIR.exe /decgeo \"encoded_file.wav\" \"original_packet.txt\"\r\n\tAPRSAIR.exe /decgeo \"encoded_file.wav\" \"original_packet.txt\"\t\r\n\tAPRSAIR_to_geo.cmd\r\n\t\r\nПреобразование APRS пакета (строки) в звуковой сигнал AFSK1200:\r\n\r\n\tAPRSAIR.exe /encaprs \"[PACKET]\" \"[FILE.WAV]\"\r\n\tAPRSAIR.exe /encaprs \"ZADIRA\u003eAPRS,WIDE1-1,WIDE2-2:=5539.03N/03729.50EM275/029\" \"test_APRS_result.wav\"\r\n\tAPRSAIR_Encode_APRS.cmd\r\n\t\r\nПреобразование APRS пакета (файла со списком комманд) в звуковой сигнал AFSK1200:\r\n\r\n\tAPRSAIR.exe /encaprsf \"[PACKET.TXT]\" \"[FILE.WAV]\"\r\n\tAPRSAIR.exe /encaprsf \"TEST_APRS_multiline.txt\" \"TEST_APRS_multiline.wav\"\r\n\tAPRSAIR_Encode_APRS_Multiline.cmd\r\n\t\r\nПреобразование звукового сигнала AFSK1200 из файла в APRS пакет (файл):\r\n\r\n\tAPRSAIR.exe /decaprs \"[FILE.WAV]\"\r\n\tAPRSAIR.exe /decaprs \"test_APRS_result.wav\"\r\n\r\n\tAPRSAIR.exe /decode \"[FILE.WAV]\" \"[FILE.TXT]\"\r\n\tAPRSAIR.exe /decode \"test_APRS_result.wav\" \"test_APRS_result.txt\"\r\n\tAPRSAIR_Decode_APRS.cmd\r\n\t\r\nРабота в режиме прослушки аудиокарты (потоковый режим):\r\n\r\n\tAPRSAIR.exe /listen /source=1 [/afsk=0] [/send=\"...\"] [/aprs=\"tcp://.../\"] [/aprs=\"udp://.../\"] [/httpserv=80] [/aprsserv=14580] [/nogps2console] [/useNormalPassw] [/serverName=\"...\"]\r\n\r\n\tПараметры:\r\n\t\t/listen - задаем режим работы\r\n\t\t/source=... - с какого аудиоустройства в системе слушать аудиопоток (0,1,2...)\r\n\t\t\t          используйте /listrecorddevices для получения списка устройств \r\n\t\t\t\t\t  (Record Devices)\r\n\t\t/afsk=... c какой карты в системе слушать аудиопоток (0,1,2...) \r\n\t\t\t\t\t  для анализа APRS AFSK1200 сигнала\r\n\t\t\t\t\t  используйте /listrecorddevices для получения списка устройств \r\n\t\t\t\t\t  (AFSK Devices)\r\n\t\t/send=\"http://...\" - отправлять координаты по ссылке\r\n\t\t\t =\"http://127.0.0.1/?user={ID}\u0026lat={LAT}\u0026lon={LON}\u0026alt={ALT}\"\r\n\t\t/aprs=\"tcp://...\" - держать коннект с APRS-IS сервером и отправлять ему координаты\r\n\t\t\t =\"tcp://username:password@servername:serverport/\"\r\n\t\t\t =\"tcp://callsign:password@euro.aprs2.net:14580\"\r\n\t\t/aprs=\"udp://...\" - оптравлять данные на APRS-IS сервер через UDP\r\n\t\t\t =\"udp://username:password@servername:serverport/\" - оптравлять данные на APRS-IS сервер через UDP\r\n\t\t\t =\"udp://callsign:password@russia.aprs2.net:8080\" - оптравлять данные на APRS-IS сервер через UDP\r\n\t\t/httpserv=80 - веб сервер на порту 80 для вывода информации о принятых координатах (с картой)\r\n\t\t/aprsserv=14580 - APRS сервер на порту 14580 для вывода информации о принятых координатах\r\n\t\t/nogps2console - не выводится GPS информация в консоль\r\n\t\t/serverName=\"HTTP \u0026 APRS Server Name\" - имя сервера\r\n\t\t/useNormalPassw - использовать правильный пароль APRS для отправки данных через UDP (только через UDP!)\r\n\t\r\n\t\tИз файла `users_replace_list.txt` берется список соответствия CALLSIGN и ANI_ID\r\n\t\tИз файла `\\WEB\\index.html` берется ответ HTTP сервера\r\n\t\tИз папки `\\WEB` берется карта и ответ HTTP сервера\r\n\r\n\tПример:\r\n\t\tAPRSAIR.exe /listen /source=1 /send=\"http://127.0.0.1/?user={ID}\u0026lat={LAT}\u0026lon={LON}\u0026alt={ALT}\" /aprs=\"tcp://UNKNOWN:-1@russia.aprs2.net:14580/\" /aprs=\"udp://UNKNOWN:-1@russia.aprs2.net:8080\"  /httpserv=80 /aprsserv=14580 /serverName=\"My APRSAIR\"\r\n\t\r\n\tПример:\r\n\t\tAPRSAIR_Run_as_WaveListener.cmd\r\n\t\t\r\nРабота в режиме клиента KISS/AGW:    \r\nKISS/AGW Listen Mode:\r\n\r\n\tAPRSAIR.exe /agw /source=127.0.0.1:8000:0 [/afsk=0] [/send=\"...\"] [/aprs=\"tcp://.../\"] [/aprs=\"udp://.../\"] [/httpserv=80] [/aprsserv=14580] [/nogps2console] [/useNormalPassw] [/serverName=\"...\"]\r\n\tAPRSAIR.exe /kiss /source=127.0.0.1:8100 [/afsk=0] [/send=\"...\"] [/aprs=\"tcp://.../\"] [/aprs=\"udp://.../\"] [/httpserv=80] [/aprsserv=14580] [/nogps2console] [/useNormalPassw] [/serverName=\"...\"]\r\n\tAPRSAIR.exe /kiss /source=COM3:9600 [/afsk=0] [/send=\"...\"] [/aprs=\"tcp://.../\"] [/aprs=\"udp://.../\"] [/httpserv=80] [/aprsserv=14580] [/nogps2console] [/useNormalPassw] [/serverName=\"...\"]\r\n\r\n\tПараметры:\r\n\t\t/agw  - задаем режим работы AGW\r\n\t\t/kiss - задаем режим работы KISS\r\n\t\t/source=... - server:port:radio для AGW (например: 127.0.0.1:8000:0) где radio - порт/номер радио в AGW Packet Engine\r\n\t\t            - server:port для Kiss через TCP/IP (например: 127.0.0.1:8100)\r\n\t\t\t    - serial:baud для Kiss через COM (например: COM3:9600)\r\n\t\t/afsk=... c какой карты в системе слушать аудиопоток (0,1,2...) \r\n\t\t\t\t\t  для анализа APRS AFSK1200 сигнала\r\n\t\t\t\t\t  используйте /listrecorddevices для получения списка устройств \r\n\t\t\t\t\t  (AFSK Devices)\r\n\t\t/send=\"http://...\" - отправлять координаты по ссылке\r\n\t\t\t =\"http://127.0.0.1/?user={ID}\u0026lat={LAT}\u0026lon={LON}\u0026alt={ALT}\"\r\n\t\t/aprs=\"tcp://...\" - держать коннект с APRS-IS сервером и отправлять ему координаты\r\n\t\t\t =\"tcp://username:password@servername:serverport/\"\r\n\t\t\t =\"tcp://callsign:password@euro.aprs2.net:14580\"\r\n\t\t/aprs=\"udp://...\" - оптравлять данные на APRS-IS сервер через UDP\r\n\t\t\t =\"udp://username:password@servername:serverport/\" - оптравлять данные на APRS-IS сервер через UDP\r\n\t\t\t =\"udp://callsign:password@russia.aprs2.net:8080\" - оптравлять данные на APRS-IS сервер через UDP\r\n\t\t/httpserv=80 - веб сервер на порту 80 для вывода информации о принятых координатах (с картой)\r\n\t\t/aprsserv=14580 - APRS сервер на порту 14580 для вывода информации о принятых координатах\r\n\t\t/nogps2console - не выводится GPS информация в консоль\r\n\t\t/serverName=\"HTTP \u0026 APRS Server Name\" - имя сервера\r\n\t\t/useNormalPassw - использовать правильный пароль APRS для отправки данных через UDP (только через UDP!)\r\n\t\r\n\t\tИз файла `users_replace_list.txt` берется список соответствия CALLSIGN и ANI_ID\r\n\t\tИз файла `\\WEB\\index.html` берется ответ HTTP сервера\r\n\t\tИз папки `\\WEB` берется карта и ответ HTTP сервера\r\n\t\t\r\n\tПримеры:\r\n\t\tAPRSAIR.exe /agw /source=127.0.0.1:8000:0 /send=\"http://127.0.0.1/?user={ID}\u0026lat={LAT}\u0026lon={LON}\u0026alt={ALT}\" /aprs=\"tcp://UNKNOWN:-1@russia.aprs2.net:14580/\" /aprs=\"udp://UNKNOWN:-1@russia.aprs2.net:8080\"  /httpserv=80 /aprsserv=14580 /serverName=\"My APRSAIR\"\r\n\t\t\r\n\t\tAPRSAIR.exe /kiss /source=127.0.0.1:8100 /send=\"http://127.0.0.1/?user={ID}\u0026lat={LAT}\u0026lon={LON}\u0026alt={ALT}\" /aprs=\"tcp://UNKNOWN:-1@russia.aprs2.net:14580/\" /aprs=\"udp://UNKNOWN:-1@russia.aprs2.net:8080\"  /httpserv=80 /aprsserv=14580 /serverName=\"My APRSAIR\"\r\n\t\t\r\n\t\tAPRSAIR.exe /kiss /source=COM3:9600 /send=\"http://127.0.0.1/?user={ID}\u0026lat={LAT}\u0026lon={LON}\u0026alt={ALT}\" /aprs=\"tcp://UNKNOWN:-1@russia.aprs2.net:14580/\" /aprs=\"udp://UNKNOWN:-1@russia.aprs2.net:8080\"  /httpserv=80 /aprsserv=14580 /serverName=\"My APRSAIR\"\r\n\t\t\r\n\tПримеры:\r\n\t\tAPRSAIR_Run_AGW.cmd\r\n\t\tAPRSAIR_Run_KISS_TCP.cmd\r\n\r\n\u003cimg src=\"window.png\"/\u003e\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdkxce%2Faprsair","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdkxce%2Faprsair","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdkxce%2Faprsair/lists"}