[UB20.10] Redundant Network Manager SIM PIN unlock

On UB20.10, with an LTE stick, SIM with pin code and Network Manager configured to automatically connect and remember the SIM pin, we see the expected behaviour, ie LTE connectivity is established ~30s after the LTE stick is inserted.

In the process, the Budgie Network Applet pops open a dialog asking for the SIM pin [1], even though it isn’t needed and Network Manager has it stored and connects happily.

I see GitHub Issues are disabled in the applet repo [2], so let me know if I should log the issue elsewhere. Is anyone familiar with the related code? I’m happy to build and test changes.



[2] https://github.com/UbuntuBudgie/budgie-network-applet

To be honest, this sounds to be an edge case that can only be resolved with someone who has your hardware.

As a workaround you can remove the network applet and add the system tray applet. Logout and login. This should show the legacy network applet in the system tray.

Or, how can I print/log the function values in src/Widgets/ModemInterface.vala [1]? This could reveal the source of the interaction.


– [1]

public ModemInterface (NM.Client nm_client, NM.Device? _device) {
    device = _device;
    modem_item = new Network.Widgets.Switch (display_title);

    notify["display-title"].connect (() => {
        modem_item.caption = display_title;

    modem_item.get_style_context ().add_class ("h4");
    modem_item.notify["active"].connect (() => {
        if (modem_item.active && device.state == NM.DeviceState.DISCONNECTED) {
            nm_client.activate_connection_async.begin (null, device, null, null, null);
        } else if (!modem_item.active && device.state == NM.DeviceState.ACTIVATED) {
            device.disconnect_async.begin (null, () => { debug ("Successfully disconnected."); });

    add (modem_item);

    device.state_changed.connect (() => { update (); });
    prepare.begin ();

public override void update () {
    switch (device.state) {
        case NM.DeviceState.UNKNOWN:
        case NM.DeviceState.UNMANAGED:
        case NM.DeviceState.UNAVAILABLE:
        case NM.DeviceState.FAILED:
            modem_item.sensitive = false;
            modem_item.active = false;
            state = State.FAILED_MOBILE;
        case NM.DeviceState.DISCONNECTED:
        case NM.DeviceState.DEACTIVATING:
            modem_item.sensitive = true;
            modem_item.active = false;
            state = State.FAILED_MOBILE;
        case NM.DeviceState.PREPARE:
        case NM.DeviceState.CONFIG:
        case NM.DeviceState.NEED_AUTH:
        case NM.DeviceState.IP_CONFIG:
        case NM.DeviceState.IP_CHECK:
        case NM.DeviceState.SECONDARIES:
            modem_item.sensitive = true;
            modem_item.active = true;

Generally when debugging applets I just add message statements into the code such as message("Failed to run : %s", e.message); or message("Got this far!");- when you restart the panel you see those print statements appear in the terminal

budgie-panel --replace &