This is a utility to allow control of the TiVo display (video and audio). This only affects the output sent to the TV -- it has no effect on what is recorded.
The control uses the IOCTLs discovered and documented by embeem (mbm).
Copyright (C) 2002 Graham R. Cobb. The package is distributed under the GPL (see the copyright notices and the COPYING file).
DISPLAYCTL For TiVo is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
DISPLAYCTL For TiVo is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
IMPORTANT NOTES: TiVo is a registered trademark of Tivo, Inc. This software is not created, endorsed, reviewed, approved or in any other way associated with Tivo, Inc.
The DISPLAYCTL distribution contains
sources and some informational files as well as the executable: displayctl
.
Copy the displayctl
executable to a suitable directory on the Tivo
(e.g. /var/hack/bin
).
Summary usage information can be displayed by invoking
dsplayctl
with the --help
option.
displayctl
executes display control commands specified as options,
in the order they are specified on the command line.
Any error terminates processing immediately -- remaining options are ignored.
-h
, -?
, --help
Display the usage information and exit. Any further options are ignored.
--verbose
Describe the commands as they are executed.
--debug
Display debugging information.
--version
Display program version and build information and exit. Any further options are ignored.
-v on|off
, --video on|off
Turn video display on or off. This leaves text and sound unaffected. Note that the video continues playing (invisibly) even if the output is turned off.
-t on|off
, --text on|off
Turn on screen text overlay display on or off. This leaves video and sound unaffected.
-s on|off
, --sound on|off
Turn sound output on or off. This leaves video and text unaffected.
-d on|off
, --display on|off
Turn the whole output display on or off: video, sound and text.
-p
, --pause
Pause video (sound and vision). Note that this low level pause is different from pressing the Pause button on the remote: it cannot be restarted using the Play button on the remote.
-r
, --resume
Resume video playing.
-S NNN
, --slow NNN
NNN
is a numeric value.
Slow motion output (sound is muted).
Larger values of NNNN
cause slower playback.
The effects of these options are not completely understood.
-f
, --frame
This option issues the 0x3ED ioctl which has something to do with frame advance.
-T on|off
, --passthru on|off
This option issues the 0x413 ioctl which is supposed to turn RF passthru on and off. It appears to have no effect on my TiVo.
--ioctl NNN
NNN
is a numeric value. To specify a value in hexadecimal use a 0x prefix.
This option issues the specified ioctl.
The data will be specified as 0 unless a previous --data
option has been given.
A return value of 0 will be ignored (assumed successful).
Other return values will be assumed to be an error: after trying to display the error with
perror
the return value will be displayed.
--data NNN
NNN
is a numeric value. To specify a value in hexadecimal use a 0x prefix.
This option specifies the data to be used for subsequent --ioctl
options.
--osd-patch NNN
This option issues the OSD_WRITE ioctl which overwrites data in the OSD buffer.
The starting offset to overwrite is specified as a parameter.
The length of the data is determined from the last --osd-data
or --osd-length
option.
--osd-data NN NN...
This option specifies the data to use in the next --osd-patch
command.
The data is specified one byte at a time --
each argument is interpreted as a byte of data until the next option is seen.
The length of the next OSD_WRITE is set to be the number of bytes specified.
--osd-length NNN
This option specifies the length of the data to be used for the next --osd-patch
command.
This overrides the length determined from a previous --osd-data command but does not modify
data values.
If the length specified is longer than the previous --osd-data command the extra bytes are all 0.
Many options take arguments (e.g. on/off or a numeric value).
The normal getopt
rules for these apply:
-v
), the option
value can either immediately follow the option or can be specified as the
next argument to the command.
For example, in -v+
the -v
option is specified with a value
of +
.
In -v yes
the -v
option is specified with a value of yes
.
--video
), the option
value must be specified as the next argument to the command.
For example, --video on
.
Several options take on/off values.
The following values are interpreted as on
: on
,
+
, true
, yes
,
unblank
, unmute
, restore
, unhide
.
The following values are interpreted as off
: off
,
-
, false
, no
,
blank
, mute
, remove
, hide
.
displayctl -v- -s- -t+
Blank video and mute sound, turn on text display
displayctl --pause --text remove
Pause video and hide text overlay.
displayctl -d off
Turn off display.
displayctl --osd-data 1 2 3 4 5 6 --osd-patch 756
Overwwrite 6 bytes of OSD data starting at offset 756.
displayctl --osd-data 1 --osd-length 512 --osd-patch 8
Overwrite 512 bytes of OSD data starting at offset 8. The first byte written will be 1, the remaining bytes will be 0.
displayctl --osd-length 512 --osd-data 1 --osd-patch 8
Overwrite 1 byte of OSD data starting at offset 8.
Note that the --osd-data
option overrides the previously
specified --osd-length
.
Contrast this with the previous example.
displayctl --osd-data 1 2 --osd-patch 0 --osd-data --osd-length 512 --osd-patch 100
Overwrite 2 bytes of OSD data starting at offset 0.
Then overwrite 512 bytes at offset 100 with zeroes.
The extra --osd-data
is necessary to clear the data from the previous
option so that the data buffer will be all zeroes
(alternatively --osd-length 0
could have been used).
Initial release.
Add OSD stuff.