Skip to content
Two-Factor-Authentication (2FA) Android app for the Satochip hardware wallet
Python Java Shell
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.

Satochip 2-Factor-Authentication

This is an app to be installed on a second device, to approve transactions before signing them with a Satochip. The app regularly poll the Electrum server for new transaction proposals. These transaction candidates are then parsed and displayed. If approved, a cryptographic code is sent back to securely and uniquely approve the transaction so that the satochip can sign it.


Kivy does not retrieve the (non-core) python modules imports. These must be added prior to building otherwise the app will crash upon running. In this case some error messages will be available via the android logs (something like "ModuleNotFoundError: No module named 'requests'. Python for android ended.").

The following python modules are required: urllib3 chardet requests certifi idna
cryptos (

These modules should be copied into the project's root folder along with the file. This can be done using the bash file 'make_packages'.

Build the app

The app is based on the Kivy GUI framework that allows to package a python application into an android app. Kivy can be installed using the procedure described here: To package the app in android, you need to install the Buildozer tools as described here:

The app can be built on ubuntu with Kivy-Buildozer with the following commands:

$ buildozer android debug

The resulting apk file is located in the 'bin' folder. It can be installed on an android device (configured for development) with adb:

$ adb install ./bin/Satochip2FA-0.1-debug.apk

For debugging purpose, android logs are available through adb logcat (search for the 'python' keyword):

$ adb logcat >logs.txt


The app requires the CAMERA and STORAGE permissions. If these permissions are not automatically set when installing the application (e.g. via adb), they can be enabled in: 'Settings -> Apps -> Satochip-2FA -> Permissions'

You can’t perform that action at this time.