By Ryan Speers | September 24, 2018
In the hardware hacking community, one of the tried-and-true “go to” tools for serial communication, dumping SPI flash chips, and interacting with basic JTAG interfaces is the GoodFET, developed by our neighbor Travis Goodspeed. Some of the GoodFET instructions are a bit outdated and fragmented, and we recently were asked for help installing this on a modern Debian-based system, namely the Kali Linux security distribution. We have written up those procedures here in the hope that they are useful to people working with the GoodFET hardware.
Install
We suggest installing GoodFET from source, so clone the repository and install as follows:
git clone https://github.com/travisgoodspeed/goodfet.git
pushd goodfet/client
sudo make link
popd
Additional Installation for Firmware Compilation
If you will be modifying and compiling the firmware, you will need to also install the compiler.
First, ensure you have the right apt
package-manager sources available.
For example, on Kali 2018.03, you would add the following line to your sources.list
if it isn’t already present,
so you can get the pre-requisites:
deb http://http.debian.net/debian stretch main contrib non-free
Update and install the package:
apt-get update
apt-get install gcc-msp430
If you are on a system like Kali, you may wish to now comment out the line you added above to sources.list
to avoid
conflicts in the future.
Usage
Set the board that you will be working with to an environment variable:
export board=goodfet42
You’ll need to remember to do this in the future before you use the tools as well (or persist this variable in your bash settings if you only use one type of board).
Compiling Firmware
If you want to build the firmware yourself, then:
pushd goodfet/firmware
make clean && make
ls -l goodfet.hex
popd
Updating the Device Firmware
Before flashing the device, always run:
goodfet.bsl --dumpinfo > info.txt
Storing these allows you to read back the firmware later and other things by using it with the password (-P
) option.
To flash the device, use the goodfet.hex
file you compiled above:
goodfet.bsl -epv goodfet.hex
This will erase the device and then program it, and then complete verification.
Although you can build and flash the device in a single command with
make install
, we recommend splitting it up as we have shown here so you have more control and a clearer indication of where issues occur, if any.
Testing
To check the firmware is installed and has the applications you want available, then run:
goodfet.monitor listapps full
The goodfet.monitor info
command is also useful for verifying basic functionality of the device.
We utilize this command when testing the GoodFETs which we offer pre-assembled via AdaFruit.
If you notice any errata in this post or have suggested additions, please contact us.