Support page

We released our software to program UICC/SIM/USIM cards.

We tested and support it only with our cards and our card reader, nevertheless it is GPL license open source.

Please provide us with enhancements source code, as per GPL license rules


We offer support as comments on this blog page, and a FAQ

(if your question is very confidential, send us a mail)

83 thoughts on “Support page”

  1. Hello,
    I have your sim-card and sim-card reader. I want to know that how can I read or set values in the sim-card. In fact, I use Ubuntu 16.04. could you tell me in details.


    1. Hello,
      Ubuntu 16 is fine, the instructions are on the page “uicc-software” (the link in blue).

      1. sorry to bother you again.
        In fact, I am not professional user in Linux.
        in the aforementioned link, it explains about the commands. could you please tell me that how can I open the serial link in Ubuntu?

        Many Thanks.

        1. Hi Eshagh,

          I may misunderstand your question.
          The serial link is shown as /dev/ttyUSB0 (if it is the only serial interface in the Linux machine).
          But you don’t have to manage this: just run the program as per the manual.

          Let’s try to re-explain:
          – down load the source code: clic on “source code”
          say “yes” to “open with archive manager”
          clic on “extract” and put the directory where ever you prefer in your disk
          – open a “terminal”: CRTL+ALT+T shortcut
          – go to the directory: cd – compile, so type: make
          – type: sudo ./program_uicc –help
          will display the options
          – type sudo ./program_uicc –adm

          1. thank you. my problem was ./program_uicc. I did not use “adm”.
            Sorry, My last question is:
            Is there any possibility to change Mobile Country Code(MCC) of the sim-card? I mean the MCC of the sim-card is 208. can I change it to 232 for instance?

          2. Hi,
            yes of course.
            You need only to define the IMSI, that starts by the MCC.
            the other USIM files that are related to the MCC with be automatically computed by “program_uicc”
            the next field in the IMSI is MNC: by default it is 2 digits.
            If you set a 3 digits MNC, you have to specify this (see program_uicc –help)

  2. Hi,
    If HSS has:
    ## HSS options
    OPERATOR_key = “1006020f0a478bf6b699f15c062e42b3”; # OP key matching your database
    and hss-dump-users has:
    imsi | mmeidentity_idmmeidentity | hex(users.key) | sqn | hex(rand) | hex(OPc)
    208920100001106 7 8BAF473F2F8FD09487CCCBD7097C6862 00000000000000000021 33353336363633303332333633313634 E734F8734007D6C5CE7A0508809E7E9C

    Is it correct to set value for the SIM as:
    ./program_uicc –adm –key 8BAF473F2F8FD09487CCCBD7097C6862 –opc 1006020f0a478bf6b699f15c062e42b3

    I’m confused with options –opc and –xx.


  3. Hello,

    I recently ordered a opencells SIM card and SIM reader.
    When I run command: sudo ./program_uicc
    I receive following values:
    No adm code supplied, the USIM current values are:
    ICCID: 89860061100000000001
    WARNING: iccid luhn encoding of last digit not done
    USIM IMSI: 208920100001101
    USIM MSISDN: 00000001
    USIM Service Provider Name: OpenCells01

    I also ran sudo DEBUG=y ./program_uicc but did not help.

    How do I read the other values burnt in SIM like Opc, Key, Op Key ??

    Request you to please help at the earliest.

    1. Dear Sumi,

      3GPP defines key, OPc, … as write only files.
      The values we have set are in the OAI HSS database example we deliver
      You can overwrite these values if you provide –adm with the ADM value of your cards.
      Be careful of not testing a lot (10) of wrong ADM: the cards will lock themselves considering you as a hacker.
      You can also test milenage authentication (so test the Ki and the OPc values) with program_uicc

  4. Hello,
    I am currently trying to write to one of my SIM cards. Unfortunately for some reason the card cannot be writed. The ADM key is the one that is printed on the card itself and starts with OC, correct? (8 digits)
    I’m getting this issue:

    ./program_uicc –adm OC003617 –imsi 262802019092123 –opc cdc202d5123e20f62b6d676ac72cb318 –key 465b5ce8b199b49faa5f0a2ee238a6bc –spn ICN
    Setting new values
    WARNING: Non standard packet sent
    ret is not right size
    expect: 0x9000
    answer: 0xfe
    chv 0a Nok
    BAD return code
    Expected: : 0x9000
    got answer: : 0x63c9
    chv 0a Nok
    Read new values in UICC
    ICCID: 89860061100000000003
    WARNING: iccid luhn encoding of last digit not done
    USIM IMSI: 208920100001103
    USIM MSISDN: 00000003
    USIM Service Provider Name: OpenCells03

    1. Hi,
      The ADM code should be on each invoice.
      In your case, we missed to add this code on the invoice.
      We sent you new cards.

      1. Hi,
        I have entered the adm code correct, but when I ran the program
        ~/Downloads/uicc-v2.3$ sudo ./program_uicc –adm 80508050 –imsi 404010100000001 –key 0c0a34601d4f07677303652c0462535b –xx 63bfa50ee6523365ff14c1f45f88737d

        Existing values in USIM
        ICCID: 89860061100000000009
        WARNING: iccid luhn encoding of last digit not done
        USIM IMSI: 208920100001109
        USIM MSISDN: 000000
        USIM Service Provider Name: OpenCells09
        Computed OPc from OP and Ki as: ba05688178e398bedc100674071002cb

        Setting new values
        Expected: : 0x9000
        got answer: : 0x9840
        BAD return code 9840
        chv 0a Nok
        Expected: : 0x9000
        got answer: : 0x6983
        BAD return code 6983
        chv 0a Nok

        Reading UICC values after uploading new values
        ICCID: 89860061100000000009
        WARNING: iccid luhn encoding of last digit not done
        USIM IMSI: 208920100001109
        USIM MSISDN: 000000
        USIM Service Provider Name: OpenCells09

        I got this error, why it is not able to set the imsi of our choice as we are testing in indian location.

        1. Dear Ranjith,
          It should work and the trace is clear: the adm code is not right.
          This won’t occur with new firmware: what is the serial number of your card?

          1. I see: the dicussion started months ago.
            I see you have probably put the serial number in the adm code months ago.
            I guess you have tried about 10 times or more.
            Reading manual before is always better.
            The card is now blocked.
            We can offer a new card, please write us by mail.

          2. No Sir,
            We are using the 0c003 series one and we have the adm code as 80508050 on our invoice.

            I am not able to understand what this means (
            Setting new values
            Expected: : 0x9000
            got answer: : 0x9840
            BAD return code 9840
            chv 0a Nok
            Expected: : 0x9000
            got answer: : 0x6983
            BAD return code 6983
            chv 0a Nok
            I used uicc-v2.3
            Kindly Help us in resolving it.

        2. Dear Ranjith,
          A random generator was making these ADM for each order.
          From you serial, I found the invoice.
          80508050 is not the code 🙂 it doesn’t look like a randomized number
          Please write me a mail explaining in private how you got the card.
          If you try more that 8 consecutive times a wrong ADM password, the card will block forever. It will still work fine in a phone with existing values, but you will not be able to flash new values.
          I think it is already the case: ‘9840’: CHV blocked
          It is normalized retun codes, that you can find in smartcards (UICC) standard documents.
          Best regards,

  5. Hi,

    I want to connect OAI eNB and OAI UE according to this page : After HW setup and building OAI eNB and OAI UE successfully, I try to run it with tunnel interfaces but something wrong happen.
    I run eNB with this command:
    sudo -E ./lte_build_oai/build/lte-softmodem -O /home/user/openairinterface5g/ci-scripts/conf_files/ enb.band7.tm1.25PRB.usrpb210.conf –nokrnmod 1 –noS1 –eNBs.[0].rrc_inactivity_threshold 0 2>&1 | tee ENB.log
    I run UE with this command:
    sudo ./lte-uesoftmodem -C 2680000000 -r 25 –ue-rxgain 117 –usrp-args “addr=” –ue-txgain 0 –ue-max-power 0 –ue-scan-carrier –nokrnmod 1 –noS1 2>&1 | tee UE.log

    In my case,after running OAI ENB and UE,it can ping with each other. The first question is when I increased the ping packet size to about 300 Byte, the OAI UE would shutdown and show a lot of “bad DCI 1A”,“retransmission but TBS different” or “preoblem in DCI” . Looks like something is wrong with PDSCH. The second question is that I could not be able to test my throughput with iperf and The server did not seem to be receiving even one packet!
    Do you have any suggestions that can help me debug this problem?

    1. Hi,
      This is OAI issue, no relation with our products.
      for bad DCI see hereafter.
      For no IP packet at all, it seems your IP configuration is wrong.
      We will not test or debug OAI wiki pages.

  6. Hi,
    I want to Connect OAI eNB with OAI UE without S1 Interface based on this page:;
    In my case,after running OAI ENB and UE,it can ping with each other with 5%-10% packet loss. The first question is when I increased the ping packet size to about 300 Byte, the OAI UE would shutdown and show a lot of “bad DCI 1A” or “preoblem in DCI” . Looks like something is wrong with PDSCH. The second question is that I could not be able to test my throughput with iperf and The server did not seem to be receiving any packet.
    By the way
    I use:
    10gigabit ethernet to connect two USRP with 40 dB attenuation
    Master v1.1.0
    Ubuntu 16.04 4.4.0-170-lowlatency
    Attenuator 40dB
    USRP x310

    1. Hi,
      This is support page for the product we distribute, not for OAI.
      *** bad DCI:
      OAI official answer is the channel is noisy, so it is “normal”
      On simulated channel, perfect I/Q sample, we can reproduce the same.
      So, we think there are also bugs.
      *** iperf fails
      This is your IP configuration, or earlier defect.
      Please follow our tutorial to heave first a working configuration.

  7. Hello,

    I’m attempting to configure a non-opencells SIM card using sudo ./program_uicc using uicc-v2.0. However I’m getting the following printout:

    Existing values in USIM

    Assertion ((fd=::open(portname, O_RDWR | O_NOCTTY | O_SYNC)) >=0) failed!
    In open() ./uicc.h:331,
    System error: No such file or directory
    additional txt: Failed to open /dev/ttyUSB0
    Exiting execution

    I’m able to see the card and card reader info when I enter sudo pcsc_scan, as well as with ./ -p 0.


    1. Dear Adam,
      It seems you have not connected our reader (error: No such file or directory)
      or maybe, you need to add “sudo” at beginning.

      If you want to allow your curent user to use tty devices without sudo, in ubuntu:
      sudo usermod -a -G dialout $USER


      1. Laurent,

        Thank you for the response. I tried adding myself to the dialout group and rebooting as well as running the command with sudo, however neither changes the output.

        I am using a Dekart Sim Card Reader (1a1e:b100) , not the opencells one. Is it possible to use the program with a non-opencells reader?

        1. Dear Adam,
          See our product description: we use “raw” readers, not the M$ PC/SC protocol readers as the Dekart reader.
          If you want to contribute, you could add PC/SC support to our program.
          Else, any “raw” reader should work (we only select suppliers and test each reader before shipping).

  8. Dear Adam,
    I have trying write to my sim card but i doesn’t save my changes. I am doing the following:
    sudo ./program_uicc –adm 05061670 –imsi 208920100001111 –opc 504F20634F6320504F50206363500A4F –key 6874736969202073796D4B2079650A73 –spn openair –authenticate

    But I always get the above data
    Not possible answer to milenage challenge: ffffff98, 62
    UICC should answer the command but (6f,00)
    terminate called after throwing an instance of ‘std::out_of_range’
    what(): basic_string::substr: __pos (which is 18446744073709551614) > this->size() (which is 0)

    1. Dear Elisabeth,
      Error 98,62 is: “Authentication Error, application specific (incorrect MAC)”
      It should never append
      Could you:
      – retry with the latest program_uicc version on our web site
      – if it doesn’t work, write us ( with the card serial number and the information you can get to help in diagnosis

      Best regards,

  9. Can I use your card reader/writer product and source code to read the contents of my phone’s 5G SIM (specifically, the existing USIM service table)?

    1. You can read the USIM service table with any software that can read a standard USIM file
      Our Sw is not designed for this purpose, but, it debug mode it displays in human reading text the full UST file
      It won’t do it directly: the ATR of your card will be different, so you will have to modify a little the source code.

  10. Hello,

    I have two card readers and some weeks ago they work perfectly, i could write two sim cards without major issues. Today I’m trying to set another sim card, but I’m finding a problem:

    Failed to pen /dev/ttyUSB0

    I found that when I inserted the card readers to the USB sockets, the led was red for a second or less and then stopped brighting, with both card readers. I tried two more computers but the same occurred.

    Did you have this problem?
    Kind regards,

    1. Dear Alex,
      The line above gives the Linux system call problem like:
      System error: Permission denied
      additional txt: Failed to open /dev/ttyUSB0

      “permission denied” means I’m not “root” user

      What is the error text in your case?

      1. Dear Laurent,

        In my case, I observe the next text:
        Assertion ((!=””) failed!
        In readUSIMvalues() program_uicc.c:62
        System error: Invalid argument
        additional txt: Failed to open /dev/ttyUSB0


        1. Dear Alex,
          This Linux error case is not very understandable.
          The reader answers to Linux, but it considers there is no card inserted.
          It might be a bad card insertion (see photos on our web site), or a faulty device: either the card or the reader.
          Do you have spare cards and/or reader to validate ?

          1. Hi Laurent,

            Dear Laurent,

            I did what you suggested, I get rid of the “1FF/2FF format converters” as in the image (I don’t know if it’s called like this, the sort of copper strip that connects the card reader with a plastic placeholder to put the cards in there) and in this way the card was readable/writable.

            Maybe I wasn’t placing the cards right on the placeholder, anyway thank you.

  11. Dear Alex,
    I have a symocom USIM card and when trying to read or write this USIM card using your writer device it show error –
    sudo ./program_uicc –adm 05061670 –imsi 208920100001111 –opc 504F20634F6320504F50206363500A4F –key 6874736969202073796D4B2079650A73 –spn openair –authenticate
    Existing values in USIM
    ICCID: 8988211000000385685f
    WARNING: iccid luhn encoding of last digit not done
    Expected: : 0x9000
    got answer: : 0x6a82
    BAD return code 6a82
    Expected: : 0x61
    got answer: : 0x6a82
    BAD return code 6a82
    Segmentation fault


  12. 1. I am not getting the adm code to set the key and opc values. I got this error “No adm code of 8 figures, cannot program the UICC ”
    2. Can we change the IMSI number to 208950000000040 from 208920100001101?
    3. If we can change the IMSI number do we also need to change the service providers’ names that from “open cells” to “orange”.
    4. MSISDN number from the UICC is 00000101 but in OAI database this value should be of 12 digits. What could be other 4 digits?

    1. Dear Bharat,

      Question 1
      I suppose you have a a card with serial number > OC004100
      The documentation tells you:
      ADM code management changed in UICC version 4: you have to specify a ADM code to upload the UICC/SIM, nevertheless you can use any 8 figures value.

      Question 2
      see example command on bottom of page:

      Question 3
      Same as question 2, nevertheless you can set any string, it is only for display on smartphone screen

      question 4
      As long as we don’t demonstrate VoLTE in our tutorial, ISDN is not used
      I think you can anyway set it with any length.

      In case of you need to implement a actual ISDN number, ITU E.164 defines the format per country

  13. Hi

    I have your 5G sim-card and sim-card reader.
    I want it can connect to OAI-5G-SA network, but it can’t work.
    Maybe I miss something when i burn SIM, could you help me?
    I want to make sure that the burn instruction (./program_uicc).

    Information of core network(initial value of OAI):

    Information of UE(initial value of OAI):
    FULL_IMSI: ‘208990100001100’
    FULL_KEY: ‘fec86ba6eb707ed08905757b1bb44b8f’
    OPC: ‘C42449363BBAD02B66D16BC975D77CC1’
    DNN: oai
    NSSAI_SST: 1
    NSSAI_SD: 1

    1. Dear Richard,
      I think you mix up OP (operator key) and OPc
      OP is not used in the telecom messages and protocol
      But there is a 3GPP suggested way to compute OPc from OP and Ki (key)
      We implemented this in “program_uicc”: if you use parameter –xx, you can gice the OP and program_uicc will compute, as per suggested 3GPP algo, the OPc (and it will display the OPC it will set in the card)

  14. Hello laurent
    I have a basic question ?

    How do i get the Ki for a USIM card ?

    My IMSI :208920100001106
    ADM : 0c004684

    1. you can’t read Ki and OPc, these files are write only.
      The default values we set in the cards we ship:
      Ki: 6874736969202073796d4b2079650a73
      OPc: 504f20634f6320504f50206363500a4f

  15. Hello,

    I am using your SIM cards with an embedded device and a LimeSDR running OSMO (2G). I am able to use data services and receive SMS messages. I’m unable to send SMS messages (I get a generic error code 547 with AT commands on the PLS62). Do I have to change the default SIM configuration? I have tried using this UST without success : 867F1F1C231E1002400050.

    Thanks for any help

    1. Dear Sebastian,
      If I understand well, you have a modem (PLS62) and you use AT commands to interface with a application you are writing.
      You send a AT command to request to the UE to send a SMS.
      But the UE refuses with error code 547
      You changed the USIM service table to enable some services (what service ?)
      Maybe the most probable problem is the SMS center that is not set to the right value ?
      We never used 2G, neither all the legacy “CS” (circuit switch) because we do only 4G and 5G.
      Nevertheless I agree, it should be possible with our SIM cards.
      Why do you think this error is a USIM configuration issue.

      1. Hi again,

        I check usim service table:
        our default config is, for services related to SMS:
        (10) Short_Message_Storage__SMS_
        (11) Short_Message_Status_Reports__SMSR_
        (12) Short_Message_Service_Parameters__SMSP_
        (28) Data_download_via_SMS_PP
        (29) Data_download_via_SMS_CB

        (you can get it with DEBUG=y ./program_uicc )

        I checkout what value we put in EF-SMSP (Short message service parameters)
        I see we set it twice, so i cleaned the code of program_uicc (see version 2.6)
        I see also we se a default value: you should probably replace the lines:
        Assert(card.writeFile(“USIM Short Message Service Parameters”, makeBcdVect(“FFFFFFFFFFFFFFFFFFFFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFFF 0191”,true,40)),
        “can’t set SMSC”);
        by your SMSC configuration or set it in the UE

        1. Ok thank you for that !
          Do you have any idea what value I should use ? Is it possible to read the correct value from a normal SIM card that works with my LimeSDR network using your USB tool ?


  16. Hi – We’re looking for a SIM writing solution for a lab & test environment exercising enterprise and industrial LTE applications and this looks like a really great fit – are there any known issues or concerns with writing SIMs for devices on systems that use solutions from some of the traditional infrastructure heavy weights (Ericsson/Samsung/Nokia/Huawei)?

      1. Dear Laurent-
        Our team has experience working with commercial carriers but with our new enterprise focus, we suddenly have a need to burn/write our own SIMs. We always relied on SIMs to be provided to us but now we’re responsible for the task- it is something new we must learn.

        We’ll be using production-grade LTE infrastructure from the big traditional vendors in our lab- we’ll provision our subscribers with their subscriber database tools and use their HSS for authentication.

        I want to find out if you have experienced or know of any difficulties when provisioning and using your SIMs on Samsung/Huawei/Ericsson/Nokia systems.

        My hope is that with LTE being mature there are no surprises and that behaviors are consistent with the established standards, but I wanted to take advantage of the support channel you have generously set up and ask this question.

        The cost of the cards and writer is so reasonable, a co-worker has already placed an order so we’ll learn something one way or another. 🙂

        Thank you for your time,

        1. Dear Patrick,

          Major vendors (Gemalto, Idemia, …) are the best, if you need UICCs by multiples of 10K pieces.

          We keep our offer as simple as possible: 3GPP Release 8, no IMS, no javacard applets, …
          Nevertheless it should work with any commercial phone.
          VoLTE and all IMS work as long as you use the SIP identifiers computed by the UE from the IMSI as per 3GPP standard.

          We also made a simple C++ program, no external packages dependency, even no PC/SC driver (we use only raw serial/USB conversion)
          We would like to make a 3GPP R16 or more update at some point, but we have no roadmap to this.
          Also, if we can deal with a major vendor to distribute their product for a reasonable price and with a simple, free programing tool chain, we will do it.
          Smaller features like PC/SC card readers support could be made by us or in the open source community, but we have not yet found a motivation to do it (raw readers are good enough for us).

          The alternative supplier we know: Sysmocom
          They sell UICC/SIM with more features, IMS, javacard, PC/SC readers (with pysim and the Linux classical SW chain around pysim to support Microsoft PC/SC)


          1. Dear Laurent-

            Thank you for the detailed response and information.

            For us, our needs seem modest and our mindset is: simpler = better
            I’m even more confident this is a useful direction.

            We’ll report back our experiences.

            Best regards,

          2. Previously I wrote:
            We’ll report back our experiences.

            It took us a bit longer to make first call than planned but the SIMs were never the issue – they worked as described. We are very appreciative of open-cell’s offerings and these web pages. It was exactly what we needed.

            Best regards,

          3. Dear Patrick,
            We still have to improve,and we would like to offer new version when we will find out a reasonable price for 5G new features (TUAK, IMSI concealment)

  17. Hi Laurent,

    Just a clarification on the update for “explicit support of 5G SA and 5G SA non-terrestrial”.

    Does the code only writes to the “PLMN selector with Access Technology (EF.OPLMNwAcT)” and related files to enable NG-RAN and satellite NG-RAN bits on the “ADF.USIM” folder, or it also writes to the ADF.USIM/DF.5GS.
    When reading the open cells usim card and listing all files via pysim, there is no 5gs folder.
    Is this the expected behaviours? I mean, can we enable 5G services without creating 5GS folders?


    1. Dear Matheus,
      Good question, i don’t know, i have not found answer in 3GPP specifications.
      Our cards are 3GPP Release 8, so no 5GS folder, neither IMS (ISIM) folder

      What i think the 3GPP way: the phone should enable 5G, IMS, … even if the card is very old
      default values are defined in the specifications, and i saw many VoLTE, IMS, 5G, … working with old SIM cards

      We enabled explicitly 5G in OPLMN file because we found it enables 5G in Oppo/Oneplus mobiles,
      but Huawei, Quectel doesn’t take care, they enable (correctly) 5G in any case

      The problem is that each UE vendor makes his secret and not 3GPP compliant implementation

      In some phones, we found with this web site how to unlock the Qualcomm based phones with QPST.

      This UE vendors behavior to hide combos of PLMN/freq/… in the phones is not good but we can’t do anything against

      So, maybe adding 5GS files in the UICC will enable 5G in some UE brands, maybe not.

      We would like to offer true 5G cards with Tuak, and IMSI concealing but we have not found a decent vendor

  18. Dear Laurent,
    I downloaded version 2.6 of the uicc SIM program that requires GLIBC version 2.34 to run on my ubuntu 20.04 LTS, but the very latest version of GLIBC on ubuntu 20.04 LTS is 2.31.

    I would like to know how to download any version of uicc that is compatible with the GLIBC version I have on my ubuntu, or better still, how to solve this problem.


    1. Hi,
      You can buy one from us, or on ebay, aliexpress, … look for “blue sim reader’ if the box is blue transparent, you will see the PCB: it is the same as the readers we sell.
      Of course, one can also contribute to the open source SW to support PC/SC protocol with the help og libiccid

  19. Dear Open cell team,
    I had bought your sim card writer and sim cards and i want to program them in Windows PC.
    Could you please guide me the steps or point to any documentation?

  20. Existing values in USIM

    Assertion ((fd=::open(portname, O_RDWR | O_NOCTTY | O_SYNC)) >=0) failed!
    In open() ./uicc.h:353,
    System error: No such file or directory
    additional txt: Failed to open /dev/ttyUSB0
    Exiting execution

    I am getting above error, how to resolve this, i check COM5 is port after inserting SIM card reader to PC

    1. We made the software only for Linux, nevertheless it is open source and it uses no external SW dependency.
      So, it is likely possible to make a Windows version with little source code modifications.
      Please contribute to the open source if it is important for you, it may be also for other people

    2. Dear Praveen,
      As per the message, the device driver /dev/ttyUSB0 doesn’t exist.
      Please check the Linux kernel message when you plug the device:
      sudo dmesg

  21. Hi Laurent,
    First time trying to write to the simcard. I enter the below command and get the resulting output. What am I doing wrong?

    sudo ./program_uicc -adm 12345678 -key 797f5827a1aa465d1f524aa01a2b78c7 -opc 4e7df90249886b8da3

    Existing values in USIM
    ICCID: 89860061100000000036
    WARNING: iccid luhn encoding of last digit not done
    USIM IMSI: 208920100001036
    USIM MSISDN: 00000036
    USIM Service Provider Name: OpenCells036

    Setting new values
    WARNING: Non standard packet sent

    Assertion (buf[i] == c) failed!
    In write() ./uicc.h:363,
    System error: Invalid argument
    additional txt: sent 32, echoed 40

    Exiting execution

    1. Dear John,
      Your OPc is not the right size (32 hexa figures), but program_uicc should print this clearly.
      I’ll check

      1. Thanks for your reply. I get this error regardless of command inputted.
        If I only input “sudo ./program_uicc -adm 12345678”
        I would get the same error.


        1. Hi John,
          So i guess either the reader either the SIM is not working, nevertheless it is the first time i see this error.
          Contact me by email to open cells, i will send you replacement cards/reader to find out the root cause.

  22. Hi Laurent,

    We have Omnikey 3121 device. It is not getting detected as a module in /dev/tty
    Error thrown while running the application is:
    Assertion ((fd=::open(portname, O_RDWR | O_NOCTTY | O_SYNC)) >=0) failed!
    In open() ./uicc.h:415,
    System error: No such file or directory
    additional txt: Failed to open /dev/ttyUSB0
    Exiting execution
    Could please help us?

    1. Hi,
      The Omnikey 3121 is a PC/SC interface device, using CCID drivers.
      Please try the new feature of program_uicc.
      The readme file describes how to use this new feature

  23. Hi,

    the uicc program is very nice for writing the most important parameters. Is it possible to change others like pin, preferred network lists etc?

    Thanks! BR,


    1. yes, it is inside the open source, with explicit comments, so you will have to make small modifications to the source code
      PLMN list is automatically compiled, from the IMSI PLMN, but you can change it

  24. We can overwrite information in the SIM cards using the readers. However, our routers,namely, Milesight 5G routers, have quectel cellular modules that are not able to identify the inserted cards and display their information, such as imsi. So, even before the dialing process we have a problem identifying the cards. We greatly appreciate help regarding the situation.

    Thanks and BR.

  25. Using the pySim-shell to update the SIM card and could not verify the adm code. When doing “verify_adm 12345678”, it returns “EXCEPTION of type ‘RuntimeError’ occurred with message: Failed to verify chv_no 0x0A with code 0x3132333435363738, 2 tries left”.
    The SIM cards were bought from open-cells fairly recently (Aug 2023, SN 0C012584). There has been no problem programming them with program_uicc tool. Trying pySim-shell with a HID programmer because a COTS UE does not seem to work properly with program_uicc programmed SIM cards.
    Any suggestions of how to make it work with pySim-shell. Two retries left.

    1. You can’t use pySim-shell without modifying it.
      The commands are standard for the dialog with the phone, but not the operator part.
      Pysim has different pieces of code for each sim vendor.

      HID reader: we now support quite a lot of them, see the README.txt file.

      COTS UE: the problem is probably something else.
      See the table of UEs on our web site.
      First try PLMN 001/01, as most of recent phones have a hidden table of operators (shame on them)


Leave a Reply

Your email address will not be published. Required fields are marked *