Устройство для сим карт: USB SIM Reader LU980H

Содержание

USB SIM Reader LU980H

C того самома момента, как человечество научилось накапливать и хранить информацию (неважно какую) остро встала задача ее надежного хранения. К сожалению, любые носители являются не столь уж долговечными — даже наскальная роспись может исчезнуть со временем. Впрочем, выход, разумеется, есть всегда — не класть все яйца в одну корзину. Заблаговременное создание резервных копий полностью проблемы надежности хранения, однако позволяет «малой кровью» их решать. Все-таки сложно себе представить, что две копии, физически находящиеся в разных местах, испортятся одновременно. Именно поэтому средства резервного копирования являлись и являются весьма важными в любой области деятельности, в особенности связанной с компьютерными технологиями.

Не стоит думать, что если речь идет о простом «домашнем пользователе», то о средствах резервного копирования можно не заботиться. Разумеется, потеря рабочих файлов на домашнем компьютере вряд ли приведет к многомиллионным убыткам, но уж, как минимум, настроение испортить способна точно. Аналогично и с телефонной книгой на мобильнике — очень быстро телефонная книга заполняется нужными и не очень контактами (выбрать абонента проще, чем набирать номер, который все равно надо где-то хранить), через некоторое время этот способ начинает казаться удобным и надежным, поэтому бумажные записные книжки просто забываются как страшный сон, и все становится хорошо — до первой потери телефона. А дальше снова начинается сбор номеров, по закону подлости оказывается, что человеку нужно бы позвонить, а как раз его номер вы вспомнить никак не можете и т.п. Недаром функция синхронизации телефонной книги мобильного телефона с компьютером стала одной из самых востребованных — люди приобретают кабели или адаптеры беспроводной связи для компьютера нередко только ради ее выполнения, практически не пользуясь другими возможностями соединения мобилы с компьютером, типа заливки мелодий или картинок.

Впрочем, все средства для коммутации телефона с компьютером, как правило, стоят денег. Причем они не универсальны, так что меняющим модели телефонов с одной на другую нередко приходится и выкладывать дополнительные деньги (беспроводные адаптеры универсальны, но Bluetooth или ИК-связь поддерживается до сих пор меньшинством телефонов). В то же время существует универсальный носитель телефонной книжки — сама SIM-карта. Разумеется, ее возможности по сравнению с тем, что предлагают развитые телефонные книги современных телефонных аппаратов можно, в лучшем случае, назвать ограниченными, но это куда лучше, чем ничего. При этом такая книга будет работать в любом случае — в любом телефоне. А моделей, не предлагающих никаких собственных средств для хранения телефонов, до сих пор на руках огромное количество. При этом, нередко, сами по себе эти телефоны никаких средств для связи с компьютером не предоставляют — таков, например, некогда весьма популярный у женщин Samsung SGH-T500: телефонная книжка только на SIM-карте, существующий кабель пригоден лишь для закачки мелодий или картинок. А если и предоставляют, то, приобретая недорого б/у телефон типа, например, Philips Xenium 9@9, вряд ли кто-то побежит покупать кабель для него, тем паче, что для новых моделей этот кабель все равно не подходит. А вот недорогое универсальное средство для обмена информацией непосредственно с SIM-картами наверняка пригодилось бы многим.

Нельзя сказать, что такие устройства на рынке ранее не встречались — встречались, и кое-что у нас на сайте даже тестировалось. Правда вот при своей универсальности требованию «недорогое» они никак не отвечали, да и использовали для подключения к компьютеру устаревшие интерфейсы. Кроме того, и доступность оставляла желать лучшего. Посему появление в московской розничной сети компактного USB-ридера (сильно напоминающего флэшдрайв или компактный картовод), да еще и по цене в районе 10 долларов очень многих не оставило равнодушными. Появилось желание познакомиться с новинкой поближе. Что я и сделал.

Первое впечатление

Устройство поставляется в достаточно симпатичной коробке, не несущей, однако, никакой информации о производителе и названии модели. Про первое, впрочем, сказано, что расположен он в Китае, а по поводу второго — есть наклейка с надписью «LU980H». Именно под таким названием наш герой «прописался» практически во всех Интернет-магазинах.

Сам ридер выглядит просто и симпатично: пластмассовый полупрозрачный корпус со стилизованным изображением телефона на одной из сторон, размерами примерно 57 × 25 × 10 мм. С одной стороны расположен USB-разъем, с другой — слот для карточек. Согласно информации от производителя, поддерживаются как привычные по GSM-телефонам SIM-карты, так RUIM-карты мобильников стандарта CDMA2000. Впрочем, проверить последнее не удалось ввиду отсутствия у меня таковой 🙂 А вот с SIM поиграться удалось. Только сначала пришлось решить вопрос с подключением устройства к компьютеру, что, несмотря на использование интерфейса USB оказалось не совсем тривиальной задачей. Во-первых, на прилагающейся бумажке указано, что первым делом нужно поставить драйвер (причем найдя его в одном из подкаталогов, поскольку общий инсталлятор отсутствует), а потом уже втыкать устройство в свободный порт. Во-вторых, поддержка USB реализована внешним мостом — «внутри себя» ридер имеет последовательный интерфейс. В результате установленные драйверы «подрались» с Mobile Phone Tools от моего телефона Philips — там тоже кабель-то USB, но на деле мост USB-COM того же семейства от Prolific, откуда и конфликт. Впрочем, буквально минут через 10 удалось все заставить работать. После чего отобрал у жены SIM-карту (которую давно обещал забэкапить), и приступил к изучению поставляемого с устройством программного обеспечения.

SIM Reader

Что меня поначалу несколько удивило, так это наличие на прилагаемом CD сразу двух однотипных программ. Потом, впрочем, стало понятно — откуда ноги растут. Но начнем по порядку — с самого простого варианта, называющегося так же, как само устройство.

Программа имеет достаточно простой интерфейс с двумя основными закладками и некоторым количеством кнопок. Первая закладка предназначена для работы с собственно телефонной книжкой. Впрочем, для того, чтобы ее увидеть, нужно ее сначала загрузить. Либо с SIM-карты, либо из файла на диске. Затем можно что-то подредактировать и сохранить книжку — соответственно, опять же, на карту или на диск. Таким образом, операция сохранения всех телефонов выполняется нажатием всего на три кнопки: соединение с устройством, загрузка с карты и сохранение на диск. В этом случае создается файл с расширением TEL и очень простой структурой: простой текст с числом строк, равным числу записей, а каждая строка имеет вид «Телефон Имя». Загруженную книжку можно и распечатать — тоже в очень простом формате. Но более интересны возможности по редактированию записей.

Независимо от того, вставляем мы новую запись или редактируем уже существующую, окно редактирования выглядит так, как показано выше. Всего два текстовых поля, а также информация о том, сколько символов уже введено и сколько еще осталось. Видно, что возможности телефонной книги на SIM-карте достаточно ограничены: имя может иметь длину до 12 байт, а телефон — до 20. И если второе ограничением обычно не является (длина стандартного телефонного номера составляет 12 символов), то вот «впихнуть» имя и фамилию всего в 12 символов (при использовании только латиницы) уже сложнее. Именно поэтому все большей популярностью пользуются специализированные телефонные книги, встроенные в современные аппараты, поддерживающие как минимум два длинных поля для идентификации пользователя, а также несколько полей для хранения телефонов, адресов электронной почты и прочего в каждой записи. Но универсальностью они, по вполне понятным причинам не отличаются, а вот память SIM-карты доступна всегда и везде.

Для чего может пригодиться редактирование записей? Хотя бы для того, чтобы вводить информацию наиболее удобным способом — клавиатура компьютера для этого подходит куда лучше. Конечно, возиться с перестановкой карты и подключением «симридера» к компьютеру только для того, чтобы исправить один телефон смысла не имеет, но бывают и другие ситуации. К примеру, сейчас вот изменились многие коды городов — например, для Москвы имеем 495 вместо 095. Исправление всех прямых номеров в телефонной книжке средствами самого телефона не самая приятная задача, особенно если мы точно не помним, у кого из потенциальных собеседников номера прямые — нужно «залезть» в каждую запись, при необходимости выбрать через меню ее редактирование и т.п. В программе же все номера видны в правой колонке, так что при помощи клавиатуры с мышью все делается быстро и удобно. В общем, случаи, когда удобнее редактировать книжку при помощи компьютера, а не телефона, встречаются не так уж и редко.

Вторая закладка предназначена для работы с хранимыми на карте SMS и работает аналогично первой (т.е. загружаем, при необходимости редактируем и сохраняем). Обе части друг от друга полностью независимы.

Для редактирования сообщений предназначено вот такое окно. Здесь информация о длине (текущей и максимальной) еще более полезна, чем в случае собственно телефонной книги. Для чего может пригодиться работа с SMS? Например, создать несколько шаблонов (особенно удобно для до сих пор встречающихся телефонов с поддержкой отображения, но не ввода русского языка) для последующего использования. Обратите внимание, что поддерживаются и не совсем стандартные возможности по добавлению к сообщению картинки или мелодии, однако пользоваться ими, по вполне понятным причинам, нужно осторожно — это все-таки не MMS 😉

Можно поиграться и с защитой при помощи PIN-кода: разрешить ее или запретить или сменить PIN. Работа с PIN2 не поддерживается, да и с PIN1 нужно быть осторожным — разблокировка при помощи PUK-кода не поддерживается, так что в случае чего придется делать ее при помощи телефона.

Такая вот простая программка. При всей своей простоте отлично подходит для выполнения главной задачи — сохранения, редактирования и восстановления телефонной книги на SIM-карте.

GSM SIM Utility 5.1

Этот пакет состоит из двух основных программ и тоже прилагается к устройству.

Первая программа называется SIM Editor и по своим возможностям напоминает описанный выше SIM Reader. Впрочем, есть у нее и свои особенности. По закону подлости самая крупная из них, а именно работа с расширенной телефонной книжкой, в наших краях практически бесполезна — SIM-карты российских операторов (по-моему, всех) поддерживают только стандартные. А вот мелкими улучшениями, типа возможности сортировки записей (SIM Reader показывает их только в том порядке, в каком они записаны на карту, так что при желании пересортировать записи, например, по алфавиту, что в случае некоторых телефонов, не делающих это автоматически при отображении книжки, очень полезно, придется работать файлом с сохраненными записями), да и вообще — более продуманный интерфейс, вполне можно и воспользоваться. К сожалению, нашлась и неприятная особенность, связанная с сохранением информации. Как и предыдущая программа, SIM Editor создает файлы с расширением TEL, однако структура их другая: кроме имен и телефонов присутствует масса разделителей. В результате чего читать полученный бэкап «вручную» (при помощи текстового редактора, например) не невозможно, но очень и очень неудобно, а ведь такая возможность вполне может пригодиться. То, что файл получается в четыре раза больше по объему в наше время, разумеется, мелочи, но вот менее прозрачный формат сильно не понравился. Самое смешное при этом, что SIM Editor легко открывает созданные при помощи SIM Reader файлы, но не наоборот. Ну а в остальном все примерно равнозначно, так что можете выбирать ту программу, которая больше приглянется.

Вторая же программа заставила меня задуматься. Краткое изучение возможностей показало, что, теоретически, она способна «забэкапить» SIM-карту целиком, скопировать ее или даже сделать «универсальную» SIM-карту под пару операторов (при наличии подходящей болванки. Однако ничего путного у меня получаться не хотело — процесс завершался на стадии подбора Ki. Найденный в программе адрес сайта привел меня в конце концов к такой вот странице, на которой было сказано, что дешифровка SIM-карт с питанием 3.3 В возможна лишь при помощи новейшего ридера компании с интерфейсом USB 2.0. То, что было у меня на руках, по фотографиям идентифицировалось как более старая модель, рассчитанная на USB 1.1, да и надпись на коробке говорила о том же самом. Таким образом, единственное, с чем я мог бы порезвиться, так это с уже вышедшими из употребления картами на 5 В, причем если бы сумел заставить устройство с ними работать (больше они чисто физически). В общем, клонировать симки я все равно вроде бы не собирался, но все равно как-то жаль 😉

Кстати, советую учесть, что некоторые российские магазины в спецификациях данной модели пишут о поддержке как раз USB 2.0, а некоторые, спецификацию не перевирая, в качестве фотографии приводят изображение с сайта www.magicsim.com, относящееся к новой модели. В общем, с нашим рынком надо быть осторожным 🙂

Цена

В таблице ниже приведена средняя розничная цена устройства в Москве, актуальная на момент чтения вами статьи:

Итого

В общем-то, главным недостатком устройства на данный момент является то, что появилось оно в данный момент. Года три назад бы его разметали как горячие пирожки (особенно с учетом более чем вменяемой цены), а вот теперь уже впору задуматься. Нет, конечно, за прошедшее время идея удобного универсального средства резервирования телефонной книги не перестала быть актуальной, однако уменьшилась привлекательность использования для ее хранения именно SIM-карты. Все-таки специальные книжки, встроенные в сами аппараты по своим возможностям на голову ее превосходят, ну а число телефонов, работающих только с памятью SIM, за последнее время в значительной степени сократилось. Да и вопрос коммутации мобильных терминалов с компьютером проработан лучше, чем ранее — некоторые модели используют совершенно стандартные (и очень дешевые) USB-кабели, выросло количество мобильников с поддержкой одного из универсальных беспроводных способов коммутации и т.п. В результате поставленную задачу можно решить другими способами, нередко более удобными. С другой стороны, для тех, кто использует аппараты без собственной памяти для телефонов подобное устройство и сейчас является очень удачным выбором. Да и не только дл них: даже если память телефонной книги и есть, нередко кабель найти не так-то и просто, да и цена его в случае покупки бюджетной модели долларов за 50 вполне может показаться чрезмерной. В то же время необходимые номера можно всегда копировать на SIM-карту, дабы до них можно было «добраться» даже при необходимости смены телефона… ну и для удобной работы с ними при помощи компьютера в случае покупки изученного нами сегодня устройства 🙂

SimBank или 200 SmartCard в одной коробке / Хабр

Как я уже писал в своём первом топике на Хабре про создание печатной платы, моя фирма занимается разработкой устройств для телефонии разного рода VoIP-, GSM-, PBX-шлюзов, розетки-ребутеры управляемые через GSM и прочее. Сегодня я опишу процесс разработки прошивки для устройства SimBank в его PCI версии, где я выступил в роли разработчика схемы для ПЛИС.
История постановки задачи от руководства + история работы устройства

Устройство SimBank предназначено для работы с SIM картами (Subscriber Identification Module — модуль идентификации абонента). Данные карты являются разновидностью ISO-7816 карт. Может использоваться для централизированного хранения Sim-карт или других видов smart-card, и последующего использования их в устройствах типа GSM-шлюз, тюнеры спутникового телевидения или в других устройствах использующих при работе smart-card. Совместно с программным обеспечением Sim-server предоставляет гибкую систему для контроля и учета сим-карт, используемых в ваших приложениях, широкие возможности для настройки и конфигурирования работы системы через удобный web-интерфейс. При этом сами карты хранятся в доступном для вас месте и соединяются с оконечными устройствами по TCP/IP протоколу.


На Хабре есть статьи описывающие устройстви и принцип работы со смарт картами:

Краткое введение в SIM-карты от OgreSwamp
Смарт-карты для самых маленьких от brake
Как устроена смарт-карта от rlepricon

Я их все с удовольствием прочитал перед началом разработки. И повторять написанное в них не буду.


Устройство SimBank

Само устройство было сделано на фирме уже давно и удачно использовалось в течении нескольких лет. Но особенностью всех PCI устройств на фирме было учебное PCI ядро, “которое поставлялось как есть и претензии не принимались”. Они и не выставлялись. С минимальными переделками это ядро ставилось на все без исключения платы. Это позволяло со знанием дела использовать доступное адресное пространство. С одним и тем же Vendor ID, Device ID, Class Code. Так как устройства обычно собираются на фирме и проверяются на работоспособность, то конфликтов не возникало. В условиях ограниченных временных рамок принцип “работает — не трогай” довольно уместен. Так продолжалось до каких-то пор пока на некоторых современных материнских платах не стали проявляться нестабильность в работе или вообще плата не хотела заводится.

Пришла пора более тщательно разобраться с ядром PCI. Учебное ядро доработанное под свои задачи было документировано комментариями, но их не всегда было достаточно. Ссылка на место, откуда оно было взято, датированная 2002 или 2004 годом — не работала.

Задача проста как день: “Устройство должно работать на всех стандартных платах”.
В качестве бонуса: “Даже если это будут не все 200 SIM карт, а 196 или 1хх”.
До этого момента я никогда не работал ни с SIM картами, ни с PCI шиной в качестве разработчика ПЛИС. Только схема и плата. Опыт разработки на VHDL и Verilog уже был.
Разборки решено было начать с PCI, так как часть относящаяся к SIM картам работала.
Первое прочтение спецификации “PCI Local Bus” не подействовало чудесным образом и не сильно пролило свет на то как всё нужно делать. Начитавшись статей о том, как делать и как не делать я так толком ничего еще и не поняв, решил: “нужно делать, по ходу дела разберусь”.
Для PCI у Altera в среде Quartus есть Мегафункция, которая позволяет генерировать ядро PCI с необходимыми нам параметрами. К ядру прилагается хорошая документация, на сайте есть описание PCI-кита, к которому прилагается PCI модель, для поведенческого моделирования в ModelsSim-Altera. Всё это вместе — здорово помогает освоится с нуля в этой теме.
Также Altera разрешает пользоваться своим Vendor ID (1172h).
В спецификации PCI выбран класс устройства не доступный в ранних версиях спецификаций: 07h — Simple Communication Controllers, 05h- Smart Card.
Далее всё должно работать в Linux. Так как у коллеги больше опыта работы и с SIM картами и с PCI, то с него технические требования. За что ему огромное спасибо. Грамотно составленный документ, это половина дела. Хоть и требует “лишней писанины”.

Изучение материала

Так как устройство разрабатывал не я, то мне также необходимо было ознакомится с проектом схемы и платы.
Схемная часть необходима для понимания, что откуда идёт и к чему присоединяется, а плата даёт понять куда в вставлять программатор, SIM карты и где находится та или иная служебная индикация. О том как это сыграло злую шутку со мной я опишу чуть позже.

По схеме мы имеем плату с двумя ПЛИС Altera Cyclone II EP2C35672C8 в корпусе с 672 контактами. Одна ПЛИС присоединена к PCI шине и она же управляет второй ПЛИС. К каждой ПЛИС присоединены по 100 держателей SIM карт. К каждой SIM карте подведен свой сигнал сброса и данных, сигнал CLK уходит на на группу из 10 карт.

Каждая микросхема EP2C35 содержит 105 M4K блоков внутренней памяти. Всего в блоке RAM (включая бит чётности) 4,608 бит.

Блоки поддерживают разные конфигурации от 4K × 1 до 128 × 32(36).

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

Разобравшись с контактами первой от шины PCI микросхемы, я сделал пробный проект ядра PCI в Quartus, который должен был заработать с новыми параметрами на шине. Без какой либо логики — просто ядро.

Получив ответ на команду “lspci -vv” моему счастью не было предела.

Обсудив с разработчиком драйвера и прикладной программы дальнейший ход работы, мы сделали пробный проект в которым драйвер записывал в память данные, а потом их считывал и сверял. Изначально проверка делалась только по первой в схеме микросхеме.
Далее был разбор со второй микросхемой.
Между двумя микросхемами на схеме предусмотрено 36 сигнальных линий + 2 линии между выходами PLL_OUT и CLK. В предыдущем проекте использовались 19 линий адреса и два байта на обмен данными (по одному в каждую сторону) сигналы чтения и сигнал записи. Это было сделано исходя из специфики работы имевшегося ядра. И для получения универсальности драйвера и программ. Так например есть устоявшаяся часть адресов откуда можно вычитать служебную информацию.

В ARM весриях хранится информация типа

Elgato G4_1 — тип устройства (для PCI плат “K16” или “К32”, для Симбанка — “SimBank”)
SIM51215 (SIM900 или другой) — тип установленного GSM или 3G модуля (необходим для выбора набора AT-команд). К описываемому устройству имеет отношение в плане какую SIM карту мы можем через данный модуль вывести в сеть оператора.
2014 — год разработки
ver.14.144 — номер версии прошивки
SN: 0123

И если перед прошивкой её не забыли изменить на правильную, то по этим данным можно узнать много интересного из “амбарной книги”, где записано под кого делался проект и какие отличия от стандарта пожелал заказчик.
Для Симбанка достаточно серийного номера. Так как конструктивно плата Симбанка всегда одна в устройстве. И в PCI версии такая плата одна на фирме.

Болезненное решение

В предыдущей версии ядра использовались два BAR. BAR1 c отображением в память размером 1М, BAR0 как регистры ввода вывода размером 4К. Вcё адресное пространство отдавалось под обе ПЛИС одновременно.
От применения IO решено было отказаться по разным причинам. Во первых разработчику драйвера работать с памятью гораздо проще. Во вторых в сети есть множество рекомендаций почему при возможности стоит отказаться от IO в новых разработках. В третьих, количество IO ресурсов доступное для настройки в ядре от Altera ограничено 256. Ресурсов памяти можно выделить гораздо больше. Но этот переход повлек за собой изменение работы с модулями SIM карт. И означал почти полную переделку модуля обмена с SIM. К тому отход от привычной адресации означал, что мы не сможем прочитать любой своей программой в привычном месте нужные нам битики.
Можно было не делать на два базовых адреса и обойтись одним. Не экономить один тактовый сигнал при обмене с картами первой микросхемы. Это часть обмена данными не занимается передачей голоса и нам не нужно экономить милисекунды для того чтоб получить задержку не более 20 мс. Но такое мне показалось правильным.
Структура

После первых успехов и проверки записи в память тестовых данных пришло время выстроить структуру обмена данными с SIM картами. Примерное представление как нужно будет делать у меня было давно, но после тестов я готов был предположить, что оно будет работать. И тесты проделаны были продуманны и проделаны не зря.
Существующих 36 + 2 сигнальных линий не хватало для того, чтобы транслировать служебные сигналы PCI шины на вторую микросхему без изменений, а ограничивать приём — передачу одним или двумя байтами мне не хотелось. Даже если удастся разнести шину адреса и данных.
Поэтому 32 из 36 сигнальных линий сразу же были отданы на шину данных (и адреса), 1 сигнальная линия управляла общим сбросом системы, а на остальные три гуляем вешаем всё управление. Для передачи сигнала CLK у нас была отдельная линия.
Режим молчания, режим передачи адреса, режим записи одиночных данных, потоковых данных (Burst), режимы записи по маске, чтение и потоковое чтение. Всего восемь состояний шины которые уложились в три сигнальных линии.
Осталось только передать четыре сигнала BE для записи по маске. Их было решено запрятать в старшие четыре бита на шине данных если у нас используется такой режим.

Для каждой SIM карты в ПЛИС был выделен максимально возможный буфер. Так как со Smart картой осуществляется однопроводный полудуплексный интерфейс, карт у нас 100, а ячеек памяти в микросхеме всего 105, то и буфер решено было сделать один на приём и передачу. И обнулять адресацию при начале передачи или приёма. Мне повезло и согласно стандарту от SIM карты не может придти больше 256 байт данных за одну команду. А значит доступный буфер не переполнится пока мы его не вычитаем.
Термин “команда” тут немного отличается от стандарта ISO-7816. Там под командой понимается обращение к карте, затем подтверждение от карты, а затем данные. Но меня интересует количество данных от обнуления до обнуления буфера.

Буфер для обмена данными со второй микросхемой решено было не делать, а сделать непосредственную запись в память для SIM карт во второй микросхемы. Так как у меня уже было занято 102 блока памяти из 105. Выбор первой и второй микросхемы выбирается через обращение к BAR0 или BAR1 соответственно.

Для BAR0 и BAR1 сделаны разные контроллеры. Обращение ко второй микросхеме происходит на такт позже, но это регулируется задержкой выставления сигнала TRDY на стороне PCI шины.

Для каждой микросхемы выделено 64К памяти чего достаточно для обслуживания 128 Smart карт. У нас 100. Остается еще 28 блоков. В двух блоках разместим служебную информацию где будет храниться информация о состоянии сброса карты, скорости обмена. Обратно нам нужно возвращать количество принятых данных от SIMки.

Дальше всё это нужно заставить работать и отладить. Так как проект для 100 SIM карт компилируется очень долго, да и 100 SIM карт спалить гораздо дороже чем 1 или 10 то решено отладить обмен сразу на 1 — 5 картах, а потом уже добавлять все остальные. Причем сделать отладку только первой половины, а уже когда решим, что тут всё получилось, идём во вторую микросхему.

И тут-то меня ждал сюрприз.
Есть схема, на которой контакты карт пронумерованы от 1 до 100. Есть проект платы из которого удачно импортированы настройки контактов ПЛИС (PCI работает, тестовая запись в память работает, обмен между микросхемами также работает). Проект собран для 5 карт, чтоб если ошибусь с началом нумерации от 0 или 1, то вторая карта бы заработала. Дудки.
Ну ничего, у нас есть 10 светодиодов на плате. И хоть ими я собирался заниматься потом, пришлось потом пододвинуть чуточку поближе к сейчас. Добавляем простую вещь на включение/выключение светодиода, а лампочка не горит светодиод не мигает.
Берем осциллограф. CLOCK есть, а сброса нет. Данных тоже нет.
Импорт данных подкачал? Сверяем схему с платой, плату и схему с Pin Planner в Quartus. Совпадают. А сброса нет.
И вот тут мне на помощь приходит старший товарищ. И говорит, что “принцесса в другом замке” в программе “SIM0” находится с другой стороны коробки. И что всегда так было.
Сюда можно заскриншотить кусок из PCB проекта в P-CAD. Там есть подписи сигналов

На плате это SIM 199, а в проекте SIM0. Проект компилируется всего для 5 карточек. (Для 100 он просто ещё не влезает). И поэтому остальные 95 карт просто не обслуживаются. И для них даже буфер памяти в ПЛИС не формируется.

Для того чтобы сэкономить ресурсы решено было тактировать блоки памяти частотой на которой работают SIM карты. Так меньше нужно будет делителей. А с меньшей частотой легче будет влезть в скоростные ресурсы микросхемы. При этом планировалось в буфер для SIM карты писать на скорости шины PCI (33 МГц), а считывать на скорости работы с SIM картами. Из-за ограничений на реализацию двухпортовой памяти в Cyclone II пришлось искать другие решения. В итоге самым простым и правильным оказалось тактировать все блоки частотой 33 МГц от PCI_CLK. А уменьшение количества многоразрядных счётчиков пришлось сделать путём сигналов разрешения для тактирования регистров. К тому же такой подход позволил проще писать временные ограничения для TimingAnalyzer используя multycycle.

Настройка модели. Для успешного завершения всех изобретений нам нужна модель. Для PCI ядра модель предоставляет Altera. Для Smart карт пришлось писать модель самостоятельно.
Минус такого решения, если я неправильно понимаю как должна работать SIM карта, то я так же неправильно напишу модель. Но всё обошлось. Правда не сразу.
Моделирование позволило на первых парах не сильно отвлекать коллегу, хотя потом на этапе отладки в железе нам пришлось хорошенько разбираться. Что не так в модели, и как оно должно быть.

T0/T1 или не нужно делать как лучше, делайте как правильно

Изначально в автомате работы с SIM картой отлаживалась работа по сбросу и чтению с SIM карты ATR, смена скорости и передача простой команды «A0 A4 00 00 02» и на всё это нужно было получить ответ «A4». Мне хотелось сделать автомат который бы по включению питания сам бы всё считывал и к моменту загрузки ОС работал с SIM картой на максимальной для неё скорости. Это бы позволило разгрузить программу от инициализации двухсот(200!) SIM карт во время старта.
С некоторыми SIM картами всё замечательно прошло, а некоторые упорно отдавали h’3B и молчали. В итоге срабатывал таймер в автомате и я сбрасывал SIM карту.Так как она не сказала мне на какой скорости с ней можно поговорить. Если же я получал три или больше трёх байт, то я считал что ATR считан и можно работать дальше. Хотя на модели всё было замечательно, но как оказалось у разных SIM карт по разному выдаются ATR. Одни выдают всю информацию сразу, а у других после отправки заголовка h’3B проходит пауза, а затем выдаётся вся информация. Увеличение паузы решило эту проблему. До поры до времени. Некоторые SIM карты выдают завершающий бит с такой же большой паузой как и в начале после байта h’3B.
Решено. Никаких умных автоматов, самопроизвольных переключений скорости и прочего. Пусть об этом думает процессор. Принимает решение когда выдать сброс, убрать его, и пусть считает когда порция данных от карты завершена.
Но есть проблема. Мы еще не настроили все плюшки, а у нас влазит всего 80-85 SIM карт из необходимых 100 в каждой микросхеме. Пусть это делает драйвер операционной системы. Ему не сложно, а нам просторнее.
Дальше пошла отладка работы с другими командами уже получаемыми от драйвера из ОС. Отладка на большом количестве SIM карт. И новые “открытия”.
197 из 200

Как решить если 197 из 200 карт работают, а три нет то это точная работа или нет? Отработка велась на заблокированных оператором SIM картах, которые еще отвечали на сброс и делали вид, что записывают в себя SMS. Может три карты заблокированы не зря и это они ошибаются? Как я был наивен.
Первая же работа в реальном режиме показала, что с их стороны всё верно. Ищи.
И я нашёл. Не сразу. Помог мой коллега который организовал логи обмена по всем SIM картам. оказалось, что иногда при записи больших команд у меня перескакивал счётчик. И я два раза писал один байт в середине длинной передачи. Так как поведенческое моделирование дело долгое, то длинные команды в модели я не использовал. Ограничивался короткими транзакциями. Делал усеченные размеры счётчиков. Сделал шаг, смоделировал, проверил, заработало. Маленько “Ура!” и дальше продолжим. Записали байт, слово, двойное слово. Прошли пару адресов — значит и дальше всё будет хорошо.
И вот, на маленькой модели всё прекрасно, а в жизни не работает. При этом до момента ошибки SIM карта успевает отдать свой номер (если он записан в карте), ICCID, IMSI и что-то ещё. А при имитации записи/чтения в SIM карту. Не всегда, лишь с тремя из двухсот карточек происходят ошибки.
Ручное сравнивание лога программы и логического анализатора показало, что ошибка происходит в теле SMS сообщения. При этом 197 карт пропускают эту ошибку сквозь пальцы подсчёт CRC. Зачем напрягаться для каких-то SMS, а три карты дождались таки своего звёздного часа.
Я доработал модель запустил, а на ней снова всё в порядке. Как так?
Запускаю модель с полной проверкой счётчиков (Делим 33 МГц на 6, потом на 372, а потом еще и ещё, вместо условно поделим на 4, а потом еще на 16). Запускам вечером модель, в надежде утром всё увидеть…
И утром застаём свою ОС спящей, детским сном. У неё выключался экран в режим энергосбережения. Но до спать у нас с ней не доходило. После 4+ часов моделирования более 300 сигналов и шин, она уснула “не разуваясь”. И утром завелась с третьего раза. Какая это радость, что мне не пришлось восстанавливать всю систему.
День работы, отключение сна. И уже на следующее утро я смог найти ошибку. Правда перед этим целый день у меня ушёл на разборки со всякими другими премудростями. И утром счастливого дня я уже догадывался где ошибку искать.
Она не была последней, были и другие более явные и лёгкие в плане добычи ошибки.
Собираем мозайку

Сделав предположение, о том что работа со Smart Card стабильна, я подключил вторую микросхему. Сначала в проекте. Потом на модели. Потом в железе. Не всё сразу, но и эту часть мы побороли. Как проверить, что все 200 мест работают одновременно и не мешают соседям? Где взять столько SIM карт? Нашлись по сусекам 200 штук. Запустились.
Запустились, отдали банк на проверку. И вот еще один сюрприз. Если в SimBank заняты все места, то всё хорошо. Карты работают стабильно, сбрасываются не часто. А если часть карт не установлена, то на их места приходит периодический сброс. Но иногда сброс приходит на симметричные карты соседней ПЛИС. Почему?
Ответ на этот вопрос я до сих пор толком не знаю. Но зато я теперь знаю, что такое Signal Tap II Logic Analyser в Quartus от Altera. С помощью него получилось через JTAG вытащить состояния сигналов на шине PCI. Изменяя проект и создавая новые сигналы для старта отсчёта или стопа удалось просмотреть некоторые части внутри ПЛИС. Так я например с удивлением узнал, что при чтении или записи больше восьми байт у меня почти никогда не включается Burst режим. По записи вообще никогда, а при чтении не более двух тактов PCI. Хотя из программы приходит команда “считать 40 байт”, а считывание идёт по четыре байта. С выставления адреса на PCI

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

Вопрос к аудитории: есть ли в Linux (Centos 6 32-бит) возможность писать все логи обращения устройству? Желательно при этом не нарушать работы PCI шины. Так чтоб можно было задать Vendor ID/Device ID и сохранять его логи обращений R/W на шине?

Итог

В итоге к окончанию всех улучшений полный проект в ПЛИС расходует 89% логических элементов и 85% доступной внутренней памяти. Всё влезло, а это означает, что элементарная база и структура проекта выбраны верно.
По схеме сэкономлено два 50 МГц генератора, так как в проекте берется только тактовый сигнал PCI 33 МГц, они не используются и в дальнейшем могут не устанавливаться на плату. Проект работает со всеми “подсунутыми” на сегодняшний день материнскими платами.
Устройство может регистрировать все карты в сети одновременно, лишь бы хватило GSM каналов.

Сейчас помимо обновления прошивок и драйверов у заказчиков несколько устройств трудятся у нас. Одни отправляют SMS для проекта SprintSMS. Другие находятся “под охраной” нашей технической поддержки и трудятся на благо заказчика. Это позволило понять суть работы заказчика, и что ему в действительности нужно. Как в плане эргономики работы так и в плане дополнительного функционала программного обеспечения. К тому же стабильно работающее устройство (тук-тук-тук чтоб не сглазить) позволило более качественно отлаживать программное обеспечение.

Но это уже другая история.

Всем спасибо.
Читателям за проявленный интерес к статье. Авторам других статей — за полезные уроки. Создателям Хабра за Хабр. Коллегам за помощь в трудные минуты и «предоставленный» опыт. Руководителю — за понимание.

P.S. В качестве бонуса картинка с web-интерфейса визуального контроля за работой SimBankа.
Отдельное спасибо за него Максиму.


Здесь SimBank запущен в режиме на 100 карт.


Список карт с вычитанной информацией из них. На картах которые требуют ввода PIN-кода часть информации не доступна.


Web-интерфейс доступен и со смартофна.
Жёлтым выделенны карты которые сейчас в работе.

SIM-карты — функции и особенности

Когда-то давным-давно, более 20 лет назад, что по меркам современной ИТ-индустрии можно даже считать неправдой, мобильные телефоны для самоидентификации в сети сотового провайдера использовали записанные в них на заводе специальные номера. Однако такой подход был не очень удобен как пользователям, так и производителям. Они были заинтересованы в «отделении» идентификатора абонента от оборудования. Так возникла идея использования дополнительных индивидуальных карт со встроенными микросхемами. Данный подход используется сегодня в сетях различных стандартов — GSM, CDMA, UMTS, LTE, но мы будем говорить в основном о наиболее массовом варианте — GSM/3G.

Телефонному аппарату, как физическому устройству, остался номер IMEI (International Mobile Equipment Identity), который можно считать уникальным в мировом масштабе. Он участвует в журналах операций сотового оператора и, в принципе, может быть использован для блокировки доступа к сети, поиска украденных телефонов и других подобных действий. В некоторых странах подделка и изменение данного номера считается противозаконным действием. Номер IMEI обычно можно найти на наклейке под батареей и на коробке. С технической точки зрения, он записан в электронном виде в одной из микросхем и, конечно, может быть прочитан и программным образом. Если в телефонном аппарате есть возможность установки нескольких SIM-карт, то и номеров IMEI тоже несколько. Этот номер есть не только у телефонов, но и у модемов, планшетов и других устройств, рассчитанных на работу в мобильных сетях. Формально производители могли бы обойтись именно этим номером и не использовать традиционные серийные номера для своих продуктов, однако сегодня такой «раздельный» подход им удобнее.

Аналогичный номер SIM-карты называется ICCID (Integrated Circuit Card Identifier). Часто его гравируют на самих картах. Он похож на серийный номер устройства — с той лишь разницей, что является уникальным и не повторяется ни на какой другой карте в мире. Хотя если к серийному номеру телефона приписать еще производителя и название модели, то данная комбинация тоже будет уникальной.

Непосредственно идентификация абонента в сотовой сети проходит по номеру IMSI (International Mobile Subscriber Identity), который записан в SIM-карте. Данный номер определяет принадлежность карты оператору и позволяет связать пользователя карты с его аккаунтом у провайдера, включая номер телефона, разрешенные услуги и так далее. В карте хранится и другая уникальная информация, описание которой выходит за рамки этой статьи.

Пару слов стоит сказать про защиту карт. Первый рубеж — PIN-код из четырех цифр. Если вы его не знаете, то не сможете использовать карту для доступа в сотовую сеть или для считывания записной книжки. Этот код пользователь может поменять или отменить (на свежекупленных картах он обычно отключен). В случае, если PIN-код был набран неверно несколько раз, для разблокировки нужно использовать код PUK, также предоставляемый оператором вместе с SIM-картой. Еще реже используются коды PIN2 и PUK2, которые позволяют пользователю ограничить список разрешенных абонентов для исходящих звонков.

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

Один из популярных и сегодня вариантов «полноразмерных» смарт-карт

Технически SIM-карта представляет собой один из вариантов смарт-карт — микрокомпьютеров со своим процессором и памятью, общающихся с внешним миром через интерфейс из нескольких электрических контактов. Смарт-карты встречаются сегодня в банковской сфере, используются для контроля доступа и в различных платежных системах. Обычно на карте есть несколько килобайт постоянной памяти, пара-тройка килобайт оперативной памяти и немного флэша. В случае телефонов последний ранее использовался для хранения записной книжки, но ограничение на число записей (250) и поддержка только двух полей (имя и телефон) практически лишили его сегодня этой роли.

Электронная начинка занимает совсем мало места

Формально карта имеет восемь контактов для подключения к считывающему устройству (если очень постараться, можно попробовать насчитать и больше). Однако в реальности используется только шесть. А учитывая современный прогресс в микроэлектронике, занимает начинка буквально несколько квадратных миллиметров.

Но если говорить о внешних размерах, то начиналось все с формата кредитной карты — 85,6×53,98×0,76 мм. Данный формат смарт-карт используется и сегодня, но удовлетворять пожеланиям производителей сотовых телефонов он перестал уже очень давно. Гораздо более практичной является версия Mini-SIM, которая имеет размеры 25×15 мм со скошенным уголком (для определения необходимой ориентации карты в слоте). Толщина при этом не изменилась. Именно этот формат является сегодня наиболее массовым и встречается в большинстве сотовых телефонов.

Карты форматов Mini-SIM и Micro-SIM используют гораздо меньше пластика

Понятно, что никаких потерь с точки зрения функциональности такое сокращение не принесло. Но надо понимать, что Mini-SIM хороша именно для размещения в корпусе телефонного аппарата. Использовать карту такого размера, например, для таксофонов — очевидно неудобно.

После массового перехода на формат Mini-SIM он очень долго оставался практически единственным вариантом для использования в сфере мобильной связи. Даже успехи в сокращении внешних размеров телефонных аппаратов не требовали дальнейшего уменьшения карты абонента. Но все-таки закрепиться на века ему не дали.

Для установки Micro-SIM (иногда и Mini-SIM) могут использоваться специальные рамки

Один из наиболее активных игроков рынка в своей новой модели смартфона два с половиной года назад реализовал работу с форматом Micro-SIM, размеры карт которого составляют 15×12 мм (толщина снова не изменилась). Для карт этого формата уже практически вся лицевая поверхность была занята контактными площадками. Но и для него не было никаких технических сложностей для размещения чипа, особенно с развитием технологий изготовления микросхем. Отметим, что, с точки зрения дизайна потребительских устройств, рынок не требовал этого шага. Так что скорее компания сыграла в области маркетинга, еще раз повторяя «мы не такие, как все».

Электронная «начинка» занимает очень мало места даже в Mini- и Micro-SIM

Интересно, что в этом году тот же производитель еще раз разыграл эту карту. Последняя модель их смартфона работает исключительно с Nano-SIM, в которой уменьшению подверглась уже и толщина — 12,3×8,8×0,67 мм. В этот формат уже никак не умещаются восемь стандартных контактов, так что остаются только шесть действительно рабочих. Никакие технические функции карты не пострадали и в этот раз, но размеры нового телефона не настолько уменьшились, как можно было бы подумать (а некоторые даже увеличились).

Практически вся лицевая поверхность у Nano-SIM занята контактными площадками

Возникает вполне резонный вопрос: как эта история с миниатюризацией отражается на потребителях? Если говорить о тех, кто покупает новый телефонный аппарат с контрактом и новой картой, то им обычно все равно, какая версия SIM-карты в нем установлена. А уж если телефон у человека в принципе один или он не планирует переставлять карты, то даже не «обычно», а «совершенно».

Для установки Micro-SIM в отсек Mini-SIM можно использовать адаптеры-переходники

Но для тех пользователей, которые привыкли использовать несколько аппаратов и/или SIM-карт, ситуация менее приятная. В случае пары Mini/Micro можно попробовать обойтись так называемыми переходниками/адаптерами (конечно, после смены всех карт формата Mini на карты формата Micro). Плюсов в этой истории нет никаких, только минусы — нужно носить с собой дополнительные детали, а кроме того, переходником можно повредить контакты разъема во время замены (или сборная конструкция может даже застрять в слоте).

Что касается смены карт, то официальный способ состоит в посещении салона вашего оператора, написании заявления, ожидания и всего такого. Кроме того, если вдруг у вас на карте есть какие-то записи, нужно будет позаботиться об их сохранении. Более доступная опция с точки зрения затрат времени — обратиться в многочисленные мастерские, где вашу карту обрежут специальным инструментом за пару секунд (кстати, этим занимаются и крупные салоны и даже сами операторы). Если уж совсем не хочется никуда идти, то острый нож и крепкая рука также способны успешно решить задачу. На первый раз может пригодиться распечатка из интернета со схемой «разделки» (см. например вариант 1, вариант 2).

С Nano-SIM ситуация более сложная, поскольку меньше и линейные размеры, и толщина карты. Способы остаются все те же самые. Но наиболее правильным в настоящее время стоит признать первый из них. Впрочем, учитывая распространенность и стоимость аппарата, для которого вам может потребоваться именно Nano-SIM, это не должно стать проблемой.

Краткое введение в SIM-карты / Хабр

Когда на вопрос «кем вы работаете?» я отвечал «разработчиком ПО для SIM-карт», даже технически подкованные люди частенько удивлялись. Многие думают, что SIM-карта это «что-то типа флешки».

В этой статье я постараюсь кратко рассказать что такое SIM-карта (и смарт-карты в общем), зачем она нужна и что у нее внутри.

На самом деле SIM-карта — это частный случай контактной смарт-карты с микропроцессором. По сути, представляет из себя достаточно защищенный микрокомпьютер с CPU, ROM (опционально), RAM и NVRAM (которая выступает в качестве аналога жесткого диска в PC), с аппаратными генераторами случайных чисел и аппаратной реализацией крипто-алгоритмов.

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


Немного о производстве

Для понимания последующего материала мне кажется правильным вкратце объяснить основные процессы при производстве карт.

1. Производство чипа

Исполнитель: Производитель чипов (silicon vendor).

Конечный продукт: пластина с чипами (wafer).

Чипы производятся несколькими компаниями, наиболее распространенные — Samsung, ST Microelectronics, Infinion, SST etc.


Обратная сторона модуля. Белый прямоугольник в центре — чип SIM-карты:
2. Сборка модулей

Исполнитель: производитель смарт-карт (card vendor) или сторонний завод по сборке модулей.

Конечный продукт: лента с модулями (чип + контактная площадка).

На этом этапе пластина режется на чипы (зачастую пластины режутся производителем чипа), чипы крепятся на контактные площадки, затем распаиваются контакты и чип заливается клеем (см. предыдущее фото обратной стороны модуля). Вся эта конструкция называется «модулем»:


3. Производство карты

Исполнитель: card vendor.

Конечный продукт: SIM-карта.

Модули извлекаются из лент, крепятся на пластиковую основу карты, затем загружаются файловая система, приложения, затем идет персонализация карты — загрузка данных, уникальных для каждой карты (различные ID, ключи итд) и нанесение их на саму карту (например ICCID и PIN коды в случае с SIM-картами).


Типы карт

По типу используемой памяти в последнее время SIM-карты делятся на 2 группы: карты, в которых используется ROM и EEPROM, и карты, где используется Flash память.

В первом типе карт операционная система (ОС) и постоянно используемые и малоизменяемые приложения помещаются в ROM производителем чипа (первый этап производства). Цикл производства в этом случае очень долгий и промежуток между релизом ОС и отгрузкой первых чипов занимает 2-3 месяца. EEPROM используется производителем карт для загрузки файловой системы (ФС) и приложений.

В случае с Flash картой ОС, ФС и приложения хранятся на Flash памяти. Использование Flash позволяет загружать ОС в процессе сборки модулей или при производстве карты (этапы 2 и 3). На данный момент карты с использованием flash памяти практически вытеснили ROM с рынка SIM-карт. Flash чипы дешевле и позволяют достаточно легко вносить изменения в ОС. Также производителю карт проще планировать заказ чипов, так как не надо заказывать чипы с конкретными версиями ОС, а просто заказываются чипы с различным размером памяти, и нужная ОС загружается уже под конкретного заказчика — оператора. Так как прогноз по закупке чипов делается обычно только раз в год, это сильно упрощает планирование.

Java на картах

Да, я не ошибся. По программной «начинке» смарт-карты делятся на 2 большие группы — native и javacard.
Native карты

ПО для native-карт пишется на С. Приложения (если таковые требуются производителем) обычно тесно интегрированы с ОС и загружаются одновременно с ОС на карту. Устанавливать какие-либо приложения, разработанные другой компанией, на native-карту нельзя. Дополнительную функциональность, затребованную оператором, зачастую приходится добавлять в код ОС. Размеры самой ОС из-за использования С и простоты ОС достаточно маленькие (для SIM карт порядка 10-20Кбайт). Поэтому native-карты на данный момент используются в low-cost сегменте, где оператор ничего не хочет на карте, кроме простого меню.
Javacard

В эпоху распространения языка Java компания Sun Microsystems написала спецификации javacard. Идея javacard была в том, чтобы сделать возможным установку приложений (апплетов) на карты различных производителей (и на различные чипы). В 1996 году подразделение смарт-карт корпорации Shlumberger (позже переименованное в Axalto, на данный момент Gemalto) представила первую javacard. Идея достаточно простая. Кроме ОС карта содержит виртуальную машину Java. Разработанное приложение компилируется в байткод и загружается на карту. Приложения в этом случае загружаются уже после загрузки ОС (в процессе производства карты), также, если карта содержит Remote Applet Manager, javacard апплет может быть установлен после выпуска карты посредством CMC.

Язык для разработки под javacard — это сильно урезанная Java. Урезана она намного сильнее, чем в J2ME. Из примитивов остались только boolean, byte, short и опционально поддерживается int (но практически не используется в угоду совместимости, так как поддерживается далеко не всеми производителями). Нет привычных классов типа String (вообще из java.lang перекочевали только Object, Throwable и несколько Exceptions), нет мультипоточности, нет garbage collector’а. Минусы javacard, на мой взгляд, — это скорость работы и большие требования к памяти (как RAM, так и EEPROM/Flash). Java-карты более дороги вследствие использования более дорогих чипов и более сложной структуры ПО.

Приложения

В предыдущем тексте часто упоминались приложения, но человеку, не знакомому со смарт-картами, чаще всего непонятно, что за приложения могут быть на карте.

Во-первых, основная функциональность карты может быть вынесен в отдельное приложение. К примеру, может быть SIM applet, написанный на java, который реализует всю функциональность SIM. Может быть R-UIM приложение (R-UIM карты используются в CDMA сетях). Это может быть приложение Visa или Mastercard, превращающие смарт-карту в банковскую карту. По сути, при использовании java, в ОС можно оставить управление памятью, ввод-вывод и Java машину. При этом, если производителю надо произвести SIM-карты — загружается SIM апплет, если надо сделать Visa — загружается приложение Visa.

Во-вторых, существует класс приложений на картах — microbrowsers. Это интерпретаторы байткода для построения SIM-меню. Это не java байткод, а байткод, понятный установленному браузеру. Меню в этом случае чаще всего разрабатывается на xml-подобном языке разметки, конвертируется в байткод и загружается в браузер. На данный момент наиболее широкое распространение получили браузеры S@T от Simalliance и WIB от Smarttrust. Обе организации не разрабатывают браузеры, они пишут спецификации и сертифицируют браузеры, написаные по этим спецификациям.

В-третьих, это могут быть SIM меню, разработанные на java (без использования браузеров), либо просто какой-то фоновый апплет. К примеру, это может быть апплет, следящий за тем, какой телефон вы используете. Если вы вставили карту в новый телефон, то SIM посылает IMEI нового телефона оператору, а тот, в свою очередь, отправляет вам настройки wap/gprs для вашей модели.

Файловая система

На SIM-картах есть файловая система, так же как и на настольных компьютерах. Файлы бывают 2х типов — DF (Dedicated file — аналог папки) и EF (Elementary file — аналог обычного файла). Корневой DF файл называется MF (Master File).
В файловой системе SIM-карты хранятся секретные ключи, адресная книга, список последних СМС, название оператора, сети, предпочтительные в роуминге, сети, запрещенные к использованию, и т. д. Естественно, существуют уровни доступа к файлам. Ключи зачастую имеют NEVER в качестве доступа на чтение, что исключает возможность их прочитать извне.
Для чего это все нужно?

SIM-меню и остальные «несистемные» приложения являются просто value added services. Основная цель карты — произвести идентификацию и аутентификацию абонента в сети.

Для этого на карте есть IMSI (International Mobile Subscriber Identity) — уникальный идентификатор SIM-карты и 128-битный ключ Ki.

Ниже представлена процедура аутентификации в сети GSM и генерации ключа сессии Kc.


Аутентификация проходит с помощью алгоритма A3, генерация Kc — A8. Authentication Center (AuC) на запрос аутентификации карты генерирует 128-битную псевдослучайную последовательность RAND и отсылает ее SIM-карте. Далее, зная IMSI карты, AuC использует ключ Ki, привязанный к данному IMSI, и данные RAND в качестве входных данных в алгоритмах A3 и A8. Карта одновременно с этим производит те же самые вычисления. Результат вычислений алгоритма A3 Signed Response (SRES) отправляется картой в AuC, на котором полученный SRES сравнивается с вычисленным на AuC. При совпадении результатов процедура аутентификации считается успешно пройденной. Ключ Kc, полученный при использовании алгоритма A8, используется впоследствии для шифрования трафика между телефоном и сетью.

Программы «клонирования» карт используют уязвимость в старой версии алгоритма A8 (COMP128-1). На данный момент в GSM сетях широко используются COMP128-2 и COMP128-3. Уязвимость была найдена еще в 1999 году, но некоторые GSM операторы так и не перешли на использование 2-го и 3-го алгоритмов (уязвимости в которых на данный момент не найдены).

Эпилог

В этой статье я постарался достаточно сжато рассказать что же такое SIM-карты. Надеюсь у меня это получилось. Практически все описаное выше, за исключением процедуры аутентификации, отностится и к USIM-картам, используемым в 3G сетях (UMTS), и R-UIM картам (CDMA сети). Если есть какие-то комментарии или вопросы — пожалуйста пишите.

Ссылки по теме:

→ www.3gpp.org
→ www.3gpp2.org
→ Java Card Technology

Извлеките или замените SIM-карту в вашем iPhone или iPad

Узнайте, как извлечь или перенести SIM-карту в iPhone или iPad (модели с Wi-Fi и сотовой связью).

Используйте только лоток для SIM-карты, входящий в комплект поставки устройства.Например, лоток для SIM-карты от iPhone 6s не поместится в iPhone 7.

iPhone

Найдите свою модель ниже, чтобы найти лоток для SIM-карты. Чтобы открыть лоток для SIM-карты, вставьте канцелярскую скрепку или приспособление для извлечения SIM-карты в отверстие рядом с лотком. Надавите на iPhone, но не с силой. Если вам не удается извлечь лоток для SIM-карты, обратитесь за помощью к оператору связи или в Apple Store.

После извлечения SIM-карты из лотка обратите внимание на выемку в одном углу новой SIM-карты. Поместите новую SIM-карту в лоток — она ​​поместится только с одной стороны из-за выемки. Затем вставьте лоток в устройство полностью и в той же ориентации, в которой вы его извлекали. Лоток тоже подходит только одним способом.

Найдите лоток для SIM-карты с правой стороны:

  • iPhone 11 Pro
  • iPhone 11 Pro Max
  • iPhone 11
  • iPhone XS
  • iPhone XS Max
  • iPhone XR
  • iPhone X

В континентальном Китае лоток для SIM-карты на iPhone 11, iPhone XR, iPhone XS Max, iPhone 11 Pro и iPhone 11 Pro Max может содержать две карты nano-SIM.

Найдите лоток для SIM-карты с правой стороны:

  • iPhone SE (2-го поколения)
  • iPhone 8 Plus
  • iPhone 8
  • iPhone 7 Plus
  • iPhone 7
  • iPhone 6s Plus
  • iPhone 6s
  • iPhone 6 Plus
  • iPhone 6
  • iPhone SE (1 поколение)
  • iPhone 5s
  • iPhone 5c
  • iPhone 5
  • iPhone 4s
  • iPhone 4 (модель GSM)

Найдите лоток для SIM-карты наверху:

  • iPhone 3GS
  • iPhone 3G
  • Оригинальный iPhone

iPad

Найдите свою модель ниже, чтобы найти лоток для SIM-карты.Чтобы открыть лоток для SIM-карты, вставьте канцелярскую скрепку или приспособление для извлечения SIM-карты в отверстие рядом с лотком. Надавите на iPad, но не с силой. Если вам не удается извлечь лоток для SIM-карты, обратитесь за помощью к оператору связи или в Apple Store.

После извлечения SIM-карты из лотка обратите внимание на выемку в одном углу новой SIM-карты. Поместите новую SIM-карту в лоток — она ​​поместится только с одной стороны из-за выемки. Затем вставьте лоток в устройство полностью и в той же ориентации, в которой вы его извлекали.Лоток тоже подходит только одним способом.

Найдите лоток для SIM-карты справа, внизу:

  • iPad Pro 11 дюймов
  • iPad Pro 12,9 дюйма (3-го поколения)

Найдите лоток для SIM-карты справа, внизу:

  • iPad Pro 12.9 дюймов (2-е поколение)
  • iPad Pro 12,9 дюйма (1-го поколения)
  • iPad Pro (10,5 дюйма)
  • iPad Pro (9,7 дюйма)
  • iPad (6-го поколения)
  • iPad (5-го поколения)
  • iPad Air (3-го поколения)
  • iPad Air 2
  • iPad Air
  • iPad mini (5-го поколения)
  • iPad mini 4
  • iPad mini 3
  • iPad mini 2
  • iPad mini

Найдите лоток для SIM-карты слева, ближе к верху:

  • iPad (4-го поколения) *
  • iPad (3-го поколения) *
  • iPad 2 Wi-Fi + 3G (модель GSM) *

* Когда вы вставляете скрепку или прилагаемый инструмент для извлечения SIM-карты, используйте угол 45 °

На iPad Wi-Fi + 3G лоток для SIM-карты находится слева внизу, внизу.

Дата публикации:

.

SIM-карт для планшетов, ключей, маршрутизаторов и других смарт-устройств

Теперь вы можете использовать обычную SIM-карту смартфона в других устройствах, таких как планшет, электронный ключ или мобильный широкополосный маршрутизатор.

Раньше было необходимо купить SIM-карту для мобильного широкополосного доступа, если вы хотели использовать ее в устройствах, отличных от смартфона (например, в планшете, адаптере или мобильном широкополосном маршрутизаторе). Обычные SIM-карты для смартфонов также обычно не работают с устройствами Интернета вещей (IoT), такими как камера, сигнализация или GPS-трекер.

В настоящее время должна быть возможность использовать обычную SIM-карту смартфона на любом устройстве, включая планшет, ключ, мобильный широкополосный маршрутизатор или устройство IoT. Это произошло благодаря постановлению Ofcom в 2018 году, основанному на принципе сетевого нейтралитета и Регламенте открытого доступа в Интернет ЕС. В нем говорится, что мобильные сети не должны различать устройства или оборудование, которые вы используете для доступа к их сети.

Сетевой нейтралитет и SIM-карты для смартфонов

Вы можете использовать обычную SIM-карту смартфона в других устройствах, например в планшете или адаптере.

В Великобритании в сетях мобильной связи исторически продавались два разных типа SIM-карт: SIM-карта для вашего мобильного телефона (с минутами, текстовыми сообщениями и данными) и SIM-карта для мобильного широкополосного доступа (только с данными).

За последние несколько лет рынок обычных SIM-карт для смартфонов стал намного более конкурентным, чем рынок мобильных широкополосных SIM-карт. Таким образом, вы часто можете получить больше данных по той же цене, беря обычную SIM-карту мобильного телефона с минутами, текстовыми сообщениями и данными через мобильную широкополосную SIM-карту, которая включает только данные.Кроме того, можно получить неограниченное количество данных на различных SIM-картах смартфонов всего за 20 фунтов стерлингов в месяц.

До недавнего времени положения и условия многих SIM-карт мобильных телефонов запрещали вам использовать SIM-карту в устройствах, отличных от мобильного телефона (например, вы не сможете использовать SIM-карту смартфона в планшете, адаптере или мобильном телефоне). широкополосный маршрутизатор). В 2018 году Ofcom постановил, что это было нарушением сетевого нейтралитета, как это определено в Положении ЕС об открытом доступе в Интернет:

.

Регламент ЕС об открытом доступе в Интернет, среди прочего, закрепляет фундаментальное право клиентов интернет-провайдеров на доступ к контенту и информации, использование приложений и услуг, а также на использование оконечного оборудования по своему выбору через свою службу доступа в Интернет. через их службу доступа в Интернет.Интернет-провайдеры могут заключать со своими клиентами соглашения о коммерческих и технических условиях обслуживания, но при этом они не могут ограничивать основные права клиентов.

В частности, Ofcom столкнулся с проблемой мобильной сети, которая «накладывала ограничения на устройства, в которых может использоваться SIM-карта — например, где SIM-карта, приобретенная для мобильного телефона, не может использоваться в планшете ».

Поскольку постановление Ofcom было опубликовано в 2018 году, больше не должно быть ограничений, мешающих вам использовать SIM-карту смартфона в других типах устройств.Теперь вы можете использовать либо обычную SIM-карту смартфона, либо специализированную SIM-карту для мобильного широкополосного доступа в устройствах, отличных от вашего мобильного телефона. Ограничения на использование модема и личной точки доступа теперь также должны быть сняты со всех сетей.

SIM-карты для смарт-устройств

В большинстве случаев теперь можно использовать обычную SIM-карту смартфона в любом интеллектуальном устройстве. К ним относятся ваш планшет, мобильный широкополосный ключ, маршрутизатор или другие интеллектуальные устройства, такие как ваш ноутбук, камера, трекер автомобиля, трекер домашних животных, сигнализация и т. Д.

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

  1. Вам нужно покрытие 2G или GSM? Некоторые устройства IoT будут работать только в зоне покрытия 2G (также известной как GSM или GPRS). Если для работы вашего устройства требуется покрытие 2G, вам следует выбрать мобильную сеть, которая использует покрытие EE, O2 или Vodafone. Невозможно использовать Three или другую мобильную сеть, которая использует покрытие Three, поскольку они не предлагают покрытие 2G.Если вам нужно лучшее мобильное покрытие в сельской местности (например, для использования в GPS-трекере), мы обычно рекомендуем выбирать SIM-карту с покрытием EE, поскольку они, как правило, имеют самый широкий географический охват в Великобритании.
  2. Что вам нужно с точки зрения скорости загрузки? Для разных вариантов использования и разных категорий устройств может потребоваться разная скорость загрузки. Например, Vodafone предлагает безлимитные тарифные планы с различными ограничениями скорости загрузки (2 Мбит / с на Unlimited Lite , 10 Мбит / с на Unlimited и неограниченная скорость загрузки на Unlimited Max ).Для устройств с высокой пропускной способностью, таких как маршрутизатор, вам понадобится доступ к более высокой скорости загрузки.
  3. Вы хотите платить ежемесячно или по мере использования? Для большинства устройств с высокой пропускной способностью, которые используются регулярно (например, планшетов, ключей и маршрутизаторов), лучше всего получить SIM-карту с ежемесячной оплатой. Эти SIM-карты начинаются примерно с 5 фунтов стерлингов в месяц с включенным объемом данных (плюс несколько минут и текстов, которые вы можете или не сможете использовать на своем устройстве). Для устройств с низкой пропускной способностью, которые будут подключаться к Интернету только время от времени (например,грамм. будильники и GPS-трекеры), возможно, лучше выбрать SIM-карту с оплатой по мере использования.
  4. Каковы минимальные требования к использованию Pay As You Go? Если вы выбираете SIM-карту с оплатой по мере использования для своего устройства IoT, вы должны учитывать минимальные требования к использованию вашей мобильной сети. Обычно ваша SIM-карта отключается от сети, если вы не используете ее для платных действий хотя бы раз в 6 месяцев. Некоторые устройства IoT поддерживают работу вашей SIM-карты (например,грамм. отправляя текстовое сообщение автоматически по расписанию), но если нет, возможно, вам придется время от времени извлекать SIM-карту, помещая ее в другое устройство, чтобы вызвать платное действие.

Для получения дополнительной информации см. Наше руководство по лучшим SIM-картам с ежемесячной оплатой и лучшим SIM-картам с оплатой по мере использования. Если вам нужен доступ к 5G, вы также можете ознакомиться с нашим руководством по лучшим предложениям только для SIM-карт 5G.

В некоторых случаях специализированная SIM-карта для Интернета вещей может оказаться более выгодной для использования в некоторых устройствах.Например, Vodafone предлагает V-Sim за ежемесячную плату в размере от 2 до 4 фунтов стерлингов в месяц, а также предоплату в размере 5 фунтов стерлингов за SIM-карту. Это может использоваться в широком спектре различных устройств IoT.

Дополнительная информация

Полный обзор лучших SIM-карт, доступных в настоящее время на рынке, см. В нашем руководстве по лучшим предложениям только для SIM-карт в Великобритании.

.

Что такое SIM-карта и как ее вставить в телефон

SIM-карта — это небольшая съемная смарт-карта, которая подключает ваше беспроводное устройство к сети Cricket. SIM-карты бывают трех размеров: Standard (Mini), Micro и Nano.

Универсальный комплект SIM-карты дает вам все необходимое для активации разблокированного совместимого телефона в сети Cricket.В каждый комплект входят выдвижные SIM-карты всех трех размеров. На изображении ниже показано, как три разные SIM-карты сравниваются с размером копейки.

mini or standard SIM card is 25mm x 15mm micro SIM card is 15mm x 12mm nano SIM card is 12.3mm x 8.8mm penny

Как активировать новую SIM-карту?

Готовы активировать SIM-карту? Выберите одну из ссылок ниже, чтобы активировать SIM-карту.

Активируйте онлайн-заказ (с cricketwireless.com)>

Активируйте SIM-карту, которую вы купили в другом месте>

Как мне вставить SIM-карту?

1.Выключи свой телефон.

2. Найдите слот для SIM-карты:

  • Для большинства смартфонов и Moxee Mobile Hotspot: снимите заднюю панель и аккумулятор с телефона, и вы увидите слот для SIM-карты.
  • Для iPhone и некоторых других телефонов: найдите выдвижной лоток для SIM-карты на верхней или боковой стороне телефона. Вставьте кончик инструмента для лотка SIM-карты или небольшую канцелярскую скрепку, чтобы открыть его.
  • Если вам нужна помощь, следуйте инструкциям, прилагаемым к телефону, чтобы найти гнездо для SIM-карты.

3. Вставьте SIM-карту:

  • Если у вас новый телефон Cricket: поищите недостающий уголок на SIM-карте.Совместите его с отсутствующим уголком гнезда для SIM-карты и аккуратно вставьте SIM-карту.
  • Если у вас есть собственный телефон и универсальный комплект SIM-карты:
  1. При необходимости извлеките текущую SIM-карту из гнезда для SIM-карты.
  2. Подберите размер своей SIM-карты к стандартной SIM-карте, Micro-SIM или Nano-SIM в универсальном наборе SIM-карты.

Standard, Micro, and Nano SIM cards: mini or standard SIM card is 25mm x 15mm, micro SIM card is 15mm x 12mm, and nano SIM card is 12.3mm x 8.8mm

  1. Извлеките SIM-карту правильного размера из пластиковой карты размером с кредитную карту.Если вам выпадет слишком маленький размер, вы всегда можете вернуть его на больший размер, который вам нужен.
  1. Поищите недостающий уголок на SIM-карте. Совместите его с отсутствующим уголком гнезда для SIM-карты, а затем осторожно вставьте SIM-карту.

Я получил сообщение об ошибке. Что мне теперь делать?

  1. Выключите устройство.
  2. Извлеките SIM-карту.
  3. Убедитесь, что на SIM-карте написано «Крикет».
  4. Обратите внимание на повреждения SIM-карты, включая повреждение жидкости. При необходимости протрите мягкой тканью.
  5. Повторно вставьте SIM-карту.
  6. Включите телефон снова.

Если эти шаги не помогли, позвоните или поговорите со службой поддержки клиентов Cricket или посетите магазин Cricket.

Что такое номера IMEI и ICCID?

Международный идентификатор оборудования мобильной станции (IMEI) — это 15-значное число, используемое для идентификации телефонов, работающих в определенных мобильных или беспроводных сотовых сетях.IMEI используется только для идентификации телефона и не привязан к номеру телефона или учетной записи.

Идентификатор карты с интегральной схемой (ICCID) — это идентификационный номер для SIM-карт. Каждая SIM-карта Cricket имеет уникальный 20-значный номер ICCID. Он хранится в памяти карты и печатается на карте.

Как мне узнать, совместимо ли мое устройство с Cricket?

Узнайте, совместимо ли ваше устройство с нашей сетью. Начать>

.

SIM-карт — Walmart.com

«,» tooltipToggleOffText «:» Нажмите на переключатель, чтобы получить

БЕСПЛАТНАЯ доставка на следующий день!

«,» tooltipDuration «:» 5 «,» tempUnavailableMessage «:» Скоро вернусь! «,» TempUnavailableTooltipText «:»

Мы прилагаем все усилия, чтобы снова начать работу.

  • Временно приостановлено в связи с высоким спросом.
  • Продолжайте проверять наличие.
«,» hightlightTwoDayDelivery «:» false «,» locationAlwaysElposed «:» false «,» implicitOptin «:» false «,» highlightTwoDayDelivery «:» false «,» isTwoDayDeliveryTextEnabled «:» true «,» useTestingApi » «,» ndCookieExpirationTime «:» 30 «},» typeahead «: {» debounceTime «:» 100 «,» isHighlightTypeahead «:» true «,» shouldApplyBiggerFontSizeAndCursorWithPadding «:» true «,» isBackgroundGreyoutEnabled} «:» false » locationApi «: {» locationUrl «:» https: // www.walmart.com/account/api/location»},»oneApp»:{«drop2″:»true»,»hfdrop2″:»true»,»heartingCacheDuration»:»60000″,»hearting»:»false «}, «feedback»: {«showFeedbackSuccessSnackbar»: «true», «feedbackSnackbarDuration»: «3000»}, «webWorker»: {«enableGetAll»: «false», «getAllTtl»: «

0″}, «search»: {» searchUrl «:» / search / «,» enabled «:» false «,» tooltipText «:»

Скажите нам, что вам нужно

«,» tooltipDuration «: 5000,» nudgeTimePeriod «: 10000}}},» uiConfig «: {«webappPrefix»: «», «artifactId»: «header-footer-app», «applicationVersion»: «20.0.32 «,» applicationSha «:» f7e316b6d268c7ef712d12dd53f34b97954012d8 «,» applicationName «:» header-footer «,» node «:» 981289269 «,» cloud «:» prod-az-eastus2-14 «,» oneOpsEnv «:» prod » a «,» profile «:» PROD «,» basePath «:» / globalnav «,» origin «:» https://www.walmart.com «,» apiPath «:» / header-footer / electro / api » , «loggerUrl»: «/ header-footer / electro / api / logger», «storeFinderApi»: {«storeFinderUrl»: «/ store / ajax / preferred-flyout»}, «searchTypeAheadApi»: {«searchTypeAheadUrl»: «/ search / autocomplete / v1 / «,» enableUpdate «: false,» typeaheadApiUrl «:» / typeahead / v2 / complete «,» taSkipProxy «: false},» emailSignupApi «: {» emailSignupUrl «:» / account / electro / account / api / subscribe «},» feedbackApi «: {» fixedFeedbackSubmitUrl «:» / customer-survey / submit «},» logging «: {» logInterval «: 1000,» isLoggingAPIEnabled «: true,» isQuimbyLoggingFetchEnabled «: true,» isLoggingFetchEnabled «: true,» isLoggingCacheStatsEnabled «: true},» env «:» production «},» envInfo «: {» APP_SHA «:» 9de6c7e80cf73d92246f7d3a0153571b5ca7b734 «,» APP_VERSION «.0.32-20200901_223805.f7e316b6d «},» expoCookies «: {}} null

Укажите местоположение

Введите почтовый индекс или город, штат. Ошибка: введите действительный почтовый индекс или город и штат

Обновите местоположение

Хорошие новости — вы все еще можете получить бесплатную двухдневную доставку, бесплатный самовывоз и многое другое.

Продолжить покупкиПопробуйте другой почтовый индекс null

Доставим на

Сейчас — БЕСПЛАТНАЯ доставка на следующий день

  • То же каждый день Низкие цены
  • .

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *