tiny-pilot/tinypilot

Investigation: Requirements for upgrading to uStreamer 6.0

db39 opened this issue · 7 comments

db39 commented

A user on the forum asked whether they could install and run a newer version of ustreamer on their TinyPilot. It appears that newer versions of ustreamer has some performance and stability improvements, particularly at 720p 60Hz, which the forum user wants to take advantage of.

Those improvements come from ustreamer v6.0, but the latest ustreamer release is v6.11. TinyPilot currently runs v5.43.

Before getting too deep into this, let's try a proof of concept and find out how much work it is to switch to 6.0.

I can't find any release announcement, so we'll need to figure out what changed to prompted a major version update. Hopefully, it doesn't require Bookworm.

db39 commented

Edit: Tagging the dev team (@jotaen4tinypilot, @jdeanwallace ) for insight.

I've just tested uStreamer 6.11, and it looks like we can use it as a drop-in replacement for 5.43.

I created a new uStreamer debian package in a development branch.

Then to test, I started from a fresh Raspberry Pi image (Bullseye 32-bit lite), installed the TinyPilot community version, then upgraded ustreamer with:

sudo apt install -y ./ustreamer_6.11-20240411142722_armhf.deb

Here's a log: https://logs.tinypilotkvm.com/bCiM6ZuQ

Anecdotally, mouse movement feels smoother.

Is there anything specific I should test or explore here?

Is there anything specific I should test or explore here?

Good question, I’m not sure whether we have any sort of upgrade procedure here? 🤔 Or would it be possible/sensible to use the QA procedure from our releases here?

Trusting that uStreamer’s commit messages are accurate, I don’t see obvious changes in the 5.43→6.11 diff that would seem to affect us.

Is both MJPEG and H.264 streaming still working, and is it also still possible to adjust all respective video settings in the same way as before?

db39 commented

Thanks, @jotaen4tinypilot!

Yeah, I looked through a fair amount of the commits and couldn't find anything obvious. Most of the commits are for refactoring and the like. I think those refactors probably contributed to the major version bump.

I’m not sure whether we have any sort of upgrade procedure here? 🤔

We have a process for performing an upgrade, but not for testing one.

would it be possible/sensible to use the QA procedure from our releases here?

I think that's a good idea! That's a fairly simple way we can confirm that TinyPilot can still interface with ustreamer without issues.

Is both MJPEG and H.264 streaming still working, and is it also still possible to adjust all respective video settings in the same way as before?

Yep - I had no issues at all. But I'll do a full video test using our QA process and report back.

db39 commented

@jotaen4tinypilot - I ran through our video QA test process without issues with ustreamer V6.11.

Based on the testing, I think we should be ok to upgrade the version of ustreamer that TinyPilot uses without issue.

db39 commented

@mtlynch (@shalver-tp) - Is there anything else I should investigate / check here before creating an issue in ustreamer-debian to update our ustreamer package and publish a release followng the publishing releases process?

Happy to update our process to include the investigation / testing steps from here, too.

@db39 - Ah, yeah, we should have a defined process for cutting new uStreamer releases.

I've created tiny-pilot/ustreamer-debian#18 with the goal of documenting what we've been doing, but we can iterate on it in the future if we think of improvements.

I've also created tiny-pilot/ustreamer-debian#19 to track cutting the release and get it on our task list.