summaryrefslogtreecommitdiffstats
path: root/content/posts/software-kvm-switch.rst
blob: 12996dee0d42044d4b2486b199166f0c116544eb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
A Software KVM Switch
#####################
:date: 2015-01-05 02:26
:tags: composite video,software keyboard,kvm,remote management

I have been so often in the need for quick graphical access to a server without
the need of an actual mouse and display plus wiring for power and so on.

In the enterprise world there are things called 'KVM switches' and laptops
which do exactly what i need but a) they are fucking expensive and b) they are
stationary and built into server racks so i came up with my own low-budget solution.

With this you will be able to see video output from composite,hdmi and vga and
control a virtual USB keyboard of a headless server or embedded system.

.. image:: /img/videograbber_on_raspi.jpg
    :width: 60%
    :alt: video and soft keyboard attached to raspi
    :align: center

I am using a 32u4 turned into a software keyboard and a Composite Video grabber to 
capture the output of the system to supervise.

*A fair Warning:* Be aware that the video image is very crappy and the software 
keyboard code is a WIP.

Parts list
----------
All you need are the following things:

For the soft keyboard input:

1. a 32u4 microcontroller like the `arduino pro micro`_ (`amazon US <http://www.amazon.com/dp/B00Q9YBEX8/?tag=krebsco-20>`__)
2. a cheap `USB-TTL adapter`_ (`amazon US <http://www.amazon.com/dp/B00F6PO9WY/?tag=krebsco-20>`__)(`aliexpress <http://s.click.aliexpress.com/klk/AIaqvjqVz>`__)

For capturing video:

1. a video grabber with the STK1160 chipset (for linux support)
   I asked the sellers on aliexpress and found `this videograbber`_ which uses
   the chipset needed. EDIT: it seems they are sold at amazon a `similar grabber`_
   (`amazon US <http://www.amazon.com/dp/B002H3BSCM/?tag=krebsco-20>`__) with the right chipset. 
   It is twice the price but it is in your inbox in 2 days.
2. a HDMI-to-AV_ (`amazon US <http://www.amazon.com/dp/B0092KN0AG/?tag=krebsco-20>`__)
   (`aliexpress <http://s.click.aliexpress.com/klk/fmMVfAeQJ>`__) and 
   optionally a  VGA-to-HDMI_ (`amazon US <http://www.amazon.com/dp/B00K3OP77Y/?tag=krebsco-20>`__)
   (`aliexpress <http://s.click.aliexpress.com/klk/qjEYZ3bEA>`__) box to capture
   output other than the one from a Raspberry Pi which has native composite output.


Setup
-----

**Soft Keyboard**

Attach the USB-TTL adapter to the 32u4 by connecting both GND , Pin 9 to the
USB-TTL TX and pin 10 to USB-TTL RX.

You can either plug it together with jumper wires or do a real cabeling from
the beginning:

.. image:: /img/before_after_softkeyboard.jpg
    :alt: before/after cleanup of usb-ttl to 32u4
    :width: 90%
    :align: center


Now it is time flash the passthrough firmware for the 32u4:

.. code-block:: bash
  
    git clone https://github.com/makefu/keyboard-passthrough.git
    cd keyboard-passthrough
    cat README.md
    arduino key_passthrough/key_passthrough.ino
    # flash it

Get the passthrough software running on your computer:

.. code-block:: bash

    pip install hg+http://bitbucket.org/pygame/pygame
    python here.py

**Video Grabbing**

The video capturing is very straight forward, attach the videograbber to the
fitting hole on the HDMI-to-Composite to capture HDMI video. Put the switch to
NTSC for best performance.

Optionally attach the vga-to-hdmi box to the hdmi-to-composite box to capture
VGA video.

On your computer, open VLC and configure it to start the NTSC video stream:

.. image:: /img/vlc_ntsc.png
    :alt: NTSC config of vlc
    :align: center


**By the Powers Combined...**

To make some real use of it, first start the **here.py** and then **vlc**. The
black window will stay in foreground and you can write into while you can see
the video of the device. And there you have it, your own low-budged software KVM 
you can actually carry around.

Conclusion
----------
This is the first prototype:

.. image:: /img/completed.jpg
    :width: 60%
    :alt: everything put together on a table
    :align: center
  
When you put everything on a table it sure is a huge mess, the next step for me
is to put it in a nice package and be happy with it. In the end there is only
one usb-cable going to the controlling computer and one USB and Monitor cable 
going to the computer to be controlled.

If you are looking for something more *polished* you can have a look at
the `Atrix Lapdock`_ (`amazon US <http://www.amazon.com/s/ref=nb_sb_noss?url=search-alias%3Daps&field-keywords=atrix+lapdock&tag=kebsco-21>`__). I got mine really cheap in clearance sale (60€) maybe
you are lucky too.

You will need a `microHDMI-to-HDMI Adapter`_ and USB-female-to-USB-Male_ cable. 
Once the adapters have arrived i will try to mod it into a Hardware KVM you can
carry around.

.. _arduino pro micro: http://www.amazon.de/dp/B00JMOEED4/?tag=krebsco-21
.. _USB-TTL adapter: http://www.amazon.de/dp/B008RF73CS/?tag=krebsco-21
.. _this videograbber: http://www.aliexpress.com/item/Free-Shipping-USB-2-0-video-card-capture-grabber-Adapter-of-chipset-STK1160-for-TV-VHS/1336539757.html
.. _similar grabber: http://www.amazon.de/dp/B002RX49AU/?tag=krebsco-21
.. _HDMI-to-AV: http://www.amazon.de/dp/B00O8RBZM8/?tag=krebsco-21
.. _VGA-to-HDMI: http://www.amazon.de/dp/B00LC48NJS/?tag=krebsco-21
.. _Atrix Lapdock: http://www.amazon.de/Motorola-A-860LAPDOCK-DE3A-Atrix-Netbook-Dock/dp/B004ZB8SYU
.. _microHDMI-to-HDMI Adapter:
.. _USB-female-to-USB-Male: