Heavily pounded on by me to make it fit our driver model. Also added: auto media selection; shared ring buffer code with `be'.