Skip to content

Releases: andrewdavidmackenzie/pigg

0.5.0

19 Nov 23:30
261a0fb
Compare
Choose a tag to compare

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

04 Oct 10:53
56b056a
Compare
Choose a tag to compare

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

07 Aug 19:51
cc253b7
Compare
Choose a tag to compare

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

04 Aug 19:39
ebeafd3
Compare
Choose a tag to compare

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 remote piglet 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 and piglet
  • All dependencies updated to latest versions with security patches etc
  • Add Pi 3B Cross-Compilation Support in Makefile
  • Replace actions-rs with dtolnay/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 in piglet
  • 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 running piglet) 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 its nodeid for you, then exit.
  • Take the nodeid and either supply it as a command line option to piggui (--nodeid $nodeid, prefixed with -- if using cargo 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 the nodeid 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.

v0.3.2

04 Aug 11:11
7c2bb38
Compare
Choose a tag to compare

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

31 Jul 13:05
7559006
Compare
Choose a tag to compare

What's Changed

  • Addition of Remote GPIO interaction using piggui connected to a remote piglet 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 and piglet
  • 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 running piglet) 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 its nodeid for you, then exit.
  • Take the nodeid and either supply it as a command line option to piggui (--nodeid $nodeid, prefixed with -- if using cargo 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 the nodeid 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.

v0.2.0

22 Jun 21:39
011c324
Compare
Choose a tag to compare

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.

Displaying an Inputs level from HW Button

Controlling an LED on an Output

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.

BCM Pin Layout Screenshot

Board Pin Layout Screenshot

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.

Input

Output

Exit warnings

Output

Status Bar

Output

Version details popup

Output

Hardware details popups

Output

For gifs and videos of features, see the Features Page

v0.1.0

02 Jun 23:48
aa2f6a5
Compare
Choose a tag to compare

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.

BCM Pin Layout Screenshot Board Pin Layout Screenshot

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

Full Changelog: https://github.com/andrewdavidmackenzie/pigg/commits/0.1.0