Keyboard pass through or emulator to multiple machines.

Hi. I am looking into the feasibility of creating a device that can connect one keyboard/ or a device that can emulate commands to a rack of 40 servers and send the same keystrokes to all hosts simultaneously. I work in a data center on the build / deployment team of new gear and we often find ourselves changing bios or settings on hundreds of machines manually by logging into the bios with a good ole fashioned keyboard one at a time. We have all sorts of wonderful tools built buy our Dev-ops team and vendors but these usually require an OS to be installed on the host or its manufacturer which requires us networking up the hosts, installing an os or ramdisk os and executing commands. Often these changes we are making are needed to get the host to image (changing boot order, enabling added nics or setting them to pxe boot.) I posted a discussion on reddit's /r/servers and someone pointed out to me the Arduino Leonard, with the idea that I could daisy chain together 40 Leonard boards and issue commands across the 40 hosts.

We also use a teensie that one of our dev-ops guys put together that does what I'm talking about just one host at a time. We give the teensie commands to send over usb but often its almost easier just to use an actual keyboard since we are still doing this one machine at a time. Does anyone have any experience building anything like this? A bonus feature would be if we could also create a device that has 40 usb ports that have USB on the Go as from my understanding is these can be viewed as a mass storage device by the computer connecting to it? My understanding of USB is limited and I have a feeling this is the least viable feature I am looking for.

Requirements:
A 40 port usb device/ devices that will connect to servers
Preferably one keyboard that can pass through the commands to 40 machines
The 40 ports are USB on the Go or connected to a hub of additional 40 ports that are usb on the go.

Thanks in advance. My expertise is more on the sysadmin / network deployment side of things but I thought this might be a fun and challenging project to get into hardware more.

32U4 based Arduino to receive from keyboard, send the command to a bank of FTDI Basics to talk to all the devices?
Try it with one and see if it works.
FTDI Basic $6.90 or less from www.tinyosshop.com
40 will likely be a special order, last time I ordered 20 it took a while to arrive.

Thanks for the idea. Apologies in advance as I'm pretty green when it comes to this stuff. I've order 2 of the FTDI basics and doing some research with how to use serial connections on the Leonardo board I already have. Connecting one of these and communicating with it I think I understand. Ive found some good example code and projects doing that, I guess I'm having trouble understanding how I would connect multiple FTDI basics to my Leonardo. Do you know of any existing projects or resources I could look at? I have tried searching the forums and online but I'm having some trouble examples someone anything near that many serial connections to a board. Thanks Again!

I'm stumped too. How do the FTDI's communicate with a PC that has no OS or the drivers needed to talk to the FTDI? It is serial in one end (from the Leonardo), USB out the the other that talks to the driver - which installs itself as an emulated serial port. Without drivers, there is no native USB capability that I can find on the data sheet.

I can see the 40 Leonardo's working since they can generate keyboard output, like the teensy. Keyboard to Leonardo, serial out to 40 Leonardo serial ins (with needed drivers for fan-out) then Leonardo USB to the keyboard ports on the PC's. Heck, you could probably use NRF24L01's and do the whole shebang wireless.

Yeah I posted on reddit's /r/arduino and was told this won't work for my project that I need to use Pro Micros connected together instead of the FTDI breakouts, not sure what is the correct aproach. https://www.reddit.com/r/arduino/comments/6hgrv5/leonardo_and_ftdi_basic_breakout/

I haven't read this completely and it does possibly not exactly do what you intend, but maybe this is / can give you an idea

Arduino Project: Platform Independent Clipboard

Thanks for passing that project along. This is very similar to what I am trying to achieve. I am going to have to find some way of sending the output to multiple usb ports connected to a board but I think i'm getting closer to putting together a proof of concept of this device.

1 Like