Installing Satellite TV on Linux: Log

During 2003 I started a "project" to get Satellite TV on my computer. This was a long-standing ambition of mine, to get my PC handling all of my multimedia capabilities. I wanted to be able to invest in a nice computer monitor and have that automatically give me a good TV. Satellite TV seems like the natural solution since nowadays it's all digital.

I've always found when mucking around with Linux that I keep forgetting what I learn: I forget what the correct output of commands is, forget which modules I'm supposed to load, etc. To prevent that, I kept a continuous log of what I did and what the results were. Here I present that log for your viewing pleasure...

This log page is now responsible for my first actual proper inbound link, courtesy of AP Satellite. Thanks guys! Looks like a pretty useful resource - you should probably check it out.

2003-04-05 20:39

I decided that a) Satellite reception on my computer may well be possible in the next few months, and b) it's worth keeping track of what I've had to do to get it all working.

So I've checked out various websites, and the satellite to use appears to be "hotbird", cool name. There actually appear to be 6 satellites in a cluster, but it seems your sattellite dish just sees them as one. I guess they broadcast on different frequencies. The old satellite seems to be Astra, but that isn't so good.

Had a look at dishes, and they seem to be of the order of 35 pounds. Apparently I need about 55cm of dish, which seems manageable. I think the real expense is in the receiver at the end of the dish though. We'll see. Also had a look at Hauppauge's site, what I'm after (as expected) is the WinTV NOVA PCI. However, there's also a CI edition which I think is probably what I want.

It seems that you can install your own dish without too much effort. The procedure seems to be, firstly point the dish in the right direction using a compass. This has to be accurate to within a few degrees, let's say 1 degree. I guess there's some sort of metric on the dish that allows you to be that accurate. Then you set the elevation, and there definitely should be a gradation on the dish to show you where it's pointing. After that you have to do fine adjustment, with the aid of either a little signal strength meter, or a signal strength meter on the receiver.

Major concern at this point is that various sites claim that you need direct line of sight, even trees will cause problems. A quick glance around and there's a gap between the two houses next door, but it's narrow and I'm not sure it's exactly south. I'll get a compass (and some exact info from a website) and check.

I downloaded an introduction to Sky TV off the net. There's also a companion guide about how to install Sky, that is probably much more relevant, but you have to pay. I'll read the guide and see what more I need to know.

Had a look at some computer monitors as well. 18 inches seems plenty for my use. The 23 inch one was pretty damn nice though :-)

Todo:

2003-04-06 19:05

Did a bit more surfing, and came up with a few answers. First of all, the line of sight thing looks like it could be a problem. Secondly, both metal and glass cause issues for these microwave signals, so an indoor dish is out of the question. Hmm. Still, looking at some of the dishes around, I *swear* some of them are looking straight through buildings. I need to look at the Matheisen's dish more closely.

On the other hand, I noticed the dish that the Matheisen's have. It's sitting outside my window about 8m from me and it's tiny. So the question is, can I tap into their feed somehow? Probably not, but it's worth asking.

I now know from my surfing that you can get 2-feed LNBs (Low Noise Block downconvertor). But I don't know how happy they would be to have me muck around with their dish.

I think I should definitely try talking to the various geeks around the office. They would love to talk about it, and may suggest ways to get around my problems.

One thing I could do to make life simpler is to try installing stuff at someone else's place - someone with time, patience, and a love of electronics who would enjoy being part of the process. Anyway, then I could put the card in my computer, get it working with the dish, and then have a guaranteed system I can plug in when I move the dish to my place. Or something.

Words about the card. So, what I'm after is the Hauppauge WinTV-NOVA-CI-s. This is the basic card from the linuxdvb FAQ, so it can be used to record to disk and doesn't come with any annoying MP3 converter. Also, it has the CI module so I can experiment with real cards before trying my hacks. RRP is 179 EUR, but it's on amazon.de for 149 EUR! Added to my wishlist :-)

I tried to find some information about directions, but it seems really confusing. How do you work out where to point your dish in any given place? Everyone can't look in the same direction! Verified this with diagrams, also thought experiment if you were on the equator and the satellite was directly overhead, obviously someone somewhere else on the equator wouldn't have it directly overhead. So there. However, for reference Munich is at 48 deg 8 min North, 11 deg 35 min East. Hotbird is at 13.0 deg East, Astra is mainly at 19.2 deg East, but there also appears to be satellites at 28.2 deg East.

On that, it seems that Sky broadcasts from Astra. Hmm. So I could attempt to grey import Sky from Astra or access all the European channels from Hotbird. Not sure which is better, but I probably won't be able to get much from Sky so Hotbird still seems the way to go if I can manage it.

Chased up some prices from a UK site satelliteshop.co.uk. A Channelmaster 60cm Dish costs 29 GBP. That seems to be what I want - for Astra they recommend a 50cm dish, for Hotbird 60cm. I am right in the middle of the footprint, so maybe I could use something smaller. Except that I might have tree issues, so maybe 60cm is the best compromise. The other thing is the LNB. I need a "Universal" LNB - there could be issues working out the correct translation of that to German. Incidentally, "Empfang" seems to be the word for reception. Also for receipt, worth remembering. Anyway, a Manhattan single output LNB from the same place costs 49 GBP. So put it together, I'm looking at a bit over a hundred EUR for that part. Not unreasonable...

I read the Sky TV guide thing. Some useful info, but absolutely nothing about installation. I guess I'll buy the next book, but it's clearly targeted specifically at Sky, and there might not be enough stuff for me.

Todos ticked off:

Todo:

2003-04-12 18:21

I found a website that explained how to work out where to point your satellite dish (actually 2). After I worked out the difference between latitude and longitude, I found that:

SatelliteHorizontalVertical
Astra169.411 E34.23
Hotbird177.689 E34.707

These make sense - you would expect to see the satellite almost directly due south. Also, the elevation of 30+ degrees is more sensible than the angles I've been looking at, which are almost horizontal. I finally realised that the dishes are designed to not point directly at the satellite, and that's why they point almost directly horizontal and why the receiver is right at the bottom of the dish.

The various sites say that satellites are as close as three degrees to each other, and you really want to be able to point to within 1 degree.

I bought a compass. That, combined with the fact that I'm looking at a 35 degree angle, makes me think that there is just enough space between the two houses south of me for this to work. There is still a tree in the way, but I think there is in front of the Matheisen's dish too, and from what I know of this, light foliage shouldn't be a problem. Maybe. Hmm...

Checked out TV monitors. Actually, for the size of room I have, a 17 inch monitor is fine, and much cheaper. So I think I'll go for that. It still must be considered an "intermediate" solution. The new goal should be to get a digital monitor and digital card. Long long term. Litec is a weird little shop, nothing is on display, you just have to know what you want. Clearly geek only. I'll go back to their website, order a 17 inch monitor, and probably get it delivered to the office.

Todos ticked off:

Todo:

2003-06-17 09:06

So, things starting to get moving. Dad's bought me the computer card! Thanks Dad :-) It should arrive in the next week or so, at which point I can try to install it.

I've been shopping for a dish/lnb/cable to go along with it. You can buy dishes and lnbs as combinations, so I'm going for that to prevent the possibility of getting incompatible ones. You can't seem to buy cables shorter than 10m, so a) that's what I'll go for and b) I guess when they talk about shortening cable length, they're talking about distances much longer than 10m.

Better than that, Mick has got his satellite dish working, and he reckons it works even inside the apartment. If I get the 60cm dish, I think I'll have enough area that a few branches and things in the way shouldn't be a big deal.

I can run the cable through the window at least in the short term, even though that means it won't close properly. It's not really outside, so I'm still sheltered from the elements, plus it's summer now. Gotta go, my bag has arrived.

2003-07-01 18:32

Woohoo! The card arrived! So I unpacked it and installed it, booted up the computer and there it is in lspci:

00:0a.0 Multimedia controller: Philips Semiconductors SAA7146 (rev 01)
        Subsystem: Technotrend Systemtechnik GmbH: Unknown device 100f
        Flags: bus master, medium devsel, latency 32, IRQ 10
        Memory at ea000000 (32-bit, non-prefetchable) [size=512]
    

The actual keyword there is SAA7146 - that's my chip, and that's the driver I need. Turns out there's no support in the 2.4 kernel, I've had to go to my 2.5.66 kernel. That has a whole section on DVB, and the only driver is the one for my chip. Hurrah! I'm just building a kernel now.

The thing comes with a remote control, which I'll probably ignore, since it hasn't got as many buttons as my existing one and I'm used to it now.

Other than that, I just need a dish. Oh and also install all the necessary software. My new CDs with the unstable branch of debian are in the mail, so shouldn't be long now.

Todos ticked off:

Todo:

2003-07-13 21:15

I had a go with windows 2000 and the satellite card. Didn't work :-( I don't know if it's quitting because it can't see a signal or what. I also mucked around with the linux kernel. Compiling the module into the 2.5.66 kernel definitely causes the kernel to panic. Weird. I'm having a go with 2.5.74 now.

I've ordered, and indeed paid for, the satellite dish and LNB. We'll see if they actually arrive :-/ Still need to get a cable, but should be trivial to do that.

2003-07-13 21:48

Kernel is compiled and appears to work, and I installed the software for tuning it, dvbtune. Very hairy syntax on that sucker too. Anyway, that didn't work because I don't have the right device file, /dev/ost/dvr0. I don't know how to create that, and there's no documentation, not even in devices.txt. I'll look on linuxtv.org and see what I can see.

2003-07-14 20:33

The dish arrived today! It's a big sucker :-) Gonna be interesting trying to mount the thing. But it doesn't weigh that much. I had the bright idea of attaching it to one component of the stool I have. Probably end in disaster, but should be fun. It does come with a scale showing elevation, which should help, but it does require that I mount it vertically. Also, I was worried about the mechanics of mounting it outside. But with such a large dish, I'm stupidly optimistic that it'll work fine indoors. So I might just keep it in here in the same room as the computer, which'll simplify things.

I had a look for device files, but I couldn't find anything about which nodes to use. Plus there are clearly two versions of the driver - the one with documentation, and the one in the kernel. Dammit. The one I've got is linuxtv-dvb-1.0.0-pre3.tar.gz. I'm going to try using it with the 2.4.21 kernel. It's built into the 2.5 kernel, but that doesn't have any documentation so I'll leave it for the moment. But one thing that's clear is that making the device nodes is going to be a pain, because dvbtune is probably compiled for the in-kernel version. To make life simpler, it seems that devfs is the go. It's generally a good idea anyway. So I'm installing devfsd, and compiling my 2.4.21 kernel to use it (2.5.74 already has it). Then I'll flick back and forth between the two kernel versions, both of which have devfs, to see what I end up with.

Todos ticked off:

Todo:

2003-07-14 21:07

After a few iterations, I managed to get my kernel working with devfs. There were heaps of symbol errors when it tried to configure the modules, and I only managed to get around it by compiling most of the drivers directly into the kernel. But devfs is up and running, and hardly anything seems broken :-) I had to add mexon to the audio permissions group so I could keep using sound, but I probably should have done that anyway. The dvb drivers end up under /dev/dvb, so that's pretty good. Love this devfs stuff by the way, how much does this rock? The only problem is the mess of symlinks it needs to make in order to maintain backwards compatibility. Anyway, I tried the program szap according to instructions, and it seems to do something. It seems to be indicating that the signal is zero, which is no huge surprise given that there's no cable:

zapping to 'Das Erste':
sat 0, frequency = 11837 MHz H, symbolrate 27500000, vpid = 0x0065, apid = 0x0066
using '/dev/dvb/adapter0/frontend0' and '/dev/dvb/adapter0/demux0'
status 02 | signal 0000 | snr 08f4 | ber 0000ff90 | unc 00000000 |
status 02 | signal 0000 | snr 0969 | ber 0000ff88 | unc 00000000 |
status 02 | signal 0000 | snr 0903 | ber 0000ffb0 | unc 00000000 |
    

...and so on

dvbtune does nothing but complain, so I'll probably try and find the source somewhere and compile it myself. Presumably autoconf will find that devfs is in place and use that instead.

2003-07-15 20:21

I bought a cable - check out what happens when I connect it to the LNB:

aeon:~/linuxtv-dvb-1.0.0-pre3/apps/szap# ./szap -n 001
zapping to 'Das Erste':
sat 0, frequency = 11837 MHz H, symbolrate 27500000, vpid = 0x0065, apid = 0x0066
using '/dev/dvb/adapter0/frontend0' and '/dev/dvb/adapter0/demux0'
status 00 | signal 0000 | snr 14a3 | ber 0000ff60 | unc 00000000 |
status 02 | signal 0000 | snr 15b4 | ber 0000ff30 | unc 00000000 |
status 02 | signal 0000 | snr 1761 | ber 0000ff70 | unc 00000000 |
status 00 | signal 0000 | snr 1464 | ber 0000ff20 | unc 00000000 |
status 02 | signal 0000 | snr 13aa | ber 0000ff70 | unc 00000000 |
    
 
aeon:~/linuxtv-dvb-1.0.0-pre3/apps/szap# ./szap -n 001
zapping to 'Das Erste':
sat 0, frequency = 11837 MHz H, symbolrate 27500000, vpid = 0x0065, apid = 0x0066
using '/dev/dvb/adapter0/frontend0' and '/dev/dvb/adapter0/demux0'
status 03 | signal 4f6a | snr 7107 | ber 0000ff60 | unc 00000000 |
status 03 | signal 4fdb | snr 7137 | ber 0000ff80 | unc 00000000 |
status 03 | signal 4fbf | snr 70e9 | ber 0000ff30 | unc 00000000 |
status 03 | signal 4ff3 | snr 711f | ber 0000ff80 | unc 00000000 |
    

Can't seem to get any signal better than that though, and it doesn't matter where I point the thing. I'll wait until I can mount it properly and with some clue about which way I'm pointing it. Mounted the base part on the stool and amazingly it seems reasonably sturdy. I should buy my own if I'm going to do that though. Was completely unable to buy a spanner today, I'll try tomorrow at Obi.

Also tried the thing with windows. It turned out I didn't have the driver installed, which is why it did nothing before. Now it fires up the application OK, but obviously no signal. Weirdly, the two little indicators on the left flashed blue occasionally, but I have to assume that they were talking crap. It's hard to find dvbtune - looks like I'll be forced to use the CVS tip, which is an edge a little too bleeding for my taste.

Todos ticked off:

Todo:

2003-07-19 17:16

Woohoo! The thing works! I bought a new compass, and worked out that there are lots of metal things aroud the house and they are seriously distorting the results. I set the elevation to approximately what it should be. I used the windows software, and got it to auto-scan - before you know it, things were flashing on and off all over the place! It was really easy.

The dish is outside, still attached to the stool, with the cable running through the window to the PC. I can get CNN, BBC, ProSieben, Sat1, and a few others. Most of the channels with good signals are encrypted - I'll have to work out how to decrupt them. Especially the various MTV channels...

Here's what szap produces. I still don't know what any of it means:

aeon:~/DVB/apps/szap# ./szap -n 001
zapping to 'Das Erste':
sat 0, frequency = 11837 MHz H, symbolrate 27500000, vpid = 0x0065, apid = 0x0066
using '/dev/dvb/adapter0/frontend0' and '/dev/dvb/adapter0/demux0'
status 01 | signal 8d3e | snr 7d61 | ber 0000ff00 | unc 00000000 |
status 03 | signal 8710 | snr 7a0a | ber 0000ff00 | unc 00000000 |
status 03 | signal 76c3 | snr 764d | ber 0000ffe8 | unc 00000000 |
status 03 | signal 5000 | snr 71ca | ber 0000ffb8 | unc 00000000 |
    

Can't get xine to work, it just crashes. Mplayer doesn't seem to have any options for DVB. I'll have to find some software to get it to work under Linux.

Todos ticked off:

Todo:

2003-10-19 22:22

So, it's been a long time since I've written. The reason is that the damn thing doesn't work. Since my success, I readjusted the dish and it hasn't worked since. Exception - a few days later I got Hotbird signals. But after many many more attempts, I never got it working, and had to conclude that there just wasn't enough visibility of the satellite from my log cabin. So I waited...

Then I moved into my new house, bringing along my satellite dish. I bought a table leg and a quarter circle piece of wood from Obi to mount the thing on, about 5 EUR each. Having done that, I put it out, pointed it in the direction it should work, and tried it. Complete and utter failure :-( What's more, the quarter circle piece of wood was not even remotely stable, it blew over in the wind. And in the rain, it bent so that now it's even less stable than it was.

Nevertheless, I kept trying. I bought a rather groovy spirit level from Obi - it attaches to pipes, and has three spirit levels so you can tell if the pipe is vertical or not. Works excellently on my table leg. I also spent an uncomfortable 20 minutes struggling back from the school a big paving slab to hold it down with. I spent ages trying to get the bloody thing level, eventually using, if you can believe it, piles of 1c coins to prop it up. Still no joy however, for either Astra and Hotbird.

It's about this time that I realised that I was reading my compass wrong. I was aligning the needle with the big arrow and trying to align the dish with the rotating disk. Instead I was supposed to align the needle with the arrow on the rotating disk, and aligning the dish with the big arrow on the base. So instead of pointing at 10 degrees East, I was pointing at 10 degrees West. And, horrors, when I looked at the correct direction, Astra is straight through the building, and Hotbird is *just* on the edge. Dammit!

I'm not giving up yet though. There are plenty more satellites in the sky, I reasoned, so let's at least find one I can see and keep my card exercised.

It turns out that the company behind Hotbird, Eutelsat, keep a whole fleet of satellites in the sky. The big prize is at 13 degrees, but there are also satellites at 28.5, 10, 16, 7, 36, etc. There are channels on these, but it doesn't look like much. I downloaded a PDF of their listing. The best of a bad bunch seems to be at 7 degrees, called "W3". It's got BBC news 24, and that alone would be worth the effort I've put in so far. Just about. OK, I'm stretching. For reference, after plugging this through the calculator, it's at 186.134 azimuth, 34.54 degrees elevation, a nice clear patch of sky from my balcony.

I had a go, bringing up the windows software, but it doesn't have TV listings for W3. I tried tuning specifically into the frequency with BBC news 24 on, but nothing. I decided that it would probably be better to just see if Hauppauge has downloadable TV listings for other satellites. They should, dammit. Then maybe I can try more.

I'm not completely sure about the angle of the dish either - I'm wondering if the balcony is getting in the way. I should probably measure it more completely, getting down and dirty on the floor with a protractor. Oo-er.

That reminds me, there's a rather groovy device available from Obi that allows you to measure angles accurately. That, plus my spirit level, should finally allow me to measure exactly what angle the dish is pointing at. So I guess more money for Obi.

I also still need a replacement for my sector of wood, which is unadulterated crap for this job (to be fair, it's actual job is being the corner of a shelving unit indoors...). I'll probably ask someone around work or something. One thing I do have is some sort of fibreboard packaging that my wardrobe came with, in the form of long strips. I've already had a go and they work much better than 1c coins :-)

Todos ticked off:

Todo:

2003-10-25 16:52

I got the latest TV software from the Hauppauge website, nova-pci215a.exe. After installing this, I found that it's way better than the old one, and it has lots and lots of satellites, including W3. Rock. Handy, because looking for listings on their own got me nothing.

I also bought that protractor thing - there were only two left! It's definitely a way cool bit of equipment. Unfortunately, when I had a go at measuring elevation with it, it read 23 degrees. Definitely something wrong there. Looks like it was a bad assumption that the angle of the dish is the same as the angle between the mounting and the bracket. So I can't use it to get a more accurate elevation.

However, it was handy for working out if my balcony was in the way. I used one of the longer packing strips (handy again!) balanced on the balcony wall and used the protractor to find the place it needed to touch the ground to just clear the wall. I was surprised to find that the dish could be a lot further forward. In fact, it could conceivably have been blocked by the balcony above. Hmm, probably not, but it does at least mean that I've got a little more cable to play with. Just occurred to me that I can get even more cable by not having the cable go through the receiver arm. Just did that - it helps a *lot*. Now I just have to point the dish and try receiving W3 again. For later I think, it's way too cold right now and I'm tired.

Todos ticked off:

Todo:

2003-11-02 12:55

I did have another go at getting a signal. No luck :-( However, talking to Emanuel, he seems to think the signal detectors are much better than I thought. Apparently they do detect any signal at all, not just a particular frequency. He says I can borrow his, so that might help.

Todos ticked off:

Todo:

2003-12-08 22:34

It took more than a month to extract a signal detector from Emanuel, but I finally got it on Sunday at his Adventsfeier. And wow, is it an extremely cool piece of kit or what? :-) So simple, but works so brilliantly. There are a few technicalities to sort out before it will work:

Once I figured all of that out, I connected everything together. You point the satellite more or less where it should go. Then you adjust the pot until it buzzes in a low tone and the light is most of the way to all red. Then you wobble the satellite around hoping that the light will go green and the pitch will increase.

I pointed it at my wacky Georgian satellite, but couldn't find any really useful signal. Then, since I was feeling lucky, I had a go at Hotbird. No good signal - but then I decided to keep the Azimuth where I thought it should be and try the elevation. To my astonishment, I almost immediately found a patch of good reception. I adjusted the pot back down and adjusted more finely, and then screwed the elevation down. I didn't expect it to work really. But to my further astonishment, when I ran the software, it immediately showed reception.

Doing a scan showed it was definitely the goods. Most channels seemed to have 100% quality, and signal strength varied from 20% or so up to 70%. It claimed to detect over 800 TV channels!

However, the vast majority of them didn't work, and there really did seem to be fewer than 800 things in my list. And I don't have things like Erste, ProSieben, etc. None of the ones marked with a '#' worked, which I guess still means encryption. But a lot of the ones that weren't didn't work either. I don't know if that means bad reception or what.

However, I do have the BBC. Er, and the sailing channel in Italian. And any number of channels devoted to women rubbing themselves while a phone number obscures their naughty bits. I watched the BBC news - my god that was shite. Who the hell is that shouty woman? Why is she so shouty? I'd forgotten how crap TV is. Oh well, that was never the point, was it? :-)

I managed to delicately remove the satfinder so I'll give that back to Emanuel tomorrow. In the meantime, I guess it all works. Thing to note: the dish is sitting at 32 degrees elevation. So clearly my scale is completely useless. Oh well. I definitely need to buy my own satfinder, they're excellent.

Next step is to get it working under Linux. That's probably going to require a new kernel. That in turn probably requires my internet connection. So there are wheels within wheels. But I'm definitely on my way!

Todos ticked off:

Todo:

2003-12-13 20:18

Pretty pointless entry this, but just to keep the narrative flow kicking along...

The satellite was working for about three days, until the wind blew the dish over. Yeah, well, what did you expect, it was held up with a paving slab.

During that time, I discovered that ZDF is actually spelt with a "Z" instead of a "2", and hence added it to my list, alongside all the other German channels that it was easier to find. The ones I'm still missing from normal broadcast TV are N24, ProSieben, and the Bavarian channels. Oh no. Where will I watch Oktoberfest coverage now? Woe is me. ProSieben would have been nice though. They're replaced by a few different German language channels and so forth. But it has to be confessed that actually TV really isn't a particularly worthwhile medium.

I'm impressed by Onyx though. In the sense that it has better music than "The Hits". It's got a Goth program at prime time. So that's better than average.

Had a brief go at the whole Linux issue. Downloaded kernel 2.6.0-test11. As an aside, I rejected my 2.5 kernel because the audio driver did strange things to the sound server, terminals didn't do anything after they fired up, the mouse moved too fast, and the console was a weirdly dark grey. These were fixed by using the updated version of the sound driver; compiling in and mounting /dev/pty, which apparently terminals need; adjusting the mouse settings; and not using a framebuffer.

And, as an aside, installing the driver for my TV card. Which, for reference, is under Device Drivers / Multimedia devices / Digital Video Broadcasting Devices / Budget cards with onboard CI connector (CONFIG_DVB_BUDGET_CI), which compiles an object called budget-ci.ko. Modprobing that into the kernel results in this log:

Dec 13 21:35:52 aeon kernel: ttpci_eeprom: module license 'unspecified' taints kernel.
Dec 13 21:35:52 aeon kernel: saa7146: register extension 'budget_ci dvb'.
Dec 13 21:35:52 aeon kernel: saa7146: found saa7146 @ mem c89dc000 (revision 1, irq 10) (0x13c2,0x100f).
Dec 13 21:35:52 aeon kernel: DVB: registering new adapter (TT-Budget/WinTV-NOVA-CI PCI).
Dec 13 21:35:52 aeon kernel: TT-Budget/WinTV-NOVA-CI PCI adapter 0 has MAC addr = 00:d0:5c:21:10:19

So far so good. Then I fire up xine and click on the DVB button. Not so good - xine crashes. Seems to be a segfault. Guess I'll have to upgrade it. Dvbtune doesn't do anything much more useful:

aeon:~# dvbtune -f 12188000 -p h -s 27500 -v 163 -a 104 -t 32
FD 13: fd_dvr DEMUX DEVICE: : No such file or directory

I think I'll just wait until I can upgrade everything in debian. To recap, programs I should investigate are:

I should also investigate the library libdvbpsi0/1. But if none of the above programs list it as a dependency, there's not much I can do.

Todo:

2003-12-21 12:42

I got an offcut from Obi that'll work as my piece of board or something. It's laminated apart from the edges. The edges are rather chipped. I realise that I really do need this thing to be rainproof, so I've used masking tape all around the edges and also layers of it over the base of the post around the screws. I also put masking tape over the top of the post, to stop water getting inside. I've put those little squares of packing stuff underneath too, fastened with yet more masking tape. One at each corner, one under the post. That's to stop the laminate getting scratched on the concrete. I'll use the old piece of wood underneath the paving slab to stop the top getting scratched. The board cost only 3 EUR.

I also bought a satellite finder, which isn't nearly as groovy as Emanuel's, but it'll do. While I was in Conrad I saw you can get a complete satellite kit, including satfinder like Manu's. Damn, shoulda got that. This satellite finder just has a needle, no noise or light, and it doesn't look very weatherproof. It cost 19 EUR. And I bought a 10m cable for another 9.95 EUR. Starting to get expensive...

The other thing I saw at Conrad is a special flat cable, only 10cm long, designed for being the piece that goes through your window. Looks really cool, but 17 EUR seems a bit steep.

I managed to get Debian upgraded. But I haven't got the satellite set up enough to try out any software. DSL isn't working under Debian yet (although I've had it working fine under Suse and Knoppix). That's a problem since I'll probably need some extra software. But I can at least give Xine another go.

I still need to connect up everything.

Todos ticked off:

Todo:

2003-12-21 17:41

Just tried to set up the dish - didn't get any interesting reception, and gave up because it was too cold. Hmm, beginning to look like the same old same old...

Todos ticked off:

Todo:

2004-01-25 16:54

I've just discovered that dvbtune needs two modules to do its work - not just the budget-ci driver, but a "frontend" driver too. The kernel doc just recommends compiling all of them and trying each in turn. Sounds sensible, will do.

2004-01-31 18:26

In the end I decided to just go to Conrad and buy a new satellite finder. I also bought a new cable. And hey presto, it was trivially easy to find the satellite again. Still not sure if it was the cable or the finder that was the problem.

2004-01-31 18:59

I just had a go with the new frontends. The frontend appears to be stv0299:

Jan 31 21:05:27 aeon kernel: drivers/media/dvb/frontends/stv0299.c: setup for tuner SU1278/SH
Jan 31 21:05:27 aeon kernel: DVB: registering frontend 0:0 (STV0299/TSA5059/SL1935 based)...
    

And this is what DVB now gives:

aeon:/dev/dvb/adapter0# dvbtune -f 12188000 -p h -s 27500 -v 163 -a 104 -t 32
Using DVB card "STV0299/TSA5059/SL1935 based"
tuning DVB-S to L-Band:8, Pol:H Srate=27500000, 22kHz=off
polling....
Getting frontend event
FE_STATUS: FE_HAS_SIGNAL FE_HAS_CARRIER
polling....
Getting frontend event
FE_STATUS: FE_HAS_SIGNAL FE_TIMEDOUT FE_HAS_CARRIER
Not able to lock to the signal on the given frequency
    

Xine doesn't seem to have the appropriate plugin - I was running as root, so it's not a lack of permissions. I'll try to find a good frequency in Windows.

2004-01-31 19:47

OK, I'm back. For reference, here are some frequencies:

ChannelFrequencyPolarisation
BBC World12596.000V
Onyx12691.000H
ARD11603.000H

And once I remember to set the polarity, this is what I get:

aeon:~# dvbtune -f 12596000 -p v -s 27500 -v 163 -a 104 -t 32
Using DVB card "STV0299/TSA5059/SL1935 based"
tuning DVB-S to L-Band:8, Pol:V Srate=27500000, 22kHz=off
polling....
Getting frontend event
FE_STATUS: FE_HAS_SIGNAL FE_HAS_LOCK FE_HAS_CARRIER FE_HAS_VITERBI FE_HAS_SYNC
Event:  Frequency: 12595569
        SymbolRate: 27500000
        FEC_inner:  3
 
Bit error rate: 65280
Signal strength: 41605
SNR: 46452
FE_STATUS: FE_HAS_SIGNAL FE_HAS_LOCK FE_HAS_CARRIER FE_HAS_VITERBI FE_HAS_SYNC
A/V/TT Filters set
    

Which I guess is good? Xine still doesn't like it. Even when I try it as root. Scan doesn't do anything either:

using '/dev/dvb/adapter0/frontend0' and '/dev/dvb/adapter0/demux0'
WARNING: filter timeout pid 0x0011
WARNING: filter timeout pid 0x0000
dumping lists (0 services)
Done.
    

This satellite HOWTO looks useful.

The VDR program looks useful:

Get:6 http://http.us.debian.org unstable/main vdr-kbd 1.2.6-1 [272kB]
Get:7 http://http.us.debian.org unstable/main vdr-lirc 1.2.6-1 [272kB]
Get:8 http://http.us.debian.org unstable/main vdr 1.2.6-1 [157kB]
    

Asked me not too many intelligent questions for pre-configuration.

I tried vdr-kbd. There's a lot of configuration files it needs, and it doesn't install them by default - lame! Also, it doesn't do anything. Looking at a trace of what it's doing, it seems to be timing out on a futex, whatever that means. Anyway, the thing doesn't work. I'm going to reboot into Windows to watch some actual telly.

2004-01-31 21:54

I didn't actually watch TV, cause I've still got that annoying bad sound problem. I tried installing a new version of the software, which inconveniently wiped out my preferences, but it didn't fix the problem.

One note - installing the satfinder clearly greatly decreases the signal. I got a much better signal after disconnecting the satfinder.

2004-02-03 21:49

I proved conclusively that I have perfect reception, and that my bad noises and occasional delays in the picture are caused by the player(s). Both ProgDVB and Hauppauge suffer the same problems, although weirdly ProgDVB seems to oscillate between good and bad more quickly. But anyway, I saved a stream to disk using ProgDVB and under linux it played fine - even carefully looking out for the places it went bad when I was watching it live. Moral of the story - use Linux.

So on that topic... I flirted with the idea of xawtv. However, having installed it it's very clear that it's only for analogue TV (the linux drivers are in a whole separate configuration tree under media). So I'm back to xine.

However, I've just found this site. Seems to be Australian specific (oh the irony!) but advice like "use dvbstream", which I would never have thought of otherwise could be important.

Hmm, no joy. I did find a channels.conf on the web. Apparently you're supposed to put it in ~/.xine. So I've done that. The problem is though that it turns out that dvbtune is lying to me. It isn't successful at all. I get the same result if I take any random frequency. dvbstream and scan tell the story - they print error messages. Something is clearly wrong...

Ah, too many zeros. This works:

      dvbstream -f 12092 -p h -s 27500 -o -v 4416.
    

OK, correction again. Taking off the zeros helps, now I get the same output as dvbtune. But it still doesn't stream anything. Something's still wrong.

This is the channels.conf file entry I want:

BBC World:12597:V:S13E:27500:163:92:41:101:8204:318:9400:1
    

Interestingly, if I run this command several times:

dvbtune -f 12597000 -p v -s 27500 -v 163 -a 104 -t 32
    

...I get bit error rates that start off bad but then get better:

Bit error rate: 65280
Signal strength: 42241
SNR: 47571
Bit error rate: 12544
Signal strength: 42528
SNR: 47559
Bit error rate: 52480
Signal strength: 42153
SNR: 47502
Bit error rate: 65280
Signal strength: 41916
SNR: 47385
...
Bit error rate: 512
Signal strength: 41897
SNR: 47595
...
Bit error rate: 0
Signal strength: 42118
SNR: 47646
    

...aha! and now this works:

dvbstream -f 12597 -p v -s 27500 -v 163 -a 104 -t 32 -o
    

...most exciting!

Oh my god! It works! Only if I use it as root. And I had to manually edit the channels.conf file so that only the BBC is there. But it works! Goddamn it! Hooray! Hooray! I'm going to watch some telly now :-)

Incidentally, I found before that I could only watch TV with root. But root couldn't get any audio output. Eventually I just gave everyone rw permission on /dev/dvb/adapter0. That works (but reset the colour to zero again - weird how xine does that). I can't figure out how to change channels.

2004-02-07 21:18

I still can't get anything except the BBC :-( I don't know why, it's very strange.

2004-02-08 11:15

I discovered the file /etc/devfsd/perms. This allows you to set up permissions in the devfs. The thing to do here is configure it so that /dev/dvb/* gets the "video" group, so allowing mexon to use it:

REGISTER ^dvb/.*                PERMISSIONS root.video  0660
    
usermod -G kmem,cdrom,audio,video,src mexon
    

We'll see if that works next time I reboot.

2004-02-08 17:41

No, it didn't work, because I don't have execute permission on the directories. So I'm trying this:

REGISTER ^dvb/[a-z0-9]+         PERMISSIONS root.video  0770
REGISTER ^dvb/[a-z0-9]+/.*      PERMISSIONS root.video  0660
    

2004-02-08 22:10

I'm having another go trying to get some channel other than the BBC. Using dvbstream, I can definitely get something out of there. I then downloaded replex. Using replex, I can convert the transport stream to an mpeg:

replex-0.0.9/replex -o mpeg -t MPEG2 ts
    

So what I tried doing was creating two named pipes, ts and mpeg. In addition to the above command, I did this:

dvbstream -f 12692 -p h -s 27500 -v 161 -a 84 -o > ts
    

...and this:

xine stdin:/ < mpeg
    

Which does play a little bit, but then dies horribly. A lot of the stuff I've seen online seems to suggest ts2es as a good utility, but I think replex is a drop-in replacement. Anyway, this message is pretty useful. It discusses problems that sound similar to mine in many ways. It suggests using the "N" button in xine to change channels. I've never tried that, so I'm going to now.

Nope, that doesn't work. That is, I can use it to change channels, but xine just freezes same as if I had used that channel from the start. Although it does turn out that it's the down arrow I should be using on the remote control. Handy.

Anyway, I'm going to try mplayer, like they're using. I'll have to find some debs for it. This page says how.

OK, that didn't go according to plan. On a side issue, I just read up a big long thread between the developer of MPlayer and debian legal. The patent issues are really tangled, and I can see both sides of the argument. But basically, the issue isn't resolved, MPlayer is in a very chaotic stage of development. I'd best avoid installing it.

Instead, I'm trying mpeg2dec, which claims it can handle the TS directly. Woohoo!

OK, that didn't work, even trying the three-program two-pipe approach above. What I notice is that dvbstream only manages to pump out 2MB of data before dying.

Interestingly, the release notes for the latest xine mention xine segfaulting or hanging under 2.6. This is for the release just after the one I'm using now. I'm using v0.9.23. Maybe I'll just hang out for the new version.

No, scrap that. That was for the UI. The release I mentioned was for libxine, and I'm using the latest version already. Damn.

After seeing a bug report for something similarish, which suggested that running in gdb fixed the problem (!) I tried doing that myself, but it just segfaulted. I think my only option would be to try to compile the thing with debugging support myself.

2004-02-13 21:20

I just tried dvbstreaming BBC to an output file:

dvbstream -f 12597 -p v -s 27500 -v 183 -a 92 -o > ts
    

What happens is that the file gets "stuck", at a variety of different positions. I could probably map the resultant file sizes into a very nice probability scale :-) I think what's happening is that there are regular errors, and when dvbstream encounters an error it gets stuck or gives up or something. Which is lame.

I think really I'm just waiting on better software.

2004-02-13 22:23

I downloaded a new kernel, but it doesn't help much. What it does have is an FAQ in the documentation bit, including this pearl of wisdom:

        If your card does not have a hardware MPEG decoder you need
        a software MPEG decoder. Mplayer or xine are known to work.
        Newsflash: MythTV also has DVB support now.
        Note: Only very recent versions of Mplayer and xine can decode.
        MPEG2 transport streams (TS) directly. Then, run
        '[sct]zap channelname -r' in one xterm, and keep it running,
        and start 'mplayer - < /dev/dvb/adapter0/dvr0' or
        'xine stdin://mpeg2 < /dev/dvb/adapter0/dvr0' in a second xterm.
        That's all far from perfect, but it seems no one has written
        a nice DVB application which includes a builtin software MPEG
        decoder yet.
    

Worth a shot, no?

Er, well, actually no, because of this paragraph:

        Newsflash: Newest xine directly supports DVB. Just copy your
        channels.conf to ~/.xine and start 'xine dvb://', or select
        the DVB button in the xine GUI. Channel switching works using the
        numpad pgup/pgdown (NP9 / NP3) keys to scroll through the channel osd
        menu and pressing numpad-enter to switch to the selected channel.
    

Didn't work anyway :-(

2004-02-14 19:34

I downloaded new versions of the linuxtv software, but that's not very interesting cause it really doesn't turn out to do anything different. The interesting part is that I figured out a bit more about how szap works, and I figured out how to make scan work.

Scan, it seems, needs more information than just "-c" to get an initial satellite. The downloaded version comes with a file which, for hotbird, is:

# EUTELSAT SkyPlex, Hotbird 13E
# freq pol sr fec
S 12539000 H 27500000 3/4
    

When you do that, and run

./scan dvb-s/Hotbird-13.0E 2>&1 | tee  ~/scan-output.txt
    

...it gives results like:

scanning dvb-s/Hotbird-13.0E
using '/dev/dvb/adapter0/frontend0' and '/dev/dvb/adapter0/demux0'
initial transponder 12539000 H 27500000 3
>>> tune to: 12539:h:0:27500
0x0000 0x2261: pmt_pid 0x1000 EUTELSAT -- SKYPLEX TXP91 (running)
0x0000 0x231f: pmt_pid 0x049a SkyMux -- SKYGATE (running)
0x0000 0x22de: pmt_pid 0x1602 SkyMux -- SKYGATE E-Tera (running)
0x0000 0x227a: pmt_pid 0x1202 SkyMux -- Skygate 600 (running)
    

...not that that's apparently much use, as far as making a channels.conf is concerned. Oh well.

More on szap - if you add the "-r" flag, it makes the transport stream available on /dev/dvb/adaptor0/dvr0. But as soon as the program stops, it goes away. This is useful.

So I was able to verify that you get nothing with onyx, but all the ts data you want out of the BBC. This demonstrates that my problems are not due to anything in xine, but with the driver itself.

In the meantime, I've knocked up a few perl scripts designed to run through every channel in the hotbird file I downloaded and see if data is available or not. It's clear that data is available for more channels than just the BBC. Also, data is available for encrypted channels, so it's not a question of there being weird encryption or something on onyx. When it finishes, I'll try knocking up a channels.conf based on the results and at least see if I can use xine to switch between channels.

2004-05-03 20:12

A few more notes.

Firstly, I discovered what I was doing wrong as far as being unable to receive most of the channels. I simply had the wrong format channels.conf. Duh. I'd downloaded mine off the web because I couldn't get scan to work, but the web version used this format:

:->Astra 19<F8>East
Das Erste:11837:H:S19.2E:27500:101:102:0:0:28106:1:1101:0
ZDF:11954:H:S19.2E:27500:110:120:0:0:28006:1:1079:0
WDR FERNSEHEN:11837:H:S19.2E:27500:601:602:604:0:28111:1:1101:0
    

However, I finally worked out how to get scan to work, with a command like this (scan comes with dvb-utils, which creates the configuration files in the examples directory):

scan /usr/share/doc/dvb-utils/examples/scan/dvb-s/Hotbird-13.0E | sort > scanned-channels.conf
    

When I did that, I got a file that looked like:

BBC PRIME:10872:v:0:27500:620:630:1506
BBC PRIME:11513:h:0:27500:167:108:5108
BBC World:12597:v:0:27500:163:92:8204
BBC:12520:v:0:27500:0:58:8322
BENI CULTURALI:12520:v:0:27500:70:0:8332
    

Although the formats are similar, they have different numbers of fields, and I think this is confusing xine. When I use the scanned file for my channels, I can receive many of the channels. Not all, but many. I very slowly and painfully worked my way through all the channels to see which ones worked. The major pain is that xine crashes on many of the channels. I only got up to "T", but there are 278 working channels so far. Many of them are only test pattern, many more are in languages I don't understand, but still, not too shabby.

I also had a go at Astra and that didn't produce anything:

scan /usr/share/doc/dvb-utils/examples/scan/dvb-s/Astra-19.2E | sort > scanned-channels-astra.conf
    

Note: sometime when I can be bothered I should repeat this experiment and show the full output of both Hotbird and Astra.

Finally, I had a go at Digiturk (Eutelsat W3 7 degrees East). There's no file in the examples directory for this satellite, but I made one up from the data on the web (lost the page, sorry). Here's the file I made:

aeon:/usr/share/doc/dvb-utils/examples/scan/dvb-s# cat W3-7.0E
# Turksat 42.0E
# freq pol sr fec
S 11262300 H 27500000 2/3
    

This did work:

mexon@aeon:~$ scan /usr/share/doc/dvb-utils/examples/scan/dvb-s/W3-7.0E | sort > scanned-channels-w3.conf
scanning /usr/share/doc/dvb-utils/examples/scan/dvb-s/W3-7.0E
using '/dev/dvb/adapter0/frontend0' and '/dev/dvb/adapter0/demux0'
initial transponder 11262300 H 27500000 2
>>> tune to: 11262:h:0:27500
0x0000 0x000a: pmt_pid 0x0025 EUTELSAT -- OpenSky_EN (running)
0x0000 0x0004: pmt_pid 0x0024 EUTELSAT -- Close2Edge (running)
0x0000 0x0008: pmt_pid 0x0023 EUTELSAT -- Network-01 (running)
0x0000 0x0007: pmt_pid 0x0022 EUTELSAT -- OpenSkyPush (running)
0x0000 0x0002: pmt_pid 0x0021 EUTELSAT -- Internet (running)
0x0000 0x0003: pmt_pid 0x0020 EUTELSAT -- Streaming (running)
Network Name 'EUTELSAT'
dumping lists (6 services)
Done.
    

I can tune in, but I only have one channel - a promo channel for OpenSky. Here's the channel list:

Close2Edge:11262:h:0:27500:0:0:4
Internet:11262:h:0:27500:0:0:2
Network-01:11262:h:0:27500:0:0:8
OpenSkyPush:11262:h:0:27500:0:0:7
OpenSky_EN:11262:h:0:27500:39:40:10
Streaming:11262:h:0:27500:0:0:3
    

2004-05-03 22:33

Just having a play around with dvbstream. I'm interested to see if I can get a raw transport stream out of the encrypted channels. Now, I'm sure I used to be able to cat /dev/dvb/adapter0/dvr0, but that doesn't seem to work now. So I'm using dvbstream.

First, with the BBC:

mexon@aeon:~$ dvbstream -f 12597 -p v -s 27500 -v 163 -a 92
dvbstream v0.5 - (C) Dave Chapman 2001-2004
Released under the GPL.
Latest version available from http://www.linuxstb.org/
Using DVB card "STV0299/TSA5059/SL1935 based"
tuning DVB-S to L-Band:0, Pol:V Srate=27500000, 22kHz=off
polling....
Getting frontend event
FE_STATUS: FE_HAS_SIGNAL FE_HAS_LOCK FE_HAS_CARRIER FE_HAS_VITERBI FE_HAS_SYNC
Event:  Frequency: 12597833
        SymbolRate: 27500000
        FEC_inner:  3

Bit error rate: 4864
Signal strength: 40995
SNR: 44082
FE_STATUS: FE_HAS_SIGNAL FE_HAS_LOCK FE_HAS_CARRIER FE_HAS_VITERBI FE_HAS_SYNC
Setting filter for PID 163
Setting filter for PID 92
Using 224.0.1.2:5004:2
version=2
Streaming 2 streams
Caught signal 2 - closing cleanly.
    

So, that works. Next, Onyx:

mexon@aeon:~$ dvbstream -f 12692 -p h -s 27500 -v 161 -a 84
dvbstream v0.5 - (C) Dave Chapman 2001-2004
Released under the GPL.
Latest version available from http://www.linuxstb.org/
Using DVB card "STV0299/TSA5059/SL1935 based"
tuning DVB-S to L-Band:0, Pol:H Srate=27500000, 22kHz=off
polling....
Getting frontend event
FE_STATUS: FE_HAS_SIGNAL FE_HAS_LOCK FE_HAS_CARRIER FE_HAS_VITERBI FE_HAS_SYNC
Event:  Frequency: 12691872
        SymbolRate: 27500000
        FEC_inner:  3

Bit error rate: 14092
Signal strength: 38392
SNR: 40197
FE_STATUS: FE_HAS_SIGNAL FE_HAS_LOCK FE_HAS_CARRIER FE_HAS_VITERBI FE_HAS_SYNC
Setting filter for PID 161
Setting filter for PID 84
Using 224.0.1.2:5004:2
version=2
Streaming 2 streams
Caught signal 2 - closing cleanly.
    

Sweet. Finally, Mangas:

mexon@aeon:~$ dvbstream -f 11681 -p h -s 27500 -v 170 -a 120
dvbstream v0.5 - (C) Dave Chapman 2001-2004
Released under the GPL.
Latest version available from http://www.linuxstb.org/
Using DVB card "STV0299/TSA5059/SL1935 based"
tuning DVB-S to L-Band:0, Pol:H Srate=27500000, 22kHz=off
polling....
Getting frontend event
FE_STATUS: FE_HAS_SIGNAL FE_HAS_LOCK FE_HAS_CARRIER FE_HAS_VITERBI FE_HAS_SYNC
Event:  Frequency: 11682598
        SymbolRate: 27500000
        FEC_inner:  3

Bit error rate: 1536
Signal strength: 44713
SNR: 44979
FE_STATUS: FE_HAS_SIGNAL FE_HAS_LOCK FE_HAS_CARRIER FE_HAS_VITERBI FE_HAS_SYNC
Setting filter for PID 170
Setting filter for PID 120
Using 224.0.1.2:5004:2
version=2
Streaming 2 streams
Caught signal 2 - closing cleanly.
    

So that all works.

2006-05-28 17:41

I'm having a big spring clean in my proj directory, moving everything into subversion. I have a bunch of scripts that I don't know what to do with. So I'm just going to dump them into the log file. I have no idea what they do. First up, attempt_channel:

#!/usr/bin/perl

use strict;

my $channel = shift(@ARGV);
local $SIG{ALRM} = sub { die "alarm\n" }; # NB: \n required
alarm 5;
exec ("szap -c /home/mexon/.xine/channels.conf.full \"$channel\" -r");
    

Here's iterate_over_channels:

#!/usr/bin/perl

use strict;

my $channels = '/home/mexon/.xine/channels.conf.full';
open (CHANNELS, "< $channels");
my @channels;
while () {
  next unless (/([^:]+):/);
  push @channels, $1;
}

foreach my $channel (@channels) {
  open (OUT, ">> /home/mexon/channels.log");
  print OUT "Trying \"$channel\"\n";
  close OUT;

  system("/home/mexon/attempt_channel \"$channel\"");
}
    

And finally try_to_read

#!/usr/bin/perl

use strict;

while (1) {
  my $dvr_dev = '/dev/dvb/adapter0/dvr0';
  open (IN, "<$dvr_dev");

  my $bytes;
  eval {
    local $SIG{ALRM} = sub { die "alarm\n" }; # NB: \n required
    alarm 1;
    my $buffer;
    while (read IN,$buffer,256) {
      $bytes += length($buffer);
    }
    alarm 0;
  };
  if ($bytes) {
    open (OUT, ">> /home/mexon/channels.log");
    print OUT "Got $bytes bytes\n";
    close OUT;
  }

  close IN;
}
    

Back to my homepage
Matthew Exon
Last modified: Sun May 28 17:43:48 CEST 2006