Phidget22admin Guide

From Phidgets Support
Revision as of 16:36, 20 August 2024 by Lmpacent (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

What is phidget22admin?

phidget22admin is a powerful command-line tool provided by Phidgets Inc. With this tool, you can do the following:

  • List local and remote Phidgets
  • List Phidget servers
  • Upgrade firmware
  • and more!

This tool is particularly useful if you managing a large number of Phidgets, or if you are using Linux where the Phidget Control Panel is not supported.

Installing phidget22admin

Windows

phidget22admin.exe location on a Windows machine.

After running the Phidgets installer, you can find phidget22admin at the following location:

  • C:\Program Files\Phidgets\Phidget22\phidget22admin.exe

macOS

phidget22admin is not included by default with the Phidgets macOS installer. Download the source file here and compile it using the following command:

./configure && make

Linux

The phidget22admin tool can be added through our Linux package repository. For more information, visit our Linux page. Alternatively, you can obtain the tool by downloading the source and building it with the following command:

./configure && make

Using phidget22admin

Basic Usage

The phidget22admin tool is used by calling phidget22admin with options:

phidget22admin [options]
Option Description
-A set password for server (requries -H)
-F path set path of firmware upgrade files
-H srvname filter by server name
-L include only local devices
-M sn[/hp/ch] filter by serial number / hub port / channel
-R include only remote devices
-U perform a firmware upgrade (requires -M)
-V version specify firmware version for upgrade (default newest)
-m allow major firmware upgrades (default allow only minor)
-a also list devices that don't need upgrades (requires -u)
-c list open channels on server (requires -H)
-d list Phidgets
-k key[=val] print [set] key on control dictionary (requires -H)
-l enable phidget22 logging
-o list open connections on server (requires -H)
-q quiet (compact output when using -du)
-s list servers
-u firmware upgrade mode
-v verbose output (requires -s)
-w seconds time to wait for devices, servers (default is 3 sec)

Example: Listing local devices

To list local devices and channels, enter the following command:

phidget22admin -dL

Below is an example of the output on a machine with a 1-Port VINT Hub Phidget connected.


Phidget22admin example hublistlocal.png



Example: Filtering the list of devices

When listing channels or connections on systems with many attached Phidgets, it's helpful to use filtering to narrow down the output. Here are some examples of filtering:

phidget22admin -dLM //0
  • Only list local channels with index 0

phidget22admin -dLM 123456
  • Only list local channels with a serial number of 123456

phidget22admin -oH localhost
  • Only list connections on hostname 'localhost'

More Information

For more infomation, please review the README file that can be found in the source folder.

Firmware Upgrade

The phidget22admin tool can be used to upgrade firmware on local and remote Phidgets.

Locating Firmware Files

On Linux/macOS, firmware files are located by the tool automatically. On Windows, The latest firmware for your device can be found in the phidget22admin download under the firmware folder. After downloading and unpacking the file, you can use the -F [path] option to specify where the firmware files are located.

Example: List Devices Eligible For Upgrade

phidget22admin -dLuF path/to/firmware

In the example below, we can see that a Light Phidget (LUX1000) can be upgraded to firmware version 101 from its current version of 100.

Phidget22admin example firmwarelist.png



Example: Firmware Upgrading Device

You can upgrade a device's firmware using the -U option. In order to do this, you must also use the -M option to specify the devices to be upgraded:

  • Serial Number
  • Hub Port (VINT devices only)
phidget22admin -UM SerialNumber/HubPort -F path/to/firmware

In the example below, we can see that a Light Phidget (LUX1000) has been upgraded to firmware version 101.


Phidget22admin example firmwareupgrade.png



Example: Using Scripts to Firmware Upgrade

With phidget22admin, you can easily automate the firmware upgrade process. View the examples below for more information:

@echo off
setlocal enabledelayedexpansion

set firmware_path="C:\Users\User\Downloads\phidget22admin-1.19.20240411\phidget22admin-1.19.20240411\firmware"
set admin_path=C:\"Program Files"\Phidgets\Phidget22\phidget22admin.exe

set command=%admin_path% -ludqF %firmware_path%

for /f "tokens=*" %%i in ('%command%') do (
    set output=%%i    
    set index=0
    for %%i in (!output!) do (
        set "array[!index!]=%%i"
        set /a index+=1
    ) 

    set is_remote_device=!array[0]!
    set is_vint_device=!array[1]!
    set serial_number=!array[2]!
    set hub_port=!array[3]!
    set sku=!array[4]!
    set installed_firmware=!array[5]!
    set available_firmware=!array[6]!    

    set /a installed_compare=!installed_firmware! / 100
    set /a available_compare=!available_firmware! / 100

    if !installed_compare! neq !available_compare! (
        echo A major firmware upgrade is required for !sku! ^(Serial No: !serial_number!^). Please review before upgrading.     
        pause
    ) else (        
        if !is_vint_device! == 1 (
            echo Attempting to firmware upgrade !sku! ^(VINT Hub Serial No: !serial_number!^)...
            set upgrade_command=%admin_path% -UM !serial_number!/!hub_port! -F %firmware_path%                    
        ) else (
            echo Attempting to firmware upgrade !sku! ^(Serial No: !serial_number!^)...
            set upgrade_command=%admin_path% -UM !serial_number! -F %firmware_path%        
        )                

        call !upgrade_command!
    )
)

pause

import subprocess, sys

firmware_path = "C:/Users/User/Downloads/phidget22admin-1.19.20240411/phidget22admin-1.19.20240411/firmware"
admin_path = "C:/PROGRA~1/Phidgets/Phidget22/phidget22admin.exe"

command = f"{admin_path} -ludqF {firmware_path}"

return_values, err = subprocess.Popen(command, stdout=subprocess.PIPE, shell=True, text=True).communicate()

if return_values.strip() == "":
    print("No devices are eligible for a firmware upgrade.")
else:
    upgradeable_devices = return_values.split("\n")
    for device in upgradeable_devices:
        if(device.strip() == ""):
            continue
            
        device_info = device.split(",")
        
        is_remote_device = int(device_info[0])
        is_vint_device = int(device_info[1])
        serial_number = device_info[2]
        hub_port = device_info[3]
        sku = device_info[4]
        installed_firmware = device_info[5]
        available_firmware = device_info[6]
        
        if (int(installed_firmware[0]) - int(str(available_firmware)[0])):
            sys.exit("A major firmware upgrade is required!")
        
        upgrade_command = ""
        if(is_vint_device):
            print(f"Attempting to firmware upgrade {sku} (VINT Hub Serial No: {serial_number})...")
            upgrade_command = f"{admin_path} -UM {serial_number}/{hub_port} -F {firmware_path}"
        else:
            print(f"Attempting to firmware upgrade {sku} (Serial No: {serial_number})...")
            upgrade_command = f"{admin_path} -UM {serial_number} -F {firmware_path}"
        
        subprocess.run(upgrade_command)

print("Complete")

Advanced

Minor vs Major Upgrades

Firmware versioning example

By default, the phidget22admin tool will only perform minor firmware upgrades. To perform major upgrades, you must add the -m option to your command.

phidget22admin -UmM SerialNumber/HubPort/Channel -F path/to/firmware

Downgrading Firmware

Downgrading firmware is not typically recommended. If a firmware downgrade is required, use the -V [version] option to specify your preferred version.

phidget22admin -UM SerialNumber/HubPort/Channel -F path/to/firmware -V 100