1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/zhanghexiang-OpenLTE

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Это зеркальный репозиторий, синхронизируется ежедневно с исходного репозитория.
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

OpenLTE — это реализация спецификаций 3GPP LTE с открытым исходным кодом.

Это клон проекта https://sourceforge.net/p/openlte.

Содержание

Необходимые условия

  • USB 3.0 интерфейс
  • Современный многоядерный процессор (Intel Core i5, Core i7 или аналогичный с поддержкой SSE4.1 SSE4.2 и AVX)
  • Установленный драйвер UHD (для SDR Ettus)
  • GNURADIO

Установка

Настройка компьютера

OpenLTE не только требует огромного количества вычислительной мощности, но и очень низкой задержки из-за необходимости передавать/получать радиокадр каждые 1 мс. Если есть какая-либо задержка в обработке, система не сможет ответить вовремя и потеряет образцы. Поэтому рекомендуется отключить любые функции процессора и/или системы (в основном в BIOS), которые могут вызвать какие-либо задержки или замедлить так называемое время переключения контекста. Intel SpeedStep, глубокие и более глубокие состояния сна и т. д. должны быть отключены. Особенно при настройке с высокой пропускной способностью (10, 15 и 20 МГц) рекомендуется отключать графический интерфейс на Linux. Существует также версия ядра Linux с низкой задержкой, но на данный момент нет абсолютных доказательств того, что она действительно помогает с OpenLTE.

Установка GNURadio с UHD

Для работы с радио Ettus (B200, B210) вам потребуется последняя версия драйвера UHD помимо GNURadio:

sudo apt-get install libuhd-dev libuhd003 uhd-host

Рекомендуется не использовать бинарную версию, а скомпилировать код с UHD следующим образом:

Как пользователь без прав root, выполните следующую команду:

mkdir gnuradio
cd gnurdio
wget http://www.sbrac.org/files/build-gnuradio
chmod a+x build-gnuradio

./build-gnuradio -v

Скрипт установки запросит пароль root. Вся процедура может занять до 3 часов! Он загрузит GNURadio, UHD и все необходимые зависимости.

Проверьте связь с SDR Ettus: Подключите SDR к одному из интерфейсов USB3 и запустите:

uhd_usrp_probe

Программное обеспечение загрузит код FPGA на ваше устройство и запросит его. Если вы всё сделали правильно, вы должны увидеть что-то похожее:

linux; GNU C++ version 4.8.2; Boost_105400; UHD_003.008.001-42-g8c87a524

-- Operating over USB 3.
-- Initialize CODEC control...
-- Initialize Radio control...
-- Performing register loopback test... pass
-- Performing CODEC loopback test... pass
-- Asking for clock rate 32.000000 MHz...
-- Actually got clock rate 32.000000 MHz.
-- Performing timer loopback test... pass
-- Setting master clock rate selection to 'automatic'.
  _____________________________________________________
 /
|       Device: B-Series Device
|     _____________________________________________________
|    /
|   |       Mboard: B200
|   |   revision: 4
|   |   product: 1
|   |   serial: F54xxx
|   |   FW Version: 7.0
|   |   FPGA Version: 4.0
|   |
|   |   Time sources: none, internal, external, gpsdo
|   |   Clock sources: internal, external, gpsdo
|   |   Sensors: ref_locked
|   |     _____________________________________________________
|   |    /
|   |   |       RX DSP: 0
|   |   |   Freq range: -16.000 to 16.000 MHz
|   |     _____________________________________________________
|   |    /
|   |   |

**Примечание:** В тексте запроса присутствуют фрагменты кода, которые не удалось перевести. Это связано с тем, что некоторые команды и функции являются специфическими для среды разработки и не имеют прямых аналогов в русском языке. **Установка OpenLTE**

**Зависимости:**

`sudo apt-get install libpolarssl-dev`

**Сборка и установка:**

mkdir build cd build && cmake .. make


(Необязательно):

`sudo make install`

**Запуск OpenLTE eNodeB**

**Первое окно терминала:**

Не закрывайте это окно во время работы!

`LTE_fdd_enodeb`

Вывод:

linux; GNU C++ version 4.8.2; Boost_105400; UHD_003.008.001-42-g8c87a524 *** LTE FDD ENB *** Пожалуйста, подключитесь к порту управления 30000


**Второе окно терминала:**

Это интерфейс управления eNodeB.

`telnet 127.0.0.1 30000`

Вывод:

Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is '^]'. *** LTE FDD ENB *** Введите help для просмотра списка команд


**Третье окно терминала (необязательно):**

Эта команда предоставит сообщения отладочных журналов.

`telnet 127.0.0.1 30001`

**Конфигурация Tx в OpenLTE:**

write band 20 write bandwidth 5 write dl_earfcn 6300 write mcc 214 write mnc 12 write n_ant 1 write rx_gain 30 write tx_gain 86


**Настройка Wireshark:**

*Правка* → *Настройки* → *Протоколы* → *DLT_USER* → *Правка…*
Нажмите «+» → *DLT = Пользователь 0* и *Протокол полезной нагрузки = mac-lte-framed*

**Программирование собственной USIM-карты**

### Предварительные требования

`sudo apt-get install python-pip`

sudo python -m pip install serial pycrypto


### Провайдеры

**sysmoUSIM-SJS1 4FF/nano SIM + USIM Card (10-pack):**

[http://shop.sysmocom.de/products/sysmousim-sjs1-4ff](http://shop.sysmocom.de/products/sysmousim-sjs1-4ff)

### Получите программу для SIM-карт

Вам нужен программатор для SIM-карт, который совместим с приложением PCSC на Linux. Чтобы иметь более или менее полный список совместимых устройств, посетите эту страницу:

[http://pcsclite.alioth.debian.org/ccid/supported.html](http://pcsclite.alioth.debian.org/ccid/supported.html)

Не забудьте, что вам нужен программатор с поддержкой APDU. Мы лично используем **SCM Microsystems Inc. SCR 3310**, вы можете найти его и многие из перечисленных выше на Ebay.

### Установите программное обеспечение (PySIM, PCSCd, Pyscard)

**Сначала установите зависимости:**

`sudo apt-get install pcscd pcsc-tools libccid libpcsclite-dev`

Подключите считыватель SIM-карт, вставьте программируемую SIM-карту и проверьте подключение, выполнив следующую команду:

`sudo pcsc_scan`

Если ваш считыватель и карта распознаны, вы увидите нечто похожее:

PC/SC device scanner V 1.4.22 (c) 2001–2011, Ludovic Rousseau ludovic.rousseau@free.fr Compiled with PC/SC lite version: 1.8.10 Using reader plug'n play mechanism Scanning present readers... 0: OMNIKEY AG CardMan 3121 01 00

Wed Dec 24 14:56:32 2014 Reader 0: OMNIKEY AG CardMan 3121 01 00 Card state: Card inserted, ATR: 3B 9F 95 80 1F C7 80 31 E0 73 FE 21 13 57 12 29


11 02 01 00 00 C2
ATR: 3B 9F 95 80 1F C7 80 31 E0 73 FE 21 13 57 12 29 11 02 01 00 00 C2
+ TS = 3B --> Direct Convention
+ T0 = 9F, Y(1): 1001, K: 15 (historical bytes)
  TA(1) = 95 --> Fi=512, Di=16, 32 cycles/ETU
    125000 bits/s at 4 MHz, fMax for Fi = 5 MHz => 156250 bits/s
  TD(1) = 80 --> Y(i+1) = 1000, Protocol T = 0
-----
  TD(2) = 1F --> Y(i+1) = 0001, Protocol T = 15 - Global interface bytes following
-----
  TA(3) = C7 --> Clock stop: no preference - Class accepted by the card: (3G) A 5V B 3V C 1.8V
+ Historical bytes: 80 31 E0 73 FE 21 13 57 12 29 11 02 01 00 00
  Category indicator byte: 80 (compact TLV data object)
    Tag: 3, len: 1 (card service data byte)
      Card service data byte: E0
        - Application selection: by full DF name
        - Application selection: by partial DF name
        - BER-TLV data objects available in EF.DIR
        - EF.DIR and EF.ATR access services: by GET RECORD(s) command
        - Card with MF
    Tag: 7, len: 3 (card capabilities)
      Selection methods: FE
        - DF selection by full DF name
        - DF selection by partial DF name
        - DF selection by path
        - DF selection by file identifier
        - Implicit DF selection
        - Short EF identifier supported
        - Record number supported
      Data coding byte: 21
        - Behaviour of write functions: proprietary
        - Value 'FF' for the first byte of BER-TLV tag fields: invalid
        - Data unit in quartets: 2
      Command chaining, length fields and logical channels: 13
        - Logical channel number assignment: by the card
        - Maximum number of logical channels: 4
    Tag: 5, len: 7 (card issuer's data)
      Card issuer data: 12 29 11 02 01 00 00
+ TCK = C2 (correct checksum)

**Перевод текста на русский язык:**

11 02 01 00 00 С2
ATR: 3В 9Ф 95 80 1Ф С7 80 31 Е0 73 ФЕ 21 13 57 12 29 11 02 01 00 00 С2
+ ТС = 3В —> прямая конвенция
+ Т0 = 9Ф, У(1): 1001, К: 15 (исторические байты)
ТА(1) = 95 —> Фи=512, Ди=16, 32 цикла/ЕТУ
125 000 бит/с при 4 МГц, fМакс для Фи = 5 МГц => 156 250 бит/с
ТД(1) = 80 —> У(i + 1) = 1000, протокол Т = 0

ТД(2) = 1Ф —> У(i + 1) = 0001, протокол Т = 15 — глобальные интерфейсные байты следуют

ТА(3) = С7 —> остановка часов: нет предпочтений — класс, принятый картой: (3Г) А 5 В Б 3 В В 1,8 В
+ исторические байты: 80 31 Е0 73 ФЕ 21 13 57 12 29 11 02 01 00 00
индикатор категории байт: 80 (компактный объект данных TLV)
тег: 3, длина: 1 (байт данных обслуживания карты)
байт данных обслуживания карты: Е0
- выбор приложения: по полному имени DF
- выбор приложения: по частичному имени DF
- объекты данных BER-TLV доступны в EF.DIR
- услуги доступа EF.DIR и EF.ATR: командой GET RECORD (s)
- карта с MF
тег: 7, длина: 3 (возможности карты)
методы выбора: ФЕ
- выбор DF по полному имени DF
- выбор DF по частичному имени DF
- выбор DF путём
- выбор DF по идентификатору файла
- неявный выбор DF
- поддерживается короткий идентификатор EF
- поддерживается номер записи
байт кодирования данных: 21
- поведение функций записи: проприетарное
- значение «ФФ» для первого байта полей тегов BER-TLV: недействительно
- единица данных в квартетах: 2
цепочка команд, поля длины и логические каналы: 13
- назначение номера логического канала: картой
- максимальное количество логических каналов: 4
тег: 5, длина: 7 (данные эмитента карты)
данные эмитента карты: 12 29 11 02 01 00 00
+ ТКК = С2 (правильная контрольная сумма) not giving the proper `ADM1` pin when you try to program the Sysmo-USIm S1J1 SIMs, вы, вероятно, получите перманентно повреждённую карту!

Теперь давайте установим алгоритм MILENAGE и OP.

`./sysmo-usim-tool.sjs1.py --adm1 ADM1_KEY --set-op LTE_DEFAULT_OP_CODE -T MILENAGE:MILENAGE`

OpenLTE имеет дефолтный OP код, который равен:

`OP=63bfa50ee6523365ff14c1f45f88737d`

Если вы хотите изменить это значение на своё собственное, вам нужно отредактировать `liblte/src/liblte_security.cc` и изменить значение OP (это потребует перекомпиляции OpenLTE, чтобы изменения вступили в силу):

```c
static const uint8 OP[16] = {0x63,0xBF,0xA5,0x0E,0xE6,0x52,0x33,0x65,
0xFF,0x14,0xC1,0xF4,0x5F,0x88,0x73,0x7D};

В этой ветке мы установили значение OP равным:

static const uint8 OP[16] = {0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11};

OP=11111111111111111111111111111111

Ссылка: Спецификация алгоритма MILENAGE — 3GPP TS 35.206

Ссылка: Руководство по использованию USIM от Sysmo

Добавление подписчиков

Ранее мы создали собственные USIM карты и знаем ключ Ki и IMSI для этих карт.

Теперь нам нужно добавить их в реестр подписчиков.

Запустите LTE_fdd_enodeb и войдите в интерфейс управления:

telnet 127.0.0.1 30000

Это команды для добавления, удаления и отображения подписчиков:

add_user imsi=<imsi> imei=<imei> k=<k> - Добавляет пользователя в HSS (<imsi> и <imei> состоят из 15 десятичных цифр, а <k> — из 32 шестнадцатеричных цифр)
del_user imsi=<imsi>                   - Удаляет пользователя из HSS
print_users                            - Отображает всех пользователей в HSS

Чтобы добавить подписчика, используйте следующую команду [k — это ключ Ki!]:

add_user imsi=901550000123456 imei=864217022123456 k=D360C2591DE1BF61A11014C33D012246

Терминал ответит «ok», если в синтаксисе не было ошибок.

Вы можете отобразить уже добавленных подписчиков с помощью:

print_users

Вы можете удалить ранее добавленного подписчика с помощью:

del_user imsi=901550000123456

Обратите внимание, что первые 3 цифры IMSI — это MCC (или код страны мобильной связи), а две цифры после MCC — это MNC (или код сети мобильной связи). В приведённом выше примере MCC равен 901, а MNC равен 55. Это не обязательно, но очень помогает мобильной станции установить MCC/MNC вашей сети LTE, как указано на запрограммированных SIM-картах. Вы можете изменить значение IMSI на этапе программирования SIM-карты, чтобы оно соответствовало спецификации тестовой сети: MCC=001 и MNC=01.

Пожалуйста, обратите внимание, что вам потребуется настроить APN на вашем устройстве, чтобы обеспечить успешное подключение к данным. Мы добавим указания о том, как этого добиться, по мере продвижения нашей работы.

Никогда не используйте конфигурацию MCC/MNC коммерческого провайдера!

Тестовые записи

В папке Test capture есть запись, совместимая с приложением LTE_fdd_dl_file_scan. Чтобы использовать эту запись с приёмником octave, используйте следующие команды octave:

fid = fopen("/path/to/LTE_test_file_int8.bin", "r");
iq_vec = fread(fid, inf, "int8");
iq_split_vec = reshape(iq_vec, 2, []);
lte_fdd_dl_receive(iq_split_vec(1,:) + i*iq_split_vec(2,:));

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Реализация 3GPP LTE с открытым исходным кодом. Расширить Свернуть
AGPL-3.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://gitlife.ru/oschina-mirror/zhanghexiang-OpenLTE.git
git@gitlife.ru:oschina-mirror/zhanghexiang-OpenLTE.git
oschina-mirror
zhanghexiang-OpenLTE
zhanghexiang-OpenLTE
master