/wally

The Flash(ing tool)

Primary LanguageGoOtherNOASSERTION

Wally

Flash your ZSA Keyboard the EZ way.

ℹ️ Windows users: There's a new version of Wally rewritten from the ground up using native technologies

Getting started

⚠️ Warning starting from firmware v19, Wally needs to be updated to v2.1.0 in order to detect your keyboard. Linux users should update their udev rules using the latest version from the wiki.

Wally comes in two flavors, a GUI and a CLI app. Download the application for your favorite platform from the relevant release page: GUI / CLI.

Note for Linux users, follow the instructions from our wiki page before running the application.

Note for Mac OS users, the CLI requires libusb to be installed: brew install libusb

Contributing

The following instructions apply only to those who wish to actively develop Wally and contribute new features or bugfixes to this open-source project. If you simply want to flash your board with some fresh firmware, see above.

Found a bug? Open an issue here.

Wally is built using Go at its core and Preact for the UI. The binding between core and UI happens using a fork of the webview package. This guide assumes you have a proper Go and NodeJS development environment running.

Installing dev dependencies

Wally is compatible with Windows, Linux, and macOS. Developing using each platform requires some extra setup:

Windows

  1. Install TDM GCC
  2. Setup pkg-config - see http://www.mingw.org/wiki/FAQ "How do I get pkg-config installed?"
  3. Grab and install the latest version of libusb from here

Linux

Follow the instructions from our wiki page or run the install.linux.sh. install.linux.sh should install all needed packages according to your x86 distribution. If you try to get wally working on a RaspberryPi, which has an ARM architecture, the script will compile the wally-cli for you and set it as alias in your bash. Installing should be as easy as running ./install.linux.sh

macOS

Install libusb using brew:

brew install libusb

Serve the UI locally

From the ui folder run npm run serve or yarn dev to run a webpack dev server locally on port 8080.

Compile a dev build

Run the following:

go build -tags dev -o wally

This build will bind its UI with the local webpack server.

Compile the CLI

Run the following:

go build cli/main.go -o wally-cli

Compile a release build

Pre requisites for all OS

  1. Install dep and run the command dep ensure to grab all the go dependencies.
  2. Install go-bindata by running the command go get -u github.com/jteeuwen/go-bindata/....
  3. Install cross-env and webpack by running the command yarn global add cross-env webpack or npm i -g cross-env webpack.

Windows

Run build.win.bat

Linux

Run build.linux.sh

Mac OS

  1. Install libusb using brew: brew install libusb.
  2. Install upx using brew: brew install upx.
  3. Run build.osx.sh

The wally gui and cli apps should be in ./dist/osx .

Note: the GUI app won't include libusb so it needs to be installed on the computer running it. To embed libusb into the binary, install dylibbundler and run:

dylibbundler -of -b -x ./dist/osx/Wally.app/Contents/MacOS/Wally -d ./dist/osx/Wally.app/Contents/libs/