Humax PVR
From Smop.co.uk
I need to update this with some fixes which make the program much more reliable
If you have a Humax 9200T PVR you might want to connect it to your Linux box and shuffle data back and forth. Unfortunately there is only a closed source windows program to do this.
Fortunately Andy Chappell wrote a open source windows program to do this. When I say "open source", the reply Alan Pope got was:
No licence really. If you get anywhere with your mods then just add your name to the credits and let me have a copy of the source/binaries so I can stick it onto the web site.
This wiki is my way of documenting what I've found and what I've written
Contents |
Progress
- initial connect/disconnect [done - but need to investigate resetting]
- basic commands [done, needs testing - relative/absolute path, deletion]
- transfer commands
- FUSE integration
- patches from Tristan Keen for nice speedup
You can download the latest client.
Next
Bulk-Only Reset fails - do we need to point it to a Bulk endpoint rather than control? spec says: The device shall NAK the status stage of the device request until the Bulk-Only Mass Storage Reset is complete. So maybe the reset has to keep trying the CSW until it is okay (print in a loop whilst this happens.
xfer itself fails:
recvDataCmd reports bulk read of only 13 of 61440 bytes readBulkCSW failed to read CSW
now 13 bytes just so happens to be the size of a CSW... so it'd be interesting to see what the guts of readBulkCSW would make of those 13 bytes...
After that, time to have a look at why it fails. Perhaps looking at why renaming claims to work (but in fact doesn't) would be interesting...
Design
Andy's program is a standalone windows box. I intend to do things a little differently - perhaps make it much more like an FTP client, or maybe link it into FUSE. This would have the benefit of making the code much simpler and cleaner - doing one thing well - the Unix way (tm). You would basically just mount() the Humax onto your Linux machine then use cp/mv etc as normal.
Porting wholesale to Unix would probably be quite easy, some things that need doing:
- remove priority setting
- add compatability functions for strcpy_s, strcat_s
- replace _getch and _kbhit with Unix versions
- change host filesystem code to understand unix filesystems (probably a large code simplification)
Useful docs
First off, some useful sites:
- Andy's post explains some details
- document about USB Bulk transfers
- ehci.txt in Linux source tree has some information on fast transfers
Andy also writes:
One thing worth noting is that it is possible to have a transfer going while performing other tasks at the same time (e.g. renaming/deleting files). See the code for chase-transfers regarding this.
