[Перевод] Возвращаем работоспособность аналоговому мобильному телефону из 1997 года

1*9Gv8UbKOlQ5dBZvHvc10ow.png

Motorola StarTAC 6000
Аналоговые мобильные телефоны были популярных в 90-х. Последний оператор, поддерживавший работу сетей первого поколения, прекратил поддержку в 2007. Возможно ли вернуть к жизни и заставить работать подобный телефон сейчас? Давайте узнаем.

AMPS


Стандарт Advanced Mobile Phone System (AMPS) разработан в Bell Labs в 1983 году. Телефоны, поддерживающие AMPS, стали очень популярными в 90-х. Стандарт можно назвать сотовой сетью первого поколения — голос передавался по старинке, при помощи метода частотной модуляции (FM), как в рации. Но радиоспектр разделялся на отдельные каналы, и один из них, «канал управления», был, фактически, цифровым.

Стандарт работает со спектром 825–845 МГц и 870–890 МГц, спектр разделен на 21 канал управления и 395 каналов трафика. Каждый клиент получает отдельный канал для звонка. Кроме того, AMPS поддерживает роуминг. Процесс набора номера был современным, не слишком отличаясь от того, что есть сейчас. Самый большой недостаток AMPS — аналоговая передача голоса. Соответственно, любой телефонный звонок можно было подслушать при помощи радиоприемника с поддержкой указанного спектра частот. Как мы сегодня знаем, некоторые журналисты действительно занимались прослушкой, пытаясь узнать чужие секреты.

С другой стороны, в 80-е микроконтроллерам просто не хватало вычислительной мощности для обеспечения работы защищенных цифровых данных. Поэтому «цифра» применялась лишь для установления соединения, а голос передавался аналоговым способом. Кстати, в некоторых моделях радио сканеров, которые были разработаны для США, частотный диапазон 800–900 МГц был заблокирован. Конечно, технически подкованный человек может выполнить разблокировку, но для неспециалиста это сделать достаточно сложно. В общем, случайная настройка на чей-нибудь звонок для обычных людей была маловероятным событием.

В наше время операторы связи не поддерживают стандарт AMPS. Но благодаря open-source и технологии SDR можно поднять локальную AMPS-сеть с малым радиусом действия. Это интересно не только для самообразования, но и для демонстрации возможностей технологий прошлых лет, что могут использовать музеи или временные выставки. Ведь всегда интересно увидеть экспонат в режиме эксплуатации, а не просто лежащим на полке. Кстати, это одна из причин того, почему выставки в музеях такие скучные. Экспонаты недоступны, их возможности никак не демонстрируются.

Прежде, чем начать, обратите внимание на важный нюанс: изучите местное законодательство относительно радиосвязи. Статья описывает техническую сторону, но не юридическую. В целом, ничего страшного произойти не должно в случае использования нагрузки в 50 Ом вместо антенны. Так можно отправлять и принимать сигналы лишь на расстоянии в несколько метров. А вот для более мощной сети может потребоваться разрешение/лицензия.

Что же, начнем.

Где взять телефон?


Это просто — начнем с поиска на eBay по запросу вроде «AMPS brick phone». В итоге получаем довольно много результатов запроса, с ценой от $20. В этом случае налог и стоимость доставки могут превышать цену телефона. Самая распространенная проблема у старых телефонов — севшая в ноль батарея, ячейки которой могут быть мертвы.

Я тестировал возможность совершения звонков с телефона на телефон, поэтому заказал сразу два AMPS телефона — Motorola StarTAC и Motorola TeleTAC. Выбрал именно их, поскольку второй телефон был очень недорогим, а первый — круто выглядел. И да, к сожалению, некоторые продавцы с eBay мошенничают. Я купил этот телефон на eBay (имя продавца скрыто по соображениям приватности).

1*NcyKcI14cMmM9CLawyvl7w.png

В описании продавец указал, что телефон проверен, «condition — tested». Что не так? У телефона нет зарядки, что делает его полностью бесполезным, во всяком случае, для тестирования AMPS. Возможно, кто-то покупает эти телефоны лишь для того, чтобы положить в качестве экспоната на полочку или сфотографировать, поэтому у них нет зарядки? В любом случае, зарядки не было в описании, отсутствовала она и на фото, так что чисто формально продавец не врал. Возможно, я могу получить деньги назад, обратившись в службу поддержки PayPal, но это займет время, а мне придется отправить телефон обратно, что отнимет еще больше времени. В итоге я заказал еще один телефон с зарядным устройством у другого продавца, а этот оставил в качестве резервного.

В итоге я все же получил телефон, который включается и показывает NS (no service) при включении.

1*n--mxcOy7ZjZA2A8Xj8ldw.png

Телефон не может найти сеть, что неудивительно, учитывая отключение последней работающей AMPS-сети в 2007 году.

Давайте решим эту проблему.

Настройка


Для проекта нужно несколько компонентов:
Программно-определяемый радиопередатчик. Передатчик должен иметь возможность отправлять и принимать широкополосные сигналы в полнодуплексном режиме (передавать и принимать одновременно). USRP или LimeSDR подойдут для этой работы.
1*kjH6XVlN3SjBKm6TWO2asg.png

Компьютер с Linux. Я работал с Raspberry Pi 4, поэтому устанавливать Linux на мой основной компьютер не было необходимости. При использовании Raspberry Pi требуется хороший источник питания, потому что передатчик будет получать питание через порт USB от этого же источника питания.
ПО для контроля передатчика. В случае AMPS есть два варианта: osmocom-analog и gr-amps.

Устанавливаем программное обеспечение


Как и упоминалось выше, ПО разработано для Linux. В теории можно скомпилировать его и для Windows, но многие библиотеки отсутствуют. А вот для Linux все будет работать «из коробки». Если вам это неинтересно, можете пропустить текущий раздел. Ниже я описываю полный процесс установки.

Для начала нужно обновить систему и установить библиотеку SoapySDR. Она нужна для доступа к «железу». Уже есть версия SoapySDR 0.8, но вот версия osmocom-analog разработана для 0.7 (во всяком случае, так было на момент написания статьи).

sudo apt-get update
sudo apt-get install build-essential autoconf gcc make cmake libasound2-dev pkg-config
wget https://github.com/pothosware/SoapySDR/archive/refs/tags/soapy-sdr-0.7.2.tar.gz
tar -xf soapy-sdr-0.7.2.tar.gz
cd SoapySDR-soapy-sdr-0.7.2 && mkdir build && cd build
cmake ..
make -j4 && sudo make install && sudo ldconfig
cd ../..

Далее устанавливаем библиотеку USRP (только в случае использования USRP-трансивера):

sudo apt-get install libuhd-dev uhd-host
wget https://github.com/pothosware/SoapyUHD/archive/refs/tags/soapy-uhd-0.4.1.tar.gz
tar -xf soapy-uhd-0.4.1.tar.gz
cd SoapyUHD-soapy-uhd-0.4.1
mkdir build && cd build
cmake ..
make -j4 && sudo make install && sudo ldconfig
cd ../..

Устанавливаем библиотеку LimeSuite (только в случае использования LimeSDR):

wget https://github.com/myriadrf/LimeSuite/archive/refs/tags/v20.10.0.tar.gz
tar -xf v20.10.0.tar.gz
cd LimeSuite-20.10.0
mkdir build && cd build
cmake ..
make -j4 && sudo make install && sudo ldconfig
cd ../..

Наконец, можно загрузить и установить ПО osmocom-analog:

git clone git://git.osmocom.org/osmocom-analog
cd osmocom-analog
autoreconf -if
./configure
make -j4
sudo make install
cd ..

Тестирование


Когда все готово, можем подключить передатчик к «малинке» и ввести команду:

sudo amps --sdr-soapy --channel 334 --channel 332 --samplerate 256000

Так мы открываем два канала, контрольный 334 и голосовой 332ю Общее количество каналов должно быть равным количеству используемых телефонов + 1 канал. Опционально можно настроить tx-power and rx-sensitivity если это необходимо.

Если все сделано правильно, мы увидим симпатичную ASCII графику в командной строке Raspberry Pi:

1*qW5qcM41h-XJB7EbDIbP8w.png

В тот же момент мы получаем данные от контрольного канала и телефон меняет статус на «online».
1*Fr_YCn4gq43kCqmPva_Gzw.png

На фотографии виден статус роуминга, поскольку ID нашего оператора не соответствует внесенному в память телефона. Но проблемы нет — все равно мы не платим за роуминг. Зато теперь можно звонить с компьютера на телефон и обратно.
1*JRcFrF4ER-MTOCyiessxLA.png

Подробные данные звонка:
1*hSjhzG-IAv3DQK5acOaecA.png

Телефон начинает звонить и можно даже ответить на звонок:
1*xmF1s3xc1rlji6vSIJ8yZA.png

Во время звонка интересно отследить AMPS в спектре. Ниже показан контрольный канал и голосовой рядом с ним:
1*wvIhFdxvT2R1Do-NErVLjw.png

Как видим, существует возможность настроиться на канал и подслушать звонок.

Вывод


Было действительно интересно протестировать работу сотовой сети первого поколения. Меня удивило несколько моментов:
  • Система работает хорошо, несмотря на то, что она была разработана в 1983 году. Процесс набора номера или ответа на звонок не особенно отличается от современных телефонов.
  • Качество звука на удивление хорошее. Теперь понятно, почему люди жаловались, переходя с AMPS на GSM — FM c модуляцией 12 КГц отлично работает.
  • Конфиденциальность звонков в такой системе — большая проблема, в особенности для политиков и знаменитостей. Да и не только для них, но и для всех прочих абонентов — ведь у любопытного соседа-пенсионера может оказаться слишком много времени. А подслушать звонок в AMPS может практически любой человек.
  • С другой стороны, этот протокол имеет свои преимущества — большую зону покрытия с малой плотностью базовых станций, что весьма актуально для сельской местности. Это одна из причин того, что AMPS долгое время продолжал работать в США.

В любом случае, AMPS уже находится на обочине истории, хотя, как видим, стандарт можно протестировать в образовательных или демонстрационных целях. Большое спасибо разработчикам osmocom-analog, которые реализовали проект и сделали это возможным.

© Habrahabr.ru