Releases: andrewdavidmackenzie/pigg
0.7.0
piggui 0.7.0
What's New in 0.7.0 - Summary
- Pico 2 and Pico 2 W full support alongside Pico and Pico W
- New compact pin layout view that shows only configured pins, suitable for devices with small displays
- Menus to configure pins are now on the pin itself to reduce space used
- Addition of a disconnected view when no connection is present. Connecting status added to the connecting menu while a connection is being attempted
- FakePi hardware view (mainly for development) is only included in debug builds. Release builds will show the "Disconnected View" initially
- LED output display is a clickable control now to reduce space used
- Updated lots of dependencies. Almost all are on the latest versions available
- Hardware compatibility tests are run in CI. Added "hw_tests" that are a set of tests running piggui against piglet and porky running on real Hardware (Pi Zero, Pico and Pico 2) connected to my server, using a custom GH runner
- Lots of test improvements across all sub-projects
- A number of small visual improvements around menus, dialogs, sizes etc.
- Improvements in developer setup Makefile targets for any contributors
- Improvements in connection handling and switching from one device directly to another
- More robust service restart by retrying with a delay on startup and failure (pending the "proper" fix (for systemd) which is in the works
- Improvements to tooltips, adding connection details on connection buttons
- Many code improvements, removing all unwraps among them. Project structured as a workspace enabling more code reuse across projects
- Added a FUNDING.yml
- Improvements in the wasm32 build, a pre-requisite to getting a web UI working
- A number of small bug fixes
Install piggui 0.7.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/andrewdavidmackenzie/pigg/releases/download/0.7.0/piggui-installer.sh | sh
Install prebuilt binaries via Homebrew
brew install andrewdavidmackenzie/pigg-tap/piggui
Download piggui 0.7.0
File | Platform | Checksum |
---|---|---|
piggui-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
piggui-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
piggui-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
piggui-x86_64-pc-windows-msvc.msi | x64 Windows | checksum |
piggui-aarch64-unknown-linux-gnu.tar.xz | ARM64 Linux | checksum |
piggui-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum |
piggui-arm-unknown-linux-gnueabihf.tar.xz | ARMv6 Linux (Hardfloat) | checksum |
piggui-armv7-unknown-linux-gnueabihf.tar.xz | ARMv7 Linux | checksum |
piggui-x86_64-unknown-linux-musl.tar.xz | x64 MUSL Linux | checksum |
piggui-arm-unknown-linux-musleabihf.tar.xz | ARMv6 MUSL Linux (Hardfloat) | checksum |
piggui-armv7-unknown-linux-musleabihf.tar.xz | ARMv7 MUSL Linux | checksum |
What's Changed - Details
- Run CI on ubuntu-24.04 by @andrewdavidmackenzie in #807
- Fix link as asset is now available by @andrewdavidmackenzie in #808
- Cross compile arm by @andrewdavidmackenzie in #809
- Bump clap from 4.5.26 to 4.5.27 by @dependabot in #815
- Bump serde_json from 1.0.135 to 1.0.137 by @dependabot in #814
- improve menu code by @andrewdavidmackenzie in #816
- codegen-units by @andrewdavidmackenzie in #819
- Bump iroh-net from 0.28.1 to 0.28.2 by @dependabot in #822
- Create FUNDING.yml by @andrewdavidmackenzie in #823
- Switch to iroh crate by @andrewdavidmackenzie in #824
- wider menu by @andrewdavidmackenzie in #825
- Converge W and non-W code in one porky by @andrewdavidmackenzie in #827
- Reduced view that shows only configured pins by @andrewdavidmackenzie in #828
- Bump tempfile from 3.15.0 to 3.16.0 by @dependabot in #834
- Add menu to pins by @andrewdavidmackenzie in #836
- Bump serde_json from 1.0.137 to 1.0.138 by @dependabot in #835
- make led a clickable control by @andrewdavidmackenzie in #839
- Bump mdns-sd from 0.13.1 to 0.13.2 by @dependabot in #842
- Bump clap from 4.5.27 to 4.5.28 by @dependabot in #845
- Move Input pullup config to pin menu by @andrewdavidmackenzie in #843
- Resize on connect by @andrewdavidmackenzie in #847
- Bump iroh from 0.31.0 to 0.32.0 by @dependabot in #844
- Bump iced_aw from
7dde7a1
tobd6b149
by @dependabot in #848 - Exit thread in fake hw when reconfigured from input by @andrewdavidmackenzie in #850
- Bump iroh from 0.32.0 to 0.32.1 by @dependabot in #851
- restructure crates by @andrewdavidmackenzie in #852
- Bump hickory-proto from 0.25.0-alpha.4 to 0.25.0-alpha.5 by @dependabot in #854
- Remove no_std feature by @andrewdavidmackenzie in #855
- Bump clap from 4.5.28 to 4.5.29 by @dependabot in #858
- Bump nusb from 0.1.12 to 0.1.13 by @dependabot in #860
- Bump tempfile from 3.16.0 to 3.17.0 by @dependabot in #861
- Bump clap from 4.5.29 to 4.5.30 by @dependabot in #863
- Bump tempfile from 3.17.0 to 3.17.1 by @dependabot in #862
- pigg_289 by @andrewdavidmackenzie in #857
- Bump serde_json from 1.0.138 to 1.0.139 by @dependabot in #866
- Bump anyhow from 1.0.95 to 1.0.96 by @dependabot in #868
- Bump serde from 1.0.217 to 1.0.218 by @dependabot in #867
- Bump log from 0.4.25 to 0.4.26 by @dependabot in #870
- porky_fixes by @andrewdavidmackenzie in #872
- Bump clap from 4.5.30 to 4.5.31 by @dependabot in #877
- Bump libc from 0.2.169 to 0.2.170 by @dependabot in https://gi...
0.6.0
We're happy to announce a new Pigg release with a lot of improvements.
Special thanks go to:
- @Dirbaio and others in the Embassy team for their support getting it all working on Pi Pico and Pi Pico W
- @ivmarkov for his edge-mdns crate that allowed us to provide mDNS network discoverability to Pi Pico versions
- @kevinmehall for the great nusb crate for host USB interaction
Install pigg 0.6.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/andrewdavidmackenzie/pigg/releases/download/0.6.0/pigg-installer.sh | sh
Install prebuilt binaries via Homebrew
brew install andrewdavidmackenzie/pigg-tap/pigg
Download pigg 0.6.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 New
Bug Fixes
- Fix definition of GP0 and GP1 pins on Pi Pico W by @andrewdavidmackenzie in #661
- Don't offer connect option if already connected to device by @andrewdavidmackenzie in #724
- Remove unused dependencies by @andrewdavidmackenzie in #736
- Adjust widget heights to fit inside pin row by @andrewdavidmackenzie in #748
- fix_timestamps by @andrewdavidmackenzie in #751
Docs
- Add screenshots on Windows by @andrewdavidmackenzie in #670
- Prerequisites by @andrewdavidmackenzie in #721
- Create FUNDING.json by @andrewdavidmackenzie in #722
- Add a drips badge by @andrewdavidmackenzie in #723
- Initial pass at hardware table by @andrewdavidmackenzie in #687
- Document udev rules by @andrewdavidmackenzie in #796
Enhancements
- Make the menus entries consistent by @andrewdavidmackenzie in #742
New Functionality
- Added Support for Pi Pico (not W) via USB connection
- Build and attach both uf2 to release by @andrewdavidmackenzie in #798
- USB Connections with full functionality
- Detect USB error and show help by @andrewdavidmackenzie in #804
- Add a command line argument to allow you to specify a device serial number to connect to via USB at startup
- Discovery
- Devices discovered are shown in a separate "devices" menu, with a number showing how many have been discovered
- Discovery of devices connected by USB (multiple if multiple connected)
- mDNS discovery of piglets (Raspberry Pi) devices with details for then TCP or Iroh connection
- mDNS discovery of porky (Pi Pico and Pi Pico W) devices for then TCP connection
- Merge devices in menu by serial number, but allow multiple connection method… by @andrewdavidmackenzie in #740
- Add local device GPIO hardware to discovery menu by @andrewdavidmackenzie in #759
- Allow to connect to a device directly from the discovery device menu
- Config management
- Persistence of the current config by devices (piglet to disk, porky to flash memory)
- Restoration of config to GPIO hardware on device restart, allowing device to continue as it left off
- Device supplies current config in operation to the GUI on connection, so GUI reflects reality of hardware
- Better messages on connect and disconnect
- Make it possible to change connection type or device connected to, without having to disconnect first
- Make it possible to cancel a connection attempt to a device
- Keep all dependencies versions up to date, and remove patched versions of embassy crates for porky
Pending
* Attach udev rules file as asset to release by @andrewdavidmackenzie in #800
Full Changelog: 0.5.0...0.6.0
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