This directory contains programs based on gr-gsm:
* grgsm_decode     (old name: airprobe_decode.py) - program for decoding C0 channel 
                    which is most close in terms of functionality to the old gsm-receiver 
                    from Airprobe project, with ability to decode signalling channels and traffic channels with speech 
                    (analysis of the data can be performed in Wireshark, decoded sound is stored to an audio file),
* grgsm_livemon    (old name: airprobe_rtlsdr.py) - interactive monitor of a single C0 channel with analysis 
                    performed by Wireshark (command to run wireshark: sudo wireshark -k -f udp -Y gsmtap -i lo),
* grgsm_scanner    (old name: airprobe_rtlsdr_scanner.py) - an application that scans GSM bands and prints 
                    information about base transceiver stations transmitting in the area.

There are following helper programs for grgsm_decode program:

* grgsm_capture    (old name: airprobe_rtlsdr_capture.py) - program for capturing GSM signal to a file 
                    that can be later processed by grgsm_decode,
* grgsm_channelize (old name: gsm_channelize.py) - splits wideband capture file into multiple files - each contain 
                  single GSM channel.

* grgsm_livemon_headless - command line version of grgsm_livemon.  It
                  is created by changing grgsm_livemon.grc like this:

                   - Change Options block->Generate Options from 'QT
                     GUI' to 'No GUI'.
                   - Set Options block->Run Options to 'Run to
                     Completion'.
                   - Remove the blocks 'QT GUI Range' (gain_slider,
                     fc_slider, ppm_slider) and the 'QT GUI Frequency
                     Sink'.
                   - Change all occurances of <param>_slider to
                     <param> in the XML file.

                  After these changes are done, build the
                  grgsm_livemon_headless python code using the grcc
                  compiler.

* grgsm_trx - a transceiver that together with Osmocom-BB (throught trxcon application)
              forms a GSM mobile station. Currently it works on non-hopping channels only.