Wednesday, February 11, 2015

7. Transmission Protocols - 102 221 v8

Berikut akan diterjemahkan/diedit sebagian standard ETSI TS 102 221 v8 untuk bab 7 saja. Ummm...mungkin +Pena Hijau  mau berbaik hati untuk ikut membatu menerjemahkan hehhee.... :D,

Ok....Beberapa istilah yang perlu diketahui sebelum melangkah lebih jauh :

  • Terminal = handphone
  • UICC =  simcard
  • PPS = Protocol and Parameter Selection
  • ATR = Answer To Reset
  • IFSC = Information Field Size for the UICC
  • IFSD = Information Field Size for the terminal
  • NAD = Node ADress byte
  • PCB = Protocol Control Byte
  • INF = INFormation field
  • EDC = Error Detection Code byte
  • DAD = Destination ADdress
  • SAD = Source ADdress
  • CAT =
Bab 7 ini menjelaskan tentang transmisi protocol yang digunakan selama proses komunikasi data antara terminal dan UICC. Akan dijelaskan pula struktur dan pemrosesan perintah yang diinisialisi oleh terminal untuk transmission control dan spesific control pada transmisi protocol dengan mode asynchronous half dulplex. 
Ada dua jenis protocol yang akan dijelaskan, yaitu character based protocol T = 0 dan block based protocol T = 1.
Kedua jenis protocol ini, T=0 dan T=1, sifatnya mandatory untuk terminal. UICC harus dapat mendukung salah satu atau kedua dari protocol T=0 dan T=1 tersebut.
Penggunaan protocol ini akan dimulai setelah ATR atau PSS telah sukses dilaksanakan.
Protocol ini menggunakan konsep layer OSI, setidaknya ada 4 layer yaitu:
  1. Physical layer. Definisi yang terkandung valid untuk T=0 dan T=1
  2. Data link layer, yang terdiri dari
    1. komponen character
    2. komponen block
    3. identifikasi block
    4. pengiriman block
    5. deteksi transmisi dan pengecekan error
    6. handle errors
    7. protokol synchronize
  3. Transport layer, yang mendefinisikan transmisi pesan application-oriented yang sifatnya spesifik untuk tiap protocol.
  4. Application layer, yang mendefinisikan pergantian pesan yang sesuai untuk setiap protokol aplikasi
Ilustrasinya seperti terlihat di bawah :
7.1 Physical Layer
Protocol T=0 dan T=1 akan menggunakan physical layer dan character frame seperti yang akan disebutkan pada subbab 7.2.1

7.2 Data Link Layer
Subbab ini menjelaskan tentang timing, specific option dan error handling untuk protocol T=0 dan T=1.
7.2.1 Character Frame
Karakter yang dikirimkan melalui I/O line dimasukkan pada character frame. Sebelum transmisi dari suatu karakter, I/O line akan berada pada state H. Berdasarkna kesepakatan yang digunakan, logika '1' pada karakter dapat direpresentasikan oleh state H pada I/O line (direct convention) atau state L pada I/O line (inverse convention).
Setiap karakter terdiri dari 10 bit, yaitu :
  • 1 buah start bit pada state L
  • 8 bit yang merupakan data byte
  • 1 bit untuk even parity checking

Parity bit diset dengan suatu cara sehingga jumlah bit 1 pada karakter frame menjadi genap. Waktu awal ditetapkan diantara akhir state H dan awal dari state L, penerima harus dapat memastikan keberadaan start bit sebelum 0,7 etu(receiver time). Kemudian bit berikutnya akan diterima pada interval (n+0,5 +-0,2)etu (n adalah nomor bit). Start bit adalah 1. 
Dalam suatu karakter, waktu dari leading edge untuk start bit sampai trailing edge untuk bit yang ke-n adalah (n+-0,2)etu. Periode antara leading edge dari start bit dari 2 karakter yaitu (10+-0,2)etu, ditambah guardtime. Dalam kasus transmisi yang tidak ada error, selama guardtime, UICC dan terminal akan berada pada reception mode (baik itu I/O line pada state H), kecuali disebutkan kasus yang lain.
Data pertama yang dikirimkan melalu I/O line adalah most significant byte. Urutan bit dalam byte (apakah LSB atau MSB yang dikirimkan pertama kali) diterangkan lebih lanjut pada character TS yang dikembalikan pada ATR seperti yang terdapat pada ISO/IEC 7816-3.
7.2.1.1 Low Impedance I/O Line Behaviour
Jika low impedance pada I/O line telah dipilih, sebagai hasil dari PPS exchange yang sukses, protocol yang dijelaskan pada subbab ini akan berlaku.
State transmisi didefinisikan sebagai awal periode dari bit pertama dari karakter pertama sampai akhir pada guardtime dari karakter terakhir yang dikirim. Selama state transmisi, pengirim akan mengatur I/O line pada level yang sesuai menggunakan pengatur low impedance, kecuali periode error indication, contohnya karakter guardtime dari T = 0.
Setelah penerimaan karakter terakhir dari suatu command atau response ketika arah komunikasi berubah, pihak yang mempunyai giliran untuk transmit data (terminal atau UICC) harus dapat mengatur I/O line ke level yang lebih tinggi menggunakan low impedance driver selama periode inteface inactivity. Selama periode clock stop, terminal akan mengatur I/O line ke state yang lebih tinggi lagi.
Periode interface inacitivity  berakhir ketika pengiriman command yang baru telah dimulai atau response command tersebut telah dimulai.
7.2.2 Transmission protocol T=0
T=0 adalah karakter half-duplex asynchronous yang berdasarkan transmission procotol. Semua commands yang menggunakan protocol T=0 diawali dari terminal yang mengirimkan 5 byte header, yang menginformasikan UICC apa yang harus dilakukan. Terminal akan selalu bertindak sebagai master dan UICC akan selalu bertindak sebagai slave. Arah transmisi data dianggap telah diketahui oleh masing-masing UICC dan terminal.
7.2.2.1 Timing and Specific Options for Characters in T = 0
Interval minimum antara leading edge dari start bit dari dua karakter yang berurutan paling tidak adalah 12 etu. Interval maksimum antara start leading edge dari suatu karakter yang dikirim oleh UICC dan start leading edge dari karakter sebelumnya yang dikirim baik oleh UICC ataupun terminal adalah WWT. Nilai dari WWT tidak boleh melebihi 960xWIxFi/f. WI adalah bilangan yang diterima pada specific interface byte pada TC2. Jika tidak ada TC2, nilai default dari WI adalah 10. Faktor konversi clock rate, Fi, dan faktor konversi baud rate, Di, dapat/mungkin ditunjukkan pada TA1. Jika TA1 tidak ada maka nilai default yang digunakan adalah 372 dan 1 masing-masing digunakan. Jika nilai WWT telah dilewati, terminal harus mengawali proses deaktivasi dalam 960 etu.
7.2.2.2 Command Header
Command akan selalu diawali oleh terminal yang mengirimkan suatu instruksi ke UICC dalam bentuk 5 byte header yang disebut command header. Command header terdiri dari 5 byte, CLA, INS, P1, P2, dan P3. Byte-byte tersebut dengan datanya dikirimkan dalam bentuk Command-Transport Protocol Data Unit (C-TPDU) untuk T=0. Pemetaan C-APDU ke C-TPDU akan dijelaskan pada sub 7.3. Jika terminal mengirimkan header ke UICC, maka dia akan menunggu procedure byte atau status byte.
7.2.2.3 Command Processing
Ketika UICC telah menerima command header, respond yang berisi procedure byte atau status byte akan dikirimkan ke terminal. Terminal dan UICC dapat menjaga track dari data flow dan siapa yang dapat mengakses I/O-line.
7.2.2.3.1 Procedure Bytes
Procedure byte menunjukkan aksi apa berikutnya yang akan dilakukan oleh terminal. Procedure bytes digunakan untuk menjaga komunikasi antara terminal dan UICC. Procedure bytes ini tidak boleh dikirimkan ke application layer. Koding dari procedure byte dan aksi yang dilakukan oleh terminal ditunjukkan pada tabel 7.1 di bawah :
Setelah aksi tersebut dilakukan, terminal akan menunggu procedure byte atau status word berikutnya.
7.2.2.3.2 Statys Bytes
Status bytes, SW1 SW2, membentuk suatu end sequence yang menunjukkan kondisi dari UICC pada state akhir dari suatu command. Secara normal, akhir dari suatu command ditunjukkan dengan SW1 SW2 = '90 00' (bilangan hex).
7.2.2.4 Error Detection and Correction
Prosedur error detection and correction sifatnya mandatory untuk protocol T=0 kecuali jika terminal berada pada proses ATR. Suatu error, dilihat dari sisi penerima, didefinisikan sebagai parity yang salah. Error ditunjukkan pada I/O line, yang di set ke state L pada (10,5+-0,2)etu setelah leading edge dari start bit untuk setiap karakter. I/O line akan berada pada state L dengan durasi maksimum 2 etu dan minimum 1 etu. Pengirim akan mengecek I/O line untuk indikasi parity error pada (11+-0,2)etu yang berawal dari leading edge dari bit pertama pada karakter yang sedang dikirimkan.
Jika UICC atau terminal yang bertindak sebagai penerima mendeteksi adanya parity error pada karakter yang diterima, maka dia akan mengeset I/O line ke state L pada (10,5+-0,2)etu setelah leading edge dari bit pertama pada suatu karakter selama maksimum 2 etu untuk menunjukkan adanya error ke pengirim data (lihat gambar 7.2). Jika pengirim mendeteksi suatu error yang ditunjukkan pada (11+-0,2)etu yang berawal dari leading edge di bit pertama pada suatu karakter yang sedang dikirim, maka karakter tersebut harus dikirimkan kembali setelah minium delay 2 etu.
7.2.3 Transmission Protocol T = 1
Protocol T=1 adalah protocol transmisi dengan sifat half-duplex asynchronous block. Protocol tersebut dapat diawali dengan kondisi sebagai berikut :
  • Setelah proses ATR karena cold reset
  • Setelah proses ATR karena warm reset
  • Setelah berhasil melakukan proses PSS
Komunikasi akan dimulai ketika suatu block yang dikirimkan oleh terminal ke UICC. Pihak yang mengirimkan data berselang-seling antara terminal dan UICC. Block adalah unit data terkecil yang dapat dikirim dan dapat berisi data aplikasi atau transmission control. Pengecekan terhadapat data yang diterima dapat dilakukan sebelum data berikutnya diterima.
7.2.3.1 Timing and Specific Options for Blocks Sent with T = 1
Pada sub bab ini akan dijelaskan pilihan yang berhubungan dengan waktu, ukuran field informasi dan parameter deteksi error untuk suatu blok yang dikirimkan dengan protocol T = 1.
7.2.3.1.1 Information Field Size
IFSC mendefinisikan panjang maksimum field informasi yang terdapat dalam suatu block yang dapat diterima oleh UICC. Nilai default dari IFSC adalah 32 bytes, nilai yang lain dapat ditunjukkan pada TA3 dari ATR. IFSC juga mendefinisikan panjang maksimum field informasi dalam suatu block yang dapat diterima oleh terminal. IFSD mempunyai nilai default 32 bytes juga untuk terminal dan dapat diubah selama suatu sesi card masih berlangsung. Nilai maksimumnya adalah 254 bytes.
7.2.3.1.2 Character Waiting Integer
Character Waiting Integer (CWI) digunakan untuk menghitung Character Waiting Time (CWT). CWI berkisar antara 0 sampai 5. Nilainya diset pada bit ke b4 sampai b1 pada TB3.
7.2.3.1.3 Character Waiting Time
CWT menunjukkan maksimum delay pada leading edges di 2 karakter berurutan dalam suatu block seperti ditunjukkan pada gambar 7.3 di bawah :
Nilai dari CWT dapat dihitung dari persamaan: CWT = (11+2^CWI)etu. 
7.2.3.1.4 Block Waiting Time
BWT didefinisikan sebagai maksimum delay antara leading edge dari karakter terakhir pada suatu block yang diterima oleh card dengan leading edge karakter pertama pada block berikutnya yang dikirim oleh card. Ilustrasi seperti terlihat :
BTW ini juga digunakan untuk mendeteksi card yang tidak responsive.
7.2.3.1.5 Block Guard Time
BGT didefinisikan sebagai delay minimum antara leading edge dari 2 karakter berurutan yang dikirim dengan arah yang berlawanan. Nilai BGT harus 22 etu.
Delay antara karakter terakhir dari suatu block yang diterima UICC dengan karakter pertama pada block berikutnya yang dikirim oleh UICC harus berada dalam interval :
  • BGT < delay < BWT
7.2.3.1.6 Waiting Time Extension
WTX adalah parameter yang digunakan untuk meminta tambahan waktu untuk memproses suatu command.
7.2.3.1.7 Error Detection Code
Parameter TCi pada ATR digunakan untuk mendefinisikan error deteksi yang mana yang akan digunakan. LRC harus digunakan (b1 = 0). Semua bit pada TCi adalah RFU dan akan diset ke 0.
7.2.3.2 Block Frame Structure
Suatu protocol terdiri dari beberapa block, yang dikirimkan antara terminal dan UICC. Setiap block mempunyai struktur seperti yang terlihat di bawah :
Prologue field dan epilogue field sifatnya mandatory, sedangkan information field optional.

7.2.3.2.1 Prologue Field
Prologue field dibagi menjadi 3 bagian mandatory yaitu :
  • Node ADress byte (NAD), 1 byte;
  • Protocol Control Byte (PCB), 1 byte;
  • Length (LEN), 1 byte;
7.2.3.2.1.1 Node Address Byte

NAD menunjukkan sumber dan tujuan dari suatu block. NAD dapat pula digunakan untuk membedakan beberapa logical connection jika memang terdapat beberapa logical channel. NAD juga dapat digunakan untuk menyediakan Vpp control state (bit b8 dan b4). Karena b8 dan b4 tidak digunakan, maka kedua bit tersebut harus diset ke 0. Struktur NAD seperti terlihat pada gambar di bawah :
Pada block pertama yang dikirim terminal, logical connection dibuat berdasarkan pengalamatan di SAD dan DAD. Block berikutnya dalam NAD yang berisi pasangan address yang sama mempunyai logical connection yang sama pula. Hanya nilai default SAD = DAD = 0 yang disupport. Kombinasi yang lain adalah RFU.
7.2.3.2.1.2 Protocol Control Byte
Semua informasi yang dibutuhkan mengontrol transmisi dikirimkan pada Protocol Control Byte (PCB). Koding dari PCB menspesifikasikan type dari setiap block. Pada protocol T=1, terdapat 2 jenis block yang disupport, yaitu :
  • Information block (I-block): digunakan untuk mengirimkan command dan respon APDU;
  • Receive-ready block(R-block): digunakan untuk mengirimkan ACK
  • Supervisory block(S-block): digunakan untuk mengirimkan control information
Tabel 7.4 sampai 7.9 dibawah memperlihatkan format dari PCB untuk setiap tipe-tipe block yang dimulai dari I-block.
Bit b6 menunjukkan apakah block ini berupa request (b6=0) atau response (b6=1).
7.2.3.2.1.3 Length

Byte length menunjukkan jumlah byte pada field information dari suatu block. Jumlah byte dapat berkisar antara 0 byte sampai 254 byte, tergantung dari type blocknya. Nilai LEN = '00' menunjukkan bahwa field information tidak ada dan nilai 'FF' adalah RFU.
7.2.3.2.1.4 Information Field
Information field, INF, sifatnya optional dan tergantung pada type block dimana field akan digunakan.
7.2.3.2.2 Epilogue Field
Epilogue field berisi byte Error Detection Code (EDC). EDC ini digunakan untuk mengirimkan deteksi error dari block yang telah dikirimkan. LRC yang didefinisikan pada ISO/IEC 7816 harus digunakan.
7.2.3.2.3 Block Notations
7.2.3.2.3.1 I-block
I-blocks dinyatakan sebagai : I(N(S),M) dimana :
  • N(S) adalah nomor send-sequence dari block
  • M adalah mode-data yang digunakan pada chaining function
7.2.3.2.3.2 R-block

R-block dinyatakan sebagai : R(N(R)), dimana :
  • N(R) adalah jumlah I-block yang harapkan
7.2.3.2.3.3 S-block

S-block selalu digunakan secara berpasangan. S(request) selalu diikuti oleh S(response) block. S-block dinyatakan sebagai berikut:
  • S(RESYNCH request), digunakan untuk permintaan resynchronization
  • S(RESYNCH response), digunakan untuk memberikan ACK resynchronization
  • S(IFS request), digunakan untuk menawarkan ukuran maksimum dari information field
  • S(IFS response), digunakan untuk memberikan ACK pada information field
  • S(ABORT request), digunakan untuk permintaan pembatalan dari chain function
  • S(ABORT response), sebagai ACK dari S(ABORT request)
  • S(WTX request), digunakan untuk permintaan penambahan waktu dari waiting time
  • S(WTX response), digunakan sebagai ACK untuk S(WTX request)
7.2.3.3 Error Free Operation

Aturan dibawah menjelaskan tentang operasi error free dengan T = 1.
  • Block pertama yang dikirim ke UICC harus merupaka I-block dengan N(S)=0 atau S-block.
  • Jika pengirim S mengirimkan I(Ns(S),0), block tersebut diberikan ACK oleh receiver R dengan I(Nr(S),M). Isi dari I(Nr(S)) menunjukkan transfer data dan penerima telah siap untuk menerima block selanjutnya dari pengirim.
  • Jika pengirim S mengirim I(Ns(S),1), block tersebut harus diberikan ACK oleh penerima dengan R(Nr(R)), dimana Ns(S) != Nr(R), untuk menunjukkan bahwa block yang diterima telah benar dan penerima telah siap untuk menerima block berikutnya.
  • UICC dapat menggunakan lebih dari BWT untuk memproses block sebelumnya yang diterima, yaitu dengan mengirimkan S(WTX request). Kemudian terminal memberikan ACK dengan S(WTX response). Periode waktu yang baru ini dimulai dari leading edge dari karakter terakhir pada S(WTX response).
  • Untuk mengganti nilai IFSD, terminal mengirimkan S(IFS request). Request tersebut akan di ACK oleh UICC dengan S(IFS response) dengan INF yang sama. IFSD yang baru ini dianggap valid selama tidak ada S(IFS request) yang diterima oleh UICC.
  • Ketika penerima telah menerima sejumlah karakter seperti ditunjukkan pada LEN dan EDC, maka kini giliran penerima untuk mengirimkan block data selanjutnya.
7.2.3.4 Error Handling untuk T = 1

Komponen block dari data link layer dapat mengatasi error seperti :
  • BWT time-out;
  • Menerima block data yang tidak valid, contohnya block dengan parity errors, EDC errors, invalid PCB, invalid length, kehilangan sinkronisasi atau gagal menerima S(... response) setelah mengirimkan S(... request).
Resinkronisasi dari protocol dapat dilakukan dengan 3 level. Jika satu level tidak berhasil, maka dapat digunakan level berikutnya.
  • Untuk terminal, 3 level tersebut adalah :
    • Retransmisi blocks
    • Penggunaan S(RESYNCH request)
    • Card reset atau deactivation
  • Untuk UICC, 3 level tersebut adalah
    • Retransmisi blocks
    • Penggunaan S(RESYNCH response)
    • Tanpa aktivitas/aksi dari terminal, UICC menjadi tidak responsif
7.2.3.4.1 Protocol Initialization
Setelah proses ATR karena warm reset atau prosedur PPS yang berhasil, komunikasi antara terminal dan UICC dapat dilakukan kembali. Tetapi jika terminal gagal menerima block yang error-free, pada permulaan prosedur protokol, maka boleh dilakukan 2 kali usaha berikutnya dalam menerima block yang error-free sebelum UICC tersebut direset kembali atau dideactive.
Jika respond block pertama yang dikirim terminal tidak dikirim dalam BTW, terminal harus mengirim sebuah R(0).
Ketika protokol telah diinisialisasi dan block pertama yang diterima oleh UICC tidak valid, UICC memberikan respond dengan R(0).
Jika terminal gagal untuk menerima block yang error-free selama card-session, maka boleh melakukan 2 usaha lagi dalam hal penerimaan block error-free sebelum S(RESYNCH request) dikirim.
7.2.3.4.2 Block Dependent Errors
Ketika sebuah I-block telah dikirim dan terjadi BWT time-out atau invalid block telah diterima (oleh terminal), sebuah R-block dikirim, dengan meminta N(R)nya untuk I-block yang diharapkan dengan N(S)=N(R).
Ketika R-block telah dikirim dan invalid block diterima atau BWT time-out, maka R-block harus dikirimkan kembali.
Ketika sebuah S(... request) telah dikirim dan terjadi BWT time-out atau response yang diterima bukan S(... response), maka S(... request) tadi harus dikirimkan kembali. Tetapi jika S(... response) telah dikirim dan terjadi BWT time-out atau invalid block diterima oleh terminal, maka R-block yang dikirim. Terminal tidak boleh mengirim S(IFS request) sebelum R-block meng-ACK penerimaan I-block sebelumnya dikirim oleh card.
Ketika UICC mengirimkan S(IFS request) dan menerima block yang invalid, S(IFS request) harus dikirim kembali (sekali saja dalam extra time) untuk menerima S(IFS response). Setelah gagal dua kali untuk menerima S(IFS response), UICC harus tetap berada dalam reception mode.
7.2.3.5 Chaining
Chaining memungkinkan terminal atau UICC untuk mengirimkan data/informasi yang lebih besar dari IFSC atau IFSD. Jika informasi yang lebih besar dari IFSC atau IFSD dikirimkan, maka informasi tersebut harus dibagi dalam beberapa bagian, setiap bagian mempunyai panjang <= IFSC atau IFSD. Setiap bagian harus dikirim dalam I-block menggunakan chaining function.
Nilai M-bit pada PCB di I-block mengontrol chaining function sesuai dengan :
  • M = 0, block yang sekarang tidak terhubung(chained) dengan block berikutnya
  • M = 1, block yang sekarang terhubung dengan block berikutnya
Ketika penerima menrima lebih banyak I-block, R(N(R)) harus dikirim. N(R) = N(S) dari I-block yang diharapkan. Paling tidak ada satu block berantai yang mengikuti.
Suatu physical error, contonya kelebihan buffer, pada UICC dapat menyebabkan error pada proses chaining ini. Untuk membatalkan proses chaining, S(ABORT request) dapat dikirim oleh transmitter atau receiver. Request tersebut harus dijawab dengan S(ABORT response). ketika S(ABORT response) telah diterima, R-block dapat dikirim oleh terminal ataupun UICC untuk memberikan giliran siapa berikutnya yang akan mengirim data.
7.2.3.5.1 Aturan Chaining 
  • Ketika terminal bertindak sebagai penerima, terminal akan menerima rangkaian I-block yang dikirim dari UICC. Panjang setiap block tersebut adalah <= IFSD.
  • Ketika UICC bertindak sebagai penerima, UICC akan menerima rangkain I-block yang dikirim dari terminal. Panjang tiap block harus sama dengan IFSC kecuali block terakhir yang mempunyai panjang antara 0 sampai IFSC.
  • Ketika terminal bertindak sebagai pengirim, semua I-block yang sifatnya chained harus mempunya panjang LEN=IFSC bytes kecuali I-block yang terakhir yang dapat mempunyai panjang antara 0 sampai IFSC.
  • Ketika UICC bertindak sebagai pengirim, semua chained I-block harus mempunyai panjang LEN <= IFSD byte untuk setiap block.
  • Ketika UICC yang bertindak sebagai penerima dan menerima block dengan LEN > IFSC, maka block tersebut harus dibuang dan di-ACK dengan R-blcok dengan bit b1 sampai b4 yang mempunyai nilai 2 pada PCB.
Untuk alasan efisiensi, tidak dianjurkan untuk mengirim I-block yang kosong.

7.3 Transport Layer
Pada bagian ini akan dijelaskan tentang bagaimana APDu dikirimkan antara terminal dan UICC.
7.3.1 Transport of an APDU using T = 0
Berikut akan dijelaskan tentang mapping C-APDU ke R-APDU untuk protokol T = 0, pertukaran APDU dan penggunaan dari GET RESPONSE command untuk kasus 2 dan kasus 4.
7.3.1.1 Mapping of APDUs to TPDUs
Mapping C-APDU ke header command T=0 bergantung kepada kasus command tersebut. Mapping data (jika ada) dan status yang dikembalikan oleh UICC atas R-APDU juga tergantung pada panjang data yang dikembalikan.
Procedure bytes '61XX' dan '6CXX' dikembalikan oleh UICC untuk mengontrol pertukaran data antara transport layer pada terminal dan UICC dan sebaiknya tidak pernah dikirimkan ke application layer dari terminal. Pemroresan command pada UICC tidak sempurna jika dia telah mengembalikan procedure bytes '61XX' atau '6CXX'.
Status normal pada penyelesaian suatu command ditandai dengan UICC yang mengembalikan status words '9000' ke transport layer terminal. Transport layer terminal tidak akan melanjutkan suatu command (sebagai contoh melewatkan R-APDU ke application layer dan menunggu C-APDU dari application layer) pada penerimaan suatu status words (tetapi tidak pada penerimaan procedure bytes '61XX' atau '6CXX') dari UICC. Dalam kasus 4 command, segera setelah diikuti transmisi command data yang sukses ke UICC, transport layer dari terminal akan melanjutkan pemroresan command jika warning status bytes ('62XX' atau '63XX') atau status byte yang berhubungan dengan applikasi ('9XXX' kecuali '9000') diterima.
Mapping data di bawah dan status yang dikembalikan UICC atas R-APDU adalah untuk informasi dan hanya berlaku setelah UICC menyelesaikan pemroresan dari command, sukses atau tidak, dan semua data (jika ada) telah dikembalikan oleh UICC dalam kontrol procedure bytes '61XX' dan '6CXX'. Informasi lebih detail untuk penggunaan procedure bytes INS, __INS, dan '60' tidak dijelaskan.
Status yang dikembalikan oleh UICC harus berhubungan dengan command yang terbaru yang diterima saat ini. Dalam hal GET RESPONSE yang digunakan untuk menyelesaikan pemroresan command untuk kasus 2 atau kasus 4, status yang dikembalikan oleh UICC setelah menerima GET RESPONSE harus berhubungan dengan perintah GET RESPONSE, bukan dalam kasus 2 atau 4 dimana dia diselesaikan.
7.3.1.1.1 Case 1
C-APDU dimapping ke C-TPDU dengan memasukkan nilai '00' ke bagian body (P3='00').
Alurnya sebagai berikut :

  • Transport layer terminal mengirimkan T = 0 command header ke UICC.
  • Pada penerimaan command header tersebut pada UICC, dalam kasus pemroresasn normal atau abnormal, UICC akan mengembalikan status ke transport layer terminal. UICC akan menganilisa T = 0 command header untuk menentukan apakah pemroresannya termasuk dalam kasus 1 atau kasus 2 yang meminta semua data sampai panjang maksimum yang tersedia.
  • Pada penerimaan status dari UICC, transport layer terminal tidak akan melanjutkan pemroresan dari command tersebut.
Lihat lampiran C untuk informasi lebih detail pada pertukaran data antara transport layer pada terminal dan UICC.
Status word yang dikembalikan ke transport layer terminal dari UICC setelah penyelsaian dari suatu command dipetakan ke mandatory trailoer R-APDU tanpa perubahan apapun.
7.3.1.1.2 Case 2

C-APDU dipetakan ke C-TPDU tanpa perubahan apapun.
Alurnya sebagai berikut :

  1. Transport layer terminal akan mengirim T = 0 command header ke UICC.
  2. Pada penerimaan command header di UICC:
    1. Pada pemroresan normal akan mengembalikan data dan satus ke transport layer termianl. UICC akan menggunakan procedure bytes '6CXX' (dan jika dibutuhkan, procedure bytes '61XX') untuk mengontrol data yang dikembalikan (lihat di bawah); atau
    2. Pada pemroresan abnormal, UICC hanya akan mengembalikan status saja ke transport layer terminal
  3. Pada penerimaan data (jika ada) dan status dari UICC, transport layer terminal akan menghentikan pemroresan dari command tersebut.
Lihat lampiran C untuk informasi lebih detail tentang pertukaran data antara transport layer terminal dan UICC, termasuk penggunaan procedure bytes '61XX' dan '6CXX'.
R-TPDU dipetakan pada R-APDU tanpa perubahan apapun.
Data (jika ada) dan status yang dikembalikan ke transport layer terminal dari UICC setelah selesainya pemroresan suatu command dipetakan ke R-APDU dengan cara sebagai berikut :
  • Data yang dikembalikan (jika ada) dipetakan ke conditional body dari R-APDU. Jika tidak ada yang dikembalikan, conditional body dari R-APDU dibiarkan kosong saja.
  • Status yang dikembalikan dipetakan ke mandatory trailer pada R-APDU tanpa perubahan apapun.
7.3.1.1.3 Case 3

C-APDU dipetakan ke C-TPDU tanpa perubahan apapun. Lc adalah suatu nilai antara 1 sampai 255.
Alurnya sebagai berikut :

  1. Transport layer terminal akan mengirimkan T = 0 command header ke UICC.
  2. Pada penerimaan command header tersebut, jika UICC :
    1. Mengembalikan procedure byte, transport layer dari terminal akan mengirimkan porsi data dari conditional body C-APDU ke UICC dengan aturan dari procedure byte yang dikembalikan UICC
    2. Mengembalikan status, transport layer dari terminal akan menghentikan pemroresan dari command tersebut.
  3. Jika pemroresan tidak dilanjutkan/dihentikan pada step 2.b, UICC akan mengembalikan status yang diterima dari conditional body C-APDU dan penyelesaian dari pemroresan command.
  4. Pada penerimaan status dari UICC, transport layer terminal akan menghentikan pemroresan dari command tersebut.
Lihat lampiran C untuk informasi lebih detail mengenai pertukaran data antara UICC dan terminal. 
Status word yang diterima oleh transport layer terminal setelah menyelesaikan pemroresan dari suatu command, atau status word yang dikembalikan UICC yang menyebabkan transport layer menghetikan pemroresan command tersebut dipetakan ke R-APDU tanpa perubahan apapun.
7.3.1.1.4 Case 4

C-APDU dipetakan ke C-TPDU dengan menghilangkan byte terakhir (Le).
Alur pertukaran datanya sebagai berikut :

  1. Transport layer terminal akan mengirimkan T=0 command header ke UICC.
  2. Pada penerimaan command header tersebut, jika UICC :
    1. Mengembalikan procedure byte, transport layer terminal akan mengirimkan porsi data pada conditional body C-APDU ke UICC dengan kontrol dari procedure byte yang dikirimkan UICC sebelumnya.
    2. Mengembalikan status, transport layer terminal akan menghentikan pemroresan command tersebut.
  3. Jika pemroresan tidak dihentikan pada step 2.b, conditional body C-APDU yang diterima, UICC akan :
    1. Pada normal processing, akan mengembalikan procedure bytes '61XX' ke transport layer terminal yang meminta untuk memberikan GET RESPONSE command agar dapat menerima data dari UICC; atau
    2. Pada abnormal processing, hanya mengembalikan status saja ke transport layer terminal.
  4. Pada penerimaan procedure bytes atau status pada step 3, jika UICC :
    1. Mengembalikan procedure bytes '61XX' seperti pada 3.a, maka transport layer terminal akan mengirimkan GET RESPONSE command header ke UICC dengan P3 yang nilainya diset ke nilai yang kurang dari atau sama dnegan nilai yang terdapat pada byte 'xx' di '61XX' tersebut; atau
    2. Mengembalikan status seperti pada 3.b yang menunjukkan warning ('62XX' atau '63XX'), atau status yang berhubungan dengan applikasi ('9XXX' tetapi bukan '9000'), maka transport layer dari terminal akan mengirimkan perintah GET RESPONSE dengan Le = '00'; atau
    3. Mengembalikan status seperti pada step 3.b yang tidak termasuk dalam step 4.b, maka transport layer terminal akan menghentikan pemroresan dari command tersebut.
  5. Jika pemroresan command tersebut tidak dihentikan pada 4.c, GET RESPONSE command akan diproses sesuai dengan aturan pada command case 2.
R-TPDU dari UICC yang menunjukkan bahwa UICC telah melakukan perintah yang betul dan yang menunjukkan bawah UICC mempunyai data lebih untuk dikirimkan dengan panjang Luicc bytes. R-TPDU ini dipetakan ke R-APDU tanpa perubahan apapun.
Lihat lampiran C untuk informasi lebih detail tentang pertukaran data antara terminal dan UICC, termasuk penggunaan dari procedure bytes '61XX' dan '6CXX'.
7.3.1.1.5 Penggunaan Procedure bytes '61XX' dan '6CXX'

UICC mengembalikan procedure bytes '61XX' dan '6CXX' ke transport layer terminal untuk menunjukkan cara yang digunakan untuk memperoleh data yang diminta oleh command yang sedang diproses. Procedure tersebut hanya digunakan ketika melakukan pemroresan command pada kasus 2 atau 4 menggunakan T = 0.
Procedure '61XX' memerintahkan transport layer terminal untuk mengeluarkan GET RESPONSE command ke UICC. P3 dari GET RESPONSE tersebut di set ke 'XX'.
Procedure '6CXX' memerintahkan transport layer terminal untuk segera mengirimkan command header sebelumnya dengan P3 = 'XX'.
Penggunaan procedure byte tersebut selama pemroresan error free pada kasus 2 dan 4 dijelaskan di bawah. Dalam kasus terdapat error, UICC dapat mengembalikan status yang menunjukkan error atau warning selain mengembalikan response '61XX' atau '6CXX'.
7.3.1.1.5.1 Case 2 Commands

  1. Jika UICC menerima command header untuk case 2 dan Le='00' (dengan Luicc < 256 bytes) atau Le > Luicc, maka UICC akan mengembalikan :
    1. Procedure bytes '6C Luicc' yang memerintahkan transport layer terminal untuk segera mengirimkan kembali command header dengan P3 = Luicc; atau
    2. Status yang menunjukkan warning atau kondisi error (tetapi bukan SW1 SW2 = '90 00')
  2. Jika UICC menerima command header untuk case 2 dan Le='00' (dengan Luicc=256 bytes) atau Le=Luicc, maka UICC akan mengembalikan :
    1. Data dengan panjang Le (=Luicc) dengan kontrol dari procedure bytes INS, __INS, atau '60' yang diikuti oleh yang status yang berhubugan; atau
    2. Procedure bytes '61XX' yang memerintahkan transport layer terminal untuk segera mengirimkan GET RESPONSE command dengan panjang maksimum 'xx', dimana 'xx' lebih kecil dari Luicc (hal ini dapat terjadi jika buffer data dari card lebih kecil dari Luicc); atau
    3. Status yang menunjukkan warning atau kondisi error (tetapi bukan SW1 SW2 = '90 00').
  3. Jika UICC menerima command header untuk case 2 dan Le < Luicc, UICC akan mengembalikan :
    1. Data yang panjangnya Le dengan kontrol dari procedure bytes INS, __INS, atau '60' yang diikuti oleh procedure bytes '61XX' yang memerintahkan transport layer terminal untuk mengirimkan GET RESPONSE command degan panjang maksimum 'xx'; atau
    2. Status yang menunjukkan warning atau kondisi error (tetapi bukan SW1 SW2 = '90 00').
7.3.1.1.5.2 Case 4 commands

Jika UICC menerima command case 4, setelah pemroresan data yang dikirim dengan C-APDU, UICC akan mengembalikan :

  1. Procedure bytes '61XX' yang memerintahkan transport layer terminal untuk mengirimkan GET RESPONSE command dengan panjang maksimum 'xx'; atau
  2. Status yang menunjukkan warning atau kondisi error (tetapi bukan SW1 SW2 = '90 00').
GET RESPONSE command yang kirimkan akan diperlakukan seperti yang disebukan pada kasus 2 di atas.
7.3.2 Transporation of a APDU using T = 1

C-APDU dikirim dari application layer dari terminal ke transport layer terminal yang sama. Transport layer memetakan C-APDU pada INF I-block tanpa perubahan apapun. I-block selanjutnya dikirim ke UICC. Respond data (jika ada) dan status selanjutnya dikembalikan oleh UICC ke transport layer terminal pada INF I-block. Jika UICC mengembalikan status yang menunjukkan :

  • Warning ('62XX' atau '63XX');
  • Application condition ('9XXX'); atau
  • Kondisi berhasil dari command yang bersangkutan ('9000');
Maka UICC juga harus mengembalikan data (jika memang ada) yang berhubungan dengan command tersebut. Tidak ada data yang harus oleh UICC jika UICC mengembalikan status.
Isi dari INF pada I-block dipetakan ke R-APDu tanpa perubahan apapun dan dikirimkan ke application layer dari terminal. Pengiriman pesan APDU dengan T = 1 dipetakan ke I-block sesuai dengan 4 kasus yang dijelaskan sebagai berikut.
7.3.2.1 Case 1

C-APDU dipetakan ke INF pada I-block tanpa perubahan apapun.
Response yang diterima dari INF pada I-block ini dipetakan ke R-APDU tanpa perubahan apapun.
7.3.2.2 Case 2
C-APDU dipetakan ke INF pada I-block tanpa perubahan apapun.
R-APDU terdiri dari INF I-block atau rankaian INF dari I-block yang diterima pada respon yang sama yang di-chained.
7.3.2.3 Case 3
C-APDU dipetakan tanpa perubahan apapun ke INF atau rangkain dari beberapa I-block yang di-chained.
INF dari I-block dipetakan ke R-APDU tanpa perubahan apapun.
7.3.2.4 Case 4
C-APDU dipetakan tanpa perubahan apapun ke INF atau rangkain beberapa I-block yang berantai.
Response terdiri dari INF I-block atau rangkaian INF I-block yang berantai.

7.4 Application Layer
Protocol application terdiri dari kumpulan pertukaran data antara application layer dan transport layer dari terminal.
Setiap langkah pada pertukaran data application layer terdiri dari pasangan command-response, dimana application layer terminal mengirim perintah ke UICC melalui transport layer terminal, dan UICC memproses command tersebut dan mengirimkan respon ke application layer terminal menggunakan application layer UICC dan transport layer terminal. Setiap command yang spesifik (C-APDU) mempunyai respon yang spesifik pula (R-APDU). Command dan respon disebut sebagai command message dan responsed message. Struktur dari C-APDU dan R-APDU dapat dilihat pada sub bab 10.2.
Command dan response message dapat berisi data. Oleh sebab itu, terdapat 4 kasus yang harus diatur dengan protocol transmisi melalui transport layer, seperti terlihat pada tabel di bawah :
7.4.1 Exchange of APDUs
Gambar 7.14 menunjukkan prinsip dalam pertukaran command dan responsenya
7.4.2 CAT Layer
Layer CAT menggunakan status word dari application untuk menunjukkan :

  • Keberadaan proactive command ke terminal ('91XX');
  • Kegunaan dari respon data ke envelope command oleh terminal (normal '9000', warning '62XX', atau '63XX', pengecekan error '6FXX');
  • Tidak adanya CAT secara sementara untuk menghandle envelope command ('9300'), lihat sub bab 14.6.6.
7.4.2.1 Proactive Command

Dalam kasus status word SW1-SW2 sama dengan '9000', card dapat menjawab dengan '91XX' untuk menunjukkan bahwa proactive command sedang pending. Terminal menggunakan FETCH-APDU untuk mendapatkan pending proactive command tersebut. Terminal mengirimkan respon dari proactive command ke UICC dengan TERMINAL RESPONSE C-APDU.
Jika command dimana card menjawab dengan '91XX' dikirim pada logical channel yang berbeda dengan basic channel, maka terminal akan mengirim  FETCH dan TERMINAL RESPONSE commands ke basic channel.
Mekanisme, yang dijelaskan kemudian untuk kasus 4 C-APDU, yang digunakan bersifat independent dari transport protocol.
7.4.2.2 ENVELOPE Commands
ENVELOPE C-APDU digunakan untuk mengirimkan data ke CAT. Untuk beberapa BER-TLV (contohnya SMS-PP Data Download) yang terletak pada body dari command ini, card dapat mengirim data ke terminal pada ACK channel (e.g RP-ACK) atau pada error channel (RP-ERROR). BER-TLV didefinisikan pada TS 102 223 dan pada access technology dependent specifications.
Command ini termasuk dalam kasus 3 atau 4 dan dijelaskan sebagai berikut.
Case 3 : Negative Acknowledgement

Terminal akan mengangap status word yang diterima sebagai negatif ACK dan menggunakan error ACK channel (e.g RP-ERROR), ketika terdapat status word '6FXX' di R-APDU.
Case 4 : Positive Acknowledgement
Terminal akan menganggap data yang diterima sebagai positive ACK and menggunakan normal ACK channel (RP-ACK), ketika terdapat status word '9000' di R-APDU.
Case 4 : Negative Acknowledgement
Terminal akan menganggap data yang diterima sebagai negative ACK and menggunakan error ACK channel (e.g RP-ERROR), ketika terdapat status word '62XX' atau '63XX' pada R-APDU.

6. Initial Communication Establishment Procedures - 102 221 v8

Berikut diterjemahkan/diedit dikit dari ETSI TS 102 221 v8 untuk Bab 6 saja....
Istilah-istilah yang perlu diketahui :

  • Terminal = HP. HPnya terserah android, IOS, Mac, atw apa, intinya yang bisa pake sim card
  • UICC (Universal integrated circuit card) = Sim card. Contohnya kartu As, Indosat, simpati, xl, ataupun secure element, dsb..
  • PPS = Protocol and Parameter Selection
  • ATR = Answer To Reset

6.1 UICC activation and deactivation
Terminal atau HP harus mengaktifkan atau mendeaktif koneksi ke UICC (SIM Card) sesuai sub bab 4.5.2. Selama proses aktivasi suply tegangan-switching (seperti pada sub bab 6.2) harus dilakukan sebelum aktivitas-aktivitas yang lain yang tidak ada hubungannya dengan tegangan-switching ini.

6.2 Supply Voltage Switching
Terminal awalnya akan mengaktifkan UICC dengan kelas voltage terendah yang tersedia pada terminal. Jika tidak ada ATR yang diterima, UICC akan dideaktif dan diaktivasi kembali dengan kelas level tegangan yang lebih tinggi yang disupport oleh terminal. Jika ternyata kelas tegangan yang digunakan oleh terminal tidak disupport oleh UICC, maka terminal akan mendeaktif UICC dan mengaktifkannya kembali dengan supply kelas tegangan yang ditunjukkan oleh UICC. Jika ATR rusak, terminal akan melakukan paling tidak 3 kali aktivasi dengan kelas level tegangan yang sama sebelum UICC ini ditolak/direject/dideaktif oleh terminal. Dalam hal ketiga ATR tersebut rusak, terminal boleh mengaktivasi UICC tersebut dengan kelas level tegangan berikutnya.
6.2.1 Kelas Supply Tegangan
Kelas supply tegangan akan ditunjukkan oleh UICC pada ATR(TAi, i>2).
6.2.2 Konsumsi Daya oleh UICC selama proses ATR
Konsumsi daya maksimum oleh UICC selama berlansungnya ATR diperlihatkan dalam tabel di bawah :
Konsumsi daya oleh PICC selama proses ATR harus sesuai dengan kelas level tegangan yang ditunjukkan di ATR. Jika UICC dapat menggunakan beberapa kelas level tegangan, maka tiap kelas tersebut harus sesuai dengan maksimum daya konsumsi ATR yang ditunjukkan pada tabel 6.2a dan 6.2b. Hal ini dibutuhkan karena terminal sendiri tidak memperhatikan konsumsi daya dari UICC sebelum ATR diterima dan suatu applikasi di-select.
6.2.3 Parameter elektrik dari suatu Aplikasi
Konsumsi daya dari UICC bergantung pada kondisi operasi dan aplikasi yang sedang berjalan. Konsumsi daya ini dibatasi oleh nilai yang ditunjukkan tabel 6.2a dan 6.2b diatas sampai suatu aplikasi dipilih atau terminal mengaktifkan suatu interface altenatif yang menggunakan kontak optional. Suatu aplikasi dianggap telah di-"pilih" ketika kondisi aksesnya telah diverifikasi/diuji. Jika tidak terdapat kondisi akses dibutuhkan untuk suatu aplikasi, aplikasi tersebut dianggap telah di"pilih" ketika terdapat suatu perintah yang berhubungan dengan aplikasi telah dieksekusi dalam aplikasi tersebut. Perlu diketahui bahwa pemilihan aplikasi dan pelaksanaan perintah STATUS tidak dianggap sebagai perintah yang telah dieksekusi yang berhubungan dengan aplikasi ini.
Terminal mendapatkan informasi konsumsi daya aplikasi dengan memilih aplikasi tersebut. Nah setelah melakukan perintah select, terminal akan memperoleh respon/balasan yang salah satunya menunjukkan konsumsi daya aplikasi. Terminal dapat pula memperoleh informasi konsumsi daya tersebut dengan memberikan perintah STATUS dalam aplikasi yang akan mendapatkan respon konsumsi daya. Tiap aplikasi dapat menetapkan besar konsumsi dayanya masing-masing sampai batas maksimum seperti yang diperlihatkan tabel di bawah :
Jika suatu aplikasi pada UICC tidak memberikan konsumsi dayanya, maka terminal dapat menganggap konsumsi daya maksimum aplikasi tersebut sesuai dengan tabel 6.4 di berikut :
Tabel 6.4 diatas juga memperlihatkan supply power minimum yang digunakan oleh terminal ke UICC selama sesi aplikasi pada kecepatan clock maksimum.

6.3 Answer To Reset Content
ATR adalah byte string pertama yang dikirim dari UICC ke terminal setelah perintah reset dilaksanakan. ATR ini didefinisikan pada ISO/IEC 7816-3, pada apendix D dalam standard ETSI ini. Terminal seharusnya dapat menerima karakter interface untuk protokol transmisi selain T = 0 & T = 1, historical bytes dan check byte, meskipun T = 0 & T = 1 digunakan oleh terminal sendiri. T = 15 yang merupakan parameter interface global seharusnya dapat dikembalikan/dikirimkan oleh UICC.
6.3.1 Conding of Historical Bytes
Historical bytes memberikan informasi ke dunia luar bagaimana menggunakan card ini. Informasi yang dibawa oleh historical bytes dari UICC mengikuti aturan yang terdapat pada ISO/IEC 7816-4. Category indicator adalah byte pertama yang dikirim oleh UICC, nilainya adalah '80' yang berarti historical bytes dikodekan dalam object data COMPACT-TLV.
Informasi pertama yang dikirim kartu adalah object "card data service". Data object tersebut ditunjukkan oleh tag '31'. Informasi kedua yang dikirim oleh kartu adalah data object "card capabilities". Data object tersebut ditunjukkan oleh tag '73'. Data object yang lain adalah sifatnya optional.
6.3.2 Peningkatan kecepatan
Terminal dan UICC paling tidak dapat melakukan (F,D)=(512,8) dan (512,16) selain (372,1) yang merupakan default value. Selain itu, nilai-nilai yang lain dapat pula disupport oleh terminal dan UICC. Jika terminal meminta PPS yang mempunyai nilai selain yang telah disebutkan, maka prosedur PPS tersebut diawali sesuai dengan PPS yang diminta tersebut. Nilai dari F dan D diberikan oleh UICC pada TA1 di ATRnya.
Untuk menggunakan kecepatan transmisi yang lebih tinggi selain kecepatan yang disebutkan pada ISO/IEC 7816-3, table 6.5 di bawah memperlihatkan nilai transmission factor dari D yang UICC dan terminal yang dapat digunakan.

  • nilai tambahan DI ini akan terkait dengan FI = 1001.
Ketika nilai tambahan Di dapat disuppor, inteface yang digunakan harus memenuhi persyaratan pada tabel dibawah tanpa memperhatikan kondisi operasi yang digunakan.
6.3.3 Global Interface Bytes

Global interface bytes akan muncul setelah T=15 pada ATR. Keberadaan global interface bytes ini bersifat optional dan informasi tersebut dapat diketahui pada TDi (i>1) yang menunjukkan T = 15. Isi dan koding dari TAi pertama (i>2) setelah T=15 didefinisikan pada ISO/IEC 7816-3. Isi dan koding dari TBi pertama (i>2) setelah T=15 didefinisikan pada tabel di bawah :

6.4 Prosedur PPS 
Terminal dan UICC harus dapat menggunakan prosedur PPS agar dapat menggunakan parameter transmisi selain nilai default. Parameter alternatif tersebut ditunjukkan pada ATR. Penerjemahan dari paramter-parameter tersebut sesuai dengan ISO/IEC 7816-3 dan TBi pertama (i>2) setelah T=15 pada ATR telah disebutkan pada table 6.7 pada 6.3.3 diatas. Untuk PPS1, terminal akan memilih nilai dalam rentang yang ditunjukkan oleh UICC seperti didefinisikan pada ISO/IEC 7816-3 dan dilengkapi pada sub 6.3.2. Untuk PPS2, terminal akan memilih nilai sesuai dengan yang ditunjukkan pada TBi pertama (i>2) setelah T=15, PPS2 hanya akan digunakan ketika TBi pertama (i>2) terdapat dalam ATR. Koding dari PPS2 sama dengan TBi pertama setelah T = 15. Nilai yang dipilih tergantung pada fitur yang didukung oleh terminal. Isi PPS2 dikodekan dengan cara yang sama pada TBi pertama. Terminal yang tidak mendukung fitur-fitur yang ditunjukkan pada TBi pertama boleh tidak mendukung PPS2 pada prosedur PPS ini.
Ketika terminal tidak mendukung atau tidak dapat menerjemahkan nilai yang ditunjukkan oleh card pada TA1 ATR, terminal tersebut paling tidak dapat melakukan satu buah prosedur PPS yang menunjukkan kecepatan maksimum (Fi,Di) yang dapat digunakan sebelum melaksanakan PPS dengan menggunakan nilai default (372,1).

6.5 Prosedur Reset
Ada dua tipe reset yang disebutkan pada standard ini yaitu cold reset dan warm reset. Cold reset adalah reset pertama yang akan digunakan/terjadi setelah proses aktivasi dari suatu kontak. Warm reset adalah semua reset yang tidak termasuk dalam cold reset...wkwkkww....
6.5.1 Cold Reset
Cold reset dilakukan sesuai dengan ISO/IEC 7816-3 dan UICC akan memasuki mode negotiable. Setelah cold reset ini, status security juga akan tereset.
6.5.2 Warm Reset
Warm reset juga dilakukan sesuai dengan ISO/IEC 7816-3 dan UICC akan memasuki mode negotiable atau mode spesifik yang lain. Jika UICC memasuki mode spesifik, maka UICC akan menggunakan protocol dan interface parameter (Fi,Di) yang sama pada sesi sebelum warm reset. UICC akan merespond dengan ATR yang sama setelah warm reset dilakukan dalam sesi yang sama tanpa memperhatikan aplikasi apa yang sedang aktif. Setelah warm reset ini, status security juga akan ikut tereset.
6.5.3 Reaction to Reset
UICC yang dimaksud pada subbab ini dapat berupa Type 1 UICC dan Type 2 UICC. Gambar 6.1 di bawah memperlihatkan ilustrasi bagaimana setiap UICC merespond kepada cold atau warm reset.
Untuk lebih jelasnya dapat melihat appendix 1 pada standard ini.

6.6 Mode Clock Stop
UICC harus dapat mensupport prosedur clock stop. Mode clock stop ini ditunjukkan pada TAi(i>2) di T=15 ATR, untuk lebih jelasnya dapat dilihat di ISO/IEC 7816-3. Untuk UICC yang hanya mensupport kondisi operasi kelas A, mode clock stop "not allowed" mungkin dapat ditemunkan, lihat sub bab 6.3. Jika UICC dapat mensupport kondisi operasi yang lain bahkan bersama dengan kelas a, mode clock stop seharusnya dapat disupport dan indikasinya diset sesuai dengan itu. Terminal akan mengikuti indikasi tersebut secara independent kondisi operasi yang ditunjukkan oleh card.
Terminal akan menunggu paling tidak 1860 clock cycles setelah menerima karakter terakhir, termasuk guard time (2 etu), dari suatu respon sebelum terminal tersebut mematikan clock (jika dapat dilakukan demikian). Terminal paling tidak akan menunggu 744 clock cycles sebelum dia mengirim perintah pertama setelah clocknya dimulai.

6.7 Periode Bit/Karakter dan Waktu Sampling
Periode bit/karakter dan waktu sampling yang ditetapkan pada ISO/IEC 7816-3 adalah valid untuk semua jenis komunikasi.

6.7 Error Handling
Jika karakter mandatory dari suatu ATR tidak ada pada ATR yang sedang diterima akan ini tergantung pada terminal untuk menentukan apakah UICC telah aktif atau belum, contohnya terdapat card yang mensupport suatu aplikasi tidak berdasarkan pada aturan distandard ini.
Jika, dalam pandangan terminal, UICC telah diaktivasi dan terminal telah menerima ATR dengan protocol yang error maka terminal akan melakukan perintah reset. ATR dengan protocol yang error ditandai dengan tidak adanya suatu karakter mandatory dalam ATR tersebut. Jika hal ini terjadi maka terminal akan mereject UICC sampai paling tidak 3 ATR dengan protocol error diterima.
Selama pengiriman ATR, deteksi error dan prosedur character repetition yang disebutkan pada sub bab 7.2.2.4 sifatnya optional. Untuk transmisi berikutnya yang berdasarkan pada T=0, prosedur tersebut sifatnya mandatory untuk terminal. Sedangkan untuk UICC sendiri, deteksi error dan prosedur character repetition sifatnya mandatory untuk semua jenis komunikasi yang menggunakan T=0.

6.9 Compatibility
Terminal yang hanya beroperasi pada kelas A dan compatible dengan electrical parameter yang disebutkan pada sub bab 5.1 akan beroperasi dengan teknologi smart card 3V sesuai dengan standard ini. Untuk kompatibilitas dengan terminal yang sudah ada, UICC digunakan pada aplikasi dimana indikasi kelas supply tegangannya berdasarkan pada prosedur respon STATUS (lihat 6.2.3) harus dapat mendukung indikasi kelas level tegangan pada ATR seperti yang disebutkan dalam standard ini. Dalam kasus UICC tidak mendukung indikasi suply tegangan, UICC akan diperlakukan dengan hanya 5 V oleh terminal.