Jump to content
IGNORED

Geneve KVM switch


Recommended Posts

I have been toying around with the idea of making a dual port KVM for use with the Geneve to port video, audio, keyboard and mouse via an Arduino microcontroller.  This will allow as most of you know to be able to use one monitor, keyboard, mouse and speakers for 2 different Geneve computers.  I wanted to do this because I was tired of switching cables for keyboard, monitor, etc. when going between the 2.

 

I decided to work on it some today to see if I can get the video to port over without any issues switching between my personal Geneve and the Geneve that runs Heatwave.

 

So far, I have it working on a breadboard and using parts I had laying around.  I'm using some 5v relays to control the switching and it seems to work pretty well so far.  The code for the Arduino was pretty simple.  

 

Tomorrow I will be working on Keyboard, Mouse and Audio to do the same, I already have the code for it and it should work so I just need to wire it all up.

 

I'll be posting some pics later this weekend and maybe a video on my Youtube channel.

  • Like 9
Link to comment
Share on other sites

I worked a bit on the proof of concept, and I got it working.

 

So i did a quick render, but some of my 3D components did not work.  but here is a render of the prototype board.  I have ordered a few.

 

The board measures 9.5 inches x 4.65 inches.  My plan is to just use an acrylic top and bottom with standoffs mounted to keep it covered but having the button easily accessible.

 

The Geneve KVM features are:

  • Controlled by an Arduino Nano
    • Firmware can be updated if needed.
  • Uses 8 channel relay to control between NO and NC for 2 different Geneve systems
  • Dual KVM + Audio switching
  • 2 Geneve computers can be accessed with one Keyboard, Monitor, Mouse and Speakers
  • Routing for audio can be internal or external speakers
  • built in Sync Separator circuit
  • Enable or Disable switch for providing Power to the SCART to enable RGB mode
  • Also has a Geneve out for hooking up geneves to RGB monitors other than SCART
  • Routes composite signal as well
  • Dual LEDs to show which system is active
  • one button to cycle between each system

2023-01-22_23-39-58.thumb.png.4839ebbbb976c67ece84321bd67bfd4c.png

Edited by Shift838
  • Like 4
Link to comment
Share on other sites

You could skip the relay board if you want. I've made my own relay driver by having the Arduino signal pin control an npn transistor much like this circuit here: https://www.petervis.com/Raspberry_PI/Driving_LEDs_with_CMOS_and_TTL_Outputs/Driving_an_LED_Using_Transistors.html

 

The 'buffer' in the first schematic on that page would be the Arduino control pin. The relay would go in place of the LED. The resistor inline with the relay would likely need to be increased - you could copy from the example relay board, the relay part number and inline resistor value.

 

Would likely lower cost and make the design more future friendly.

  • Like 3
Link to comment
Share on other sites

4 hours ago, InsaneMultitasker said:

Looks great, there are so many times I could have used one of these! :)

 

Is the keyboard always powered by the kvm?

Are you sensing presence via the Geneve's keyboard 5v output? 

I'm also curious how the relay will handle isolating all of the inputs/outputs with 'only' 8 channels.

 

 

Keyboards power is only powered by the relay.  If the keyboard is not powered then of course no data is transmitted to the geneve.  I do have the clock and data lines always connected, but it switches between the keyboard +5v for the relay.

I control the mouse the same way.  For the RGBS, Composite and Audio signal they have their own relays that control between the 2, that is why I can get away with only 8 relays.

 

clear as mud?

 

 

Link to comment
Share on other sites

4 hours ago, jedimatt42 said:

You could skip the relay board if you want. I've made my own relay driver by having the Arduino signal pin control an npn transistor much like this circuit here: https://www.petervis.com/Raspberry_PI/Driving_LEDs_with_CMOS_and_TTL_Outputs/Driving_an_LED_Using_Transistors.html

 

The 'buffer' in the first schematic on that page would be the Arduino control pin. The relay would go in place of the LED. The resistor inline with the relay would likely need to be increased - you could copy from the example relay board, the relay part number and inline resistor value.

 

Would likely lower cost and make the design more future friendly.

i definitely like this idea.  My only thought is figuring out the correct resistor value for being able to use a NPN to engage the 5v for the Keyboard and the mouse.  After more thought, maybe since I am routing the 5v lines for the Mouse and Keyboard I might be able to use TIP120 NPN.

 

 

Edited by Shift838
Link to comment
Share on other sites

1 hour ago, Shift838 said:

Keyboards power is only powered by the relay.  If the keyboard is not powered then of course no data is transmitted to the geneve.  I do have the clock and data lines always connected, but it switches between the keyboard +5v for the relay.

I control the mouse the same way.  For the RGBS, Composite and Audio signal they have their own relays that control between the 2, that is why I can get away with only 8 relays.

 

clear as mud?

 

 

Maybe, not sure. RGB/composite/audio makes sense to me.  Without full isolation, wouldn't the KVM mouse and keyboard try to drive both cards simultaneously?   I'm probably overthinking this and now your trailing question has me wanting a slice of mud pie... so I'll re-read this later tonight.

Link to comment
Share on other sites

Hi!

 

Cool project. I will definitely be interested in a KVM--I'm sharing my one good monitor for my workbench and Geneve. (SCART Genie there.) 


I studied a few TI video chips which are designed for KVM and such applications. You might be interested to check this out:

 

TS3V330 is the simplest. For $1, it provides 4 analog switches in a DIP-16.  Advertised BW=300 MHz with negligible gain or phase shift measured at 3.579 MHz. 

Suitable for RGB and composite. 
 

I don't see anything about switching speed--this is a KVM type switch--but TI has other $$! switches for pixel-accurate switching (as used in titling for instance.) 

 


https://www.ti.com/product/TS3V330

 


 

 

Link to comment
Share on other sites

9 hours ago, jedimatt42 said:

You could skip the relay board if you want. I've made my own relay driver by having the Arduino signal pin control an npn transistor much like this circuit here: https://www.petervis.com/Raspberry_PI/Driving_LEDs_with_CMOS_and_TTL_Outputs/Driving_an_LED_Using_Transistors.html

 

The 'buffer' in the first schematic on that page would be the Arduino control pin. The relay would go in place of the LED. The resistor inline with the relay would likely need to be increased - you could copy from the example relay board, the relay part number and inline resistor value.

 

Would likely lower cost and make the design more future friendly.

one of the reasons I chose the 8 channel relay board, was the price point was $10.00 and it already had all the circuitry, i just need to open and close the relays base done the button press.  Has the reverse voltage protection and all.

 

 

Link to comment
Share on other sites

I would really like to have all the inputs and outputs on the back side of the KVM but to do so it would create a board almost 14 inches long.  

 

What would some users preferences be?  all inputs and outputs on the back of the KVM or as long as they are grouped on back and sides?

 

 

Link to comment
Share on other sites

On 1/23/2023 at 10:29 AM, jedimatt42 said:

You could skip the relay board if you want. I've made my own relay driver by having the Arduino signal pin control an npn transistor much like this circuit here: https://www.petervis.com/Raspberry_PI/Driving_LEDs_with_CMOS_and_TTL_Outputs/Driving_an_LED_Using_Transistors.html

 

The 'buffer' in the first schematic on that page would be the Arduino control pin. The relay would go in place of the LED. The resistor inline with the relay would likely need to be increased - you could copy from the example relay board, the relay part number and inline resistor value.

 

Would likely lower cost and make the design more future friendly.

I put together a quick breadboard using a Transistor to switch the lines.

 

Lots of interference, I'm betting it's because of the 1k resistor that has to be there between the arduino pin and the base of the transistor.

 

Unless there is a way to filter it out.  I don't see an option to use this method.  It works great, when using it to power LEDs, fans, etc.  But to just try to pass a signal like Red, Green, Blue and CSYNC it does not appear to work.  The picture  is wavy and rolls on the monitor, colors are not accurate.  I have tried multiple resistor values, but all produce the same issue, or if the resistor is too low then I get nothing on the screen.

 

See a quick diagram of the signals of how they are laid out.

 

I do have another set of 4 for the other Geneve, with 2 buttons that I can select between each of the Geneve PCs.  Pressing one button forces the RGBS pins to go low on the other geneve whle bringing the selected Geneve pins to the arduino HIGH to display the picture.

 

The code works as expected but the picture is unusable.  Take a look at my diagram and let me know if I have hooked anything up wrong, it's the first time I have tried to use a transistor this way in one of my designs.

 

2023-01-25_23-29-57.thumb.png.85a1299e0f1fb7579e40fcf0b1e4fabb.png

 

Link to comment
Share on other sites

6 hours ago, jedimatt42 said:

My suggestion was to drive the relays with the transistors. The power from the transistor would hold the relay open or closed, and then the switched signal is on the isolated side of the relay.

ahh.  that's what I did with my second render I posted. Using this schematic for each relay but changing the signals of course.

 

2023-01-26_7-52-00.png.ff9107913dcf46ecee4fdee8312f8dc6.png

Link to comment
Share on other sites

So 4 relays switch the rgb-cs signals between 2 geneves. 

 

It sounded like the power to the keyboard comes from Geneves 1 or 2, and the keyboard data is always connected to both Geneves. Doesn't that mean that the keyboard will always be powered and the data will interfere?

 

I would expect to let the power to the singular mouse and keyboard come from this device. And the relays switch the data lines from them to the pair of Geneves.

 

You have 4 relays for keyboard and mouse. Are you switching power and ground on them then? Did that work? Or are you switching their data within the microcontroller? Maybe I misread something...

Link to comment
Share on other sites

4 minutes ago, jedimatt42 said:

So 4 relays switch the rgb-cs signals between 2 geneves. 

 

It sounded like the power to the keyboard comes from Geneves 1 or 2, and the keyboard data is always connected to both Geneves. Doesn't that mean that the keyboard will always be powered and the data will interfere?

 

I would expect to let the power to the singular mouse and keyboard come from this device. And the relays switch the data lines from them to the pair of Geneves.

 

You have 4 relays for keyboard and mouse. Are you switching power and ground on them then? Did that work? Or are you switching their data within the microcontroller? Maybe I misread something...

so the way I am doing it for the keyboard and mouse, is for the keyboard the all pins are connected from both keyboards except for 5v.   The relay controls the 5v line to connect it to the Geneve currently disabled, same for the mouse.

The microcontroller is only enableing the relays to complete the 5v connection to the keyboard of the geneve.

 

Link to comment
Share on other sites

11 hours ago, Shift838 said:

so the way I am doing it for the keyboard and mouse, is for the keyboard the all pins are connected from both keyboards except for 5v.   The relay controls the 5v line to connect it to the Geneve currently disabled, same for the mouse.

The microcontroller is only enableing the relays to complete the 5v connection to the keyboard of the geneve.

 

I would not expect that to be effective. I imagine you will have to have only one Geneve powered on at a time, or both Geneves would receive the data signals from the keyboard ( and mouse ).

If that does work, I'd like to understand why...

Link to comment
Share on other sites

14 hours ago, jedimatt42 said:

I would not expect that to be effective. I imagine you will have to have only one Geneve powered on at a time, or both Geneves would receive the data signals from the keyboard ( and mouse ).

If that does work, I'd like to understand why...

I maybe it was because I tested with a USB keyboard and my USB Keyboard adapter gets its power from the selected 9640.  Let me pull out my original Geneve keyboard and test.

 

If that is the case that they both receive keystrokes even though only one Geneve is selected, then it would require more relays or maybe go to a video IC switch solution completely, which I am currently looking at anyway.  Just waiting on parts to proof it out.

 

Edited by Shift838
  • Like 1
Link to comment
Share on other sites

I would think the +5v on the keyboards could be bound with power diodes between the common keyboard and the 2 geneves. But then you could switch the single XT keyboard CLK signal between the 2 Geneves. If I recall correctly, the XT protocol is unidirectional where the keyboard clocks bits into the XT keyboard host. If only one geneve gets the clock signal, then it should be the only one that consumes the data signals. 

 

I don't know the mouse protocol... but if data is clocked out from the mouse itself, the same technique may apply.

 

 

Link to comment
Share on other sites

I would imagine there is a use case to mix the audio instead of switch it... Aren't most of the people running 2 Geneve's running one as a BBS where you want to still hear the sysop pager while you've got the screen and controls switched over to the developer Geneve? IDK... do Geneve BBS's have a sysop pager? 

 

Anyway, my point is it is a super-bespoke device that might as well be opinionated about the use case, whichever it is.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...