Releases: andrewdavidmackenzie/pigg
0.5.0
Install pigg 0.5.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/andrewdavidmackenzie/pigg/releases/download/0.5.0/pigg-installer.sh | sh
Install prebuilt binaries via Homebrew
brew install andrewdavidmackenzie/pigg-tap/pigg
Download pigg 0.5.0
File | Platform | Checksum |
---|---|---|
pigg-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
pigg-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
pigg-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
pigg-x86_64-pc-windows-msvc.msi | x64 Windows | checksum |
pigg-aarch64-unknown-linux-gnu.tar.xz | ARM64 Linux | checksum |
pigg-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum |
pigg-armv7-unknown-linux-gnueabihf.tar.xz | ARMv7 Linux | checksum |
pigg-armv7-unknown-linux-musleabihf.tar.xz | ARMv7 MUSL Linux | checksum |
What's Changed
0.5.0 Release brings many changes, here they are summarized under major headings. You can consult the Full Changelog for all the details though.
Remote GPIO viewing and control of a Pi Pico W microcontroller
- "porky" build for Pi Pico using Embassy added to project. A porky device will connect to wifi and USB for wifi config.
- A pre-built UF2 file is part of the release for Pi Pico W, plus docs on how to install it and use it.
- This provides output controls and input tracking with pull-up configuration just like for regular Pi
- Porky uses a different Pi Pico pin layout
- Add video of porky and external GPIO by
- Discovery of USB connected porky devices
- Added a menu of discovered devices, and the ability to configure a connected porky's Wi-Fi, reset the wifi configuration or display details of the connected device.
Many dependency version bumps to keep with the latest and avoid CVEs
- Update to latest Iced, Iroh crate versions
UI Changes and fixes
- Moved config load and save to button menu bar
- Made bottom menu bar more consistant
- Fixed minor layout issues on Raspberry Pi Linux version
- More styles added, particularly hover styling on menu items and dialog buttons
- Disable layout change when no HW
- Added tooltips and styling of them
Pre-build Binaries
- Added a statically linked pre-built musl binary of piggui and piglet for Raspberry 3B users.
- Added a UF2 file for Pi Pico W to make it be a "porky" device accessible by USB and Wi-Fi
Others
- Add docs.rs meta-data
- Reduce binary sizes
- Improved Building, Running and Installing docs
0.4.0
Install pigg 0.4.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/andrewdavidmackenzie/pigg/releases/download/0.4.0/pigg-installer.sh | sh
Install prebuilt binaries via Homebrew
brew install andrewdavidmackenzie/pigg-tap/pigg
Download pigg 0.4.0
File | Platform | Checksum |
---|---|---|
pigg-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
pigg-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
pigg-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
pigg-x86_64-pc-windows-msvc.msi | x64 Windows | checksum |
pigg-aarch64-unknown-linux-gnu.tar.xz | ARM64 Linux | checksum |
pigg-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum |
pigg-armv7-unknown-linux-gnueabihf.tar.xz | ARMv7 Linux | checksum |
Change List
Add TCP Connection method
- via CLI argument and via connect dialog
- tab the connect dialog to have Iroh and TCP in same dialog
Updated rppal
- Use release 0.19.0 of rppal, with v2 API
- Add a 1ms debounce by default
- more accurate timestamps from Pi hardware used to draw waveform
Cross compile for armv7 and aarch64 without using cross
Release now contains pre-built binaries for armv7 and aarch64 via cargo-dist
Many Dependencies updated
Features to compile with iroh, tcp, both or neither
UI layout fixes
- Reduce text size of other pick_list on Linux also
- When switched tabs, don't clear values
- When enter pressed in connect dialog, validate the input fields and try and connect
- Add hyperlink to dialog text
- Implement scrollbar for both views
- Allow Escape key to exit dialog
- Improve the dialog when user tries to exit with unsaved changes
Significant work done on Pi Pico version of piglet (called "porky")
- Changes in serialization, struct definitions, and code re-org to enable some code reuse across piggui, piglet and porky and ensure compatible std and no-std serializations/deserialization of structs
- Add porky build to CI
- Porky has ssid info built-in at compile time
- Add a small test config for a board connected to Pico
- Pass the pin numbering scheme from hw to UI as per #397
- Implement GPIO on Pico, including correct use of GPIO 0 and 1
- Complete Pico GPIO pin descriptions
Added some automated texting of piggui, piglet and connecting to one from the other
Docs
- Add INSTALLING.md and link to it from README.md
- Add RELEASING.md
- Add release manual testing checklist issue template, that describes scenarios, test blocks and test matrix
0.3.4
Install pigg 0.3.4
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/andrewdavidmackenzie/pigg/releases/download/0.3.4/pigg-installer.sh | sh
Install prebuilt binaries via Homebrew
brew install andrewdavidmackenzie/pigg-tap/pigg
Download pigg 0.3.4
File | Platform | Checksum |
---|---|---|
pigg-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
pigg-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
pigg-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
pigg-x86_64-pc-windows-msvc.msi | x64 Windows | checksum |
pigg-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum |
v0.3.3
This release fixes a problem in v0.3.3 with piglet
, that impaired usability.
The nodeid
for an iroh-net connection was only being printed out when logging properly configured.
That was not easy to know to do, or how to do, and it was not as documented.
piglet
now always prints out the nodeid
for use in piggui
.
What's New in v0.3.*
- Addition of Remote GPIO interaction using
piggui
connected to a remotepiglet
over iroh-net (see below for details) - Lots of refactoring
- A few bug fixes
- Increased (slightly) test coverage, although more to be done here
- Added docs clarifying building from source from a clone or release tarball
- Use of clap and additional command line arguments in both
piggui
andpiglet
- All dependencies updated to latest versions with security patches etc
- Add Pi 3B Cross-Compilation Support in Makefile
- Replace
actions-rs
withdtolnay/rust-toolchain
- Allow
piglet
to be installed and uninstalled as a system service on RPi piglet
ensures only one instance running, and prints out connection information for existing running instance if there is one- Avoid use of
unwrap()
and hence possible panics inpiglet
- Move some docs to external files to improve README readability
- Add link check of markdown to CI
- Add Local or Remote marker to hardware button in GUI to help the user understand what hardware they are connected to
New Contributors
- @matheus23 made their first contribution in #247 to help us debug possible iroh-net connection issues
Networking feature
- The GUI (
piggui
) can connect to a Pi (that is runningpiglet
) over the network, to control and view the GPIO hardware
from a distance. The GUI can run on Mac, Linux, Windows or Raspberry Pis. Events are timestamped at source (as
close to the hardware as possible) so network delays should not affect the waveforms displayed. Provide us
feedback and ideas related to networking in Discussions or GH issues. - The data required to connect to a remote node via iroh-net is called the
nodeid
.piglet
prints this out for you if it is
started in the foreground. WHen piglet has been started as a system service, start another instance in the foreground. This will detects the background instance and display itsnodeid
for you, then exit. - Take the
nodeid
and either supply it as a command line option topiggui
(--nodeid $nodeid
, prefixed with--
if usingcargo run
) or enter it into the GUI. To connect to a remote instance from the GUI, click on the "hardware menu" in the left of the info bar at the bottom of the screen and select the "Connect to remote Pi..:" menu item. Then enter thenodeid
into the field provided and hit "Connect"
Here are two videos showing the two ways to use it, with piglet
running on a RPi shown via VNC.
- Video with Dialog: https://youtu.be/aToJ1aT7NeM
- Video using CLI argument: https://youtu.be/zcEa_Oke014
v0.3.2
A problem with a dependency of iroh-net meant that the publish package for v0.3.0 would not "cargo install".
This has been fixed by patching a dependency.
So, I will now yank 0.3.0 from crates.io, leaving this 0.3.2 that is functionally equivalent.
See v0.3.0 Release Notes for details of what's new in v0.3.2. vs. v0.2.0
v0.3.0
What's Changed
- Addition of Remote GPIO interaction using
piggui
connected to a remotepiglet
over iroh-net (see below for details) - Lots of refactoring
- A few bug fixes
- Increased (slightly) test coverage, although more to be done here
- Added docs clarifying building from source from a clone or release tarball
- Use of clap and additional command line arguments in both
piggui
andpiglet
- All dependencies updated to latest versions with security patches etc
- Add Pi 3B Cross-Compilation Support
- Replace actions-rs with dtolnay/rust-toolchain
- Allow piglet to be installed and uninstalled as a system service on RPi and ensure only one instance running
- Avoid unwraps and hence possible panics in piglet
- Move some docs to external files to improve README readability
- Add linkcheck of markdown
- Add Local or Remote marker to UI to help user understand what hardware they are connected to
New Contributors
- @matheus23 made their first contribution in #247 to help us debug possible iroh-net connection issues
Networking feature
- The GUI (
piggui
) can connect to a Pi (that is runningpiglet
) over the network, to control and view the GPIO hardware
from a distance. The GUI can run on Mac, Linux, Windows or Raspberry Pis. Events are timestamped at source (as
close to the hardware as possible) so network delays should not affect the waveforms displayed. Provide us
feedback and ideas related to networking in Discussions or GH issues. - The data required to connect to a remote node via iroh-net is called the
nodeid
.piglet
prints this out for you if it is
started in the foreground. WHen piglet has been started as a system service, start another instance in the foreground. This will detects the background instance and display itsnodeid
for you, then exit. - Take the
nodeid
and either supply it as a command line option topiggui
(--nodeid $nodeid
, prefixed with--
if usingcargo run
) or enter it into the GUI. To connect to a remote instance from the GUI, click on the "hardware menu" in the left of the info bar at the bottom of the screen and select the "Connect to remote Pi..:" menu item. Then enter thenodeid
into the field provided and hit "Connect"
Here are two videos showing the two ways to use it, with piglet
running on a RPi shown via VNC.
- Video with Dialog: https://youtu.be/aToJ1aT7NeM
- Video using CLI argument: https://youtu.be/zcEa_Oke014
v0.2.0
We're pleased to communicate the second release of the "pigg" project, with focus on the "piggui" GUI.
What is "piggui"
Piggui is a GUI for interacting with Raspberry Pi GPIO hardware, controlling outputs and observing inputs.
What's new in Release v0.2.0
New Features (see below for details and screenshots, gifs, etc)
- Addition of a squarewave moving window view of inputs and outputs
- Button to easily make quick changes to an Output level, maintaining toggler for setting longer term level
- LED view added to Output to resemble more the Input view
- Styling to improve visuals of Output toggler
- Warnings to help avoid losing work if attempting to exit prior to saving.
- Addition of a status bar at the bottom of the UI with
- Version number and About pop-up when clicked
- Hardware name and hardware details pop-up when clicked
- Unsaved changes indicator that opens save dialog when clicked
- Info messages, Warnings and Errors shown color-coded in status bar
- Moving of hardware details to pop-up has cleaned the UI and permitted a slightly smaller window
- Improved error handling, reporting info, warnings and errors to status bar
- Fullscreen is working on macos and linux (unable to test on windows)
Project improvements
- Refactored UI code into views, widgets, styles simplifying a lot the main update() and view() methods and making the project easier to contribute to and more maintainable
- Added tests and increased test coverage
- Reviewed pin definitions against BCM2711 chip datasheet used in Raspberry Pi 4. This changes the defaults for Input pull-ups and clarifies the other ALT functions (still in comments for now).
Details
Waveform view
Provide a way to see the recent history of the level of an input, or an output.
Level changes are stored with a timestamp, and currently the UI is updated four times a second.
Output LED and Button
Allows you to easily visualize and make very quick transitions or pulses on an output, while retaining the toggler for setting the "long term" level.
Exit warnings
Status Bar
Version details popup
Hardware details popups
For gifs and videos of features, see the Features Page
v0.1.0
This is the first release of pigg
!
We hope there is enough functionality to give you a sense of what it is and how it could evolve, we would love to hear your feedback and ideas, via Discussions in this repo, or Issues or comments on any posts we do. Thank You.
Initial Functionality
- Visual representation of the Raspberry Pi's 40 GPIO pins in two layouts, a "Board Pin Layout" that mimics the physical layout of the Pi's GPIO connector/header, or a "BCM Pin Layout" with only the programmable GPIO pins, ordered by BCM pin number.
- Each pin has its board pin number, name and function.
- Drop down selector to config each pin (Currently as an Input with or without pull-up/pull-down, or as an Output)
- Inputs have a visualization like an LED to show its current level (Black is unknown, Red is off, Green is on)
- Outputs have a toggle switch that can be used to change the value at the output
- GPIO configurations can be loaded at startup with a command line filename option, or loaded via file-picker from the UI or saves to file via file picker.
New Contributors
- @andrewdavidmackenzie made their first contribution in #11
- @sundaram123krishnan made their first contribution in #12
- @dependabot made their first contribution in #24
Full Changelog: https://github.com/andrewdavidmackenzie/pigg/commits/0.1.0