Step 0: If you don’t know anything about LTE, then stop here, read the five minute “Intro to LTE” guide, and then come back.
To get started with CoLTE, you’ll need the following items:
- A computer to run CoLTE. This can be a server, desktop, laptop, or even a smaller platform like the Zotac. Most Linux machines will work fine. Please note that we have not tested CoLTE on 32-bit architectures, and explicitly do not currently support ARM-based architectures such as RaspberryPis.
- An eNodeB – this can be either a commercial product, or a computer with an SDR.
- A cell phone that supports LTE on the exact band that your eNodeB uses.
- A SIM card that you know the KI and OPC for. For more information about SIM cards, see our post here.
- Knowledge of your local laws regarding spectrum usage.
Installing and Running CoLTE
For the EPC, we currently only support Debian-Stretch (Ubuntu 18.04 coming soon!). The installation process *should* work fine with an existing copy of the OS, but for best results, start with a fresh installation. Next, go to our GitHub repository here and follow the instructions to download, configure, install, and run the codebase. Please read the instructions carefully! There is nothing unimportant or redundant in the readme file. Note that this may take a while (~30 minutes or so) depending on your download speeds.
Connecting your eNodeB
Once the EPC’s running, you’ll have to connect the eNodeB to it. To do so, you’ll need to figure out how to configure your eNodeB – depending on the platform, this could be as simple as changing srsLTE or oaisim’s conf file, or as convoluted as SSH’ing into the machine or accessing it via a WebGUI. The key points you’ll want to cover include the following:
- Setting the MME address to the downstream address of your EPC.
- Setting the PLMN (MCC and MNC) to your network’s PLMN.
- Setting the MME hostname to “mme.OpenAir5G.Alliance”
Depending on the specific eNodeB, you might have to do more work or change some additional settings, but once things are configured properly, you should see the eNodeB reach out and establish a connection with the EPC (specifically the MME). This will be a S1AP connection over SCTP, and you should be able to see the initial handshake (as well as keepalive messages sent every 30 seconds or so) using Wireshark.
Connecting your Phone
Once the EPC’s running and the eNodeB connects to it, you’re almost there! All that remains is to add the SIM’s information to the database, and then insert the SIM into the phone. If you already put the SIM into the phone and it’s just hanging out in Emergency mode and not connecting, try cycling Airplane mode on and off and/or restarting the phone.
To add a SIM to the HSS database, you’ll first need to figure out its values for the following fields: IMSI, MSISDN, KI, and OPC. Once you have these for a SIM, you can add it to the database using the following python script:
$COLTE/epc/spencer_scripts/add_sim.py $IMSI $MSISDN $KI $OPC
Note: CoLTE does not currently support roaming. This means that to successfully add a SIM to the HSS, the SIM’s PLMN (MCC and MNC) must be exactly the same as the PLMN you configured above. Conveniently, the PLMN of a SIM is the first five or six digits of the IMSI, depending on the country. So, for example, if my MCC is 310 and my MNC is 11, then my PLMN is 31054 and a valid IMSI would be 310111234512345. If this is at all unclear, you should read the SIM guide here.