Humax PVR9200T Media Controller V1.05 (22nd August 2007)
(c) Andy Chappell

*************
RELEASE NOTES
*************

==========
BACKGROUND
==========

This software is an MS Windows console application to control all aspects of
the Humax PVR9200T PVR device attached to a host PC via a USB interface. It is
designed to replicate the functions of the existing Humax Media eLinker V2.1
software and to add a few extra functions that users may find useful.

This primary focus of this software is to provide for more reliable video
file transfers via USB from the Humax to a Host PC.

========
DOWNLOAD
========

The software can be downloaded from the following location:

http://www.enigma.eclipse.co.uk/humax/HumaxMediaControllerV1.05.zip


============
INSTALLATION
============

Note that by installing this software and its associated drivers you will
probably not be able to use the Humax Media eLinker software to access your
device. If you wish to revert back to using the Humax Media eLinker software
then please reinstall the Humax Media eLinker software to restore the original
Humax drivers and software.

This program uses the generic LIBUSB-WIN32 USB drivers (from SourceForge.net)
to communicate with the Humax PVR9200T via the USB interface. This installation
procedure describes how to install these new drivers for Windows XP (SP2)
systems although installation on other Windows systems should involve a similar
procedure.

If your system does not currently have the original Humax Media eLinker
software installed:

1. Attach the Humax PVR9200T to your PC and switch the Humax on (i.e. take it
out of standby).

2. Your PC should display the "Found New Hardware" dialog box with the question
"Can Windows connect to Windows Update to search for software". Select the
"No, not this time" option and click the NEXT button.

3. Select the "Install from a list or specific location" option and click the
NEXT button.

4. Select the "Don't search. I will choose the driver to install" option and
click the NEXT button.

5. Click the "Have Disk" button.

6. Click the "Browse" button on the dialog box that appears and locate the
directory where you unpacked the files for this package.

7. Select the "HumaxSTBAlternate.inf" file and click the "Open" button.

8. Click the "OK" button.

9. Click the "Next" button.

10. Windows will now install the drivers.

11. When done click the "Finish" button to close the dialog box. The drivers
should now be installed.

If your system does currently has the Humax Media eLinker software installed:

1. Click the "Start" button on the desktop, then "Settings", then
"Control Panel".

2. Double-click the "System" icon in the Control Panel.

3. Click on the "Hardware" tab on the dialog box that appears.

4. Click on the "Device Manager" button.

5. In the dialog box that appears, locate the "Humax STB Drivers" entry and
click on the "+" sign next to it to expand the entry.

6. Right-click on the "Humax STB Service" entry and select "Update Driver".

7. In response to the "Can Windows connect to Windows Update to search for
software" dialog box that appears, select "No, not this time" and click the
"Next" button.

8. Select "Install from a list or specific location" and click the "Next" button.

9. Select "Don't search. I will choose the driver to install" option and click
the "Next" button.

10. Click the "Have Disk" button.

11. Click the "Browse" button and locate the directory where you unpacked these
files.

12. Select the "HumaxSTBAlternate.inf" file and click the "Open" button.

13. Now click the "OK" button.

14. Then click the "Next" button to install the drivers.

15. When done, click the "Finish" button to end. The drivers should now be
installed.


===================
RUNNING THE PROGRAM
===================

Ensure the Humax PVR9200T is connected to the Host PC, is switched on and is
not in standby. Run the program by double-clicking on the "Humax.bat" file
from Windows File Explorer. If the program successfully connects to the Humax
then a message to that effect will be displayed followed by the main menu.


=======================
SUMMARY OF MAIN OPTIONS
=======================

The main menu offers the following options:

[1]DISK: Changes to the MP3/Images disk and displays the contents of the
current directory on that disk.

[2]DISK: Changes to the Video disk and displays the contents of the current
directory on that disk.

[C]HDIR: Changes the current directory on the Humax and displays the
directory contents.

[M]KDIR: Creates a new directory on the Humax.

[R]ENAME: Renames a file or directory on the Humax.

[D]ELETE: Deletes multiple files and directories on the Humax.

[X]FER: Allows transfer of files from Humax to PC and vice versa.
- For Humax to PC transfers, automatic error-detection and
retransmission is supported.
- Chase-Transfer functionality is included to transfer video files
currently being recorded on the Humax.

[L]IST: Displays a list of files and directories in the current directory
on the Humax.

[T]REE: Displays a tree of all files and directories from the current
directory downwards on the Humax.

[I]NFO: Displays summary information about the Humax including disk space
usage and current video recording status.

[F]ORMAT: Formats the current Image/MP3 disk partition erasing all files on
the disk.

[S]ETTINGS: Change file transfer parameters and enable/disable USB data
logging.


==============
FILE TRANSFERS
==============

The primary reason for developing this software was to enable more reliable
file transfers between the Humax and a Host PC due to issues with the existing
file transfer process.

Transfers in both directions are implemented. When transferring files from
Humax to Host PC, errors can often creep into the transfer which corrupt the
file data. This software is designed to detect these errors during USB transfer
and, where necessary, request a resend of the file over USB to repair the
missing/damaged data.

At present however, if an error does occur, there is no way to get the Humax to
retransmit just the missing/corrupted data; the entire file must be
retransmitted in order to recover the bad/missing data in the file. This, of
course, adds time to the file transfer process. These errors primarily seem to
affect file transfers from Humax to Host PC.

One way to dramatically improve file transfers seems to be to set the Windows
Process Priority for the process doing the file transfers to REALTIME. This
software sets this priority by default. This can be adjusted in the Settings
option. However, even with this highest priority setting, errors can still
creep into the transfer.

The file transfer procedure implemented by this software goes as follows:

For Image/MP3 file transfers from Host PC to Humax, USB transmission errors
don't seem to be an issue so no error detection/correction is implemented. If
the file being transmitted exists on the Humax, the user is prompted to confirm
overwrite of the file on the Humax. The "Host-Humax Xfer Block Size" parameter
in the Settings option determines the size of the data blocks that are
transmitted to the Humax. Adjusting this parameter may improve transfer
reliability for those experiencing problems. If the user aborts the transfer of
the file before it completes, then the partial file on the Humax is deleted.

For file transfers from Humax to Host PC, error-detection and correction is
implemented to ensure the received file is free from USB transmission errors.
This functionality can be disabled in the Settings option if required. The
"Humax-Host Xfer Primary Block Size" parameter in the Settings option
determines the size of the data blocks transmitted to the Host PC during
transfer. If during the file transfer, an error is detected, a second transfer
of the same file is initiated after the first transfer has completed. This
time, the "Humax-Host Xfer Primary Block Size" setting is used to skip over all
the good parts of the file already received and the "Humax-Host Xfer Recovery
Block Size" setting is used to read just the corrupted parts of the data using
much smaller block sizes.

So why use this strategy? Reading data using large block sizes is much faster
because most of the data transmission stream is data rather than non-data
communication. Using very small block sizes is more reliable but is much slower
because more of the stream is taken up using non-data communication. Further,
in tests, it appeared that reading data in 1KB blocks (recovery block size = 4)
usually produced no errors during transmission. So the strategy is to use large
block sizes to transmit the initial file and to skip over good parts of the
file during recovery (which is faster) and to use the small block sizes to read
just the corrupted parts of the file (which is much slower). Hopefully this
strategy should only require a maximum of 2 transmissions of a file and
optimizes the USB bandwidth during the transfer to ensure that the file is
eventually transmitted free from error.

The user may abort a Humax to Host PC transfer at any time. The partially
transferred file will remain on the Host PC. Future transfers of the same file
will use data from the good parts of the partially transmitted file on the
Host PC and from the incoming USB data stream in order to reconstruct the full
file.

Files on the Humax may use any characters for file names. However, files on
the Host PC cannot use the following special characters: \ / : * ? \ " < > |
The transfer process will ensure that these invalid characters are converted
to the underscore '_' character during transmission. Likewise, Humax file
names are limited to a maximum of 59 characters. Host PC files with names
longer than 59 characters will be truncated prior to transfer to the Humax.

Finally, a mode called "Chase-Transfer" has been implemented for transfer of
video files that are still currently being recorded on the Humax. USB file
transfers are faster than the Humax can record the files to disk so
transferring a file currently being recorded will eventually catch-up with the
current end of the recording. At this point, the file transfer will just pause
until more video file data becomes available. Transfer will complete when the
program being recorded finishes being recorded. If transferring a number of
video files then chase-transfers will commence after all non-chase-transfers
have completed.


========================
GENERAL NOTES AND ISSUES
========================

The following issues should be noted while using this software:

1. Corrupted Directories.
Creating and using your own directories on the Humax is very hit-and-miss.
Quite often, you can create a directory then rename it and it becomes
corrupted! This seems to be an issue with the Humax file system. If you
notice that you start getting errors when attempting to change to a
corrupted directory or while using the 'TREE' or 'INFO' options, then the
only solution is to delete the directory and recreate it again. If possible
try not to use too many directories because the Humax seems to have too
much trouble with them! Also, certain operations are not permitted such as
creating directories on disk partition 2 (the Video files disk) and deleting
the Image and MP3 directories on disk partition 1.

2. Directory Limits.
There is a maximum limit of 1024 entries in any given directory on the Humax
but this software will only display the first 896 entries in the directory
due to limitations in the data block sizes for USB communication. If an
attempt is made to transfer more than 1024 files to a directory then the
transfer will fail and abort when the limit is breached.

3. Deleting Directories.
In order to delete a directory on the Humax, you need to ensure it contains
no entries otherwise the deletion will usually fail.

4. Disk Format Option.
Although a format option is included to reformat the Images/MP3 disk partition,
no USB command exists to do the same for the Video partition so this
software doesn't offer such an option.

5. File Name Corruption.
Occasionally, file and/or directory names appear to get corrupted when doing a
directory listing. Doing a directory listing again usually cures this. I'm not
sure whether this is just a fault with this software or another issue with
the Humax file system.

6. Transfer Process Priority.
This option in Settings sets the Windows process priority of the console
window process. Setting this to REALTIME seems to improve USB data transfer
stability dramatically. Ensure that the Windows account you are using has the
priviliges necessary to allow the process priority to be changed (e.g. System
Administrator) otherwise you'll get a warning message and the process priority
will not be changed.

7. Improving USB Humax->Host PC File Transfers.
It seems the best way to do this at present is to ensure the PC is doing
nothing else while receiving data and ensure the Process Priority is set to
REALTIME. It has been noted that setting the Process Priority to "Normal"
increases the number of transmission errors occurring whilst setting it
to REALTIME can quite often reduce the transmission errors to zero therefore
requiring only a single transfer of a file.

8. Theoretical Transfer Rates.
The theoretical transfer rates displayed in the Settings option are just that -
theoretical. The calculation is only a rough guideline and you're unlikely to
get the max rate. It's really intended to show you the approximate effect of
using different block sizes on USB file transfer throughput.

9. Faster USB Data Transfers.
The only way to achieve this would be for Humax to ditch the existing USB
Bulk Transfer protocol and opt for the High-Speed Isochronous Data Transfer
protocol. This would require extensive rewrite and testing of the firmware so
is unlikely to happen. Even if it were done, limitations in processing power
on the device itself would probably limit the max possible transfer speed so
much as to make it not worth the development effort. Isochronous transfers
do not incorporate error detection and correction so this would also have
to be implemented by Humax to ensure the correct transmission of data.

10. Default Host Directories.
The Default Host Directories options (A, B and C) in Settings set the default
base directories for file transfers. Make sure you enter file specs using the
drive name, ':', backslash, directory name and trailing backslash. Not doing so
might produce unpredictable results for file transfers. Example valid dirs are

f:\thisdir\thatdir\
c:\working\
d:\

11. USB Device Drivers.
The Humax uses the USB Bulk Transfer protocol to transfer files to/from a host
PC at a maximum rate of around 1.3 MBytes per second (12 megabits per second
total throughput). The USB Bulk Transfer protocol is supposed to guarantee that
data sent over a USB connection gets to its destination without error. However,
I believe there may be a fundamental fault with the underlying USB drivers on
the Host PC (the LIBUSB-WIN32 drivers as used by both this software and the
Humax Media eLinker software) that introduces errors into the transmission
stream when doing Humax to Host PC transfers. In tests, when stressing the
Humax (e.g. by setting off 2 recordings and navigating the Humax menu at the
same time), the rate of transmission errors was not increased although the
transfer rate did suffer due to loading on the Humax. When setting the process
priority on the Host PC to "Normal" and stressing the Host PC during a
Humax->PC file transfer however the transmission error rate dramatically
increased. It is currently suspected therefore that these USB drivers on the PC
are the primary cause of transmission errors and not the Humax firmware as I
originally suspected. At some later time I may investigate the drivers to see
if anything can be done to cure these possible driver issues.

12. The USB "M1" Humax->Host Transfer Command.
The USB "M1" transfer command implemented by Humax to transfer files from Humax
to Host PC does not currently have any way to request resend of a block of
corrupted data. Actually it would be more useful to allow that command to begin
transmission of a file from a specific point in the file which would achieve
the same effect. That way, we could begin a transfer, abort it half way
through, then at a later time re-commence transfer from the point we aborted.
Video file transfers take ages and it would be useful to have this facility to
transfer parts of large files at different times. Also, if errors do
occur within the transfer, the software could just abort the transfer
automatically then recommence it again at the point where the error occurred to
effectively re-read the corrupted block without having to start again from the
beginning of the file. If Humax were to include this facility then it would be
easy enough for me to modify this software to incorporate the change and
to test it. I believe the change could be made to the Humax firmware without
affecting any existing functionality as it would effectively be an extension to
the existing 'M1' USB transfer command.

13. Read/Write Programme Schedule Info.
On the subject of USB commands, I would very much like a USB command to read and
write the current programme schedule list from the Humax via USB. The reason is
that I currently use a software package on the PC called Digiguide
(www.digiguide.com) to plan the TV schedule at the start of the day. Once i've
marked off which programmes I wish to record, I then have to go and manually
set these up on the Humax. It's a pain in the arse and it can takes ages,
especially when adjusting programmes with padding, etc. With this new USB command,
I could extend this software to pull the recordings info directly from Digiguide
and transmit it straight to the Humax via USB with all the usual checks for
ensuring that autopadding is applied and that overlaps do not occur, etc. This
would be a new USB command so wouldn't affect any existing functionality as used
by the Humax Media eLinker software.


==============
CHANGE HISTORY
==============

Date: Version: Description:
03-Jun-06 1.00 Initial release.
05-Jun-06 1.01

Fixed Settings options B and C and allow root dirspecs to be specified.
Fixed problems using '/' and '\' character in Humax filenames.

05-Jun-06 1.02 Fixed incorrect free space report on list and tree options.
19-Oct-06 1.03

Fixed disk space reporting for hard disks > 256GB.
Changed DISBALED to DISABLED spelling error in Settings option.
USB Trace msgs now indicate correct "Read/Write bulk data" operation.

22-Oct-06 1.04

Added setting option for reporting of 'Humax' & 'True' file sizes where Humax MB = 1000000 bytes & True MB = 1048576 bytes and Humax KB = 1000 bytes & True KB = 1024 bytes.

22-Aug-07 1.05

Added -help command line option.
Added -listvideo command line option.
Added -getvideo <vid-fname> <host-fpath> [ <limit-size-bytes> ] cl option.
Added -delvideo <vid-fname> command line option.