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 an unofficial version of OpenBTS that is being created by Fairwaves.

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 not fully stable yet, but already performing useful service for a number of users.

Source Code

The source code is available from git://

You can browse it online via

The branch to be used with OsmoBTS and sysmoBTS is the 'jolly_merge' branch.

Mailing List

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


Information about testing is available here: GPRS-testing


  • GPRS CS1 to CS4
  • single-slot and multi-slot operation on downlink
  • only single-slot operation on uplink

Shortcomings / Limitations / Restrictions

  • Pure GPRS PCU, no EGPRS (EDGE) functionality
  • Timeslots have to be assigned dedicated as a PDCH, no dynamic PDCH/TCH switching
  • No support for hand-over of any sort yet
  • No support of processing measurement reports
  • No timing advance loop, i.e. maximum cell radius 2-3 km
  • No dynamic link adaption for different coding schemes
  • No resource-dependent flow control
  • Single slot allocation algorithm only allocates the first available PDCH
  • Multi slot allocation algorithm
    • only allocates single uplink PDCH
    • limits allocation of type 1 mobile classes to 5 downlink PDCH
    • does not choose other uplink PDCH, if no USF is avaiable
  • 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
Last modified 11 months ago Last modified on Oct 14, 2014, 3:20:47 PM

Attachments (1)

Download all attachments as: .zip