wpilibsuite / wpilibsuite/SystemcoreTesting
Tracking issue for new Driver Station software and OS on REV Driver Hub
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
USin 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.disabledfrom 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.disabledfrom armbian experiments) - Investigate very-low-battery charging behavior (
system_suspend_enterbeing commented out incharge_animation.cis 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)
- Issue opened upstream: https://github.com/systemd/systemd/issues/43094
- 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
- Slow eMMC tuning due to excessive default timeout (patched locally): https://bugzilla.kernel.org/show_bug.cgi?id=221781
- SystemD no caching of computed services dependency structure: https://github.com/systemd/systemd/issues/43094
- Avalonia:
- Question: How to set compiler flags for native libraries? https://github.com/AvaloniaUI/Avalonia/discussions/21761
- Question: How to define display subpixel layout for text rendering? https://github.com/AvaloniaUI/Avalonia/discussions/21757
- Question: Impeller ETA? https://github.com/AvaloniaUI/Avalonia/discussions/20838
- Issue: No support for Vulkan when targeting embedded (DRM): https://github.com/AvaloniaUI/Avalonia/issues/21874
- PR: Fix for debug FPS overlay wrecking performance: https://github.com/AvaloniaUI/Avalonia/pull/21860
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- 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