Another Fine Myth(TV)

Introduction

This is a record of the trial and tribulations of setting up a mythtv machine.

First, I acquired a new machine (well, actually, the parts to put a machine together) from PCs for Everyone , a local supplier which has always been really helpful. I decided to save myself a few hundred dollars and put the pieces together myself rather than waiting two weeks and getting them to put the machine together.

From PCs for Everyone I acquired an MSI K7N2G-L Motherboard and an Athlon XP 2600+ (2.08GHz, 256K Cache, 333MHz FBS) processor, 512MB of PC2700 (DDR 333) CL2.5 SDRAM, a 200GB Western Digital hard drive, an NEC ND-1300A DVD+/-RW, and a PS300 ATX case with a 300W power supply. For the capture card I acquired an Hauppauge WinTV PVR-250 from Microcenter.

Once I got the machine put together and got it working (the power supply was set to 220V instead of 110V and therefore wasn't powering the CPU -- OOPS) it worked like a champ. I changed some of the BIOS settings to turn off items I wasn't planning to use, like the AC'97 modem. I also used this opportunity to turn on DMA support, turn on the onboard TV-Out, and set it to NTSC-M.

I decided the best thing to do was mostly follow the MythTV Documentation in terms of the order of operations. First installing the OS, then getting the basic OS requirements working, then the Capture card, and then MythTV software requirements.

Installing Red Hat

I'm a Red Hat user, so I decided to stay with the flow and install Red Hat 9. My first problem was that my installer is on the network, but the onboard ethernet card isn't supported by the installer. So, I temporarily plugged in a Netgear 10/100 card to get the system installed. I chose a Workstation setting, then turned on both Gnome and KDE, and even went through the packages by hand to try to make sure I had all the dependencies I wanted/needed. I think I missed a few along the way (which I'll get to later). I also upgraded a number of packges to fix various security problems, and upgraded the kernel to 2.4.20-9.

I partitioned the 200G drive into 5 partitions (all ext3, except for the AFS cache which is ext2):
/boot100M
/10G
swap1G
/usr/vice/cache1G (for an AFS cache)
/var/video180G (the rest of the drive, for video)

Skipping Red Hat's X

I skipped the initial X Configuration because I knew that the onboard controller wasn't going to be detected. I realize after the fact that this was a poor idea; I should have let it configure X using the 'nv' driver and then change it later, but I didn't. Oh well. It turns out what I did later is just the same as if I set it up here.

Installing OpenAFS

Even thought I don't need it for MythTV, I installed OpenAFS in order to gain access to a number of files and configurations that I store in AFS. It certainly makes my life easier to have a secure, distributed file system available, but YMMV.

Getting the nForce2 chipset working

The motherboard I obtained has an onboard 10/100 ethernet, ac97 audio, and nVidia graphics controller. Unfortunately the ethernet and audio don't work out of the box, and for the graphics controller it is recommended to use nvidia's drivers. Luckily, nVidia is very helpful to Linux users.

First, I had to download the nForce drivers. You can go to http://www.nvidia.com/content/drivers/drivers.asp to get to the main download page for all nVidia products. For the nForce drivers you want to click on "Platform / nForce Drivers", then "Unified Driver", and then "Linux". Then click "Go!" to get to the page. From that page I downloaded the SRPM and the RPM for my specific kernel version (2.4.20-9). You should read their README file for better instructions.

Next I installed the RPM which installs a few drivers and modifies /etc/modules.conf. I then hand-edited /etc/modules.conf to make sure I had the onboard ethernet as eth0 (it got installed as eth1) and then rebooted to shift to the new devices. Not surprisingly, this just worked. The machine happily came up with the built-in ethernet and came on the network. I could return the netgear to its box and replace it on the shelf.

nVidia X driver and configuration

You can get Linux drivers for nVidia chipsets that perform better than the 'nv' driver. You can go to the same drivers page as the nForce, but this time choose "Graphics Driver", "GeForce and TNT2", and then "Linux IA32". Then again click "Go!". Again, their README file is helpful. I downloaded the driver and ran the installer. It pretty much just did it's thing. All I had left was to configure X.

Next I used Red Hat's redhat-config-xfree86 tool to create a basic X configuration. I probably should have done this during the installation section, but at the time I didn't realize the tool wouldn't recognize the fact that I installed a new driver. Oh well. It didn't recognize my monitor, either.

After creating a basic configuration I edited it my hand. Because my intention is to run with TV Out, I set my Horizontal Refresh for 30.0-50.0, and set the Vertical Refresh to 60.0. I also followed nVidia's instructions and changed "nv" to "nvidia". Then I followed http://www.mythtv.org/docs/mythtv-HOWTO-19.html#ss19.7 and turned on AllowMouseOpenFail support and turned off DPMS support. I haven't verified if this helped, yet -- the screen still blanks from the console. I also updated the resolution to 1024x768 (it was defaulting to 800x600).

Note (2003-09-13 18:00): I have verified that X does not blank the screen. Take a look at my XF86Config file.

Note (2003-09-13 21:30): I changed to KDE and the screensaver was still in used. I had to go to "[Red Hat] -> Control Center -> Appearance & Themes -> Screen Saver" to turn it off completely. I think this finally solved it.

The good news is that X started up fine and worked. Even better, TVOut worked, too. I removed the monitor, connected to a TV, and it booted up just fine (and X started, too). Granted it was hard to read the small fonts on the TV, but it worked. So I went back to the monitor having proven it would work.

Audio

Getting audio working was harder that I thought. The driver loaded just fine, but when I tried to play anything I got an error that said "only 48KHz is supported." I dont recall exactly how I found the solution, but the problem is summerized by this message to the mythtv-users mailing list. Basically, I had to configure options nvaudio spdif_status=0 in my /etc/modules.conf file. Once I did this, audio was excellent and it played my Ogg file just fine.

Getting the PVR-250 to work

The Hauppauge WinTV PVR-250 capture card contains an onboard MPEG2 encoder and audio device, meaning that it reduces the CPU load when capturing video. You don't need to process it, you just need to store it. Linux drivers are readily available from the IvyTV Project however you may want to follow the instructions at http://www.mythtv.org/docs/mythtv-HOWTO-22.html#pvr250 which are a bit more helpful than the IvyTV docs. Indeed, these are the instructions that I followed except for one difference: I downloaded the "Latest CVS" tarball (which as of 2003-09-12 is still dated 2003-08-12) instead of pulling from CVS directly.

Note: Before I installed the ivtv drivers I made sure to copy the Red Hat msp3400 driver out of the way.

Next I tried to follow the instructions at IvyTV's FAQ to attempt to test the driver. The ioctl worked fine, but whenever I tried to perform the "first capture" I got a bunch of errors saying something about ivtv: init error 1. Code -16 and then an I/O error and no capture. When I looked in my logs I noticed that there was a failure loading the agpgart module. The nVidia docs mentioned something about rebuilding the kernel to suppose the GART, so I wondered down the path of trying to apply the nVidia patches to my Red Hat kernel.

nVidia AGP GART support

Following the instruction to build the nVidia AGP GART support into the kernel is a Pain in the Patooey. To make a long story short, I duplicated the Red Hat source tree, copied in my config, patched the kernel, ran make oldconfig, ran make dep, and then I had to copy back the original include/linux/modversions.h (otherwise it failed to build). Then I ran make modules but it died in the patched agpgart_be.c source file. I commented out the offending line (apparently there is a structure parameter that doesn't exist on Red Hat's kernels) and the make proceeded fine. I copied the agpgart.o module into place (saving Red Hat's) and proceeded.

IvyTV Tuner

At this point I tried the capture again and it gave me a different error: no valid input. So I realized I had to enable the tuner to get it working. I tried to run utils/ptune.pl but it didn't work due to missing PERL modules. So I had to pull down the Video-Frequencies and Video-ivtv perl packages and build/install them. Note: you need to build/install the Video-ivtv package first.

Just run perl Makefile.PL and it should build a Makefile for you. Then run make, make test, and then make install for both packages. You may need some additional dependencies, but it should warn you about it. You should learn how to use CPAN to install PERL modules: perl -MCPAN -eshell

Once I got ptune.pl working I tuned to a real channel and I was able to successfully capture some video (and audio)!. I wasn't running X at the time (and didn't have any players installed), so I copied the video to another machine and watched it there. Success.

X Stopped working!

Next thing I tried to do was restart X and I noticed that X STOPPED WORKING!!!. Ouch! After much testing, research, etc. I determined the problem, which was that the onboard graphics driver doesn't need the AGP GART support, and if it loads the (modified with nvidia support) agpgart.o module it will hang.

A google search for "nvidia agpgart X hang" pointed me to a debian user list, where a debian user found the solution in January, 2003. As detailed at http://lists.debian.org/debian-user/2003/debian-user-200301/msg03073.html you need to set the NvAGP option in the X configuration. In particular, you need to set it to "1". This solved the problem and now everything is loading and X starts up just fine.

Note: you probably do not need to rebuild the agpgart at all to get the PVR-250 working. I suspect you just need this X configuration change and all will be fine.

Building LAME, XMLTV, and MythTV

I pretty much followed the MythTV Docs to build and install LAME and XMLTV before building MythTV. The instructions at http://www.mythtv.org/docs/mythtv-HOWTO-5.html#ss5.3 are pretty good about explaining how to build XMLTV, and in particular provide the dependencies you will need (and explain how you don't tv_check or tv_pick_cgi). This is useful, as I found building WITH these options fails to work.

All in all, building MythTV was painless. There were a few warnings along the way, but nothing that failed. Next I tried to configure it.

Setting up MySQL

I followed the instructions at MythTV to configure MySQL. I even followed their suggestion to secure my database . Unfortunately this apparantly wasn't the right thing to do, as when I tried to configure the master backend system I had some trouble (see below).

Considering I was following the MythTV docs, I continued on to the next part before returning to this.

Getting LIRC working

Following the instructions to get LIRC working did not succeed in a success. I tried 0.6.6, 0.7.0-pre2, and CVS and none of it seemed to help. The module loads and /var/log/message reports that it found the device but irrecord says:

Press RETURN to continue.


Hold down an arbitrary button.
irrecord: gap not found, can't continue
even though dmesg reports:
ivtv: Registered v4l2 device, minor 32
ivtv: Registered v4l2 device, minor 224
lirc_dev: IR Remote Control driver registered, at major 61 
bttv: driver version 0.7.96 loaded
bttv: using 4 buffers with 2080k (8320k total) for capture
bttv: Host bridge is PCI device 10de:01e0 (nVidia Corporation)
i2c-core.o: driver i2c ir driver registered.
lirc_i2c: chip found @ 0x18 (Hauppauge IR)
i2c-core.o: client [Hauppauge IR] registered to adapter [ivtv i2c driver #0](pos. 3).
lirc_dev: lirc_register_plugin:sample_rate: 10

I've got the "grey" Hauppauge remote (lots of buttons, some colored), which might have problems. At least according to a Mandrake User it SHOULD work. However I followed the instructions at the end of the page and it still didn't work for me. Hopefully I can get this working later.

Update: 2003-09-16
LIRC is now working. It turns out I did have bad hardware -- the IR plugin receiver cable was busted. My new cards arrived today and when I plugged in one of the new IR cables it all started working. Now that it's working I copied the startup script and set it up to run:

cp -p contrib/lirc.redhat /etc/init.d/lirc
chkconfig lirc on
echo "add above ivtv lirc_dev lirc_i2c" >> /etc/modules.conf

Now that LIRC is working I grabbed the config file from http://pvrhw.goldfish.org/tiki-page.php?pageName=rh9pvr250#lirc and copied it into ~mythtv/.lircrc and then configured irxeventd to start at login time by adding a symlink to .kde/Autostart

Configuring MythTV

After giving up on lirc (a few too many hours trying way too many things) I decided to just go ahead and continue with configuring MythTV. I can always go back and configure the remote later, I figure. So I continued with the instructions on how to set up the master server. Unfortunately when I ran the setup program it failed:

QSqlDatabase warning: QMYSQL3 driver not loaded
QSqlDatabase: available drivers: 
QSqlDatabase warning: QMYSQL3 driver not loaded
QSqlDatabase: available drivers: 
Unable to connect to database!
No error type from QSqlError?  Strange...
Unable to open database:
Driver error was:
Driver not loaded
Database error was:
Driver not loaded
Apparently it needs the qt-MySQL package. Strange that it didn't complain during the configure (or build) process. After installing this package the setup script runs fine.

Note: be sure you configure your capture cards before you configure your video sources, otherwise setup goes into an infinite loop from which you need to kill it (from outside). Note Again: you can probably get out of the loop by hitting "ESC"

I followed the instructions to configure my system.

Run mythfilldatabase although the data seems strange. Some of the (early) channels appear incorrect. Perhaps I should have chosen "RCN Cable - Boston" instead of "Cable Ready"? This process seems to take a while.. At least I'm pulling down 26 programs/second (and spending about 1sec/webpage) according to the xmltv statistics. Hopefully it's correct, otherwise I may need to dump the channel database and start over.

Note (2003-09-13 22:40): mythfilldatabase, when run on any empty database, can take a VERY long time. Be patient. Go make some coffee or tea -- you'll want it (and have the time to make it).

Next it suggests running mythbackend. This seems to probe everything and startup as the master server.

MythTV Frontend

Next I want to set up the MythTV Front End so I can watch TV. The documentation doesn't really go into a lot of detail, so I presume I just need to run mythfrontend and follow the screens. It prescaled the theme images and then brings up the screen. I select "TV", then hit "ESC", then move to "Setup" and select that (as per the instructions). I think what they meant was going into Setup, and then "TV Settings":

After configuring all this I went to "watch live tv" and then as I was using the arrow keys it started the fast-forward and reverse.. And then the system hung completely.

I rebooted but cannot reproduce this hang. This is fine with me. As per the docs I changed my desktop to KDE. This was in a different menu than suggested (I found Desktop Switching Tool in [RedHat Icon] -> System Tools -> More System Tools). Still, since I don't have lirc working I'm having to figure out how to control the MythTV UI from keypresses.

Controlling Mythfrontend by keyboard

As I don't have lirc working, I'm trying to figure out how to control it from the keyboard. Obviously I can set the channel by typing in the channel number. However this does not apparantly work all the time. For example, I know I have a "channel 7" but if I type "7" or "07" it doesn't seem to do anything.

Here are some of the keyboard codes that I could find (based on input such as http://www.cse.sc.edu/~oldendic/mythtv/lircrc:

KeyFunction
0-9Channel number selectors
Up-ArrowUp (Channel, etc)
Down-ArrowDown (Channel, etc)
Right-ArrowRight
Left-ArrowLeft
|Mute On/Off
<Fast reverse
>Fast forward
shiftPlay from current position
[Volume Down
]Volume Up
iChannel Info
mMenu (or "choose channel")
spaceenter
enterselect
xtvvideo -- tune to this channel in the menu
ESCjump (return to previous state)
d"reset?"
p"play?"
end"pause?"
home"stop?"
z"picturemode?"

Fixing my Channel Guide

I think I chose poorly.. The channel guide I've got doesn't match the channels I have, and I can't grab all the channels. So I suspect I didn't want "Cable Ready" in the cable selection. I reran setup and selected "yes" to the second question (to clear all program/channel settings) and then selected the other RCN choice. Unfortunately I forgot to kill the mythbackend so setup hung. I restarted, but it is apparantly doing "something" while it is apparantly hung (resetting the channel guide I suppose). So I'll just let it go for a while and hope it comes back sooner rather than later. Note: It's waiting for user input, which you can't get to because it's taking up the full screen. If you return to the terminal it's asking to delete a bunch of channels from the database.

Installing MythWeather

I followed the instructions to build the MythWeather plugin. Installation worked without a hitch (although there was a complaint during the build:

cc1: warning: ignoring command line option '-fno-use-cxa-atexit'
cc1: warning: (it is valid for C++ but not the selected language)

Configuring MythWeather was fairly easy. It just took a while to get to Boston, MA. Luckily I could use '9' to jump forward a lot. :)

Update the program database from cron

Follow the instructions to set up mythfilldatabase to run from cron every day. This is as simple as copying the mythfilldatabasecron script out of configfiles and into /etc/cron.daily. I needed to change the script to point to /usr/lib/qt3.1 on my RH9 machine.

Note (2003-09-14 14:00): I noticed that the cron job last night had some errors; looks like I need to set $HOME to /root.

Note (2003-09-15 21:51): Added --quiet to the mythfilldatabase crontab entry to reduce the amount to email sent every night.

Installing MythMusic

My wife listens to music all the time on her Mac, so I figured it would be nice if there were some way we could use the MythTV box to play it instead of a long cable from the Mac to the stereo. I started by pulling down the dependencies from the list of pre-requisites and built them accordingly. Note: be sure to read the README file -- it's actually helpful with certain version information.

I had trouble with flac.. I downloaded 1.1.0 (instead of 1.0.4 as documented in the README). It seems to want libid3, not libid3tag. Strange. So I symlink'ed the libid3tag stuff so it could be found as id3, reran ldconfig, and it seemed to accept that. Running make check didn't show any problems.

While running the check system on flac I decided to compile the rest of the dependencies (libcdaudio and fftw). Once those are finished and installed I waited for the flac checks to finish. Unfortunately two of the checks failed, so I'm rebuilding without id3 (I removed the symlinks above), so I'm recompiling and re-checking. Unfortunately it's still failing two tests. I just installed it anyways (maybe I'll track down the test failures later).

Next I configured and compiled MythMusic. I configured it with --enable-all and then followed the instructions on compiling MythMusic from the website. Note that you DO need to modify the settings.pro file as suggested! There were a few compiler warnings, but it finished. So I installed it and then ran:

mysql -p -u root < metadata.sql

After installing and running mythfrontend I just got an error:

Unable to initialize plugin 'mythmusic'.
Unable to run plugin 'mythmusic': not initialized
This was due to a library cache problem and running ldconfig fixed it.

Next I reconfigured my mount tables -- I moved /var/video to /var/mythtv and then made two subdirectories for video and music. I then proceeded to rerun setup (to change where it looked for video) and then configure MythMusic but it still doesn't work:

metadata.o: your database is out of whack.  This is not good.
playlist.o: hey! I can't load playlists if you don't give me a hostname!
playlist.o: hey! I can't load playlists if you don't give me a hostname!
As per a MythMusic User I did the following:
mysql -p -u root mysql
Password:
mysql> use mythconverg;
mysql> update musicplaylist set hostname = "xxx";
mysql> quit
and set my hostname in the database. But this did not seem to have any impact. Another page suggested clicking on "Scan for Music" but that doesn't appear to have helped. Then I put a music file into /var/mythtv/mysic and ran "Scan for Music", but this time I didn't get the first error, only the error about the playlists. Apparantly this will go away if you import a CD into the system. I haven't tested this theory.

Interfacing to my Motorola DCT2224 Cable Box

Following the suggestions at http://www.gossamer-threads.com/archive/MythTV_C2/Users_F11/DCT2000_and_lirc_P72697/ and using scripts found at http://mythtv.org/pipermail/mythtv-users/2003-July/010241.html I was able to successfully change channels on my cable box using just a standard serial cable. No IR Blaster needed. I have not yet configured MythTV to use the cablebox, but I've proven (to myself) that the code works. I needed to download PYSerial in order to get the remote.py script working, and then I needed to change the script to use /dev/ttyS0 instead of ttyS1.

I downloaded the packages, installed pyserial as per the instructions, and then installed changechannel.sh, remote.py, and crcgen.py into /usr/local/bin. I still have to configure MythTV to use the cable box; I'll deal with that another day.

Updating the Channel Selection

I re-ran the setup command (and erased all the channel/programs) in order to install both regular and "digital" cable channel lineups. I then edited the basic cable setup to turn off the "premium" channels by prefixing "not" in front of the appropriate lines, and edited the digital channel lineup to do the same. Then I backed up the xmltv data files in ~/.mythtv and then re-ran mythfilldatabase to populate it all.

Note, however, that this causes duplicate entries in the database! So, be careful. As decribed by this MythTV user you should be careful about it (or better yet, don't duplicate your channels). I think the answer is to limit channel selection of "digital cable" to the non-overlapping channels, but I haven't tried that, yet. I suspect the way I'm going to have to do this is:  

Video CardCard Input PortVideo Source
video0tuner0Analog Cable
video1tuner1Analog Cable
video2tuner2Analog Cable
video2compositeDigital Cable Box

I believe I can work around the duplicate channel issue by limiting the Digital Cable Box input to only those channels that available through the cable box but NOT available on the regular analog TV.

Another strange thing -- I'm seeing two "channel 86" entries. The database apparantly only has a single entry, even though the program guide is showing two entries. I'm still trying to figure this one out. Ahh, the chanid got off-by-one due to BCTC and EWTN sharing the same channel (RCN splits the time between them). So I just started over, commented out BCTC, cleared the channel/program database, and re-ran mythfilldatabase. That seemed to fix it.

Run mythbackend at boot time

Following the instructions at http://www.mythtv.org/docs/mythtv-HOWTO-20.html#ss20.12 I ran the following commands:

cp -p contrib/etc.rc.d.init.d.mythbackend /etc/init.d/mythbackend
chmod a+x /etc/init.d/mythbackend
cp -p contrib/etc.sysconfig.mythbackend /etc/sysconfig/mythbackend
echo MBE_LOGFILE=\"/var/log/mythbackend.log\" >> /etc/sysconfig/mythbackend
chkconfig mythbackend on

Configure mythfronend to run at login time

Following the suggestions at http://pvrhw.goldfish.org/tiki-page.php?pageName=rh9pvr250#auto I turned off the KDE Kicker by right clicking on the panel, selecting Control Module -> Hiding, and then Hide Automatically. I also set up the frontend to start automatically:

ln -s /usr/local/bin/mythfrontend ~/.kde/Autostart
Then I ran gdmsetup and set it up to login the mythtv user automatically on the first bootup. This starts the mythtv UI when the system starts. In addition, I brought the mythfrontend application into the panel to make it easier to start. To do this I opened up the homedirectory icon from the desktop, then typed in /usr/local/bin/ and dragged the icon for mythfrontend to the panel. Now I can start without a terminal (which is good, because you don't want any other applications in the Autostart folder.

Fixing a perl bug in XML::Writer

Running mythfilldatabase resulted in an error:

parameterless "use IO" deprecated at /usr/lib/perl5/site_perl/5.8.0/XML/Writer.pm line 16
This can be fixed by updating XML::Writer as per the suggestions at http://archive.develooper.com/perl5-porters@perl.org/msg96060.html and changing use IO; to use IO qw(Handle Seekable File Pipe Socket Dir);

Audio doesn't always work

2003-09-16
Once I got everything set up I put in all my cards and rebooted, but it died with an error:

Opening OSS audio device: '/dev/dsp'.
ERROR: something is currently using: /dev/dsp
Fix this, then run mythfrontend again

This sounded just like the error reported by a MythTV User so I followed the instructions and turned off KDE's aRts server by the controls at: [redhat] -> Control Center -> Sound & Multimedia -> Sound System. This seems to have fixed the problem.

Fixing the remote

As I've been playing with the remote I've noticed that a number of keybindings in .lircrc are incorrect, or don't match what they should be. So I've rebuilt my RC file one key at a time. For example, "replay" and "skip" are backwards, "mute" actually pauses, volume up/down move left/right, etc. Quite annoying. So I've made my own lircrc file that seems to work for me using the Hauppauge Grey remote.
 
Button(Key)Function
On/Off
GoOBring up On Screen Display (OSD)
0-90-9Numbers
Back/ExitESCEscapes back to the previous screen
MenuMBring up the Electronic Program Guide (EPG)
RedBToggle active PiP window
GreenNSwap PiP windows
YellowJSlow down the play speed
BlueUSpeed up the play speed
Ch+/-Up/DownChannel Up/Down
Vol+/-Left/RightMove left/right in EPG
OkReturnSelect this item
Mute|Mute On/Off
BlankDDelete records from playback screen
FullVToggle PiP on/off
Rewind<Rewind 30 seconds
PlayspaceSelect this item
FF>Fast Forward 30 seconds
RecordRChange program record setting
StopESC
PausePPause/UnPause playback
ReplayPage UpBack up 10 minutes
SkipPage DownGo forward 10 minutes

Setting up the PVR-350

On 2003-11-05 I received my PVR-350 that I ordered from Amazon.Com (it arrived in about 2 days! Wow!). Today (2003-11-06) I'm working on getting it all set up. Luckily someone has already created the wake. Ivan K sent this message to mythtv-users that describes in detail how to set up the PVR-350. My PVR-350 loads as /dev/fd0 and apparantly is at PCI bus 01:07.0 so I modified the XF86Config as necessary. X is complaining that:
Xlib:  extension "GLX" missing on display ":0.0".
But I think I can live with that. Unfortunately I crashed the machine (HARD) twice within 15 minutes, so I'm just going to revert back to the s/w decode until I can come back and take a look at it. It's been suggested that I reduce the encode bitrate because high-bitrates could be locking up the driver. It's a good thought, so I'll test it when I come back from the IETF.