Introduction: The PinTin Nano - Your Edison-Based Password Keeper


I'm Daniel, a professional software developer. This is my very first instructable, and I'm über-excited. I hope you'll like. :)

With this instructable, I try to solve a problem everyone has: Passwords. Accounts. Logins. All the stuff you need to get into your favourite social media site, shopping site, blog or forum (they still exist, huh?). Now, there are several ways to control your accounts:

  • Use always the same credentials: No. Never ever do that. Seriously. If your account gets hacked on one site, chance is that the hacker(s) will try the credentials on other, popular sites also. Don't underestimate them. They are smart. Criminals, but smart.
  • Use a software on every device: You can do that. And if you are lucky, this software will run forever on this device. But maybe, at some point, you will get rid of the devices. Uh-oh...
  • Write them down: Yepp. You can do that. But - everyone who finds your book will be able to read your passwords. That wouldn't be that great, right?

To solve all of this, I created a device called "The PinTin Nano". It has it's name from the fact that it's a) pretty small and b) fits in a mint tin. I love that, because that makes the device easy to carry around.

Step 1: The Shopping List

First, you will need to go shopping. And yes, this one is going to be expensive, sorry...

  • Intel Edison
  • A base board (any board will do which allows you to activate WiFi on the Edison, so normally a board with a console port)
  • The OLED block from Sparkfun
  • The Battery block from Sparkfun
  • A Hardware pack from Sparkfun
  • A small lipo battery (depending on your tin)
  • A mint tin (important!)
  • Micro USB-cable

Roughly calculated, you will be at around 120 USD for all of this, so this is quite a lot.

A word of wisdom in terms of the hardware pack: Some dealers still have the pack with the long screws around. Make sure you get the right, as they wouldn't fit that great otherwise.

The tin I'm using has the size of 7 cm x 6 cm x 2 cm (roughly). Depending on the tin you are using, you can alter the lipo battery you are using. I had to go with a smaller one, because the large one won't fit.

Ok - ready? You've got everthing? Perfect. Let's continue!

Step 2: Assemble Everything

To continue working on the project, you'll need to assemble everything. This is pretty straight forward:

For starters, you will need to attach the Edison to a base board or similar. After you've done everything to connect it via ssh, you can disconnect it from the base board, and attach it directly to the Battery Board.

If you want to put it into the tin that I'm using, you will need a different type of battery, a smaller one. Replacing the battery is pretty easy though, as you can see in the pictures.

Step 3: Prepare the Edison

Well, this step has been covered by quite a lot of instructables so far, so I won't repeat everything here., just the tricky stuff.

For the initial setup, you can head over to Sparkfun, as they have a really, really great tutorial on how to get everthing to work:

You can also do the Arduino-related parts, just for testing purpose. We don't need any Arduino IDE here. As you can see in the screenshot, I'm running the pong sample on the device. This also tests the oled.

The tricky parts are related to the configuration of the edison. Sometimes, you'll have the problem that it won' connect to your wifi. This is related to the USB ethernet interface using the same subnet as the wifi, so they collide.

Solution is provided in this thread , so make sure to check that one out. Furthermore, make sure that you gave the Edison a root password during the initial setup, otherwise you won't be able to connect to wifi automatically.

Step 4: Install Mono

This one is a little bit more advanced, but I'm sure you'll make it. C'mon, you've come this far!

After you updated the Edison to the latest image, open your terminal and run vi with this command:

vi /etc/opkg/base-feeds.conf

Now, insert the following lines:

src/gz all
src/gz edison
src/gz core2-32

Cool. Now save everything, and run

opkg update

Finally, install mono:

opkg install mono

We're done!

Step 5: Get the Program

This one should be easy for you, after completing all the steps before. Simply download the latest release from the PinTinNano repository:

Extract that in your user folder. Now, if everything worked fine, you should be able to run:

mono PinTinNano.exe

in the folder you just created. It shoud greet you with a nice "Hi :)"

Cool! Now, you should be ready for the final step.

Step 6: Excurse: the Code

If you are not that into coding, you can skip this paragraph, as I will provide some insides on the codebase.

The PinTin Nano has been written in C# with reusability in mind. I can "unplug" the core of the program (encryption routine and database), and put that e.g. in a WPF program on Windows. This gives a lot of flexibility.

Furthermore, to work with the c++ oled library, I created a c wrapper dll, which I can call via PInvoke from C#. This is a pretty cool experience.

Btw, these are the following libraries I use in the PinTinNano: (GPL) (MIT X11 Adaption)

To be on the safe side, I've put the PinTinNano under a GPL license, because of the GPL nature of the OLED-libraries from Sparkfun.

Step 7: Using It

As requested in the comments, I'll give you a little walkthrough the user interface. If you are more the cinema guy, make sure you check out the video!

Starting and Logging In

After starting the program, you will be greeted with "Hi :)". I was very, very creative at that moment. Well...

You will then have to enter a password (either a new one, if you start the program for the first time, or your well established one). Selection of the letters is "NES-style", so you use the joystick to navigate through the alphabet. Using the buttons on the right, you can switch between small letters, capital letters and numbers/special chars. If you want to save everything, just move the cursor to the "y" in the lower right corner, and press on the white joystick (I will call that action SELECT in the next paragraphs).

Once you confirmed the "Loaded." with SELECT, a menu will show up, which allows you to view a list of your current passwordentries, and to add new ones. The other options can be considered as "Under Construction" ;)

View an Entry

Once you press SELECT again while on the "LIST" item, you will enter the list of all you password entries. Pagination is done via the buttons on the right: The lower button will move one page forward, the upper one page back. You can leave this list by pressing the joystick to the right.

While you are on an entry, press again SELECT. You then have the option to paginate through the entry by using the buttons on the right. You will see (in this order): Uri => Username => Password => Note. Again, leave this screen by pressing LEFT on the joystick.

Adding a New Entry

Now, you might want to add a new entry. That's really easy. Move the cursor to "New" and SELECT the entry. You will then see a screen with the heading "title", and the same input interface you already know from the password dialog. Enter your favourite title. At the moment, this should not be longer then 9 characters, but this will be fixed quite soon. It's just - well, pre-release. After confirming the entry, a next screen will show up, asking for the "Uri". Repeat the same procedure for this, and afterwards for "Username", "Password" and "Note". After the last screen, the data will be stored and when everything is done, you will see a "Stored!" message that you will need to confirm with "OK".

Step 8: Autostart! Awesome!

We'll add the PinTinNano.exe to /etc/init.d, so that it runs after the system booted. You won't then need to login to start the PinTinNano interface, so you can just power it up.

It's actually pretty simple. cd into etc:

root@PinTin:~# cd /etc/

Then, create the folder init.d, if it doesn't already exist, and cd into it:

root@PinTin:/etc# mkdir init.d
root@PinTin:/etc# cd init.d/

Using your favorite text editor, you create a file called Then simply put this content into the file:

root@PinTin:/etc/init.d# vi
root@PinTin:/etc/init.d# cat


mono /home/root/pintinnano/PinTinNano.exe

This assumes, that you extracted everything in your home (aka root) folder. Now, make everything executable:

root@PinTin:/etc/init.d# chmod +x /

Now you can check if it already runs. :)

root@PinTin:/etc/init.d# ./

If it does, you can perform a update-rc.d:

root@PinTin:/etc/init.d# update-rc.d defaults

Finally, perform a reboot and see, if everything works as expected. You're done! (phew...)

Step 9: Conclusion


We are done here. And of course, we are not. (huh?)

As I already mentioned in the video, I will continue to work on the PinTin Nano as often as I can. I'm really eager to get the part with the web interface started. Furthermore, such essential features as deleting an entry will be added really, really soon.

Also, I would like to tweak the tin a bit, so it can house the edison a lot better, and I don't have to take things out.

Just a small hint - the software is in a pre-release state, so things might change. And break.

Anyway, I hope you liked my first instructable. I had a fun time doing the instructable, creating the video and doing the photos. I will definitely do it again. :)



SkyGuardian42 made it! (author)2015-11-08

It looks like this is a really useful and fun Project, but it is also very expensive. I thought about removing the WiFi part, using a Teensy as a Keyboard and a cheaper LCD Display with a simpler 2 button layout. Great Idea, Grüße aus Deutschland ;)

DanielGilbert made it! (author)DanielGilbert2015-11-08


Good idea. I had the same before, but have choosen the Edison because I could reuse the codebase on other .net/mono-able systems.

However. a Teensy might be a good alternative, as it has a 32bit cpu. But keep in mind that you may need a little more power for the encryption than a Teensy has to offer.

Grüße zurück. ;)

JamesR95 made it! (author)2015-10-30

I love this! I wonder if I can make the whole thing fit into an old NES controller I have laying around (same number of buttons after all). Thanks for this awesome idea!

DanielGilbert made it! (author)DanielGilbert2015-11-01

Hi James,

great idea! Would love to see it that way. I guess, if using a NES controller as housing, you could also switch to a larger OLED. You could connect that via a SPI or I2C block. Really looking forward to the end result. :)

ramithuh made it! (author)2015-10-24

wow, the 1st I'ble & it's really awesome!

Rana Qamar made it! (author)2015-10-23


inventordragon12 made it! (author)2015-10-23

I am only 13 but I'm going to save up to make this and use it all my life

DanielGilbert made it! (author)DanielGilbert2015-10-23

I'm speechless and flattered. This is the greatest comment I've received so far. If I could, I would gift you one. Thanks a lot! Encourages me to make it even more perfect.

OptimumAlliance made it! (author)2015-10-22

Awesome project! Well done man

DanielGilbert made it! (author)DanielGilbert2015-10-23

Thank you very much! :)

MarcelGabor made it! (author)2015-10-22

Great intel edison stuff! I vote for it!

DanielGilbert made it! (author)DanielGilbert2015-10-22

Thanks! :)

thijsv made it! (author)2015-10-22

nice intel edison project. Great how you fitted this kind of complex project into a mint tin can.

one small remark: I had to watch the video to see how it works when ready. So I suggest you add some screenshots of the project in use as well to the Instructable, I think it will make the Ible a lot better.

DanielGilbert made it! (author)DanielGilbert2015-10-22

Hey - I've updated the instructable. It now shows some more insights from the usage of the PinTin Nano. Hope you like it. :)

thijsv made it! (author)thijsv2015-10-22

wow, made it a lot better. You defenitly have my vote in the IoT competition!

DanielGilbert made it! (author)DanielGilbert2015-10-22

Aaaw, thank you! :)

DanielGilbert made it! (author)DanielGilbert2015-10-22

Thanks for the kind words. :)

Yes, I will rework the instructable this evening (CEST), and will add some more screenshots, photos and texts. Thanks for the feedback! :)