Mobile Internet in GNOME

aleksander.es

Aleksander Morgado - GUADEC-ES 2014 - [email protected] From the bottom to the top aleksander.es

● Userspace: user programs Gnome – GNOME Shell – GNOME Control Center Gnome Control Center

● ... Userspace: system daemons Session – NetworkManager System ModemManager NetworkManager Userspace ● pppd, dhclient... – ModemManager cdc-wdm TTY NET Kernel

● libqmi, libmbim... qmi_wwan generic cdc_mbim

● Kernel cdc_mbim option qmi_wwan – Control port drivers ... qcserial sierra_net – Data port drivers ......

Aleksander Morgado - GUADEC-ES 2014 - [email protected] Kernel aleksander.es

Binary protocol on TTY All-USB, binary protocol

Control Data Control Data (BINARY) (PPP) (BINARY) (WWAN)

Generic modems Multi-TTY modems TTY TTY USB USB Control Data Control Data (TEXT) (PPP) (TEXT) (PPP) E.g. Sierra CnS, E.g. Qualcomm QMI, Qualcomm QCDM MBIM TTY TTY TTY USB Net port with AT control All USB, text protocol

Control Data Control Data (TEXT) (WWAN) (TEXT) (WWAN)

TTY

USB USB

E.g. Sierra Direct IP, E.g. Ericsson MBM, Option HSO some Huawei NDISDUP

Aleksander Morgado - GUADEC-ES 2014 - [email protected] Kernel aleksander.es ● TTY drivers for Control ports – Generic – Vendor specific (e.g. option, qcserial, zte_ev, sierra...) ● NET drivers for Data ports – Generic (e.g. cdc_ncm) – Vendor specific (e.g. hso, sierra_net) ● Shared control/data port drivers: NET + cdc-wdm – Generic (e.g. cdc_mbim) – Vendor specific (e.g. qmi_wwan)

Aleksander Morgado - GUADEC-ES 2014 - [email protected] Kernel ↔ Userspace aleksander.es ● Control port – TTY serial port – cdc-wdm port ● Data port – TTY serial port – WWAN net interface

Aleksander Morgado - GUADEC-ES 2014 - [email protected] Userspace: system daemons aleksander.es ● ModemManager – Control port(s)

● SIM unlocking, Network registration, Signal quality, Location information, Connection setup (APN, auth*) ● Primary & secondary ports ● External libraries for some binary protocols (e.g. libmbim, libqmi) ● NetworkManager – TTY Data port

● PPP (launches pppd) – NET Data port

● DHCP (launches dhclient or dhcpcd) ● Static (netlink with kernel)

Aleksander Morgado - GUADEC-ES 2014 - [email protected] ModemManager state machine

aleksander.es

Aleksander Morgado - GUADEC-ES 2014 - [email protected] ModemManager plugins aleksander.es

Aleksander Morgado - GUADEC-ES 2014 - [email protected] System <->Session aleksander.es ● DBus – org.freedesktop.ModemManager1

● /org/freedesktop/ModemManager1/Modem/0 ● /org/freedesktop/ModemManager1/Sim/0 ● /org/freedesktop/ModemManager1/Bearer/0 ● /org/freedesktop/ModemManager1/Sms/0 – org.freedesktop.NetworkManager

● /org/freedesktop/NetworkManager/Devices/0 – Org.freedesktop.NetworkManager.Device ● Udi == /org/freedesktop/ModemManager1/Modem/0

Aleksander Morgado - GUADEC-ES 2014 - [email protected] Session: Shell aleksander.es

Aleksander Morgado - GUADEC-ES 2014 - [email protected] Session: Control Center aleksander.es

Aleksander Morgado - GUADEC-ES 2014 - [email protected] Demo? aleksander.es ...

Aleksander Morgado - GUADEC-ES 2014 - [email protected] Thanks! aleksander.es

+Aleksander Morgado Freelance GNU/ developer [email protected] @aleksander0m https://aleksander.es

Aleksander Morgado - GUADEC-ES 2014 - [email protected]