Networking

This is an incomplete, in-progress, and partly-implemented specification for Ubuntu’s networking features on PC and phone.

Ubuntu lets you connect to the Internet and other networks in various ways, including Wi-Fi, Ethernet (PC only), PBX (phone only), cellular data, and Bluetooth. This is implemented using NetworkManager (upstream, Ubuntu package, Ubuntu bug reports) and oFono (upstream, Ubuntu package, Ubuntu bug reports).

If you need help with networking in Ubuntu, see Ubuntu Help “Internet and Networking”.

Contents

  1. Overall interface structure
    1. Settings
    2. Network activity menu (phone/tablet)
    3. Network menu (all form factors)
      1. Title
      2. Structure
      3. Session variations
  2. When an app tries to use the Internet
  3. Connections
    1. Flight Mode
      1. Flight Mode in System Settings
      2. Flight Mode in the network menu
    2. Common behavior across connection types
      1. PC: Connections in the PC “Network” panel
      2. Connection progress in the network/wi-fi menu
      3. Connecting to a captive portal
      4. Disconnection
    3. Wi-Fi and hotspots
      1. Naming and listing Wi-Fi networks
      2. Wi-Fi in “Network” settings (PC)
      3. “Wi-Fi” settings (phone)
      4. “Previous Networks”
      5. Wi-Fi in the network menu
      6. Suggesting that you connect to Wi-Fi
      7. Entering Wi-Fi network details
      8. Connecting to a broadcast Wi-Fi network
      9. Connecting to a hidden Wi-Fi network
      10. Authentication variations, certificates, and PAC files
      11. Hotspot setup
      12. Wi-Fi connection progress and confirmation
      13. Cancelling a connection
      14. Wi-Fi network properties
    4. Wired connections (PC only)
      1. Connecting to a wired network, in general
      2. Wired devices in the Network Settings window
      3. Wired section of the network status menu
      4. Wired network properties
    5. Cellular connections
      1. SIM identifier
      2. “Cellular” settings on phone
        1. “Data Usage“
        2. “Outgoing calls”
        3. “Carrier”/“Carriers”
        4. “APN”
        5. “Connection type”
        6. “SIM names”
      3. Cellular devices on PC
      4. Setting up a cellular connection, prompted
        1. Setting up or changing a mobile connection, unprompted
        2. “Mobile Setup” window
    6. Bluetooth connections (PC only)
      1. Data
    7. To do
  4. VPNs
    1. VPN section of the network status menu
  5. Proxies
  6. Firewall (PC only)
  7. Sharing
  8. PC-specific designs (to be integrated above)
    1. Artwork requirements
  9. Future work
    1. Locations
      1. Creating a location
      2. Renaming a location
      3. Deleting a location
  10. Unresolved issues

Function

Phone

Tablet

PC

Overall interface structure

On all form factors, the networking interface is based on System Settings panels and indicator menus. On a phone or tablet, both the settings panels and the menus are broader (showing more at the top level) than on a PC, because network connection is usually more variable and more expensive than it is on a PC.

On all form factors, there are also occasional dialogs (for example, for Wi-Fi suggestions or captive portals) and notification bubbles.

Settings

settings-connections-wifi.png phone-settings-network.png

On a PC, networking settings should be shown in a single System Settings “Network” panel, with tabs for “Connections”, “VPNs”, “Proxies”, “Firewall”, and “Sharing”. At the bottom left of the panel should be a “Show network status in the menu bar” checkbox (fixing bug 829673).

because cellular and Bluetooth connections are networking settings should be split across the System Settings “Flight Mode” top-level item, and the “Wi-Fi”, “Cellular”, and “Bluetooth” screens.

Network activity menu (phone/tablet)

phone-activity-menu.png

On a phone or tablet, it is useful to know when apps are using the network, for several reasons:

  • You may want to check that nothing important is using the network before turning on Flight Mode.
  • Since the device is highly mobile and does not have a wired connection, you may want to check before moving into a space that has no networking (such as a lift/elevator or subway).
  • Data can be expensive, and even Wi-Fi data may be subject to a bandwidth limit.
  • On a phone, screen real estate is at a premium, and apps may not have room for custom progress feedback.
  • Often an app’s developer will have a faster connection than their users, and so may not provide enough custom feedback when a task is waiting on the network.

All these reasons apply much more to a mobile device than to a PC.

Therefore on the phone and tablet only, the “Network activity” indicator, a spinner, should be present whenever any process has used the network in the past five seconds. Its menu should list all applications that have used the network in the past five seconds, most recent first but updating only once every five seconds.

Network menu (all form factors)

People will usually open the Network menu when something is wrong with their Internet connection. The menu should let you see at a glance whether you are connected to the network, and if so how; switch quickly between likely connection methods; and access more detailed network information and settings.

Title

On the PC, the title of the menu should show the most unusual method by which the computer is currently connected to the Internet, or that it is not connected at all. So it should consist of an icon:

  • ✈ the Flight Mode icon if the computer is in Flight Mode; otherwise

  • cellular-icon-signal.png the cellular icon with 1 to 5 bars for the current cellular signal strength, if there is one; otherwise

  • wired-icon.png the wired connection icon, if there is an active wired connection; otherwise

  • wi-fi-icon-connecting.png an animated Wi-Fi icon, if Wi-Fi is connecting; otherwise

  • wifi-icon-signal.png the Wi-Fi icon with 1 to 4 arcs for the current Wi-Fi signal strength, if there is an active Wi-Fi connection; otherwise

  • mobile-icon-disconnected.png the cellular disconnected icon, if a cellular device is connected but has no network connection (because a PC needs to distinguish this state from “no mobile device connected”, which a phone doesn’t need to do); otherwise

  • wi-fi-signal-none.png the Wi-Fi icon with 0 arcs, if Wi-Fi is on but there is no connection; otherwise

  • wifi-icon-off.png the Wi-Fi off icon, if Wi-Fi is off; otherwise

  • wired-icon-disconnected.png the wired disconnected icon, if there is a wired networking device but it is not detected; otherwise

  • a red Warning /!\ icon. (If the PC is air-gapped so that disconnection is the normal state, you will have “Show network status in the menu bar” turned off so that this icon doesn’t appear.)

The accessible name for the title should consist of the word “Network”, a space, and then bracketed text equivalent to the icon. For example, “Network (Flight Mode on)”, “Network (mobile, 1 bar)”, “Network (wireless, 70%)”, “Network (wired)”, “Network (mobile, disconnected)”, “Network (wireless, disconnected)”, or “Network (none)”, respectively.

On the phone, because there are more connection types, they are more variable, and the phone may be dual SIM, the title is more complex. It should consist of:

  1. Flight Mode indication: ✈ the Flight Mode icon, if Flight Mode is on, otherwise nothing at all.

  2. SIM status indication:

    • the text “No SIM” if the phone has zero detected SIMs; otherwise
    • nothing at all, if the phone is in Flight Mode; otherwise
    • the text “No service” if none of the phone’s SIMs are associated with a cellular network; otherwise
    • for each SIM, its individual SIM status, in its color if there is more than one SIM.

    An individual SIM status should consist of three parts. Firstly:
    • the text “SIM locked” if it is locked; otherwise

    • nothing at all if the modem is unregistered (because this is so brief, any specific indication would look flickery); otherwise
    • “SIM error” if a SIM is present but otherwise unusable (for example, the phone is SIM-locked and this is the wrong one); otherwise
    • “No network” if no cellular network has been chosen; otherwise
    • “No signal” if there is not enough signal for the selected cellular network to be usable; otherwise
    • from 1 to 5 bars (never 0 bars) for the call signal strength, if Wi-Fi is on; otherwise
    • from 1 to 5 bars for the cellular data signal strength, if cellular data is on; otherwise
    • from 1 to 5 bars for the call signal strength, if there is no current data connection.
    Secondly:
    • cellular-roaming.png a roaming icon if the SIM is currently roaming; otherwise nothing at all.

    And thirdly, if the SIM has cellular data turned on and there is no Wi-Fi connection:

    • “3G” if the current data connection is 3G
    • “EV” if it is EV-DO
    • “H+” if it is HSPA+
    • “L” if it is LTE
    • “E” if it is EDGE (up to 236 kbit/s)

    • cellular-data-slow.png a tortoise if it is slower than EDGE, for example GPRS (up to 20 kbit/s) or 1xRTT (up to 153 kbit/s)

    • ×” if it has no current data connection.

    (Because cellular data connection is displayed only when Wi-Fi is not connected, you may be unaware that you have lost the cellular data connection necessary to send an MMS. This is the tradeoff for the space saved by showing just one or the other, so it should be handled by the messaging app instead.)
  3. Finally, Wi-Fi status indication:

    • wi-fi-icon-connecting.png an animated Wi-Fi icon, if Wi-Fi is connecting; otherwise

    • a hotspot icon, if Wi-Fi is currently being used to run a hotspot; otherwise

    • wifi-icon-signal.png the Wi-Fi icon with 1 to 4 arcs (never 0 arcs) for the Wi-Fi signal strength, if there is a Wi-Fi connection; otherwise

    • nothing at all.

This algorithm needs to be complex to produce a simple and useful result: usually only one or two elements will appear at any time. Test cases:

  1. Turn on Flight Mode, then turn on Wi-Fi and connect to a network; the Flight Mode icon and Wi-Fi icon should both appear.
  2. Turn off Flight Mode, and have one SIM in the phone, associated with a carrier; only the call signal strength and Wi-Fi icon should be present.
  3. Turn off Wi-Fi; the Wi-Fi icon should be replaced by the cellular data type icon.
  4. In System Settings, turn off cellular data; the data type icon should become the “×” icon.

Structure

On the PC, if the networking service cannot be found, is in the process of being restarted, or no networking devices are available (e.g. no Ethernet card or wireless card), the menu should contain only an insensitive “Networking not available” item (deliberately sentence case), a separator, and “Network Settings…”. (This should hardly ever happen.)

network-menu-complex.jpg

phone-network-menu.png

network-menu.phone.mockup.jpg

Otherwise, the menu should consist of some combination of sections, in order:

  1. Flight Mode (absent by default on PC, always present on phone/tablet)

  2. wired (absent by default)

  3. Wi-Fi (present by default for each wi-fi card present)

  4. cellular (present by default for each cellular device present)

  5. Bluetooth (present by default for each Bluetooth device present)

  6. VPNs (absent by default)

  7. connection sharing (absent by default)

  8. “Cellular Settings…” (present on any device with a SIM (bug 1252801), except at the login screen on PC)

  9. “Network Settings…” (always present, except at the login screen on PC).

Most of the time, only a few of these sections will appear — depending on what kinds of cards are fitted, what devices are connected, and other settings as specified later. On the PC, any two adjacent sections should have a separator between them, except that “Share Connection…” and “Network Settings…” should not have a separator between them.

On a device with a locked SIM, the “Network” menu should include an “Unlock SIM…” item immediately before “Cellular settings…”, and that item should be insensitive whenever the unlock UI is currently being shown. Regardless, when wi-fi is on, the menu should list wi-fi networks in the same way as the Wi-Fi screen of System Settings, without the “Other network…” item, and with an insensitive item “No networks detected” instead of the placeholder text.

Session variations

This is a summary only; the specifications of individual items are authoritative.

In the guest session, live session, and standalone installer session, the indicator and menu should be present as normal.

In the login screen, you should still be able to connect to networks so that you can use remote login. Therefore, the indicator and menu should be present as normal, but on the PC, any items that lead to System Settings should be insensitive.

When an app tries to use the Internet

(bug 1275761)

TBD

Connections

Flight Mode

Flight Mode is an easy way to turn off all radio functions in a hurry, for example when you are on a flight that requires this. But it is not draconian; for example if you are on a flight that offers Wi-Fi, you may turn on Wi-Fi individually, while Flight Mode continues ensuring that other connections are off.

When you turn on Flight Mode:

  1. If a phone or Voip call is in progress, an alert should appear, “Turning on Flight Mode will end your call.”, with buttons “Cancel” and “End Call” (bug 1445580). The alert should close automatically if the call finishes by itself. Then, or if you choose “End Call” yourself, or if no call was in progress in the first place:

  2. If an upload or download is in progress, an alert should appear, “Turning on Flight Mode will stop all uploads and downloads.”, with buttons “Cancel” and “Stop”. The alert should close automatically if all transfers finish while it is open. Then, or if no transfers were in progress in the first place:
  3. If you have a hotspot running, an alert should appear, “Turning on Flight Mode will disconnect any device connected to your hotspot.”, with buttons “Cancel” and “Disconnect”. Could we tell how many devices are currently connected? Then, or if no hotspot was running in the first place:

  4. All radio transmitting/receiving functions should turn off, including Wi-Fi, Bluetooth, GPS, and cellular connections.

While Flight Mode is on, you may individually turn Wi-Fi and/or Bluetooth back on again, leaving Flight Mode itself turned on.

When you turn off Flight Mode:

  • Any transmitting/receiving functions that you changed, since Flight Mode was turned off, should remain as they are.
  • Any other transmitting/receiving functions should return to the state they were in immediately before Flight Mode was turned on.
  • If a SIM PIN is set, the SIM PIN prompt should appear so that you can restore cellular connection.

Test case: Turn on Wi-Fi and Bluetooth. Start a phone call. Turn Flight Mode on; the alert should appear. Have the other party hang up; the alert should disappear, Flight Mode should turn on, and Wi-Fi and Bluetooth should both be off. Turn Wi-Fi back on; Flight Mode should remain on. Turn Wi-Fi back off again; nothing else should change. Turn Flight Mode off; Bluetooth should turn on but Wi-Fi should stay off.

Flight Mode in System Settings

settings-window-flight-mode.png

phone-settings-flight-mode.png

Erratum: The item should be at the top of the pane, not the bottom.

On the PC, at the top of the Network panel connection type pane should be a “Flight Mode” item, with a ✈ icon. The “Show Flight Mode in the network menu” checkbox should be insensitive whenever “Show network status in the menu bar” is unchecked.

On the phone and tablet, the quick access area should include a “Flight mode” switch, because it is the sort of setting you need to change quickly, and because it alters the state of settings in multiple category screens (and therefore does not belong in any of them alone). Its icon should represent the current Flight Mode state. Whenever you toggle Flight Mode in either direction, the icon should become a spinner until all connections have stopped or resumed as appropriate.

Flight Mode in the network menu

network-menu-flight-mode.png

phone-network-menu.png

On the phone and tablet, and whenever “Show Flight Mode in the network menu” is checked on the PC, the network menu should begin with a “Flight Mode” toggle item followed by a separator.

Whenever Flight Mode is on, the title of the network menu should also be a ✈ icon.

Common behavior across connection types

PC: Connections in the PC “Network” panel

settings-connections-wifi.png

In the “Connections” tab, the device pane should list each device or card through which you could make a network connection. The items in the list should be, in this default order:

  1. If the machine has any Ethernet cards, one item for each Ethernet card.
  2. If the machine has any wireless cards, one item for each wireless card.
  3. If the machine has any connected mobile broadband devices, one item for each device.
  4. If the machine has any connected Bluetooth devices, one item for each Bluetooth device.

Each item in the list should have four elements:

  • a colored bead icon representing whether the device’s state — powered off (grey), offline (red), connected but not on the Internet (yellow), or online (green);
  • an icon representing the type of device (e.g. the Bluetooth icon);
  • a label for the type of device (e.g. “Wired” or “Bluetooth”)
  • a caption for the connection state — “Off”, “Not connected”, “Connected”, or “Online”.

The state icon and device type icon should both have empty “” accessible labels, because the same information is conveyed in the adjacent text.

The order of the items should determine in which order Ubuntu tries to use them, when turned on, to establish an Internet connection. Each item should be reorderable by dragging it (hinted at by switching to a drag cursor on mousedown), or by using Ctrl Up or Ctrl Down when the item is selected.

At the bottom of the panel should be a checkbox, “Prompt whenever a new connection requires Web login”, checked by default for new user accounts. Changing it from unchecked to checked state (even by unchecking it then re-checking it) should immediately check the current connection (fixing bug 1072675).

Connection progress in the network/wi-fi menu

network-menu-progress.png

While Ubuntu for PC is trying to establish any network connection, the title of the network menu should be a spinner. Similarly, while Ubuntu Phone is trying to establish a wi-fi connection, the wi-fi indicator should be an animated wi-fi icon.

In both cases, the item for that connection should have a spinner too. If the connection is successful, the latter spinner should be replaced by a radio mark or checkmark as appropriate.

Connecting to a captive portal

(bug 914507)

connect-portal.png

Whenever Ubuntu makes a new network connection, if “Prompt whenever a new connection requires Web login” is checked, it should perform HTTP and DNS checks that the connection is valid. If it is not, a “Log In to {connection name}” dialog (on PC) or full-screen dialog (on phone) should open with a Web frame for the login page.

In the dialog, the Back and Forward buttons should behave as for a Web browser. The connection check should run again five seconds after you navigate to each page in the dialog, or 30 seconds * 2n since the nth connection check while the dialog has been open, whichever is sooner.

The dialog should close if a connection check succeeds, if you choose “Disconnect” in the dialog itself, or if you disconnect anywhere else (such as from the menu).

<xnox> e.g. in the installer we already are doing connectivity check against a known document http://start.ubuntu.com/connectivity-check.html
<xnox> which should have md5sum 4589f42e1546aa47ca181e5d949d310b

<xnox> mpt: the most silly thing about captive portals, is that some of them don't require one to login at all - just open it & look at advertisement. E.g. Virgin WiFi on the underground, after the first login, simply auto-redirects you to a ad.
<xnox> So one can try opening any page in the background to see if it's enough to establish connection ;-)
...
<xnox> mpt: it's reasonable to try this hack without pooping anything up, and if it fails then poop up the OpenZone dialog.
<mpt> xnox, as in make two HTTP requests and discard the first?
<mpt> That could work.
<xnox> yeah.

Disconnection

If you stop any connection from software (e.g. by choosing “Disconnect” in the menu), no notification bubble should appear (fixing bug 345824).

If a connection ends in any other way, a notification bubble should appear with the icon of the connection, “Disconnected” as primary text, and the name of the connection as secondary text. If the end result is no active connections, the primary text should be “Disconnected — offline”.

Wi-Fi and hotspots

Summary: Wi-Fi networks are listed in the first-run setup, in System Settings (where you can reconfigure or reprioritize previously-used networks), and in the network menu. If Ubuntu does not connect to a previous network automatically, you can connect to a broadcast or hidden network from either of those places, or from a “Wi-Fi Available” dialog if Wi-Fi is on but you are not online. If connecting requires authentication details at any time, or when you are setting up or changing a hotspot, you are prompted for these details in a dialog too. Whenever any of those dialogs is involved, progress and success or failure is shown inside the dialog. If no dialog is involved, and the connection is not an automatic one to the previous network, connection success or failure is shown in a notification bubble instead.

Naming and listing Wi-Fi networks

Wi-Fi networks are listed in the first-run setup, System Settings, network menu, and the Wi-Fi suggestion prompt. They are also mentioned by name in notification bubbles and dialogs.

For consistency across all these sites, except where otherwise specified:

  • The network name should be the SSID, assumed to be UTF-8, with any line-break and direction-changing characters ignored.

  • The signal strength icon should be a Wi-Fi icon showing from one to four bars for any currently broadcast or connected network. A network that is neither broadcast nor connected should have no signal strength icon at all.

  • The signal strength accessible label should be “(Very weak)”, “(Weak)”, “(Moderate)”, “(Strong)”, or “(Not in range)”.

  • The network type icon should be a no-entry symbol if the network is known to be useless, otherwise a picture of a PC (a bit out of date with tethering) if the network is ad-hoc, otherwise nothing at all.

  • The network type accessible label should be “(Not a real network)” if the network is known to be useless, otherwise “(Ad-hoc)” or else nothing at all.

  • The network authentication icon should be a padlock if the network is encrypted, otherwise nothing at all.

  • The network authentication accessible label should be “(Encrypted)” or else nothing at all.

wi-fi-network-listed.png

Wherever networks are listed, except where otherwise specified:

  • Each network’s visible label should consist of its signal strength icon, then its network type icon, then its network name (ellipsized in the middle if necessary), and at the trailing end of the space available, its network authentication icon.

  • Each network’s accessible label should consist of its network name (not ellipsized), then its network type accessible label, then its signal strength accessible label, then its network authentication accessible label. For example, “calamari (Ad-hoc) (Moderate) (Encrypted)”.

  • An ad-hoc network known to be useless (for example, “Free Public WiFi”) should be insensitive.

  • The list should be sorted with the currently-connected network first, if any, then all others alphabetically by network name.

Wi-Fi in “Network” settings (PC)

settings-connections-wifi.jpg

System Settings “Network” screen “Connections” tab should have a list item for each Wi-Fi card. In the usual case where there is only one, it should be labelled “Wi-Fi”. In the rare case that there are two or more, they should be labelled “Wi-Fi ({kernel ID})”, e.g. “Wi-Fi (wl0)”.

Each network detectable by the selected Wi-Fi card should be listed in the standard format, except that signal strength should be in its own “Signal” column, and there should be an extra “Last used” column, giving the time (if today) or date (if not today) that the PC most recently connected (manually or automatically) to that network.

The networks should be listed in the usual way, except that by default, they should be sorted most recently used first. Test case: From System Settings, connect to a network other than the most recent one; as soon as it connects, it should move to the top of the list.

Whenever the selected network requires authentication details that aren’t already stored, the “Connect” button should be “Connect…”, without the button changing width.

TBD: Include “Connect automatically”, “Prompt when not connected”, and reordering for parity with the phone.

At the bottom of the panel for each card should be a checkbox, “Let other users connect to these networks automatically”, checked by default.

“Wi-Fi” settings (phone)

wi-fi-settings-off.phone.png

Regardless of whether Wi-Fi is on, the System Settings “Wi-Fi” screen should contain a “Wi-Fi” switch, and “When Wi-Fi is on:” section (bug 1287249) with “Auto-join previous networks” checkbox, “Previous networks” item, and “Prompt when not connected” checkbox.

Whenever “Wi-Fi” is on and “Auto-join previous networks” is checked, Ubuntu should connect automatically to any remembered network when it is available. If you are disconnected and a scan shows more than one remembered network available, Ubuntu should prefer the one that has higher priority in the “Previous Networks” list.

Whenever “Auto-join previous networks” is unchecked, Ubuntu should connect to a Wi-Fi network only if you explicitly choose it. For example, if you are disconnected, you should not be connected automatically to another remembered network. (This is so that, for example, you can be sure you are doing work on a work network, and not the network of a nearby coffeeshop or the hotel where you’re staying.)

wi-fi-settings-networks-none.phone.png

wi-fi-settings-networks.phone.png

wi-fi-settings-current-network.phone.png

Erratum: “Disconnect” should be “Forget This Network”.

Whenever Wi-Fi is on but no network is connected, next should be a list of “Available networks:”, or the placeholder text “None detected” if there are none. Networks should be listed in the usual way, except that for any network requiring authentication details that are not currently stored, its name should end in an ellipsis (because connecting to it will require further input).

Whenever Wi-Fi is on and a network is connected, “Available networks:” should instead be “Other available networks:”, because it should be preceded by a “Connected to:” section listing the connected network. Unlike the items for selecting a different network, this should be a page stack item. Choosing it should navigate to a screen with the network name as its header, a “Forget This Network” button (which automatically navigates you back to the “Wi-Fi” screen), and an item with a copyable IP address. (In future this screen might also allow entering a static IP address, bug 1445772, and contain router and DNS information.)

Choosing a network from “Available networks:”/“Other available networks:” should attempt to connect to it. And regardless of whether any other networks are detected, the list should end with a “Connect to hidden network…” item, which opens the “Connect to Hidden Network” dialog.

“Previous Networks”

phone-settings-wifi-previous.png

phone-settings-wifi-previous-network.png

The “Previous Networks” screen should list all remembered currently or previously-used Wi-Fi networks (or “No remembered networks” in placeholder style if there are none), in the usual way except that they should be sorted in the order in which they would be chosen. (Unlike every other list of Wi-Fi networks, in this list most of the networks will usually show zero bars of signal, because they are not active nearby.) When reprioritization of networks has been implemented in NetworkManager, pressing on a network should make it draggable so that you can reorder the list.

Tapping a network should open the dialog for its details, a variation of the standard Wi-Fi network dialog.

If Ubuntu is currently connected to the network, “Forget This Network” should also disconnect from it.

If editing authentication details has not yet been implemented, the “Save” button should not be present at all, and the authentication fields should be insensitive, but “Show password” should still be sensitive, so that you can still look up a stored password you have forgotten. If editing authentication details has been implemented, “Save” should be sensitive whenever the current values are different from the stored ones.

Wi-Fi in the network menu

network-menu-simple.jpg

phone-network-menu.png

Regardless of form factor, the network menu should have a section for each Wi-Fi card present. (Most devices have exactly one Wi-Fi card.) The section should consist of:

  1. A toggle item for powering the card on and off. As with the Network Settings, in the usual case where there is only one wireless card, this item’s label should be simply “Wi-Fi”. In the rare case where there is more than one wireless card, it should be “Wi-Fi X”, where X = the kernel ID for the card, for example “Wi-Fi wl0”.

  2. If the card is powered on, up to 6 (phone) or 20 (PC) radio items (bug 1322490) representing known Wi-Fi networks:

    • up to one item representing the network this card is connected to (or currently trying to connect to), if any;
    • the strongest of the currently-detected networks that this card has previously connected to, if any;
    • if any slots remain, the strongest of the other broadcast networks currently detected.

      The networks should be listed in the usual way, except that a network should have a radio mark if the card is connected to this network, or a spinner if it is currently trying to connect.

  3. An “Other Network…” item that opens the “Connect to Wi-Fi Network” dialog. If the card does not currently detect any other broadcast networks, the name of the item should instead be “Hidden Network…”. If more broadcast networks have been detected than are shown in the menu, the item text should end with a count of all detected networks in brackets, e.g. “Other Network… (11 detected)”.

Suggesting that you connect to Wi-Fi

(bug 1287210)

A prompt should appear, suggesting that you connect to Wi-Fi, if all of these conditions are true:

  1. “Prompt when not connected” is checked
  2. you are not connected to the Internet, or you are connected using cellular data
  3. Wi-Fi is on
  4. Wi-Fi networks are available
  5. The “Wi-Fi” (phone/tablet) or “Network” (PC) panel of System Settings is not currently focused (which would make the prompt redundant)
  6. you are on a PC, or a phone/tablet app tries to use the Internet

  7. Since you last dismissed the prompt (if ever), either:
    1. you turned Wi-Fi on, or
    2. at least one hour has passed, or
    3. the device has slept.

Test case: Turn on “Prompt when not connected”. Leave/close System Settings. Turn Wi-Fi off. Go to an area where Wi-Fi networks are available. Turn Wi-Fi on; the prompt should appear.

pc-wifi-prompted.png phone-wifi-prompted.png

Available networks should be listed in the usual way.

As in System Settings, whenever the selected network is one requiring authentication details that aren’t already stored, the “Connect” button should be “Connect…”, without changing width.

Whenever the selected network does not require new authentiction details (either because it’s an open network, or because details are already stored), connection progress and confirmation should be shown in the dialog.

Entering Wi-Fi network details

wi-fi-network-details-dialog.png

You may need to enter Wi-Fi network details when connecting to a network from from a variety of entry points, including the installer, Ubuntu Touch setup, System Settings, the network menu (PC) or Wi-Fi menu (phone), or the Wi-Fi connection prompt. You may also be prompted to authenticate when an automatic connection fails because the authentication details no longer work (for example, the shared password has changed). Rarely, you may want to change authentication details for a network you are not currently connected to (“Previous networks”), for example when you receive new details over the phone or by secure e-mail. And setting up a hotspot also involves entering network details, this time for a network you are creating.

It is often tempting to design custom UI for each of these individual entry points. But that has several disadvantages. First, it reduces consistency between the entry points. Second, it reduces consistency between entering authentication details for a broadcast network and a hidden one, if the entry point even gets around to allowing this at all (for example bug 833312). And third, individual entry points often do not have room for showing all the necessary authentication controls: for example, PEAP authentication requires fields for outer identity, CA certificate, user name, and password, as well as the ability to reveal the typed password. And inside an indicator menu in particular is an impractical place to select a CA certificate, user certificate, or private key, to show connection progress, and to respond if authentication fails.

Therefore, the UI for entering Wi-Fi network details should always be a dialog — regardless of entry point, regardless of whether the network is broadcast or hidden, and regardless of whether you are trying to connect to the network for the first time, correcting details to try a subsequent time, changing details for a previous network, or setting up a hotspot.

Connecting to a broadcast Wi-Fi network

On both PC and phone, the dialog should have title “Connect to {network name}”, “Connect to Hidden Network”, or “{network name} Network Details” for a previous network. In the first two cases it should have buttons “Cancel” and “Connect”; for a previous network, “Forget This Network”, “Cancel”, and “Save”. On the PC, the dialog should have the Wi-Fi icon, and for a broadcast network, the primary text ‘The Wi-Fi network “{network name}” requires authentication.’.

wi-fi-authentication-key.pc.mini.png

wi-fi-authentication-key.phone.png

“Connect” should be insensitive whenever the authentication values are not valid according to the authentication method.

If the network stops being available while the dialog is still open — for example, if the network is no longer in range, or if you turn off Wi-Fi or turn on Flight Mode — the commit buttons should be replaced by the centered text “Network no longer available”, all the dialog’s controls should become insensitive, and two seconds later, the dialog should close (bug 1407907).

Connecting to a hidden Wi-Fi network

Sometimes a Wi-Fi network does not broadcast its availability, so you need to enter its name manually as well as specifying the security type. This is handled by a “Connect to Hidden Network” dialog — the same as the dialog for authenticating to a normal broadcast network, but with at least two extra controls, “Network name:” and “Wi-Fi security:”.

wi-fi-hidden.pc.png

wi-fi-hidden.phone.png

“Network name:” should be a verbatim field.

If Ubuntu is confident about which security type the selected network uses, the label for that type should end with “(detected)”, and it should be selected automatically as soon as you type or select that network, while still letting you override it. Otherwise, the default should be “WPA Personal”, since that is most common.

wireless-connect-morph.png

Whenever a “Wi-Fi security:” type is chosen — either automatically or manually — the dialog should morph to show the authentication controls relevant to that type, replacing any authentication controls relevant to the previously chosen type (without forgetting any values you had typed into them, just in case you change back).

Connection progress and confirmation should be shown in the dialog. If authentication fails, the first authentication field (e.g. “Password:”) should be focused and have error highlight. If there is any other error, the “Network name:” field should be focused and have error highlight.

Authentication variations, certificates, and PAC files

In both the ‘Connect to “{network name}”’ and “Connect to Hidden Network” dialogs, the contents of the dialog, and the behavior of the “Connect” button, should vary depending on the security and authentication methods.

To simplify the dialog, the various security methods (None, WPA Personal, WPA Enterprise, and so on), and the various WPA Enterprise authentication methods (TLS, Tunnelled TLS, LEAP, and so on), should be collapsed into a single “Security:” menu. So it should contain, in order, whichever of these is implemented:

  1. “None”
  2. “WPA Personal”
  3. “WPA Enterprise TLS”
  4. “WPA Enterprise TTLS”
  5. “WPA Enterprise LEAP”
  6. “WPA Enterprise FAST”
  7. “WPA Enterprise PEAP”
  8. “WEP”
  9. “Dynamic WEP”
  10. “LEAP”

Therefore, the “Security:” menu should be included in the dialog if (a) you choose “Connect to Hidden Network”, (b) Ubuntu can’t tell what security method the selected network uses, or (c) the selected network uses WPA Enterprise and Ubuntu can’t tell what authentication method the selected network uses. In the last case, the menu should contain only the WPA Enterprise authentication methods, not the other items.

Several of the methods involve selecting one or two certificates, TLS involves selecting a private key file, and FAST involves selecting a PAC file. For this reason, System Settings should be set up as the default handler for certificates, private key files, and PAC files that you download or open, showing a confirmation dialog with info about the certificate/file and “Cancel” and “Save” buttons, and then lowering itself behind the previous app. TBD: • Exact contents for these three dialogs. • A place in System Settings to list and remove unwanted certificates, private keys, and PAC files.

Authentication type

PC

Phone

None

There should be no extra controls.

WPA Personal

wi-fi-auth-wpa-personal.pc.png

wi-fi-auth-wpa-personal.phone.png

“Connect” should be insensitive whenever the “Password:” field contains fewer than 8 characters, more than 64 characters, or exactly 64 characters where any of them are not hexadecimal. Whenever there are exactly 64 characters, any non-hexadecimal characters should be highlighted in the error color.

WPA Enterprise (bug 1241986)

TLS

wi-fi-auth-tls.pc.png

wi-fi-auth-tls.phone.png

The “User certificate:”, “CA Certificate:”, and “Private key:” menus should each contain “None”, a separator, the names of any saved files of that type (ellipsized in the middle if necessary), another separator if there are any, and finally “Choose…”, which opens a picker to select a file of that type from elsewhere.

TTLS

wi-fi-auth-ttls.pc.png

wi-fi-auth-ttls.phone.png

LEAP

wi-fi-auth-leap.pc.png

wi-fi-auth-leap.phone.png

FAST

wi-fi-auth-fast.pc.png

wi-fi-auth-fast.phone.png

The “Automatic PAC provisioning:” menu should contain “None”, “Anonymous”, “Authenticated”, and “Both”. The “PAC file:” menu should contain “None”, a separator, the names of any saved PAC files (ellipsized in the middle if necessary), another separator if there are any, and finally “Choose…”, which opens a picker to select a PAC file from elsewhere.

PEAP

wi-fi-auth-peap.pc.png

wi-fi-auth-peap.phone.png

WEP

wi-fi-auth-wep.phone.png

On PC, the icon should be overlaid with a warning emblem, the primary text should be ‘The Wi-Fi network “{name of network}” uses WEP, which is insecure. Are you sure you want to connect?’, and there should be secondary text should be “Data sent or received may be intercepted in transit.”. On phone, there should be body text, “This network is insecure.”. And on both PC and phone, “Connect” should be “Connect Anyway”. “Connect Anyway” should be insensitive whenever the “Password:” field does not contain 5 or 10 Ascii characters, or 13 or 26 hexadecimal characters. The error color should be used to highlight any non-Ascii characters regardless of length, and any non-hexadecimal characters whenever there are 12 or more characters (such that you’re more likely to be aiming for 13 or 26 than for 5 or 10).

Hotspot setup

(bug 1326271, bug 1421583)

Using your phone as a hotspot is handled in System Settings, with one screen and one dialog that has two variations.

(X) not possible (./) defined Warning /!\ undefined

Function

Phone

Tablet

PC

set up a hotspot for the first time

(./) System Settings

Warning /!\

Warning /!\

turn on previously configured hotspot

(./) System Settings

Warning /!\

Warning /!\

know whether anyone is connected

(./) System Settings, indicator

Warning /!\

Warning /!\

turn off hotspot

(./) System Settings

Warning /!\

Warning /!\

change hotspot name/password

(./) System Settings

Warning /!\

Warning /!\

learn how to connect to the hotspot

(./) System Settings

Warning /!\

Warning /!\

hotspot-access.phone.png

In the System Settings “Cellular” screen, the “Hotspot” item should have value “Off” or “On”.

hotspot-off.phone.png hotspot-start.phone.png hotspot-on.phone.png hotspot-change.phone.png

When no hotspot settings are stored:

When hotspot settings are stored:

The “Hotspot” switch should be:

both off and insensitive

sensitive

The button should be:

Set Up Hotspot…

Change Password/Setup…

The button should lead to a dialog titled:

Set Up Hotspot

Change Hotspot Setup

The dialog should be pre-filled with:

Network name “{Your name}’s phone”, with the “Password:” field focused

the stored hotspot details, with the existing key pre-selected for replacement

The dialog’s main commit button should be:

Start

Change

That button should be sensitive when:

the details are valid for a WPA Personal network

the details are valid and have been changed at all.

(The dialog is very similar to the “Connect to Hidden Network” dialog, just without the “Security:” menu.)

Choosing “Start” should turn on the hotspot immediately (because you probably wouldn’t be setting it up unless you wanted to use it right now), but choosing “Change” should leave the hotspot off if it was off already.

Starting or changing a running hotspot takes a few seconds. Therefore, when you choose “Start”, or choose “Change” when the hotspot is on, progress and confirmation should be shown in the dialog, just as it is for a normal Wi-Fi connection.

When Hotspot is off, the switch caption should be: “When Hotspot is on, other devices can use your cellular data connection over Wi-Fi. Normal data charges apply.” When it is on, the caption should be: ‘Other devices can use your cellular data connection over the Wi-Fi network “{network name}”. Normal data charges apply. {name of this device} stays awake when the hotspot is in use.’

As indicated by that last caption, a hotspot works only when the device is awake. Therefore (bug 1458046):

  • Whenever at least one person is using your hotspot, the device should not sleep automatically.
  • The indicator icon should be different when anyone is connected than when no-one is.
  • If a hotspot is set up, there should be a “Hotspot” item in the “Ways to reduce battery use” list in “Power” settings. Unlike the item in the “Cellular” settings, this item should be just a switch.

hotspot-wi-fi.png

A hotspot requires Wi-Fi to work. To warn you that turning off Wi-Fi will turn off the hotspot, whenever Hotspot is on, the “Wi-Fi” switch wherever it appears (in the quick-access area, in the “Wi-Fi” screen, and in the network menu) should instead be “Wi-Fi used for hotspot”. In addition, turning on Flight Mode should warn that it will turn off Hotspot.

Wi-Fi connection progress and confirmation

Whenever Ubuntu is trying to connect to a Wi-Fi network automatically, the data component of the network indicator should be a spinner.

Whenever Ubuntu successfully connects automatically to the same network as it was connected to previously, this is not a surprise. Most likely it is your home network, office network, or network of somewhere you left briefly. In this case, any notification — beyond the status bar icon changing to show the signal — would be redundant and annoying.

wi-fi-connected.pc.png wi-fi-connected.phone.png

Whenever Ubuntu connects automatically to a network different from the one you were last connected to, this may be a surprise. For example, it may be a result of your usual network failing, and you may wish to investigate. Therefore, an ephemeral notification bubble should appear. It should have a a Wi-Fi icon showing the signal strength, primary text “Connected to Wi-Fi”, and secondary text the name of the network.

Whenever Ubuntu connects manually to a network, or sets up a hotspot, it is the result of an action in a dialog: “Wi-Fi Available”, “Connect to {network name}”, “Connect to Hidden Network”, “Set Up Hotspot”, or “Change Hotspot Setup”. To minimize modes and maximize visual stability, connection/setup progress and confirmation should be shown inside the same dialog, as follows.

wi-fi-authentication-key-connecting.pc.mini.png

wi-fi-authentication-key-connecting.phone.png

When you choose the commit action, the dialog should remain open to show connection/setup progress. All the controls except “Cancel” (if the connection is cancellable) should become insensitive, and a spinner should appear. On PC, the spinner should accompany the caption “Connecting…” in the corner. On the phone, it should replace the label of the button itself.

wi-fi-authentication-key-error.pc.mini.png

wi-fi-authentication-key-error.phone.png

If connection authentication fails, a variation of the dialog should appear. If you had just entered authentication details, this dialog should morph from the previous one. On PC, the dialog should have secondary text “Your authentication details were incorrect. Please try again.”. On phone, it should have body text “Your authentication details were incorrect.”

wi-fi-authentication-key-error-connecting.pc.mini.png

wi-fi-authentication-key-error-connecting.phone.png

If you retry, the error dialog should show connection progress just like the normal authentication dialog does. In addition to the “Connect” button being insensitive, the error text on PC should also be insensitive, because it is probably no longer true.

wi-fi-authentication-key-error-connected.pc.mini.png

wi-fi-authentication-key-error-connected.phone.png

When connection/setup succeeds, “Cancel” should become insensitive (if it wasn’t already), the spinner should change to a checkmark, and on PC, the text “Connecting…” should change to “Connected”. After two seconds, the dialog should disappear.

Cancelling a connection

If you cancel a Wi-Fi connection at any point, Ubuntu should resume its previous connection state — whether that was connected to another network, or to no network at all.

Wi-Fi network properties

Settings for a wireless connection:

  • IPv4 mode: DHCP (Renew DHCP Lease) or Manual
  • network settings (with DHCP, all are automatic but overridable)
    • Name servers (zero or more, but without one you can't use domain names)
    • Domains (zero or more, e.g. "millbank")
    • IPv4 address
    • IPv4 netmask
    • IPv4 gateway
    • (IPv6: not implemented yet)
    • passphrase
    • autoconnect
      • enabled/disabled
    • nameservers
      • list of servers, in priority order
      • if empty, automatic servers used
    • domains
      • list of domain names
      • if empty, automatic domains used
    • ipv4
      • method:
        • dhcp
        • manual
          • address
          • netmask
          • gateway
        • off
    • ipv6
      • method:
        • dhcp
        • manual
          • address
          • netmask
          • gateway
        • off
    • proxy
      • method:
        • direct
        • auto
          • url (if empty wpad is used)
        • manual
          • servers
          • excludes

Wired connections (PC only)

Connecting to a wired network, in general

When Ubuntu tries to connect to a wireless network, in addition to the standard connection feedback:

If connection is successful, a notification bubble should appear, with a wired icon, primary text “Connected”, and secondary text the connection name e.g. “Wired connection 2”.

Wired devices in the Network Settings window

settings-connections-wired-summary.png

Wired section of the network status menu

wired.jpg

If the computer has any Ethernet cards, the menu should begin with a wired section. This section should consist of a toggle item for each wireless card, where toggling the item controls both whether it is powered on and being used.

In the usual case where there is only one Ethernet card, its label should be simply “Wired Connection”. In the rare case where there is more than one Ethernet card, the label for each should be “Wired Connection N”, where N = the kernel ID for the card, e.g. “Wired Connection eth1”. If there is no link (e.g. the cable is unplugged), the item should be disabled but not hidden.

We may need to distinguish between {power off, power on but not connected, connected}.

Wired network properties

  • autoconnect
    • enabled/disabled
  • nameservers
    • list of servers, in priority order
    • if empty, automatic servers used
  • domains
    • list of domain names
    • if empty, automatic domains used
  • ipv4
    • method:
      • dhcp
      • manual
        • address
        • netmask
        • gateway
      • off
  • ipv6
    • method:
      • dhcp
      • manual
        • address
        • netmask
        • gateway
      • off
  • proxy
    • method:
      • direct
      • auto
        • url (if empty wpad is used)
      • manual
        • servers
        • excludes

Cellular connections

SIM identifier

sim-id.png

A cellular device on a PC, and a SIM slot on a phone, is interesting only if it contains a SIM. When there are multiple SIMs, they should be distinguished to users using a SIM identifier that has two segments with a space between them: for example, “Slot A (01632123456)” or “SIM 2 (310150123456789)”.

  • On a phone, the first segment should be customizable by the hardware vendor, for example “Front Slot” and “Rear Slot”. If it has not been customized, it should be “SIM 1”, “SIM 2”, etc.
  • The second segment should be in brackets: the phone number, if it is available, otherwise the IMSI.

  • The whole string should be displayed in the color specified in the “SIM Colors” screen.

“Cellular” settings on phone

phone-settings-cellular-icon.png

At the top level of System Settings, “Cellular” should be present whenever the device contains cellular hardware (bug 1258210), even if a SIM is not detected.

cellular-settings.phone.annotated.png

If no SIM is detected, the screen should contain only the placeholder text “No SIM detected”, with caption “Insert a SIM, then restart the phone.” (bug 1377182).

On a single-SIM phone, “Cellular data” (1) should be a switch. On a dual-SIM phone, “Cellular data:” should instead be radio options for “Off” and each SIM.

“Data roaming” (2) should be both off and insensitive whenever cellular data is off. When you turn cellular data to any other value (bug 1211804), “Data roaming” should become sensitive and return to its previous value.

When “Auto-switch to avoid roaming” (3) is implemented, it should be present only when there are two SIMs. Whenever (a) it is checked, (b) a roaming SIM is using cellular data, and (c) another SIM is not roaming, the non-roaming SIM should take over cellular data automatically, and the roaming SIM should become insensitive in the list so that you can’t re-select it. (If you want to override it, you need to uncheck “Auto-switch to avoid roaming” first, otherwise it wouldn’t be clear when it should revert or why it wasn’t.)

“Hotspot” (4) should navigate to the “Hotspot” screen.

“Data usage statistics” (5) should navigate to the “Data usage” screen.

“For outgoing calls, use:” (6) should be present only when there are two SIMs, and should navigate to the “Outgoing calls” screen.

“Carrier & APN”/“Carriers & APNs” (7) should navigate to the “Carrier & APN”/“Carriers & APNs” screen.

“Connection type:” (8) should be available even if cellular data is off, and should navigate to the “Connection type” screen.

“SIM names” (9) should be present only when there are two SIMs, and should navigate to the “SIM names” screen.

“Data Usage“

Single SIM

Dual SIM

cellular-data-usage.phone.single-sim.png

cellular-data-usage.phone.dual-sim.png

(bug 1287267)

“Data usage statistics” should navigate to a “Data Usage” screen. If the phone has a single SIM, the screen should have one section. If it is dual SIM, the screen should have two sections, with the SIM ID as its header.

“Reset Statistics…” should display an alert with the text “All data usage statistics will be set to zero.”, and “Cancel” and “Reset” buttons.

“Outgoing calls”

cellular-settings-outgoing-calls.png

“Auto-switch to avoid roaming”, if implemented, should work the same way on this screen as it does for cellular data: whenever (a) it is checked, (b) a roaming SIM is set as the default for outgoing calls, and (c) another SIM is not roaming, the non-roaming SIM should take over responsibility for new outgoing calls, and the roaming SIM should be insensitive in the list so that you can’t re-select it. (If you want to override it, you need to uncheck “Auto-switch to avoid roaming” first, otherwise it wouldn’t be clear when it should revert or why it wasn’t.)

“Carrier”/“Carriers”

The “Cellular” settings screen should include an item labelled “Carrier & APN” item when the phone has a single SIM card, or “Carriers & APNs” when it has multiple SIM cards. When no SIM cards are present, the item should not be present at all.

Single SIM:

carriers.phone.single-sim.png

carrier.phone.single-sim.png

Dual SIM:

carriers.phone.dual-sim.png

carrier.phone.dual-sim.png

With a single SIM, the “Carrier & APN” should contain only a “Carrier” item, with the name of the current carrier (or “No carrier” otherwise) as its summary value, and an “APN” item. With multiple SIMs, the “Carriers & APNs” screen should have a section like that for each SIM, each section introduced by an introductory label consisting of the SIM ID followed by a colon.

If the SIM does not allow manual carrier selection, the “Carrier” item should be insensitive (bug 1343291). If the SIM does allow manual carrier selection, the item should instead be a page stack item that navigates to a separate screen, titled “Carrier” if there is a single SIM, or the SIM ID if there are multiple SIMs.

Entering this screen should be the way of triggering a scan for carriers (and exiting the screen should stop the scan). To convey this, as long as the scan is in progress, a spinner should appear opposite the “Choose carrier:” label. The radio list of carriers should consist of “Automatic”, followed by an alphabetical list of whichever usable carriers have been found so far. Should we show the signal strength of each?

If you choose a different carrier, the radio mark preceding the previous carrier (if any) should be replaced by a spinner preceding the newly-selected carrier (as in menu layout), and the amount of time the registration has taken so far should be shown at the trailing end in the form “M:SS”. If registration succeeds, that duration should disappear, and the newly-selected carrier should gain its radio mark. If registration fails, the list should revert to its previous display, and an alert should appear with the title “Error”, text “Registration failed. Try again later, or contact the carrier.”, and an “OK” button (bug 1211808).

“APN”

APN (Access Point Name) settings are a group of settings that, combined, let the phone communicate a particular type of data: MMS messages, voice over LTE (if available), or other Internet traffic. For each of these, all the settings need to be correct: the APN itself, a user name, and a password (though sometimes the last two are blank), and for MMS messages, also MMSC, proxy, and proxy port.

Ubuntu uses a database of known APN settings for carriers. Ubuntu can tell which carrier you are using, so in most cases the APN settings are filled in automatically (“provisioned”). If you need to alter APN settings at all, it is because:

  • you are using an MVNO (mobile virtual network operator);

  • the database has multiple settings for different data plans for the same data type, for example pre-paid vs. contract, so you need to choose between them;
  • the settings in the database are out of date;
  • the database contains settings for some data types but not others; or
  • the database does not have settings for your carrier at all.

In some cases, the Internet and LTE settings are the same, and/or the common MMS settings are the same. So if you need to enter settings manually, it is helpful to try the settings for one data type with the others to see if they work. (Android handles this by having you set up “an APN” and then choosing which data types to use it with, but this is needlessly complex for just three data types.)

apn.phone.png

The main “APN” screen should always have three items: “MMS APN…”, “Internet APN…”, and “LTE APN…” (bug 1435360). Each item should have, as its summary value, the carrier= value for those settings if they are present in the APN database (e.g. “Digi.Mobil” or “Jazztel MMS”), otherwise the APN value itself if set (e.g. “internet” or “jazzmms”), otherwise “Not set”. Choosing an item should open the corresponding dialog for showing and/or editing the current settings (bug 1388222, bug 1433357).

apn-resetting.phone.png

“Reset All APN Settings…” should open an alert, “Are you sure you want to reset all APN settings?”, with “Cancel” and “Reset” buttons. Choosing “Reset” should clear any custom APN settings, and trigger Ubuntu to auto-detect the settings for all data types.

Whenever Ubuntu is attempting to auto-detect the APN for one or more data types — whether because (a) you have just changed a SIM, (b) you have just activated an Internet APN that might work for LTE as well, (c) you have just started using the phone, or (d) you have just chosen “Reset All APN Settings…” — a spinner should appear below that button. In the last two cases (c) (d), the button should also be insensitive until the auto-detection has completed. (If auto-detection is not successful for one or more data types, they will end up as “Not set”.)

apn-mms.phone.png

apn-internet.phone.png

apn-lte.phone.png

Erratum: “Activate” should be “OK”.

The controls in the dialog for each data type should be identical, except that:

  • “MMS APN” should include fields for “MMSC:”, “MMS proxy:”, and “MMS proxy port:”.
    • “MMSC:” should be an URL field (using the URL OSK and ignoring non-URL characters), auto-inserting http:// on unfocus if no protocol was entered.

    • In the “MMS proxy” field, typing “:” in the domain should not enter that character, but should automatically navigate to the “MMS proxy port” field.
    • “MMS proxy port” should be a whole number field (using the number OSK and ignoring non-digit characters). In addition, if you paste a colon-delimited proxy:port combination into the “MMS proxy” field, the colon and port number should be stripped, and the port number should instead replace the existing contents of the “MMS proxy port” field.
  • “Internet APN” should include the suggestion “Copy from MMS APN” (bug 1433357).

  • “LTE APN” should include the sugggestion “Copy from Internet APN”.

If the APN database contains one or more entries for the data type with the carrier, they should come first in the list of suggestions, followed by any “Copy from…” item. Selecting a suggestion should update all the fields accordingly. When (and only when) you have changed the contents of any individual fields, a “Custom” item should appear at the end of the list, and should become the checked item, showing that none of the other suggestions are in effect (bug 1399248).

The “APN:” field should allow only letters A~Z and a~z, digits 0~9, hyphens, and non-consecutive periods [3GPP TS 23.003]; any other characters (such as spaces or commas) should be ignored when typing and stripped when pasting.

Since APN passwords are seldom secret, “Password:” fields should reveal text by default, indicated by the fact that “Hide password” below the field is unchecked.

The “Authentication” menu, once implemented, should contain “None” (the default), “PAP or CHAP”, “PAP only”, and “CHAP only”.

The “Protocol” menu, present once IPv6 has been implemented, should contain “IPv4”, “IPv6”, and “IPv4v6”.

apn-activate-progress.png apn-activate-success.png

Erratum: “Activate” should be “OK”.

“OK” should be sensitive only when all fields have valid values and at least one of them is different from when the dialog opened.

If it is not possible to activate the APN immediately — because you are in Flight Mode, you are out of range, or (for Internet APN settings) you are connected to Wi-Fi instead — tapping “OK” should save the settings and wait to activate the APN when it is next needed, reporting any error then (bug 1275761).

Otherwise, however, to make errors easy to discover and fix, APN activation should be attempted as soon as you tap “OK”. Progress and success/failure feedback should be shown in the same way as connecting to Wi-Fi. Everything in the dialog except for “Cancel” should become insensitive, and the “OK” text should change to a spinner until activation completes. If it succeeds, “Cancel” should become insensitive, and the spinner should change to a checkmark for two seconds before the dialog closes. If it fails, the spinner should revert to “OK”, the dialog contents should become sensitive again, and the dialog contents should scroll to the top to reveal the error text “APN activation failed.”

“Connection type”

(bug 1379850)

cellular-settings-connection.png

The “Connection type” screen should contain a radio list for each SIM (bug 1383368). If there is more than one, each should be introduced by its SIM name.

As with any radio list, if changing the connection type is taking more than one second, the radio mark for the new value should be replaced by a spinner until the change is complete, whereupon it should revert to a radio mark.

If choosing a different connection type for one SIM (for example, from 2G to 2G/3G) forces a change in the connection type of the other SIM (for example, from 2G/3G to 2G), that change should be shown immediately.

“SIM names”

TBD

sim-colors-access.png

In the “Cellular” screen, the “SIM colors” item should have a summary value consisting of swatches showing the current color for each SIM.

sim-colors.png

The “SIM Colors” screen should have a palette for each SIM, each with an introductory label consisting of the SIM ID followed by a colon.

If you select a color for one SIM that is currently used by another SIM, that other SIM should automatically switch to the first unused color.

As usual, selections you make should be instant-apply, showing up in the network indicator even before you exit this screen.

Cellular devices on PC

mobile-sabdfl.jpg

If any cellular devices are connected to a PC, or if it has any Bluetooth cards turned on, the network menu should have a cellular section. (We deliberately exclude from this menu the interface for turning Bluetooth as a whole on or off.)

The cellular section should begin with a “Cellular Setup…” item that opens the “Cellular Setup” window.

Following this, if a cellular device is connected or a Bluetooth modem is connected and configured, and any cellular connections have previously been configured, these connections should be listed as switch items. Toggling an item should connect or disconnect.

These are the parameters for mobile broadband connections:

  • PIN for SIM card
    • may prompt each time or optionally remember it
    • 4~8 digits [3GPP TS 11.11 V8.14.0 (2007-06), 9.3 Definitions and coding]
    • If you enter the wrong PIN 3 times, the SIM will lock you out
    • the hardware may tell Ofono that a PIN isn't necessary
    • autoconnect
      • enabled/disabled
    • nameservers
      • list of servers, in priority order
      • if empty, automatic servers used
    • domains
      • list of domain names
      • if empty, automatic domains used
    • ipv4
      • method:
        • fixed (user can't edit)
    • ipv6
      • method:
        • fixed (user can't edit)
    • proxy
      • method:
        • direct
        • auto
          • url (if empty wpad is used)
        • manual
          • servers
          • excludes

Setting up a cellular connection, prompted

mobile-dialog-initial.jpg

If, while you are logged in, you connect a cellular device to a PC, a “Cellular Connection” dialog should appear. If you disconnect the device, the dialog should close automatically.

The dialog’s primary text should be “You’ve connected a mobile device. Do you want to use it to connect to the Internet?” If the device requires a PIN, there should be a “Device PIN:” field, a “Show PIN” checkbox, and an “Authorize” button.

The “Device PIN:” field should be a password field whenever the “Show PIN” checkbox is unchecked, and a normal text field whenever “Show PIN” is checked. Entering any non-digit character, in any way, should produce an alert sound instead of accepting the character.

Test case: Check “Show PIN”. Copy these characters “1 2 3 4” to the clipboard. Paste them into the “Device PIN:” field. The field should contain “1234”.

The “Authorize” button should be the default button whenever the “Device PIN:” field is focused. It should be sensitive whenever the “Device PIN:” field contains from 4 to 8 digits inclusive.

All other controls in the dialog should initially be insensitive, except for the “Cancel” button.

mobile-dialog-authorizing.jpg

Activating the “Authorize” button should make it insensitive, and make a spinner with the text “Authorizing…” appear at the trailing end of the dialog below the button, for as long as it is trying to authorize with the entered PIN.

If the PIN was incorrect, the primary text of the alert should change to: “The PIN was incorrect. If you enter an incorrect PIN too many times, the device SIM may become locked.” The PIN field should then be focused, and the “Authorize” button should resume sensitivity.

If the authorization succeeded, the “Device PIN:” field should also become insensitive, the “Authorize” button should become an “✔ Authorized” label, the access point controls should become sensitive, and “Connect” should become the default button.

The access point controls should begin with “Access point:” radio buttons: “Automatic” (the default) and “Manual”.

Whenever “Automatic” is selected, the radio buttons should be followed by “Region:” and “Provider:” option menus, populated by the Service Provider Database, and an “APN:” caption displaying the APN for the selected region and provider.

mobile-dialog-apn-manual.jpg

Whenever “Manual” is selected, the radio buttons should be followed by an “APN:” text field. This field should accept a maximum of 100 characters; entering any more should produce an alert sound instead of accepting them.

mobile-dialog-connecting.jpg

What other server/domain settings do we need?

The “Connect” button should be sensitive whenever either a provider is chosen from the “Provider:” menu, or if the “APN:” field is non-empty. Activating the button should make a spinner and the caption “Connecting…” appear in the bottom leading corner of the dialog, change the “Cancel” button to “Stop” (without changing its width), and desensitize the access point controls and the “Connect” button, while trying to connect.

If you activate “Stop”, the connection attempt should stop, the button should desensitize for two seconds (to ignore you if you double-clicked it by mistake), it should turn back into a sensitive “Cancel” button, and the access point controls and the “Connect” button should resume sensitivity.

Setting up or changing a mobile connection, unprompted

settings-connections-mobile.jpg

In the “Network Settings” window, the pane for a mobile device should consist of controls that look and behave identically as in the “Mobile Connection” dialog, except that:

  • The top of the pane should be a status panel, with text of one of these forms:
    • Not connected.
    • ❊ Connecting…
    • Could not connect to {provider}. Can we be more specific?

    • You’re connected to the Internet on {provider}.
    • You’re connected to {provider}, but not on the Internet.
    The name of a provider should be surrounded by “” quotes if it is a raw APN.
  • There should be no “Cancel” or “Connect” buttons. Instead, at the trailing end of the status panel, should be a switch that is sensitive if settings are sufficient to attempt a connection. The switch should be ON whenever the device is connected or attempting a connection, and OFF otherwise.

  • All the controls, except the status panel and the “Show PIN” checkbox, should be insensitive whenever you are connected.

So, the process for setting up a mobile connection without using the dialog is:

  1. Open the Network Settings.
  2. Select the mobile device in the left pane.
  3. In the right pane, enter the device PIN and activate “Authorize”.
  4. Once authorized, enter the access point details, and switch the connection ON.

And the process for changing a connected mobile connection is:

  1. Open the Network Settings.
  2. Select the mobile device in the left pane.
  3. In the right pane, turn the switch OFF.

  4. Change the access point details, then turn the switch back ON.

“Mobile Setup” window

So that you can easily connect to the Internet using a Bluetooth phone that you may not have paired yet, the “New Mobile Broadband Connection” window should be altered to provide easy access to pairing.

...

Bluetooth connections (PC only)

Things to expose:

  • shouldn't need to enter anything after pairing Bluetooth device
  • from iPhone, is triggered from the phone, then appears in Mac OS X as a wired connection
  • connection type: PAN/DUN (usually automatic, occasionally wrong)
    • PAN (Personal Area Networking) [some phones, e.g. iPhones]
    • DUN (dial-up networking) [other phones] - not yet implemented
  • manual settings
    • IP address, DHCP, DNS (usually automatic)

Data

  • autoconnect
    • enabled/disabled
  • nameservers
    • list of servers, in priority order
    • if empty, automatic servers used
  • domains
    • list of domain names
    • if empty, automatic domains used
  • ipv4
    • method:
      • dhcp
      • manual
        • address
        • netmask
        • gateway
      • off
  • ipv6
    • method:
      • dhcp
      • manual
        • address
        • netmask
        • gateway
      • off
  • proxy
    • method:
      • direct
      • auto
        • url (if empty wpad is used)
      • manual
        • servers
        • excludes

To do

Settings to expose:

  • Wireless
    • Removing stored wireless networks
  • Any combination of these can be used simultaneously
    • One is the "main connection" (default route)
      • sends and receives your Internet traffic ("You're connected to the Internet using this connection")
      • affects your IP address
      • shown in the menu title
      • drag and drop -- top one in a list is the default route?
      • Do we want to convey it inside the menu too?
    • others are only for local network
  • DNS
    • usually the same regardless of connection
    • often automatic, from DHCP lease
    • sometimes automatic from PPP

Property

Description

Data constraints

mode

ethernet

wifi

bluetooth

cellular

State

State of connection

r

X

X

X

X

Error

Last error reason

r

X

X

X

X

Name

Name of connection

r

X

X

X

X

Type

"ethernet, wifi, cellular etc"

r

X

X

X

X

Mode

r

-

X

-

X

Security

r

-

X

-

-

Passphrase

rw

-

X

-

-

PassphraseRequired

r

-

X

-

-

Strength

r

-

X

X

X

Favorite

internal only

r

X

X

X

X

Immutable

r

X

X

X

X

AutoConnect

rw

X

X

X

X

SetupRequired

r

-

-

-

X

APN

3G Access Point Name

max. 100 characters [3GPP TS 23.003 V9.2.0, 9.1 Structure of APN]

rw

-

-

-

X

MCC

don’t show at all

r

-

-

-

X

MNC

don’t show at all

r

-

-

-

X

Roaming

r

-

-

-

X

Nameservers

don’t show

r

X

X

X

X

Nameservers.Configuration

rw

X

X

X

X

Domains

don’t show

r

X

X

X

X

Domains.Configuration

rw

X

X

X

X

IPv4

for troubleshooting

r

X

X

X

X

IPv4.Configuration

rw

X

X

X

-

Proxy

r

X

X

X

X

Ethernet (MAC address)

r

X

X

X

X

Legend:

X = available

- = unavailable

Spec: http://git.kernel.org/?<p=network/connman/connman.git;a=blob;f=doc/service-api.txt;hb=HEAD

VPNs

VPN section of the network status menu

vpn-sabdfl.jpg

The VPN section should be present whenever at least one VPN is set up. The section should begin with a “VPN Setup…” item that opens the Network Settings window to the VPNs tab.

Following that item, the configured VPNs should be listed as toggle items. Toggling an item should connect or disconnect from that VPN.

Proxies

settings-proxy.png

Firewall (PC only)

See also Oneiric desktop networking enhancements.

settings-firewall.png

The “Firewall” panel should start with status in one of these forms:

Status light

Status text

Switch

grey

The firewall is off.

OFF

yellow

The firewall is starting up…

ON

red

The firewall is not blocking any connections.

ON

green

The firewall is on and blocking all non-essential connections.

ON

green

The firewall is on and blocking some connections.

ON

green

The firewall is on with custom settings.

ON

yellow

The firewall is shutting down…

OFF

If “The firewall is on with custom settings” (for example, it is blocking any outgoing connections at all), all other controls in the panel should be insensitive, except for the “Advanced Settings…” and “Reset All…” buttons.

The list of applications should be sensitive only when “When the firewall is on, allow incoming connections to:” is set to “Essential services and these others:”.

settings-firewall-exception.png

If you choose “+” (which should have the accessible label “Add an Exception”), an “Add Exception” dialog should appear giving you the option of adding an application, service, or port.

Choosing “Advanced Settings…” should open a text editor to the ufw configuration file. Choosing “Reset All…” should open a confirmation alert of the form “Are you sure you want to delete all custom firewall settings?”. If you choose “Delete”, the ufw configuration file should be deleted and settings return to the “Essential services only” defaults.

Sharing

So you can easily share your connection regardless of whether it is wired, wireless, or mobile, there should be a single “Create/Share Connection” window.

create-share-window.jpg

PC-specific designs (to be integrated above)

Ubuntu’s networking interface should consist mostly of a “Network” panel in System Settings to cover networking in general, including connection setup, VPN, proxy, and firewall settings; and a network menu for quick access to connection settings.

Some of this interface is implemented in indicator-network on top of Connection Manager (a.k.a. ConnMan). The interface could also be implemented on top of Network Manager.

Artwork requirements

  • Mobile connection icons mobile-icon-disconnected.png (off, 0%, 20%, 40%, 60%, 80%, 100%)

  • Wireless connection icons wifi-icon-off.png wifi-icon-signal.png (off, 0%, 20%, 50%, 75%, 100%)

  • Wired connection icons wired-icon-disconnected.png wired-icon.png (off, on)

  • Computer-to-computer network icon adhoc-icon.png

  • Padlock icon for encrypted networks
  • Colored light icons for “connected”, “on but not connected”, and “off” (these are drawn dynamically using cairo and so are not needed as files)
  • Flight mode icon

Future work

  • Following the general principle that people open this menu for the purpose of fixing something wrong with their network connection, we should include, in the menu, items for turning off background tasks (such as Ubuntu One file syncing, or torrent seeding) that are consuming lots of bandwidth.

Locations

Above the tabs in the settings panel should be a “Location:” menu with a radio item for each location profile, followed by a separator and items ‘New Location…’, ‘Rename “{name of current location}”…’, and ‘Delete “{name of current location}”…’. By default, there should be only one location, “Anywhere”; when it is selected, the “Rename” and “Delete” items should be insensitive.

Optional extra: At the bottom of the “Location:” menu should be another separator, and finally a “Location Menu in Menu Bar” checkmark item. When it is checked, a location menu should appear in the menu bar, immediately on the leading side of the networking menu (or if the networking menu is turned off, immediately on the leading side of where it would be). This menu should have a globe icon as its title, and should contain a radio item for each location profile, followed by a separator and a “Network Settings…” item that opens the Network panel of System Settings.

Whichever way it is selected, choosing a location should change all networking settings to those that were last configured in that location.

Creating a location

Choosing “New Location…” should open a “New Location” dialog containing:

  • a “Choose a name for the new location:” field that, if possible, is pre-filled with the GeoName nearest your current location;

  • a “Based on:” menu listing the existing locations, with “Anywhere” as the default;
  • “Cancel” and “Create” buttons.

The “Create” button should be insensitive whenever the current value of the “Choose a name for the new location:” field is identical to one of the existing locations.

When a new location is created, it should start out with the same settings as whichever location it was “Based on”.

Renaming a location

Choosing ‘Rename “{name of current location}”…’ should open a “Rename Location” dialog, containing only a ‘Choose a new name for “{name of current location}”:’ field (pre-filled with the existing name), and “Cancel” and “Rename” buttons.

The “Rename” button should be insensitive whenever the current value of the “Choose a name for the new location:” field is identical to one of the other existing locations.

Deleting a location

Choosing ‘Delete “{name of current location}”…’ should open a confirmation alert with primary text ‘Are you sure you want to delete “{name of current location}” and all its settings?’, secondary text “You last used this location on {date}”, and “Cancel” and “Delete” buttons.

Unresolved issues

  • We need a thorough test suite for which wireless networks are shown in the menu.
  • How is shown that Wired connection is ready (cable plugged in, DHCP settings received) compared to case that cable isn't plugged in or DHCP hasn't answered? Should the ON/OFF switch reflect the state or is it only for user controlling the power of that device? The question also applies to 3G.
  • How to handle network updates while menu is open? In some cases networks might change a lot.
  • What about usb connections (e.g. USB tethering with a cellphone or USB ethernet modems? They show up as "wired connections" or "generated ethernet connections" atm, what they might not be.

settings:

  • edit connections functionality based on the connections property table, for all connection types
  • how to show which wifi connection is connected? should we also show connecting states?
  • how to disconnect connections from settings window?
  • wired settings window missing from the spec
  • there should be a separate dialog for mobile PIN

icons:

  • what icon to use as indicator icon in the panel when bluetooth connection is the default connection, otherwise there are two bluetooth icons on the panel (bluetooth and indicator-network)
  • icon animation for each technology? (wired, wireless, mobile, bluetooth)
  • strength icons for mobile and bluetooth as well

mobile wizard:

  • when user plugs in a new modem, in some cases, we can automatically detect APN, but should we always ask for confirmation from the user?
  • if we can't detect APN automatically, we need to ask from the user by showing a country/provider. how to show that?

other:

  • connection information dialog
    • IP settings
    • statistics
    • hardware information?
      • driver name
      • modem name and info
      • driver, firmware, hw versions

Networking (last edited 2015-06-29 07:56:33 by mpt)