{"id":883,"date":"2018-10-04T17:14:08","date_gmt":"2018-10-04T17:14:08","guid":{"rendered":"http:\/\/open-cells.com\/?page_id=883"},"modified":"2023-04-13T12:07:39","modified_gmt":"2023-04-13T12:07:39","slug":"uicc-faq","status":"publish","type":"page","link":"https:\/\/open-cells.com\/index.php\/uicc-faq\/","title":{"rendered":"UICC FAQ"},"content":{"rendered":"<h1>Linux version<\/h1>\r\n<p>Our SW is delivered as open source code<\/p>\r\n<p>It can compile on most of Linux versions, as log as you install g++ (gnu C++ compiler)<\/p>\r\n<p>We add a binary version, currently compiled on Ubuntu 22.04<\/p>\r\n<p>It is always better to recompile on your machine:<\/p>\r\n<pre>rm program_uicc ; make program_uicc<\/pre>\r\n<h1>APN<\/h1>\r\n<p>APN is not in the USIM, it is a parameter to set in the UE<\/p>\r\n<h1>ADM code<\/h1>\r\n<p>UICC version 4 can use any ADM code, nevertheless you have to provide one (any 8 figures value) to overwrite the telecom values.<\/p>\r\n<p>The adm code is on each invoice for UICC before serial OC004000. If you enter 8 successive times a wrong ADM, the card update will be locked: the IMSI\/Ki\/&#8230; update won&#8217;t be possible anymore.<\/p>\r\n<h1>Error codes<\/h1>\r\n<p>a UICC\/SIM answers by standard codes.<\/p>\r\n<p>A list of them:<\/p>\r\n<p><blockquote class=\"wp-embedded-content\" data-secret=\"8m3sXcnchX\"><a href=\"https:\/\/www.eftlab.com\/knowledge-base\/complete-list-of-apdu-responses\/\">Complete list of APDU responses<\/a><\/blockquote><iframe loading=\"lazy\" class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; clip: rect(1px, 1px, 1px, 1px);\" title=\"&#8220;Complete list of APDU responses&#8221; &#8212; EFTLab - Breakthrough Payment Technologies\" src=\"https:\/\/www.eftlab.com\/knowledge-base\/complete-list-of-apdu-responses\/embed\/#?secret=xwfxOCITd4#?secret=8m3sXcnchX\" data-secret=\"8m3sXcnchX\" width=\"600\" height=\"338\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe><\/p>\r\n<h1>OP and OPc<\/h1>\r\n<p>OPc is the result of a operation between OP (means operator key) and Ki (user key)<\/p>\r\n<p>The OP is never used in the telecom protocol.<\/p>\r\n<p>So, if you specify a OP in the file hss.conf and in our option &#8216;&#8211;xx&#8217;, they should compute the same OPc<\/p>\r\n<p>program_uicc displays the computed OPc if you pass option &#8211;xx<\/p>\r\n<p>The HSS updates all OPc values in the database if you specify the OP in hss.conf (else set it to the empty string: &#8220;&#8221;)<\/p>\r\n<p>Either you never use OP and set directly OPc in both HSS and program_uicc, or you use OP: both are fine.<\/p>\r\n<h1>SQN (3GPP sequence number)<\/h1>\r\n<p>In the uicc, the SQN increments by +32 after each successful authentication, the HSS must do the same.<\/p>\r\n<p>If the SQN is not correct, the uicc will detect it and refuse the authentication challenge.<\/p>\r\n<p>3GPP defines a authorized gap, to not block a UICC if some failure occurs: the UICC accepts SQN greater than the current one, for at least 10*32 range (so any value between curennt_value+32 and current_value+32 is ok).<\/p>\r\n<p>Our uicc starts at 0, we test all of them before shipping, so SQN is usually set to 32 when they are new.<\/p>\r\n<p>If the synchronization is lost, there is a way to know the current SQN in a uicc (assuming you have the OPc and the Ki).<\/p>\r\n<p>Program_uicc offers to discover the current SQN: add &#8211;authenticate option.<\/p>\r\n<p>This option do a authentication trial (as do the UE+HSS when the UE attaches to the network) with a SQN that is likely wrong.<\/p>\r\n<p>Authentication should fail (as the SQN is not good), but the UICC answer allows to decode the SQN.<\/p>\r\n<p>program_uicc verifies the correct SQN doing\u00a0 a correct authentication and displays the result (the SQN to set in HSS database).<\/p>\r\n<h1>AMF<\/h1>\r\n<p>If your HSS require to set it, the value is 0x8000<\/p>\r\n<p>This value is hard coded inside OAI HSS, it is the right value for regular UICC from any brand.<\/p>\r\n\r\n<h1>VoLTE<\/h1>\r\n<p class=\"wp-block-paragraph\">No ISIM files in our cards.<\/p>\r\n<p>So, if you need to setup a IMS server, for VoLTE, for SMS service, the identifiers are coming from the USIM data.<\/p>\r\n<p>When you use our USIM programming software, you specify the IMSI and the MNC size. IMSI is &lt;MCC&gt;&lt;MNC&gt;&lt;MSIN&gt;<\/p>\r\n<p>The document: <span class=\"markedContent\"><span dir=\"ltr\" role=\"presentation\">GSM Association<\/span> <span dir=\"ltr\" role=\"presentation\">Official Document NG.102 &#8211; IMS Profile for Converged IP Communications<\/span><\/span> tells us:<br \/><em><span id=\"page25R_mcid15\" class=\"markedContent\"><span dir=\"ltr\" role=\"presentation\">If the UICC does not contain an ISIM application, then an IMPI derived from the USIM&#8217;s IMSI<\/span> <span dir=\"ltr\" role=\"presentation\">as per section 13.3 of 3GPP TS 23.003 [7] must be used.<\/span><\/span><\/em><\/p>\r\n<p>The SIP URI, domain is defined in TS 23.003 and 23.228<\/p>\r\n<p>Domain name is: ims.mnc&lt;usimMNC&gt;.mcc&lt;usimMCC&gt;.3gppnetwork.org<\/p>\r\n<p>the IMPI is: &lt;usimIMSI&gt;@ims.mnc&lt;usimMNC&gt;.mcc&lt;usimMCC&gt;.3gppnetwork.org<\/p>\r\n<p>So, the IMPU is sip:&lt;IMPI&gt;<\/p>\r\n","protected":false},"excerpt":{"rendered":"<p>Linux version Our SW is delivered as open source code It can compile on most of Linux versions, as log as you install g++ (gnu C++ compiler) We add a binary version, currently compiled on Ubuntu 22.04 It is always better to recompile on your machine: rm program_uicc ; make program_uicc APN APN is not &hellip; <a href=\"https:\/\/open-cells.com\/index.php\/uicc-faq\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;UICC FAQ&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","footnotes":""},"class_list":["post-883","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/open-cells.com\/index.php\/wp-json\/wp\/v2\/pages\/883","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/open-cells.com\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/open-cells.com\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/open-cells.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/open-cells.com\/index.php\/wp-json\/wp\/v2\/comments?post=883"}],"version-history":[{"count":16,"href":"https:\/\/open-cells.com\/index.php\/wp-json\/wp\/v2\/pages\/883\/revisions"}],"predecessor-version":[{"id":5022,"href":"https:\/\/open-cells.com\/index.php\/wp-json\/wp\/v2\/pages\/883\/revisions\/5022"}],"wp:attachment":[{"href":"https:\/\/open-cells.com\/index.php\/wp-json\/wp\/v2\/media?parent=883"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}