Add an HDMI input interface to your Raspberry Pi and record or stream high quality video from your HD camcorder with clean HDMI output Read more
This project's funding goal was
About this project
I like to thank all the backers, which wanted to help me, to get this project off the ground. But I am very sorry to inform you, that I have to stop this project for technical reasons which are beyond my scope of influence. This is sad, as I have invested already quite a bit of time and money. My motto is: "if you try, you can fail, but if you do not try, you have failed already". I guess, here I have at least tried.
Why it is not possibly to feed uncompressed HDMI video into the Raspberry Pi?
After I have started this project it was brought to my attention, that the Broadcom BCM2835 processor is only designed to take the video input from an image sensor as used on the camera board. The integrated video processor in the BCM2835 performs video processing functions specifically for these type of sensors, so it creates a clean video. The HDMI input chip already creates a clean video. As the video processing for the camera cannot be disabled at this time, a clean video cannot be interfaced to the serial camera interface (the MIPI/CSI connector). This is a show stopper. After further investigations I have concluded that this cannot be overcome. At this point of time it is not possible to get the video from an HDMI input via the CSI interface into the Raspberry Pi. Unfortunately the Raspberry Pi is not architected for such an application.
So I would like to ask you, to stop pledging for this project. If things change and I find a way to get around this show stopping issue (possibly in a year from now), I will reconsider this project and I might restart it again.
If you are still interested in getting video into the Raspberry Pi short term, I have a couple of plan B proposals for you.
HDMI module with H.264/AAC hardware encoder
1. I have designed a tiny H.264/AAC codec module (only 17.5 x 35 mm in size). This is plugged on top of this HDMI In module. This compresses audio and video and sends it as a compressed data stream via USB to the Raspberry Pi. A short USB cable runs from this module to the dual USB connector on the Raspberry Pi. The Raspberry Pi receives the compressed video via USB (V4L2).
I plan to prepare a new kickstarter project with this 2nd generation module. Please stay tuned. The design and layout are finished. First prototypes will be build in early June 2014.
2. I have designed compact and low cost standalone H.264 encoders (the E100 and the E110). These encoders encode the HDMI video and send the compressed video as RTSP stream for further processing to the Raspberry Pi. Support for more streaming protocols and other interfaces (SDI) are in progress.
3. I could remove the CSI interface from this HDMI In Module, and re-target it as a HDMI video timing analyzer. Plus DDC (I2C) traffic analyzer. Analog audio in and out and wireless audio. But without the video capture function. Question: is there is interest in such a reduced functionality?
Please contact me and let me know, what you think. I welcome any feedback.
Thank you for your understanding!
With the camera board, the Raspberry Pi supports video capture and processing applications. However, there is a limitation. Video can only be captured from the integrated camera. This HDMI In Video Capture Module expands on this idea, as it allows you to connect almost any HDMI video source to your favorite little Raspberry Pi computer. This opens up a new world of applications. Just use your imagination.
Easily capture video from the following devices
- HD camcorders
- desktop or notebook PCs
- game consoles such as Playstation or XBOX
- many DVD players (with HDMI out)
The Video Capture Module is available in 3 versions: basic, loop through and deluxe. The deluxe version is shown below. It connects to the Raspbery Pi with 3 connectors:
- 26 pin GPIO connector
- 8 pin digital audio connector (must be soldered into your Raspberry Pi board (the 8 pin header is included)
- 15 pin FPC cable into the CSI camera connector next to the Ethernet port - the cable is shown on the photo below
Connectors on the module from left to right: HDMI video in, HDMI video out, 3.5mm headphone out, 3.5mm audio in
- HDMI video input (converted to MIPI/CSI for the Raspberry Pi camera interface)
- HDMI embedded digital audio (stereo) to I2S bus of the Raspberry Pi
- 256 byte programmable EDID memory
- video timing analyzer
- connects to Raspberry Pi with 15 pin FPC cable (included)
Loop through features
- HDMI video output (splitter function: HDMI In forwarded to HDMI Out)
- analog audio in (line or mic with mic power for electret microphones): interfaced to I2S interface
- headphone audio out
- audio level meter with 8 LEDs (6 green, 1 yellow and 1 red)
- IR receiver (RC5) for infrared remote control - optional
- IR transmitter (IR LED) - optional
- interface for digital wireless 2.4GHz audio module (up to 4 channels: 2 transmit and 2 receive) - compatible to pixel2media wireless audio body pack
- micro controller with programming interface to control HDMI CEC, and HDMI I2C (DDC)
Last year we have received our first Raspberry Pi together with the camera board. We realized that this system is great for capturing and encoding video. However, the camera board is rather limiting. It would be great if a standard HD camcorder with a live HDMI video output could be connected to the Raspberry Pi. So we searched the web, but we could not find such an interface board. In fall last year we started thinking of developing such a module ourselves. In November we sat down and architected the interface board and designed the schematics. In December the layout was completed. Please see the picture below.
It is an 8 layer board with 4 power layers and 4 signal layers. In this manner the impedance of the signals is well controlled. This is important as the video data buses are clocked at a very high clock rate. 5 prototyping boards were produced at a professional board manufacturer in China. The board production was very challenging, as one BGA on the board has a ball pitch of only 0.4mm. This is too tiny for regular vias, so staggered micro vias were used (laser drilled with a diameter of 0.1mm).
In January we have received the 5 printed circuit boards and in February they were populated with all the SMD components. A robot has placed the components on the board. Hand soldering these components is virtually impossible. Only the 2 headers (8 and 26 pin) are soldered by hand.
Within 2 weeks we were able to bring up the HDMI in and out components on the board. The picture above shows the test setup. An iPad mini provides the 720p60 video source via HDMI. The HDMI output is connected to a 7" preview monitor (with HDMI input). The 16:9 monitor shows black bars on the left and right as the iPad adds these to output its 4:3 screen to a 16:9 display.
Up to now the prototype worked straight away without any hardware modifications. Just 2 jumper wires had to be added, to connect the module to the other I2C bus (on the 26 pin connector). In the standard config the I2C bus is connected via the 15 pin FPC cable. But initially the 15 pin cable and connector were not available. We have just received them 2 days ago. Now the debugging can proceed with the MIPI to CSI interface.
The module consists of 3 sections in the HDMI video block.
- the HDMI in chip digitizes the HDMI video signal and converts it to a parallel 24 bit video bus with separate sync signals and pixel clock. This chip also integrates the timing analyzer and 256 byte EDID memory.
- the video bus is routed to the HDMI out chip which drives the HDMI output socket. As the video is routed directly from the input to the output, no video processing takes places in this video path. However, if there is sufficient interest a follow on version of this module could possibly add this feature. Please let us know, if you are interested.
- the video bus is also routed to the parallel to MIPI/CSI converter chip which feeds the serial video into the camera connector of the Raspberry Pi.
In addition the module contains an analog audio codec (TI TLV320AIC3104). Please find the data sheet and programming guide on the www.ti.com site. Last it contains a user programmable micro controller for various control and monitoring tasks.
The integrated timing analyzer allows to determine the timing parameters of the HDMI video input signal. This is very handy for the automatic configuration of the video processing software. For the printout below, an Apple iPad 4 was connected. It defaults to a video resolution of 720p60.
The LED meter is controlled by the micro controller. It receives the digital audio from the audio codec via the I2S bus and interprets the audio levels in software. The 8 LEDs (6 green, 1 yellow and 1 red) are located on the GPIO connector (bottom) side of the module. Please see the picture below.
On board programable 32 bit micro controller (STM32F051 ARM Cortex M0 with up to 48 MHz - 32 bit RISC processor) for GPIOs (incl. LED level meter), IR receiver, IR transmitter, HDMI CEC, and HDMI I2C (DDC). ST provides a low cost discovery kit for STM32F051 line - with STM32F051R8 MCU (the STM32F0DISCOVERY). It connects to the module with a 5 pin ST-LINK cable. Atollic provides target-specific software development support (Eclipse based). We expect that the micro controller is fast enough to sense the I2C bus on the HDMI input (DDC) in software. So we plan to write a utility to scan and analyze the DDC bus.
Important note on copy protected video
The HDMI input to this module must not be copy protected with HDCP. Some camcorder models and DVD players enable HDCP by default. This board will not be able to capture any video content, which is copy protected with HDCP. Sony camcorders are typically not supported as they output the HDMI video with HDCP protection. This is not really required but apparently it was Sony's decision to do so. Panasonic camcorders are typically fully compatible, as their output is not protected with HDCP. We have tested multiple models such as the HC-V100, HC-V110, HC-V210, and HC-X929.
The HDMI in and HDMI out chip are configured via the I2C bus. It turned out however, that the HDMI in chip requires a special I2C protocol which the I2C library of the Raspberry Pi can not support. The I2C command only allows to read and write up to 32 bytes from a single I2C address. The HDMI In chip however requires that 256 bytes are written, to initialize the 256 byte EDID memory, which is an integral part of the HDMI in chip. As a quick workaround the I2C bus was reconfigured as GPIOs and a bit banging scheme was used to write and read the 256 bytes. As a surprise it was really fast and it seems to work very well.
Last, the on chip registers of the HDMI out chips could not be read with the standard I2C read command. So a special I2C command was developed - again using bit banging. This is not performance critical, as registers mainly need to be read only in the debugging phase.
We invite programmers to enhance the I2C commands, so the specific demand of the HDMI in and out chips are directly supported.
Status of the project
- December 2013: design and layout finished - 5 prototype PCBs manufactured
- January 2014: 5 prototypes populated with the components
- February 2014: HDMI video in and video out is working (720p video is received on HDMI in and put out on HDMI out, EDID memory can be programmed, HDMI out of Raspberry Pi may be connected to HDMI in and it can read the EDID)
- May 2014: target for first production run
What do you receive?
- HDMI In Video capture module (basic, standard or deluxe)
- metal standoff (M2.5) with screw and nut - this fixes the module to the Raspberry Pi board
- 8 pin 2.54mm header - to be soldered into your Raspberry Pi board - this connects the digital audio interface to your RPi
- 15 pin FPC cable
Production and fulfillment plan
The plan is to complete the hardware debugging and the bring up of the board by mid April 2014. Then the schematics and the layout will be updated with any necessary changes, if there are any. With successful funding of the project we plan the finance the first production run, which means buying the components and making the PCBs. We estimate that we will build around 100 to 200 modules initially. However, depending on the success of this kickstarter project, we can adjust this number.
Our Chinese PCB vendor will then make the PCBs. We should receive them in early May and we will have them populated with components in Germany. Fully tested they will be shipped to the US and distributed from there. First shipments are scheduled to take place in late May 2014.
Please have a look at 2 other projects, which we are currently developing and check our website at www.auvidea.com.
- HDMI output board which connects to the MIPI/DSI (display serial interface) output connector of the Raspberry Pi. Alternatively it may connect to the CSI input of the Video Capture Module (for testing and development purposes)
- analog audio input and output board with RS232 interface and prototyping area
This little prototyping board allows you to easily realize some of your own hardware ideas for the Raspberry Pi. This board is already available in quantities. So this little give away can ship as soon as the funding period ends successfully.
Risks and challenges
We have successfully designed various HDMI in and out interfaces and also analog audio interfaces for multiple projects. We are very familiar with the devices used. So this part of the project is low risk and it has worked straight away. The first milestone was to get the signal path from HDMI in to HDMI out to work. In mid February we have successfully achieved this.
The next challenge is the MIPI/CSI interface to the Raspberry Pi. Mainly from a software perspective. It is the first time, we use this CSI converter chip. This chip is well documented. The real challenge is the software interface to the Raspberry Pi. We welcome any help in this area. We are happy to provide an early development board to experienced programmers, who are interested to help us. Please contact us at email@example.com.Learn about accountability on Kickstarter
Will a HDMI input source appear to the Raspberry Pi operating system in the same way the camera module currently does? In other words, can raspivid be used for hardware encoding video coming in from the HDMI port?
This is the idea. This module converts the HDMI input into a MIPI/CSI input, so it can be fed into the CSI connector for the camera board. My parallel to MIPI/CSI converter chip is extremely flexible and supports all kinds of modes, so it should be possible to create a CSI signal, which is very similar to the signal of the camera board. In this manner, all software, which works with the camera board should also work with this HDMI In Module. However, I expect that some software and/or drivers on the Raspberry Pi need to be modified. Any help in this area is welcome.
Get a Raspberry Pi prototyping board.Estimated delivery:Ships anywhere in the world
Basic: get the Raspberry Pi HDMI In Video Capture Module with an HDMI input. Plus HDMI embedded audio.Estimated delivery:Ships anywhere in the world
Loop through: get the Raspberry Pi HDMI In Video Capture Module with an HDMI input and HDMI output. All features of the basic version plus an HDMI output. This feeds through the HDMI audio/video, so you forward it to another HDMI device.Estimated delivery:Ships anywhere in the world
Deluxe: get the Raspberry Pi HDMI In Video Capture Module with all features of the standard version plus analog audio, micro controller and LED meter.Estimated delivery:Ships anywhere in the world
- (30 days)