wpilibsuite / wpilibsuite/SystemcoreTesting

Tracking issue for new Driver Station software and OS on REV Driver Hub

Open
#308 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Java
Stars
186
Forks
24
Avg merge
8h 27m
Merged PRs (30d)
9

Description

Unlike the legacy Driver Station that was an Android app, the new Driver Station software is not planned to ever have an Android release. In order to run the new Driver Station software, a custom build of embedded Linux is being built for the REV Driver Hub, to replace the Android OS build originally made for the device.

This issue tracks both Driver Station software issues specific to usage on the Driver Hub, and issues with the new OS build for the Driver Hub itself.

DS app

  • Add tab/menu/such to control Wi-Fi configuration
    • Fix issue connecting when initially entered incorrectly
    • Various UX work
    • Consider Bluetooth as well; might be nice to save the USB ports some wear/damage when around the lab, and avoids annoying wires as well
  • Fix "About" button crashing the DS (tries to open dialog, which is not a thing with embedded)
  • Fix some missing icons on the on-screen keyboard (probably need to include a font with these icons)
  • Don't show setting for docked vs windowed on dhub (doesn't actually do anything)
  • Add volume control to DS app
  • Replace Exit button with something a bit more fitting (e.g. shut down)
  • Figure out rhythmic once-per-second or so CPU usage spikes when DS has been running a very long time
  • Add some sort of first-boot wizard; at a minimum, country needs to be set for Wi-Fi purposes (currently this is hard-coded to US in the relevant network config file)
  • Further work on general DS-side performance issues

OS

  • Create and/or document a simple way to flash the new OS image
  • Make power button shutdown dhub when held for a second or so (rn you have to hold for like 10 seconds to hard-power-off)
  • Investigate whether sleep is possible (may not be possible on mainline Linux), implement some sort of pseudo-sleep if not (e.g. turn screen off, force CPU/GPU to lowest clocks, etc)
  • Implement some sort of auto-shutdown when idle for long enough (e.g. if not connected to robot, and idle for 1 hour, shut down)
  • Fix RAM undervolt (see 0004-driverhub-cpu-opp-extend-and-vdd-logic-bump.patch.disabled from armbian experiments for one potential solution)
  • Fix CPU underfrequency (delete upstream cpu0_opp_table and bring in from downstream, see 0004-driverhub-cpu-opp-extend-and-vdd-logic-bump.patch.disabled from armbian experiments)
  • Investigate very-low-battery charging behavior (system_suspend_enter being commented out in charge_animation.c is suspicious)
  • Expand rootfs/fix GPT table on first boot
  • Fix dhub battery monitoring
  • Fix Ethernet
  • Fix DNS
  • Fix missing gamepad features (missing HIDRAW kernel module)
  • Fix sound issues
    • Fix no sound device
    • Fix incorrect default sound output
    • Fix sound being slowed down (workaround)
    • Fix sound being slowed down (proper diagnosis/fix)
    • Fix sound "warbling"
    • Fix sound top volume being very quiet (EDIT: seems like this is probably just a hardware issue; it's quiet and crackly on Android as well)
  • Implement stop-gap solution for configuring Wi-Fi
  • Enhancement: Include DS config json in OS image with FTC-specific defaults, like match time settings. (People probably aren't using a dhub for FRC, so running on a dhub is a good indicator to use FTC defaults. And in the rare occasion that someone is using a dhub for FRC, they can easily reset things to FRC defaults anyways.)
  • Enhancement: Reduce systemd loading time as much as possible (or consider switching back to busybox init for the production images)
  • Enhancement: Experiment with/implement USB tethering for sharing the robot network to a computer
  • Enhancement: Try systemd for parallel init (might be able to save another second or so during bootup vs sequential loading)
  • Enhancement: Experiment with potential further OS-side performance enhancements/fixes (e.g. try a Git version of Mesa for the recent Transaction Elimination optimizations in Panfrost)
    • Grab apitrace of DS app to see whether the bottleneck is rendering or purely CPU-side stuff

Various upstream bug reports/patches/etc

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

This is a broad tracking issue rather than a single task, so start by choosing one unchecked checklist item and reading its linked context. For power and charging work, inspect the charge_animation.c reference; for voltage and frequency issues, review 0004-driverhub-cpu-opp-extend-and-vdd-logic-bump.patch.disabled. Done means completing and documenting one narrowly scoped item.

Written by the indexing model from the issue text.

Assessment

Tech stack
linux
Domain
embedded-iot, operating-systems
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.