Digital Tuner Reverse Engineering

hvr-1600-i2c-sniffing

Hackaday alum [Ian Lesnet] tipped us off about some reverse engineering of the HVR-1600, an analog and digital television encoder/tuner. The project was spawned when [Devin] noticed his Hauppauge HVR-1600 didn’t tune channels in Linux quite as well as it did in Windows. He had a hunch this was due to improper initialization settings for either the tuner chip or the demodulator.

To fix this he used two test points on the board to tap into the I2C bus. Using a logic analyzer he captured the command traffic from the bus while running Linux, then while running Windows. By filtering the results with a bit of Perl, and comparing them by using diff, he tracks down and finds the variation in the commands being sent by the two drivers. After a bit of poking around in the Linux source and making the necessary changes, he improved the tuning ability of the Linux package.

[Devin’s] work looks simple enough, and it is. The difficult part of this process is being smart enough to know what you’re looking for, and what you’ve got once you’ve found it.