Authorization and Configuration

FLUX Device use password and RSA key to authorizing access. At the first time a user connect to device, a RSA key and password is required. After the password is authorized, you can insert your RSA key into device trusted key list.


Note: You must add your RSA Key to device trusted list because robot and camera service does not accept password authorize.

Authorize with password

When create a UpnpTask instance, call fluxclient.upnp.task.UpnpTask.authorized() to ensure your connection grant permission to operation. If authorized return False, you have to call fluxclient.upnp.task.UpnpTask.authorize_with_password() to complete authorize.:

upnptask = UpnpTask(uuid)
if upnptask.authorized:
    pass  # authorized

    password = getpass("Password: ")
    except UpnpError as e:
        print("Authorize failed: %s" % e)

Manage device name, network and security

class fluxclient.upnp.task.UpnpTask(uuid, client_key, ipaddr=None, device_metadata=None, remote_profile=None, backend_options={}, lookup_callback=None, lookup_timeout=inf)

UpnpTask provides some configuration methods for the device. When creating a UpnpTask instance, the argument uuid is required. If parameter device_metadata is not given, UpnpTask will use lookup_callback and lookup_timeout to create a UpnpDiscover instance and try to get metadata from network.

  • uuid (uuid.UUID) – Device uuid, set UUID(int=0) while trying to connect via ip address.
  • client_key (encrypt.KeyObject) – Client key to connect to device.
  • ipaddr (str) – IP Address of the machine.
  • device_metadata (dict) – This is an internal parameter, which is not recommended to provide because it may has different definitions in different versions.
  • backend_options (dict) – More configuration for UpnpTask.
  • lookup_callback (callable) – Invoke repeatedly while looking for device.
  • lookup_timeout (float) – Raise an error if the program can not find the device in a limited time.
  • UpnpError – For protocol or operation error.
  • socket.error – For system defined socket error.

Closes the upnp socket connection. After close(), any other method should not be called anymore.


Indicates whether the connection has been authorized with a correct password or RSA key. If the connection is not authorized, you must call authorize_with_password first to authorize.


Indicates whether the upnp connection is connected with the device


Authorizes via password, only use when the RSA key has not been trusted from device.

Parameters:password (str) – Device password
add_trust(label, key)

Adds a client_key to device trust list

  • label (str) – Key label will show for human only
  • key (object) – A vaild RSA key object or pem

Key hash

Return type:



Gets all trusted key in the device

Returns:((label, key hash), (label, key hash), ...)

Removes a trusted key

Parameters:access_id (str) – Key hash which will be removed

Renames the device

Parameters:new_name (str) – New device name
modify_password(old_password, new_password, reset_acl=True)

Changes the device password, if reset_acl set to True, all other authorized user will be deauthorized.

  • old_password (str) – Old device password
  • new_password (str) – New device password
  • reset_acl (bool) – Clear authorized user list in device

Modifies the device network, details will be revealed in future documentation.


Gets wifi lists discovered from the device

Network config settings

key value example Describe
method (“static”|”dhcp”)  
Only required when *method*=”static”
ipaddr “” Device ip address (IPv4, str)
mask 24 Network mask, int
route “” Default gateway
ns [“”] DNS, a list of IPv4 address, str
Only required when config a wifi device
wifi_mode (“host”|”client”)  
ssid “A valid SSID” A valid ssid to join or hosted
security (None, “WEP”, “WPA2-PSK”) Wifi security, None if no security
Only required when wifi security=”WEP”
wepkey “PASSWORD” WEP security password
Only required when wifi security=”WPA2-PSK”
psk “PASSWORD” WPA-PSK security password

Error Handling

class fluxclient.upnp.task.UpnpError(*args, **kw)

When a request can not be processed, UpnpError will be raised

class fluxclient.upnp.task.UpnpException(*args, **kw)

When upnp session got a fatel error, UpnpException will be raised and the UpnpTask instance should be closed and can not be used anymore.