как узнать номер пейджера
Использование пейджера в XXI веке
Пейджеры были очень популярны в 90-е годы. В то время я был студентом, и пейджер для меня был чем-то вроде коммуникатора из Star Trek, частью передовых технологий. Забавно вспоминать об этом, потому что теперь я знаю, что технологически протокол пейджинга очень прост. С точки зрения кодирования, пейджер не так уж отличается от беспроводных дверных звонков, которые сейчас продаются за 5 долларов на Aliexpress.
Несмотря на то, что повсеместно пейджеры уже не используются, они всё ещё есть в доме у некоторых людей. Можно ли протестировать пейджер сейчас? Безусловно, и я покажу вам, как это сделать. Давайте начнём.
POCSAG — протокол обмена сообщениями
Допустим, мы хотим отправить сообщение “TEST” на номер “1234”. В двоичной форме оно будет выглядеть примерно так:
А вот как сообщение выглядит в радиоспектре:
Биты кодируются с помощью модуляции с частотной манипуляцией (FSK), с использованием полосы пропускания 9 кГц и скорости 1200 бит в секунду, все это сообщение передается примерно за 0,5 с.
Выглядит просто, и это действительно так. Я пропущу подробности; те, кому интересно, могут прочитать спецификацию протокола. Все эти биты можно легко написать даже на бумаге — в прошлом эти протоколы были простыми, чего не скажешь о современных GSM или Wi-Fi.
В сообщениях POCSAG нет ни аутентификации, ни ключей безопасности — все сообщения для всех клиентов пейджинговой компании доступны в эфире «как есть» и, кстати, могут быть легко декодированы с помощью программного обеспечения для ПК, такого как PDW.
Как клиенты получают свои сообщения? Каждый пейджер имеет уникальный идентификатор, который называется CAP — протокол доступа к каналу, или RIC — код идентификации приёмника. Все пейджеры от пейджинг-провайдера слушают одну и ту же частоту, скажем, 164 МГц. Если код в сообщении равен коду пейджера, пейджер сохраняет сообщение и издаёт громкий звуковой сигнал. Вот и всё. Связь односторонняя, нет обратной отправки подтверждения, у пейджера есть только приёмник, а передатчика нет вообще. Логика и аппаратное обеспечение предельно просты, благодаря чему пейджер может работать более месяца от одной батарейки AAA. Интересно, что пейджеры всё ещё используются в некоторых странах даже сейчас — в больницах или службах неотложной помощи, где важно иметь портативное и лёгкое устройство с длительным временем автономной работы.
Покупка пейджера
Во многих странах по-прежнему доступны пейджинг-провайдеры, с которыми можно подписать контракт и получить новое устройство, но, скажем так, это не слишком увлекательный способ. Я говорю с точки зрения человека, который хочет протестировать пейджер из-за образовательного или ностальгического желания или, может быть, даже имеет дома старый пейджер, сделанный в 1990-х годах. У меня есть хорошая новость — с большой вероятностью он может быть протестирован ещё раз и действительно будет работать. Конечно, не в масштабах всего города, но можно запустить собственную маломощную пейджинговую сеть, по крайней мере в вашей квартире. Сейчас можно купить новый пейджер, но он стоит недёшево. Это первая ссылка, которую я нашёл в Google:
И, наконец, на eBay можно купить подержанный пейджер за 20–50 долларов. Он дешёвый, и это старая винтажная модель, что тоже весело. Но, прежде чем совершать покупку, следует иметь в виду две вещи, которые были описаны ранее в разделе POCSAG:
Чтобы отправить сообщение на пейджер, нужно знать его частоту. У старых пейджеров она написана на обратной стороне. Если вы не знаете частоту и не можете её узнать, пейджер бесполезен.
Чтобы отправить сообщение на пейджер, вам необходимо знать его кэп-код. Это 7-значное число, оно выглядит так: 0001234. Если вы его не знаете, вам понадобится кабель для программирования, чтобы прочитать конфигурацию пейджера.
Рассмотрим практический пример. Я видел этот пейджер Motorola Advisor Gold на eBay (имя продавца скрыто из соображений конфиденциальности):
Цена не такая большая, но стоимость доставки в ЕС составляет почти половину его цены. Ладно, давайте посмотрим на следующее фото:
Мы можем видеть частоту (462,875 МГц) и скорость передачи, но наклейка с кодом доступа была удалена владельцем, возможно, из соображений конфиденциальности, и это не очень хорошо для нас. Можно прочитать кэп-код, но для этого нам нужно купить или изготовить специальный кабель для программирования, а также найти подходящее ПО. Всё это нужно проверять перед покупкой, иначе у нас есть шанс получить «кирпич», который выглядит как пейджер, но не работает. И последняя, необязательная, но важная проверка — мы должны проверить, доступна ли желаемая частота в нашем регионе. Это можно сделать с помощью дешёвого приёмника RTL-SDR и программного обеспечения, такого как HDSDR. Если есть другой сигнал на той же частоте, пейджер также не будет работать. В моём районе частота 462,875 МГц, указанная на обратной стороне пейджера, уже занята, так что в моём случае лучше было найти на рынке другую модель.
Отправка сообщений
Чтобы отправить какие-либо данные на пейджер, мы должны передать сообщение POCSAG, используя соответствующую радиочастоту.
Перед любой передачей, пожалуйста, ознакомьтесь с местными правилами радиосвязи.
Эта статья описывает только техническую возможность, но не юридическую ее сторону, в разных странах правила могут отличаться. Например, в США в соответствии с частью 15 правил FCC, устройства с очень малой мощностью не требуют лицензирования, если излучаемая энергия не превышает 200 мкВ/м на расстоянии 3 метра. Это может обеспечить дальность действия до 30 метров, чего абсолютно достаточно для любых исследовательских или образовательных экспериментов. В других странах правила могут быть иными. Есть 3 простых способа передачи сообщений POCSAG.
Rpitx
Самый простой способ — использовать Raspberry Pi, и, что удивительно, это совершенно бесплатно: с помощью бесплатного opensource ПО rpitx сигнал может быть сгенерирован непосредственно с пина Raspberry Pi. Достаточно надеть на пин GPIO4 короткий провод:
Пейджер достаточно чувствителен, чтобы получить такой сигнал на расстоянии нескольких метров. Чтобы отправить сообщение, нам нужно установить программное обеспечение rpitx и выполнить команду:
Здесь 1000001 — это кэп-код, 465198000 — частота, а 0 — тип сообщения (сообщение может быть одного из 4 типов, например, 0 — только числовое, 3 — буквенно-цифровое). Другие параметры, такие как инверсия сигнала или скорость передачи, также могут быть изменены при необходимости. Выходная мощность однозначно невысокая, но её достаточно для проверки пейджера в квартире. Приложение rpitx работает на удивление хорошо для своей (нулевой) цены, но, конечно, Raspberry Pi в целом не является точным радиочастотным генератором. Частота может быть не на 100 % правильной, и может потребоваться небольшая корректировка значения в диапазоне нескольких килогерц (также хорошо иметь RTL-SDR в качестве контрольного приёмника).
Плата MMDVM
Следующий способ — купить специальную плату MMDVM (Multi-Mode Digital Voice Modem), которую можно прикрепить к Raspberry Pi:
Эта плата содержит передатчик ADF7021 с возможным диапазоном частот 80–940 МГц и небольшую антенну. Несмотря на название, плата MMDVM может передавать не только голос, но и сообщения POCSAG. Чтобы использовать плату, нам необходимо установить приложение MMDVMHost и настроить файл MMDVM.ini (установить желаемую частоту и включить модули «POCSAG» и «Remote Control»). После этого мы можем запустить приложение MMDVMHost (его можно разместить в /etc/rc.local для автозапуска или запустить как службу при необходимости). В другом окне терминала мы можем использовать эту команду для отправки сообщения:
Здесь 7642 — это порт дистанционного управления, 1000001 — код доступа. Использование MMDVMHost немного сложнее и требует некоторых знаний Linux, но выходной сигнал лучше по сравнению с использованием пина Raspberry Pi в качестве вывода.
GNU Radio
Людям, у которых нет Raspberry Pi, но есть LimeSDR, HackRF, USRP или любой другой приёмопередатчик SDR, можно отправлять сообщения POCSAG с помощью GNU Radio.
Существует несколько кодировщиков POCSAG, я нашёл модуль gr-pocsag от ON1ARF самым простым в использовании: он даже не требует установки и может работать из любой папки.
Описание блоков GNU Radio выходит далеко за рамки этой статьи, желающие могут самостоятельно проверить страницу gr-pocsag. Все описанные решения маломощные. Те, кто хочет большей дальности, могут использовать специальный радиопередатчик, такой как Motorola GM-350, который может обеспечить дальность действия в несколько километров, но для этого типа передачи, очевидно, потребуется действующая лицензия.
Настройка пейджера
Другие модели, такие как Alphapoc, можно настроить вручную, даже без программного обеспечения, или с помощью относительно дешевого инструмента программирования через USB. Старые, выпущенные в 1990-х годах пейджеры Motorola Advisor, имеют 3 контакта последовательного порта (можно использовать USB-Serial):
Программное обеспечение для этих пейджеров требует среды MS-DOS, но может запускаться с помощью DOSBox. У более новых (около 1997 г. выпуска) пейджеров Motorola Advisor Gold есть двухконтактный интерфейс. Я нашел эту схему подключения в Интернете, но сам не проверял:
Пейджеры Motorola требуют старого программного обеспечения, написанного для MS-DOS, его можно найти в Интернете. Увы, многие страницы и ссылки, созданные 20 лет назад, сейчас недоступны — когда речь идёт о вещах, созданных 20 лет назад, возникает хорошо известная проблема «вымирания ссылок». Другая проблема, которая может возникнуть, — многие операторы пейджинга использовали пароль для предотвращения изменения конфигурации пейджера. Возможно, это было сделано из соображений безопасности: после изменения кэп-кода владелец пейджера может читать сообщения, предназначенные для другого клиента. Если конфигурация пейджера защищена паролем, при чтении настроек появится запрос:
Этот пароль можно прочитать из EEPROM пейджера с помощью созданных энтузиастами сторонних инструментов, но для этого потребуются некоторые навыки пайки.
Заключение
Было весело протестировать пейджинг и исследовать, как он работает.
Также очевидно, что нет никакой гарантии, когда вы покупаете вещи 20-летней давности — даже если продавец пишет «проверено» в описании, максимум, что он сделал, — это поставил батарею и проверил логотип на экране. Я не ожидаю, что продавцы знают о частотах или кодах доступа. Но в моём случае это было сделано для развлечения и самообразования, так что проблем с этим нет, даже если что-то не работает.
Ещё одна проблема, с которой я столкнулся при тестировании пейджеров, — это «вымирание ссылок». Раньше все думали, что «Google знает всё» и «информация в Интернете бесплатна», но на самом деле это не так. Хранение файлов и размещение сайтов стоят денег, через некоторое время веб-страницы становятся недоступными. Многие старые сообщения на форуме имеют мёртвые ссылки и содержат пустые квадраты вместо изображений. При попытке найти информацию о старых вещах всё это стало очевидным. Мне удалось найти полезное программное обеспечение на некоторых старых и заброшенных веб-страницах, но нет гарантии, что эти ссылки будут живы в течение длительного времени.
Могут быть и юридические причины, например, я не уверен, что Motorola официально разрешила кому-то публиковать программное обеспечение для программирования своих пейджеров, даже если публикация сделана 25 лет назад. Но для сохранения технического наследия может быть важно сохранить такие вещи. Наконец, пейджеры можно протестировать, и это весело.
Для тех, кто хочет провести больше тестов в более крупном масштабе, также можно использовать POCSAG на любительских радиочастотах и присоединиться к сети любительского радио DAPNET (децентрализованная любительская пейджинговая сеть). Для этого потребуется лицензия любительского радио, но для тех, кто интересуется цифровой связью, она может оказаться достойной её получения. Желаю всем читателям удачи и интересных экспериментов!
Несмотря на возраст этого вида связи, пейджерам до сих пор находится применение. Но если для технологии, 20 лет — это уже солидный возраст, то для языков программирования это еще даже не юность. Например С++, созданный Бьёрном Страуструпом аж в 1983 — до сих пор в топе самых популярных языков в мире благодаря своей чистой и красивой логике и гибкости. Если вы хотите разнообразить свой набор скилов этим языком — обратите внимание на наш курс по разработке на С++, ведь этот язык для миллионов программистов был и остаётся не менее важным, чем английский.
Узнайте, как прокачаться и в других специальностях или освоить их с нуля:
Сам себе пейджинговый оператор
Привет, в этом посте я хочу рассказать как я загорелся одной больной идеей, и создал свою пейджинговую сеть в 2021 году.
В ноябре 2020 на Авито я наткнулся на объявление о продаже пейджера Motorola Advisor всего за 100 рублей и рядом со мной. Погуглив подобные объявления о продаже данной модели пейджера, я понял что этот раритет отдается почти даром. Спустя всего час в руках у меня было чудо техники из 90х. И волна ностальгии, по школьным годам нахлынула на меня, с таким прибором я ходил еще в 1-3 классе. Пейджер был в идеальном состоянии почти ни царапинки. И тут в моей голове забегали тараканы, и я захотел отправить на него сообщение любым способом!
Т.к. в программировании, электронике и радиосвязи я шарю, сразу заказал себе hackrf one. Пока он ехал с али, я успел накопать оригинальную программу для пейджера, схемы, и кабель usb-ttl(uart). На пейджере был установлен пароль на программирование, поэтому пришлось разобрать сие чудо и, припаяв перемычку сбросить его.
Подключение к компу по UART
Далее я немного прошелся по настройкам и определил CAP код(номер пейджера). Для тех кто в танке пейджер работает по следующей схеме: Приемник пейджера включается раз в 32 миллисекунды, и если в эфире присутствует преамбула, то приемник не отключается и ловит посылку. Если адрес посылки(CAP код) соответствует пейджеру, то он ловит сообщение и сохраняя пищит(мол новое сообщение).
В пейджер можно записать до 4х номеров, существуют информационные и почтовые каналы, ведь пейджер можно было ставить программными пинами на специальный модем-приставку, и он мог принимая сообщения выводить их на факс.
Немного поигрался с названием оператора и текстом, кодировка специфичная.
Когда наконец то приехал HACKRF one цель была проста. Надо было отправить сообщение на нужной частоте в кодировке POCSAG 1200бит. Нашел в сети почти готовый стек для GNU-Radio. Получилась такая блок схема. Пришлось повозиться с установкой новых модулей.
Приемник пейджера расстроился из за долгих лет лежания и был потрачен день для настройки наилучшей чувствительности. Также для hackrf был куплен усилитель на 4 ватта. Данный усилитель позволил, с хорошей антенной, покрыть зону около 5 км вокруг дома в городе.
Идея возродить пейджинговую сеть возникла после просмотра старых американских сериалов, где доктора в больницах пользовались только пейджерами, а сотовые телефоны там были запрещены т.к. могли создавать наводки на аппараты жизнеобеспечения. Но сейчас то ли аппараты стали делать лучше, то ли случаев не было, все в больницах пользуются мобильниками.
Может быть есть еще места на планете где пейджинговая связь будет в преимуществе перед мобильной?
А потом я купил себе еще несколько пейджеров и начал создавать сеть, но это уже совсем другая история.
PS: Кстати я в курсе про распределение радио частотного спектра. Пейджеры разных операторов работают на разных частотах. Hackrf one перекрывает все эти диапазоны. Это не инструкция к действию а просто эксперимент.
Разбираем протокол пейджерных сообщений POCSAG, ч1
Давным-давно, когда мобильный телефон стоил 2000$ и минута звонка стоила 50 центов, была такая популярная штука как пейджинговая связь. Затем связь стала дешевле, и пейджер сначала превратился из престижного атрибута делового человека в непрестижный атрибут курьера или секретаря, а затем эта технология практически и вовсе сошла на нет.
Общая информация
Для тех, кто забыл или родился после 2000х, кратко напомню основные идеи.
С точки зрения пользователя, пейджинговая связь обладает двумя большими плюсами, которые в некоторых случаях актуальны и до сих пор:
— Связь односторонняя, без каких-либо подтверждений, поэтому пейджинговую сеть невозможно перегрузить, ее работоспособность не зависит от числа абонентов. Сообщения просто последовательно передаются в эфир «как есть», а пейджер принимает их если номер получателя совпадает с номером пейджера.
— Приемное устройство очень простое, так что пейджер может работать без подзарядки до месяца от 2х обычных батареек АА.
Для передачи сообщений существуют два основных стандарта — POCSAG (Post Office Code Standardization Advisory Group) и FLEX. Стандарты совсем не новые, POCSAG был утвержден еще в 1982г, поддерживаемые скорости 512, 1200 и 2400 бит/с. Для передачи используется частотная манипуляция (FSK — frequency shift keying) с разносом частот 4.5КГц. Более новый стандарт FLEX (был предложен Motorola в 90х) поддерживает скорости до 6400 бит/с и может использовать не только FSK2, но и FSK4.
Протоколы по своей сути достаточно просты, и еще лет 20 назад для них были написаны декодеры, способные дешифровывать сигнал со входа звуковой карты (шифрования сообщений не предусмотрено, так что читать их с такой программой в принципе может любой).
Посмотрим, как это работает.
Прием сигналов
Для начала, нам нужен образец для декодирования. Берем ноутбук, rtl-sdr приемник, машину времени, и принимаем нужный нам сигнал.
Т.к. модуляция частотная, режим приема также ставим FM. С помощью HDSDR записываем сигнал в формате WAV.
Посмотрим, что у нас получилось. Загружаем wav-файл в виде массива с помощью Python:
Результат (биты подписаны вручную):
Как можно видеть, все просто, и даже «на глаз» в Paint можно дорисовать биты, где «0» а где «1». Но делать это для всего файла было бы слишком долго, процесс надо автоматизировать.
Если увеличить график, то можно видеть что ширина каждого «бита» равна 20 отсчетам, что при частоте дискретизации wav-файла 24000 семпла/c, соответствует скорости 1200 бит/с. Найдем в сигнале место перехода через ноль — это будет начало битовой последовательности. Выведем на экран маркеры, чтобы проверить что биты совпадают.
Как можно видеть, совпадение не идеально (частоты передатчика и приемника все же чуть различны), но для декодирования вполне достаточно.
Для длинных сигналов пришлось бы вводить алгоритм подстройки частоты, но в данном случае этого не требуется.
И последний шаг — переведем массив из wav в битовую последовательность. Тут все тоже просто, длину одного бита мы уже знаем, если данные за этот период положительны, то добавляем «1», иначе «0» (правка — как оказалось, сигнал нужно было реверсировать, так что 0 и 1 поменяны местами).
Возможно, код можно оптимизировать, отказавшись от цикла, хотя в данном случае это некритично.
Результат — готовая последовательность бит (в виде строки), сохраняющая наше сообщение.
101010101010101010101010101010101010101010101010101010101010101010101010101
010101010101010101010101010101010101010101010100111110011010010000101001101
100001111010100010011100000110010111011110101000100111000001100101110111101
010001001110000011001011101111010100010011100000110010111011110101000100111
000001100101110111101010001001110000011001011101111010100010011100000110010
011011110101000100111000001100101110111101010001001110000011001011101111010
100010011100000110010111011110101000100111000001100101110111101010001001110
…
111101111
Декодирование
Последовательность бит — это уже гораздо удобнее, чем просто wav-файл, из нее уже можно извлечь какие-либо данные. Разобьем файл на блоки по 4 байта, и получим более понятную последовательность:
10101010101010101010101010101010
10101010101010101010101010101010
10101010101010101010101010101010
10101010101010101010101010101010
01111100110100100001010011011000
01111010100010011100000110010111
01111010100010011100000110010111
01111010100010011100000110010111
01111010100010011100000110010111
00001000011011110100010001101000
10000011010000010101010011010100
01111100110100100001010111011000
11110101010001000001000000111000
01111010100010011100000110010111
01111010100010011100000110010111
01111010100010011100000110010111
00100101101001011010010100101111
Это все, что мы можем извлечь из файла, осталось понять что эти строки значат. Открываем документацию на формат, которая доступна в виде PDF.
Все более-менее понятно. Заголовок сообщения состоит из длинного блока «10101010101» который нужен, чтобы пейджер вышел из «спящего режима». Само сообщение состоит из блоков Batch-1… Batch-N, каждый из которых начинается с уникальной последовательности FSC (в тексте выделено жирным). Далее, как видно из мануала, если строка начинается с «0», то это адрес получателя. Адрес зашит в самом пейджере, и если он не совпадет, пейджер сообщение просто проигнорирует. Если строка начинается с «1», то это собственно, сообщение. Таких строк у нас две.
Теперь посмотрим на каждый блок. Мы видим коды Idle — пустые блоки 01111. 0111, не несущие полезной информации. Удаляем их, информации остается весьма мало, все что остается:
01111100110100100001010011011000 — Frame Sync
00001000011011110100010001101000 — Address
10000011010000010101010011010100 — Message
01111100110100100001010111011000 — Frame Sync
11110101010001000001000000111000 — Message
00100101101001011010010100101111 — Address
Осталось понять, что внутри.
Ищем дальше в мануале, и выясняем, что сообщения могут быть цифровые или текстовые. Цифровые сообщения хранятся в виде 4-битных BCD-кодов, значит в 20 битах может поместиться 5 символов (еще остаются биты для контроля, мы их рассматривать не будем). Сообщение также может быть текстовым, в этом случае используется 7-битная кодировка, но для текстового наше сообщение слишком мало — суммарное количество бит сообщения не кратно 7.
Из строк 10000011010000010101010011010100 и 11110101010001000001000000111000 получаем следующие 4х битные последовательности:
1 0000 0110 1000 0010 10101 0011010100 — 0h 6h 8h 2h Ah
1 1110 1010 1000 1000 00100 0000111000 — Eh Ah 8h 8h 2h
И наконец, последний шаг — смотрим в документации таблицу соответствия символов.
Как можно видеть, цифровое сообщение может содержать только цифры 0-9, букву U («ugrent»), пробел и пару скобок. Пишем несложную функцию вывода, чтобы не считать их вручную:
В итоге получаем переданное сообщение «0682*)*882». Что оно значит, сказать сложно, но раз формат поддерживает цифровые сообщения, значит наверно оно кому-то нужно.
Выводы
Как можно видеть, формат POCSAG весьма простой, и по сути, может быть декодирован даже в школьной тетради. И хотя сейчас это имеет скорее исторический интерес, анализ таких протоколов весьма полезен с познавательной точки зрения.
В следующей части рассказано про декодирование ASCII-сообщений.