No internet connection
  1. Home
  2. Technical Support

Cannot upgrade pro from 2.4.0 to 2.5.0

By Alan Chiu @mikerotch
    2022-12-15 19:00:45.366Z

    I am using the GUI to try and upgrade. This issue I am having is that the upgrade says it is successful, but even after a reboot of the Voyager, it says it is on 2.4.0 and that upgrade to 2.5.0 is available. I have run through the upgrade process 3 times and still the same.

    I see there is another thread from someone else "Can't update to 2.5.0", but looking through my logs, I don't see the same error they had "could not read xxxxxxxxxxxxxxx bad object".'
    I have also checked "Update failed 2.4.1 -> 2.5.0" and don't have the same error Same with "Failed to Complete Update 2.4.1 to 2.5.0"

    here are my logs

    https://logs.tinypilotkvm.com/GodpurZJ

    Solved in post #6, click to view
    • 7 replies
    1. David @david2022-12-16 13:35:45.160Z

      Hi @mikerotch, sorry that you're running into issues updating.

      Thanks for sharing those logs! Unfortunately, there aren't any log entries from the update process, so I can't see if there have been any errors.

      Do you know whether you're using the read-only filesystem? If it's enabled TinyPilot won't be able to update. If you are using it, you will need to disable it before updating.

      If you're not using the read-only filesystem, can you run the update again and share another log once the update is 'complete'?

      1. M
        In reply tomikerotch:
        Alan Chiu @mikerotch
          2022-12-18 05:36:45.420Z2022-12-18 07:01:50.969Z

          I think I may have discovered the issue. I replaced the rpi in the Voyager 2 with my own 8GB rpi since I plan to do many other things on the Voyager than just a remote KVM. Would this prevent an upgrade? If so, is it possible somehow to register the rpi that the Voyager came with and register my own rpi as the correct one?

          EDIT: forgot to mention that I did check and the file system is not read-only.

          1. David @david2022-12-19 15:38:37.756Z

            Thanks for checking that read-only is disabled!

            Would this prevent an upgrade?

            I don't think so. Using a different Pi 4B shouldn't cause any issues when updating.

            Could you click 'update' in the GUI, let it run until it's 'successful', click 'ok', and then share another log? There should be a section in there dedicated to the update's logs. I'd like to look to see if there's a clue to the issue in there.

            1. MAlan Chiu @mikerotch
                2022-12-20 06:00:13.594Z2022-12-20 12:12:18.377Z

                Here is the log. I had to change http to h t t p or else this forum thinks I am spamming my sending more than 15 links

                2022-12-19 22:36:33.136 __main__        INFO Starting TinyPilot update
                2022-12-19 22:36:33.137 __main__        INFO Launching update script: /opt/tinypilot-privileged/update
                + set -u
                + set -e
                + readonly VERSION_FILE=/home/tinypilot/target-version
                + VERSION_FILE=/home/tinypilot/target-version
                + SCRIPT_ARGS=()
                + [[ -f /home/tinypilot/target-version ]]
                ++ cat /home/tinypilot/target-version
                + VERSION=2.5.0
                + SCRIPT_ARGS+=(--version "${VERSION}")
                + readonly SCRIPT_ARGS
                + curl --silent --show-error h t t p s://gk.tinypilotkvm.com/get-tinypilot-pro.sh
                + bash -s -- --version 2.5.0
                + TARGET_VERSION=
                + [[ 2 -gt 0 ]]
                + case "$1" in
                + TARGET_VERSION=2.5.0
                + shift
                + shift
                + [[ 0 -gt 0 ]]
                + readonly TEMP_DIR=/var/tmp
                + TEMP_DIR=/var/tmp
                ++ mktemp --tmpdir=/var/tmp --suffix .json
                + TARGET_VERSION_FILENAME=/var/tmp/tmp.Q7RUFul2tb.json
                + readonly TARGET_VERSION_FILENAME
                ++ mktemp --tmpdir=/var/tmp --suffix .tgz
                + BUNDLE_FILENAME=/var/tmp/tmp.3DBOoHo6AG.tgz
                + readonly BUNDLE_FILENAME
                + readonly INSTALLER_DIR=/opt/tinypilot-updater
                + INSTALLER_DIR=/opt/tinypilot-updater
                + readonly TINYPILOT_VERSION_FILE=/opt/tinypilot/VERSION
                + TINYPILOT_VERSION_FILE=/opt/tinypilot/VERSION
                + CURRENT_VERSION=
                + [[ -f /opt/tinypilot/VERSION ]]
                ++ cat /opt/tinypilot/VERSION
                + CURRENT_VERSION=2.4.0
                + readonly CURRENT_VERSION
                + HAS_COMMUNITY_INSTALLED=0
                + readonly TINYPILOT_README_FILE=/opt/tinypilot/README.md
                + TINYPILOT_README_FILE=/opt/tinypilot/README.md
                + [[ -f /opt/tinypilot/README.md ]]
                ++ head -n 1 /opt/tinypilot/README.md
                + [[ # TinyPilot Pro == \#\ \T\i\n\y\P\i\l\o\t ]]
                + readonly HAS_COMMUNITY_INSTALLED
                + trap clean_up EXIT
                + [[ -z 2.5.0 ]]
                + readonly TARGET_VERSION
                + [[ 2.4.0 == \2\.\5\.\0 ]]
                + readonly TINYPILOT_LICENSE_KEY=UNSPECIFIED
                + TINYPILOT_LICENSE_KEY=UNSPECIFIED
                ++ tr --delete '\0'
                + DEVICE_SERIAL_NUMBER=100000005cbc045c
                + readonly DEVICE_SERIAL_NUMBER
                ++ curl h t t p s://gk.tinypilotkvm.com/pro/download/2.5.0 --location --header 'TP-License: UNSPECIFIED' --header 'TP-Device-Serial-Number: 100000005cbc045c' --output /var/tmp/tmp.3DBOoHo6AG.tgz --write-out '%{h t t p _code}' --silent
                + h t t p _CODE=200
                + readonly h t t p _CODE
                + [[ 200 != \2\0\0 ]]
                + sudo rm -rf /opt/tinypilot-updater
                + sudo mkdir -p /opt/tinypilot-updater
                + sudo tar --gunzip --extract --file /var/tmp/tmp.3DBOoHo6AG.tgz --directory /opt/tinypilot-updater
                + sudo chown root:root --recursive /opt/tinypilot-updater
                + [[ 0 -eq 1 ]]
                + pushd /opt/tinypilot-updater
                /opt/tinypilot-updater /opt/tinypilot
                + sudo ./install
                + . lib.sh
                + readonly TEMP_DIR=/var/tmp
                + TEMP_DIR=/var/tmp
                ++ mktemp --tmpdir=/var/tmp --suffix .yml
                + INSTALL_SETTINGS_FILE=/var/tmp/tmp.N0VjDF3dfY.yml
                + readonly INSTALL_SETTINGS_FILE
                + readonly TINYPILOT_SETTINGS_FILE=/home/tinypilot/settings.yml
                + TINYPILOT_SETTINGS_FILE=/home/tinypilot/settings.yml
                + readonly USTREAMER_SETTINGS_FILE=/home/ustreamer/config.yml
                + USTREAMER_SETTINGS_FILE=/home/ustreamer/config.yml
                ++ ls tinypilot-20221003185210-1-armhf.deb
                + TINYPILOT_DEBIAN_PACKAGE=tinypilot-20221003185210-1-armhf.deb
                + readonly TINYPILOT_DEBIAN_PACKAGE
                + trap clean_up EXIT
                ++ uname -m
                + [[ armv7l == \a\a\r\c\h\6\4 ]]
                + [[ -f /home/tinypilot/settings.yml ]]
                + echo 'Using settings file at: /home/tinypilot/settings.yml'
                Using settings file at: /home/tinypilot/settings.yml
                + cp /home/tinypilot/settings.yml /var/tmp/tmp.N0VjDF3dfY.yml
                + yaml_set_if_undefined /var/tmp/tmp.N0VjDF3dfY.yml ustreamer_port 8001
                + local file_path=/var/tmp/tmp.N0VjDF3dfY.yml
                + local key=ustreamer_port
                + local value=8001
                + grep --silent '^ustreamer_port:' /var/tmp/tmp.N0VjDF3dfY.yml
                + yaml_set_if_undefined /var/tmp/tmp.N0VjDF3dfY.yml ustreamer_persistent true
                + local file_path=/var/tmp/tmp.N0VjDF3dfY.yml
                + local key=ustreamer_persistent
                + local value=true
                + grep --silent '^ustreamer_persistent:' /var/tmp/tmp.N0VjDF3dfY.yml
                + USE_TC358743_DEFAULTS=false
                + grep --silent '^ustreamer_capture_device:' /var/tmp/tmp.N0VjDF3dfY.yml
                + '[' -f /home/ustreamer/config.yml ']'
                + grep --silent 'capture_device: "tc358743"' /home/ustreamer/config.yml
                + USE_TC358743_DEFAULTS=true
                + true
                + yaml_set_if_undefined /var/tmp/tmp.N0VjDF3dfY.yml ustreamer_encoder omx
                + local file_path=/var/tmp/tmp.N0VjDF3dfY.yml
                + local key=ustreamer_encoder
                + local value=omx
                + grep --silent '^ustreamer_encoder:' /var/tmp/tmp.N0VjDF3dfY.yml
                + yaml_set_if_undefined /var/tmp/tmp.N0VjDF3dfY.yml ustreamer_format uyvy
                + local file_path=/var/tmp/tmp.N0VjDF3dfY.yml
                + local key=ustreamer_format
                + local value=uyvy
                + grep --silent '^ustreamer_format:' /var/tmp/tmp.N0VjDF3dfY.yml
                + yaml_set_if_undefined /var/tmp/tmp.N0VjDF3dfY.yml ustreamer_workers 3
                + local file_path=/var/tmp/tmp.N0VjDF3dfY.yml
                + local key=ustreamer_workers
                + local value=3
                + grep --silent '^ustreamer_workers:' /var/tmp/tmp.N0VjDF3dfY.yml
                + yaml_set_if_undefined /var/tmp/tmp.N0VjDF3dfY.yml ustreamer_use_dv_timings true
                + local file_path=/var/tmp/tmp.N0VjDF3dfY.yml
                + local key=ustreamer_use_dv_timings
                + local value=true
                + grep --silent '^ustreamer_use_dv_timings:' /var/tmp/tmp.N0VjDF3dfY.yml
                + yaml_set_if_undefined /var/tmp/tmp.N0VjDF3dfY.yml ustreamer_drop_same_frames 30
                + local file_path=/var/tmp/tmp.N0VjDF3dfY.yml
                + local key=ustreamer_drop_same_frames
                + local value=30
                + grep --silent '^ustreamer_drop_same_frames:' /var/tmp/tmp.N0VjDF3dfY.yml
                + echo 'Final install settings:'
                Final install settings:
                + cat /var/tmp/tmp.N0VjDF3dfY.yml
                ustreamer_drop_same_frames: 30
                ustreamer_encoder: omx
                ustreamer_format: uyvy
                ustreamer_persistent: true
                ustreamer_port: 8001
                ustreamer_quality: 100
                ustreamer_use_dv_timings: true
                ustreamer_workers: 3
                ustreamer_resolution: 1920x1080
                tinypilot_external_port: 61079
                tinypilot_external_tls_port: 61080
                + apt-get update --allow-releaseinfo-change-suite
                Hit:1 h t t p s://linux.teamviewer.com/deb stable InRelease
                Hit:2 h t t p ://archive.raspberrypi.org/debian buster InRelease
                Get:3 h t t p ://raspbian.raspberrypi.org/raspbian buster InRelease [15.0 kB]
                Hit:4 h t t p ://giteduberger.fr rpimonitor/ InRelease
                Fetched 15.0 kB in 7s (2,293 B/s)
                Reading package lists...
                + apt-get install -y git libffi-dev libssl-dev python3-dev python3-venv
                Reading package lists...
                Building dependency tree...
                Reading state information...
                git is already the newest version (1:2.20.1-2+deb10u6).
                libffi-dev is already the newest version (3.2.1-9).
                libssl-dev is already the newest version (1.1.1n-0+deb10u3).
                python3-dev is already the newest version (3.7.3-1).
                python3-venv is already the newest version (3.7.3-1).
                0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
                + python3 -m venv venv
                + . venv/bin/activate
                ++ deactivate nondestructive
                ++ '[' -n '' ']'
                ++ '[' -n /bin/bash -o -n '' ']'
                ++ hash -r
                ++ '[' -n '' ']'
                ++ unset VIRTUAL_ENV
                ++ '[' '!' nondestructive = nondestructive ']'
                ++ VIRTUAL_ENV=/opt/tinypilot-updater/venv
                ++ export VIRTUAL_ENV
                ++ _OLD_VIRTUAL_PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
                ++ PATH=/opt/tinypilot-updater/venv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
                ++ export PATH
                ++ '[' -n '' ']'
                ++ '[' -z '' ']'
                ++ _OLD_VIRTUAL_PS1=
                ++ '[' 'x(venv) ' '!=' x ']'
                ++ PS1='(venv) '
                ++ export PS1
                ++ '[' -n /bin/bash -o -n '' ']'
                ++ hash -r
                + pip install 'pip>=21.3.1'
                Looking in indexes: h t t p s://pypi.org/simple, h t t p s://www.piwheels.org/simple
                Collecting pip>=21.3.1
                  Cache entry deserialization failed, entry ignored
                  Cache entry deserialization failed, entry ignored
                  Using cached h t t p s://files.pythonhosted.org/packages/09/bd/2410905c76ee14c62baf69e3f4aa780226c1bbfc9485731ad018e35b0cb5/pip-22.3.1-py3-none-any.whl
                Installing collected packages: pip
                  Found existing installation: pip 18.1
                    Uninstalling pip-18.1:
                      Successfully uninstalled pip-18.1
                Successfully installed pip-22.3.1
                + pip install -r requirements.txt
                Looking in indexes: h t t p s://pypi.org/simple, h t t p s://www.piwheels.org/simple
                Collecting ansible==2.10.7
                  Using cached h t t p s://www.piwheels.org/simple/ansible/ansible-2.10.7-py3-none-any.whl (48.2 MB)
                WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ProtocolError('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))': /simple/ansible-base/
                Collecting ansible-base==2.10.17
                  Using cached h t t p s://www.piwheels.org/simple/ansible-base/ansible_base-2.10.17-py3-none-any.whl (1.9 MB)
                Collecting cffi==1.15.1
                  Using cached h t t p s://www.piwheels.org/simple/cffi/cffi-1.15.1-cp37-cp37m-linux_armv7l.whl (219 kB)
                Collecting cryptography==37.0.4
                  Using cached h t t p s://www.piwheels.org/simple/cryptography/cryptography-37.0.4-cp37-cp37m-linux_armv7l.whl (1.8 MB)
                Collecting Jinja2==3.1.2
                  Using cached h t t p s://www.piwheels.org/simple/jinja2/Jinja2-3.1.2-py3-none-any.whl (133 kB)
                Collecting MarkupSafe==2.1.1
                  Using cached h t t p s://www.piwheels.org/simple/markupsafe/MarkupSafe-2.1.1-cp37-cp37m-linux_armv7l.whl (26 kB)
                Collecting packaging==21.3
                  Using cached h t t p s://www.piwheels.org/simple/packaging/packaging-21.3-py3-none-any.whl (40 kB)
                Collecting pycparser==2.21
                  Using cached h t t p s://www.piwheels.org/simple/pycparser/pycparser-2.21-py2.py3-none-any.whl (119 kB)
                Collecting pyparsing==3.0.9
                  Using cached h t t p s://www.piwheels.org/simple/pyparsing/pyparsing-3.0.9-py3-none-any.whl (98 kB)
                Collecting PyYAML==6.0
                  Using cached h t t p s://www.piwheels.org/simple/pyyaml/PyYAML-6.0-cp37-cp37m-linux_armv7l.whl (45 kB)
                Installing collected packages: PyYAML, pyparsing, pycparser, MarkupSafe, packaging, Jinja2, cffi, cryptography, ansible-base, ansible
                Successfully installed Jinja2-3.1.2 MarkupSafe-2.1.1 PyYAML-6.0 ansible-2.10.7 ansible-base-2.10.17 cffi-1.15.1 cryptography-37.0.4 packaging-21.3 pycparser-2.21 pyparsing-3.0.9
                + ansible-playbook --inventory localhost, install.yml --extra-vars @/var/tmp/tmp.N0VjDF3dfY.yml --extra-vars tinypilot_debian_package_path=/opt/tinypilot-updater/tinypilot-20221003185210-1-armhf.deb
                PLAY [localhost] ***************************************************************
                TASK [Gathering Facts] *********************************************************
                ok: [localhost]
                TASK [ansible-role-tinypilot-pro : install Janus Debian package] ***************
                skipping: [localhost]
                TASK [ansible-role-ustreamer : check that the H264 variables are in a consistent state] ***
                skipping: [localhost]
                TASK [ansible-role-ustreamer : create ustreamer group] *************************
                ok: [localhost]
                TASK [ansible-role-ustreamer : create ustreamer user] **************************
                ok: [localhost]
                TASK [ansible-role-ustreamer : check for a boot config file] *******************
                ok: [localhost]
                TASK [ansible-role-ustreamer : save whether boot config file exists] ***********
                ok: [localhost]
                TASK [ansible-role-ustreamer : check whether this machine has a uStreamer settings file] ***
                ok: [localhost]
                TASK [ansible-role-ustreamer : read uStreamer settings file] *******************
                ok: [localhost]
                TASK [ansible-role-ustreamer : decode settings file] ***************************
                ok: [localhost]
                TASK [ansible-role-ustreamer : read ustreamer_capture_device from config file if it's not already defined] ***
                ok: [localhost]
                TASK [ansible-role-ustreamer : enable TC358743 overlay in /boot/config.txt] ****
                ok: [localhost]
                TASK [ansible-role-ustreamer : set GPU memory to 256MB in /boot/config.txt] ****
                ok: [localhost]
                TASK [ansible-role-ustreamer : check for a boot cmdline file] ******************
                ok: [localhost]
                TASK [ansible-role-ustreamer : read /boot/cmdline.txt] *************************
                ok: [localhost]
                TASK [ansible-role-ustreamer : decode command-line string] *********************
                ok: [localhost]
                TASK [ansible-role-ustreamer : change cma to 128M if it's set to a different value] ***
                skipping: [localhost]
                TASK [ansible-role-ustreamer : add cma=128M to cmdline.txt if it's missing] ****
                skipping: [localhost]
                TASK [ansible-role-ustreamer : create EDIDs folder] ****************************
                ok: [localhost]
                TASK [ansible-role-ustreamer : copy TC358743 EDID file] ************************
                ok: [localhost]
                TASK [ansible-role-ustreamer : install TC358743 initializer service] ***********
                ok: [localhost]
                TASK [ansible-role-ustreamer : use custom settings for TC358743 chip for any facts not already defined] ***
                ok: [localhost]
                TASK [ansible-role-ustreamer : remove TC358743 initializer service file] *******
                skipping: [localhost]
                TASK [ansible-role-ustreamer : disable TC358743 overlay in /boot/config.txt] ***
                skipping: [localhost]
                TASK [ansible-role-ustreamer : check if OS is Raspberry Pi OS] *****************
                ok: [localhost]
                TASK [ansible-role-ustreamer : enable OpenMax IL acceleration] *****************
                ok: [localhost]
                TASK [ansible-role-ustreamer : check that OpenMax IL acceleration is only compiled on Raspberry Pi OS] ***
                skipping: [localhost]
                TASK [ansible-role-ustreamer : collect universal required apt packages] ********
                ok: [localhost]
                TASK [ansible-role-ustreamer : collect Raspberry Pi OS specific required apt packages] ***
                ok: [localhost]
                TASK [ansible-role-ustreamer : install libraspberrypi-dev if we're using OpenMax IL acceleration] ***
                ok: [localhost]
                TASK [ansible-role-ustreamer : collect Debian-specific required apt packages] ***
                skipping: [localhost]
                TASK [ansible-role-ustreamer : collect Ubuntu-specific required apt packages] ***
                skipping: [localhost]
                TASK [ansible-role-ustreamer : collect Janus WebRTC plugin specific required apt packages] ***
                skipping: [localhost]
                TASK [ansible-role-ustreamer : install uStreamer pre-requisite packages] *******
                ok: [localhost]
                TASK [ansible-role-ustreamer : create uStreamer folder] ************************
                changed: [localhost]
                TASK [ansible-role-ustreamer : get uStreamer repo] *****************************
                ok: [localhost]
                TASK [ansible-role-ustreamer : clean uStreamer repository] *********************
                changed: [localhost]
                TASK [ansible-role-ustreamer : build uStreamer] ********************************
                changed: [localhost]
                TASK [ansible-role-ustreamer : fix uStreamer folder permissions] ***************
                changed: [localhost]
                TASK [ansible-role-ustreamer : install uStreamer as a service] *****************
                ok: [localhost]
                TASK [ansible-role-ustreamer : enable systemd uStreamer service file] **********
                ok: [localhost]
                TASK [ansible-role-ustreamer : save uStreamer settings file] *******************
                ok: [localhost]
                TASK [ansible-role-tinypilot-pro : create uStreamer Janus plugin config] *******
                skipping: [localhost]
                TASK [ansible-role-tinypilot-pro : install uStreamer Janus plugin] *************
                skipping: [localhost]
                TASK [ansible-role-tinypilot-pro : (legacy cleanup) check for broken cycle-tls-keys script] ***
                ok: [localhost]
                TASK [ansible-role-tinypilot-pro : (legacy cleanup) disable cycle-tls-keys systemd task] ***
                skipping: [localhost]
                TASK [ansible-role-tinypilot-pro : (legacy cleanup) remove cycle-tls-keys systemd task] ***
                skipping: [localhost]
                TASK [ansible-role-tinypilot-pro : (legacy cleanup) remove stale key material] ***
                skipping: [localhost] => (item=/etc/ssl/certs/tinypilot-ca.crt)
                skipping: [localhost] => (item=/etc/ssl/private/tinypilot-ca.key)
                skipping: [localhost] => (item=/etc/ssl/csr/tinypilot-ca.csr)
                skipping: [localhost] => (item=/etc/ssl/certs/tinypilot-nginx.crt)
                skipping: [localhost] => (item=/etc/ssl/private/tinypilot-nginx.key)
                skipping: [localhost] => (item=/etc/ssl/csr/tinypilot-nginx.csr)
                TASK [ansible-role-tinypilot-pro : (legacy cleanup) remove broken cycle-tls-keys script] ***
                skipping: [localhost]
                TASK [ansible-role-tinypilot-pro : install pip3] *******************************
                ok: [localhost]
                TASK [ansible-role-tinypilot-pro : install cryptography] ***********************
                ok: [localhost]
                TASK [ansible-role-tinypilot-pro : ensure CSR directory exists] ****************
                ok: [localhost]
                TASK [ansible-role-tinypilot-pro : create CA private key] **********************
                ok: [localhost]
                TASK [ansible-role-tinypilot-pro : check for a CA CSR file] ********************
                ok: [localhost]
                TASK [ansible-role-tinypilot-pro : create the CA CSR] **************************
                skipping: [localhost]
                TASK [ansible-role-tinypilot-pro : check for a CA certificate file] ************
                ok: [localhost]
                TASK [ansible-role-tinypilot-pro : sign the CA CSR] ****************************
                skipping: [localhost]
                TASK [ansible-role-tinypilot-pro : create host CSR signing key] ****************
                ok: [localhost]
                TASK [ansible-role-tinypilot-pro : create CSR for nginx] ***********************
                ok: [localhost]
                TASK [ansible-role-tinypilot-pro : generate a CA-signed TLS certificate] *******
                ok: [localhost]
                TASK [ansible-role-tinypilot-pro : install update-tls-cert-common-name as a service] ***
                ok: [localhost]
                TASK [ansible-role-tinypilot-pro : Remove legacy config file.] *****************
                ok: [localhost]
                TASK [ansible-role-nginx : Include OS-specific variables.] *********************
                ok: [localhost]
                TASK [ansible-role-nginx : Define nginx_user.] *********************************
                ok: [localhost]
                TASK [ansible-role-nginx : include_tasks] **************************************
                skipping: [localhost]
                TASK [ansible-role-nginx : include_tasks] **************************************
                skipping: [localhost]
                TASK [ansible-role-nginx : include_tasks] **************************************
                included: /opt/tinypilot-updater/roles/ansible-role-nginx/tasks/setup-Debian.yml for localhost
                TASK [ansible-role-nginx : Update apt cache.] **********************************
                ok: [localhost]
                TASK [ansible-role-nginx : Ensure nginx is installed.] *************************
                ok: [localhost]
                TASK [ansible-role-nginx : include_tasks] **************************************
                skipping: [localhost]
                TASK [ansible-role-nginx : include_tasks] **************************************
                skipping: [localhost]
                TASK [ansible-role-nginx : include_tasks] **************************************
                skipping: [localhost]
                TASK [ansible-role-nginx : Remove default nginx vhost config file (if configured).] ***
                ok: [localhost]
                TASK [ansible-role-nginx : Ensure nginx_vhost_path exists.] ********************
                ok: [localhost]
                TASK [ansible-role-nginx : Add managed vhost config files.] ********************
                ok: [localhost] => (item={'listen': [61079, '61080 ssl h t t p 2'], 'server_name': 'tinypilot', 'filename': 'tinypilot.conf', 'root': '/opt/tinypilot', 'index': 'index.html', 'error_page': '497 =307 h t t p s://$h t t p _host$request_uri', 'extra_parameters': 'ssl_certificate "/etc/ssl/certs/tinypilot-nginx.crt";\nssl_certificate_key "/etc/ssl/private/tinypilot-nginx.key";\nssl_protocols TLSv1.2;\nssl_prefer_server_ciphers on;\nssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384;\nssl_ecdh_curve secp384r1;\nssl_session_timeout  10m;\nssl_session_cache shared:SSL:10m;\nssl_session_tickets off;\nproxy_buffers 16 16k;\nproxy_buffer_size 16k;\nproxy_set_header Host $h t t p _host;\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\nproxy_set_header X-Forwarded-Proto $scheme;\nproxy_h t t p _version 1.1;\nlocation /socket.io {\n  proxy_pass h t t p ://tinypilot;\n  proxy_set_header Upgrade $h t t p _upgrade;\n  proxy_set_header Connection "Upgrade";\n  # Since this is a connection upgrade, we don\'t inherit the settings from\n  # above. We need these so that nginx forwards requests properly to\n  # Flask-SocketIO.\n  # See: h t t p s://github.com/miguelgrinberg/Flask-SocketIO/issues/1501#issuecomment-802082048\n  proxy_set_header Host $h t t p _host;\n  proxy_set_header X-Forwarded-Host $h t t p _host;\n  proxy_set_header X-Forwarded-Proto $scheme;\n}\nlocation /state {\n  auth_request     /auth;\n  auth_request_set $auth_status $upstream_status;\n  proxy_pass h t t p ://ustreamer;\n}\nlocation /stream {\n  auth_request     /auth;\n  auth_request_set $auth_status $upstream_status;\n  postpone_output 0;\n  proxy_buffering off;\n  proxy_ignore_headers X-Accel-Buffering;\n  proxy_pass h t t p ://ustreamer;\n}\nlocation /snapshot {\n  auth_request     /auth;\n  auth_request_set $auth_status $upstream_status;\n  proxy_pass h t t p ://ustreamer;\n}\nlocation /janus/ws {\n  auth_request     /auth;\n  auth_request_set $auth_status $upstream_status;\n  proxy_pass h t t p ://janus-ws;\n  proxy_set_header Upgrade $h t t p _upgrade;\n  proxy_set_header Connection "Upgrade";\n  proxy_set_header Host $h t t p _host;\n  proxy_set_header X-Real-IP $remote_addr;\n  proxy_set_header X-Scheme $scheme;\n  proxy_set_header X-Forwarded-Proto $scheme;\n  proxy_set_header X-Forwarded-Port $server_port;\n  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n}\nlocation /ca.crt {\n  alias "/etc/ssl/certs/tinypilot-ca.crt";\n}\nlocation / {\n  proxy_pass h t t p ://tinypilot;\n}\nlocation /api/massStorage/backingFiles {\n  # Allow large file transfers without buffering them.\n  client_max_body_size 0;\n  proxy_request_buffering off;\n  proxy_read_timeout 1d;\n  proxy_pass h t t p ://tinypilot;\n}\nlocation ~* ^/.+\\.(html|js|js.map|css|woff|woff2)$ {\n  root "/opt/tinypilot/app/static";\n\n  # We cache assets to prevent the browser from making redundant\n  # requests to the same files while loading the page. (Observed on\n  # Chrome 91.) We don’t want caching otherwise, though, in order to\n  # avoid stale files after users update their device. Note, that in\n  # addition to `max-age`, the browser’s caching behaviour is relative\n  # to the `Last-Modified` header, so we make that seem recent.\n  add_header Last-Modified $date_gmt;\n  add_header Cache-Control \'public, max-age=10s\';\n}\nlocation ~* ^/.+\\.(jpg|jpeg|png|ico)$ {\n  root "/opt/tinypilot/app/static";\n}\n# Authenticate any protected routes that are outside of the core\n# TinyPilot web app.\nlocation = /auth {\n  internal;\n  proxy_pass              h t t p ://tinypilot/api/auth;\n  proxy_pass_request_body off;\n  proxy_set_header        Content-Length "";\n  proxy_set_header        X-Original-URI $request_uri;\n\n  # Redefine header directives, as they are not inherited here:\n  # See h t t p ://nginx.org/en/docs/h t t p /ngx_h t t p _proxy_module.html#proxy_set_header\n  proxy_set_header        X-Forwarded-Proto $scheme;\n}\n'})
                TASK [ansible-role-nginx : Remove managed vhost config files.] *****************
                skipping: [localhost] => (item={'listen': [61079, '61080 ssl h t t p 2'], 'server_name': 'tinypilot', 'filename': 'tinypilot.conf', 'root': '/opt/tinypilot', 'index': 'index.html', 'error_page': '497 =307 h t t p s://$h t t p _host$request_uri', 'extra_parameters': 'ssl_certificate "/etc/ssl/certs/tinypilot-nginx.crt";\nssl_certificate_key "/etc/ssl/private/tinypilot-nginx.key";\nssl_protocols TLSv1.2;\nssl_prefer_server_ciphers on;\nssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384;\nssl_ecdh_curve secp384r1;\nssl_session_timeout  10m;\nssl_session_cache shared:SSL:10m;\nssl_session_tickets off;\nproxy_buffers 16 16k;\nproxy_buffer_size 16k;\nproxy_set_header Host $h t t p _host;\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\nproxy_set_header X-Forwarded-Proto $scheme;\nproxy_h t t p _version 1.1;\nlocation /socket.io {\n  proxy_pass h t t p ://tinypilot;\n  proxy_set_header Upgrade $h t t p _upgrade;\n  proxy_set_header Connection "Upgrade";\n  # Since this is a connection upgrade, we don\'t inherit the settings from\n  # above. We need these so that nginx forwards requests properly to\n  # Flask-SocketIO.\n  # See: h t t p s://github.com/miguelgrinberg/Flask-SocketIO/issues/1501#issuecomment-802082048\n  proxy_set_header Host $h t t p _host;\n  proxy_set_header X-Forwarded-Host $h t t p _host;\n  proxy_set_header X-Forwarded-Proto $scheme;\n}\nlocation /state {\n  auth_request     /auth;\n  auth_request_set $auth_status $upstream_status;\n  proxy_pass h t t p ://ustreamer;\n}\nlocation /stream {\n  auth_request     /auth;\n  auth_request_set $auth_status $upstream_status;\n  postpone_output 0;\n  proxy_buffering off;\n  proxy_ignore_headers X-Accel-Buffering;\n  proxy_pass h t t p ://ustreamer;\n}\nlocation /snapshot {\n  auth_request     /auth;\n  auth_request_set $auth_status $upstream_status;\n  proxy_pass h t t p ://ustreamer;\n}\nlocation /janus/ws {\n  auth_request     /auth;\n  auth_request_set $auth_status $upstream_status;\n  proxy_pass h t t p ://janus-ws;\n  proxy_set_header Upgrade $h t t p _upgrade;\n  proxy_set_header Connection "Upgrade";\n  proxy_set_header Host $h t t p _host;\n  proxy_set_header X-Real-IP $remote_addr;\n  proxy_set_header X-Scheme $scheme;\n  proxy_set_header X-Forwarded-Proto $scheme;\n  proxy_set_header X-Forwarded-Port $server_port;\n  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n}\nlocation /ca.crt {\n  alias "/etc/ssl/certs/tinypilot-ca.crt";\n}\nlocation / {\n  proxy_pass h t t p ://tinypilot;\n}\nlocation /api/massStorage/backingFiles {\n  # Allow large file transfers without buffering them.\n  client_max_body_size 0;\n  proxy_request_buffering off;\n  proxy_read_timeout 1d;\n  proxy_pass h t t p ://tinypilot;\n}\nlocation ~* ^/.+\\.(html|js|js.map|css|woff|woff2)$ {\n  root "/opt/tinypilot/app/static";\n\n  # We cache assets to prevent the browser from making redundant\n  # requests to the same files while loading the page. (Observed on\n  # Chrome 91.) We don’t want caching otherwise, though, in order to\n  # avoid stale files after users update their device. Note, that in\n  # addition to `max-age`, the browser’s caching behaviour is relative\n  # to the `Last-Modified` header, so we make that seem recent.\n  add_header Last-Modified $date_gmt;\n  add_header Cache-Control \'public, max-age=10s\';\n}\nlocation ~* ^/.+\\.(jpg|jpeg|png|ico)$ {\n  root "/opt/tinypilot/app/static";\n}\n# Authenticate any protected routes that are outside of the core\n# TinyPilot web app.\nlocation = /auth {\n  internal;\n  proxy_pass              h t t p ://tinypilot/api/auth;\n  proxy_pass_request_body off;\n  proxy_set_header        Content-Length "";\n  proxy_set_header        X-Original-URI $request_uri;\n\n  # Redefine header directives, as they are not inherited here:\n  # See h t t p ://nginx.org/en/docs/h t t p /ngx_h t t p _proxy_module.html#proxy_set_header\n  proxy_set_header        X-Forwarded-Proto $scheme;\n}\n'})
                TASK [ansible-role-nginx : Remove legacy vhosts.conf file.] ********************
                ok: [localhost]
                TASK [ansible-role-nginx : Copy nginx configuration in place.] *****************
                ok: [localhost]
                TASK [ansible-role-nginx : Ensure nginx service is running as configured.] *****
                ok: [localhost]
                TASK [ansible-role-tinypilot-pro : create the `lib` directory if it does not exist] ***
                ok: [localhost]
                TASK [ansible-role-tinypilot-pro : copy `lib` scripts] *************************
                ok: [localhost] => (item=/opt/tinypilot-updater/roles/ansible-role-tinypilot-pro/files/lib/usb-gadget.sh)
                TASK [ansible-role-tinypilot-pro : set the path to config.txt on non-Ubuntu systems] ***
                ok: [localhost]
                TASK [ansible-role-tinypilot-pro : set the path to config.txt for Ubuntu] ******
                skipping: [localhost]
                TASK [ansible-role-tinypilot-pro : check for a boot config file] ***************
                ok: [localhost]
                TASK [ansible-role-tinypilot-pro : enable dwc2 driver in boot config] **********
                ok: [localhost]
                TASK [ansible-role-tinypilot-pro : check for an /etc/modules file] *************
                ok: [localhost]
                TASK [ansible-role-tinypilot-pro : enable dwc2 driver in modules] **************
                ok: [localhost]
                TASK [ansible-role-tinypilot-pro : determine if a reboot is required] **********
                ok: [localhost]
                TASK [ansible-role-tinypilot-pro : create TinyPilot privileged folder] *********
                ok: [localhost]
                TASK [ansible-role-tinypilot-pro : copy usb-gadget initializer] ****************
                ok: [localhost]
                TASK [ansible-role-tinypilot-pro : copy usb-gadget de-initializer] *************
                ok: [localhost]
                TASK [ansible-role-tinypilot-pro : install usb-gadget initializer as a service] ***
                ok: [localhost]
                TASK [ansible-role-tinypilot-pro : enable systemd usb-gadget initializer service file] ***
                ok: [localhost]
                TASK [ansible-role-tinypilot-pro : check the HID module file] ******************
                ok: [localhost]
                TASK [ansible-role-tinypilot-pro : save whether the HID module should be patched] ***
                ok: [localhost]
                TASK [ansible-role-tinypilot-pro : ensure HID module is not in use] ************
                skipping: [localhost]
                TASK [ansible-role-tinypilot-pro : unload HID module] **************************
                skipping: [localhost]
                TASK [ansible-role-tinypilot-pro : patch HID module] ***************************
                skipping: [localhost]
                TASK [ansible-role-tinypilot-pro : load HID module] ****************************
                skipping: [localhost]
                TASK [ansible-role-tinypilot-pro : collect TinyPilot required apt packages on all systems] ***
                ok: [localhost]
                TASK [ansible-role-tinypilot-pro : add pip to required apt packages] ***********
                ok: [localhost]
                TASK [ansible-role-tinypilot-pro : add pip3 to required apt packages] **********
                skipping: [localhost]
                TASK [ansible-role-tinypilot-pro : install TinyPilot pre-requisite packages] ***
                skipping: [localhost]
                TASK [ansible-role-tinypilot-pro : create tinypilot group] *********************
                ok: [localhost]
                TASK [ansible-role-tinypilot-pro : create tinypilot user] **********************
                ok: [localhost]
                TASK [ansible-role-tinypilot-pro : copy admin scripts] *************************
                ok: [localhost] => (item=change-hostname)
                ok: [localhost] => (item=check-default-credentials)
                ok: [localhost] => (item=collect-debug-logs)
                ok: [localhost] => (item=eject-mass-storage)
                ok: [localhost] => (item=mount-mass-storage)
                ok: [localhost] => (item=read-update-log)
                ok: [localhost] => (item=toggle-ssh-service)
                ok: [localhost] => (item=update)
                ok: [localhost] => (item=update-tls-cert-common-name)
                ok: [localhost] => (item=update-video-settings)
                TASK [ansible-role-tinypilot-pro : store passwordless sudo paths] **************
                ok: [localhost]
                TASK [ansible-role-tinypilot-pro : enable tinypilot to execute a whitelist of commands as sudo] ***
                ok: [localhost]
                TASK [ansible-role-tinypilot-pro : install TinyPilot Debian package] ***********
                ok: [localhost]
                TASK [ansible-role-tinypilot-pro : create TinyPilot folder] ********************
                skipping: [localhost]
                TASK [ansible-role-tinypilot-pro : [DEPRECATED] get TinyPilot repo] ************
                skipping: [localhost]
                TASK [ansible-role-tinypilot-pro : find absolute path to python3] **************
                ok: [localhost]
                TASK [ansible-role-tinypilot-pro : save absolute path to python3] **************
                ok: [localhost]
                TASK [ansible-role-tinypilot-pro : create TinyPilot virtualenv] ****************
                ok: [localhost]
                TASK [ansible-role-tinypilot-pro : create TinyPilot app settings] **************
                ok: [localhost]
                TASK [ansible-role-tinypilot-pro : fix TinyPilot folder permissions] ***********
                ok: [localhost]
                TASK [ansible-role-tinypilot-pro : install TinyPilot as a service] *************
                ok: [localhost]
                TASK [ansible-role-tinypilot-pro : enable systemd TinyPilot service file] ******
                ok: [localhost]
                TASK [ansible-role-tinypilot-pro : install tinypilot-updater as a service] *****
                ok: [localhost]
                RUNNING HANDLER [ansible-role-ustreamer : restart uStreamer] *******************
                changed: [localhost]
                PLAY RECAP *********************************************************************
                localhost                  : ok=87   changed=5    unreachable=0    failed=0    skipped=33   rescued=0    ignored=0
                + cp /var/tmp/tmp.N0VjDF3dfY.yml /home/tinypilot/settings.yml
                + chown tinypilot:tinypilot /home/tinypilot/settings.yml
                + clean_up
                + rm -rf /var/tmp/tmp.N0VjDF3dfY.yml
                + clean_up
                + rm -rf /var/tmp/tmp.Q7RUFul2tb.json /var/tmp/tmp.3DBOoHo6AG.tgz
                2022-12-19 22:42:18.589 __main__        INFO Update completed successfully
                2022-12-19 22:42:18.590 update.result_store INFO Writing result file to /home/tinypilot/logs/latest-update-result.json
                2022-12-19 22:42:18.591 update.target_version INFO Clearing target version file /home/tinypilot/target-version
                
                1. David @david2022-12-20 13:27:24.472Z

                  Thanks for sharing that update log!

                  I think I know what has happened. When changing your port settings a few days back, the script altered the version number to force an update - but the script did not revert the change to the version number. Meaning that your device is already on version 2.5.0, but the update process thinks it's on 2.4.0. That would also explain why the update process doesn't do anything.

                  All we need to do here is restore the version number back to 2.5.0.

                  First, ssh into your TinyPilot, and then run this command:

                  echo "2.5.0" | sudo tee /opt/tinypilot/VERSION
                  

                  Hope that helps!

                  ReplySolution
            2. M
              In reply tomikerotch:
              Alan Chiu @mikerotch
                2022-12-21 05:37:13.685Z

                Thanks. That did it.

                1. David @david2022-12-21 12:10:18.045Z

                  Perfect! Thanks for the update. Please reach out again if you have any other questions.