Mobile Video Streaming: Building A Remote Control Panel For A Portable Video Streaming Box - The RobinPad Story

Robin Good
MasterNewMedia
Published in
17 min readJan 15, 2024

--

In the first part of 2007, I took my personal dive with live video streaming, and the Italian audience who has followed my non-stop reports from several of the largest barcamps held recently here in Italy has seen how much passion and interest I have taken this new communication challenge.

One of the nicest things to happen, thanks to my voluntary experimentation with live video streaming on www.RobinGood.TV, was the opportunity to meet some truly fantastic people, who, excited themselves by my new video discoveries have offered in many different ways their talent and skill to help me out.

Among these one has stood out the tests of time and has invested notable time and efforts to help me several dreams I had been playing with.

These included the ability to build a truly portable video streaming station, together with added peripherals and functionalities that would have helped me video stream hands-free from just about any place, Justin-style.

His name is Fabio “Blaxwan,” and he is a truly passionate technology inventor and experimenter, moved by the desire to play and learn from his own creations.

Not only has he helped me build an open backpack for my portable laptop that makes my mobile video streaming orders of magnitude easier and more comfortable than walking around like a fool with your laptop open, but, as he recounts in deep detail in this review, he has built a full remote control panel console integrating monitoring and control functions for the laptop working with its lid closed on my back.

Here are the details:

Intro by Robin Good

Photo credit: Tommaso Sorchiotti

The “RobinPad” Story

by Fabio “Blaxwan” Di Niro


1. Overview

Last April (2007), I was attending a barcamp; it was during a conference when I first met Robin Good.

I saw this funny man struggling with a laptop, webcam, radio microphone and lots of wires as he was live video streaming the OpenCamp.

Such a view had two effects: the first one was that I immediately started to think about ways to build something that would avoid having all those fastidious and uncomfortable wires and dongles.

The second effect was that I missed the conference speech.

Later on, I went back home and I was searching on the net for more info about this Good guy. I rapidly discovered that he was doing a really great job by giving the possibility to those who could not attend the barcamp to follow it live on their broadband-connected computers at home.

Then I thought I could have tried to help him out.

I sent him an email explaining what I thought we could do, and he just answered, “Hi Fabio, you’re the man I was waiting for a long time.” Then we started to have a lot of fun together experimenting with new and improbable mash-up devices.

This article describes the construction and evolution of the so-called “RobinPad”, or at least that’s what we called it.

It is, in fact, much more than a pad as it is a full remote control panel that greatly complements the mobile Robin Good video streaming backpack, allowing it to have video feedback and the ability to monitor and control all of the video streaming functions as it streams.

This unique, hand-made device was the first final tangible product generated by my active collaboration with Robin. He is a great guy who does a lot instead of talking. I like that. And I did have a great time building this rugged but functional device for his Robin Good TV.

2. Building a Custom USB Button Pad

When we first thought about a remote control panel for the Robin Good streaming backpack, we were trying to achieve at least some basic functionalities:

· Having a preview of the cam

· Having some information about the system, like connection status, available bandwidth, battery status, etc.

· Having the possibility to start and stop video streaming at will

To accomplish these goals, we needed a small, lightweight, portable LCD monitor and some panel buttons. Online, we saw that there were a lot of monitors in many different flavors, so this was not an issue.

On the other side, we had to find an input device that needed to be fit in a control panel next to the monitor itself.

We first thought about using USB numpads, but we discovered that these were too big. Then we went on to custom I/O cards (like a PIC-based one that communicates via RS-232), but this kind of communication would need more software development.

So I thought to buy a small joypad and just adapt it to our own specific needs.

Figure: the small joypad we used

So, for the first few times, Robin and I went streaming live with this joypad fastened to our trousers belt. We soon found out that this was definitively not so comfortable.

On the other hand, I soon realized that there existed a lot of software out there that could have taken great advantage, in different ways, of our standard and popular joypad.

This is when I I decided to take out and use just the electronics of the joypad in order to convert it into a simple box that could be more easily matched and installed next to the small LCD monitor.

I carefully unscrewed and opened the joypad to see how I could embed it into a smaller box.

Of course, these instructions cannot apply to all joypads because circuits and technologies may vary from brand to brand and also through different models. So what I’m writing here is just to give you a good basic idea of how I approached it.

Figure: inspection of the joypad circuits

Upon opening the joypad, I immediately noticed that the electronics of the unit were made by three circuit boards: a main one containing the core chip, a cabling one and a third one (the bigger) containing all the button contacts.

I decided then to get rid of the third one, saving some space, and to replace it with a custom circuit board holding my own custom buttons.

So, I measured the remaining boards to determine the size of the plastic box to buy.

Figure: measuring the circuit board

After some research, I found this plastic box shown in the picture below, which was actually a little bit smaller than the board it had to hold, but I thought that it was better to trim the board a little bit instead of using a bigger box (the bigger size was really cumbersome).

Together with it, I also bought ten board soldering buttons.

Figure: the plastic box and the buttons

At this point, I had to prepare the board on which to install our own custom buttons. Since there were no particular needs for circuit connections, I decided to use a prototyping board and wire it directly to the joypad's own circuit board.

I placed the buttons on the prototyping board and decided on its size, then I cut the board with the Dremel, and soldered the buttons.

Figure: buttons board preparation

Next, I needed to prepare and finalize the box. To do this, I stuck two paper tape stripes on it to ease the drawing of the drilling points.

Then, I drilled the holes for the buttons and used hot glue to place a small piece of wood inside the box between the two rows of buttons. That’s just for cosmetics.

In fact, this piece of wood is used to screw and hold the circuit board in place in order to avoid using any visible screws on the front panel.

Figure: box preparation

Now, I had to finalize the joypad circuit board. The first step was to remove the unused board and trim the used one (I just cut out the edge of the board where the two motors were soldered, as these were, luckily, useless parts).

Figure: joypad circuit board preparation

I soldered a common ground for some buttons, grouping them as I saw on the original button board of the joypad. Then, I used some colored wires to connect the custom button board to the joypad mainboard.

Figure: soldering the wires on the buttons circuit board

Finally, the last step was to connect my custom button board to the joypad one.

Figure: connecting the two boards

Please note that the joypad we bought was made to connect both to a PlayStation and a PC, so it also had a Playstation connector.

Since I disliked this additional useless connector, the very last step was opening the connector, cutting its wires, and insulating them with some tape so that the pad would have just one connector at its end.

Figure: cutting the PlayStation connector away

Here is a picture of the button pad, once completed:

Figure: DONE!!!

3. Building An Adjustable Remote Control Panel With a Holding Arm

Here, our goal was to create a device that would have helped to carry and see the remote control panel hands-free. The idea was to get the control panel to be visible to Robin as he was moving and streaming live.

We considered different solutions, like something to tie to the pants belt or to the backpack belt, but at the end of the game, we finally opted for a flexible arm coming out from the backpack itself (lately, we realized that this was uncomfortable as well).

With this kind of solution, the first step was to build a supporting plate that needed to hold the button pad and the monitor at the same level in front of Robin.

I decided to build this part by using some plastic and taking advantage of a PVC pipe, like the one utilized in sewage systems.

Happily, I had a brand new one, and I cut it and placed it in the oven at a temperature of about 130 C. After 8–10 minutes, it was so tender that I could easily take it out and hold it firmly by using two sheets of wood.

Then I prepared a base to properly bend the PVC sheet in order to give it the right shape for holding the buttonpad and the monitor.

Figure: the bending base
Figure: buttonpad and monitor fitting on the bending base

At this point, I cut a rectangular piece from the PVC sheet a little bit bigger than required (because I knew I couldn’t be so precise in bending it) and put it again in the oven for another 5–8 minutes at 130 C.

When the PVC was again soft enough, I took it, placed it on the base, and pressed it hard by utilizing some other plain-surface heavy objects for a few minutes, until it cooled down again.

Figure: bending the PVC rectangle

After some minutes the PVC piece was cold enough to continue to work on it.

Figure: the PVC properly bent

So I placed the monitor and button pad on it and first drew and then precisely trimmed the contours.

Figure: the PVC now has also the right shape
Figure: the plate now perfectly holds the monitor and buttonpad aligned

To build some rigidity in the flexible arm that would be holding the remote control panel (otherwise, the weight of the monitor and control panel would have it fall down) I decided to use some steel wires.

I gathered together several steel wires, gave them some shape, and hot-glued them on the bottom of the holding plate.

Then I inserted the wire bunch in a corrugated plastic pipe, and, on the other end, I just bent out the wires and hot-glued them in a larger pipe that may be easily screwed to something that I had to attach to the backpack.

Figure: building the flexible arm

The last step was preparing something that would hold the flexible arm, as we could not screw this to our belly. So we needed something where we could screw our artificial holding arm in.

To achieve this, I cut a thin piece of wood to the size of the Vaio notebook Robin Good carries in the open backpack. My idea was to basically pace this wooden platform between the Vaio and Robin’s back inside the backpack.

Figure: preparing the flexible arm holder

Work done! The “suspended” remote control panel device (of course, the elastic stripes were just a temporary solution; they were replaced by velcro stripes):

Figure: the console finished

4. First Evolution: Building a Case for the Backpack

After some further experimentation with the mobile Robin Good streaming station, we realized we wanted to improve things further.

The number of dongles, batteries, peripherals, cables, and connectors had grown to such an extent, especially after the adoption of the small tube camera Robin carried in its hat, that we badly needed to do something about simplifying and organizing all this stuff in a better way.

The new lipstick-sized camera in Robin’s hat had, in fact, only a composite video output, so we were forced to add a video-to-USB converter.

In addition to this, at this time, Robin opted for a smaller, higher performing, and longer-lasting VAIO notebook, but the new baby had, unfortunately, no composite video output (which we badly needed for powering the small portable monitor).

Here too, we were forced to add a VGA-to-composite video converter. There were just too many things hanging out of Robin’s open backpack.

This is why I decided that the best solution would have been to put all these things together inside a properly designed and compact box to place/attach an open backpack. This way I could integrate all the cables and simplify the use and the look and feel of the system.

Since I also wanted to have a nicely shaped box, I steered away from traditional rectangular boxes and went straight to a big bricolage shop to get some fresh ideas.

There, on the shelves where all the electric pipes are shown, I immediately found something interesting. I bought those two plastic shells you see here below.

These strange shells are traditionally used to bend into the wall of the plastic square pipes that are used to run wires alongside a wall. I don’t know if I gave you a good idea of what they really are for, but what matters is that they were perfect for our purpose.

Figure: the plastic shells I bought for the backpack box

Back home, I just resized the two shells and cut a matching shape in a thin sheet of wood in order to create a closing panel for them. I then painted in black both the base and the “shells”.

Figure: the two plastic shells are cut and then glued together and black-painted

Once I had the box completed, I started to drill some holes in it to screw the connectors and the switches. I assembled then all the circuitry soldering and all the other stuff. I finally used rubber bands to hold the set of batteries together to the converter to the box base.

Here are the results:

Figure: completing the box
Figure: testing the new box; on the side, you can also see the flexible arm

5. Building a Robin Good TV Light Sign

At this point, we thought we had some interesting gear in our hands and our desire was to share and advertise the fruit of our work so that people would notice Robin when he was doing live streaming.

But instead of using a simple printed sign, I wanted to build something that could have been switched on when the Robin Good mobile backpack was streaming.

I therefore decided to build a light sign with some Plexiglas and LEDs. Nothing fancy at all, as it was really simple to build one this way, and I had a lot of fun experimenting with those materials I wasn’t familiar with.

As a first step I cut a piece of Plexiglas (acrylic glass) and painted on it the sign lettering (Robin Good TV — On Net) by using a painting mask. This is, in fact was created using liquid latex that gets dry very fast and may be easily removed just by using the fingers.

Figure: the writing with the masking liquid

Then, I sprayed the whole front surface with black paint, and after the paint had dried, I removed the masking.

Figure: the writing with the masking liquid

The last step was carving into the sign the place through which to show the white LEDs that I had soldered in the back.

Figure: the writing with the masking liquid.

Work done!

Figure: RobinGood wearing our “creature”

6. How It All Works

For the “action” part on the remote control panel, the RobinPad runs a great scripting tool called Autohotkey. With it you may process user input and perform some actions like clicking somewhere in the screen.

This is essential because we’re using an internet streaming site to video stream (normally that is Ustream), which in turn requires a Flash encoder launched from the browser to run.

Due to this setup, we cannot switch to a custom encoding system, but I’m really confident that sooner or later, we will move to this kind of setup.

The basic idea of the button pad is to use the upper row of buttons for fixed and frequently used functions and to leave the lower row of buttons for general-purpose functions.

In the bottom row the buttons change their functions contextually and can perform therefore multiple tasks. In this way, we can utilize more functions than the number of buttons we have physically available (10).

The core buttons in the upper row perform these basic functions (from left to right):

⁣⁣
Menu

· Start streaming

· Lock/unlock the buttons (to avoid accidental press)

· Start recording

· Stop recording

Those in the lower row perform the functions shown in the following menu screens which can be cycled through by pressing the “Menu” button.

The first image here below is the Menu1, and the second and third images are the Menu2.

Figure: RobinPad’s Menu1, Menu2HSDPA and Menu2Wireless.

Later, I also added a splash screen that is shown when the system starts as well as a “locked” warning that is displayed when the pad is locked (through the central upper button). Obviously, I also added an “unlocked” message that is shown when the central upper button is pressed again:

Figure: RobinPad’s splash screen and warnings

For checking all functions inside the remote control panel monitor, we have devised ways in which Robin can see the actual controls and feedback indicators, including his video feedback, as they are displayed from Ustream and replicated at a lower resolution on its small monitor.

Next to streaming feedback controls, I have added for Robin a monitoring application called SysMetrix which further provides Robin with real-time numerical indications of its remaining laptop battery time, CPU temperature, and bandwidth in and out.

7. What Next?

Robin and I do realize that there are a million improvements we could still make to this setup. But this is the joy of building something yourself.

Starting from the reliability of the overall physical setup, which is not yet rock solid, to the need to adjust our customer control software as Ustream keeps changing and improving its own interface. In fact, the best would be writing real, dedicated software for this system.

But let me try to summarize here all of the improvements we already took into serious consideration and the general direction in which we want to move this project further.

⁣⁣⁣⁣
From a hardware point of view, it would be nice to:

· Prepare another plastic holding base for the monitor and the button pad without the “holding arm”. This way, Robin may decide alternatively between using the artificial holding arm or simply hiding the remote control panel inside his jacket without using a flexible support arm.

When he needs it, he can take it out of his pocket and use it. Yes, this deserves one hand.

· Put some Velcro on the remote control panel and on the backpack belt so that the remote control panel can be attached to the belt itself.

· Add support for a set of earphones so that Robin may have an audio feedback channel to be used for either talking to the audience or receiving indications from a possible control room through a VoIP Skype-like connection.

· Thinking about a mini-ITX motherboard to evolve the system in a really embedded and self-contained mobile streaming station (wow)

⁣⁣⁣
From a software point of view, it would be nice to:

· Find a piece of software that is able to play a mp3 file “into” the microphone input in order to have some music background streamed in the video (the internet streaming site is accepting audio just from one source at a time)

· Try to leave the internet streaming site or get rid anyway of the need to use the browser and Flash encoder.

Once this step is accomplished, we will go for a more reliable Linux system (and we don’t have to modify the SW to remap the mouse clicks every time the streaming site changes the Flash encoder)

· Write down the application for the Linux box, trying to keep all the functionalities we have now.

· Keep the whole software system as much modular as we can. The final goal is the creation of a setup where Robin can stream directly from the RobinPad (yes, adding video capture functions to it) or where he could stream to a main control room where his signal will be mixed up with the one of other reporters streaming from other locations or with the video of someone wanting to interact from home.

This is the end of the story for now.

We are continuously working to make new improvements to the RobinPad, and if you follow RobinGood.TV, you may be able to see Robin at work with it very soon.

N.B.: Beyond our desire to share how this was all done, your comments and suggestions are what me and Robin welcome the most. If you have ideas or critiques, do not hesitate to make your voice heard here below in the comments section.

Fabio Di Niro

Originally written by Fabio Di Niro for MasterNewMedia and first published on Tuesday, August 21, 2007, as, “Mobile Video Streaming: Building A Remote Control Panel For A Portable Video Streaming Box - The RobinPad Story”

Robin Good

--

--