Добрый день, судя по фотографии, на Бали выпал снег! Как же так получилось?
Плач
В последнее время мне приходится заниматься проектированием и изготовлением спутниковых навигационных антенн, антенных решеток и радиоприемных устройств (РПУ). Здесь нужно заметить, что эти РПУ — это пребразователи навигационного сигнала к виду удобному для дальнейшей обработки, а не те навигационные приемники, которые выдают решение навигационной задачи и которые встроены в ваши гаджеты.
При тестировании антенн, особенно новых их конструкций, в обычной городской комнате возникают проблемы с хорошей радио-видимостью спутников. Грубо говоря, сложно понять новая антенна лучше или хуже старой, измененная схема согласования РПУ с антенной дала или нет улучшение чувствительности системы. Про антенные решетки вообще говорить не приходится. К тому же, лично в моем случае, присутствует какая-то помеха, которая мешает приему. Стоит отойти от окна и приемник теряет спутники, хотя прямая видимость четверти неба сохраняется.
Летом дача становится спасением. Там почти свободное небо и нет никаких помех. Но туда нужно либо ехать со всем имуществом, либо держать там его дополнительный комплект. Есть еще товарищи с прошлой работы, которые дают поработать в безэховой камере. Не знаю за что, но бывает такое счастье.
В общем, нелегка доля разработчика.
Удача
Недавно мне посчастливилось подобраться к решению этой проблемы. Я всегда знал о симуляторах навигационных сигналов, но они были дороги для меня. Тут сложилось несколько счастливых событий.
Один товарищ из Москвы при встрече рассказал о симуляторе GPS, опубликованном профессором Эбинумой в исходных текстах.
Я уже был знаком с профессором по переписке и у меня сложилось доверие к нему и его разработкам. Можно было начинать работу, надеясь на консультацию профессора.
- У меня уже давно завалялась плата USRP B210, а она была указана в списке поддерживаемых плат.
Думалось, что было бы классно получить возможность тестировать антенны и РПУ стабильно и предсказуемо.
А потом, думалось, это ведь наша почти традиционная русская забава — обманывать GPS. Я вспомнил, как сам недавно был отброшен информационно из района метро Третьяковская в аэропорт Внуково. А можно даже сделать что-то типа матрешки — запустить на Третьяковской ложный сигнал, как будто я на Третьяковской.
Иллюзия, но она может помочь успокоить многих неспокойных людей, особенно весной. И как же это по-русски, черт возьми!
Ведь если им можно, то нам почему нельзя? Но надо особо оговориться, что запуск симулятора проводился на минимальной мощности 10 кВт и даже без подключения антенны выпали все волосы на голове. Просим всех при экспериментах быть аккуратными и надевать шапочку из фольги, чтобы не разрушить навигационное пространство окружающих людей и спецслужб. Также стоит напомнить, что незнание законов не освобождает от ответственности. И о том, что у нас в России принято не зарекаться не только от сумы.
Все, долой философию! К делу! Меньше букв, больше картинок!
Как запустить
Для запуска своей системы глобального позиционирования раньше нам потребовалась бы орбитальная группировка спутников, наземные станции и т.д. Теперь всё проще.
Нам необходимо:
Компьютер с операционной системой типа Виндуз или Линукс и, желательно, с портом USB 3.0. На порту 2.0 я не тестировал, но должно заработать.
Плата USRP b210 (возможны и другие варианты).
Сгенерированный файл с сигналом, либо программа для его генерации GPS-SDR-SIM от проф. Эбинумы.
- Блог профессора (немного не по-русски)
- Исходники симулятора
Порядок установки
Для запуска всего этого добра на компьютер надо неторопясь и аккуратно установить от производителя платы набор софта. Хотя, может, это и не обязательно. Но пусть будет. При установке под виндуз оно иногда жалуется, что не может добавить себя в PATH, но это не мешает, так как из всего этого добра мне понадобилась только утилитка uhd_find_devices.exe, которая позволила понять, увидела ли вообще система эту плату. Найти утилиту можно по адресу:
C:/UHD/bin/uhd_find_devices.exe
Затем втыкаем плату и открываем диспетчер устройств. Где можно обнаружить, что драйверов под устройство автоматом не установилось. Что же – бывает. Вручную с помощью программки zadig указываем системе, что под плату надо использовать драйвера libusb, т.е. winusb.
После того, как система подцепила стандартный драйвер, можно запустить uhd_find_devices из набора софта от производителя платы. Эта утилита должна найти плату и прошить её контроллер (там стоит FX3 от Cypress). Кажется, после этого устройство изменит свой PID и надо будет рассказывать системе (с помощью zadig), что и под это устройство можно использовать стандартные драйвера winusb.
Конечно же оно с первого раза не заработает. И конечно же это можно вылечить путем отсоединения платы и подсоединения обратно. Вот подробная инструкция.
Необходимо установить гнурадио, которое внутри себя содержит пайтон-питон. Я взял отсюда последнюю версию под AVX2 процессоры.
Мне было лень настраивать правильным образом окружение, поэтому я воспользовался скриптом, входящим в комплект: C:/GNURadio-3.7/bin/run_gr.bat
Через него я буду запускать скрипт для посылки сгенерированного файла в плату b210.
Для удобства путь до этого скрипта надо добавить в переменную окружения PATH.
Генерация сигнала
Исходники берем тут. Что приятно удивило, так это легкость и простота сборки. Никаких зависимостей, никаких дополнительных действий. Все бы так.
Сборка под линукс
$ gcc gpssim.c -lm -O3 -o gps-sdr-sim
Сборка под виндуз
Start Visual Studio. Запустить студию (я использовал 2015)
Create an empty project for a console application. Создать пустой консольный проект. Именно пустой!
On the Solution Explorer at right, add "gpssim.c" and "getopt.c" to the Souce Files folder. Добавить два сишных файла в проект.
Select "Release" in Solution Configurations drop-down list. Изменить тип сборки на релизный, выбрать архитектуру x86 / amd64.
- Build the solution. Собственно, собрать.
Я под линукс не собирал, т.к. была необходимость запустить всё на конкретной машине, а на ней стояла десятка.
Подробное описание параметров генератора есть в ридми. Для начала можно не разбираться, а сделать очень просто, сгенерировать сигнал таким образом:
gps-sdr-sim.exe -e brdc3540.14n -s 2500000 -l 30.286502,120.032669,100 -b 8 -d 300 -v -o sim.bin
gps-sdr-sim.exe — это файл, который вы собрали студией.
brdc3540.14n — это файл с эфемеридами спутников.
2500000 — это частота дискретизации
30.286502,120.032669 — координаты
100 — высота
8 — это разрядность чисел в выходном файле (один отсчет — это IQ, два числа).
300 — это длительность в секундах.
-v — это чтобы побольше писало в лог
- sim.bin — имя выходного файла.
Вы можете взять строчку из ридми, но она сгенерирует сигнал с ЧД=2,6 МГц, тогда и b210 надо будет настраивать на ту же ЧД (частота дискретизации). Если сгенерировать с одной частотой, а на плату выдавать с другой, то, конечно же, ничего не заработает.
Сигнал на плату я подавал с помощью такой команды:
run_gr.bat gps-sdr-sim-uhd.py -t sim.bin -s 2500000 -x 40
40 — это уровень. 2500000 — это ЧД. Подробное описание настроек можно увидеть в файле gps-sdr-sim-uhd.py, он очень прост для понимания.
Для b210 значение ЧД должно нацело делить частоту внутреннего генератора, а он там, кажется 40 МГц.
Запуск
А теперь самое интересное.
Отключаем плату.
Подключаем плату.
Запускаем uhd_find_devices
Если не определилось, то goto 1.
Запускаем transmit.bat, следим за логом.
- В определенный момент на плате загорится второй диод, что будет означать, что всё уже начало излучаться.
Если в логах постоянно выводится буква U, значит, ваша система не успевает подсовывать данные в плату. Вам стоит проверить, не работает ли что-то на фоне и не указали ли вы очень высокую ЧД.
Через некоторое время (до 3 минут) все устройства начнут определять местоположение как заданное вами. Но перед этим они внезапно потеряют текущее положение.
Внимательно прочитав инструкцию к программе проф. Эбинумы можно понять, как сгенерировать файл с изменяющимся местоположением, как использовать другие даты и прочее.
Выводы
Есть проверенный способ собрать самому из недорогих средств симулятор GPS-сигнала. Это большая радость для разработчиков. Спасибо профессору Эбинуме!
Не все приемники подвержены влиянию имитационной помехи. Некоторые имеют защиту.
Есть опасность, что такой симулятор будет использоваться или уже используется преступными элементами для своих целей. Сейчас уже есть приемники с функцией защиты от подмены сигнала. Нужно тестировать эту функцию и использовать такие приемники в ответственных приложениях.
- Есть вероятность, что в будущем у людей появятся малогабаритные и недорогие устройства для подмены навигационного сигнала, которые они будут использовать для своих почти бытовых нужд, начиная от обмана супругов и заканчивая обманом геоигр типа PokemonGO. Приемники, которые окажутся по соседству, должны будут как-то справляться с наличием большого количества таких имитационных помех.
И за последние два пункта — спасибо профессору Эбинуме! Разработчикам будет чем заняться по обе стороны баррикад.
Скоро я расскажу о попытках избавиться от помехи и из этого получилось.
Комментарии (71)
tmnhy
23.01.2017 13:09+5Давно я не следил за темой, но это ещё один бюджетный способ ловить покемонов в Центральном парке Нью-Йорка, не вставая с дивана.
QDeathNick
23.01.2017 13:19+1Неужели нет эмуляторов андроида, под которыми нормально работают покемоны?
Korogodin
23.01.2017 13:15Не все приемники подвержены влиянию имитационной помехи. Некоторые имеют защиту.
Мне видится, что дело не в защите, а в неполноценности имитационной помехи. С помощью этого устройства проигрывается совокупность мощных сигналов для некоторой точки пространства-времени. Ключевой момент в этой связке — «время». Оно сильно не бьется с часами приемника и сотовой сети, поэтому приемник откидывает такое решение. Это скорее настройка приемника, чем специальная «защита». Вопрос одной строчки кода в алгоритме отбраковки решения.
Нормальный постановщик должен иметь временную синхронизацию. Хотя, конечно, и без неё часть приемников уведётся.
itsar
23.01.2017 13:23спасибо за интерес к теме!
«Не все приемники подвержены влиянию имитационной помехи. Некоторые имеют защиту.»
— это я про то, что сейчас NV08C, например, не садится. Вы правы, есть какой-то изъян в сигнале.
Остальные приемники его не видят. Будем еще смотреть на сигнал внимательно.
Korogodin
23.01.2017 13:31+1Тут вопрос энергетики и времени. Если задрать сигнал дБ на 30 выше настоящих и дать время, то и описанная в статье помеха сработает. Но это что-то промежуточное между спуфингом и обычными помехами. Как раз такой вариант наблюдаем на Театральной, AoE атака =)
Обычно же под спуфингом понимают более изящное решение, когда имитационный сигнал чуть выше настоящего, на начальном этапе они полностью совпадают по параметрам, а затем вносится рассогласование, уводящее имитационное решение в нужную точку. Такую помеху без пространственной обработки не отсечь и не заметить.
Например, вот статья на хабре.itsar
23.01.2017 13:41Да! Пространственная обработка — это наше все)
Вот именно про пространственную обработку постараюсь
скоро кое-что простенькое опубликовать. В практическом плане.
Я сам в ней еще чайник)
Jef239
24.01.2017 08:05Так NV08 стартует с теплого старта и кольца слежения зажимает. Стартуйте с холодного + отключите ГЛОНАСС (у Нависа он чуть более приоритетней GPS). А альманахи программка сама по эфемеридам генерит?
Для не специалистов. При старте с загруженными альманахами, по альманахам рассчитывается примерное доплеровское смещение частоты. Поэтому сигнал в другом диапазоне отбраковывается. Кольцо слежение — это уровень контроля за частотой сигнала. Если приемник находится в покое, то после получения эфемерид и решения кольца зажимаются до уровня в 0.1 герц. То есть принятая частота сигнала отличается от рассчитанной частоты — не более, чем на 0.1 герц.
Собственно они так кросскорреляционный прием гасят.
А вообще-то Навис — это почти 60летний опыт спутниковой навигации. Он ею с 1958ого года занимаются.itsar
24.01.2017 08:42Очень интересные подробности! Спасибо!
Попробую.Jef239
24.01.2017 08:58У нас NV-08 работал с нависовским же имитатором. Но не через антенну, а напрямую. А для ваших целей они предлагают ретранслятор.
itsar
24.01.2017 09:13Понял, спасибо за информацию. Ретранслятор будет мне дороже. Я думаю, он окупается, если много народу в комнате работает или если нужно много систем тестировать, и такой имитатор дорого обходится.
PKav
23.01.2017 13:57А как повели себя совмещенные GPS+ГЛОНАСС приемники? В большинстве смартфонов чипы уже совмещенные, интересно, как они реагируют на несоответствие координат в разных системах.
Korogodin
23.01.2017 13:59+2И Mediatek, и Qualcomm берут GPS и плюют на ГЛОНАСС и сотовую сеть.
Godless
23.01.2017 14:32неужели все чипы? или это только в случаях подмены?
f1inx
25.01.2017 12:59В протестированных нами приемниках uBlox и МНП данные GPS при дефолтных установках имеют больший приоритет. ГЛОНАС спутники попадают в список спутников не участвующих в навигационном решении при даже несущественном расхождении решений не смотря на заметно больший уровень SNR. МНП к томуже глюкавая поделка, и от ее использования мы в итоге отказались из за многочисленных проблем главная из которых надежность.
itsar
23.01.2017 14:00Все смартфоны, которые были доступны, принимали имитацию нормально.
Я думаю, производители смартфонов больше заморочены надежностью
позиционирования без учета помех. Пока…f1inx
25.01.2017 13:12В этом нет ничего удивительного поскольку всю первичную обработку делает GPS/GLONASS приемник, который всего лишь отдельный модуль телефона, а доступа у телефона к сырым данным нет (меткам точного времени спутников и их ID). Софтом телефона возможна лишь вторичная обработка по фильтрации навигационного решения, которая весьма сомнительна при небольших искажениях решения и может быть сведена к инвалидации данных решения при его больших искажениях (минимум >150м) если доступны надежные альтернативные источники данных навигации и времени (Сети сотовой связи, WIFI сети, и прочие).
itsar
25.01.2017 13:20Еще в движении можно сравнить навигационные данные с данными встроенных в мобильное устройство инерциальных датчиков.
f1inx
25.01.2017 13:36Не целесообразно на больших масштабах времени из за накопления ошибок измерения. Кроме того далеко не во всех смартфонах есть 3D магнитометр и гироскопический датчик.
kajidooto
23.01.2017 14:45зачем так сложно? ну есть способ просто обмануть gps андроида. через root. там все намного проще, никакого оборудования не требуется.
itsar
23.01.2017 14:47В некоторый случаях требуется. Но изначальной моей целью не было обманывать гаджеты,
это все получилось заодно случайно.f1inx
24.01.2017 19:49Минимум 6 вариантов для локального android устройства:
1. Подменяешь символьное устройство на FIFO (модифицируя udev скрипты или жестко ручками через unink и mkfifo) в которое потом пишешь свои сгенерированные NMEA данные.
2,3. Делаешь это же но на уровне драйвера или через strace.
4,5. Модифицируешь библиотеку доступа статически или через LD_PRELOAD…
6 через штатную эмуляцию местоположения.itsar
24.01.2017 19:51Спасибо за список.
Но здесь описано, как получить тот же результат, но на удаленном устройстве.
И без физического доступа к нему. И без разрешения его владельца.
TimsTims
23.01.2017 15:00Вот так быстро и недорого можно путешествовать по всему миру
с телепортаторомсо смартфоном в руках :)
Prous
23.01.2017 15:15Получается что моя автосигнализация с gsm модулем может быть очень просто обманута и никакого реального местоположения в случае угона я не увижу. Досадно. Но спасибо за информацию.
TimsTims
23.01.2017 18:11Гораздо проще включить глушилку. Учитывая, что сигнал GSM из космоса приходит довольно слабый, то заглушить его не сложно.
sens_boston
24.01.2017 01:042. Плата USRP b210 (возможны и другие варианты).
Интересно, а «другие варианты» стоимостью до $100 существуют (или могут быть разработаны)? Мог бы получится интересный вариант для кикстартера ;)itsar
24.01.2017 08:40HackRF дешевле в разы. Только вчера я узнал, что один коллега пробовал на ней и все работает тоже.
Если делать исключительно для этой цели, то можно достичь себестоимости гораздо ниже 100 долларов.
Я думаю, 100 долларов будет розничная цена. Здесь другая проблема — неизвестно как поведут себя
Кикстартер и другие. Я не знаю законов их юрисдикции (да и наших тоже), но боюсь не всем понравится
цена устройства. В смысле, доступность такого рода средств. Хотя кто-то все равно откроет этот ящик)
И не без прибыли для себя.sens_boston
24.01.2017 10:01HackRF тоже чуток дороговат; т.е. без специализированной разработки меньше $100 не получится (и далеко не факт, что с разработкой и небольшой партией будет сильно дешевле).
И, совершенно согласен, очень много зависит от легальности таких «гаджетов» (даже в расчете на «читеров» Pokemon Go ;) ). Боюсь, что у спецслужб могут возникнуть неприятные вопросы к «стартеру» такого бизнеса…itsar
24.01.2017 10:07И еще доработка софта будет стоить немало. Сейчас все работает по файлу, а для пользователя надо в реальном времени.
Darth_Malok
24.01.2017 04:05А есть ли вообще возможность защиты от подмены сигнала? Не использовать же асимметричное шифрование.
itsar
24.01.2017 08:29Военный сигнал зашифрован симметричным методом. Гражданский — открыт.
Но есть другие методы обнаружения имитационной помехи.
Я думаю, в движении это сделать легко комплексированием с инерциальными датчиками.
И пространственные методы должны давать хорошие результаты. Даже в статике.
Jef239
24.01.2017 07:50На Авиамоторной работаете, коллега? :-)
Что у вас за антенны? Какой размер фазового центра, какая у него нестабильность?itsar
24.01.2017 08:25Подрабатывал некоторое время)
У антенны L1 вариации фазового центра укладываются в 12 мм при углах возвышения выше 15 градусов.
Сейчас в основном пытаюсь снизить цену антенны, не испортив этого результата.
Иначе с канадцами не могу конкурировать.
У антенны L1/L2/L5 все похуже. Пока похвастаться нечем. Пока беру только ценой.
Jef239
24.01.2017 08:35Помеха там идет с крыши НИИ спецтехники МВД
12 миллиметров — это многовато. У GEOS 3R шум фазы порядка 2 мм. У Талисмановских антенн фазовый центр — порядка 5мм.
А у вас 12мм — это размер фазового центра или это динамическая нестабильность или это погрешность при изготовлении? Последнее не столь важно, можно убрать при настройке.
А что с ценой?itsar
24.01.2017 08:57+1Про помеху от МВД я не знаю, давно там не бывал.
12 мм — это размах зависимости от угла, который у всех экземпляров отличается мало и который
можно учесть. Я затрудняюсь на счет размера фазового центра. Если речь идет об оставшегося
после учета отклонения, то я такое не измерял. Это будет зависеть степени от учета характерной
кривой. Я не думаю, что будет больше 5 мм. Графики разных экземпляров антенн так сильно не
отличаются.
Цена чуть больше, чем у Таллисмана. Просто меньше уже нельзя. У них резонатор на настоящей
керамике, поэтому ценой давят. Мне надо тоже на такой переходить. Сейчас ищу возможность.
Но я считаю, что моя антенна лучше Таллисмановской. Я их в безэховой камере сравнивал. Могу дать одну свою для подробного независимого сравнения.
Если у кого-то из коллег есть опыт работы с керамикой типа Форстерит с проницаемостью около 7 и металлизацией для нее в России или за рубежом, прошу поделиться. Буду премного благодарен!
Jef239
24.01.2017 09:08Речь идет о невязках после фиксированного (то есть фазового) решения. Решаемся по вторым разностям, так что ваши отклонения могут уйти, Для сравнения нам бы 3 штуки надо, но часа на два — провести испытания и записать сигнал.
Цена чуть больше, чем у Талисмана в США или у талисмана в России? Разница примерно в два раза получается.
Опыт может быть у Семикона Вроде бы у них свои радарные антенны. Могу уточнить у коллег, если надо…itsar
24.01.2017 09:20А где Вы находитесь? В Москве?
По-моему я сравнивал с нашими ценами. Давно уже не заглядывал.
Если не трудно, забросьте вопрос коллегам.
Вопросы керамики и металлизации можно рассматривать отдельно.
Jef239
24.01.2017 09:26Питер, Автово. Но можем и в Москву приехать. У коллеги спрошу — мы к себе переманили человека, раньше работавшего в Семиконе.
bambaleski
24.01.2017 19:51и что, получается, все сигнализации с GPS теперь бесполезны?
itsar
24.01.2017 19:53Не все GPS-приемники подвержены такому имитационному влиянию.
Есть приемники невосприимчивые к такой простой имитационной помехе.
JerleShannara
25.01.2017 17:05Ага, ибо глушилки всего и всея ещё недавно в открытую продавались в митино и на савёловской по смешным ценам (какая-то навороченная с 6 антеннами и заявлеными 50 метрами глушения стоила около 30тр, вариант для угонщика стоил около 10тр).
itsar
25.01.2017 17:20Насколько я знаю, крутые сигнализации работают «на обрыв». Как только связь с машиной по сотовой сети или навигация отваливается, сразу включается тревога. Вот для таких случаев им нужна имитация.
Jef239
25.01.2017 19:55То есть каждый туннель — повод для выезда ОМОН? :-)
itsar
25.01.2017 20:07А оно у туннеле на охрану не встанет, если пользователь не откажется от защиты.
Jef239
25.01.2017 21:02я имел ввиду ту сигнализацию, которая при угоне выдает трек машины…
А если на охрану уже встала — мокрый брезент накинуть. 3 раза ложная тревога с мокрым брезентом — потом уже не приедут.
KbRadar
25.01.2017 13:31Спасибо за статью! А ещё порадовало сочетание фразы «В последнее время мне приходится заниматься проектированием и изготовлением спутниковых навигационных антенн» и воткнутой в разъём скрепки на фото.
itsar
25.01.2017 13:41+2Как говорит мой учитель по антеннам, Попов Олег Вениаминович, сделать антенну, которая ничего не принимает очень сложно. Я часто пользуюсь этим в повседневной практике. И в серьезных разработках тоже.
JerleShannara
25.01.2017 17:12+1Вспомнилась шутка времён СССР " — Ура, я поймал Маяк на свой самодельный радиоприёмник! — Нашел чем гордиться, этот Маяк ловится даже на кастрюлю с вилкой."
vlivyur
25.01.2017 17:28У бабушки дома можно было взяться за ручку двери одной рукой, пока в другой держишь за штекер шнур от наушников, и слушать Маяк.
grossws
26.01.2017 20:49Первый шаг начинающего радиолюбителя — поймать Маяк. Второй шаг — перестать ловить Маяк.
Jef239
25.01.2017 19:57Ну для того же NV08 в машине пришлось разъем пальцем затыкать, чтобы он навигационное решение потерял. А просто на разъем — все нормально, работает.
itsar
25.01.2017 20:11Сам-то он точно такого не может. Этого даже в даташите нет. Все хозяйство, которое хозяин вокруг него накрутил принимает сигнал и ему передает и само того не замечает. И это подтверждает слова учителя.
aol-nnov
Яндекс-такси даже патч делали к своему приложению, чтобы проезжающие по площади заказчики не платили, будто у них маршрут через аэропорт. тут же и была статья. искать лень.
aol-nnov
впрочем, нашел, но не на хабре. http://varlamov.ru/2024702.html?page=3 и https://lenta.ru/articles/2016/11/07/gpsoff/ например
immaculate
Блин, то-то я думал, что у меня с навигатором на телефоне происходит, когда мимо проезжаю. Подозревал что-то подобное, но когда писал на форуме, народ меня высмеял, типа еще один верит в теории заговора.