Project

General

Profile

Actions

CSD (Circuit Switched Data)

This page documents Circuit Switched Data support in the mobile application (see #4396).

L1 PHY support

At the time of writing this wiki page, CSD support is implemented for the following L1 PHYs:

L23 support state

  • async (soft-UART) transparent V.110 calls
  • [not tested] sync transparent V.110 calls
    • [not tested] including fax calls
  • TCH/F9.4, TCH/F4.8, TCH/F2.4 (only @ 2400 bps)
  • [not tested] TCH/H4.8, TCH/H2.4 (only @ 2400 bps)

TODO/limitations

  • non-transparent calls (V.110 RLP, V.120)
  • TCH/F14.4 (see #6346 and #6167)
  • TCH/F2.4 and TCH/H2.4 @ 300 bps, 1200/75 bps (see #6347)
  • ECSD (multi-TCH support)
  • CUSE

VTY configuration

Below is an example configuration snippet (only relevant params):

ms 1
 support
  no full-data-14400
  full-data-9600
  full-data-4800
  half-data-4800
  full-data-2400
  half-data-2400
 tch-data
  io-handler unix-sock
! 'ti' is valid for Calypso PHY, change to 'osmo' for trxcon
  io-tch-format ti
  unix-socket /tmp/ms_data
  call-params type-rate 71
  call-params ce transparent
  call-params async
  call-params async nr-stop-bits 1
  call-params async nr-data-bits 8
  call-params async parity none

(you can use osmo-config-merge from libosmocore to merge this snippet into your mobile.cfg)

Call parameters

You can configure data call parameters either using call MS_NAME params command:

OsmocomBB(mobile)> enable
OsmocomBB(mobile)# call 1 params ?
  data  Parameters for data calls
OsmocomBB(mobile)# call 1 params data ?
  type-rate  Type and rate (values like in AT+CBST; see 3GPP TS 27.007, section 6.7)
  ce         Connection element (does not apply to FAX calls)
  sync       Synchronous connection (always used for FAX calls)
  async      Asynchronous connection (does not apply to FAX calls)

... or by entering the configuration node:

OsmocomBB(mobile)> enable 
OsmocomBB(mobile)# configure terminal 
OsmocomBB(mobile)(config)# ms 1
OsmocomBB(mobile)(ms)# tch-data 
OsmocomBB(mobile)(tch-data)# list
...
  io-handler (none|unix-sock|loopback)
  no io-handler
  io-tch-format (osmo|ti)
  unix-socket PATH
  call-params type-rate (4|5|6|7|68|70|71)
  call-params ce (transparent|non-transparent) [prefer]
  call-params (sync|async)
  call-params async nr-stop-bits <1-2>
  call-params async nr-data-bits <7-8>
  call-params async parity (none|even|odd|mark|space)

Below is the list of supported bearer type/rate combinations:

OsmocomBB(mobile)# call 1 params data type-rate?
  type-rate  Type and rate (values like in AT+CBST; see 3GPP TS 27.007, section 6.7)
OsmocomBB(mobile)# call 1 params data type-rate ?
  4   2400 bps (V.22bis)
  5   2400 bps (V.26ter)
  6   4800 bps (V.32)
  7   9600 bps (V.32)
  68  2400 bps (V.110 or X.31 flag stuffing)
  70  4800 bps (V.110 or X.31 flag stuffing)
  71  9600 bps (V.110 or X.31 flag stuffing)

This list may be extended in the future, e.g. after adding support for TCH/[FH]2.4 @ 300 bps, 1200/75 bps.

Making calls

Making a data call is as easy as making a regular voice call:

OsmocomBB(mobile)# call 1 MSISDN ?
  [voice]  Initiate a regular voice call (default)
  [data]   Initiate a data call (UDI or 3.1 kHz audio)
  [fax]    Initiate a data call (Facsimile group 3)

An incoming data call is answered just like a voice call:

OsmocomBB(mobile)# call 1 answer

After the call is connected (i.e. answered either locally or remotely), you can connect to the UNIX socket.

An ongoing call can be terminated just like a regular voice call:

OsmocomBB(mobile)# call 1 hangup

An incoming call can also be rejected using this command.

Example: sending text using socat

socat UNIX-CONNECT:/tmp/ms_data STDIO,echo=0,icanon=0

Example: sending files using socat and [xyz]modem

On the receiving side:

socat UNIX-CONNECT:/tmp/ms_data EXEC:"lrzsz-rz -v" 

On the sending side:

socat UNIX-CONNECT:/tmp/ms_data EXEC:"lrzsz-sz -v /usr/share/licenses/spdx/GPL-2.0-or-later.txt" 
Files (0)

Updated by fixeria 3 months ago · 8 revisions

Add picture from clipboard (Maximum size: 48.8 MB)