2G EDGE speed between 90 B/s and 1.2kB/s

Hi all,
I am working on GPRS/EGPRS on 2G. I am successfully providing packet output over EDGE, but I can reach speeds between 90 B/s and 1.2kB/s. Therefore, I cannot even open google.com or text.npr.org. What is the maximum speed I should get? Could there be a problem with my config settings? I would be very happy if you could review and get back to me.

e1_input
 e1_line 0 driver ipa
 e1_line 0 port 0
 no e1_line 0 keepalive
cs7 instance 0
 point-code 1.23.0
 asp asp-clnt-msc-0 2905 0 m3ua
  remote-ip 127.0.0.1
  sctp-role client
 sccp-address msc
  routing-indicator PC
  point-code 0.23.1
network
 network country code 901
 mobile network code 75
 encryption a5 1 3
 neci 1
 paging any use tch 0
 handover 1
 handover algorithm 1              
 handover1 power budget hysteresis 999        
 handover1 power budget interval 99
 bts 0
  type sysmobts
  band GSM900
  cell_identity 0
  location_area_code 23
  base_station_id_code 63
  ms max power 39
  cell reselection hysteresis 14
  rxlev access min 0
  radio-link-timeout 64
  penalty time 20
  temporary offset 0
  cell bar qualify 0
  cell reselection offset 31
  channel allocator ascending
  rach tx integer 14
  rach max transmission 1
  rach emergency call allowed 1
  channel-description attach 1
  channel-description bs-pa-mfrms 5
  channel-description bs-ag-blks-res 2
  no access-control-class-ramping
  access-control-class-ramping-step-interval 5
  access-control-class-ramping-step-size 1
  access-control-class-ramping-chan-load 71 89
  early-classmark-sending allowed
  early-classmark-sending-3g allowed
  ipa unit-id 1800 0
  oml ipa stream-id 255 line 0
  neighbor-list mode manual-si5
  codec-support fr hr efr amr
  amr tch-f modes 0 2 4 7
  amr tch-f threshold ms 32 32 32
  amr tch-f hysteresis ms 8 8 8
  amr tch-f threshold bts 32 32 32
  amr tch-f hysteresis bts 8 8 8
  amr tch-f start-mode auto
  amr tch-h modes 0 2 4
  amr tch-h threshold ms 32 32
  amr tch-h hysteresis ms 8 8
  amr tch-h threshold bts 32 32
  amr tch-h hysteresis bts 8 8
  amr tch-h start-mode auto
  gprs mode egprs
  gprs routing area 0
  gprs network-control-order nc0
  gprs cell bvci 2
  gprs nsei 101
  gprs nsvc 0 nsvci 101
  gprs nsvc 0 local udp port 23001
  gprs nsvc 0 remote udp port 23000
  gprs nsvc 0 remote ip 127.0.0.61
  ms-power-control
   mode static
  trx 0
   rf_locked 0
   arfcn 100
   nominal power 23
   max_power_red 0
   rsl e1 tei 0
   timeslot 0
    phys_chan_config CCCH+SDCCH4
    hopping enabled 0
   timeslot 1
    phys_chan_config SDCCH8
    hopping enabled 0
   timeslot 2
    phys_chan_config TCH/F
    hopping enabled 0
   timeslot 3
    phys_chan_config TCH/F
    hopping enabled 0
   timeslot 4
    phys_chan_config PDCH
    hopping enabled 0
   timeslot 5
    phys_chan_config PDCH
    hopping enabled 0
   timeslot 6
    phys_chan_config PDCH
    hopping enabled 0
   timeslot 7
    phys_chan_config PDCH
    hopping enabled 0
msc 0
 codec-list hr1 fr1
 allow-emergency allow
 amr-config 12_2k forbidden
 amr-config 10_2k forbidden
 amr-config 7_95k forbidden
 amr-config 7_40k forbidden
 amr-config 6_70k forbidden
 amr-config 5_90k allowed
 amr-config 5_15k forbidden
 amr-config 4_75k forbidden
 amr-payload octet-aligned
 msc-addr msc
 asp-protocol m3ua
 lcls-mode disabled
 lcls-codec-mismatch forbidden
 mgw remote-ip 127.0.0.1
 mgw remote-port 2427
bsc
 mid-call-timeout 0
cbc
 no remote-ip
 no listen-port
end```

Hi,

Which phone are you using?
can you provide osmo-pcu.cfg and osmo-bts.cfg as well?
Can you also provide a pcap file containing gsmtap from osmo-pcu and osmo-bts while registering the MS and doing some initial traffic test?

Here’s the gsmtap config I use, osmo-pcu:

pcu
 gsmtap-remote-host 192.168.30.1
 gsmtap-category dl-unknown
 gsmtap-category dl-ctrl
 gsmtap-category dl-data-gprs
 gsmtap-category dl-data-egprs
 gsmtap-category dl-agch
 gsmtap-category dl-pch
 gsmtap-category ul-unknown
 gsmtap-category ul-ctrl
 gsmtap-category ul-data-gprs
 gsmtap-category ul-data-egprs
 gsmtap-category ul-rach

osmo-bts.cfg:

bts 0
 gsmtap-remote-host 127.0.0.1
 gsmtap-sapi enable-all
 no gsmtap-sapi pdtch
 no gsmtap-sapi ptcch
 no gsmtap-sapi pacch

Hi pespin,
I use various Android and iOS based phones.

my osmo-pcu.cfg;

ns                           
 timer tns-block 3           
 timer tns-block-retries 3   
 timer tns-reset 3           
 timer tns-reset-retries 3  
 timer tns-test 30          
 timer tns-alive 3          
 timer tns-alive-retries 10 
 timer tsns-prov 3          
 timer tsns-size-retries 3  
 timer tsns-config-retries 3
pcu                         
 flow-control-interval 10   
 cs 2                      
 cs max 4                   
 cs threshold 10 33         
 cs downgrade-threshold 200 
 cs link-quality-ranges cs1 6 cs2 5 8 cs3 7 13 cs4 12
 mcs link-quality-ranges mcs1 6 mcs2 5 8 mcs3 7 13 mcs4 12 15 mcs5 14 17 mcs6 16 18 mcs7 17 20 mcs8 19 24 mcs9 23
 mcs max 9                  
 window-size 64 0           
 queue idle-ack-delay 10    
 queue codel                
 alloc-algorithm dynamic    
 alpha 0                 
 gamma 0                 
 pcu-socket /tmp/pcu_bts-1

and my osmo-bts.cfg;

bts 0
 band GSM900
 ipa unit-id 1800 0
 oml remote-ip 127.0.0.1
 rtp jitter-buffer 100
 rtp port-range 4002 16001
 paging queue-size 200
 paging lifetime 0
 uplink-power-target -75
 min-qual-rach -1
 min-qual-norm -5
 max-ber10k-rach 1707
 smscb queue-max-length 15
 smscb queue-target-length 2
 smscb queue-hysteresis 2
 trx 0
  power-ramp max-initial 0 mdBm
  power-ramp step-size 2000 mdB
  power-ramp step-interval 1
  ms-power-control osmo
  phy 0 instance 0
end

I don’t know how to get the pcap file you mentioned. If you’re talking about getting it via Wireshark, I really don’t know. I usually use the TEMS application. Do you have any information about this application? I can get a record that might interest you from here.

1 Like

Hi,

unfortunately if you cannot provide pcap files taken with tcpdump/wireshark/etc. showing the operation of the system there’s not much I can do to support you. You may want to study that aspect first.

Are you using osmo-bts-trx with osmo-trx? with which SDR? Or which BTS are you using?
It is known that osmo-trx produces quite low C/I values, which with default thresholds may force CS1 in osmo-pcu, which ofc incurs in lower rates.
You may want to debug that and play with the VTY command starting with “cs”/“mcs” in osmo-pcu (specially the “link-quality-ranges” ones).

PS: You may also want to contact sysmocom for commercial support if you are using osmo-pcu on some commercial project.

1 Like

Excellent question. Make sure you’re using a proper clock source.
Enable codel queue management (as shown in the example configuration posted by others).
Modern smartphones will generate a bunch of background traffic and especially with bad flow control, this will congest your TCP connections.

With a proper 2G EDGE setup, you can reach 10-20 KiByte/s without much trouble.

1 Like

Hi,
I use OCTBTS 3500 as SDR, OsmoBTS(sysmobts) as BTS. I entered the Osmo-PCU interface and changed the mcs values ​​with VTY commands, but there was not much change.

As a whole system, I used nitb, osmo-bsc, osmo-msc, osmo-bts, osmo-sgsn, osmo-ggsn, osmo-pcu and libosmocore repos. I never used osmo-trx repos. I defined trx in osmo-bsc-config (in the first message). I am working on getting pcap, I will send it as soon as I get it.

You would use osmo-bts-octphy with an OCTBTS 3500 hardware, there’s nothing sysmobts about it. sysmobts is a specific family of hardware sold by sysmocom.

osmo-bts-octphy (i.e. the osmo-bts backend for OCTBTS hardware) is not maintained since 2018, when the commercial engagement between Octasic (hardware+PHY manufacturer of OCTBTS) and sysmocom (maintainer of osmocom stack including osmo-bts-octphy) ceased. We as the maintainers of osmo-bts have not used or tested any osmo-bts version for the past 7 years on that hardware. It may or may not work, lots of things may or may not be broken. Your mileage may vary, and you’re on your own. You may contact octasic about this, if they sold you such as system, but the osmocom community and sysmocom consider this combination unmaintained for many years, as nobody funded the maintenance effort or took care of it.