CyTV Manual   
    

CyTV - Network streaming for elgato EyeTV

Version 0.6-pre5

CyTV icon

Contents

0. What is CyTV?

1. Requirements

2. Installation

3. Simple streaming

4. Transcoding

5. Internet streaming

6. Using the remote control GUI

7. Broadcasting to a local network

8. Frequently asked questions

9. Acknowledgements

0. What is CyTV?

CyTV is a streaming solution for elgato's EyeTV family of TV tuners (http://www.elgato.com). It allows you to watch TV and recorded programs over a local network (wired or wireless) or the internet, and it supports many devices compatible with the EyeTV software (see http://www.lucid-cake.net/cytv/index_en.html for a current compatibility chart). You can pause and resume live TV on the client ("timeshift"), and you can also change channels remotely.

1. Requirements

This section only lists the software requirements to run CyTV. Hardware and network equipment is discussed in the sections about individual use cases (3. Simple streaming, 4. Transcoding, and 5. Internet streaming).

1.1 Server

On the server (the Mac that is connected to your EyeTV unit) you need:

  • Mac OS X 10.2.5 or higher (tested up to 10.4.6) with the BSD subsystem installed
  • Safari 1.0 or higher (Safari components are used for Client/Server communication)
  • EyeTV 1.2 or higher (tested up to 2.1)

1.2 Client (Non-Mac)

On non-Macintosh computers, you can watch live TV and change the current channel, but you cannot (currently) skip around in the stream or watch recorded programs. You need the following software:

1.3 Client (Mac)

On Macintosh computers, you can watch live TV, change the current channel, start and stop recording, jump to any position in the live TV buffer or any recorded program, and use an automatic channel scanner that zaps through all available channels. You need the following software:

  • Mac OS X 10.2.5 or higher (tested up to 10.4.6) with the BSD subsystem installed
  • Safari 1.0 or higher (Safari components are used for Client/Server communication)
  • VLC 0.5.3 through 0.8.4a (Videolan Client, http://www.videolan.org/vlc/); if you want to use newer VLC versions (not available at the time of writing), you need a newer CyTV Client as well

Alternatively, you can use the same setup as for non-Mac clients, but of course you won't benefit from the additional features then.

2. Installation

On the server (the Mac that is connected to your EyeTV unit), drag "CyTV Server" to some place on your hard drive, e.g. the "Applications" folder.

On the clients you want to use, install VLC according to the documentation at http://www.videolan.org/vlc/. On Mac clients, additionally drag "CyTV Client" to some place on your hard drive, e.g. the "Applications" folder.

3. Simple streaming

3.1 Overview

This section describes how to stream TV in a local network. Streaming over the internet is described in 5. Internet streaming, but you should read sections 3 and 4 anyway since they describe the necessary basics.

3.2 Requirements

When using EyeTV USB:

  • Server: 300 MHz G3 or faster
  • Client: 500 MHz G3 or faster
  • Network: Airport (802.11b) is sufficient when EyeTV is set to standard quality; Airport Extreme (802.11g) or a wired network is necessary when EyeTV is set to high quality

When using a USB 2 or firewire device:

  • Server: 500 MHz G4 or faster
  • Client: 800 MHz G4 or faster
  • Network: Airport Extreme (802.11g) or a wired network

The requirements listed for client and network only apply when you're not using transcoding. Section 4 desribes how to transcode the stream for a slower client and/or network, but you need a faster server in exchange.

3.3 HowTo (Mac client)

Please follow these steps to start streaming to a Mac client. If there are error messages or other problems on the way, please consult section 3.5 Problems and solutions.

  • Start the CyTV Server application on the server computer.
  • Wait a few seconds, then start the CyTV Client application on the client computer.
  • The client should automatically find the server and present the following dialog:
Server connection window

There should only be one server listed (in case you're wondering: "Apsu" is my server computer's Rendezvous name).

  • Click on "Connect".

It may take a while before playback starts, so please be patient. However, it should not take longer than a minute.

3.4 HowTo (Other platforms)

To stream to non-Mac clients (e.g. Windows or Linux), please follow these steps:

  • Start the CyTV Server application on the server computer.
  • Select "CyTV Server/Preferences ..." from the menu. In the window that pops up, check the "Force server port" option and enter a port number for the server (the default of 8001 should work in almost all cases).
  • Click on "OK" in the preferences window.
  • Click "OK" in the message window that pops up.
  • Quit and restart the CyTV Server application.
  • Start VLC on the client computer.
  • Select "File/Open Network ..." from the menu and enter the following URL:
VLC network connection dialog

(You have to use your server's address of course; 192.168.1.6 is just an example.)

  • Click on "OK".

You have to set the server port preferences only once, and CyTV will remember them. While not necessary, the "Force server port" option does no harm when using Mac clients, so you should also leave it checked in mixed Mac/PC environments.

For controlling the server, there's a rudimentary HTML interface that lets you change the current channel. To access it, go to "http://192.168.1.6:8001/html" with a JavaScript-enabled browser (again substituting the server's name or address for 192.168.1.6). Here's how the page looks like (screenshot taken on a Mac, but also tested with Internet Explorer on Windows):

Channel selection in the browser

Simply click on a channel to switch to it. Please note that you cannot use your browser to start VLC, switch streams or skip back and forth. Future CyTV versions may contain an expanded HTML interface.

3.5 Problems and solutions

"On the client, a window saying 'Connecting to server ...' appears, but nothing happens and it just stays there."
or "I get a message saying 'Cannot connect to the server'."

A firewall on the server may block CyTV's traffic. First, you should open CyTV Server's preferences and select the "Force server port" option - it ensures that CyTV always uses the same port (8001 by default). Next, you should configure your firewall on the server to accept traffic to port 8001. However, please make sure to open this port only for the local network! I can't rule out possible problems in CyTV that could open your machine up for attacks from the internet. To be safe, you should either use a NAT router - since it doesn't allow access to your machine from the internet by default - or a firewall that has seperate rules for local and internet traffic. You can also use CyTV's secure server option (see section "5. Internet streaming"), but it's designed for authenticated and encrypted streaming and only wastes processing time in a local network.

"On the client, VLC is started and the remote control GUI appears, but the stream doesn't play."

If there haven't been any connections to the server for some time, it takes up to 15 seconds for the stream to start playing. Please be patient.

"When changing channels, the picture freezes for a while."

When streaming digital TV, each channel uses different properties (like bitrate or aspect ratio). VLC can't handle this and stops playing. After a while, CyTV detects the problem and resets the stream. If you're using the CyTV client application, the player is then automatically restarted.

"In the middle of streaming, the picture freezes, and the player is closed and reopened after a while."

When a digital channel changes the aspect ratio (e.g. switching to 16:9 at the beginning of a movie), VLC gets stuck. The CyTV client application detects this situation and restarts the player after a few seconds.

"The CyTV Server application says 'Cannot find EyeTV'."

You may get this message when you upgraded the EyeTV software. Please start the new EyeTV version once, and it should be recognized by CyTV in the future. You may also get the same or a similar error message when you renamed the EyeTV application (e.g. to "EyeTV 1.6"). In this case, please change the name back to "EyeTV".

"Playback is choppy and often stops completely."

You have a performance problem somewhere. If it's only temporary (e.g. when you start several applications on the server at once, leading to a loak peak), you should pause playback in VLC, wait a few seconds, and then start it again. If it happens more often, please see section 8.2 Performance for suggestions. If your equipment fulfills the requirements and all the tips don't work, please send a message to cytv@lucid-cake.net.

"There are artifacts (like small green rectangles) when playing the stream."

This is a known problem with VLC versions greater than 0.8.2 (see http://forum.videolan.org/viewtopic.php?t=15747&highlight=mpeg2&sid=3dba0cb30137c0cb94db3fdb9180e961). You can either wait for a fixed version (not available at the time of writing) or use 0.8.2.

"The picture on the client looks ugly when things move fast."

If you're using one of the firewire EyeTV versions (200 or higher), activate deinterlacing on the client computer (see section 6. Using the remote control GUI). You can choose "fast" (low CPU load, mediocre picture quality), or "best" (higher CPU load, high picture quality).

"I've set the server port to 8001, and CyTV doesn't accept connections."

It's possible that port 8001 is in use by another application on your computer. You should try ports 8002 and 8003. If it still doesn't work, please send a message to cytv@lucid-cake.net, and I can look into the problem.

4. Transcoding

4.1 Overview

It's often the case that a fast server computer is available (about 1 GHz or faster), but the network or the client computer is too slow for regular streaming. For example, a 500 MHz G3 as a client is too slow to play EyeTV 200 streams, simply because the data rate is too high. Similarly, an Airport (802.11b) network is not fast enough in this case.

A solution for this problem is transcoding - meaning that the video and audio data is re-compressed with slower data rates than what EyeTV normally uses. Depending on the compression ratio, playback quality will suffer, but it will stay watchable in almost all cases.

Thanks to ffmpeg (http://ffmpeg.sf.net, used internally by CyTV), transcoding happens in real time while streaming. This means that you can record in high quality and still watch over a slow connection or on a slow client computer. The original recording will stay intact.

4.2 Requirements

When using EyeTV USB:

  • Server: 800 MHz G4 or faster
  • Client: almost anything (depending on the transcoding options you choose)
  • Network: 128 kBit/s or faster (depending on the transcoding options you choose)

When using a USB 2 or firewire device:

  • Server: 1.5 GHz G4 or faster
  • Client: almost anything (depending on the transcoding options you choose)
  • Network: 128 kBit/s or faster (depending on the transcoding options you choose)

4.3 HowTo (Mac client)

Please follow these steps to start streaming to a Mac client. If there are error messages or other problems on the way, please consult section 4.5 Problems and solutions.

  • Start the CyTV Server application on the server computer.
  • Start the CyTV Client application on the client computer.
  • When the server connection dialog appears, click on "Advanced ...".
  • Check the "Transcoding" option and fill in some or all of the fields below it (read on for more information):

    Transcoding settings

  • Click on "OK".
  • Click on "Connect" in the server connection dialog.

The most important fields are "Video bitrate" and "Audio bitrate". Together, these values should add up to something less than the available bandwidth - some examples follow below. Width and height should be left empty (meaning that the original stream dimensions are kept) for video bitrates above 1500 kBit/s. For bitrates between 256 and 1500 kBit/s, you should use 352x240 (NTSC) or 352x288 (PAL). For 256 kBit/s or below, 176x120 (NTSC) or 176x144 (PAL) is appropriate, and you should additionally set the framerate to 15 fps (NTSC) or 12.5 fps (PAL).

Regarding audio, you can use anything between 32 and 192 kBit/s (in 32 kBit/s increments). When using 64 kBit/s or lower, you should consider setting the sample rate to 22050 and/or the number of channels to 1.

Example values for streaming over Airport (802.11b, theoretically 11 MBit/s, in practice much less):

Video bitrate: 1150 kBit/s
Width: 352 pixels
Height: 240 pixels (NTSC) or 288 pixels (PAL)
Framerate: [empty]
Audio bitrate: 192 kBit/s
Sample rate: 44100
Number of channels: 2

Example values for streaming over DSL (128 kBit/s):

Video bitrate: 80 kBit/s
Width: 176 pixels
Height: 120 pixels (NTSC) or 144 pixels (PAL)
Framerate: 15 fps (NTSC) or 12.5 fps (PAL)
Audio bitrate: 32 kBit/s
Sample rate: 22050
Number of channels: 1

For other use cases, you have to experiment to find out what works best for you. A future version of CyTV will likely include presets to make it easier. If you want to help, please send settings that work well in a certain environment (server, client, network) to cytv@lucid-cake.net.

4.4 HowTo (Other platforms)

Start VLC on the client computer and use something like the following URL (using your server's address instead of "192.168.1.6"):

http://192.168.1.6:8001/?clientId=1&transcode=true&videoBitrate=1150&audioBitrate=192

Video bitrate and audio bitrate must always be specified. The following optional parameters can also be used: "width", "height", "framerate", "sampleRate", and "numberOfChannels". They correspond to the respective fields in the CyTV Client application.

4.5 Problems and solutions

"Playback is choppy and often stops completely."

You have a performance problem somewhere. You should try a lower video bitrate, possibly also a lower resolution or lower framerate. For additional suggestions (not limited to transcoding), please see section 8.2 Performance. If you still have problems, please send a message to cytv@lucid-cake.net.

"Video and audio are out of sync."

Depending on the exact starting point inside the stream, there are sometimes synchronisation problems. Try clicking "Live" to restart the stream, and the problem should disappear.

"There's no picture at all."

Not all combinations of transcoding settings are accepted by ffmpeg. You should start with the examples given above and change one setting at a time.

5. Internet streaming

5.1 Overview

Simply by transcoding with low bitrate settings, you should already be able to stream over the internet. However, an attacker might be able to see what you're watching and bring down your computer and/or network connection, or possibly even take over your server! This section describes how to setup a secure connection to prevent this.

Warning: Do not stream over an unencrypted connection! Use CyTV's secure server option! A VPN is also an alternative. Even with the secure server option, I take no responsibility for any damage an attacker might be able to cause over the internet!

Before you continue, you should make sure you can find the server computer from the client. In most cases, you need a service like DynDNS (http://www.dyndns.org) and configure your router or computer accordingly. The details are not covered here - there are so many possible configurations that I cannot provide simple instructions for all of them. Instead, you should ask your Internet Service Provider and/or the manufacturer of your router if you need help.

5.2 Requirements

When using EyeTV USB:

  • Server: 800 MHz G4 or faster
  • Client: almost anything
  • Network: 128 kBit/s or faster

When using a USB 2 or firewire device:

  • Server: 1.5 GHz G4 or faster
  • Client: almost anything
  • Network: 128 kBit/s or faster

5.3 HowTo

  • Log in as an administrative user. This is necessary for starting the secure server. Afterwards, you can keep the server running and use Fast User Switching to switch back to a regular user if you wish. (If you set up your Mac with a single user account, you're automatically logged in as an administrative user.)
  • Start CyTV Server.
  • Select "Security/Export server key ..." from the menu. In the dialog that pops up, choose a filename and location. The server key is used by the client to make an encrypted connection, and you have to transport it to the client computer in some way (it contains no sensitive information, so you can eMail it).
  • Select "CyTV Server/Preferences ..." from the menu. In the secure server settings section, check the names of users that you want to allow to make connections.

    CyTV Server preferences

    Warning: Do not permit users with weak passwords to connect! If an attacker guesses or otherwise gains knowledge of the username and password, he or she can take over that account, possibly even the whole computer! If you know how to do it, I recommend setting up a special account for client connections that doesn't have a login shell.

  • Enter a port number for secure connections. The default of 443 should usually work fine (except you have an SSL-enabled web server running) and is intended for connections via proxies. If you use a router to connect to the internet, you have to configure it to forward this port to the Mac where CyTV Server runs.
  • Click on "OK" in the preferences window and again in the dialog that pops up. You don't have to restart CyTV Server.
  • Choose "Security/Enable secure server" from CyTV Server's menu. You will be prompted for your password since accepting connections from ports below 1024 is a privileged operation. (In the current version, a password is requested even for higher ports - this will be corrected in a future version.)
  • Start CyTV Client on the client computer.
  • Rendezvous doesn't work over the internet, so you have to click "Abort" in the "Searching for servers ..." panel. In the "Available CyTV Servers" dialog, check the "Manual" option and enter the name or address of the server manually (e.g. "somename.dyndns.org").
  • Import the server key. To do this, click on "Import Key ..." and select the file you exported from CyTV Server before.
  • Check the "Use secure connection" option.
  • Select the "Username" text field and enter one of the names you allowed to connect in CyTV Server.
  • Select the "Port" text field and enter the port you chose as "Secure server port" in CyTV Server.
  • If you want to connect through an HTTP SSL proxy (for example because you're behind a firewall that doesn't allow any other connections), check the "Connect through a proxy" option. Enter the proxy server's address and port in the form "proxy.server.address:port" in the "Proxy server" text field. Please note that SSL proxies are often configured to only allow connections to port 443, so CyTV's secure server should run on this port. If your proxy requires authentication, please click on "Authentication" and enter your proxy username and password. This information is stored in the file "~/Library/Application Support/CyTV/proxy_auth" which is created in a way so that only the currently logged in OS X user can read it.
  • Click on "Connect".
  • After a while, a password dialog will appear. Enter the password of the user from the "Username" text field.

5.4 Problems and solutions

"When I try to quit CyTV server, it's asking me for my password. Why?"

Not only starting the secure server, but also stopping it is a privileged operation. If you don't provide your password, the secure server will keep running in the background until you kill it from a terminal or reboot.

"How do I stream to non-Mac clients over the internet?"

Currently, you have disable the secure server in CyTV to do that. The URLs to use in VLC are described in sections 3 and 4. However, do this only over a secure connection (for example a VPN or an SSH tunnel)!

6. Using the remote control GUI

6.1 Overview

When streaming to Mac clients, you can use the CyTV Client application to control EyeTV and CyTV Server remotely.

6.2 HowTo

The remote control GUI looks like this:

CyTV remote control GUI
  • With the channel selector in the upper left, you can directly choose a channel. Please note that this doesn't work reliably with the EyeTV 500 (but the "+" and "-" buttons do).

  • The "R" button next to it refreshes the channel selector to reflect the actual current channel. This is only necessary when someone switches channels in EyeTV directly while streaming.

  • The "-" and "+" buttons switch to the previous and next channels.

  • The "Scan" button zaps through all channels, showing each one for 5 seconds. Clicking on "Scan" again stops it.

  • The list in the middle shows all available streams (recorded and live). To watch a recording, double click on it in the list or select it and press Enter.

  • The slider below the stream list indicates where you are in the currently playing stream. Drag it to the left to skip back in time or to the right to skip forward.

  • Click on the "Live" button to instantly switch to the live TV picture.

  • Click on "Record" to start recording in EyeTV. Click on "Record" again to stop it. Please note that recording automatically stops after 3 hours (or even after 1 hour in early EyeTV versions). This limit is imposed by the EyeTV software and also applies when you press the red record button in EyeTV. Future CyTV versions may contain a workaround to allow unlimited recording via the remote GUI.

  • The "Unlimited buffer" option temporarily overrides EyeTV's live buffer size. If you pause playback for a longer time than the capacity of the live buffer, you lose part of the program when you continue later. This happens regardless whether you use CyTV or EyeTV alone. By checking "Unlimited buffer", the buffer grows as large as needed when pausing.

  • The "Cache state" indicator shows how well the streaming buffer is filled. The buffer should at least be half full at all times, or playback might stutter (see section 8.2 Performance for solutions). However, the indicator is only updated when CyTV Client is the foreground application.

  • Next to "Now playing", the title of the current recording or the text "Live TV (buffered)" is displayed.

  • The VLC settings at the bottom can be used to adjust the picture. The most important option is "Deinterlace" - if the picture shows comb-like artifacts, set it to "fast" (low CPU load, mediocre picture quality) or "best" (higher CPU load, high picture quality). With the "Aspect ratio" option, you can cut off black borders at the top and bottom (very useful when watching fullscreen on widescreen displays). The "Gamma" setting can be used to enhance the contrast of the picture. Usually, only values between 1 (no change) and about 1.5 (much higher contrast) make sense. All VLC settings are applied after starting the next stream or pressing "Live".

  • Press the "Select" button to select the currently playing stream in the stream list.

6.3 Keyboard shortcuts

There are also some keyboard shortcuts (globally available, even when CyTV Client is not the foreground application):

  • Alt+Command+Left Arrow: skip back 30 seconds
  • Alt+Command+Right Arrow: skip forward 30 seconds
  • Alt+Command+Up Arrow: next channel
  • Alt+Command+Down Arrow: previous channel

It takes a few seconds until skipping actually takes place. This delay is caused by the client cache and may be reduced by choosing a smaller cache size (however, this may hurt stream stability). Switching channels takes a bit longer, even with small caches (see section 6.4 Problems and solutions below).

The time to skip back and forth - 30 seconds by default - can be adjusted in CyTV Client's preferences ("CyTV Client/Preferences..." in the menu).

Currently, the keyboard shortcuts cannot be configured or disabled. This might change in a future CyTV version.

6.4 Problems and solutions

"When I switch channels, it takes 20 seconds until the new one shows up on the client!"

There are several caches and buffers between EyeTV and CyTV Client, together causing this delay. Future CyTV versions might use an EyeTV plugin to grab the stream with less delay, but for now, you have to live with the effect. You can lessen it a bit by specifying a lower cache size when starting CyTV Client (but don't go below 256 KB). If the stream isn't fluid anymore, use a higher cache size again.

"I can use the slider or the hotkeys so skip around, but how do I pause?"

Use the pause button in VLC (or simply make VLC the active application and press the space bar).

"The channel labels in the channel selector are wrong."

In CyTV Server, open the preferences and try the different "Channel numbering" options (please restart the client and the server after making a change). "AppleScript" should usually work best. If you still have problems, please contact me at cytv@lucid-cake.net.

"How can I watch in full screen mode?"

Make VLC the active application and choose "Video/Fullscreen" or press Command-F.

7. Broadcasting to a local network

7.1 Overview

Connecting to CyTV Server from more than 1 client consumes many resources, making it unusable for broadcasting to several machines. However, you can use VLC as a broadcaster between CyTV Server and multiple clients (also running VLC).

7.2 HowTo

  • Start CyTV Server as usual.
  • Start VLC from the command line (either on the same machine as CyTV Server or on a different one, Mac or PC). It should look something like this on a PC:

    C:\Program Files\vlc-0.7.2> vlc http://192.168.1.6:8001/?clientId=1 --sout udp:192.168.1.255

    and like this on a Mac:

    Apsu:/Applications/vlc-0.7.2/VLC.app/Contents/MacOS andreasj$ ./VLC http://192.168.1.6:8001/?clientId=1 --sout udp:192.168.1.255

    This command will open a connection to CyTV Server running on 192.168.1.6 and broadcast the stream to all computers in the 192.168.1 network. You can also use multicast if your network equipment supports it:

    C:\Program Files\vlc-0.7.2> vlc http://192.168.1.6:8001/?clientId=1 --sout udp:224.0.0.0

    Finally, you can instruct CyTV Server to transcode the stream before broadcasting, saving a lot of bandwidth and allowing playback on slower client machines:

    C:\Program Files\vlc-0.7.2> vlc http://192.168.1.6:8001/?clientId=1&transcode=true&videoBitrate=1500&audioBitrate=192 --sout udp:192.168.1.255

    The available transcoding options are described in section 4.3.

  • Finally, start VLC on as many client machines as you wish. Choose "File/Open Network ..." and select "UDP/RTP" for receiving broadcasts to a whole network (e.g. 192.168.1). Clicking on "OK" should now start playback. If you specified a multicast address on the broadcast machine (e.g. 224.0.0.0), you have to use the "UDP/RTP Multicast" option on the clients and enter the address in the "Address" text field.

For more information about VLC's broadcast/multicast capabilities, see the VLC documentation at http://www.videolan.org/doc/vlc-user-guide/en/vlc-user-guide-en.html.

8. Frequently asked questions

8.1 General

"I have a problem or suggestion regarding CyTV. How can I contact you?"

Please send an eMail to cytv@lucid-cake.net.

"Which TV tuners does CyTV work with?"

Please take a look at the compatibility chart at http://www.lucid-cake.net/cytv/index_en.html. In summary, CyTV works best with devices that have an integrated MPEG encoding chip (or receive already encoded digital TV streams). When using models that rely on software for encoding, e.g. the EyeTV EZ, you should be able to stream recordings, but not live TV. Tuners that are not supported by the EyeTV software cannot be used with CyTV at all. For a future version, I plan to provide a plugin interface - this way, arbitrary TV sources could be supported as well as playback of videos stored anywhere on your network. However, I don't have a fixed schedule for this feature, as my spare time is limited and not really predictable.

"Can QuickTime player receive the stream?"

No. It looks rather time-consuming to implement QuickTime support, and I don't currently plan to add it.

"Do you accept donations?"

Yes, I do. Please go to http://www.lucid-cake.net/cytv/index_en.html and click on the "Make a Donation" button for instructions. You can choose any amount you like. By making a donation, you make it easier for me to continue development.

"How can I watch TV on the server while streaming? As soon as I start CyTV Server, the EyeTV application is hidden and playback is paused."

This is a performance measure. On many machines, serving TV is possible, but not if you're watching at the same time. If you want to try it anyway, go to CyTV Server's menu and uncheck "Let CyTV control EyeTV". Then go to EyeTV and start live TV or watch a recording. If your server is fast enough, streaming will continue. If not, playback on the clients will get choppy or stop completely.

Changing this option works immediately - you don't have to restart CyTV Server or EyeTV. It's also remembered, so you have to choose a setting that works for you only once.

"What's really going on when using the 'secure server'?"

CyTV Server starts an sshd instance with its own server key and with the allowed users restricted to the ones chosen in the preferences. It's not using the sshd instance that runs when you enable "Remote Login" in the sharing preference pane. The reason is to make using a secure connection with CyTV as simple as possible (without a bunch of instructions like "Activate this and that in the preferences, edit /etc/sshd_config and uncomment blah, etc.). You can see the command line arguments to sshd by executing "ps wwaux | grep sshd". By default, a 1024 Bit RSA key is used. You can override this by starting CyTV Server once, then quitting it and using ssh-keygen to replace "~/Library/Application Support/CyTV/server_rsa_key" and "~/Library/Application Support/CyTV/server_rsa_key.pub".

The client simply opens an SSH connection to the server and tunnels the stream through it.

"VLC stops playing in the middle of a recording."

EyeTV allows you to change the encoding quality while recording - don't do this if you want to watch the recording via CyTV! The problem is that VLC stumbles over the quality change and will only show the first part.

"I want to let the server run 24/7, but I'm afraid of damage to my harddisk because EyeTV writes to the buffer all the time."

There's an option in CyTV's "Performance" menu called "Close TV window when inactive". When this option is selected, writing to the buffer is stopped when no client has been streaming live (or timeshifted) TV for one minute. However, EyeTV sometimes has problems waking up again later (requiring unplugging the EyeTV unit and/or restarting EyeTV), so use the option only if necessary.

There's also a possible problem when using transcoding: During the first connection after a period of inactivity, audio and video of the live stream may be out of sync by 1-2 seconds. In this case, simply click the "Live" button to restart the stream.

"I pressed 'Record' in CyTV Client to stop a recording, and now I can't change channels anymore."

If you schedule a recording in EyeTV and stop it manually (either in EyeTV or CyTV), a dialog pops up that asks if you really want to stop recording. Unfortunately, this dialog suspends AppleScript communication with EyeTV, and remotely controlling it doesn't work anymore. Other than walking over to the server and dismissing the dialog, I can't offer a solution or workaround for this problem yet.

8.2 Performance

"Playback often stops./The cache indicator in the client always goes to the far left after a while."

There are a lot of possible client/server/network combinations, and one weak component is enough to prevent fluid streaming. Below is a list of things you can check with regard to the individual components.

Server:

  • Take a look at the CPU load while streaming (you can use "/Applications/Utilities/Activity Monitor" for this). If the idle figure is below 5%, you have a performance problem (it might work anyway, but not reliably). If you're using transcoding, reducing width and height of the picture saves a great deal of processing time. Make sure the option "Let CyTV control EyeTV" in CyTV Server's menu is checked. Finally, you should close all unneeded applications. Apple's Mail is particularly nasty since it grabs a whole lot of processing power every time it receives new mails. Of course, you can also buy a faster server machine ;-)

Network:

  • If you're using Airport (802.11b), make sure you either stream with EyeTV USB or transcode the stream to lower bitrates (1150 kBit/s for video and 192 kBit/s for audio should work).
  • If you're using Airport or Airport Extreme, take a look at this document: http://docs.info.apple.com/article.html?artnum=108065. It talks about streaming audio with AirTunes, but all the points also apply to video streaming.
  • If you're using an Airport or Airport Express base station, try setting up a computer-to-computer network instead. In some cases, this can considerably improve performance.
  • Play around with Airport's "Interference robustness" setting to see if you get better performance.
  • Don't overload your network. In most networks, no more than one client can watch a stream at the same time. For broadcasting to several machines, see section 7. Broadcasting to a local network.
  • Increase the cache size in the "Connect to server" window (see section 3.3 for a screenshot). The default of 768 KB should be enough in common cases, but setting it to higher values can help in problematic situations (e.g. when the client has bad Airport reception).

Client:

  • Take a look at the CPU load while streaming. If the idle figure is below 5%, you have a problem. If you're using transcoding, try to reduce the bitrates. Quit all applications you don't need. Make VLC the foreground application (this improves performance a little). Or simply buy a faster machine (no, I'm not working for Apple ...).

9. Acknowledgements

Thanks to elgato for producing EyeTV - it's such a nice toy! I also have a TV card in a Windows PC, and it constantly drives me crazy (not to mention the abysmal product support) ... EyeTV, however, is very nice and super easy to use.

Thanks to the Videolan team for their great VLC player! It's the only player that works reliably with a simple HTTP stream (no RTSP, no chunked encoding, no content length) - wow!

I'd also like to thank everyone who has tested beta versions, especially the following people:

James A. Baker, Nick Freeman, John Maxwell Hobbs, Bani, Roger Hass, Viktor Glemme, James Seigel, Steve Michel, Giorgio Occhioni, Chris Searle, Zachary Benz, Peter Jurg, Andrey, Thomas Rugino, Mark Tennent, Mark Derbyshire, Daniel Knippers, Jacob Schultz, and Stefan Wright.

I hope you let me continue bothering you with bug ridden release candidates in the future ;-).

Finally, a big thank you to Markus Fest from elgato for providing me with an EyeTV 200 test unit and software updates!

(c) 2003-2006 by Andreas Junghans

Last update: 04/26/2006