Thursday, January 29, 2009

Road sign hack

Jon was nice enough to point me to the following, which I found amusing:,2933,484326,00.html

Tuesday, January 27, 2009

Suzy had her baby

Isaac James was born yesterday. Yay.

I didn't get home from New Jersey last night until 11pm. Boo.

Thursday, January 22, 2009

Fail Blog

Jae introduced me to the Fail Blog a few days ago. If you haven't seen it, I highly recommend you check it out:

It has great gems like this:

fail owned pwned pictures

Very funny.

Wednesday, January 21, 2009

Linuxstamp and s5h1409

The ARM based Linuxstamp embedded board a user mailed me showed up today, along with the "DVD Maker USB 2.0" and Kworld USB 2800D he was trying to make work with it. Spent a good portion of the evening getting an ARM crosscompile environment, tftp server, and nfsroot setup so I could boot the board. Will have to work more on it tomorrow. I'll probably just get the tuners working under x86 first, and separately debug the embedded issue (it's probably some sort of DMA problem).

Robert tried out my s5h1409 patch today, and his results were completely consistent with my expectations. To give some perspective regarding the difference:

Before the change:
Tuning delay: 2661 ms
Tuning delay: 474 ms
Tuning delay: 472 ms
Tuning lock fail after 5000ms
Tuning delay: 2000 ms
Tuning delay: 2685 ms
Tuning delay: 475 ms

After the change:
Tuning delay: 594 ms
Tuning delay: 570 ms
Tuning delay: 574 ms
Tuning delay: 671 ms
Tuning delay: 570 ms
Tuning delay: 673 ms

Given the number of products that use the s5h1409, I sent an email to linux-media soliciting testers, so I can shake out any bugs before it gets committed.

There is probably additional room for improvement (for example, the lgdt3303/xc3028 combination typically locks in 350ms), but the change as-is at least provides a good consistent lock in a time only slightly less then the best case without the patch.

Tuesday, January 20, 2009

Pinnacle 800i

For a few months now, I have been working on and off with some patches for the xc5000 driver to improve the tuning time. In the interest of making sure that my xc5000 improvements didn't break any existing products, I reached out to Pinnacle and they very kindly shipped me a sample Pinnacle 800i card, which arrived today.

Nothing beats plugging in a brand new PCI card, powering on your Linux desktop, and watching the kernel crash at bootup.

This is supposedly a stable driver, as the card has been supported for some time. My intent was to validate my xc5000 and s5h1409 driver changes to ensure there wasn't breakage, but I guess I'm going to have to do more than that. Fun fun.

Mercurial versus Subversion

I'm at work, but I keep running into the following problem:

[dheitmueller@b4 ~]$ hg diff
-bash: hg: command not found
[dheitmueller@b4 ~]$

And then I realize that I use subversion at work and not mercurial.

Monday, January 19, 2009

Pinnacle Ultimate progress

This is a screencap of tvtime with the analog tuner:

Now, you might be saying, "Wow that looks like crap!" but bear in mind that is just a first cut, and obviously I will get it working correctly. But the fact that I can see a picture at all is a milestone.

ATI dropped a 16MB zip file on me last night with full documentation and reference driver source for the ATI316, so I can now start working on the digital demodulator. And Maxlinear got back to me today and provided me the mxl5005s datasheet and register map, so I should be able to debug the issues necessary for the analog support.

All in all, a good day.

Thursday, January 15, 2009

Audio crash isolated - finally

I finally got the code onto my Dell box and installed the serial card so I could get a kernel stack of the crash I was seeing when stopping audio capture on the Pinnacle 880e. It turns up other people were reporting the same issue on the HVR-900.

Per Robert's suggestion (and after seeing the stack dump), I replaced the usb_unlink_urb() call with a call to usb_kill_urb(), and like magic the crash went away (the isoc_irq apparently wasn't being canceled). Sent email to Mauro and Douglas, and if they agree I'll push a patch.

Now that the audio doesn't crash my system, I can finally get back to getting the audio working for the Pinnacle 880e.

Tuesday, January 13, 2009

More em28xx audio debugging

It turns out someone else reported the same crash I was seeing in em28xx-audio whenever you stopped capturing, but his case was with the HVR-900. This confirmed my suspicion that it had nothing to do with the saa7136 development. Both Mauro and Douglas successfully reproduced the issue as well.

I tried out a patch that was believed might fix the issue, and it didn't. I also started playing around with the kdump facility built into the kernel (with Mauro's help) in hopes I would be able to preserve the stack trace. Unfortunately, the kdump facility itself hits a segmentation fault when the kernel crashes. Yeah, the crash facility crashed - isn't that cute?

Gabor also tried out my USBAV 704 patch, and it didn't work. Looks like there is some weird GPIO issue where one of the devices doesn't always respond to i2c at startup, which results in the i2c hash sometimes being different. Generally speaking, I don't think the em28xx driver has a cohesive strategy for ensuring the GPIOs are in a well-known state when the driver loads, which is probably a bad thing.

I'm tempted to add a routine that basically pulls all the GPIOs low for 50ms and then leave them all high, which would put the chip in a consistent state with its reset state (and reduce the risk of demod/tuner state persisting across a reload of the driver).

Monday, January 12, 2009

The future of Perl

Maybe it should tell you something when one of the most popular tags for a Slashdot article about Perl is "It's dead Jim".

For those of you not into Star Trek, well...,_Jim#.22He.27s_dead.2C_Jim..22

Sunday, January 11, 2009


I wasn't very productive this week. With the help of Bill and his hardware lab over at City College, I did successfully got the EVGA inDtube hardware repaired partially so that the i2c no longer intermittently fails, but we couldn't get the tvp5150 working again. Also, I helped Robert out working through his issues so that the KWorld 330u successfully got an ATSC lock. No commits this week though.

Stuff in the queue:

  • Get the USB AV704 support committed and a PULL request sent to Mauro (Gabor finished the audio testing and all looks good)
  • Finish the saa7136 driver, including audio support (required for the Pinnacle Ultimate)
  • Get the mxl5005s analog support working (required for the Pinnacle Ultimate)
  • Read through the docs Broadcom finally provided on the ATI 316 demod (required for the Pinnacle Ultimate)
  • Finish testing the xc5000 1.3 firmware, and in particular debug the power management issue that is preventing me from upgrading the driver
  • Make sure the auxiliary audio input still works on the Pinnacle 800e (a user complained on #v4l that it is broken).
  • See if I can find someone else with the EVGA inDtube that can test the analog support

Wednesday, January 7, 2009

Ah, users....

The last couple of nights I had been working on an EVGA inDtube ATSC tuner that a user had very kindly gone through the effort to send me. He had already opened the unit and sent me photographs before he mailed it.

I had expected it to be pretty quick to bring up the board - setup the em2882 device profile, setup the GPIOs, and attach to the s5h1409 after figuring out the device config.

I had successfully gotten the ATSC support working with the s5h1409, but for some reason I couldn't get the tvp5150 to respond to i2c commands.

Also, I kept hitting a weird intermittent case where *nothing* would answer on i2c when plugging the device in, even the eeprom. I thought perhaps a bug had been introduced in the em28xx framework and it just happened to manifest itself in a nasty way on this hardware design due to something such as timing.

Finally, I decided perhaps I would get out my scope and see if I could trace out the tvp5150 reset pin (thinking I had a GPIO issue). I put on my visor, and what does a physical inspection of the board reveal?

Yup, the user damaged the board, presumably when he pried it open with a screwdriver.

Tuesday, January 6, 2009


Despite having about three different devices I could have been working on for LinuxTV, I just couldn't bring myself to write any code tonight.

So I watched TV instead.

I did get the ADS Tech USBAV-704 working yesterday with Gabor's help on the testing side, so I will push that in later this week. Still, I just couldn't get up any motivation tonight to be productive. I didn't even sign into AIM or lurk on #linuxtv or #v4l.

Tomorrow need to make sure all my clothes are in order. Taking Thursday off to go to New Jersey for Joe's funeral services.

Thursday, January 1, 2009


I had blogged a year ago about some New Years resolutions, and looked back at it last night and was pretty happy to see that I made pretty good progress and accomplished quite a few of them. Yay.

[content removed at request of Markus Rechberger]

New Years Day

Had a nice and quiet New Years. Victoria came out to the City, and her sister and sister's boyfriend stayed with us after going to a concert at Madison Square Garden. Today the four of us went to the American Museum of Natural History as well as checking out the skating rink there that has no actual ice (it's made of recycled plastic).

No progress today on LinuxTV stuff. I need to deal with Gabor's tuner problem and am waiting on a package from Cheeseboy so I can do the driver for the Evga Indtube. Looks pretty straightforward (em2882/s5h1409/xc3028L).

Hooked up the new phone Ben gave me last week (a MotoRizer). It's a considerable upgrade from my old phone from 2004, as it is much smaller and includes a built in camera. Pretty neat.