Midbar (Teensy 4.1 Version): Advanced, Teensy 4.1 - based, open-source data vault.


Greetings, everyone.
Allow me to introduce you to Midbar (Teensy 4.1 Version).
Midbar is a data vault that can also function as a data encrypter/decrypter. You can use it to securely store your login credentials, credit cards, notes, and phone numbers.
Midbar utilizes The "3DES + AES + Blowfish + Serpent" encryption algorithm in cipher block chaining mode to encrypt your valuable data. It can also detect forged and spoiled records by using the HMAC-SHA256 to verify the integrity of the record.
In addition to that, you can use one of the seven available encryption algorithms to easily encrypt a string of up to 10 000 characters without any problems.
You can interact with Midbar by using the USB keyboard or the rotary encoder and two buttons.

To assemble a Midbar, you gonna need these components:
  • Teensy 4.1 x1
  • 2.4 Inch TFT LCD with ILI9341 x1
  • USB Keyboard x1
  • USB 2.0 Port (I took it from the panel expansion bracket) x1
  • Micro SD Card x1
  • EC11 Rotary Encoder x1
  • 4.7k resistors x7
  • 100nf capacitors x2
  • Buttons x2

If you're interested in this project, you can read the tutorials about it on:
Instructables: https://www.instructables.com/Midbar-Teensy-41-Version/
Hackster: https://www.hackster.io/northstrix/midbar-teensy-4-1-version-a030ae
Medium: https://medium.com/@Northstrix/midbar-teensy-4-1-version-f222f9cd3958

I hope you find this device handy.
Best regards,
Maxim Bortnikov


  • IMG_20230626_161557.jpg
    173.4 KB · Views: 55
  • IMG_20230626_163314.jpg
    160.8 KB · Views: 46
  • IMG_20230626_170102.jpg
    161.4 KB · Views: 40
  • IMG_20230626_170924.jpg
    228.8 KB · Views: 39
  • IMG_20230626_163538.jpg
    172.2 KB · Views: 40
Nice work.
"B" button not used much? Is it always the same as keyboard "Esc"? Or multi tap on encoder?
Used adafruit display driver instead of the PJRC included version?
Doesn't seem the USB device built to include 'Keyboard'? It could then 'type' passwords or text to the computer.
With QSPI Flash soldered the some could be kept there with LittleFS.
The "B" button is used as a back button when you're in the menu.
But if you're entering a text in a tab, then five successive clicks on the encoder button serve as the "Esc" button, and the "B" button works as a backspace.
As for the display library, I wasn't able to make my display work with the PJRC's library. Maybe it's because it doesn't have an "SDO" pin. At first, I used the TFT_eSPI library, but when I included the library to work with the USB port, these two started conflicting, so I replaced the TFT_eSPI with the Adafruit library.
I've tried to use the Teensy as a USB keyboard, didn't really work out well. I'm still figuring out how to do it properly.
I've tried to save the encrypted records on the flash chip - the Midbar V4.0 (https://www.instructables.com/Midbar-V40/) is a good example of that. But I decided to abandon this idea because it is difficult to back up and restore the data onto the flash chip. Using an SD card to store encrypted records has its advantages. It's not just easy to make backups. You can also store as many records as there is space on the card.
Scanned with a few things and saw "B" once in text - didn't read UI context.

Odd there was a conflict with PJRC's ILI9341 - ...
Would be handy having USB connected Teensy able to send over keyboard data.
Was the FLASH save on the included program Flash or a QSPI chip? If saved as LittleFS files there is a way to copy to/from SD - could even pass through code/decode IIRC - can't find the example ... moving to a new computer.
There was no conflict between the "ILI9341_t3" and the "USBHost_t36" libraries. I didn't get a chance to use them together.
I failed to make the display work with the PJRC ILI9341_t3 library.
It's the "TFT_eSPI" library that conflicts with the "USBHost_t36" library.
As for the flash chips, I used to make Midbar store the data on the ESP32 and Raspberry Pi Pico built-in flash. ESP32 utilized SPIFFS, and RPI utilized LittleFS.
And by the way, I like the idea of storing the data on a flash chip and then exporting it to an SD card and importing it back when needed.
I might actually implement it in the future. Thank you for that suggestion.