Project

General

Profile

News

Cellular Network Infrastructure: February 2021 Osmocom CNI releases

Added by pespin 8 days ago

The Osmocom project has released new version 202102 of the CNI (Cellular Network
Infrastructure) software, including OsmoTRX, OsmoBTS, OsmoPCU,
OsmoBSC, OsmoMGW, OsmoMSC, OsmoHLR, OsmoSGSN,
OsmoGGSN, OsmoSTP,
osmo-sip-conector, and others.

Those new tagged/released versions contain in some cases up to one year of work
since the previous versions released during January 2020 (on some projects,
patch and intermediate releases were done during the year). The primary focus
was on bug-fixing and stabilization as well as some major new features, such as
IPv6 support.

You can find pre-compiled binary packages of our latest release for a variety of
Debian and Ubuntu GNU/Linux versions at
Latest_Builds.

List of tagged versions and link to related ChangeLog

Project Version Changelog
libgtpnl 1.2.2 http://git.osmocom.org/libgtpnl/plain/debian/changelog?h=1.2.2
libasn1c 0.9.33 http://git.osmocom.org/libasn1c/plain/debian/changelog?h=0.9.33
libsmpp34 1.14.1 http://git.osmocom.org/libsmpp34/plain/debian/changelog?h=1.14.1
libosmocore 1.5.1 http://git.osmocom.org/libosmocore/plain/debian/changelog?h=1.5.1
libosmo-abis 1.1.1 http://git.osmocom.org/libosmo-abis/plain/debian/changelog?h=1.1.1
libosmo-netif 1.1.0 http://git.osmocom.org/libosmo-netif/plain/debian/changelog?h=1.1.0
libosmo-sccp (+ OsmoSTP) 1.4.0 http://git.osmocom.org/libosmo-sccp/plain/debian/changelog?h=1.4.0
libosmo-ranap (+ OsmoHNBGW) 0.7.0 http://git.osmocom.org/osmo-iuh/plain/debian/changelog?h=0.7.0
OsmoTRX 1.3.0 http://git.osmocom.org/osmo-trx/plain/debian/changelog?h=1.3.0
OsmoBTS 1.3.0 http://git.osmocom.org/osmo-bts/plain/debian/changelog?h=1.3.0
OsmoPCU 0.9.0 http://git.osmocom.org/osmo-bts/plain/debian/changelog?h=0.9.0
OsmoBSC 1.7.0 http://git.osmocom.org/osmo-bsc/plain/debian/changelog?h=1.7.0
OsmoMSC 1.7.0 http://git.osmocom.org/osmo-msc/plain/debian/changelog?h=1.7.0
OsmoHLR 1.3.0 http://git.osmocom.org/osmo-hlr/plain/debian/changelog?h=1.3.0
osmo-mgw 1.8.1 http://git.osmocom.org/osmo-mgw/plain/debian/changelog?h=1.8.1
osmo-sip-connector 1.5.0 http://git.osmocom.org/osmo-sip-connector/plain/debian/changelog?h=1.5.0
OsmoSGSN 1.7.0 http://git.osmocom.org/osmo-sgsn/plain/debian/changelog?h=1.7.0
OpenGGSN 1.7.1 http://git.osmocom.org/osmo-ggsn/plain/debian/changelog?h=1.7.1
osmo-pcap 0.1.3 http://git.osmocom.org/osmo-pcap/plain/debian/changelog?h=0.1.3
osmo-gbproxy 1:0.1.0 http://git.osmocom.org/osmo-gbproxy/plain/debian/changelog?h=0.1.0
osmo-cbc 0.2.2 http://git.osmocom.org/osmo-cbc/plain/debian/changelog?h=0.2.2
osmo-smlc 0.2.0 http://git.osmocom.org/osmo-smlc/plain/debian/changelog?h=0.2.0
osmo-e1d 0.2.0 http://git.osmocom.org/osmo-e1d/plain/debian/changelog?h=0.2.0
osmo-gsm-manuals 1.1.0 http://git.osmocom.org/osmo-gsm-manuals/plain/debian/changelog?h=1.1.0

Noteworthy Changes

Misc / Common

  • libosmocore: Introduce support for signalfd
  • libosmocore: Improvements/fixes for multi-thread processes
  • libosmocore: Event loop migrated from select() to poll()
  • libosmocore: The library now provides Hashtable data structure support
  • libosmocore: The library now provides an inter-thread queue API
  • libosmocore: Initial support for static userspace probes via systemtap
  • libosmocore: lapdm: fixed SAPI-0/SAPI-3 frame prioritization on DCCH
  • libosmocore: logging: New systemd-journal target
  • libosmocore: logging: New log line prefix "thread-id"
  • libosmogb: New NS2 API (see Network_service_(NS))
  • libosmogb: Add Frame Relay support
  • libosmo-abis: Improve TRAU support
  • VTY: New "expert" mode introduced
  • VTY: Commands can now contain attributes providing information about the command
  • VTY: Most projects generate now xml output automatically at build time
  • VTY: Most projects now allow setting scheduler cpu-affinity and RR priority
  • Several improvements and fixes to stats / rate counters
  • Lots of fixes for struct bit fields on big-endian systems
  • RPM spec files added to most projects
  • IPv6 support added to lots of interfaces on several projects, both on transport side as well as on signalling.

OsmoTRX

  • uhd: Support UHD >=3.11 logging framework
  • lms: Initial multi-arfcn support
  • ipc: Introduce new backend osmo-trx-ipc
  • Introduce osmo-prbs-tool: PRBS tool sending PRBS sequence to TRX
  • CTRL threads removed, now handled by main thread
  • OsmoTRX now provides Nominal Tx Power to osmo-bts through "NOMTXPOWER" in TRXC protocol
  • Introduced new TRXC "MUTE" command
  • TxGain is now applied based on expected Tx output power through empirical measurements (#4583)
  • Calculate RSSI offset based on RxGain configuration
  • New rate counters available to check whether timing issues are occurring in low level layers, TRXD, etc.
  • Documentation improvementes and fixes
  • Several generic optimizations, fixes, etc.

OsmoBTS

OsmoPCU

OsmoBSC

  • Ericsson RBS2000: Improved Support (OM2000)
  • Siemens BS-11: Improved support
  • Validate codec settings configuration at startup
  • OML failure reports are store and can be displayed over VTY
  • Stats / counters improvements and fixes
  • IMSI filtering features have been removed completely
  • All BSC originated USSD notification features have been removed completely
  • Support MSC pooling
  • ACC barring: Implement barred subset rotation
  • Lots of improvements to Handover related logic
  • Cell Broadcast: CBSP VTY configuration commands rewritten
  • LCS: Introduced support for Lb interface (against SMLC)
  • New set of FSMs handling OML provisioning
  • Improvements to BTS power control (BS power)
  • Support ACCH repetition
  • Support Emergency Call preemption
  • Support specifying PS neighbors in VTY (Introduce CTRL interface for Neighbor resolution)
  • Per-burst attenuation for BS power control is now applied correctly

OsmoMSC

  • Rudimentary NRI support added
  • Support new MNCCv7 protocol version (with IPv6 support)
  • Lots and lots of fixes and small improvements
  • Proper call teardown if a call leg disconnects unexpectedly

OsmoHLR (and libosmo-gsup-client)

  • Introduce support for D-GSM (Distributed GSM), mslookup server
  • Introduce libosmo-mslookup library and osmo-mslookup-client tool
  • GSUP connections now set TCP_NODELAY
  • support the XOR algorithm for UMTS AKA

OsmoMGW (and libosmo-mgcp-client)

  • Add CTRL interface
  • Support E1 endpoints
  • Full IPv6 support in both MGCP and RTP

osmo-sip-connector

  • MNCC v7: IPv6 support

OsmoSTP (and libosmo-sigtran)

  • IPv6 support (together with IPv4+IPv6 SCTP multi-homing)
  • Initial support for M3UA and SUA sub-protocol [S]SNM
  • Initial support for SCCP minimalistic SCMG implementation
  • Lots of fixes and small improvements

OsmoSGSN

  • Implement RAT change between 2G and 3G
  • Support RIM procedure routing
  • Use the new NS2 osmocom stack

OsmoGGSN (and libgtp)

  • Introduce netns support for tun interfaces
  • sgsnemu: Support handling IPv6 SLAAC in tun interface, improve IPv6 support

OsmoBTS: Summary of OsmoBTS work during 2020

Added by laforge 21 days ago

This is a summary of the work that has happened on OsmoBTS in the January 2020 through early February 2021 time frame.

In general, a large focus has been on variuos "enterprise" features that are mostly relevant to operating BTSs with large number of TRX in dense (urban) interference limited networks. This is quite a bit different from the more traditional OsmoBTS use cases in rural applications, where networks are limited by coverage, and not by interference.

OsmoBTS (osmo-bts-trx) has now been tested successfully with configurations up to 8TRX.

Major changes:
  • BS (downlink) power control
  • baseband frequency hopping
  • tons of fixes regarding the accuracy of measurement reports (which is very important for proper hand-over performance)
  • EWMA based filtering of power control loops
  • Repeated downlink SACCH support; 3GPP Release 6 (#4794)
  • Repeated uplink SACCH support; 3GPP Release 6 (#4795)
  • Repeated downlink FACCH support (#4796)

The slightly more detailed versions below:

Common/General changes

  • various fixes regarding measurement reporting / averaging
  • 11bit RACH support
  • print lchan name in all log lines / simplify debugging (#1938)
  • improved reporting of BTS features/capabilities to BSC
  • BS (downlink) power control
  • power ramp-down on BTS shutdown
  • power ramp-up/ramp-down during ADM state changes
  • many fixes to A-bis OML MO finite state machines
  • OML: fix ARFCN range checks
  • support setting real-time scheduler priority via VTY
  • OML Fix Radio Carrier OPSTATE change report not sent in all scenarios
  • OML + PCU interface: Support for IPv6 NS-VCs to PCU
  • automatic VTY reference generation --vty-ref-xml (#1601)
  • Only send SI13 if PCU is connected (#3075)
  • Don't broadcast SI4 GPRS indicator if PCU is not connected (#3075)
  • power_control: EWMA based uplink power filtering
  • count measurements for FACCH/F only once (#4799)
  • count all blocks for "SUB" for TCH/F in signaling mode (#4799)
  • fix number of expected measurements (#4799)
  • fix integer overflow in measurement processing (#4799)
  • fix L1 SAPI activation ordering in hand-over (likely impacts handover performance)
  • Repeated downlink SACCH support; 3GPP Release 6 (#4794)
  • Repeated uplink SACCH support; 3GPP Release 6 (#4795)
  • Repeated downlink FACCH support (#4796)
  • Activate DL SACCH only when TA is known (#4008, #4009)

osmo-bts-trx specific changes

Traditionally, osmo-bts-trx used to have less features than the other osmo-bts variants (such as osmo-bts-sysmo for sysmoBTS devices).
The focus of the development has meanwhile shifted, and osmo-bts-trx has been catching up significantly, and in some cases even exceeding the capabilities of osmo-bts-{sysmo,lc15,oc2g,octphy}.

  • TRX: nope indications; fixes many measurement related issues
  • TRX: AMR DTX frame detection (#2978)
  • TRX: fix uplink measurement reporting durign hand-over (#4592)
  • TRX: power-ramping during BTS power up
  • TRX: Fix reading out of buffer during tx of dummy burst on PDCH TS with EGPRS enabled (#4606)
  • TRX: baseband frequency hopping support (#4546)
  • TRX: Fix crash due to ASSERT related to dynamic timeslots (#4920)
  • TRX: Fix crash due to ASSERT related to rf-lock and dynamic timeslots
  • TRX: significantly reduce clock advance, reducing latency significantly (#4487)

OsmoPCU: Summary of OsmoPCU work during 2020

Added by laforge 21 days ago

This is a summary of the work that has happened on the osmo-pcu software in 2020, specifically the timeframe January 2020 through early February 2021.

  • large number of various CSN.1 encoder/decoder fixes
  • fix an infinite loop in CSN.1 dissector
  • fix pcu_sock related memory leak
  • MS RA capability parsing fixes (#4463)
  • properly encode P-TMSI in RR PAGING REQUEST
  • Fix UL-ACK not sent to MS if intermediate UL block is lost
  • 11bit RACH support (EGPRS Packet channel Requeset, #1548)
  • do not encode out-of-range TA value
  • fix RRBP field in packet uplink assignment
  • add support for IPv6 NS-VCs
  • add support for frequency hopping
  • fix crashes due to NULL pointer deref (#4756)
  • downgrade to DL MCS1-4 when USF for GPRS_only MS (#4544)
  • Get rid of LLC UI dummy blocks following other data (#4849)
  • support GPRS concurrently with EGPGRS (previously only either/or)
  • support Gb interface with IP-SNS
  • Fix Dl EGPRS data blocks being generated occasionally on GPRS TBFs (#4973)
  • NACC (Network Assisted Cell Change) support
So in short:
  • lots of bugs fixed all over
  • GPRS and EPGRS are no longer exclusive, but GPRS-only MS can be served while EGPRS is active
  • Network Assisted Cell Change is going to significantly improve cell reselection performance
  • IPv6 support on the Gb interface
  • IP-SNS support on the Gb interface

We are planning to tag a new osmo-pcu release soon-ish. This is mainly awaiting the full stabilization of the "NS2" (new NS code) VTY interface and APIs. Once released, those will be stable and cannot be modified in incompatible manner anymore.

E1/T1 Hardware Interface (including icE1usb): Development of DAHDI driver for icE1usb

Added by laforge 2 months ago

So far, the icE1usb reuired a custom user-space driver (osmo-e1d) in order to operate. While this has the advantage that no kerne/operating system level code is required, it has a few disadvantages such as the increased overhead of frequent context switches, the increased propability of overruns/underruns and the lack of interoperability with other software outside the Osmocom universe.

A first version of a DAHDI hardware driver for icE1usb is now available for public beta-testing, for details see redmine issue #4923

Using this DAHDI driver, it should be possible to use icE1usb with any DAHDI-using application, such as Asterisk, FreeSWITCH and others.

Osmocom.org Servers: scheduled Osmocom outage on *2020-07-19 9am CEST*

Added by laforge 8 months ago

There is an urgent need to migrate our most important public infrastructure to a new server, and I will be doing that on Sunday, July 19 2020, starting about 9am CEST.

The migration involves redmine (main osmocom.org website), jenkins, gerrit, git, and cgit.

In theory, the migration should be quick. I would expect (significantly) less than one hour of downtime. However, we all know Murphys law.

Services not affected are mail (including mailman lists), ftp, dns. So in case of doubt, we can still use mailing lists to communicate.

In case anyone urgently needs osmocom source code on Sunday morning during the downtime: There are public mirrors available on github.

Regards, laforge

Distributed GSM: Distributed GSM: Merged to OsmoHLR

Added by neels 10 months ago

The D-GSM implementation developed under a Mozilla MOSS grant is now complete and merged to the OsmoHLR master branch. It is hence featured in OsmoHLR's Nightly Builds, and will be included in the next OsmoHLR release (upcoming OsmoHLR v1.21).

Distributed GSM is a unique feature set tailored to non-centralized collaboration of communal mobile network sites, as explained in this news post from a few months ago: Distributed GSM / Multicast MS Lookup. Compared to traditional (centralized, highly available) core networks, the most novel aspects of D-GSM are that it allows mobile network sites to roam its subscribers and connect calls without any central entity, and that it minimizes disruption that may be caused by unstable links between sites.

Find full documentation in the OsmoHLR User Manual: there is a new section called "Distributed GSM / Multicast MS Lookup", explaining how to configure and run D-GSM in all detail. Find the latest manuals here.

Please go ahead and give D-GSM a spin, and let us know of any feedback!

Cellular Network Infrastructure: January 2020 Osmocom CNI releases

Added by pespin about 1 year ago

The Osmocom project has released new version 202001 of the CNI (Cellular Network Infrastructure) software, including OsmoTRX, OsmoBTS, OsmoPCU, OsmoBSC, OsmoMGW, OsmoMSC, OsmoHLR, OsmoSGSN, OsmoGGSN, OsmoSTP, OsmoSIPConnector, and others.

Those new tagged/released versions contain five months of work since the previous versions released during August 2019. The primary focus was on bug-fixing and stabilization as well as some major new features, such as inter-MSC-handover support in osmo-msc.

You can find pre-compiled binary packages of our latest release for a variety of Debian and Ubuntu GNU/Linux versions at Latest_Builds.

List of tagged versions and link to related ChangeLog

Project Version Changelog
libosmocore 1.3.0 http://git.osmocom.org/libosmocore/plain/debian/changelog?h=1.3.0
libosmo-abis 0.8.0 http://git.osmocom.org/libosmo-abis/plain/debian/changelog?h=0.8.0
libosmo-netif 0.7.0 http://git.osmocom.org/libosmo-netif/plain/debian/changelog?h=0.7.0
libosmo-sccp (+ OsmoSTP) 1.2.0 http://git.osmocom.org/libosmo-sccp/plain/debian/changelog?h=1.2.0
osmo-iuh (+ OsmoHNBGW) 0.6.0 http://git.osmocom.org/osmo-iuh/plain/debian/changelog?h=0.6.0
OsmoTRX 1.2.0 http://git.osmocom.org/osmo-trx/plain/debian/changelog?h=1.2.0
OsmoBTS 1.2.0 http://git.osmocom.org/osmo-bts/plain/debian/changelog?h=1.2.0
OsmoPCU 0.8.0 http://git.osmocom.org/osmo-bts/plain/debian/changelog?h=0.8.0
OsmoBSC 1.6.0 http://git.osmocom.org/osmo-bsc/plain/debian/changelog?h=1.6.0
OsmoMSC 1.6.1 http://git.osmocom.org/osmo-msc/plain/debian/changelog?h=1.6.1
OsmoHLR 1.2.0 http://git.osmocom.org/osmo-hlr/plain/debian/changelog?h=1.2.0
OsmoMGW 1.7.0 http://git.osmocom.org/osmo-mgw/plain/debian/changelog?h=1.7.0
OsmoSIPConnector 1.4.0 http://git.osmocom.org/osmo-sip-connector/plain/debian/changelog?h=1.4.0
OsmoSTP 1.1.0 http://git.osmocom.org/libosmo-sccp/plain/debian/changelog?h=1.1.0
OsmoSGSN 1.5.0 http://git.osmocom.org/osmo-sgsn/plain/debian/changelog?h=1.5.0
OsmoGGSN 1.5.0 http://git.osmocom.org/osmo-ggsn/plain/debian/changelog?h=1.5.0
OsmoPCAP 0.1.2 http://git.osmocom.org/osmo-pcap/plain/debian/changelog?h=0.1.2
osmo-gsm-manuals 0.3.0 http://git.osmocom.org/osmo-gsm-manuals/plain/debian/changelog?h=0.3.0

Noteworthy Changes

Misc / Common

  • libosmocore: logging (and other subsystem) improvements for multi-thread processes (like osmo-trx)
  • libosmocore, libosmo-netif, libosmo-sccp: multi-address (multi-homing) support (multi-homing) and configure flags for libsctp (--enable-libsctp)
  • libosmocore: integration of libusb in libosmocore's main loop (--enable-libusb)
  • libosmocodec: new generic Error Concealment Unit abstraction
  • libosmovty: Several crash fixes and improvements regarding command parsing, node tracking, etc.
  • libosmogsm: add support for XOR authentication
  • libosmo-abis: DAHDI support fixes and improvements. It is now enabled by default (--enable-dahdi)
  • osmo-iuh: First version of libosmo-sabp now available, containing SABP ASN.1 from 3GPP TS 25.419 V11.1.0
  • osmo-iuh: First version of OsmoHNBGW User Manual now available.
  • Add code coverage support
  • port most python scripts to use python3 (python2 will become deprecated soon)
  • Improve reproducibility, fix sporadic failures of some tests

OsmoTRX

  • Improved robustness all along the code, fixing several crashes and regressions, avoiding unnoticed underrun events, etc.
  • Lots of logging improvements (use libosmocore multi-thread lock API, print channel, new log categories, support libuhd's >=3.11 logging system, etc.)
  • Several fixes in TRXDv1 and TRXC (avoid dropping ul idle indications, wrong responses on some CMDs, etc.)
  • Improved performance in some specific cases (Enable EDGE detection only on PDCH timeslots)
  • Multi-arfcn improvements: ARFCN setup verficiation (RXTUNE/TXTUNE), code cleanup
  • vty: Simplify filler burst settings and improve help and readability

OsmoBTS

  • Increased robustness and small fixes and improvements all over the code
  • Several fixes and improvements in PCU interface: fix endian-swapped CellID, forward ETWS Primary Notification, set correct ARFCN, etc.
  • New improved generic MS Power Control Loop available for all BTS variants ("ms-power-control osmo")
  • Migrate to use new libosmocore's generic ECU abstraction
  • Several fixes and improvements for measurement reports.
  • vty: add "logging filter l1-sapi"
  • bts-trx: Fix several inconsistencies in TRX setup and lifecycle management of each TRX, clock availability, etc.
  • bts-trx: Improvements thanks to information available from TRX using TRXDv1 (C/I, ToA, etc.)
  • bts-trx: Improvements handling PDCH: fix handling of PTCCH/U and PTCCH/D logical channels, detect TSC for Access Burstsm etc.

OsmoPCU

  • Improve User Manual documentation
  • Forward ETWS Primary Notification to MS
  • Several crash, assertion fixes and robustness improvements
  • GSMTAP support improved, with more categories and fixes on existing ones
  • Move some of the existing timer infrastructure to use osmo_tdef
  • PTCCH support added
  • bssgp: do not reject SUSPEND ACK / NACK messages
  • vty: fix command 'show tbf all': properly filter TBFs

OsmoBSC

  • Cell Broadcast: CBSP and CBCH scheduling support
  • SMSCB: Send ETWS primary Notification/Warning
  • Fix RSL connection timeout for TRX other than first one
  • Send IE MS Power Param during CHAN ACT (to osmo-bts only, to enable Autonomous MS Power Control Loop in BTS)
  • Decode classmark of MS and infer its the maximum MS Power Control level, then tell the BTS through MS PWR CTRL message
  • Support SCTP multi-homing in AoIP, lots of sigtran improvements (thanks to new libosmo-sccp)
  • Several crashes fixes, robustness and logging improved

OsmoMSC

  • Improvements in SGs interface and CSBF
  • Several crash fixes, memory leak fixes, robustness and logging improved, specially during Call Control
  • MNCC v6: add optional SDP to the socket protocol. Now SDP can be passed SIP<->MSC<->MGW.
  • Improved counter documentation
  • Fix SM-RP-OA encoding for MO SMS over GSUP
  • Implement a VTY global switch on the network to disable call waiting ("[no] call-waiting")
  • Support SCTP multi-homing in AoIP, lots of sigtran improvements (thanks to new libosmo-sccp)

OsmoHLR (and libosmo-gsup-client)

  • Add --db-check program option
  • Update tb dv schema v4 (and lots of infra added to test schema update)
  • AUC: Add support for setting the AMF separation bit to '1' for EUTRAN
  • Make tests more robust: return codes on mipsel and alpha archs, test_nodez.vty expectancies, etc.
  • Several crash fixes and increased robustness

OsmoMGW (and libosmo-mgcp-client)

  • Improvements in codec parsing and management
  • Several crash fixes, memleak fixes and increased robustness

OsmoSIPConnector

  • MNCC v6: add optional SDP to the socket protocol
  • logging from sofia: add missing newline
  • Fixes in systemd's osmo-sip-connector.service dependencies
  • Several robustness improvements

OsmoSTP (and libosmo-sigtran)

  • Introduce SCTP multi-homing (multi address socket) support
  • Support for all SS7 traffic modes: override, load-share, broadcast
  • Dynamic ASP creation in AS for IPA connetions (identified by IPA unit id)
  • Configure freely IPA/SCTP links as client or server, and M3UA link role as SGW or ASP
  • osmo_sccp_simple_client(): use sccp instance index 0 instead of 1
  • A lot more other SS7 protocol stack fixes and improvements

OsmoSGSN

  • File/directory structure cleanup
  • Initial OsmoGbPROXY user manual
  • Fix of some long standing bugs and crashes
  • LLC: Don't use hard-coded N201-U / N201-I values in XID
  • Improved Iu/RANAP support and related fixes
  • Logging improvements
  • Migrate timers to osmo_tdef
  • gtp: Drop related pdp contexts on echo timeout against GGSN
  • Lots of improvements in (P)MM state FSMs: related timers, actions, etc.
  • Gb: implement PS Paging when MS is MM_STANDBY

OsmoGGSN (and libgtp)

  • Implement echo req/resp and recovery
  • libgtp: Manage queue timers internally
  • libgtp: Remove packets in tx queue belonging pdp being freed
  • Improvedd logging
  • Some IPv6 related fixed
  • Several crash fixes and improved robustness
(1-10/132)

Also available in: Atom

Add picture from clipboard (Maximum size: 48.8 MB)