2022. Количество активных SIM-карт превзошло население планеты семь лет назад. Вовсю идёт внедрение мобильных сетей пятого поколения, невероятно быстрых и в то же время доступных на самом широком спектре устройств — от автомобилей до носков. Искать парные носки скоро можно будет через интернет, представляете?
Нет лучшего времени, чтобы купить свой первый пейджер.
▍ Преамбула
Основной показатель крутости пейджера (а, следовательно, и его владельца) — количество строк сообщения, которые он мог вместить экран за раз. Однострочные пейджеры были самыми бюджетными, двухстрочные модели представляли средний уровень, а четырёхстрочные считались самым мажорным вариантом.
Philips Messenger Lux — возможно, единственный пейджер с восьмистрочным дисплеем. С подсветкой! Один этот факт делает его самым люксовым пейджером, который когда-либо существовал.
Кроме дисплея, Messenger Lux отличался внушительной памятью для сообщений: до 22000 символов в 99 сообщениях. Остальные функции стандартны: уведомление звуковым сигналом, вибрацией и/или светодиодом. Восемь рингтонов. Часы с шестью настраиваемыми будильниками. Работает от двух батареек AAA.
Есть, однако, существенная проблема: в России не осталось публичных пейджинговых операторов. Есть компании, которые предлагают развёртывание пейджинговых сетей в масштабах предприятий (например, системы связи для официантов в ресторанах или энергетиков на АЭС), но не осталось ни одного оператора масштаба города или области, куда можно прийти со своим пейджером, подписать договор и за пару сотен рублей в месяц оперативно получать на него сводку новостей, прогноз погоды и курсы валют.
Значит, если мы хотим пользоваться пейджером как пейджером, а не модными часами — работу оператора придётся брать на себя. От инфраструктуры до контента.
▍ Синхрослово
Чтобы передать сообщение на пейджер, нужно закодировать сообщение согласно протоколу пейджинговой связи POCSAG и передать его в эфир на той частоте, которую слушает пейджер. У операторов связи для этих задач имелись специализированные устройства для кодирования сообщений, профессиональные радиостанции, мощные усилители и специальные антенны, часто — в составе не одного, а целой сети таких комплектов. Но мы не оператор: у нас нет лицензии для вещания на нужных частотах, нет дорогостоящего оборудования и мы живём не в девяностых. Последнее, впрочем, как раз таки хорошо — у нас есть недорогие программно-определяемые радиостанции малой мощности вроде HackRF. Именно такой великолепной штукой мы решим вопрос передачи сообщения в эфир, а само сообщение сформируем на том же компьютере, к которому мы подключим плату.
В теории — всё просто. Практика, как водится, оказалась сложнее и гораздо интереснее. Чтобы воплотить задумку в жизнь — потребовалось собрать в кучу кусочки документации с нескольких старых форумов и заброшенных сайтов, собрать свой собственный программатор и провести настоящее детективное расследование.
Для начала — немного теории и о том, почему задачу не получилось решить с наскока. Протокол POCSAG, которым пользовались большинство операторов и с которым работает большинство пейджеров, определяет: формат кодирования сообщения, три скорости передачи сообщения, идентификацию принимающих устройств и множество тонких особенностей передачи отдельных символов. Однако частоту передачи техническое описание протокола не устанавливает. Это стало первой проблемой — мы не знаем, на какой частоте нужно передавать сообщение. На некоторых пейджерах рабочая частота печаталась на задней крышке, но, к сожалению, не на нашем экземпляре.
Судя по оформлению и вот этой наклеечке — пейджер привезён из Австрии и работал в сети оператора Airpage. Однако, меню пейджера на русском языке, значит, его перепрограммировали под одного из отечественных операторов. А раз его перепрограммировали — изменить могли и другие параметры, например, скорость передачи сообщения и номер пейджера. Это стало второй проблемой: неизвестны скорость, с которой нужно передавать сообщение, а также номер пейджера, которому нужно адресовать сообщение.
Всю эту информацию мы можем получить, подключив пейджер к компьютеру и считав его конфигурацию. Звучит просто? Не совсем.
Производители пейджеров не хотели, чтобы любой владелец с помощью компьютера мог запросто вшить своему пейджеру произвольный номер и таким образом получать чужую переписку. Для программирования требовалось специальное ПО и, что важно — специальный кабель для подключения к специальному разъёму на устройстве. И то и другое можно было получить только напрямую от производителя и только если вы — оператор. Впрочем, ПО со временем в Интернет всё-таки утекло. Осталось только изготовить кабель.
На подавляющем большинстве пейджеров программирование осуществлялось с помощью спрятанных где-то на корпусе контактов. Например, другой популярный топовый пейджер NEC 21A Maxima скрывает разъём для программирования под резиновой заглушкой на торце.
Инженеры Philips решили не портить внешний вид своего люксового пейджера какими-то разъёмами-заглушками и реализовали процедуру программирования пейджера без проводов.
Те, кто учился в школе в начале нулевых, наверняка застали такое замечательное средство социализации, как телефон с ИК-портом. Такой телефон включал его владельца в сеть обмена картинками с приколами, мелодиями и, конечно же, Java-играми. Для этого, однако, передающий и принимающий телефон нужно было обязательно держать окошками ИК-портов друг напротив друга и ни в коем случае не двигать (желательно даже не дышать в их сторону) — передача могла прерваться по совершенно неочевидным причинам.
Примерно тем же способом выполняется и программирование Люкса, но с одним отличием: приёмник и передатчик находятся на разных местах корпуса, а не за одним окошком. С пейджера данные передаются в программатор с помощью того же светодиода, который загорается при получении сообщений. Фотоприёмник же расположен за незаметным ИК-прозрачным окошком на передней панели под дисплеем.
▍ Полезная нагрузка
Знающие и умеющие люди с форума radioscanner.ru уже давно отреверсили схему программатора для нашей модели пейджера. Она не включает в себя некоторых функций оригинального программатора от производителя, но зато проста, собирается из небольшого количества доступных деталей и справляется с нашей задачей.
Ну, зато работает
ПО для программирования пейджера гуглится, оставим этот этап на совести читателя, если он вдруг решит повторить эксперимент автора.
ПО работает на DOS. Берём копию DOS, разворачиваем её на виртуалке, запускаем PROG20
. Располагаем программатор так, чтобы инфракрасный светодиод светил в фотоприёмник пейджера, а фотоприёмник программатора закрепляем прямо над светодиодом пейджера:
Beam me up, Scotty
Попробуем считать конфигурацию. Жмём F4
. Едва заметно начинает мерцать светодиод на программаторе (в ИК-диапазоне он светит гораздо ярче, но мы этого почти не видим), пейджер в ответ подмигивает своим красным индикатором.
Удивительно, но сработало. Мы видим совершенно не такой, как на наклейке, номер в поле Master RIC
, два из четырёх Secondary RIC
для получения общих новостных рассылок, локализация Russian
. На второй странице указана скорость передачи данных — 512 бод. На третьей странице — несущая частота в 161.5 МГц.
Данных достаточно для пробной передачи. Ненадолго отложим пейджер и соберём передающую станцию. У нас есть SDR плата HackRF, на которую мы можем передать сформированный на компьютере сигнал. Мощность передачи небольшая, сигнал не распространится за пределы помещения и не повлияет на другие устройства, работающие на этих частотах (мы же помним про лицензию на вещание, да?).
Для формирования сигнала с сообщением и передачи его на SDR воспользуемся пакетом программ GNUradio. Это крайне гибкий инструмент для работы со всевозможными сигналами, который основан на модульном подходе: чтобы что-то куда-то передать, нужно собрать конвейер из модулей, каждый из которых выполняет ровно одну задачу и передаёт результат своей работы следующему модулю. Умные люди из интернета и здесь нам помогли: для GNURadio уже написан модуль gr-mixalot, который формирует сигнал с произвольным сообщением протокола POCSAG или FLEX, поэтому читателю не придётся вникать во всякие страшные понятия вроде «манипуляция сдвигом частоты без возвращения к нулю» и «двухбитовый код коррекции ошибки» (что, впрочем, не помешает любопытствующим почитать, например, этот материал).
Разработчик модуля gr-mixalot оказался настолько любезен, что включил в комплект с исходниками файл конвейера для GNUradio Companion с примером передачи сообщения через SDR вроде нашего HackRF:
На схеме ничего сложного: создаём и кодируем сообщение блоком Single-Page POCSAG Xmit, преобразуем его вывод в цифровые значения, эти значения частотно модулируем, немного преобразуем сигнал модулями умножения и ресемплинга, и наконец, отправляем в HackRF. Нужно, однако, поправить несколько переменных: номер пейджера (capcode), частоту (pagerfreq) и сообщение (message). Вводим наши данные, включаем HackRF, пейджер кладём поближе к антенне. Всё готово:
Запускаем схему в GNURadio… И ничего не происходит. Ещё один запуск — снова произошло ничего.
Досадно. Давайте разбираться, что не так. Возьмём ещё одну SDR и послушаем, уходит ли вообще сигнал в эфир:
Определённо уходит, частота верная. Поищем возможные проблемы на стороне пейджера.
В документации PROG20 поле частоты описано следующим образом:
Receiver Frequency
Допустимые значения: 0-999.9999999
Назначение параметра: Содержит конкретное значение рабочей частоты пейджера (в МГц). Это поле записывается при изготовлении пейджера и не может быть изменено с помощью программатора.
То есть, программно изменить частоту приёма сообщений невозможно. Вероятность, что Airpage и местный оператор, на которого переключили этот пейджер, вещают на одной и той же частоте — невелика. Из этих двух фактов выдвигаем гипотезу: частоту приёмника изменили аппаратно.
Заглянем внутрь Люкса:
Заметно, что тут поработали паяльником. Обратите внимание на контакты детали с надписью 82.500. Это — кварцевый генератор, который при подаче на него напряжения выдаёт вибрирующий с заранее известной частотой сигнал. Кварц — незаменимый компонент любого устройства, где есть необходимость в точном периодическом сигнале — от наручных часов Монтана до компьютеров всех сортов. Радиоприёмники цифровых сигналов тоже входят в этот спектр.
Очевидно, кварц на нашем экземпляре меняли. Значит, теперь его приёмник слушает другую частоту. Если обратиться к документации на микросхему приёмника — мы найдём процедуру настройки на частоту. Если кратко: с точно той же частотой колеблется контур приёмника и её можно измерить на тестовых точках (золотистые контакты в правом верхнем углу). Тут другая проблема: для измерения такой частоты нужно лабораторное оборудование. Очень дорогое лабораторное оборудование. Осциллограф с полосой пропускания до 1 ГГц стоит примерно как новый автомобиль. Более простой частотомер с подходящими характеристиками стоит на два порядка меньше, но всё ещё неоправданно дорого для единичного применения.
Можно отправить сообщение на каждой из возможных частот, но перебирать их придётся по одной. Приятной особенностью GNURadio Companion является возможность преобразовать конвейер из блоков в код Python. Для нас это означает, что достаточно выполнить файлик .py с нужными параметрами сообщения, номера и частоты, а не править конвейер вручную для каждой следующей частоты. В полученный код можно добавить простой цикл и перебирать частоты им.
В руководстве упоминается полезная функция, которая выводит на экран значок с перечёркнутой антенной, если пейджер не принимает вообще никаких сигналов на своей частоте в течение 30 секунд. В годы активного функционирования сети он был бы индикатором отсутствия покрытия оператора, но сейчас должен отображаться почти постоянно. Включить её можно в том же программаторе.
Соберём пейджер обратно, снова установим его в программатор, запустим PROG20. Изменим параметр Out Of Range
с Disabled
на 30 seconds
, запустим процедуру программирования клавишей F6
. Заморгали лампочки, побежали проценты… И тут — здравствуйте:
Интересно. Попробуем считать текущую рабочую конфигурацию и её же записать. Для верности накроем пейджер с программатором чёрной салфеткой, чтобы избежать влияния других источников света.
Ошибка та же. Появляется где-то на 12% записи новой программы.
Возможно, поможет сброс к заводским настройкам. Есть риск потери хитрых хаков, которые, вероятно, устанавливали в сервисе местного оператора, если таки вообще были.
Сохраним текущую конфигурацию в файл и запустим процедуру сброса. Для применения новых параметров PROG20 перезагружает пейджер в особый режим, в котором пейджер может только принимать команды от программатора и не запускает интерфейс. По идее, пейджер должен перезагрузиться в обычный режим, как только получит корректную программу.
Однако запись программы и в этом режиме обрывается с той же ошибкой, с которой мы уже столкнулись. Пейджер всё ещё ждёт указаний от программатора, но тому не удаётся ничего туда записать.
Самое время остановиться и подвести невесёлый промежуточный итог:
- Приёмник пейджера был аппаратно перенастроен на неизвестную частоту;
- Из-за сбоя записи настроек программатор не может вывести пейджер из режима программирования;
- Пейджер застрял в режиме программирования и не загружается в штатный режим работы, даже если вытащить из него батарейки.
▍ Код коррекции ошибок
Давайте разбираться.
Начнём с самого пейджера. Чтобы привести его в чувство, нужно понять, почему программатору не удаётся записать программу в пейджер. В ветке на Радиосканнере, где нашлась схема программатора, кто-то неодобрительно высказывался о работе программатора на виртуальной машине. «Только голое железо», писали они. DOSBox тоже не годится.
Нам нужен компьютер с разъёмом RS232. Пришло время посетить кладовку.
Из кладовки выжившие возвращаются с великолепным устройством, уже знакомым некоторым читателям. Встречайте: Франкеноут (можно просто Фрэнк):
Собранный из двух половинок разных ноутбуков, Фрэнк был моим походным ноутбуком большую половину студенчества. С завода наивное устройство, которому после череды непростых жизненных испытаний предстояло стать Фрэнком, вышло под именем RoverBook. После трагической потери дисплея ему пожертвовал крышку ноутбук Acer с отказавшей материнской платой. Крышка оказалась немного больше и тяжелее базы, и держится в открытом виде, при помощи лески. Из-за медленно умирающего южного моста часть периферийных портов Френка перестала работать, но ясность ума и основные функции он сохранил. К тому же он имеет никогда ранее не использованный, но так нужный нам сейчас порт RS-232.
Скопируем уже настроенный DOS с программатором из виртуалки на флешку. Сделаем её загрузочной. Воткнём в один из ещё рабочих портов Фрэнка и попробуем с неё загрузиться. Работает!
Подключим программатор. К сожалению, удлиняющего кабеля под DB-9 в кладовке не нашлось (возможно он там и есть, но кто бывал в кладовке — тот знает, что лишний раз там лучше не шариться), поэтому втыкаем программатор прямо в порт.
… с этим можно работать. Поднесём зависший пейджер к светодиоду программатора, фотоприёмник программатора поднесём к красному окошку пейджера, любой свободной конечностью нажмём F4
.
Считалось, уже неплохо. Теперь скрестим пальцы на оставшихся свободными конечностях и попробуем завершить процедуру сброса.
Пейджер ожил! Пока всё работает — зашьём в него нужные нам параметры Out of Range
. Заодно поменяем International Variant
на ANSI
на всякий случай.
Вернёмся к вопросу поиска частоты. Перебирать все частоты — не очень хорошая идея, поскольку диапазоны частот определены не стандартом POCSAG, а государственными органами радиочастотного надзора. И определены они довольно широко, а шаг между частотами явно не определён вообще. Простым перебором мы можем очень легко промахнуться мимо нужной частоты.
Попробуем пойти по-другому: поищем информацию об отечественных пейджинговых операторах и их рабочих частотах.
Нашлась она там же, где нашли программатор — по соседству с его архивом лежат несколько справочников с частотами операторов. Приведём частоты к общему виду, составим таблицу.
GNURadio позволяет скомпилировать блок-схему в исполняемый код на питоне. Воспользуемся этой функцией. Код можно немного дописать таким образом, чтобы он мог принимать аргументы из командной строки, которыми будет гораздо удобнее задавать сообщение и частоту.
У нас есть длинный список частот, есть готовый к применению код на питоне. Немного магии баша — и мы можем отправить по одному сообщению на каждой частоте из справочника. В качестве сообщения можно указать ту же частоту, чтобы единственное сообщение, которое дойдёт до пейджера, сразу содержало ответ на загадку.
Запускаем и ждём.
Открытие первое: пейджер очень громко трезвонит, когда получает сообщение. И вибрирует. И мигает лампочкой. И не затыкается, пока пользователь не нажмёт на кнопку! Это вам не деликатное сообщение из Телеграма, которое тихонько тренькнет и будет ждать в шторке уведомлений — пейджер требует всё ваше внимание!
Открываем Входящие и совершаем открытие второе:
Вот и наша искомая частота: 165 МГц ровно. Ровно в два раза больше указанной на кварце частоты 82.500. Кто бы знал.
Попробуем передать какое-нибудь другое сообщение. Указываем частоту, задаём сообщение, отправляем:
Радость, однако, была неполной. Да, сообщения пошли, но только из латинских букв. А пейджер ведь явно может работать с кириллицей, мы видели меню на русском. Дожмём? Дожмём!
Но сначала придётся немного остановиться на том, что такое кодировки и чем они отличаются одна от другой.
Стандарт POCSAG предполагает кодирование информации по семибитной таблице. Для стандартного латинского алфавита она соответствует стандартной таблице ASCII (она же ANSI):
Этой кодировкой пользовались ещё на телетайпах в 1960-х годах. Логично было использовать её и для ЭВМ тех и последующих лет. Семь бит позволяют хранить 128 символов, чего хватает для двух регистров латиницы, основных знаков препинания и нескольких управляющих кодов (выделены цветом). Вроде хватает, но только для латиницы. Ни символов других алфавитов, ни даже букв вроде ä
или ß
из немецкого языка в неё уже не добавить. Поэтому универсальной эта кодировка не стала.
С кириллическими кодировками было особенно сложно. Со времён, когда в СССР ещё делали свои вычислительные машины, остались кодировки КОИ-7 и КОИ-8. У винтажных Макинтошей была своя, ни на что не похожая, кодировка. Windows использовала кодировку 1251, где кириллические символы размещались в дополнительном диапазоне следом за латинскими. Её особенность — в соседней кодировке 1250 в тех же позициях располагались символы языков западной Европы, что радовало тогдашних пользователей такими строчками:
Winamp: đĺŕëüíî áü¸ň ëŕěó ďî ćîďĺ!
Потому что, конечно же, операционные системы далеко не всегда правильно определяли, в какой кодировке сохранён текст.
Вернёмся к нашей задаче. POCSAG использует ту же семибитную таблицу ASCII. Тут ни убавить, ни прибавить — в таблице ровно 128 символов. Стандарт POCSAG не предлагает кириллических кодировок, поэтому у пейджеров Philips существует два варианта кодировки для русского языка — Russian-ANSI
и Russian
. Первый — комбинированный вариант, который содержит и латиницу, и кириллицу, но только заглавные буквы. Второй содержит и заглавные, и строчные, но только кириллицы.
Одной быстрой прошивкой на Френке позже — пейджер готов принимать сообщения в кодировке Russian-ANSI
. К которому у нас таблицы нет. Но тут несложно догадаться, что кириллические буквы размещены там, где в обычной ANSI были строчные латиницы. Попробуем отправить фразу THIS IS BIG TEST and this is small test
:
Кодировка работает, русские буквы есть. Надо только составить таблицу соответствий.
15 минут и около трёх десятков сообщений спустя, таблица готова:
Букве Ё
места в таблице не нашлось.С буквой Я
возникла другая проблема — Все буквы до неё занимают места от 60
до 7E
в таблице ASCII, и она должна быть в таблице на месте 7F
. Однако в таблице ASCII в этом месте находится спецсимвол DEL
. Мы не можем ввести его с клавиатуры.
К счастью, это и не обязательно. Автор модуля gr-mixalot позже разработал более удобный способ отправлять сообщения. Он предусматривает постоянно работающий сервер, которому можно сообщить номер пейджера, тип и содержимое сообщения, что гораздо удобнее для массового использования. Важная и полезная нам особенность — сообщение ему нужно передавать в виде последовательности кодов из таблицы ASCII, а не готовых букв.
Если объединить таблицы ASCII с нашими открытиями, получим следующую таблицу для кодировки Russian-ANSI:
Со знанием этим составим новое сообщение:
717a65787c20657965207d726875206c7f636a6875207470606d767367716a68752061
736b6e6a20646020627b6f65692077607e
Отправим его на пейджер. Принято следующее:
Теперь давайте попробуем поработать с таблицей Russian
. Напрашивается гипотеза: буквы там в тех же позициях, что и в Russian-ANSI
. Прошьём пейджер и отправим на пейджер ту же строку. Ответ удивил:
Гипотеза проверку не выдержала, хотя некоторые буквы всё же остались на своих местах.
Составим таблицу символов для кодировки Russian
тем же методом, которым мы составляли таблицу для Russian-ANSI
:
Знающие люди сразу распознают в этой таблице почти точную копию кодировки КОИ-7, набор 1. Эти же знающие люди вспомнят особенность этой кодировки — при замене таблицы ASCII на КОИ-7 Н1 текст на английском автоматически транслитируется. Не идеально, но вполне можно читать. Отправив на пейджер фразу «invalid device», получим:
Кое-кто из читателей точно этого ждал
На этом этапе возможности полученной системы ограничиваются лишь воображением. Не составляет труда написать небольшой скрипт, который преобразует получаемую строку в одну из нужных кодировок и автоматизировать отправку сообщений на сервер с помощью netcat
, возможно написать небольшую страничку, чтобы любой желающий мог через интернет отправить на Люкс своё сообщение…
▍ Постамбула
Но зачем?..
Если опустить общий стиль повествования, постоянные обращения к читателю и множество не подкреплённых источниками заявлений, самый большой допущенный автором академический промах — в самом начале работы не была обозначена её цель. А без цели — не ясно, к какому результату мы должны были прийти.
К счастью для нас, текст не претендует на академичность, процесс был довольно увлекательным, а вынесенный опыт — ценным. Пусть даже практического применения полученный комплекс пока не нашёл.
И всё же, где лучше остановиться?
Здесь. Стоило того!
Присоединяйтесь к нам в следующий раз, мы будем играть в «Позвоните Кузе» с помощью дискового телефона.
P.S.
Черновик этой статьи был написан осенью 2019 года по мотивам событий, произошедших полугодом ранее. Черновик в основном остался неизменным, однако часть фотоматериалов была утеряна. Для восстановления недостающих фотографий автор полностью воссоздал описанный в статье стенд, столкнувшись с рядом новых проблем: радиомодуль пейджера пришёл в негодность, модуль gr-mixalot не был обновлён для совместимости с актуальной версией GNURadio, а программатор был утерян. Не подвёл только Френк, за что ему большая благодарность и бережное ТО.
Отдельной благодарности заслуживает Александр, оперативно подготовивший два новых радиомодуля для Люкса.
Как работали пейджеры?
Если несколько упростить, пейджер — это миниатюрный радиоприемник. Чтобы отправить сообщение, вы звоните в пейджинговую компанию и диктуете оператору текст и номер получателя. Оператор пересылает сообщение с компьютера на пейджинг-консоль, чтобы кодировать его, а затем оно отправляется на радиопередатчик. Через короткий промежуток времени — от пятнадцати секунд до пяти минут — сообщение будет у адресата.
С момента возникновения идеи пейджинга до его массового распространения прошло не менее шестидесяти лет.
«В англоязычном Интернете пионером этой технологии чаще всего называют американца Шермана Амсдена, основавшего в 1924 году компанию Doctor’s Telephone Service („Телефонная служба врачей“). Когда пациент не мог дозвониться до врача, его перенаправляли на оператора, чтобы он оставил сообщение. Врачу нужно было периодически находить стационарный телефон, звонить оператору и узнавать, не оставлял ли кто-нибудь сообщение для него. Бизнес Амсдена расцвел, когда его услугами стали пользоваться ремонтные службы, детективные агентства и другие организации, связанные с чрезвычайными ситуациями. Это был своего рода автоответчик, только его роль выполнял живой оператор», — рассказывает Нина Борисова, кандидат технических наук и заместитель директора по науке и технике Центрального музея связи имени А.С. Попова.
Постоянно звонить оператору было неудобно, поэтому через некоторое время придумали другую систему. Желающие воспользоваться этой услугой приобретали небольшие радиоприемники, каждому из которых присваивался индивидуальный трехзначный код. По этим приемникам передавали перечни номеров, на которые приходили сообщения, и, услышав свой, можно было звонить оператору. Чтобы реализовать в США такую незамысловатую, на первый взгляд, технологию, потребовалось более десяти лет. Первый вызов, осуществленный в соответствии с замыслом Амсдена, состоялся 15 октября 1950 года. Как отмечает Нина Борисова, реализацию его идеи затягивали бюрократические процедуры — нужно было получить от Федеральной комиссии по связи разрешение на использование радиочастоты. Частотные ресурсы были и остаются большим дефицитом в любой стране.
Следующий шаг на пути к пейджинговой связи осуществил американский инженер Эл Гросс, запатентовавший способ отправки радиосигнала на индивидуальное приемное устройство. Компания Motorola объединила это изобретение с концепцией Амсдена, подразумевавшей групповое оповещение радиоприемников.
В 1959 году Motorola выпустила новое устройство, названное пейджером.
Первой успешной моделью пейджера стал Pageboy I. Он не имел дисплея и не мог хранить сообщения, а только оповещал абонента о вызове.
Какими были первые пейджеры в России
По наиболее распространенной версии, впервые пейджинговая сеть появилась в России перед Олимпиадой 1980-го. Ее развернула английская компания Multitone — с помощью пейджеров решались в основном организационные задачи. Например, по ним передавались команды исполнителям торжеств.
Для массового использования пейджинговая сеть стала доступной у нас только в 1993 году. К слову, сотовая связь в России появилась на два года раньше.
Пейджинг, как и мобильная сеть, прошел в своем развитии несколько поколений. Однако в случае сотовой связи технологии следующего поколения всякий раз заменяли технологии предыдущего. Пейджинговая связь, совершенствуясь, одновременно использовала технику разных поколений.
Тоновые пейджеры сигнализировали, что абоненту пора позвонить оператору и запросить сообщение.
Затем они обзавелись дисплеями, куда выводились небольшие сообщения из цифр, соответствующих стандартным фразам.
Среди них были, например, такие:
07734 — «Привет»
424 — «Перезвони мне»
5012124 — «Извини»
177-0009 — «Удачи»
17-335 — «Увидимся»
Более сложные модели знали и алфавит. Сначала пейджеры оснащались однострочными дисплеями, а затем двух- и трехстрочными. Самые поздние могли сами отправить подтверждение, что сообщение получено.
К тому времени, когда пейджеры пришли в СССР, во многих странах мира их уже широко использовали, а производством устройств занимались множество фирм. В числе первых на пейджинговый рынок нашей страны пришли NEC и Supervisor. А наиболее продаваемой моделью стала Motorola Advisor — в 1998 году на нее приходилось больше половины всех продаж московских фирм-операторов.
Новомодные гаджеты моментально стали символом новых русских — кроме них, мало кто мог позволить себе купить само устройство и ежемесячно оплачивать связь. В 1995 году «РадиоПэйдж» предлагал простейшие однострочные цифровые пейджеры NEC за $170, а месячная абонентская плата варьировалась от $39 до $55. «Вессо-Линк» простыми моделями не торговал, в их ассортименте была только Motorola Advisor за $300, связь же стоила $45 в месяц. Средняя зарплата в России в 1995 году составляла около $100.
«В конце 1990-х никто в нашей стране не мог представить, что пейджинг скоро умрет. Он был доступен только обеспеченным людям, но сотовая связь была еще дороже.
Первые мобильные телефоны стоили около $2500, еще $1500 нужно было заплатить в качестве первого взноса оператору и еще $500 брали за подключение к сети. Абонентская плата первого тарифного плана МТС составляла $60. В 1999-м телефоны стоили уже от $119 до $840.
Пользователи сотовых телефонов платили не только за исходящие звонки, но и за входящие. Поэтому многие покупали и мобильник, который использовали для исходящих звонков, и пейджер — чтобы принимать сообщения. Однако стремительное развитие техники в начале 2000-х позволило периодически снижать стоимость сотовых телефонов и услуг мобильной связи. Это стало причиной постепенного оттока клиентов из пейджинговых сетей. Например, согласно данным Госкомстата, за первые девять месяцев 2002 года количество абонентов пейджинговых операторов в Санкт-Петербурге снизилось на 35%. На полное вытеснение пейджеров с телекоммуникационного рынка России ушло еще несколько лет», — говорит Нина Борисова.
Как работали операторы пейджинговой связи
Вместе с пейджерами в России появилась новая профессия — оператор связи. От претендентов на такую должность требовалась скорость печати от 200 символов в минуту и безупречная грамотность, приветствовалось знание английского. Мария Королева, работавшая оператором в самой большой петербургской пейджинговой компании — «Неда-пейджинг», рассказывает, что в 1996 году там работало около восьмидесяти сотрудников. Каждый из них сначала проходил теоретическое обучение, затем работал в паре с другими операторами и только потом в одиночку.
В небольших городах дело обстояло иначе. Штат сотрудников был на порядок меньше, и кандидаты после успешного собеседования сразу приступали к работе. Операторами часто работали студентки — сменный график было удобно совмещать с учебой. Так, например, было у Юлии Фирсановой: в 2001 году она, будучи студенткой второго курса, устроилась в компанию «Мобил ТелеКом» в Великих Луках.
«Пейджеры были новым веянием, поэтому работа казалась очень престижной, — вспоминает Юлия. — Кроме этого, наша семья жила небогато, и деньги были не лишними. Могу точно сказать, что получала больше, чем моя мать, которая двадцать лет проработала на заводе. Смены длились по 12 часов: в первые сутки днем, во вторые ночью, потом шли два выходных. Самым сложным для меня было отработать ночные часы — с 03:00 до 07:00, безумно хотелось спать. Был даже случай, когда я положила голову на стол и уснула. Зазвонил телефон, в трубку что-то говорят, а я не понимаю и только мычу в ответ. Вдруг на том конце провода как заорут: „Да проснитесь уже наконец!“ Я вроде взбодрилась и даже начала печатать, но меня опять вырубило. А когда проснулась, на экране компьютера был бессвязный набор букв.
Мне нравилось, что у нас работали в основном студенты, мы все были примерно одного возраста. Пользователи в своей массе тоже были из молодежи.
Через пейджер договаривались о встречах, просили перезвонить. Ругались, кстати, тоже через пейджер. Поссорится какая-нибудь парочка, и давай претензии друг другу высказывать целый вечер, а то и полночи.
Это сейчас мы можем эсэмэсками перекидываться, если не хотим разговаривать друг с другом, а тогда всё это проходило через оператора. У нас были даже свои любимчики, которым мы симпатизировали и сопереживали».
За смену через одного оператора проходило примерно шестьсот сообщений, зачастую очень личных. Обсценную лексику не принимала к отправке ни одна компания. В «Мобил ТелеКом», где работала Юлия, было запрещено передавать адресатам любые оскорбительные слова и ругательства. В «Вессо-линк» к запретной лексике приравнивались звукоподражания бранным словам (к сожалению, не уточняется, что это значит). В «РадиоПейдж» нельзя было отправлять только мат — бранные слова допускались, но с условием, что в конце послания будет стоять подпись отправителя.
«Иногда хихикающие дети пытались отправить через нас завуалированные оскорбления вроде мир, дверь, мяч, но такое мы тоже не передавали», — вспоминает Марина Янелюнас, бывший оператор норильского отделения «Мобил ТелеКом». Марина приступила к работе в 2002 году — тогда пейджеры были уже обыденностью, а не предметом роскоши. Зарплаты операторов были скромными, а иногда совсем не выплачивались.
«Подруга предложила сходить на собеседование, но предупредила, что платят немного — примерно восемь тысяч, — рассказывает Марина. — Собеседование проходило прямо в операторской, где обстановка была настолько непринужденной, что с виду напоминала не работу, а посиделки.
Позже выяснилось, что на самом деле операторам платили 5 тысяч рублей и с очень длительными задержками. Люди удивлялись, что я пришла к ним устраиваться.
Но для меня высокая зарплата не играла принципиальной роли: я на тот момент училась, жила с мамой и считала заработок скорее бонусом. Из оборудования у нас были компьютеры с клавиатурами, у которых западали кнопки, два простых советских телефона и один „настоящий операторский“, правда, кнопка принятия звонка на нем была сломана, так что я могла случайно сбросить вызов.
В программе, где мы печатали сообщения, было предусмотрено около сорока горячих клавиш — сочетаний на клавиатуре, которые автоматически вставляли ту или иную фразу. Вы не поверите, но люди передавали друг другу настолько одинаковые послания, что иногда совсем не требовалось печатать, а достаточно было нажать несколько горячих клавиш.
Большая часть сообщений была посвящена каким-то бытовым вопросам, но несколько случаев мне запомнились. Например, одному из наших операторов позвонила девочка, и, рыдая взахлеб, пыталась что-то сказать. Моя коллега ее долго успокаивала. Выяснилось, что девочка беременна и пыталась отправить об этом сообщение. Это был очень большой стресс!
Я была оператором полгода, а потом влюбилась и улетела в Питер. За всё время, что я работала, мне ни разу не выплатили зарплату. Я оставила доверенность на маму, чтобы она получила деньги за меня. Мама однажды пришла в офис, и ей выплатили сразу десять тысяч. Но когда она снова пришла за оставшейся суммой, в нашей операторской не было ничего, кроме голых стен и торчащих проводов. А потом мама увидела фотографию нашего начальника по местным новостям — он был объявлен в розыск».
Пепси, пейджер, MTV
За свой недолгий век в России пейджер успел побывать и символом новых русских, и самым модным гаджетом среди подростков. Поколение «П» было еще и поколением пейджеров. В 2000 году Pepsi выпустила рекламу, в которой Децл призывал «подключаться к самым-самым».
К началу третьего тысячелетия пейджеры пользовались в нашей стране уже массовым спросом. Иногда благодаря этим девайсам даже создавались небольшие сообщества — у некоторых компаний была услуга групповых чатов.
«У самарского оператора „АДВК“ был тариф „Школьный“ — на него можно было получить скидку, если принести в офис дневник и показать оценки. Тариф давал возможность общаться в чате, — рассказывает Роман Разоренов, активный пользователь пейджинговой связи в начале нулевых. — Чат включался для всех пользователей конкретного тарифа и работал всего час в сутки — с 18:00 до 19:00. В этот промежуток школьники звонили в пейджинговую компанию и оставляли сообщения, начиная с фразы „Для абонента ЧАТ“. Оператор отправлял текст всем пользователям тарифа. Можно было подписываться своим именем или ником. Можно было отправить в чат сообщение для конкретного пользователя.
Грубо говоря, представьте пост во „ВКонтакте“, под которым ведется жаркая дискуссия. Вот весь этот срач в комментах похож на тот чат. Разница только в том, что комментарии доступны только час, и, чтобы их оставить, надо позвонить оператору. К тому же был запрещен мат.
Участники чата с разных концов города каждое воскресенье собирались на встречи у фонтана, нас называли „тусовкой биперов“. Со многими ребятами мы до сих пор общаемся».
Алексей, пользователь петербургской сети пейджинга в нулевых, рассказывает, что эпоху пейджеров нельзя представить без фрикеров — так называли взломщиков телефонных сетей и голосовых ящиков:
«Пейджеры использовались не только для передачи сообщений, но и как голосовые почтовые ящики. В Питере номера этих ящиков начинались на 108, они были защищены четырехзначным паролем. Зачастую — не очень сложным, поэтому их не составляло труда взломать. Хозяева быстро просекали эту тему, меняли пароли или блокировали номера. Но было очень много корпоративных номеров — за ними следили не так внимательно. Я, правда, быстро бросил это дело. Тем более что потом в уголовном кодексе появилась статья за это».
Как пейджеры пытались выжить — и почему все-таки замолчали
Мобильная связь удешевлялась и получала всё большее распространение — пейджинговые компании должны были как-то ответить на это. К примеру, в 1999 году они начали предоставлять бесплатные информационные услуги.
С помощью пейджера можно было узнать прогноз погоды, курсы валют, анонсы городских театров, галерей, баров и дискотек, ТВ-программу, новости политики и спорта.
Этого, конечно, было мало.
В 2001 году в Петербурге семь самых крупных пейджинговых компаний объединились, чтобы проводить маркетинговые и рекламные мероприятия — например, фестивали, где они рассказывали о преимуществах пейджеров перед мобильными телефонами. В СМИ они заявляли об этом напрямую: объединение имеет своей целью «спасти суть пейджинга как такового от агрессивных распространителей мобильной связи». Но более выгодные цены, чем у сотовых операторов, они предложить не смогли.
Чтобы выжить, пейджинговые компании меняли профиль. Например, компания «Мегапейдж» запустила спутниковую охранную систему для автомобилей.
«Это была радиосистема, которая покрывала лучами Москву и небольшую часть Московской области, — рассказывает Таймур Двидар, бывший руководитель компании „Мегапейдж“. — Технологии были похожи на те, что используют военные. В автомобиль ставились громоздкие абонентские терминалы. Местоположение машины определялось методом триангуляции, соединением трех лучей в одной точке. В случае угона можно было посмотреть на карте, где находится автомобиль. На пульт диспетчера приходил сигнал о том, что машина вскрыта или ее угнали. Диспетчер отправлял обратный сигнал для выключения мотора этой машины, к ней высылалась группа реагирования и милиция.
Применение радиотехнологии, использующей более мощный — по сравнению с сотовой связью — сигнал, повышало эффективность охранной сигнализации. Заглушить ее было непросто — требовалась специальная военная техника.
Иногда угонщики ездили на дело на легковых машинах, весь багажник которых был заставлен мощным оборудованием, способным заглушить радиосигнал. Это оборудование запускали при сопровождении угнанной машины, чтобы нельзя было отследить ее местонахождение. После нескольких таких угонов человек, везущий глушилку, мог серьезно заболеть.
Теперь появились цифровые технологии, и надобность в инфраструктуре пейджинговой связи отпала. В 2013 году я принял решение больше не содержать это дорогостоящее оборудование.
Если представить себе, что, например, началась война и неприятель вывел из строя нашу мобильную сеть, то более дешевого способа передачи текстовых оповещений, чем пейджинговая связь, не будет.
Можно передавать по спутнику, но это очень дорого».
«Мегапейдж» также сотрудничала с транспортными компаниями, создав систему диспетчеризации. Электронные табло на остановках в Москве, показывающие, через сколько минут приедет автобус, сделаны именно этой фирмой.
Так что можно сказать, что пейджинговые системы не умерли, а радикально трансформировались.
Хэллоуин уже прошёл, но мистический туман пока даже не собирается развеиваться. В первой части своего повествования я рассказывал, как можно проверить и подготовить к работе этих исторических «франкенштейнов», сегодня же настал черёд их пробуждения. Этим темным-темным осенним вечером в темном-темном углу квартиры мы будем творить очень темные дела: сегодня мы установим спиритический сеанс связи с «душами» гаджетов, которые давно спят вечным сном…
Дисклеймер
Как вы помните из предыдущей части, сообщения на пейджеры доставляются с помощью радиоволн. Частоты пейджеров зачастую лежат вне безлицензионных диапазонов, поэтому повторение описанных в этой статье инструкций может привести к нарушению законодательства и созданию помех в работе различных служб. Внимательно проверьте свой пейджер и список разрешенных для безлицензионного вещания частот в вашем регионе и никогда не отправляйте сообщения вне их пределов. Наилучшим выбором для экспериментов являются синтезаторные пейджеры, частота приема у которых переведена на диапазон 433 МГц (или любой другой, разрешенный в вашем регионе).
В предыдущей части
Мы рассматривали пейджер и установили, что для его работы нам нужно знать следующие его характеристики:
- Частоту приемника
- CAP код
- Скорость передачи данных
- Режим инверсии
Сегодня мы рассмотрим, как это все связывается воедино и используется на практике. В рамках своих экспериментов я реализовал простой, но в то же время полноценно работающий и обладающий кучей возможностей аппаратно-программный комплекс для передачи сообщений на пейджеры, сделанный на базе Arduino. Исходники и инструкции доступны на GitHub и распространяются под MIT лицензией. Логически сегодняшний пост будет разбит на 2 части: первая описывает кодировку сообщений, вторая — их передачу. Для начала рассмотрим формат, в котором пейджеры принимают сообщения.
Протокол POCSAG
Появился достаточно давно и устарел практически сразу после своего выхода, однако тем не менее активно использовался в пейджинге, а где-то на местах используется до сих пор. Существовали и более продвинутые протоколы обмена, например, FLEX, но пейджеров с их поддержкой было выпущено немного, и особого распространения он не получил. На POCSAG имеется довольно подробная документация, однако официальные стандарты в некоторых местах плавают. Итак, сообщение на пейджер имеет следующий формат:
Оно представляет собой «матрёшку» из различных структур данных:
- Преамбулы длиной не менее 576 бит, представляющей собой просто последовательность нулей и единиц (101010…)
- Одного или более пакетов (батчей) длиной 544 бита каждый
Преамбула выполняет важную роль: она «будит» приемники пейджеров, которые затем по ней синхронизируются. Физическое кодирование в POCSAG осуществляется с помощью обычного RZ (Return To Zero) кода, поэтому для корректного приема сообщений очень важно совпадение таймингов приемника и передатчика.
Пакеты несут в себе полезную информацию и начинаются с особого слова FSC (Frame Synchronization Code) длиной 32 бит, которое позволяет пейджеру различать один пакет от другого и всегда имеет значение 0x7CD214D8. Далее следует тело пакета, которое несет в себе 8 фреймов длиной по 64 бита, а каждый фрейм в свою очередь состоит из двух кодовых слов по 32 бита. Кодовые слова могут быть трех видов: пустыми (idle), адресными и словами сообщения:
Idle — самый простой вариант, в таком слове просто передается константа 0x7A89C197 по аналогии FSC, сделано это, как вы догадываетесь, также для синхронизации, ибо передавать просто 32 нуля или 32 единицы в пустом кодовом слове чревато рассинхронизацией или вклиниванием помех.
Адресное слово состоит из следующих частей:
- Первый бит — всегда нулевой
- 18 бит адреса — сюда пишется «кастрированный» CAP код
- 2 функциональных бита — задают источник (0, 1, 2, 3)
- 10 бит БЧХ кода — служит для обнаружения и исправления ошибок
- Последний бит — бит контроля четности
POCSAG имеет хитрый способ кодирования адреса, который заключается в том, что у указанного CAP кода длиной 21 бит отрезаются младшие 3 бита, и их значение интерпретируется как номер фрейма (от 0 до 7), который будет в данном сообщении первым. Оставшиеся 18 бит записываются в поле Address Bits у адресного слова, которое идет первым словом в выбранном фрейме. Сделано это было для экономии батареек пейджера: зная свои CAP коды, он после получения преамбулы опять засыпает и просыпается только для прослушивания конкретных фреймов, в которых могут быть его адреса, а не слушает все сообщение до конца.
Функциональные биты (Function или Source bits) адресного слова изначально служили для разграничения типов сообщений (0 — числовое, 1, 2 — тональное, 3 — алфавитно-числовое), но затем, с распространением алфавитно-числовых пейджеров, это поле «припахали» для дополнительной адресации, которая позволяла настраивать дополнительные варианты оповещения на одном и том же CAP коде. Например, можно было настроить на пейджере источник 0 в качестве важного (семья, работа) с громким оповещением, источник 1, 2, 3 — без оповещения (для всякого спама типа прогнозов погоды).
Кодовых слов сообщения может быть несколько, либо они могут отсутствовать вообще (например, у тональных сообщений есть только адресное). Отличается такое слово от адресного единицей в первом бите и 20 битным полем для символов сообщения вместо адресных и функциональных бит. Изначально POCSAG проектировался для передачи числовых сообщений, каждый символ которых кодируется 4 битами:
При таком раскладе в 20 битах кодового слова можно уместить ровно 5 символов. В случае, если сообщение длиннее, — кодовые слова сообщений продолжаются в следующем фрейме (подряд, без дублирования адресного), а если достигнут конец последнего фрейма — к сообщению добавляется новый пакет, и оставшиеся символы кодируются в его фреймах.
Но для передачи алфавитно-числовых сообщений 4 бит на символ явно недостаточно, поэтому алфавит расширили до 7 бит на символ. Это привело к тому, что на 20 бит стало приходиться нечетное число символов, поэтому они продляются в следующих кодовых словах фреймов и пакетов по аналогии с числовыми сообщениями, но информации текстом может передаваться несколько меньше. В зависимости от CAP кода (который влияет на номер стартового фрейма), в одном пакете сообщения POCSAG можно разместить от 2 до 42 символов текста. Сами спецификации протокола минимальный и максимальный размер сообщения в символах никак не ограничивают, но общепринятыми являются границы от 3х до 40 (или реже 80) символов, минимальная граница обуславливается невозможностью отличить алфавитно-числовое сообщение длиной 1-2 символа от просто числового, а максимальная чисто практическими соображениями. Реальные пейджеры могут принимать сообщения и по 512 символов, но с очень большой долей вероятности такие сообщения не будут получены полностью из-за помех.
Использование 7 бит на символ для алфавитно-числовых сообщений рождает еще одну проблему: теоретически 7 бит могут кодировать лишь 128 вариантов символов, если вычесть из них кучу служебных, всевозможные знаки препинания и скобочки, то окажется, что на символы алфавита места практически не остается. Латинский алфавит кодируется без проблем:
Кириллица, в целом, тоже, но придется пожертвовать некоторыми дополнительными символами:
Проблемы начинаются, когда пытаются «и съесть и сесть», объединив в одном алфавите и латиницу, и кириллицу. В таком случае жертвовать приходится не только дополнительными символами, но еще и регистром букв:
Ситуацию усложняет то, что некоторые производители пытались тянуть одеяло на себя, что порождало новые кодировки, несовместимые с предыдущими:
Как вы понимаете, жизнь пейджинговых операторов в СНГ была не сладкой: помимо зоопарка железок им приходилось поддерживать зоопарк различных кодировок, чтобы сообщения клиентам приходили в корректном виде.
Реализация энкодера
Энкодеров POCSAG существует множество, я решил увеличить это число на 1 и написал свой. Он состоит из файлов PocsagEncoder.h и PocsagEncoder.cpp и умеет следующее:
- Формировать сообщения всех трех типов (тональные, числовые и алфавитно-числовые)
- Поддерживает все 4 перечисленные выше варианта кодировок
- Сам конвертирует регистр латинских/кириллических символов в поддерживаемый текущей кодировкой
- Неподдерживаемые кодировкой символы заменяются на «?» или пробел (в числовых сообщениях)
Пример использования и сам скетч для заливки в Arduino — PocsagTranscoder.ino, его мы запустим и рассмотрим чуть позже. Он предназначен для Arduino Nano, но должен запуститься и на любых других совместимых контроллерах, лишь бы хватило памяти. Дефолтные настройки позволяют передавать сообщения длиной от 185 до 225 алфавитных символов.
Передающая часть
Передача POCSAG сообщений осуществляется с помощью FSK модуляции, поэтому нам понадобится специальный радиопередатчик, который эту модуляцию поддерживает. Для своих экспериментов я выбрал RF7021SE:
Это миниатюрный приемопередатчик на базе ADF7021, который поддерживает и нужную модуляцию, и возможность перестройки частоты в очень широких пределах (по умолчанию 400 — 500 МГц и 800 — 950 МГц) с максимальной мощностью излучения до 10 мВт:
Согласно даташиту на ADF7021, данный модуль можно заставить работать также на частотах 80 — 650 МГц путем добавления внешней индуктивности, которая подбирается эмпирическим путем по диаграмме (частоты ниже 200 МГц получаются делением на 2):
По ней можно предположить, что для наиболее популярных в СНГ частот пейджеров (150 — 170МГц) должна подойти катушка индуктивностью около 15 нГн. На модуле RF7021SE для нее любезно предусмотрено посадочное место типоразмера 0402:
Для работы с этим модулем я написал небольшой драйвер (Rf7021.h, Rf7021.cpp), который позволяет отправлять сообщения с FSK модуляцией на заданной частоте с заданной скоростью и девиацией. Вообще ADF7021 — это именно приемопередатчик, который позволяет также принимать сообщения, но работу с приемной частью я не реализовывал, т.к. она нас в данном случае не интересует.
У данного модуля имеется один небольшой недостаток: по умолчанию на нем установлен TCXO частотой 19.68 МГц, и для работы с пейджерами он не совсем подходит (сообщения будут приходить поврежденными или не будут доходить вовсе). Поэтому по-хорошему стоит заменить его либо на 12.288 МГц, либо на 14.7456 МГц. В наличии я нашел только первый, причем типоразмера только 5032 (родной TCXO — 3025):
Но с некоторыми ухищрениями его можно разместить на плате модуля. Первыми делом выпаиваем родной генератор:
Правые контакты нового генератора аккуратно запаиваем на площадки, при этом левые не достают до своих ответных площадок и остаются висеть на воздухе — это нормально. Из левых контактов нам требуется подключить лишь верхний (VCC), сделать это можно с помощью перемычки к ближайшему конденсатору:
Крупнее:
К выбору и установке генератора нужно подойти со всей ответственностью, ибо это одна из наиболее важных частей, из-за которой могут быть проблемы в дальнейшем.
Подготовка и подключение Arduino
ADF7021 работает от 3.3В, причем 5V-tolerance не заявлено ни для него, ни для модуля RF7021SE. Можно использовать конвертеры 5-3.3В, а можно просто понизить напряжение работы самой ардуины, сделать это достаточно легко:
Первым делом нам нужно выпаять диод, затем заменить AMS1117-5.0 на AMS1117-3.3 и кинуть пару перемычек. В зависимости от версии клона платы могут отличаться визуально, но общий принцип остается тем же. Некоторые советуют с понижением напряжения понизить и частоту Атмеги до 8 МГц, но как показывает практика, и на 16 МГц все работает стабильно.
Далее, убедившись, что Arduino работает, подключаем к ней модуль передатчика по схеме:
Выглядит страшно, но на деле получается компактная связка, которую при желании можно уместить в спичечном коробке:
Теперь можно залить скетч PocsagTranscoder.ino и проверить работоспособность передатчика, для этого нам понадобится как минимум рация, а лучше SDR приемник, пусть даже самый дешевый. Загружаем скетч в ардуину и открываем консоль, если все подключено верно — в нее должны быть выведены сведения о текущей ревизии чипа ADF7021, его текущая температура (весьма грубая) и напряжение питания:
Проверим работоспособность передатчика, для этого настраиваем рацию/SDR на частоту 433.92 МГц, аналогично поступаем с нашим передатчиком, введя в консоли f 433920000 и нажав Enter:
Теперь вводим в консоль x или X (английская раскладка), жмем Enter и слушаем рацию/смотрим на водопад SDR. Так запускается режим тестирования передатчика, при котором он в течение 10 секунд передает последовательность 10101010… на заданной частоте, девиации и скорости. Если все было сделано верно и ничего не упущено, то FSK сигнал не заставит себя ждать:
Если сигнала нет и консоль не реагирует — проверьте правильность и надежность подключения Arduino к передатчику, а также правильность установки генератора. Если консоль откликается — проверьте правильность задания частоты генератора в константе RF_TCXO, по умолчанию она указана для 12.288 МГц.
Тренируемся на кошках
Взаимодействие с ардуиной осуществляется через консоль с помощью ввода специальных команд, их полный список следующий:
Команды можно комбинировать в одну строку, например, команда:
e 3 f 434000000 c 23821 r 512 m Добро пожаловать в 2021!
Отправит сообщение «Добро пожаловать в 2021!» в кириллической кодировке Motorola Advisor на частоте 434 МГц со скоростью 512 бит/с на CAP код 23821:
На водопаде SDR отправляемые сообщения выглядят характерно (и не менее характерно звучат на слух), тон и длительность передачи сильно зависят от установленной скорости. Так выглядит сообщение «Привет» на скорости 512:
В принципе имеющаяся информация уже позволяет отправлять сообщения на пейджер, однако по различным причинам это удается не всегда. Чтобы отсеять сомнения в работоспособности самопального передатчика, можно воспользоваться программой PDW:
- Подключаем SDR приемник к смартфону, запускаем водопад и настраиваемся на нужную частоту
- Включаем WFM демодуляцию
- С помощью AUX кабеля подключаем смартфон к линейному входу компьютера
- Запускаем PDW и пытаемся слать сообщения на пейджер (любой CAP код, но кодировка строго e 0 — другие PDW не поддерживает)
- Регулировкой громкости смартфона добиваемся, чтобы индикатор сигнала в правом верхнем углу PDW стал зеленым
Если все сделано верно, и передатчик исправно работает, то в окне PDW начнут выходить получаемые сообщения. Можно поиграть как со скоростью, так и с типом сообщений:
Чаще всего в проблемах получения сообщений виноват сам пейджер, т.е. причина лежит где-то в его расстроенном приемнике. Возможность настройки частоты модуля передатчика в широких пределах позволяет частично нивелировать проблемы с приемником пейджера методом подбора частоты, на которой у пейджера наилучшая чувствительность. Для этого разносим пейджер и передатчик как можно дальше и начинаем последовательно отправлять сообщения, сдвигая каждый раз частоту на несколько КГц, с помощью небольшой модификации скетча этот процесс можно даже автоматизировать. Далее внимательно смотрим на пейджер, о неминуемо надвигающемся успехе обычно сигнализирует появление индикатора нахождения в зоне приема (или исчезновение индикатора его отсутствия — зависит от модели):
Прием сообщений на пейджер
По моим наблюдениям внешнее состояние пейджера очень хорошо коррелирует с его возможностями приема сообщений. Целые внешне и хранившиеся в домашних условиях пейджеры обычно принимают сообщения сразу без каких-либо проблем:
При наличии полученных сообщений на экране ожидания высвечиваются ярлыки в левом верхнем углу:
Последнее полученное сообщение можно открыть путем нажатия на зеленую кнопку:
По красной кнопке открывается меню доступных действий — здесь можно заблокировать сообщение, добавить в личные или удалить его:
Помимо звуковых и световых оповещений у пейджеров есть вибра, которая на порядки мощнее той, что стоит в современных смартфонах:
В комментарии к первой части скидывали видео древней рекламы пейджеров:
Понятно, что эпатажная Motorola в своем репертуаре, но вибра тут действительно мощь, в больших пейджерах типа Advisor она более низкочастотная и больше похожа на rumble в геймпадах.
Минутка осеннего обострения
Мы живем в мире, в котором сначала телефоны, а затем смартфоны вытеснили не только пейджеры, но и десятки других видов гаджетов. Никто не знает, каким был бы мир сейчас, не изобрети кучка инженеров SMS 1984 году. Предлагаю пофантазировать, каким мог бы быть современный мир, если бы человечество так и не додумалось добавить в телефон функцию обмена короткими сообщениями. Заранее предупреждаю, что представленные сообщения являются выдумкой и не имеют отношения к реальности, а все совпадения случайны и носят шуточный характер)
Первое, что приходит на ум — на наши пейджеры приходили бы уведомления из всевозможных социальных сетей:
Оповещения такси и каршерингов — почему бы и нет?
Банки, платежные системы, коды подтверждения — добро пожаловать. Единственная проблема в незащищенности передаваемых данных, но в наше время, я уверен, выкатили бы шифрованную версию POCSAG, позволяющую слать такое без опаски:
Сообщения служб доставок туда же:
Практически полная бесплатность отправки широковещательных сообщений — мечта всех отделов SMM и инфоцыган любой масти:
Легкость самостоятельной реализации доставки сообщений и сливы баз данных клиентов были бы очень на руку всевозможным спамерам:
А широковещательные локальные рассылки спама появились бы гораздо раньше:
Итог
На примере пейджеров очень четко прослеживается инфляция технологий. То, что 30 лет назад было верхом инженерной мысли, сегодня можно воспроизвести в домашних условиях на коленке с использованием недорогих компонентов. Пока не до конца ясно, повторят ли современные технологии судьбу пейджеров спустя еще 30 лет, но одно я знаю точно: изучать их в 2051 будет не менее интересно, чем пейджеры сегодня)
Как отправить сообщение на пейджер
Первый пейджер был выпущен компанией Моторола в 1956 году, и даже в нашу эру мобильных телефонов это средство связи является актуальным в определенных кругах. Ими пользуются пожарные, врачи, служащие сферы обслуживания и другие подобные организации. Радиус действия сигнала пейджера – до 100 км, работает только на прием. По сути это радиоприемник, преобразовывающий сигналы в цифровой код и выводящий текст на дисплей. Он значительно дешевле мобильного телефона и удобен в случаях, когда двухсторонняя связь необязательна.
Инструкция
Наберите номер телефона оператора пейджинговой связи для отправки сообщения на пейджер. Для каждой сети, как и в случае с мобильной связью, предусмотрен определенный номер оператора. Также сообщение может быть отправлено из удаленных терминалов, других пейджинговых центров либо из почтовой службы Internet. В этом случае коммутация абонента на соответствующие серверы будет осуществлена автоматически.
Сообщите оператору номер пейджера получателя или название абонента в сети (имя, фамилия/никнейм). Каждому пейджеру присваивается определенный код (номер), служащий своеобразным адресом, по которому информация попадает к абоненту. Оператор пейджинговой связи, в свою очередь, передает сообщение в пейджинговую сеть по радиоканалу и указывает этот индивидуальный код. Так что ошибка адресом или неполучение абонентом сообщения практически исключена.
Продиктуйте сообщение. Длина сообщения может составлять несколько сотен символов (примерно до 400 знаков или 4-5 страниц печатного текста), включая буквы и цифры. Сообщения могут приниматься как в текстовом, так и в цифровом формате.
Удостоверьтесь у оператора о правильности полученного сообщения и персонального номера абонента. Если все верно, сообщение будет доставлено получателю в течение нескольких секунд. Такая оперативность весьма удобна в случаях аварии на электро-, газо- или нефтепроводах, при вызове пожарной бригады или службы скорой помощи, для оповещения жителей прибрежной местности о надвигающемся шторме или же просто при отсутствии телефона на даче или вне населенного пункта. Массовые отправки сообщений удобны абонентам для получения информации о данных купли-продажи валюты, авиа и ж/д справок, сведений о телефонах и адресах, справок – как проехать к нужному месту по городу (GPRS) и т.д.
Войти на сайт
или
Забыли пароль?
Еще не зарегистрированы?
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.
2022. Количество активных SIM-карт превзошло население планеты семь лет назад. Вовсю идёт внедрение мобильных сетей пятого поколения, невероятно быстрых и в то же время доступных на самом широком спектре устройств — от автомобилей до носков. Искать парные носки скоро можно будет через интернет, представляете?
Нет лучшего времени, чтобы купить свой первый пейджер.
▍ Преамбула
Основной показатель крутости пейджера (а, следовательно, и его владельца) — количество строк сообщения, которые он мог вместить экран за раз. Однострочные пейджеры были самыми бюджетными, двухстрочные модели представляли средний уровень, а четырёхстрочные считались самым мажорным вариантом.
Philips Messenger Lux — возможно, единственный пейджер с восьмистрочным дисплеем. С подсветкой! Один этот факт делает его самым люксовым пейджером, который когда-либо существовал.
Кроме дисплея, Messenger Lux отличался внушительной памятью для сообщений: до 22000 символов в 99 сообщениях. Остальные функции стандартны: уведомление звуковым сигналом, вибрацией и/или светодиодом. Восемь рингтонов. Часы с шестью настраиваемыми будильниками. Работает от двух батареек AAA.
Есть, однако, существенная проблема: в России не осталось публичных пейджинговых операторов. Есть компании, которые предлагают развёртывание пейджинговых сетей в масштабах предприятий (например, системы связи для официантов в ресторанах или энергетиков на АЭС), но не осталось ни одного оператора масштаба города или области, куда можно прийти со своим пейджером, подписать договор и за пару сотен рублей в месяц оперативно получать на него сводку новостей, прогноз погоды и курсы валют.
Значит, если мы хотим пользоваться пейджером как пейджером, а не модными часами — работу оператора придётся брать на себя. От инфраструктуры до контента.
▍ Синхрослово
Чтобы передать сообщение на пейджер, нужно закодировать сообщение согласно протоколу пейджинговой связи POCSAG и передать его в эфир на той частоте, которую слушает пейджер. У операторов связи для этих задач имелись специализированные устройства для кодирования сообщений, профессиональные радиостанции, мощные усилители и специальные антенны, часто — в составе не одного, а целой сети таких комплектов. Но мы не оператор: у нас нет лицензии для вещания на нужных частотах, нет дорогостоящего оборудования и мы живём не в девяностых. Последнее, впрочем, как раз таки хорошо — у нас есть недорогие программно-определяемые радиостанции малой мощности вроде HackRF. Именно такой великолепной штукой мы решим вопрос передачи сообщения в эфир, а само сообщение сформируем на том же компьютере, к которому мы подключим плату.
В теории — всё просто. Практика, как водится, оказалась сложнее и гораздо интереснее. Чтобы воплотить задумку в жизнь — потребовалось собрать в кучу кусочки документации с нескольких старых форумов и заброшенных сайтов, собрать свой собственный программатор и провести настоящее детективное расследование.
Для начала — немного теории и о том, почему задачу не получилось решить с наскока. Протокол POCSAG, которым пользовались большинство операторов и с которым работает большинство пейджеров, определяет: формат кодирования сообщения, три скорости передачи сообщения, идентификацию принимающих устройств и множество тонких особенностей передачи отдельных символов. Однако частоту передачи техническое описание протокола не устанавливает. Это стало первой проблемой — мы не знаем, на какой частоте нужно передавать сообщение. На некоторых пейджерах рабочая частота печаталась на задней крышке, но, к сожалению, не на нашем экземпляре.
Судя по оформлению и вот этой наклеечке — пейджер привезён из Австрии и работал в сети оператора Airpage. Однако, меню пейджера на русском языке, значит, его перепрограммировали под одного из отечественных операторов. А раз его перепрограммировали — изменить могли и другие параметры, например, скорость передачи сообщения и номер пейджера. Это стало второй проблемой: неизвестны скорость, с которой нужно передавать сообщение, а также номер пейджера, которому нужно адресовать сообщение.
Всю эту информацию мы можем получить, подключив пейджер к компьютеру и считав его конфигурацию. Звучит просто? Не совсем.
Производители пейджеров не хотели, чтобы любой владелец с помощью компьютера мог запросто вшить своему пейджеру произвольный номер и таким образом получать чужую переписку. Для программирования требовалось специальное ПО и, что важно — специальный кабель для подключения к специальному разъёму на устройстве. И то и другое можно было получить только напрямую от производителя и только если вы — оператор. Впрочем, ПО со временем в Интернет всё-таки утекло. Осталось только изготовить кабель.
На подавляющем большинстве пейджеров программирование осуществлялось с помощью спрятанных где-то на корпусе контактов. Например, другой популярный топовый пейджер NEC 21A Maxima скрывает разъём для программирования под резиновой заглушкой на торце.
Инженеры Philips решили не портить внешний вид своего люксового пейджера какими-то разъёмами-заглушками и реализовали процедуру программирования пейджера без проводов.
Те, кто учился в школе в начале нулевых, наверняка застали такое замечательное средство социализации, как телефон с ИК-портом. Такой телефон включал его владельца в сеть обмена картинками с приколами, мелодиями и, конечно же, Java-играми. Для этого, однако, передающий и принимающий телефон нужно было обязательно держать окошками ИК-портов друг напротив друга и ни в коем случае не двигать (желательно даже не дышать в их сторону) — передача могла прерваться по совершенно неочевидным причинам.
Примерно тем же способом выполняется и программирование Люкса, но с одним отличием: приёмник и передатчик находятся на разных местах корпуса, а не за одним окошком. С пейджера данные передаются в программатор с помощью того же светодиода, который загорается при получении сообщений. Фотоприёмник же расположен за незаметным ИК-прозрачным окошком на передней панели под дисплеем.
▍ Полезная нагрузка
Знающие и умеющие люди с форума radioscanner.ru уже давно отреверсили схему программатора для нашей модели пейджера. Она не включает в себя некоторых функций оригинального программатора от производителя, но зато проста, собирается из небольшого количества доступных деталей и справляется с нашей задачей.
Ну, зато работает
ПО для программирования пейджера гуглится, оставим этот этап на совести читателя, если он вдруг решит повторить эксперимент автора.
ПО работает на DOS. Берём копию DOS, разворачиваем её на виртуалке, запускаем PROG20
. Располагаем программатор так, чтобы инфракрасный светодиод светил в фотоприёмник пейджера, а фотоприёмник программатора закрепляем прямо над светодиодом пейджера:
Beam me up, Scotty
Попробуем считать конфигурацию. Жмём F4
. Едва заметно начинает мерцать светодиод на программаторе (в ИК-диапазоне он светит гораздо ярче, но мы этого почти не видим), пейджер в ответ подмигивает своим красным индикатором.
Удивительно, но сработало. Мы видим совершенно не такой, как на наклейке, номер в поле Master RIC
, два из четырёх Secondary RIC
для получения общих новостных рассылок, локализация Russian
. На второй странице указана скорость передачи данных — 512 бод. На третьей странице — несущая частота в 161.5 МГц.
Данных достаточно для пробной передачи. Ненадолго отложим пейджер и соберём передающую станцию. У нас есть SDR плата HackRF, на которую мы можем передать сформированный на компьютере сигнал. Мощность передачи небольшая, сигнал не распространится за пределы помещения и не повлияет на другие устройства, работающие на этих частотах (мы же помним про лицензию на вещание, да?).
Для формирования сигнала с сообщением и передачи его на SDR воспользуемся пакетом программ GNUradio. Это крайне гибкий инструмент для работы со всевозможными сигналами, который основан на модульном подходе: чтобы что-то куда-то передать, нужно собрать конвейер из модулей, каждый из которых выполняет ровно одну задачу и передаёт результат своей работы следующему модулю. Умные люди из интернета и здесь нам помогли: для GNURadio уже написан модуль gr-mixalot, который формирует сигнал с произвольным сообщением протокола POCSAG или FLEX, поэтому читателю не придётся вникать во всякие страшные понятия вроде «манипуляция сдвигом частоты без возвращения к нулю» и «двухбитовый код коррекции ошибки» (что, впрочем, не помешает любопытствующим почитать, например, этот материал).
Разработчик модуля gr-mixalot оказался настолько любезен, что включил в комплект с исходниками файл конвейера для GNUradio Companion с примером передачи сообщения через SDR вроде нашего HackRF:
На схеме ничего сложного: создаём и кодируем сообщение блоком Single-Page POCSAG Xmit, преобразуем его вывод в цифровые значения, эти значения частотно модулируем, немного преобразуем сигнал модулями умножения и ресемплинга, и наконец, отправляем в HackRF. Нужно, однако, поправить несколько переменных: номер пейджера (capcode), частоту (pagerfreq) и сообщение (message). Вводим наши данные, включаем HackRF, пейджер кладём поближе к антенне. Всё готово:
Запускаем схему в GNURadio… И ничего не происходит. Ещё один запуск — снова произошло ничего.
Досадно. Давайте разбираться, что не так. Возьмём ещё одну SDR и послушаем, уходит ли вообще сигнал в эфир:
Определённо уходит, частота верная. Поищем возможные проблемы на стороне пейджера.
В документации PROG20 поле частоты описано следующим образом:
Receiver Frequency
Допустимые значения: 0-999.9999999
Назначение параметра: Содержит конкретное значение рабочей частоты пейджера (в МГц). Это поле записывается при изготовлении пейджера и не может быть изменено с помощью программатора.
То есть, программно изменить частоту приёма сообщений невозможно. Вероятность, что Airpage и местный оператор, на которого переключили этот пейджер, вещают на одной и той же частоте — невелика. Из этих двух фактов выдвигаем гипотезу: частоту приёмника изменили аппаратно.
Заглянем внутрь Люкса:
Заметно, что тут поработали паяльником. Обратите внимание на контакты детали с надписью 82.500. Это — кварцевый генератор, который при подаче на него напряжения выдаёт вибрирующий с заранее известной частотой сигнал. Кварц — незаменимый компонент любого устройства, где есть необходимость в точном периодическом сигнале — от наручных часов Монтана до компьютеров всех сортов. Радиоприёмники цифровых сигналов тоже входят в этот спектр.
Очевидно, кварц на нашем экземпляре меняли. Значит, теперь его приёмник слушает другую частоту. Если обратиться к документации на микросхему приёмника — мы найдём процедуру настройки на частоту. Если кратко: с точно той же частотой колеблется контур приёмника и её можно измерить на тестовых точках (золотистые контакты в правом верхнем углу). Тут другая проблема: для измерения такой частоты нужно лабораторное оборудование. Очень дорогое лабораторное оборудование. Осциллограф с полосой пропускания до 1 ГГц стоит примерно как новый автомобиль. Более простой частотомер с подходящими характеристиками стоит на два порядка меньше, но всё ещё неоправданно дорого для единичного применения.
Можно отправить сообщение на каждой из возможных частот, но перебирать их придётся по одной. Приятной особенностью GNURadio Companion является возможность преобразовать конвейер из блоков в код Python. Для нас это означает, что достаточно выполнить файлик .py с нужными параметрами сообщения, номера и частоты, а не править конвейер вручную для каждой следующей частоты. В полученный код можно добавить простой цикл и перебирать частоты им.
В руководстве упоминается полезная функция, которая выводит на экран значок с перечёркнутой антенной, если пейджер не принимает вообще никаких сигналов на своей частоте в течение 30 секунд. В годы активного функционирования сети он был бы индикатором отсутствия покрытия оператора, но сейчас должен отображаться почти постоянно. Включить её можно в том же программаторе.
Соберём пейджер обратно, снова установим его в программатор, запустим PROG20. Изменим параметр Out Of Range
с Disabled
на 30 seconds
, запустим процедуру программирования клавишей F6
. Заморгали лампочки, побежали проценты… И тут — здравствуйте:
Интересно. Попробуем считать текущую рабочую конфигурацию и её же записать. Для верности накроем пейджер с программатором чёрной салфеткой, чтобы избежать влияния других источников света.
Ошибка та же. Появляется где-то на 12% записи новой программы.
Возможно, поможет сброс к заводским настройкам. Есть риск потери хитрых хаков, которые, вероятно, устанавливали в сервисе местного оператора, если таки вообще были.
Сохраним текущую конфигурацию в файл и запустим процедуру сброса. Для применения новых параметров PROG20 перезагружает пейджер в особый режим, в котором пейджер может только принимать команды от программатора и не запускает интерфейс. По идее, пейджер должен перезагрузиться в обычный режим, как только получит корректную программу.
Однако запись программы и в этом режиме обрывается с той же ошибкой, с которой мы уже столкнулись. Пейджер всё ещё ждёт указаний от программатора, но тому не удаётся ничего туда записать.
Самое время остановиться и подвести невесёлый промежуточный итог:
- Приёмник пейджера был аппаратно перенастроен на неизвестную частоту;
- Из-за сбоя записи настроек программатор не может вывести пейджер из режима программирования;
- Пейджер застрял в режиме программирования и не загружается в штатный режим работы, даже если вытащить из него батарейки.
▍ Код коррекции ошибок
Давайте разбираться.
Начнём с самого пейджера. Чтобы привести его в чувство, нужно понять, почему программатору не удаётся записать программу в пейджер. В ветке на Радиосканнере, где нашлась схема программатора, кто-то неодобрительно высказывался о работе программатора на виртуальной машине. «Только голое железо», писали они. DOSBox тоже не годится.
Нам нужен компьютер с разъёмом RS232. Пришло время посетить кладовку.
Из кладовки выжившие возвращаются с великолепным устройством, уже знакомым некоторым читателям. Встречайте: Франкеноут (можно просто Фрэнк):
Собранный из двух половинок разных ноутбуков, Фрэнк был моим походным ноутбуком большую половину студенчества. С завода наивное устройство, которому после череды непростых жизненных испытаний предстояло стать Фрэнком, вышло под именем RoverBook. После трагической потери дисплея ему пожертвовал крышку ноутбук Acer с отказавшей материнской платой. Крышка оказалась немного больше и тяжелее базы, и держится в открытом виде, при помощи лески. Из-за медленно умирающего южного моста часть периферийных портов Френка перестала работать, но ясность ума и основные функции он сохранил. К тому же он имеет никогда ранее не использованный, но так нужный нам сейчас порт RS-232.
Скопируем уже настроенный DOS с программатором из виртуалки на флешку. Сделаем её загрузочной. Воткнём в один из ещё рабочих портов Фрэнка и попробуем с неё загрузиться. Работает!
Подключим программатор. К сожалению, удлиняющего кабеля под DB-9 в кладовке не нашлось (возможно он там и есть, но кто бывал в кладовке — тот знает, что лишний раз там лучше не шариться), поэтому втыкаем программатор прямо в порт.
… с этим можно работать. Поднесём зависший пейджер к светодиоду программатора, фотоприёмник программатора поднесём к красному окошку пейджера, любой свободной конечностью нажмём F4
.
Считалось, уже неплохо. Теперь скрестим пальцы на оставшихся свободными конечностях и попробуем завершить процедуру сброса.
Пейджер ожил! Пока всё работает — зашьём в него нужные нам параметры Out of Range
. Заодно поменяем International Variant
на ANSI
на всякий случай.
Вернёмся к вопросу поиска частоты. Перебирать все частоты — не очень хорошая идея, поскольку диапазоны частот определены не стандартом POCSAG, а государственными органами радиочастотного надзора. И определены они довольно широко, а шаг между частотами явно не определён вообще. Простым перебором мы можем очень легко промахнуться мимо нужной частоты.
Попробуем пойти по-другому: поищем информацию об отечественных пейджинговых операторах и их рабочих частотах.
Нашлась она там же, где нашли программатор — по соседству с его архивом лежат несколько справочников с частотами операторов. Приведём частоты к общему виду, составим таблицу.
GNURadio позволяет скомпилировать блок-схему в исполняемый код на питоне. Воспользуемся этой функцией. Код можно немного дописать таким образом, чтобы он мог принимать аргументы из командной строки, которыми будет гораздо удобнее задавать сообщение и частоту.
У нас есть длинный список частот, есть готовый к применению код на питоне. Немного магии баша — и мы можем отправить по одному сообщению на каждой частоте из справочника. В качестве сообщения можно указать ту же частоту, чтобы единственное сообщение, которое дойдёт до пейджера, сразу содержало ответ на загадку.
Запускаем и ждём.
Открытие первое: пейджер очень громко трезвонит, когда получает сообщение. И вибрирует. И мигает лампочкой. И не затыкается, пока пользователь не нажмёт на кнопку! Это вам не деликатное сообщение из Телеграма, которое тихонько тренькнет и будет ждать в шторке уведомлений — пейджер требует всё ваше внимание!
Открываем Входящие и совершаем открытие второе:
Вот и наша искомая частота: 165 МГц ровно. Ровно в два раза больше указанной на кварце частоты 82.500. Кто бы знал.
Попробуем передать какое-нибудь другое сообщение. Указываем частоту, задаём сообщение, отправляем:
Радость, однако, была неполной. Да, сообщения пошли, но только из латинских букв. А пейджер ведь явно может работать с кириллицей, мы видели меню на русском. Дожмём? Дожмём!
Но сначала придётся немного остановиться на том, что такое кодировки и чем они отличаются одна от другой.
Стандарт POCSAG предполагает кодирование информации по семибитной таблице. Для стандартного латинского алфавита она соответствует стандартной таблице ASCII (она же ANSI):
Этой кодировкой пользовались ещё на телетайпах в 1960-х годах. Логично было использовать её и для ЭВМ тех и последующих лет. Семь бит позволяют хранить 128 символов, чего хватает для двух регистров латиницы, основных знаков препинания и нескольких управляющих кодов (выделены цветом). Вроде хватает, но только для латиницы. Ни символов других алфавитов, ни даже букв вроде ä
или ß
из немецкого языка в неё уже не добавить. Поэтому универсальной эта кодировка не стала.
С кириллическими кодировками было особенно сложно. Со времён, когда в СССР ещё делали свои вычислительные машины, остались кодировки КОИ-7 и КОИ-8. У винтажных Макинтошей была своя, ни на что не похожая, кодировка. Windows использовала кодировку 1251, где кириллические символы размещались в дополнительном диапазоне следом за латинскими. Её особенность — в соседней кодировке 1250 в тех же позициях располагались символы языков западной Европы, что радовало тогдашних пользователей такими строчками:
Winamp: đĺŕëüíî áü¸ň ëŕěó ďî ćîďĺ!
Потому что, конечно же, операционные системы далеко не всегда правильно определяли, в какой кодировке сохранён текст.
Вернёмся к нашей задаче. POCSAG использует ту же семибитную таблицу ASCII. Тут ни убавить, ни прибавить — в таблице ровно 128 символов. Стандарт POCSAG не предлагает кириллических кодировок, поэтому у пейджеров Philips существует два варианта кодировки для русского языка — Russian-ANSI
и Russian
. Первый — комбинированный вариант, который содержит и латиницу, и кириллицу, но только заглавные буквы. Второй содержит и заглавные, и строчные, но только кириллицы.
Одной быстрой прошивкой на Френке позже — пейджер готов принимать сообщения в кодировке Russian-ANSI
. К которому у нас таблицы нет. Но тут несложно догадаться, что кириллические буквы размещены там, где в обычной ANSI были строчные латиницы. Попробуем отправить фразу THIS IS BIG TEST and this is small test
:
Кодировка работает, русские буквы есть. Надо только составить таблицу соответствий.
15 минут и около трёх десятков сообщений спустя, таблица готова:
Букве Ё
места в таблице не нашлось.С буквой Я
возникла другая проблема — Все буквы до неё занимают места от 60
до 7E
в таблице ASCII, и она должна быть в таблице на месте 7F
. Однако в таблице ASCII в этом месте находится спецсимвол DEL
. Мы не можем ввести его с клавиатуры.
К счастью, это и не обязательно. Автор модуля gr-mixalot позже разработал более удобный способ отправлять сообщения. Он предусматривает постоянно работающий сервер, которому можно сообщить номер пейджера, тип и содержимое сообщения, что гораздо удобнее для массового использования. Важная и полезная нам особенность — сообщение ему нужно передавать в виде последовательности кодов из таблицы ASCII, а не готовых букв.
Если объединить таблицы ASCII с нашими открытиями, получим следующую таблицу для кодировки Russian-ANSI:
Со знанием этим составим новое сообщение:
717a65787c20657965207d726875206c7f636a6875207470606d767367716a68752061
736b6e6a20646020627b6f65692077607e
Отправим его на пейджер. Принято следующее:
Теперь давайте попробуем поработать с таблицей Russian
. Напрашивается гипотеза: буквы там в тех же позициях, что и в Russian-ANSI
. Прошьём пейджер и отправим на пейджер ту же строку. Ответ удивил:
Гипотеза проверку не выдержала, хотя некоторые буквы всё же остались на своих местах.
Составим таблицу символов для кодировки Russian
тем же методом, которым мы составляли таблицу для Russian-ANSI
:
Знающие люди сразу распознают в этой таблице почти точную копию кодировки КОИ-7, набор 1. Эти же знающие люди вспомнят особенность этой кодировки — при замене таблицы ASCII на КОИ-7 Н1 текст на английском автоматически транслитируется. Не идеально, но вполне можно читать. Отправив на пейджер фразу «invalid device», получим:
Кое-кто из читателей точно этого ждал
На этом этапе возможности полученной системы ограничиваются лишь воображением. Не составляет труда написать небольшой скрипт, который преобразует получаемую строку в одну из нужных кодировок и автоматизировать отправку сообщений на сервер с помощью netcat
, возможно написать небольшую страничку, чтобы любой желающий мог через интернет отправить на Люкс своё сообщение…
▍ Постамбула
Но зачем?..
Если опустить общий стиль повествования, постоянные обращения к читателю и множество не подкреплённых источниками заявлений, самый большой допущенный автором академический промах — в самом начале работы не была обозначена её цель. А без цели — не ясно, к какому результату мы должны были прийти.
К счастью для нас, текст не претендует на академичность, процесс был довольно увлекательным, а вынесенный опыт — ценным. Пусть даже практического применения полученный комплекс пока не нашёл.
И всё же, где лучше остановиться?
Здесь. Стоило того!
Присоединяйтесь к нам в следующий раз, мы будем играть в «Позвоните Кузе» с помощью дискового телефона.
P.S.
Черновик этой статьи был написан осенью 2019 года по мотивам событий, произошедших полугодом ранее. Черновик в основном остался неизменным, однако часть фотоматериалов была утеряна. Для восстановления недостающих фотографий автор полностью воссоздал описанный в статье стенд, столкнувшись с рядом новых проблем: радиомодуль пейджера пришёл в негодность, модуль gr-mixalot не был обновлён для совместимости с актуальной версией GNURadio, а программатор был утерян. Не подвёл только Френк, за что ему большая благодарность и бережное ТО.
Отдельной благодарности заслуживает Александр, оперативно подготовивший два новых радиомодуля для Люкса.
Автор:
K3lwiN
Источник
Обновлено: 03.03.2023
2022. Количество активных SIM-карт превзошло население планеты семь лет назад. Вовсю идёт внедрение мобильных сетей пятого поколения, невероятно быстрых и в то же время доступных на самом широком спектре устройств — от автомобилей до носков. Искать парные носки скоро можно будет через интернет, представляете?
Нет лучшего времени, чтобы купить свой первый пейджер.
Преамбула
Philips Messenger Lux — возможно, единственный пейджер с восьмистрочным дисплеем. С подсветкой! Один этот факт делает его самым люксовым пейджером, который когда-либо существовал.
Есть, однако, существенная проблема: в России не осталось публичных пейджинговых операторов. Есть компании, которые предлагают развёртывание пейджинговых сетей в масштабах предприятий (например, системы связи для официантов в ресторанах или энергетиков на АЭС), но не осталось ни одного оператора масштаба города или области, куда можно прийти со своим пейджером, подписать договор и за пару сотен рублей в месяц оперативно получать на него сводку новостей, прогноз погоды и курсы валют.
Значит, если мы хотим пользоваться пейджером как пейджером, а не модными часами — работу оператора придётся брать на себя. От инфраструктуры до контента.
В теории — всё просто. Практика, как водится, оказалась сложнее и гораздо интереснее. Чтобы воплотить задумку в жизнь — потребовалось собрать в кучу кусочки документации с нескольких старых форумов и заброшенных сайтов, собрать свой собственный программатор и провести настоящее детективное расследование.
Всю эту информацию мы можем получить, подключив пейджер к компьютеру и считав его конфигурацию. Звучит просто? Не совсем.
Производители пейджеров не хотели, чтобы любой владелец с помощью компьютера мог запросто вшить своему пейджеру произвольный номер и таким образом получать чужую переписку. Для программирования требовалось специальное ПО и, что важно — специальный кабель для подключения к специальному разъёму на устройстве. И то и другое можно было получить только напрямую от производителя и только если вы — оператор. Впрочем, ПО со временем в Интернет всё-таки утекло. Осталось только изготовить кабель.
На подавляющем большинстве пейджеров программирование осуществлялось с помощью спрятанных где-то на корпусе контактов. Например, другой популярный топовый пейджер NEC 21A Maxima скрывает разъём для программирования под резиновой заглушкой на торце.
Инженеры Philips решили не портить внешний вид своего люксового пейджера какими-то разъёмами-заглушками и реализовали процедуру программирования пейджера без проводов.
Те, кто учился в школе в начале нулевых, наверняка застали такое замечательное средство социализации, как телефон с ИК-портом. Такой телефон включал его владельца в сеть обмена картинками с приколами, мелодиями и, конечно же, Java-играми. Для этого, однако, передающий и принимающий телефон нужно было обязательно держать окошками ИК-портов друг напротив друга и ни в коем случае не двигать (желательно даже не дышать в их сторону) — передача могла прерваться по совершенно неочевидным причинам.
Полезная нагрузка
ПО для программирования пейджера гуглится, оставим этот этап на совести читателя, если он вдруг решит повторить эксперимент автора.
ПО работает на DOS. Берём копию DOS, разворачиваем её на виртуалке, запускаем PROG20 . Располагаем программатор так, чтобы инфракрасный светодиод светил в фотоприёмник пейджера, а фотоприёмник программатора закрепляем прямо над светодиодом пейджера:
Попробуем считать конфигурацию. Жмём F4 . Едва заметно начинает мерцать светодиод на программаторе (в ИК-диапазоне он светит гораздо ярче, но мы этого почти не видим), пейджер в ответ подмигивает своим красным индикатором.
Удивительно, но сработало. Мы видим совершенно не такой, как на наклейке, номер в поле Master RIC , два из четырёх Secondary RIC для получения общих новостных рассылок, локализация Russian . На второй странице указана скорость передачи данных — 512 бод. На третьей странице — несущая частота в 161.5 МГц.
Данных достаточно для пробной передачи. Ненадолго отложим пейджер и соберём передающую станцию. У нас есть SDR плата HackRF, на которую мы можем передать сформированный на компьютере сигнал. Мощность передачи небольшая, сигнал не распространится за пределы помещения и не повлияет на другие устройства, работающие на этих частотах (мы же помним про лицензию на вещание, да?).
Запускаем схему в GNURadio… И ничего не происходит. Ещё один запуск — снова произошло ничего.
Досадно. Давайте разбираться, что не так. Возьмём ещё одну SDR и послушаем, уходит ли вообще сигнал в эфир:
Определённо уходит, частота верная. Поищем возможные проблемы на стороне пейджера.
В документации PROG20 поле частоты описано следующим образом:
Receiver Frequency
Допустимые значения: 0-999.9999999Назначение параметра: Содержит конкретное значение рабочей частоты пейджера (в МГц). Это поле записывается при изготовлении пейджера и не может быть изменено с помощью программатора.
Заглянем внутрь Люкса:
Заметно, что тут поработали паяльником. Обратите внимание на контакты детали с надписью 82.500. Это — кварцевый генератор, который при подаче на него напряжения выдаёт вибрирующий с заранее известной частотой сигнал. Кварц — незаменимый компонент любого устройства, где есть необходимость в точном периодическом сигнале — от наручных часов Монтана до компьютеров всех сортов. Радиоприёмники цифровых сигналов тоже входят в этот спектр.
Очевидно, кварц на нашем экземпляре меняли. Значит, теперь его приёмник слушает другую частоту. Если обратиться к документации на микросхему приёмника — мы найдём процедуру настройки на частоту. Если кратко: с точно той же частотой колеблется контур приёмника и её можно измерить на тестовых точках (золотистые контакты в правом верхнем углу). Тут другая проблема: для измерения такой частоты нужно лабораторное оборудование. Очень дорогое лабораторное оборудование. Осциллограф с полосой пропускания до 1 ГГц стоит примерно как новый автомобиль. Более простой частотомер с подходящими характеристиками стоит на два порядка меньше, но всё ещё неоправданно дорого для единичного применения.
В руководстве упоминается полезная функция, которая выводит на экран значок с перечёркнутой антенной, если пейджер не принимает вообще никаких сигналов на своей частоте в течение 30 секунд. В годы активного функционирования сети он был бы индикатором отсутствия покрытия оператора, но сейчас должен отображаться почти постоянно. Включить её можно в том же программаторе.
Соберём пейджер обратно, снова установим его в программатор, запустим PROG20. Изменим параметр Out Of Range с Disabled на 30 seconds , запустим процедуру программирования клавишей F6 . Заморгали лампочки, побежали проценты… И тут — здравствуйте:
Интересно. Попробуем считать текущую рабочую конфигурацию и её же записать. Для верности накроем пейджер с программатором чёрной салфеткой, чтобы избежать влияния других источников света.
Ошибка та же. Появляется где-то на 12% записи новой программы.
Возможно, поможет сброс к заводским настройкам. Есть риск потери хитрых хаков, которые, вероятно, устанавливали в сервисе местного оператора, если таки вообще были.
Сохраним текущую конфигурацию в файл и запустим процедуру сброса. Для применения новых параметров PROG20 перезагружает пейджер в особый режим, в котором пейджер может только принимать команды от программатора и не запускает интерфейс. По идее, пейджер должен перезагрузиться в обычный режим, как только получит корректную программу.
Однако запись программы и в этом режиме обрывается с той же ошибкой, с которой мы уже столкнулись. Пейджер всё ещё ждёт указаний от программатора, но тому не удаётся ничего туда записать.
Самое время остановиться и подвести невесёлый промежуточный итог:
- Приёмник пейджера был аппаратно перенастроен на неизвестную частоту;
- Из-за сбоя записи настроек программатор не может вывести пейджер из режима программирования;
- Пейджер застрял в режиме программирования и не загружается в штатный режим работы, даже если вытащить из него батарейки.
Код коррекции ошибок
Собранный из двух половинок разных ноутбуков, Фрэнк был моим походным ноутбуком большую половину студенчества. С завода наивное устройство, которому после череды непростых жизненных испытаний предстояло стать Фрэнком, вышло под именем RoverBook. После трагической потери дисплея ему пожертвовал крышку ноутбук Acer с отказавшей материнской платой. Крышка оказалась немного больше и тяжелее базы, и держится в открытом виде, при помощи лески. Из-за медленно умирающего южного моста часть периферийных портов Френка перестала работать, но ясность ума и основные функции он сохранил. К тому же он имеет никогда ранее не использованный, но так нужный нам сейчас порт RS-232.
Скопируем уже настроенный DOS с программатором из виртуалки на флешку. Сделаем её загрузочной. Воткнём в один из ещё рабочих портов Фрэнка и попробуем с неё загрузиться. Работает!
Подключим программатор. К сожалению, удлиняющего кабеля под DB-9 в кладовке не нашлось (возможно он там и есть, но кто бывал в кладовке — тот знает, что лишний раз там лучше не шариться), поэтому втыкаем программатор прямо в порт.
… с этим можно работать. Поднесём зависший пейджер к светодиоду программатора, фотоприёмник программатора поднесём к красному окошку пейджера, любой свободной конечностью нажмём F4 .
Считалось, уже неплохо. Теперь скрестим пальцы на оставшихся свободными конечностях и попробуем завершить процедуру сброса.
Пейджер ожил! Пока всё работает — зашьём в него нужные нам параметры Out of Range . Заодно поменяем International Variant на ANSI на всякий случай.
Вернёмся к вопросу поиска частоты. Перебирать все частоты — не очень хорошая идея, поскольку диапазоны частот определены не стандартом POCSAG, а государственными органами радиочастотного надзора. И определены они довольно широко, а шаг между частотами явно не определён вообще. Простым перебором мы можем очень легко промахнуться мимо нужной частоты.
Попробуем пойти по-другому: поищем информацию об отечественных пейджинговых операторах и их рабочих частотах.
Нашлась она там же, где нашли программатор — по соседству с его архивом лежат несколько справочников с частотами операторов. Приведём частоты к общему виду, составим таблицу.
Запускаем и ждём.
Вот и наша искомая частота: 165 МГц ровно. Ровно в два раза больше указанной на кварце частоты 82.500. Кто бы знал.
Но сначала придётся немного остановиться на том, что такое кодировки и чем они отличаются одна от другой.
Стандарт POCSAG предполагает кодирование информации по семибитной таблице. Для стандартного латинского алфавита она соответствует стандартной таблице ASCII (она же ANSI):
Этой кодировкой пользовались ещё на телетайпах в 1960-х годах. Логично было использовать её и для ЭВМ тех и последующих лет. Семь бит позволяют хранить 128 символов, чего хватает для двух регистров латиницы, основных знаков препинания и нескольких управляющих кодов (выделены цветом). Вроде хватает, но только для латиницы. Ни символов других алфавитов, ни даже букв вроде ä или ß из немецкого языка в неё уже не добавить. Поэтому универсальной эта кодировка не стала.
С кириллическими кодировками было особенно сложно. Со времён, когда в СССР ещё делали свои вычислительные машины, остались кодировки КОИ-7 и КОИ-8. У винтажных Макинтошей была своя, ни на что не похожая, кодировка. Windows использовала кодировку 1251, где кириллические символы размещались в дополнительном диапазоне следом за латинскими. Её особенность — в соседней кодировке 1250 в тех же позициях располагались символы языков западной Европы, что радовало тогдашних пользователей такими строчками:
Потому что, конечно же, операционные системы далеко не всегда правильно определяли, в какой кодировке сохранён текст.
Вернёмся к нашей задаче. POCSAG использует ту же семибитную таблицу ASCII. Тут ни убавить, ни прибавить — в таблице ровно 128 символов. Стандарт POCSAG не предлагает кириллических кодировок, поэтому у пейджеров Philips существует два варианта кодировки для русского языка — Russian-ANSI и Russian . Первый — комбинированный вариант, который содержит и латиницу, и кириллицу, но только заглавные буквы. Второй содержит и заглавные, и строчные, но только кириллицы.
Кодировка работает, русские буквы есть. Надо только составить таблицу соответствий.
Букве Ё места в таблице не нашлось.С буквой Я возникла другая проблема — Все буквы до неё занимают места от 60 до 7E в таблице ASCII, и она должна быть в таблице на месте 7F . Однако в таблице ASCII в этом месте находится спецсимвол DEL . Мы не можем ввести его с клавиатуры.
Если объединить таблицы ASCII с нашими открытиями, получим следующую таблицу для кодировки Russian-ANSI:
Отправим его на пейджер. Принято следующее:
Теперь давайте попробуем поработать с таблицей Russian . Напрашивается гипотеза: буквы там в тех же позициях, что и в Russian-ANSI . Прошьём пейджер и отправим на пейджер ту же строку. Ответ удивил:
Гипотеза проверку не выдержала, хотя некоторые буквы всё же остались на своих местах.
Составим таблицу символов для кодировки Russian тем же методом, которым мы составляли таблицу для Russian-ANSI :
Постамбула
Если опустить общий стиль повествования, постоянные обращения к читателю и множество не подкреплённых источниками заявлений, самый большой допущенный автором академический промах — в самом начале работы не была обозначена её цель. А без цели — не ясно, к какому результату мы должны были прийти.
К счастью для нас, текст не претендует на академичность, процесс был довольно увлекательным, а вынесенный опыт — ценным. Пусть даже практического применения полученный комплекс пока не нашёл.
И всё же, где лучше остановиться?
Первый в мире пейджер выпустила компания Motorola в 1956 году. Первые пейджеры взяли на вооружение сотрудники больниц и менеджеры. Затем пейджерами обзавелись все, кто хотел быть всегда доступным.
Содержание
Пейджинговая связь по сравнению с сотовой имеет ряд преимуществ:
- дешевизна связи;
- безопасность: отсутствие передатчика в пейджере (есть только приёмник) делает невозможным определение местонахождения устройства;
- автономность: батарейки ААА, а реже АА, хватает примерно на месяц работы пейджера (при средней интенсивности использования);
- экономия частотного ресурса: в транковых и сотовых сетях одна частота (с шириной канала 25 кГц) имеет ресурс для обслуживания 25-50 абонентов, в пейджинге — 10-15 тысяч абонентов (в формате POCSAG) и 40-80 тысяч (FLEX).
В 1921 году полиция Детройта впервые применила принцип оповещения по радио мобильных подразделений через диспетчера. Позднее, в 30-е годы, подобные системы достаточно широко использовались в подразделениях армии и полиции США. Однако только в 1956 году английской фирмой Multitone была разработана и установлена в одной из больниц Лондона первая в мире система персонального радиовызова (ПРВ) современного типа. В её состав входили передатчик, который передавал кодированные сигналы, и приёмные устройства, которые эти сигналы принимали. Приёмные устройства выдавались врачам и другому руководящему персоналу больницы. Если требовалось кого-либо из них срочно найти, то передатчик передавал сигнал, а абонент по индивидуальному звуковому сигналу (писку) идентифицировал его и тем или иным способом связывался с администрацией. Подобные приёмные устройства назвали биперами (от англ. beep «пикать», «пищать»). В дальнейшем эти системы связи развивались эволюционно, и только в последние годы они вступили в фазу бурного роста, чему способствовали как успехи технологии, так и потребности общества. В СССР подобная связь применялась в отдельных государственных структурах (органы государственного управления, КГБ, некоторые медицинские службы) с конца 60-х гг., однако распространение она получила только с 1979 года (в период подготовки к Олимпиаде-80).
Среди приёмных устройств первыми были тональные биперы — устройства, способные издавать только однообразные звуки, несущие закодированную информацию. Позднее, по мере развития микроэлектроники, появились цифровые аппараты, способные выводить на табло цифровой ряд — как правило, номер телефона.
Большинство пейджеров имело клипсу для открытого ношения на ремне или других деталях одежды. некоторые пейджер носили и на шее, также были чехлы с клипсами и отверстия для ремней.
Несмотря на кажущуюся прозрачность решения и вторичность моего опыта, я решила подробно описать свои действия, потому что информации в интернете по теме представлено не очень много: на форумах на вопросы отвечают редко и неметко. Кому-то этот текст, возможно, сильно сэкономит время.
Шаг 1 — INVITE
В качестве предпоготовки я создала класс:
c необходимыми полями, которые вначале должны быть инициализированы так, как указано в туториале:
Шаг 2 — аутентификация
Классы AccountManagerImpl и тоже неоходимый UserCredentialsImpl должны быть дописаны вами, я их писала по модели тех, что представлены здесь.
Шаг 3 — SIP INFO
Что я могу сказать? После реализации этого шага оказалось, что не все VoIP-сервера одинаково дружелюбны: некоторым достаточно было сигналов, передаваемых через SIP, а кому-то их не хватило, так как они не производят звукового сигнала и потому остаются незамеченными. Естественно, по закону подлости моей целью был сервер второго типа. Поэтому…
Шаг 4. формирование RTP-пакета
Итак, вот значимый фрагмент класса RtpPacket: его основные поля и конструктор со значениями, подходящими для передачи DTMF. Что значат все эти вещи, написано много где, поэтому повторяться не буду. Отмечу только, что значение параметра ssrc в принципе роли не играет, но у всех отправляемых в одной сессии пакетов оно должно совпадать. Номер формата полезной нагрузки у DTMF-пакетов (payload type) — 101 (его мы прописали, когда инициировали SIP-коммуникацию).
Самый важный этап создания пакета — заполнение байтового массива данных. У DTMF, естественно свой формат: первый байт — это, собственно, значение передаваемого сигнала (от 0 до 16), первая половина второго байта — различные маркеты (обычно 0), вторая половина второго байта- громкость (стандартное значение — 10), остальные два — это длительность (стандартное значение — 160).
Для каждого сигнала создается около 10 пакетов (число может варьироваться):
— первый, начальный, имеет marker = 1, остальные — 0;
— последние три — конечные, marker = 0, зато первый бит второго байта блока данных = 1. Блок данных в неконечном пакете для передачи сигнала 1 будет выглядеть так:
А в конечном вот так:
Метка времени у всех DTMF-пакетов, относящихся к одному сигналу, может оставаться одинаковой (предположим, T). Зато время следующего пакета должно быть:
Шаг 5. RTP-канал
Шаг 6. RTP-коммуникация
Заключение
В последних строках моей телеги хотелось бы подчеркнуть, что это мой первый пост на Хабре, так что не судите меня строго. Я совершенно не считаю себя гуру телематики или чего-либо ещё. Просто при написании исходного кода очень много времени ушло на поиск информации. Что-то я находила в спецификациях, которые от начала до конца в один присест осилить было сложновато, что-то было описано нормальным языком, но как-то неярко мелким шрифтом на полях, что-то я делала наугад. Так что в какой-то момент просто решила, что если у меня всё получится, я опишу все свои действия в одном месте и оставлю это индексироваться где-нибудь в интернете.
Так что очень надеюсь, что хоть кому-то моя статья пригодится или хотя бы покажется интересной.
Приколы,
Стихи
«Срочно узнай номер моего пейджера и скинь мне его на него.»
Абонент:
— Архив за несколько дней прочитайте, пожалуйста.
Оператор читает:
— Рома, у меня задержка. — Рома, я еду к врачу.
— Рома, ты скоро станешь папой. — Рома, у нас будет ребенок.
Абонент неожиданно разражается хохотом:
— А мне по барабану, меня Дима зовут.
Новый русский говорит другу:
— Мой пейджер 32-04. И запомнить легко: 32 зуба и 4 пальца.
«Позвони мне на пейджер. Очень хочу услышать твой голос.»
«Все ушли. Остались я и Чари. Подпись — Чари.»
— Девушка! У Вас интервал есть?
— Да.
— Дайте ему через интервал.
— Миша — это подпись?
— Hет! Зовут меня так.
— Девушка, Вы пейджер?
«Ты где? Я тебя заждался. Когда подойдешь, ударь по моей машине, я тебя услышу.»
— Поставьте, пожалуйста, 3 восклицательных знака вопроса.
«Мы больше не будем прелюбодействовать тебе на нервы.»
— Девушка, прочитайте ему, пожалуйста, с выражением эту информацию.
— Hазовите, пожалуйста, номер абонента.
— Вы мне эти буржуазные штучки бросьте.
«Позвони мне завтра в любое удобное для тебя время с 7 до 8 утра.»
«Приезжай ко мне непосредственно в квартиру.»
«Включи пейджер и перезвони мне.»
«Я и баранья нога едем домой. Мама.»
«Сообщи стоимость вешалки под плечики.»
«Прошу обеспокоить Вячеслава Михайловича в дому.»
«У меня все нормально. Меня пронесло.»
«Оля, ты обещала 2 инвалидов. Жду. Папа.»
— Долбаните ему пару раз, чтобы он понял.
Hетрезвый голос поздно вечером:
— Секретарша срочно вызывается в офис для выполнения своих прямых обязанностей.
«Как только проснетесь и соберетесь ехать к Шурику, срочно сейчас перезвони мне домой.»
«Hе забудь в субботу привезти постирать пеленки и малыша.»
Диктует:
«Света — тире — позвони. Постскриптум — Илья.»
«Позвони мне в автомат.»
«Дверь пришла. Жду дома. Саша.»
«Милый, я вчера забыла юбку в твоей машине. Верни ее, пожалуйста.»
«Если ты в пределах телефона, позвони. Мама.»
— Дайте ему эту информацию 2 раза через раз.
— Извините, это как?
— Как, как! 2 раза через 2 минуты.
«Сижу на фонтане. Жду дальнейших указаний.»
«Жду звонка в натуре. Меня кинули на телефон.»
«Срочно вызывай сантехника. У нас нет памперсов и еды.»
«Слава, тебя ждет дома Андрей и звонок из Спектрсервиса.»
«Дублируйте им пару раз. Они люди с гор, читать умеют плохо.»
«Девушка, передайте с акцентом, пожалуйста!»
«Вася, будешь идти мимо моей комнаты, занеси мне мои штаны и галстук.»
С мучительными паузами:
— Ехай за мной как можно быстро!
— Приезжай за мной как можно быстрее?
— О! Точно!
Претензия:
— Почему у вас с 20 до 22 не работал оператор?
— Какой номер оператора?
— Откуда я знаю? Он же не работал.
«Твоя сестра разжирела как Монтсеррат Кабалье. Купи ей 2 упаковки пластыря для похудения, и пусть она его жрет пачками.»
«Милый, я хочу или гамбургер, или «Сникерс», или тебя. Лена.»
«Дорогая, позвони мне, пожалуйста, по поводу вечера. Хочу пригласить тебя в ресторан или в лес. Юрий.»
«Даша, я думаю, что сейчас ты прыгаешь по травке и хрустишь морковкой и, очень надеюсь, что через некоторое время ты будешь ползать по асфальту и пить водку. Ваня.»
«Я еду по Москве, сам не знаю куда. Когда разберусь, сообщу, как меня искать. А вообще, я здесь до вечера воскресенья. Женя.»
«Алексей, будь готов с кирпичом подъехать к программисту, который покажет и объяснит программу. Руками понапрасну не размахивай. Hе дай бог выпадет. Сергей.»
Первый пейджер был выпущен компанией Моторола в 1956 году, и даже в нашу эру мобильных телефонов это средство связи является актуальным в определенных кругах. Ими пользуются пожарные, врачи, служащие сферы обслуживания и другие подобные организации. Радиус действия сигнала пейджера – до 100 км, работает только на прием. По сути это радиоприемник, преобразовывающий сигналы в цифровой код и выводящий текст на дисплей. Он значительно дешевле мобильного телефона и удобен в случаях, когда двухсторонняя связь необязательна.
Пейджеры были очень популярны в 90-е годы. В то время я был студентом, и пейджер для меня был чем-то вроде коммуникатора из Star Trek, частью передовых технологий. Забавно вспоминать об этом, потому что теперь я знаю, что технологически протокол пейджинга очень прост. С точки зрения кодирования, пейджер не так уж отличается от беспроводных дверных звонков, которые сейчас продаются за 5 долларов на Aliexpress.
Несмотря на то, что повсеместно пейджеры уже не используются, они всё ещё есть в доме у некоторых людей. Можно ли протестировать пейджер сейчас? Безусловно, и я покажу вам, как это сделать. Давайте начнём.
Выглядит просто, и это действительно так. Я пропущу подробности; те, кому интересно, могут прочитать спецификацию протокола. Все эти биты можно легко написать даже на бумаге — в прошлом эти протоколы были простыми, чего не скажешь о современных GSM или Wi-Fi.
Покупка пейджера
Во многих странах по-прежнему доступны пейджинг-провайдеры, с которыми можно подписать контракт и получить новое устройство, но, скажем так, это не слишком увлекательный способ. Я говорю с точки зрения человека, который хочет протестировать пейджер из-за образовательного или ностальгического желания или, может быть, даже имеет дома старый пейджер, сделанный в 1990-х годах. У меня есть хорошая новость — с большой вероятностью он может быть протестирован ещё раз и действительно будет работать. Конечно, не в масштабах всего города, но можно запустить собственную маломощную пейджинговую сеть, по крайней мере в вашей квартире. Сейчас можно купить новый пейджер, но он стоит недёшево. Это первая ссылка, которую я нашёл в Google:
Как мы видим, купить его просто для удовольствия может быть слишком дорого, и, более того, перед использованием пейджер должен быть настроен, а инструмент программирования и ПО для него также могут стоить очень дорого. Другой вариант — купить китайский пейджер, он дешевле, с кабелем для программирования общая стоимость составляет около $ 80:
И, наконец, на eBay можно купить подержанный пейджер за 20–50 долларов. Он дешёвый, и это старая винтажная модель, что тоже весело. Но, прежде чем совершать покупку, следует иметь в виду две вещи, которые были описаны ранее в разделе POCSAG:
Рассмотрим практический пример. Я видел этот пейджер Motorola Advisor Gold на eBay (имя продавца скрыто из соображений конфиденциальности):
Цена не такая большая, но стоимость доставки в ЕС составляет почти половину его цены. Ладно, давайте посмотрим на следующее фото:
Перед любой передачей, пожалуйста, ознакомьтесь с местными правилами радиосвязи.
Rpitx
Самый простой способ — использовать Raspberry Pi, и, что удивительно, это совершенно бесплатно: с помощью бесплатного opensource ПО rpitx сигнал может быть сгенерирован непосредственно с пина Raspberry Pi. Достаточно надеть на пин GPIO4 короткий провод:
Плата MMDVM
Следующий способ — купить специальную плату MMDVM (Multi-Mode Digital Voice Modem), которую можно прикрепить к Raspberry Pi:
Здесь 7642 — это порт дистанционного управления, 1000001 — код доступа. Использование MMDVMHost немного сложнее и требует некоторых знаний Linux, но выходной сигнал лучше по сравнению с использованием пина Raspberry Pi в качестве вывода.
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 есть двухконтактный интерфейс. Я нашел эту схему подключения в Интернете, но сам не проверял:
Этот пароль можно прочитать из EEPROM пейджера с помощью созданных энтузиастами сторонних инструментов, но для этого потребуются некоторые навыки пайки.
Заключение
Было весело протестировать пейджинг и исследовать, как он работает.
Также интересно отметить, что винтажные устройства интересно тестировать, и они на первый взгляд выглядят дешевле. Но на самом деле это не так. Для разных тестов я купил 3 пейджера по $ 20–30 каждый. Но первый пейджер имел несовместимую частоту, второй был защищён паролем, и я не могу изменить его настройки, и только третий работает. Вместо этих трех б/у пейджеров можно было купить один новый.
Могут быть и юридические причины, например, я не уверен, что Motorola официально разрешила кому-то публиковать программное обеспечение для программирования своих пейджеров, даже если публикация сделана 25 лет назад. Но для сохранения технического наследия может быть важно сохранить такие вещи. Наконец, пейджеры можно протестировать, и это весело.
Для тех, кто хочет провести больше тестов в более крупном масштабе, также можно использовать POCSAG на любительских радиочастотах и присоединиться к сети любительского радио DAPNET (децентрализованная любительская пейджинговая сеть). Для этого потребуется лицензия любительского радио, но для тех, кто интересуется цифровой связью, она может оказаться достойной её получения. Желаю всем читателям удачи и интересных экспериментов!
Несмотря на возраст этого вида связи, пейджерам до сих пор находится применение. Но если для технологии, 20 лет — это уже солидный возраст, то для языков программирования это еще даже не юность. Например С++, созданный Бьёрном Страуструпом аж в 1983 — до сих пор в топе самых популярных языков в мире благодаря своей чистой и красивой логике и гибкости. Если вы хотите разнообразить свой набор скилов этим языком — обратите внимание на наш курс по разработке на С++, ведь этот язык для миллионов программистов был и остаётся не менее важным, чем английский.
Узнайте, как прокачаться и в других специальностях или освоить их с нуля:
Читайте также:
- Сообщение осень в музыке
- Сообщение о святой виктории
- Сообщение на тему эпифиты
- Сообщение на тему три периода в истории русского языка
- Сообщение о неблагоприятных метеорологических условиях
Как отправить сообщение на пейджер?
3 ноября 2014 г. Просмотров: 2160
Первый пейджер был выпущен компанией Моторола в 1956 году, и даже в нашу эру мобильных телефонов это средство связи является актуальным в определенных кругах. Ими пользуются пожарные, врачи, служащие сферы обслуживания и другие подобные организации. Радиус действия сигнала пейджера – до 100 км, работает только на прием. По сути это радиоприемник, преобразовывающий сигналы в цифровой код и выводящий текст на дисплей. Он значительно дешевле мобильного телефона и удобен в случаях, когда двухсторонняя связь необязательна.
Инструкция
Совет добавлен 20 февраля 2012 Совет 2: Как отправить сообщение из icq на телефон ICQ — это программа для обмена мгновенными сообщениями. Установить ее можно как на компьютере, так и на мобильном телефоне. Однако существуют еще и приложения, позволяющие отправлять с ICQ сообщения прямо на номер мобильного телефона.
Вам понадобится
- — доступ к интернету;
- — регистрация в ICQ.
Инструкция
Полезный совет При утере пароля к учетной записи обратитесь на сайт http://www.icq.com/ru. Нажмите на поле под названием «Восстановление пароля», которое находится на главной странице, в самом низу. Далее заполните всего два поля: адрес почтового ящика (или номер мобильного телефона) и код подтверждения. Кликните на кнопку «Далее». Как отправить сообщение из icq на телефон — версия для печати
Оцените статью!