Warning: this software is intended for education and security research on GSM networks. The author is not responsible for illegal use, including unauthorized interception, IMSI-catcher activity, or any operation forbidden by local law.
This project sets up a GSM base station on Raspberry Pi using CalypsoBTS, Osmocom components, and a local Tkinter GUI.
Tested and validated on a fresh installation of Ubuntu MATE 22.04 Desktop ARM64, running on Raspberry Pi 4 (4 GB RAM).
- Raspberry Pi (Raspberry Pi 3+ recommended)
- Debian/Ubuntu based Linux (Ubuntu Mate 22.04.5 LTS 64-bit recommended)
- OsmocomBB compatible phones (for example Motorola C123/C121/C118)
- CP2102 USB-TTL adapter
- Install git:
sudo apt install git -y- Clone the repository:
git clone https://github.com/aleiei/Calypso_BTS.git- Enter the project directory:
cd Calypso_BTS- Run the installer:
sudo sh install.shThe installer:
- installs system and Python dependencies
- builds and installs libosmo-dsp and required runtime libraries
- copies components to /usr/src/CalypsoBTS, /usr/src/osmo-nitb, and /usr/src/auto
- installs .deb packages from /usr/src/CalypsoBTS
- copies service files to /lib/systemd/system
To remove the BTS installation from the system, run:
./uninstall.sh --apply --purge-depsAfter installation, start the GUI:
cd /usr/src/auto
sudo python3 auto.pyRecommended sequence in GUI:
- TRX1 (and TRX2 if using two phones)
- Clock
- Database
- BTS
If you want to start the stack manually, run the commands in this exact order.
Replace ARFCN with your channel number (for example 62, 75, 124).
sudo /usr/src/CalypsoBTS/osmocon -m c123xor -p /dev/ttyUSB0 -s /tmp/osmocom_l2 -c /usr/src/CalypsoBTS/firmwares/compal_e88/trx.highram.bin
sudo /usr/src/CalypsoBTS/transceiver -e 1 -a ARFCN -r99
sudo osmo-nitb --yes-i-really-want-to-run-prehistoric-software -c /usr/src/CalypsoBTS/openbsc.cfg -l /usr/src/CalypsoBTS/hlr.sqlite3 -P -C
sudo osmo-bts-trx -c /usr/src/CalypsoBTS/osmo-bts-trx-calypso.cfg -d DRSL:DOML:DLAPDMNotes:
- Keep one terminal per process.
- Start the next command only after the previous one is running correctly.
- NITB and BTS settings are in openbsc.cfg and osmo-bts-trx-calypso.cfg.
When using auto.py, configure parameters in:
sudo nano /usr/src/auto/transceiver.sh
sudo nano /usr/src/CalypsoBTS/openbsc.cfg
sudo nano /usr/src/CalypsoBTS/osmo-bts-trx-calypso.cfg- The installer requires sudo privileges.
- If osmo-bts-trx reports missing libosmocoding/libosmocodec, rerun install.sh and then run sudo ldconfig.
Avviso: questo software e pensato per studio e ricerca sulla sicurezza delle reti GSM. L'autore non e responsabile per usi illeciti, incluse intercettazioni non autorizzate, attivita IMSI-catcher o qualsiasi uso vietato dalla normativa locale.
Questo progetto configura una BTS GSM su Raspberry Pi usando CalypsoBTS, componenti Osmocom e una GUI locale in Tkinter.
Collaudato e validato su installazione pulita di Ubuntu MATE 22.04 Desktop ARM64, su Raspberry Pi 4 (4 GB di RAM).
- Raspberry Pi (consigliato Raspberry Pi 3 o superiore)
- Linux Debian/Ubuntu (consigliato Ubuntu Mate 22.04.5 LTS 64-bit)
- Telefoni compatibili OsmocomBB (esempio Motorola C123/C121/C118)
- Adattatore USB-TTL CP2102
- Installa git:
sudo apt install git -y- Clona il repository:
git clone https://github.com/aleiei/Calypso_BTS.git- Entra nella cartella del progetto:
cd Calypso_BTS- Esegui lo script di installazione:
sudo sh install.shLo script:
- installa dipendenze di sistema e Python
- compila e installa libosmo-dsp e librerie runtime richieste
- copia i componenti in /usr/src/CalypsoBTS, /usr/src/osmo-nitb e /usr/src/auto
- installa i pacchetti .deb da /usr/src/CalypsoBTS
- copia i file service in /lib/systemd/system
Per rimuovere il sistema BTS dalla macchina, esegui:
./uninstall.sh --apply --purge-depsDopo l'installazione, avvia la GUI:
cd /usr/src/auto
sudo python3 auto.pySequenza consigliata nella GUI:
- TRX1 (e TRX2 se usi due telefoni)
- Clock
- Database
- BTS
Se vuoi avviare tutto manualmente, esegui i comandi in questo ordine esatto.
Sostituisci ARFCN con il canale desiderato (ad esempio 62, 75, 124).
sudo /usr/src/CalypsoBTS/osmocon -m c123xor -p /dev/ttyUSB0 -s /tmp/osmocom_l2 -c /usr/src/CalypsoBTS/firmwares/compal_e88/trx.highram.bin
sudo /usr/src/CalypsoBTS/transceiver -e 1 -a ARFCN -r99
sudo osmo-nitb --yes-i-really-want-to-run-prehistoric-software -c /usr/src/CalypsoBTS/openbsc.cfg -l /usr/src/CalypsoBTS/hlr.sqlite3 -P -C
sudo osmo-bts-trx -c /usr/src/CalypsoBTS/osmo-bts-trx-calypso.cfg -d DRSL:DOML:DLAPDMNote:
- Usa un terminale separato per ogni processo.
- Avvia il comando successivo solo quando il precedente e in esecuzione correttamente.
- Le impostazioni NITB e BTS sono in openbsc.cfg e osmo-bts-trx-calypso.cfg.
Quando usi auto.py, modifica i parametri qui:
sudo nano /usr/src/auto/transceiver.sh
sudo nano /usr/src/CalypsoBTS/openbsc.cfg
sudo nano /usr/src/CalypsoBTS/osmo-bts-trx-calypso.cfg- Lo script di installazione richiede privilegi sudo.
- Se osmo-bts-trx segnala librerie mancanti libosmocoding/libosmocodec, riesegui install.sh e poi sudo ldconfig.
This project is licensed under the MIT License. Copyright (c) 2026 Alessandro Orlando.