OsmoPCU » History » Revision 26

« Previous | Revision 26/32 (diff) | Next »
msuraev, 03/14/2019 02:55 PM


A PCU (Packet Control Unit) is one of the two GPRS elements in the BSS. It implements the RLC and MAC layers of the GPRS
Um (radio) interface on the MS-facing side, as well as the Gb Interface (NS,BSSGP) on the SGSN-facing side.

osmo-pcu is the Osmocom implementation of this PCU functionality.

It implements a custom L1 interface that can be used with OsmoBTS (specifically its
sysmoBTS back-end), and also with

The interface between OsmoPCU and OsmoBTS runs over UNIX socket of SOCK_SEQPACKET type. One of the ways to debug it would be via socat:

socat -t30 -x -v UNIX-LISTEN:/tmp/pcu_bts.socat,mode=755,type=5 UNIX-CONNECT:/tmp/pcu_bts,type=5

One might even forward it over network:
socat -t30 -x -v UDP-LISTEN:1666,reuseaddr,fork UNIX-CONNECT:/tmp/pcu_bts,type=5
socat -t30 -x -v UNIX-LISTEN:/tmp/pcu_bts.socat,mode=755,type=5 UDP-CONNECT:

Note: in the examples above OsmoBTS (listening side) uses default /tmp/pcu_bts socket while OsmoPCU (connecting side) is configured to use /tmp/pcu_bts.socat via pcu-socket /tmp/pcu_bts.socat config option. It's not recommeded to use outside of TTCN-3 test environment due to amount of traffic over the socket.

Towards the SGSN, the BSSGP and NS protocols are implemented over UDP/IP, sometimes called "NS over IP".
It has been tested with OsmoSGSN as well as an Ericsson SGSN so far.

osmo-pcu is now considered stable and already performing useful service for a number of users, but as one
of the more recent additions to the Osmocom family, there still is plenty of area for improvement.

Position in a typical Osmocom network


Source Code

The source code is available from git://

You can browse it online via

Test Suite

We have a TTCN-3 test suite as part of our Titan_TTCN3_Testsuites

Mailing List

There is a mailing list for (development) discussion regarding the PCU:
You can subscribe to it (or manage your subscription) at

Please make sure to read our MailingListRules before posting.


  • GPRS CS1 to CS4 with dynamic link/rate adaption
  • EDGE MCS1-MCS9 with dynamic link/rate adaption
  • Single-slot and multi-slot operation on downlink
  • Single-slot operation on uplink
  • Independent TFI/USF per PDCH in single-slot allocation mode
  • Automatic or fixed PDCH allocation algorithm selection
  • Delayed release of downlink TBF
  • Active queue management for downlink TBF (!CoDel)
  • Initial setting of timing advance based on RACH
  • BSSGP BVC flow control support
  • Using pchan types of TCH/F_TCH/H_PDCH or TCH/F_PDCH, OsmoBTS supports
    dynamic PDCH/TCH switching (implemented entirely in osmo-bts)

Shortcomings / Limitations / Restrictions

Note: this list may be outdated

  • No GPRS/EGPRS mixed mode (yet)
  • No support for hand-over of any sort yet
  • No support of processing measurement reports
  • No timing advance loop, i.e. radial movement is limited
  • No support for power control
  • No Packet Access Reject message on congestion, access is just ignored
  • No PCCCH support
  • Only "Dynamic allocation RLC data block transfer" is supported
  • No network controlled measurement/cell reselection order supported
  • No PTCCH support
  • No support for Packet Flow Contexts (PFC)
  • No support for MS or PFC flow control
  • No support for RLC unacknowledged mode operation
  • No support for MBMS

Authors / Credits

osmo-pcu was originally developed by Ivan Kluchnikov and Andreas Everberg.

Today it is maintaned by Sysmocom.

Updated by msuraev over 4 years ago · 26 revisions

Add picture from clipboard (Maximum size: 48.8 MB)