Hardware + software
Dashboard Touch
Touch ID for your Mac, without an Apple keyboard.
Automatically type in your password at the tap of your finger, anywhere your Mac asks for it. For those of us who use our own keyboards, but miss the convenience and ease of Touch ID on Apple devices, Dashboard Touch lets you build your own solution from parts that you can get for about $30.
Once you've installed a few simple tools, you can manage the whole thing through a friendly web interface, and it's all free and open source, with no surveillance or data sent anywhere. Your fingerprints never leave your sensor device, and your password never leaves your Mac.

What the ring is telling you
By default, the ring will be solid purple to indicate that the system is ready — this is configurable, and you can turn the light off. Other colors and blinking statuses make it clear when you can add a new fingerprint, whether an existing fingerprint has been detected, or if there is any kind of error. Pick any of them to see it on the sensor above.
How it works, and why it's safe
Dashboard Touch works by typing your real password as soon as your fingerprint has been verified by the sensor. Behind the scenes, the system basically looks like a keyboard to your Mac, which just happens to type in the correct password only if your securely-recorded fingerprint is pressed to the device.
This design is why it works everywhere, but it also entails a real security tradeoff that you should understand before building one. The short version: anyone with physical access to your desk and your Dashboard Touch hardware, if they have enough expertise, could cause you real problems. You can read over the security notes and decide if that tradeoff is fine for where your Mac is located. (For most normal households and home offices, it will probably be something most people are comfortable with.)
What you need to get started
The build really only requires a few simple parts. These are the exact devices that I used to build mine, but there are lots of similar variants and you could probably get them to work with a little bit of effort, too.
| Part | Product | Cost |
|---|---|---|
| Microcontroller | Adafruit QT Py ESP32-S3 | ~$12.50 |
| Fingerprint sensor | Simlug R503 clone (Adafruit sells the same part) | ~$10–20 |
| USB-C cable | Must be a data cable, not just charging | you have one |
Presumably a cheaper board could work here too. I haven't tested any of those other variants, but if you do and it works, please do share your notes back.
The fingerprint sensor is a round cylinder about an inch across with a threaded barrel. I built a very simple wooden panel to mount mine on — you just poke it through the hole and screw the bolt on the back — but if you don't want to build an enclosure, there are off-the-shelf ones that would probably fit with no work required.
Some of the links in the repo are affiliate links. If I make any money from that, I'll use it to help folks who want to build some of this stuff but don't have the tools and such that they need.
How to hook it up (what you need to solder)
You'll need to solder a few small connections to put together the QT Py board and the sensor. It's not hard if you have experience soldering, but it can be a little bit fiddly.
The fingerprint sensor's cable has six colored leads. By default, they're attached to a little connector plug — it's a JST-SH connector with a 1mm pitch, if you are a nerd — so you will need to either pull the connector pins out of the plug or cut the wires so that you can solder them to the board.
The wires connect to the QT Py like this. Pick one to trace it:
| Wire | Meaning | Goes to |
|---|---|---|
| Red | power |
3V
|
| Black | ground |
GND
|
| Yellow | sensor talks |
RX
|
| Brown | sensor listens |
TX
|
| Blue | touch wake |
A3
|
| White | touch power |
3V (the same pin as the red wire)
|
Make sure you wire up the white wire to the power lead just like the red wire. It's easy to get excited and leave it off, because the sensor will power up and light up without it, but nothing will work right if you don't, so save yourself some trouble and be sure to get all 6 wires going.

Set it up
You'll need the code from the GitHub repo to set everything up. There's a script that should help, so you can just do:
git clone https://github.com/anildash/dashtouch
cd dashtouch
./setup
The script walks you through everything: it makes a pairing key, stores your password in the macOS Keychain (this is the same secure way all your other apps do it), and flashes the firmware onto the QT Py board.
macOS will ask you about a keyboard
The first time you plug the board in after it's wired up and flashed, macOS will pop open the Keyboard Setup Assistant. This is a good sign! It means your Mac has noticed the QT Py showing up as a USB keyboard, which is exactly what it's supposed to be doing.
Just click Quit to dismiss it. The assistant is trying to work out what layout your new keyboard has, and it does that by asking you to press a few specific keys — but this "keyboard" only ever types one thing, so there's nothing useful to tell it. Quitting doesn't break anything and doesn't skip any setup step.
The Dashboard Touch helper
The "helper" is a little app that stays running in the background in order to enable the Dashboard Touch system to do its tasks, but it also provides a convenient user interface for you to configure or customize your setup right from your web browser. The helper's page lives at IP address 127.0.0.1, and the port number is 3274. (That's DASH on a phone keypad.)
Settings
I tried to make there be as few settings as possible so there isn't too much to configure after you get it working, but there is a simple one-click way to change which color the ring shows when it's at rest. You have the option to turn it off, or to make the light "breathe".
And the other setting is whether or not the system hits "return" automatically after typing in your password. You can switch that off if you want to verify that you're ready to authenticate each time, or if you have any qualms about the system submitting your password on its own when you register a fingerprint.
Command reference
Everything the dashtouch command can do. If you haven't set it up on your PATH, run these from the repo folder as .venv/bin/dashtouch … instead.
-
dashtouch - With no command at all, it prints the address of the helper's page and nothing else, so you can pipe it straight into something:
open $(dashtouch). That link carries your session key, so treat it like a password. -
dashtouch setup - First-time setup, start to finish — makes the pairing key, stores your password in the macOS Keychain, and offers to flash the firmware onto the board. This is what the
./setupscript runs for you, so you generally won't call it by hand. -
dashtouch enroll - Opens the helper's page in your browser so you can add a finger. Easier than copying the URL over yourself, and it's the one you'll use most often early on.
-
dashtouch run - Runs the helper in the foreground. This is what launchd calls when the helper starts at login, so you'd mostly run it yourself when you want to sit and watch what it's doing in a terminal.
-
dashtouch install-agent - Sets the helper up to start automatically when you log in, so the sensor just works after a reboot. Do this once you're happy everything's running.
-
dashtouch uninstall-agent - Stops the helper from starting at login. It doesn't remove your fingerprints, your password, or anything else — it just stops it launching on its own.
-
dashtouch doctor - A quick check-up on the whole setup. Start here when something isn't working and you're not sure which part is at fault.
-
dashtouch password - Changes the password it types. No reflash needed, because the password lives in your Keychain rather than on the board. Use it whenever you change your Mac's password.
-
dashtouch pairing - Rotates the pairing key that your Mac and the board share. This one does need a reflash, since the key is compiled into the firmware. Worth doing if you think the key may have been exposed.
-
dashtouch pins--swap--normal - Checks or changes which pair of pins the sensor talks over. With no flag it reports the current orientation, which needs the helper to be running. Use
--swapif your board can't transmit on the default pad, or--normalto go back to the silkscreen orientation. Only the sensor wiring is affected — the USB link to your Mac never changes, so it's always safe to try. -
--serial<serial> - Works with any of the above. Targets a particular board by its serial number, which only matters if you've got more than one plugged in. Defaults to the board this copy was built for.
Something not working?
Run dashtouch doctor for a quick check-up, or read the troubleshooting notes, which walk through most common problems symptom by symptom. If the ring never turns purple at all, the sensor isn't talking — recheck all six wires.
Could it be wireless?
In theory, yes — the board has WiFi and Bluetooth LE, and pads on the underside for a battery. It'd have to type over Bluetooth rather than USB, since typing your password at the login screen is the whole point and that only works if your Mac sees a real keyboard. I haven't explored it, so consider it an open idea rather than a supported option.
Credits and contributions
Again: Dashboard Touch is an extensive refactoring of tinyTouch by Zimeng Xiong, which defined this entire approach, and it carries the same MIT license as the project that inspired it.
The protocol is documented in docs/protocol.md, and this is my first attempt at sharing any of the code I've made for a hardware project, so improvements, feedback, comments and pull requests are very welcome!
The full README has the complete build and troubleshooting details, and stays the canonical version.