Link Search Menu Expand Document

Networking

Networking capabilities are primarily implemented through:

  • ConnMan for general network connection management
  • oFono for cellular networking
  • BlueZ for Bluetooth connectivity
  • D-Bus and MCE for system state management

ConnMan

ConnMan manages all internet connectivity features on Sailfish OS. This includes:

  • Wi-Fi and cellular mobile data scanning and connections
  • WLAN hotspot connection sharing
  • Flight mode handling for disabling/restoring connectivity

The Sailfish OS adaptation of ConnMan is available at https://github.com/sailfishos/connman. Generally, Sailfish app developers will find it easier to use libconnman-qt instead, as that provides a Qt-based API as well as a QML module for accessing ConnMan functionality.

oFono

oFono is the base library used for all cellular-related features. For example:

  • Cellular network registration and operator queries
  • Core modem management
  • Phone calls, SMS and MMS
  • Bluetooth connections for making calls via the Bluetooth Handsfree Profile (HFP)
  • SIM operations, including PIN and PUK codes and SIM ToolKit (STK) access
  • Supplementary service code handling including USSD/GSM Codes

The Sailfish OS adaptation of oFono is available at https://github.com/sailfishos/ofono. Generally, Sailfish app developers will find it easier to use libqofono and libqofonoext; these provide Qt-based APIs and QML modules for accessing oFono functionality.

Bluetooth

BlueZ is the base library for all Bluetooth-related features.

Currently, Sailfish OS provides the following profiles:

  • Audio Gateway for Headset Profile (HSP) and Handsfree Profile (HFP) for making calls via Bluetooth headsets
  • Advanced Audio Distribution Profile (A2DP) for playback of multimedia audio over a Bluetooth connection
  • SyncML client & server (SyncML) for synchronization of contact data
  • OBEX Object Push (OPP) for file exchange services
  • Phone Book Access Profile (PBAP) for exchanging phonebook data with a car kit
  • AVCTP 1.3 (Audio/Video Control Transport Protocol), AVDTP 1.2 (Audio/Video Distribution Transport Protocol) and AVRCP 1.3 (Audio/Video Remote Control Profile). Allows using your Sailfish device as a rudimentary remote control to other Bluetooth devices: “play, stop, pause” etc. commands to devices.
  • HID 1.0 (Human Interface Device Profile). Allows use of HIDs with a Sailfish device, for example keyboards and mice.

The Sailfish OS adaptation of BlueZ is available at https://github.com/sailfishos/bluez. Generally, Sailfish app developers will find it easier to use libbluez-qt instead, as that provides a Qt-based API and QML module for accessing BlueZ functionality.

Bluetooth audio distribution is managed through PulseAudio.

MCE

MCE provides mode-control for Sailfish OS. This includes management of screen modes (on, dimmed, off, locked), power modes (including deep-sleep and other low-power modes) and radio states which may affect network connectivity or latency (for example, allowing network packet I/O to be synchronised to a heartbeat timer to achieve power-saving efficiencies). The source code for MCE can be found here.