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 Shell – 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/Linux developer [email protected] @aleksander0m https://aleksander.es
Aleksander Morgado - GUADEC-ES 2014 - [email protected]