Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Design: Create a uStreamer Debian package for TinyPilot #1

Closed
mtlynch opened this issue Feb 14, 2023 · 3 comments
Closed

Design: Create a uStreamer Debian package for TinyPilot #1

mtlynch opened this issue Feb 14, 2023 · 3 comments
Assignees
Labels

Comments

@mtlynch
Copy link
Contributor

mtlynch commented Feb 14, 2023

Overview

Our Ansible role for uStreamer is slow and complicated, so we're going to reimplement it as a Debian package.

Considerations

  • The highest priority item is compiling the uStreamer binary ahead of time rather than on the user's device.
    • Compiling on device adds IIRC 20s per install
  • We want to compile both an AMD64 and ARMv7 binary
    • The AMD64 is so that we can test everything in CI
    • ARMv7 is for actual TinyPilot devices
    • We should be able to combine concepts from janus-debian and picoshare to compile for both architectures
  • In the Ansible role, we only compile using the WITH_JANUS compilation option in some cases, but it's fine if our Debian package always has that option set.
    • In general, our Debian package is optimized for TinyPilot and is not aimed at general-purpose usage.
  • If it's easy to preserve the compile from source code paths in Ansible, we should do that, but only if it's really easy.
    • We seem to be the only consumers of the uStreamer Ansible role, so there's no sense in maintaining code nobody's using.
  • If it would be easier to combine our ansible-role-ustreamer repo and the Debian package repo into a single repo, I'm open to doing that.
    • This would prevent a situation where we have to keep making parallel changes in both ansible-role-ustreamer and ustreamer-debian repos.
    • We can also consider pulling everything into the core tinypilot / tinypilot-pro repos.
    • I just want to avoid having multiple live copies of the Ansible code.
  • We need to decide whether it makes sense to manage the TC358743 EDID as part of the TinyPilot Debian package, the uStreamer Debian package, or somewhere else.
  • The uStreamer package should work for users on TC358743 systems (like the Voyager series) and HDMI to USB dongles (Hobbyist kit, DIY users).

Structure

We're going to move from the Ansible implementation to the Debian package incrementally, as we're doing with the TinyPilot Ansible role.

We'll start by having the Ansible role install our Debian package instead of compiling uStreamer from source. And then we'll just keep moving more logic from Ansible to Debian incrementally.

We should structure the work in milestones so that at the end of the milestone, we have a usable chunk of work that puts us in a better position than we were at the start of the milestone.

Team

  • @jdeanwallace will be project architect and advise the project based on his experience converting the TinyPilot Ansible role to Debian.
  • @db39 and @cghague will be working with @jdeanwallace to execute the plan.

Prior work

Deliverable

Create a mega-ticket with a list of milestones and tasks for each milestone. Hold off on creating issues for each task until the plan has been reviewed.

References

@jdeanwallace
Copy link
Contributor

@mtlynch - I've added #2 with my proposed list of MEGA-TICKET tasks. Should I request a review from you or Jan?

I've also added some brief feedback on the initial tasks description below:

There's an official [uStreamer] Debian package

I don't think we can use it because we need the WITH_JANUS compilation option

Agreed. The uStreamer binary gets built with no extra make flags, which we need. Besides, uStreamer Debian packages aren't up to date, even the unstable suite only has version 4.9-1.

We need to decide whether it makes sense to manage the TC358743 EDID as part of the TinyPilot Debian package, the uStreamer Debian package, or somewhere else.

uStreamer can now load a custom EDID before it starts, so it might make sense to keep the EDID in the uStreamer Debian package. See https://github.com/pikvm/ustreamer#edid

@mtlynch
Copy link
Contributor Author

mtlynch commented Apr 4, 2023

I've added #2 with my proposed list of MEGA-TICKET tasks. Should I request a review from you or Jan?

I'll review.

uStreamer can now load a custom EDID before it starts, so it might make sense to keep the EDID in the uStreamer Debian package. See https://github.com/pikvm/ustreamer#edid

Oh, neat! That's handy.

@jdeanwallace
Copy link
Contributor

Closed via #2

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants