Hardware, Handheld Password Manager

I am currently working on a hardware project that will utilize the native USB and keyboard emulation capabilities of the Teensy device. Essentially, the user will store an encrypted password database on a mounted SD card that the Teensy will read and send to the host computer. This prevents the requirement of storing passwords in browsers, or certain managers.

However, I’m having a very hard time finding a secure way of encrypting it.

As of right now, I’m using the SHA256 hash value of the pin code as the AES-256 key.

  1. Pin Code – I am currently using a 4×4 matrix keypad to allow the user to enter a pin code immediately after the device boots up. The available pins for the passcode are (14 characters): 0 1 2 3 4 5 6 7 8 9 A B C D This limited keyspace means that passwords need to be much longer in order to maintain the same amount of security. Otherwise, this is my favorite option. It also allows me to use the keypad for navigation. Adding a salt would better, but exhausting the entire keyspace is very fast.

  2. Fingerprint – This is a neat idea that could potentially be leveraged to allow different users to share a single hardware device. However, this doesn’t aid in encryption. I don’t know of any implementation of a symmetric encryption algorithm using a fingerprint, or a direct derivative thereof, as a key.

  3. YubiKey – This isn’t necessarily a bad option, as it would provide a secure way of handling encryption/decryption of such devices, but that means it requires additional hardware for users. Also, I actually planned on implementing the Yubikey emulation library so the device could, itself, be used as a YubiKey.

Is there a feasible way? Or is this project flawed from the start?

Hardware device not detecting on Windows 7 – detects only on reboot

I am trying to connect a data connector (USB like hardware device to connect internet), but it not detecting the device, I have installed the device driver software came with the device.

Issues is that its detecting only on Computer reboot, while device should already be connected.

If I unplug the device and connect again, its not detecting hardware.

So any time I need to connect to the device, I need to shut down my system, connect device and start it again.

I have tried to uninstall Device driver and reinstalled it but the problem is not yet resolved. I am using Windows 7 OS.

What actually happens when installing hardware drivers from a CD in Windows?

I am curious as to what happens in Windows in the background when you install device drivers from a CD for a particular piece of I/O. My assumptions is that the only things that can be happening are transferring files to the drive form the CD, altering registry keys, and maybe changing some environment variables.

Is that all that happens in the background? How exactly does the OS gain the ability to communicate to a device? When I was young I used to think there was a fundamental difference between installing a program/driver from a CD and just inserting a CD and copying over files to specific directories, but now I’m not so sure there is any difference.

My questions arose because of my background in automated test equipment. I was trying to develop a conceptual framework of understanding that when you connect a measurement instrument to a windows machine over GPIB or whatever, that you must install both hardware level drivers so that the OS can communicate with the device, but then you also install software drivers (API? libraries?) that you then use as part of a larger software package to compile a .dll that can be called programmatically to control the instrument. That got me wondering what is really the difference between installing the hardware-level driver for the OS, and installing software libraries for your automated test programs to use.

Are any of my assumptions and understanding just fundamentally wrong?

Ubuntu 18.04 lags and hangs even with powerful hardware

I’ve got Core i5 3.30GHz / 10GB RAM / AMD Radeon RX 460 graphics card hardware that lags like mad, but it only lags with Ubuntu 18.04. I installed the vendor drivers from AMD, but it didn’t help.

Ubuntu 18.04 lags all the time on this machine. It happens when I start typing, when I open a new window, or when I install an application. Is it something related to the CPU? And no, this is not a GNOME memory leak, since I have 10GB RAM free and 2GB swap.

I’ve been using Debian, OpenSUSE and Ubuntu 18.04 MATE for a whole year, but whenever I try to test Ubuntu 18.04 it gets stuck and it lags.

Is there a software alternative to hardware keyboard macros? [on hold]

I am building a flight simulator set up with tons of shortcuts. I want a software solution that would help me design a control panel, with each button bound to a specific keyboard shortcut. Something like what this physical keyboard (Infinitton) does, but with software. The idea is to have a touch-optimized interface (preferably of my own design) on a separate touchscreen monitor. I have looked up AutoHotkey, but it seems too complicated.

Thanks in advanced for the help.

FFMPEG: hardware acceleration for libvpx

I tried to encode mp4 4K with H.264 format to webm format using ffmpeg libvpx, I need to convert them to multi resolution 1080p – 144p.
I was run following command :

ffmpeg -i  source-4K.h264.mp4  -c:v libvpx-vp9 -s hd720 -b:v 1500k -keyint_min 150 -g 150 -tile-columns 4 -frame-parallel 1 -an -f webm -dash 1 out-hd720.webm

and I found that video from 360p and above are slowly processed, so I am thinking to use nvidia card (P4 card on Google Cloud) to accelerate the process. but I haven’t found any articles / resources nor command to do video encoding using libvpx with hardware acceleration.

Machine Learning hardware usage in embedded applications

I’ve been reading a lot about hardware development and implementation for AI/ML, mainly about Deep Learning, and I have a question about its usage.
From what I understand, there are 2 stages for DL: first is training and second is inference. The first is often done on GPUs because of their massive parallelism capabilities among other things, and inference, while can be done on GPUs, it’s not used that much, because of power usage, and because the data presented while inferring are much less so the full capabilities of GPUs won’t be much needed. Instead FPGAs and CPUs are often used for that.

My understanding also is that a complete DL system will have both, a training system and an inferring system.

My question is that: are both systems required on the same application? Let’s assume an autonomous car or an application where visual and image recognition is done, will it have both training system to be trained and an inference system to execute? Or it has only the inference system and will communicate with a distant system which is already trained and has built a database?

Also, if the application has both systems, will it have a big enough memory to store the training data? Given that it can be a small system and memory is ultimately limited.

Is there a software alternative to hardware keyboard macros?

I am building a flight simulator set up with tons of shortcuts. I want a software solution that would help me design a control panel, with each button bound to a specific keyboard shortcut. Something like what this physical keyboard (Infinitton) does, but with software. The idea is to have a touch-optimized interface (preferably of my own design) on a separate touchscreen monitor. I have looked up AutoHotkey, but it seems too complicated.

Thanks in advanced for the help.